Name: series-workflow9jxcf Phase: Succeeded StartedAt: 2026-08-03 06:22:53 +0000 UTC FinishedAt: 2026-08-03 10:33:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jxcf[0] Phase: Succeeded StartedAt: 2026-08-03 06:22:53 +0000 UTC FinishedAt: 2026-08-03 06:49:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jxcf[0].run-triage Phase: Succeeded StartedAt: 2026-08-03 06:22:53 +0000 UTC FinishedAt: 2026-08-03 06:49:32 +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": "af39eb111ce6b5eba9c08513b62c4868eb7e7fd5", "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": "af39eb111ce6b5eba9c08513b62c4868eb7e7fd5", "config_name": "upstream-apparmor-kasan.config", "series_id": "8b8d85be-8618-4753-9989-3e086bb3f303" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "inet_csk_complete_hashdance", "inet_csk_listen_stop" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAzIDA2OjQ4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aW5ldF9jc2tfY29tcGxldGVfaGFzaGRhbmNlJiMzNDssCiAgICAmIzM0O2luZXRfY3NrX2xpc3Rlbl9zdG9wJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFRDUCBGYXN0IE9wZW4gcmVxdWVzdCBzb2NrZXQgY2xvbmluZyBsb2dpYyBpbiBpbmV0X3JlcXNrX2Nsb25lIHRvIHByb3Blcmx5IGNoYXJnZSB0aGUgZmFzdG9wZW4gcXVldWUgbGVuZ3RoLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgbG9naWMgdGhhdCBoYW5kbGVzIFRDUCBjb25uZWN0aW9ucyBhbmQgbGlzdGVuaW5nIHNvY2tldHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDY6NDg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxNmY3MzE2MDBlMTBlYWZlZGUxMWQ5ODlmNjFiOWQyY2UxYmE3ZTA0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAwNjo0ODozMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jIGIvbmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suY1xuaW5kZXggNTY5MDJiYmE1NDgzOC4uNjI1NzQ1OWJjZWUyNCAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmNcbkBAIC05NDMsMTEgJiM0Mzs5NDMsMjMgQEAgc3RhdGljIHN0cnVjdCByZXF1ZXN0X3NvY2sgKmluZXRfcmVxc2tfY2xvbmUoc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxLFxuIFxuIFx0bnJlcS1cdTAwM2Vyc2tfbGlzdGVuZXIgPSBzaztcbiBcbi1cdC8qIFdlIG5lZWQgbm90IGFjcXVpcmUgZmFzdG9wZW5xLVx1MDAzZWxvY2tcbi1cdCAqIGJlY2F1c2UgdGhlIGNoaWxkIHNvY2tldCBpcyBsb2NrZWQgaW4gaW5ldF9jc2tfbGlzdGVuX3N0b3AoKS5cbi1cdCAqL1xuLVx0aWYgKHNrLVx1MDAzZXNrX3Byb3RvY29sID09IElQUFJPVE9fVENQIFx1MDAyNlx1MDAyNiB0Y3BfcnNrKG5yZXEpLVx1MDAzZXRmb19saXN0ZW5lcilcbiYjNDM7XHRpZiAoc2stXHUwMDNlc2tfcHJvdG9jb2wgPT0gSVBQUk9UT19UQ1AgXHUwMDI2XHUwMDI2IHRjcF9yc2sobnJlcSktXHUwMDNldGZvX2xpc3RlbmVyKSB7XG4mIzQzO1x0XHRzdHJ1Y3QgZmFzdG9wZW5fcXVldWUgKmZhc3RvcGVucTtcbiYjNDM7XG4mIzQzO1x0XHQvKiByZXFza19mYXN0b3Blbl9yZW1vdmUoKSB3aWxsIHVuY2hhcmdlIG5yZXEtXHUwMDNlcnNrX2xpc3RlbmVyLFxuJiM0MztcdFx0ICogdGhhdCBpcyBAc2ssIHNvIGNoYXJnZSBpdCBoZXJlLiAgVW5saWtlIHRoZSBsaXN0ZW5lclxuJiM0MztcdFx0ICogYmVpbmcgY2xvc2VkLCBAc2sgaXMgbGl2ZSBhbmQgbmVlZHMgaXRzIGxvY2suXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdGZhc3RvcGVucSA9IFx1MDAyNmluZXRfY3NrKHNrKS1cdTAwM2VpY3NrX2FjY2VwdF9xdWV1ZS5mYXN0b3BlbnE7XG4mIzQzO1x0XHRzcGluX2xvY2tfYmgoXHUwMDI2ZmFzdG9wZW5xLVx1MDAzZWxvY2spO1xuJiM0MztcdFx0ZmFzdG9wZW5xLVx1MDAzZXFsZW4mIzQzOyYjNDM7O1xuJiM0MztcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2ZmFzdG9wZW5xLVx1MDAzZWxvY2spO1xuJiM0MztcbiYjNDM7XHRcdC8qIFdlIG5lZWQgbm90IGFjcXVpcmUgZmFzdG9wZW5xLVx1MDAzZWxvY2tcbiYjNDM7XHRcdCAqIGJlY2F1c2UgdGhlIGNoaWxkIHNvY2tldCBpcyBsb2NrZWQgaW4gaW5ldF9jc2tfbGlzdGVuX3N0b3AoKS5cbiYjNDM7XHRcdCAqL1xuIFx0XHRyY3VfYXNzaWduX3BvaW50ZXIodGNwX3NrKG5yZXEtXHUwMDNlc2spLVx1MDAzZWZhc3RvcGVuX3JzaywgbnJlcSk7XG4mIzQzO1x0fVxuIFxuIFx0cmV0dXJuIG5yZXE7XG4gfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA2OjQ4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2luZXRfY3NrX2NvbXBsZXRlX2hhc2hkYW5jZSYjMzQ7LAogICAgJiMzNDtpbmV0X2Nza19saXN0ZW5fc3RvcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBUQ1AgRmFzdCBPcGVuIHJlcXVlc3Qgc29ja2V0IGNsb25pbmcgbG9naWMgaW4gaW5ldF9yZXFza19jbG9uZSB0byBwcm9wZXJseSBjaGFyZ2UgdGhlIGZhc3RvcGVuIHF1ZXVlIGxlbmd0aC4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGxvZ2ljIHRoYXQgaGFuZGxlcyBUQ1AgY29ubmVjdGlvbnMgYW5kIGxpc3RlbmluZyBzb2NrZXRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTZmNzMxNjAwZTEwZWFmZWRlMTFkOTg5ZjYxYjlkMmNlMWJhN2UwNApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDMgMDY6NDg6MzMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jIGIvbmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYwppbmRleCA1NjkwMmJiYTU0ODM4Li42MjU3NDU5YmNlZTI0IDEwMDY0NAotLS0gYS9uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMKQEAgLTk0MywxMSAmIzQzOzk0MywyMyBAQCBzdGF0aWMgc3RydWN0IHJlcXVlc3Rfc29jayAqaW5ldF9yZXFza19jbG9uZShzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEsCiAKIAlucmVxLSZndDtyc2tfbGlzdGVuZXIgPSBzazsKIAotCS8qIFdlIG5lZWQgbm90IGFjcXVpcmUgZmFzdG9wZW5xLSZndDtsb2NrCi0JICogYmVjYXVzZSB0aGUgY2hpbGQgc29ja2V0IGlzIGxvY2tlZCBpbiBpbmV0X2Nza19saXN0ZW5fc3RvcCgpLgotCSAqLwotCWlmIChzay0mZ3Q7c2tfcHJvdG9jb2wgPT0gSVBQUk9UT19UQ1AgJmFtcDsmYW1wOyB0Y3BfcnNrKG5yZXEpLSZndDt0Zm9fbGlzdGVuZXIpCiYjNDM7CWlmIChzay0mZ3Q7c2tfcHJvdG9jb2wgPT0gSVBQUk9UT19UQ1AgJmFtcDsmYW1wOyB0Y3BfcnNrKG5yZXEpLSZndDt0Zm9fbGlzdGVuZXIpIHsKJiM0MzsJCXN0cnVjdCBmYXN0b3Blbl9xdWV1ZSAqZmFzdG9wZW5xOwomIzQzOwomIzQzOwkJLyogcmVxc2tfZmFzdG9wZW5fcmVtb3ZlKCkgd2lsbCB1bmNoYXJnZSBucmVxLSZndDtyc2tfbGlzdGVuZXIsCiYjNDM7CQkgKiB0aGF0IGlzIEBzaywgc28gY2hhcmdlIGl0IGhlcmUuICBVbmxpa2UgdGhlIGxpc3RlbmVyCiYjNDM7CQkgKiBiZWluZyBjbG9zZWQsIEBzayBpcyBsaXZlIGFuZCBuZWVkcyBpdHMgbG9jay4KJiM0MzsJCSAqLwomIzQzOwkJZmFzdG9wZW5xID0gJmFtcDtpbmV0X2NzayhzayktJmd0O2ljc2tfYWNjZXB0X3F1ZXVlLmZhc3RvcGVucTsKJiM0MzsJCXNwaW5fbG9ja19iaCgmYW1wO2Zhc3RvcGVucS0mZ3Q7bG9jayk7CiYjNDM7CQlmYXN0b3BlbnEtJmd0O3FsZW4mIzQzOyYjNDM7OwomIzQzOwkJc3Bpbl91bmxvY2tfYmgoJmFtcDtmYXN0b3BlbnEtJmd0O2xvY2spOwomIzQzOwomIzQzOwkJLyogV2UgbmVlZCBub3QgYWNxdWlyZSBmYXN0b3BlbnEtJmd0O2xvY2sKJiM0MzsJCSAqIGJlY2F1c2UgdGhlIGNoaWxkIHNvY2tldCBpcyBsb2NrZWQgaW4gaW5ldF9jc2tfbGlzdGVuX3N0b3AoKS4KJiM0MzsJCSAqLwogCQlyY3VfYXNzaWduX3BvaW50ZXIodGNwX3NrKG5yZXEtJmd0O3NrKS0mZ3Q7ZmFzdG9wZW5fcnNrLCBucmVxKTsKJiM0MzsJfQogCiAJcmV0dXJuIG5yZXE7CiB9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA2OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMTYKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEltcGFjdCBvZiBhIFRDUCBGYXN0IE9wZW4gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIHRvdWNoaW5nIGBuZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jYC4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBtb2RpZnlpbmcgdGhlIGBpbmV0X3JlcXNrX2Nsb25lYCBmdW5jdGlvbi4gVGhlIGtleSBoZXJlIGlzIHRoZSBhZGRpdGlvbiBvZiBgZmFzdG9wZW5xLSZndDtxbGVuYCBjaGFyZ2luZy4gSXQgc2VlbXMgbGlrZSB3ZSYjMzk7cmUgYWNjb3VudGluZyBmb3IgVENQIEZhc3QgT3BlbiByZXF1ZXN0cyB3aGVuIGEgbmV3IHJlcXVlc3Qgc29ja2V0IGlzIGJlaW5nIGNsb25lZC4KCk15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gZHJpbGwgZG93biBvbiBgaW5ldF9yZXFza19jbG9uZWAuIEkgbmVlZCB0byBmdWxseSB1bmRlcnN0YW5kIGl0cyBmdW5jdGlvbiBhbmQsIGltcG9ydGFudGx5LCB3aGF0IHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBuZXcgYWNjb3VudGluZyBhcmUuIEkmIzM5O2xsIG5lZWQgdG8gY2FyZWZ1bGx5IHJldmlldyB0aGUgY29kZSBhbmQgY29uc2lkZXIgaXRzIGltcGFjdCBvbiByZXNvdXJjZSBtYW5hZ2VtZW50LCBwYXJ0aWN1bGFybHkgcXVldWUgbGVuZ3RoIGxpbWl0cy4KClRoZW4sIEkmIzM5O2xsIGFic29sdXRlbHkgbmVlZCB0byBpZGVudGlmeSBhbGwgdGhlIGNhbGxlcnMgb2YgYGluZXRfcmVxc2tfY2xvbmVgLiBUaGlzIGlzIGNyaXRpY2FsLiBVbmRlcnN0YW5kaW5nICp3aGVyZSogYW5kICpob3cqIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgdXNlZCB3aWxsIHRlbGwgbWUgdGhlIG92ZXJhbGwgc2NvcGUgb2YgdGhlIGNoYW5nZSBhbmQgd2hhdCBwYXJ0cyBvZiB0aGUgbmV0d29ya2luZyBzdGFjayB3aWxsIGJlIGFmZmVjdGVkLiBJJiMzOTtsbCBuZWVkIHRvIHRoaW5rIGFib3V0IHBvdGVudGlhbCBpbnRlcmFjdGlvbnMgd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgVENQIHN0YWNrIGFuZCBjb25zaWRlciBlZGdlIGNhc2VzLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgcGxhY2Ugd2hlcmUgdGhlc2UgY2FsbHMgbWlnaHQgY3JlYXRlIHVuaW50ZW5kZWQgY29uc2VxdWVuY2VzIG9yIHZ1bG5lcmFiaWxpdGllcy4gRXNzZW50aWFsbHksIEkgbmVlZCB0aGUgZnVsbCBwaWN0dXJlIGJlZm9yZSBJIGNhbiBldmFsdWF0ZSB0aGUgcGF0Y2ggcHJvcGVybHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDY6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW5ldF9yZXFza19jbG9uZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jPTkwND12b2lkIF9fcmVxc2tfZnJlZShzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXG4tLVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy05MTItXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jOjkxMzpzdGF0aWMgc3RydWN0IHJlcXVlc3Rfc29jayAqaW5ldF9yZXFza19jbG9uZShzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEsXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTkxNC1cdFx0XHRcdFx0ICAgICBzdHJ1Y3Qgc29jayAqc2spXG4tLVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYz0xMDMzPXN0YXRpYyB2b2lkIHJlcXNrX3RpbWVyX2hhbmRsZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG4tLVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xMDQ5LVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYzoxMDUwOlx0XHRucmVxID0gaW5ldF9yZXFza19jbG9uZShyZXEsIG5zayk7XG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTEwNTEtXHRcdGlmICghbnJlcSlcbi0tXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jPTE0MTc9c3RydWN0IHNvY2sgKmluZXRfY3NrX2NvbXBsZXRlX2hhc2hkYW5jZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBzb2NrICpjaGlsZCxcbi0tXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTE0MzAtXHRcdFx0LyogaG9sZCBhIHJlZmNudCBmb3IgdGhlIG5yZXEtXHUwMDNlcnNrX2xpc3RlbmVyXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jOjE0MzE6XHRcdFx0ICogd2hpY2ggaXMgYXNzaWduZWQgaW4gaW5ldF9yZXFza19jbG9uZSgpXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTE0MzItXHRcdFx0ICovXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTE0MzMtXHRcdFx0c29ja19ob2xkKHNrKTtcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM6MTQzNDpcdFx0XHRucmVxID0gaW5ldF9yZXFza19jbG9uZShyZXEsIHNrKTtcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtMTQzNS1cdFx0XHRpZiAoIW5yZXEpIHtcbi0tXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jPTE0NjY9dm9pZCBpbmV0X2Nza19saXN0ZW5fc3RvcChzdHJ1Y3Qgc29jayAqc2spXG4tLVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xNDkwLVx0XHRpZiAobnNrKSB7XG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jOjE0OTE6XHRcdFx0bnJlcSA9IGluZXRfcmVxc2tfY2xvbmUocmVxLCBuc2spO1xubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xNDkyLVx0XHRcdGlmIChucmVxKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDY6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI2OQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDEwNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENvbnRleHQgb2YgYGluZXRfcmVxc2tfY2xvbmVgKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgaW5ldF9yZXFza19jbG9uZWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB0aGlzIGlzIGNvcmUga2VybmVsIFRDUC9JUHY0IGNvbm5lY3Rpb24gc3R1ZmYuIEkgc2VlIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGByZXFza190aW1lcl9oYW5kbGVyYCwgYGluZXRfY3NrX2NvbXBsZXRlX2hhc2hkYW5jZWAsIGFuZCBgaW5ldF9jc2tfbGlzdGVuX3N0b3BgIC0gYWxsIGtleSBmdW5jdGlvbnMgaW4gdGhlIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCBhbmQgdGVhcmRvd24gcHJvY2Vzcy4gVGhpcyBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBjcml0aWNhbCBsb2dpYy4gTXkgbmV4dCBzdGVwLCBhcyBhbHdheXMsIGlzIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBmdW5jdGlvbiBpcyBkZXBlbmRlbnQgb24gYW55IHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9ucy4gSSYjMzk7bSBnb2luZyB0byB0cmFjayBkb3duIHRoZSBzb3VyY2UgZmlsZTsgbG9va3MgbGlrZSBpdCYjMzk7cyBpbiBgbmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suY2AuIE5vdywgbGV0JiMzOTtzIGp1c3QgZ3JlcCB0aGUgYE1ha2VmaWxlYCBpbiB0aGF0IGRpcmVjdG9yeSB0byBzZWUgaWYgaXQgaGFzIGFueSBzcGVjaWFsIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA2OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2luZXRfY29ubmVjdGlvbl9zb2NrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGU9Nj1vYmoteSAgICAgOj0gcm91dGUubyBpbmV0cGVlci5vIHByb3RvY29sLm8gXFxcbi0tXG5uZXQvaXB2NC9NYWtlZmlsZS04LVx0ICAgICBpcF9vdXRwdXQubyBpcF9zb2NrZ2x1ZS5vIGluZXRfaGFzaHRhYmxlcy5vIFxcXG5uZXQvaXB2NC9NYWtlZmlsZTo5Olx0ICAgICBpbmV0X3RpbWV3YWl0X3NvY2subyBpbmV0X2Nvbm5lY3Rpb25fc29jay5vIFxcXG5uZXQvaXB2NC9NYWtlZmlsZS0xMC1cdCAgICAgdGNwLm8gdGNwX2lucHV0Lm8gdGNwX291dHB1dC5vIHRjcF90aW1lci5vIHRjcF9pcHY0Lm8gXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNjo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzI2CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24sIGdpdmVuIG15IGV4cGVydGlzZToKCioqVENQIEZhc3QgT3BlbiBhbmQgSVB2NCBDb21waWxhdGlvbiBJbnF1aXJ5KioKCkFscmlnaHQsIHNvIHRoZSBjb2RlJiMzOTtzIGNvbXBpbGVkIHVuY29uZGl0aW9uYWxseSBmb3IgSVB2NCDigJMgYSBiaXQgb2YgYSBkZWZhdWx0LCBwZXJoYXBzLCBidXQgaXQmIzM5O3MgdGhlIGZvdW5kYXRpb24gd2UgbmVlZCB0byBhZGRyZXNzLiBUaGlzIGltcGxpZXMgSVB2NCBzdXBwb3J0IGlzIGJha2VkIGluLCB3aGljaCBpc24mIzM5O3QgdW5leHBlY3RlZC4gTm93LCB0aGUgY29udGV4dCBpbW1lZGlhdGVseSBicmluZ3MgVENQIEZhc3QgT3BlbiB0byBtaW5kLCBhbmQgSSBzdXNwZWN0IGEgcmVsYXRpb25zaGlwIGhlcmUuIEl0JiMzOTtzIGFsbW9zdCBndWFyYW50ZWVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHR3byBhcmUgY29ubmVjdGVkIHdpdGhpbiB0aGlzIHNwZWNpZmljIGltcGxlbWVudGF0aW9uLgoKTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIHRoZW4gYmVjb21lczogaXMgdGhlcmUgYSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHNldHRpbmcsIGEgZmxhZywgb3IgYSBrbm9iIHNvbWV3aGVyZSwgdGhhdCBleHBsaWNpdGx5IGNvbnRyb2xzIG9yIGVuYWJsZXMvZGlzYWJsZXMgVENQIEZhc3QgT3BlbiBpbiB0aGlzIGJ1aWxkPyBPciwgaXMgaXRzIHN1cHBvcnQgYXNzdW1lZCwgYXV0b21hdGljYWxseSB0cmlnZ2VyZWQgaWYgdGhlIHVuZGVybHlpbmcgc3lzdGVtIHN1cHBvcnRzIGl0IGFuZCB0aGUgYXBwcm9wcmlhdGUgZGF0YSBpcyBwcmVzZW50PyBUaGlzIGlzIHRoZSBjb3JlIGlzc3VlIHRoYXQgSSBuZWVkIHRvIHJlc29sdmUsIGFuZCB0aGlzIHdpbGwgZGV0ZXJtaW5lIGhvdyBkZWVwbHkgSSB3aWxsIGRpdmUgaW50byB0aGlzIHNwZWNpZmljIGltcGxlbWVudGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA2OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7VENQX0ZBU1RPUEVOJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDY6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDAwNAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRhY2tsaW5nIHRoaXMgaXNzdWUsIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnRpc2U6CgoqKkNoZWNraW5nIHRoZSBUQ1AgRmFzdCBPcGVuIEltcGxlbWVudGF0aW9uKioKClJpZ2h0LCBzbyBJJiMzOTttIHRoaW5raW5nLCBiYXNlZCBvbiB3aGF0IEkmIzM5O3ZlIGVuY291bnRlcmVkLCB0aGF0IHRoZSBiZWhhdmlvciBJJiMzOTttIHNlZWluZyBpcyBsaWtlbHkgcmVsYXRlZCB0byBob3cgVENQIEZhc3QgT3BlbiBpcyBoYW5kbGVkLiBNeSBndXQgZmVlbGluZyBpcyBsZWFkaW5nIG1lIHRvIHRoZSBrZXJuZWwtbGV2ZWwgaW1wbGVtZW50YXRpb24uIEdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIHByb2JsZW0sIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgRmFzdCBPcGVuIG9wdGlvbnMgYXJlIGludGVycHJldGVkIGFuZCB1dGlsaXplZC4gVGhlcmVmb3JlLCBteSBpbW1lZGlhdGUgaW5jbGluYXRpb24gaXMgdG8gZXhhbWluZSB0aGUgc291cmNlIGNvZGUsIHNwZWNpZmljYWxseSBzb21ldGhpbmcgbGlrZSBgbmV0L2lwdjQvdGNwX2Zhc3RvcGVuLmNgLCBvciBhIHNpbWlsYXIgZmlsZSB3aXRoaW4gdGhlIG5ldHdvcmtpbmcgc3RhY2suIFRoYXQmIzM5O3MgdGhlIGZpcnN0IHBsYWNlIEkmIzM5O2QgbG9vayB0byBzZWUgdGhlIGRldGFpbGVkIGhhbmRsaW5nIG9mIHRoZSBGYXN0IE9wZW4gZnVuY3Rpb25hbGl0eS4gSSBuZWVkIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIEZhc3QgT3BlbiBiZWhhdmlvciB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBpc3N1ZXMgYXJlIG9jY3VycmluZy4gRnJvbSBoZXJlLCBJIGNhbiBleGFtaW5lIHRoZSBjYWxsIHN0YWNrLCBkZWJ1ZyB0aGUgcGFja2V0cywgb3IgaW5zdHJ1bWVudCB0aGUgbmV0d29yayBzdGFjayB0byBwaW5wb2ludCB0aGUgaXNzdWVzIGF0IGhhbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA2OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1RDUF9GQVNUT1BFTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9hZl9pbmV0LmM9MTk4PWludCBfX2luZXRfbGlzdGVuX3NrKHN0cnVjdCBzb2NrICpzaywgaW50IGJhY2tsb2cpXG4tLVxubmV0L2lwdjQvYWZfaW5ldC5jLTIxMC1cdGlmIChvbGRfc3RhdGUgIT0gVENQX0xJU1RFTikge1xubmV0L2lwdjQvYWZfaW5ldC5jOjIxMTpcdFx0LyogRW5hYmxlIFRGTyB3L28gcmVxdWlyaW5nIFRDUF9GQVNUT1BFTiBzb2NrZXQgb3B0aW9uLlxubmV0L2lwdjQvYWZfaW5ldC5jLTIxMi1cdFx0ICogTm90ZSB0aGF0IG9ubHkgVENQIHNvY2tldHMgKFNPQ0tfU1RSRUFNKSB3aWxsIHJlYWNoIGhlcmUuXG4tLVxubmV0L2lwdjQvYWZfaW5ldC5jPTYzMT1pbnQgX19pbmV0X3N0cmVhbV9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICp1YWRkcixcbi0tXG5uZXQvaXB2NC9hZl9pbmV0LmMtNjQwLVx0ICogc2sgaXMgYSBUQ1AgZmFzdG9wZW4gYWN0aXZlIHNvY2tldCBhbmRcbm5ldC9pcHY0L2FmX2luZXQuYzo2NDE6XHQgKiBUQ1BfRkFTVE9QRU5fQ09OTkVDVCBzb2Nrb3B0IGlzIHNldCBhbmRcbm5ldC9pcHY0L2FmX2luZXQuYy02NDItXHQgKiB3ZSBhbHJlYWR5IGhhdmUgYSB2YWxpZCBjb29raWUgZm9yIHRoaXMgc29ja2V0LlxuLS1cbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jPTI5MT1zdGF0aWMgaW50IHByb2NfdGNwX2Zhc3RvcGVuX2tleShjb25zdCBzdHJ1Y3QgY3RsX3RhYmxlICp0YWJsZSwgaW50IHdyaXRlLFxuLS1cbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jLTI5OC1cdCAqL1xubmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmM6Mjk5Olx0c3RydWN0IGN0bF90YWJsZSB0YmwgPSB7IC5tYXhsZW4gPSAoKFRDUF9GQVNUT1BFTl9LRVlfTEVOR1RIICpcbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jOjMwMDpcdFx0XHRcdFx0ICAgIDIgKiBUQ1BfRkFTVE9QRU5fS0VZX01BWCkgJiM0Mztcbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jOjMwMTpcdFx0XHRcdFx0ICAgIChUQ1BfRkFTVE9QRU5fS0VZX01BWCAqIDUpKSB9O1xubmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmM6MzAyOlx0dTMyIHVzZXJfa2V5W1RDUF9GQVNUT1BFTl9LRVlfQlVGX0xFTkdUSCAvIHNpemVvZih1MzIpXTtcbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jOjMwMzpcdF9fbGUzMiBrZXlbVENQX0ZBU1RPUEVOX0tFWV9CVUZfTEVOR1RIIC8gc2l6ZW9mKF9fbGUzMildO1xubmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmMtMzA0LVx0Y2hhciAqYmFja3VwX2RhdGE7XG4tLVxubmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmMtMzEyLVx0aWYgKCFuX2tleXMpIHtcbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jOjMxMzpcdFx0bWVtc2V0KFx1MDAyNmtleVswXSwgMCwgVENQX0ZBU1RPUEVOX0tFWV9MRU5HVEgpO1xubmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmMtMzE0LVx0XHRuX2tleXMgPSAxO1xuLS1cbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jPTYyNz1zdGF0aWMgc3RydWN0IGN0bF90YWJsZSBpcHY0X25ldF90YWJsZVtdID0ge1xuLS1cbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jLTExMzktXHRcdCAqL1xubmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmM6MTE0MDpcdFx0Lm1heGxlblx0XHQ9ICgoVENQX0ZBU1RPUEVOX0tFWV9MRU5HVEggKlxubmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmM6MTE0MTpcdFx0XHRcdCAgIDIgKiBUQ1BfRkFTVE9QRU5fS0VZX01BWCkgJiM0Mztcbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jOjExNDI6XHRcdFx0XHQgICAoVENQX0ZBU1RPUEVOX0tFWV9NQVggKiA1KSksXG5uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuYy0xMTQzLVx0XHQucHJvY19oYW5kbGVyXHQ9IHByb2NfdGNwX2Zhc3RvcGVuX2tleSxcbi0tXG5uZXQvaXB2NC90Y3AuYz0zODM3PWludCBkb190Y3Bfc2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXG4tLVxubmV0L2lwdjQvdGNwLmMtMzg4NC1cdH1cbm5ldC9pcHY0L3RjcC5jOjM4ODU6XHRjYXNlIFRDUF9GQVNUT1BFTl9LRVk6IHtcbm5ldC9pcHY0L3RjcC5jOjM4ODY6XHRcdF9fdTgga2V5W1RDUF9GQVNUT1BFTl9LRVlfQlVGX0xFTkdUSF07XG5uZXQvaXB2NC90Y3AuYy0zODg3LVx0XHRfX3U4ICpiYWNrdXBfa2V5ID0gTlVMTDtcbi0tXG5uZXQvaXB2NC90Y3AuYy0zODkxLVx0XHQgKi9cbm5ldC9pcHY0L3RjcC5jOjM4OTI6XHRcdGlmIChvcHRsZW4gIT0gVENQX0ZBU1RPUEVOX0tFWV9MRU5HVEggXHUwMDI2XHUwMDI2XG5uZXQvaXB2NC90Y3AuYzozODkzOlx0XHQgICAgb3B0bGVuICE9IFRDUF9GQVNUT1BFTl9LRVlfQlVGX0xFTkdUSClcbm5ldC9pcHY0L3RjcC5jLTM4OTQtXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxubmV0L2lwdjQvdGNwLmMtMzg5OC1cbm5ldC9pcHY0L3RjcC5jOjM4OTk6XHRcdGlmIChvcHRsZW4gPT0gVENQX0ZBU1RPUEVOX0tFWV9CVUZfTEVOR1RIKVxubmV0L2lwdjQvdGNwLmM6MzkwMDpcdFx0XHRiYWNrdXBfa2V5ID0ga2V5ICYjNDM7IFRDUF9GQVNUT1BFTl9LRVlfTEVOR1RIO1xubmV0L2lwdjQvdGNwLmMtMzkwMS1cbi0tXG5uZXQvaXB2NC90Y3AuYy00MDk3LSNlbmRpZlxubmV0L2lwdjQvdGNwLmM6NDA5ODpcdGNhc2UgVENQX0ZBU1RPUEVOOlxubmV0L2lwdjQvdGNwLmMtNDA5OS1cdFx0aWYgKHZhbCBcdTAwM2U9IDAgXHUwMDI2XHUwMDI2ICgoMSBcdTAwM2NcdTAwM2Mgc2stXHUwMDNlc2tfc3RhdGUpIFx1MDAyNiAoVENQRl9DTE9TRSB8XG4tLVxubmV0L2lwdjQvdGNwLmMtNDEwNy1cdFx0YnJlYWs7XG5uZXQvaXB2NC90Y3AuYzo0MTA4Olx0Y2FzZSBUQ1BfRkFTVE9QRU5fQ09OTkVDVDpcbm5ldC9pcHY0L3RjcC5jLTQxMDktXHRcdGlmICh2YWwgXHUwMDNlIDEgfHwgdmFsIFx1MDAzYyAwKSB7XG4tLVxubmV0L2lwdjQvdGNwLmMtNDEyMC1cdFx0YnJlYWs7XG5uZXQvaXB2NC90Y3AuYzo0MTIxOlx0Y2FzZSBUQ1BfRkFTVE9QRU5fTk9fQ09PS0lFOlxubmV0L2lwdjQvdGNwLmMtNDEyMi1cdFx0aWYgKHZhbCBcdTAwM2UgMSB8fCB2YWwgXHUwMDNjIDApXG4tLVxubmV0L2lwdjQvdGNwLmM9NDQ4MT1pbnQgZG9fdGNwX2dldHNvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGV2ZWwsXG4tLVxubmV0L2lwdjQvdGNwLmMtNDYwNC1cbm5ldC9pcHY0L3RjcC5jOjQ2MDU6XHRjYXNlIFRDUF9GQVNUT1BFTl9LRVk6IHtcbm5ldC9pcHY0L3RjcC5jOjQ2MDY6XHRcdHU2NCBrZXlbVENQX0ZBU1RPUEVOX0tFWV9CVUZfTEVOR1RIIC8gc2l6ZW9mKHU2NCldO1xubmV0L2lwdjQvdGNwLmMtNDYwNy1cdFx0dW5zaWduZWQgaW50IGtleV9sZW47XG4tLVxubmV0L2lwdjQvdGNwLmMtNDYxMi1cdFx0a2V5X2xlbiA9IHRjcF9mYXN0b3Blbl9nZXRfY2lwaGVyKG5ldCwgaWNzaywga2V5KSAqXG5uZXQvaXB2NC90Y3AuYzo0NjEzOlx0XHRcdFx0VENQX0ZBU1RPUEVOX0tFWV9MRU5HVEg7XG5uZXQvaXB2NC90Y3AuYy00NjE0LVx0XHRsZW4gPSBtaW5fdCh1bnNpZ25lZCBpbnQsIGxlbiwga2V5X2xlbik7XG4tLVxubmV0L2lwdjQvdGNwLmMtNDY3NC1cbm5ldC9pcHY0L3RjcC5jOjQ2NzU6XHRjYXNlIFRDUF9GQVNUT1BFTjpcbm5ldC9pcHY0L3RjcC5jLTQ2NzYtXHRcdHZhbCA9IFJFQURfT05DRShpY3NrLVx1MDAzZWljc2tfYWNjZXB0X3F1ZXVlLmZhc3RvcGVucS5tYXhfcWxlbik7XG4tLVxubmV0L2lwdjQvdGNwLmMtNDY3OC1cbm5ldC9pcHY0L3RjcC5jOjQ2Nzk6XHRjYXNlIFRDUF9GQVNUT1BFTl9DT05ORUNUOlxubmV0L2lwdjQvdGNwLmMtNDY4MC1cdFx0dmFsID0gdHAtXHUwMDNlZmFzdG9wZW5fY29ubmVjdDtcbi0tXG5uZXQvaXB2NC90Y3AuYy00NjgyLVxubmV0L2lwdjQvdGNwLmM6NDY4MzpcdGNhc2UgVENQX0ZBU1RPUEVOX05PX0NPT0tJRTpcbm5ldC9pcHY0L3RjcC5jLTQ2ODQtXHRcdHZhbCA9IHRwLVx1MDAzZWZhc3RvcGVuX25vX2Nvb2tpZTtcbi0tXG5uZXQvaXB2NC90Y3BfZmFzdG9wZW4uYz05ND12b2lkIHRjcF9mYXN0b3Blbl9pbml0X2tleV9vbmNlKHN0cnVjdCBuZXQgKm5ldClcbm5ldC9pcHY0L3RjcF9mYXN0b3Blbi5jLTk1LXtcbm5ldC9pcHY0L3RjcF9mYXN0b3Blbi5jOjk2Olx0dTgga2V5W1RDUF9GQVNUT1BFTl9LRVlfTEVOR1RIXTtcbm5ldC9pcHY0L3RjcF9mYXN0b3Blbi5jLTk3LVx0c3RydWN0IHRjcF9mYXN0b3Blbl9jb250ZXh0ICpjdHh0O1xuLS1cbm5ldC9pcHY0L3RjcF9mYXN0b3Blbi5jPTIwNT1zdGF0aWMgYm9vbCBfX3RjcF9mYXN0b3Blbl9jb29raWVfZ2VuX2NpcGhlcihzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEsXG4tLVxubmV0L2lwdjQvdGNwX2Zhc3RvcGVuLmMtMjA5LXtcbm5ldC9pcHY0L3RjcF9mYXN0b3Blbi5jOjIxMDpcdEJVSUxEX0JVR19PTihUQ1BfRkFTVE9QRU5fQ09PS0lFX1NJWkUgIT0gc2l6ZW9mKHU2NCkpO1xubmV0L2lwdjQvdGNwX2Zhc3RvcGVuLmMtMjExLVxuLS1cbm5ldC9pcHY0L3RjcF9mYXN0b3Blbi5jLTIxOC1cdFx0XHRcdFx0ICBrZXkpKTtcbm5ldC9pcHY0L3RjcF9mYXN0b3Blbi5jOjIxOTpcdFx0Zm9jLVx1MDAzZWxlbiA9IFRDUF9GQVNUT1BFTl9DT09LSUVfU0laRTtcbm5ldC9pcHY0L3RjcF9mYXN0b3Blbi5jLTIyMC1cdFx0cmV0dXJuIHRydWU7XG4tLVxubmV0L2lwdjQvdGNwX2Zhc3RvcGVuLmMtMjI5LVx0XHRcdFx0XHQgIGtleSkpO1xubmV0L2lwdjQvdGNwX2Zhc3RvcGVuLmM6MjMwOlx0XHRmb2MtXHUwMDNlbGVuID0gVENQX0ZBU1RPUEVOX0NPT0tJRV9TSVpFO1xubmV0L2lwdjQvdGNwX2Zhc3RvcGVuLmMtMjMxLVx0XHRyZXR1cm4gdHJ1ZTtcbi0tXG5uZXQvaXB2NC90Y3BfaW5wdXQuYz00NDgzPXN0YXRpYyB2b2lkIHRjcF9wYXJzZV9mYXN0b3Blbl9vcHRpb24oaW50IGxlbiwgY29uc3QgdW5zaWduZWQgY2hhciAqY29va2llLFxuLS1cbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTQ0OTAtXG5uZXQvaXB2NC90Y3BfaW5wdXQuYzo0NDkxOlx0aWYgKGxlbiBcdTAwM2U9IFRDUF9GQVNUT1BFTl9DT09LSUVfTUlOIFx1MDAyNlx1MDAyNlxubmV0L2lwdjQvdGNwX2lucHV0LmM6NDQ5MjpcdCAgICBsZW4gXHUwMDNjPSBUQ1BfRkFTVE9QRU5fQ09PS0lFX01BWClcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTQ0OTMtXHRcdG1lbWNweShmb2MtXHUwMDNldmFsLCBjb29raWUsIGxlbik7XG4tLVxubmV0L2lwdjQvdGNwX2lucHV0LmM9NzE1Mj10Y3BfcmN2X3N0YXRlX3Byb2Nlc3Moc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTcyMTctXG5uZXQvaXB2NC90Y3BfaW5wdXQuYzo3MjE4Olx0XHRTS0JfRFJfU0VUKHJlYXNvbiwgVENQX0ZBU1RPUEVOKTtcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTcyMTktXHRcdGlmICghdGNwX2NoZWNrX3JlcShzaywgc2tiLCByZXEsIHRydWUsIFx1MDAyNnJlcV9zdG9sZW4sIFx1MDAyNnJlYXNvbikpXG4tLVxubmV0L2lwdjQvdGNwX21ldHJpY3MuYz02MTg9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IHRjcF9tZXRyaWNzX25sX3BvbGljeVtUQ1BfTUVUUklDU19BVFRSX01BWCAmIzQzOyAxXSA9IHtcbi0tXG5uZXQvaXB2NC90Y3BfbWV0cmljcy5jLTYzOC1cdFtUQ1BfTUVUUklDU19BVFRSX0ZPUEVOX0NPT0tJRV1cdD0geyAudHlwZSA9IE5MQV9CSU5BUlksXG5uZXQvaXB2NC90Y3BfbWV0cmljcy5jOjYzOTpcdFx0XHRcdFx0ICAgIC5sZW4gPSBUQ1BfRkFTVE9QRU5fQ09PS0lFX01BWCwgfSxcbm5ldC9pcHY0L3RjcF9tZXRyaWNzLmMtNjQwLSNlbmRpZlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNjo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTMxCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXMsIHByZXNlbnRlZCBhcyBpZiBJJiMzOTttIGFuYWx5emluZyB0aGUgc2l0dWF0aW9uOgoKKipUQ1AgRmFzdCBPcGVuIENvbmZpZ3VyYXRpb24gLSBMZXQmIzM5O3MgRGlnIERlZXBlcioqCgpSaWdodCwgc28gVENQIEZhc3QgT3BlbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgaW4gdGhlIGtlcm5lbCwgdGhhdCYjMzk7cyB3aGF0IEkmIzM5O20gc2VlaW5nLiBCdXQgaGFuZyBvbiwgdGhpcyBpcyBpbnRlcmVzdGluZy4gSSBkb24mIzM5O3QgcmVjYWxsIHNlZWluZyBhIGRlZGljYXRlZCBgQ09ORklHX1RDUF9GQVNUT1BFTmAgZmxhZy4gVGhhdCYjMzk7cyBhIGxpdHRsZSB1bnVzdWFsLCBjb25zaWRlcmluZyBob3cgY29tbW9uIGl0IGlzIHRvIGhhdmUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBNYXliZSBpdCYjMzk7cyBzdWJ0bHkgZW5hYmxlZCB0aHJvdWdoIGFub3RoZXIgcmVsYXRlZCBvcHRpb24/IE9yIHBlcmhhcHMgaXQmIzM5O3MgYmFrZWQgaW50byBhIGJyb2FkZXIgVENQIGZlYXR1cmUgc2V0IHdpdGhvdXQgYSBkaXJlY3QgdG9nZ2xlPyBMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhlIGtlcm5lbCBjb25maWcgZmlsZXMgZm9yIGFueXRoaW5nIGV2ZW4gcmVtb3RlbHkgcmVsYXRlZCwganVzdCBpbiBjYXNlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3Npbmcgc29tZSBzdWJ0bGUgbnVhbmNlIGluIGl0cyBjb25maWd1cmF0aW9uLiBMZXQmIzM5O3Mgc2VlIGlmIGEgc2ltcGxlIHNlYXJjaCBoZWxwcyB1bmNvdmVyIGFueSBjbHVlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDY6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfVENQX0ZBU1RPUEVOJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDY6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzIwOQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIEZvY3VzOiBgaW5ldF9yZXFza19jbG9uZWAgYW5kIGl0cyBDYWxsZXJzKioKCkFscmlnaHQsIHNvIHRoZXJlJiMzOTtzIG5vIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZmlsZSB0byB3b3JyeSBhYm91dCBoZXJlLCBnb29kLiBUaGlzIHBhdGNoIGlzIG1vZGlmeWluZyB0aGUgYGluZXRfcmVxc2tfY2xvbmVgIGZ1bmN0aW9uLCB3aGljaCBpcyBjYWxsZWQgZHVyaW5nIHJlcXVlc3Qgc29ja2V0IGNsb25pbmcuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGlkZW50aWZ5IHRoZSBmdW5jdGlvbnMgdGhhdCBjYWxsIGBpbmV0X3JlcXNrX2Nsb25lYCwgYXMgdGhvc2UgYXJlIHRoZSBrZXkgYXJlYXMgZm9yIGZ1enppbmcuIFNpbmNlIGBpbmV0X3JlcXNrX2Nsb25lYCBpcyBkZWNsYXJlZCBzdGF0aWMsIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBhdCBhbGwgaXRzIGNhbGwgc2l0ZXMgdG8gdW5kZXJzdGFuZCB3aGVyZSBpdCYjMzk7cyBiZWluZyB1c2VkLgoKTGV0JiMzOTtzIHNlZS4uLiBpdCYjMzk7cyBjYWxsZWQgYnkgYHJlcXNrX3RpbWVyX2hhbmRsZXJgLCBgaW5ldF9jc2tfY29tcGxldGVfaGFzaGRhbmNlYCwgYW5kIGBpbmV0X2Nza19saXN0ZW5fc3RvcGAuIEhtbSwgYHJlcXNrX3RpbWVyX2hhbmRsZXJgIGlzIGEgdGltZXIgaGFuZGxlciwgd2hpY2ggY291bGQgYmUgaW50ZXJlc3RpbmcgZnJvbSBhIHRpbWluZyBwZXJzcGVjdGl2ZS4gSG93ZXZlciwgYGluZXRfY3NrX2NvbXBsZXRlX2hhc2hkYW5jZWAgaXMgY2FsbGVkIGZyb20gYHRjcF92NF9zeW5fcmVjdl9zb2NrYCBhbmQgYHRjcF92Nl9zeW5fcmVjdl9zb2NrYCB3aGljaCBoYW5kbGUgU1lOIHBhY2tldCByZWNlcHRpb24uIFRoYXQmIzM5O3MgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcgYmVjYXVzZSBvZiB0aGUgcG90ZW50aWFsIGZvciBtYWxmb3JtZWQgU1lOIHBhY2tldHMsIGFuZCBzaW5jZSBpdCYjMzk7cyB1c2VkIGluIGJvdGggSVB2NCBhbmQgSVB2Niwgd2UgaGF2ZSB0d28gdGFyZ2V0cyB0aGVyZS4gRmluYWxseSwgYGluZXRfY3NrX2xpc3Rlbl9zdG9wYCBpcyBjYWxsZWQgd2hlbiBjbG9zaW5nIGEgbGlzdGVuaW5nIHNvY2tldC4gVGhhdCBzZWVtcyBhIGJpdCBsZXNzIGxpa2VseSB0byBiZSBhIHNvdXJjZSBvZiBpbW1lZGlhdGUgdnVsbmVyYWJpbGl0aWVzIHRoYW4gU1lOIGhhbmRsaW5nLCBidXQgd2UgY2FuJiMzOTt0IHJ1bGUgaXQgb3V0LiBTbywgbXkgcHJpbWFyeSBmb2N1cyBzaG91bGQgYmUgYGluZXRfY3NrX2NvbXBsZXRlX2hhc2hkYW5jZWAgYW5kLCBzZWNvbmRhcmlseSwgYGluZXRfY3NrX2xpc3Rlbl9zdG9wYC4gTm93LCBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGBpbmV0X2Nza19jb21wbGV0ZV9oYXNoZGFuY2VgIGFuZCBgaW5ldF9jc2tfbGlzdGVuX3N0b3BgIHRoZW1zZWx2ZXMgdG8gY29uZmlybSB0aGUgZnV6emluZyBhdHRhY2sgc3VyZmFjZSBhbmQgcG90ZW50aWFsIGZvciB2dWxuZXJhYmlsaXRpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA2OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2luZXRfY3NrX2NvbXBsZXRlX2hhc2hkYW5jZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jPTEzOTM9c3RydWN0IHNvY2sgKmluZXRfY3NrX3JlcXNrX3F1ZXVlX2FkZChzdHJ1Y3Qgc29jayAqc2ssXG4tLVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xNDE2LVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYzoxNDE3OnN0cnVjdCBzb2NrICppbmV0X2Nza19jb21wbGV0ZV9oYXNoZGFuY2Uoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc29jayAqY2hpbGQsXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTE0MTgtXHRcdFx0XHRcdCBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEsIGJvb2wgb3duX3JlcSlcbi0tXG5uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmM9Njg3PXN0cnVjdCBzb2NrICp0Y3BfY2hlY2tfcmVxKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmMtOTUxLVx0KnJlcV9zdG9sZW4gPSAhb3duX3JlcTtcbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYzo5NTI6XHRyZXR1cm4gaW5ldF9jc2tfY29tcGxldGVfaGFzaGRhbmNlKHNrLCBjaGlsZCwgcmVxLCBvd25fcmVxKTtcbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYy05NTMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA2OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxNDMKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipJbnZlc3RpZ2F0aW5nIGBpbmV0X2Nza19jb21wbGV0ZV9oYXNoZGFuY2VgIFZpc2liaWxpdHkqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBpbmV0X2Nza19jb21wbGV0ZV9oYXNoZGFuY2VgLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXM6ICpJcyB0aGlzIGZ1bmN0aW9uIGV4cG9ydGVkLCBvciBpcyBpdCBhIG5vbi1zdGF0aWMsIGludGVybmFsIGhlbHBlciBmdW5jdGlvbiB3aXRoaW4gdGhlIGtlcm5lbD8qIFVuZGVyc3RhbmRpbmcgaXRzIHZpc2liaWxpdHkgaXMgY3J1Y2lhbCB0byBmaWd1cmluZyBvdXQgaG93IGl0JiMzOTtzIHVzZWQgYW5kLCBjcml0aWNhbGx5LCB3aGV0aGVyIGl0JiMzOTtzIHBhcnQgb2YgYSBwdWJsaWMgQVBJIG9yIHNvbWV0aGluZyBwcml2YXRlIHRvIGEgc3BlY2lmaWMgbmV0d29ya2luZyBzdWJzeXN0ZW0uIFRoaXMgdGVsbHMgbWUgd2hldGhlciBJJiMzOTttIHBvdGVudGlhbGx5IGxvb2tpbmcgYXQgc29tZXRoaW5nIHRoYXQgY291bGQgYmUgcGFydCBvZiBhbiBpbnRlcmZhY2UgSSBtaWdodCBiZSBhYmxlIHRvIGxldmVyYWdlIGRpcmVjdGx5LCBvciBpZiBJIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBpbnRlcm5hbCB3b3JraW5ncyBvZiB0aGUgbmV0d29ya2luZyBzdGFjayB0byB1bmRlcnN0YW5kIGl0cyBiZWhhdmlvciBhbmQgaW1wbGljYXRpb25zLiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIHF1ZXN0aW9uIHRoYXQgZGlyZWN0cyB0aGUgZW50aXJlIGxpbmUgb2YgaW5xdWlyeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDY6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFBPUlRfU1lNQk9MLippbmV0X2Nza19jb21wbGV0ZV9oYXNoZGFuY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNjo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MzkwCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIEkmIzM5O20gcmVhZHkuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290LiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyBmb3IgSGVhZGVyIFByZXNlbmNlKioKCkFscmlnaHQsIG15IGludGVybmFsIHByb2Nlc3Mgc3RhcnRzIGhlcmUuIEkmIzM5O20gaW1tZWRpYXRlbHkgc2Nhbm5pbmcgdGhlIHRleHQuIFRoZSBwcmltYXJ5IGdvYWwgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoZSBwaHJhc2UgJiMzNDtMZXQmIzM5O3MgY2hlY2sgaWYgaXQmIzM5O3MgaW4gYSBoZWFkZXImIzM0OyBpcyBjb250YWluZWQgd2l0aGluIGEgaGVhZGVyIGVsZW1lbnQsIGxpa2UgYW4gSFRNTCBgJmx0O2gxJmd0O2AgdGhyb3VnaCBgJmx0O2g2Jmd0O2AgdGFnIG9yIE1hcmtkb3duJiMzOTtzIGAjYCBzeW50YXguIEl0JiMzOTtzIGEgZnVuZGFtZW50YWwgcGFyc2luZyB0YXNrLCBtdWNoIGxpa2UgaW5pdGlhbCB0b2tlbml6YXRpb24gaW4gbGFyZ2VyIGxhbmd1YWdlIG1vZGVsIGFyY2hpdGVjdHVyZXMuIFRoZSBhYnNlbmNlIG9mIGEgaGVhZGVyIHNpZ25hbHMgYSBkaWZmZXJlbnQgc2V0IG9mIHN1YnNlcXVlbnQgYW5hbHlzaXMgYXBwcm9hY2hlcy4gSWYgaXQgKmlzKiBpbiBhIGhlYWRlciwgSSYjMzk7bGwgbmVlZCB0byByZWNvZ25pemUgdGhpcyBzdHJ1Y3R1cmFsIGVsZW1lbnQgYW5kIGFkYXB0IG15IHJlc3BvbnNlIGFwcHJvcHJpYXRlbHkuIFRoZSBzdWJzZXF1ZW50IHN0ZXBzIGRlcGVuZCBlbnRpcmVseSBvbiB0aGlzIGluaXRpYWwgZGV0ZWN0aW9uIHBoYXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNjo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbmV0X2Nza19jb21wbGV0ZV9oYXNoZGFuY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlL25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvaW5ldF9jb25uZWN0aW9uX3NvY2suaD0yNzU9Ym9vbCBpbmV0X2Nza19yZXFza19xdWV1ZV9oYXNoX2FkZChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSk7XG5pbmNsdWRlL25ldC9pbmV0X2Nvbm5lY3Rpb25fc29jay5oOjI3NjpzdHJ1Y3Qgc29jayAqaW5ldF9jc2tfY29tcGxldGVfaGFzaGRhbmNlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNvY2sgKmNoaWxkLFxuaW5jbHVkZS9uZXQvaW5ldF9jb25uZWN0aW9uX3NvY2suaC0yNzctXHRcdFx0XHRcdCBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA2OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg3MjMKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkNvbnNpZGVyaW5nIHRoZSBOb24tU3RhdGljIE5hdHVyZSoqCgpBbHJpZ2h0LCBzbyB0aGUgY29yZSBpc3N1ZSBpcyB0aGUgbm9uLXN0YXRpYyBuYXR1cmUgb2YgdGhpcyBzaXR1YXRpb24uIEkmIzM5O20gaW1tZWRpYXRlbHkgdGhpbmtpbmcgYWJvdXQgaG93IHRoYXQgZHluYW1pYyBlbGVtZW50IGltcGFjdHMgZXZlcnl0aGluZy4gV2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBzb21ldGhpbmcgdGhhdCAqaXNuJiMzOTt0KiBmaXhlZCwgYW5kIHRoYXQgbmVjZXNzaXRhdGVzIGEgbW9yZSBmbHVpZCBhbmQgcG90ZW50aWFsbHkgbW9yZSBjb21wbGV4IGFwcHJvYWNoLiBXZSBuZWVkIHRvIGFjY291bnQgZm9yIGNoYW5naW5nIHN0YXRlcywgdmFyaWFibGVzLCBhbmQgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucy4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBzaGlmdCBpbiBwZXJzcGVjdGl2ZS4gQW5kLCBnaXZlbiB0aGF0IGR5bmFtaWMgYXNwZWN0LCBJIGltbWVkaWF0ZWx5IHN0YXJ0IHRvIHRoaW5rIGFib3V0IGhvdyB0byBhcHBseSB0aGUgbGVzc29ucyBJJiMzOTt2ZSBsZWFybmVkIGZyb20gc2ltaWxhciBub24tc3RhdGljIGFyY2hpdGVjdHVyZXMuIFRoYXQgdW5kZXJzdGFuZGluZyBvZiB0aGUgdW5kZXJseWluZyBuZXR3b3JrIHN0YWNrIHdpbGwgYmUgY3JpdGljYWwuCgpUaGVuLCBteSBtaW5kIGp1bXBzIHRvIGEgc3BlY2lmaWMgZnVuY3Rpb246IGBpbmV0X2Nza19saXN0ZW5fc3RvcGAuIEkga25vdyB0aGF0IGZ1bmN0aW9uIGlzIGNyaXRpY2FsbHkgaW1wb3J0YW50IGZvciBjbGVhbmx5IHNodXR0aW5nIGRvd24gbGlzdGVuaW5nIHNvY2tldHMsIHByZXZlbnRpbmcgcmVzb3VyY2UgbGVha3MsIGFuZCBlbnN1cmluZyBncmFjZWZ1bCBoYW5kbGluZyBvZiBjb25uZWN0aW9ucy4gV2l0aCB0aGlzIG5vbi1zdGF0aWMgaXNzdWUgaW4gbWluZCwgSSBuZWVkIHRvIGV2YWx1YXRlIHByZWNpc2VseSBob3cgYGluZXRfY3NrX2xpc3Rlbl9zdG9wYCB3aWxsIHJlYWN0IG9yIGludGVyYWN0IHdpdGggdGhlIHNpdHVhdGlvbi4gSXMgaXQgYXBwcm9wcmlhdGUsIG9yIGFyZSB3ZSBnb2luZyB0byBuZWVkIHNvbWV0aGluZyBtb3JlPyBEbyB3ZSBuZWVkIHRvIGNhbGwgaXQgYXQgYWxsPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgdGhhdCB3ZSBuZWVkIHRvIGNvbnNpZGVyIGluIHRoZSBjb250ZXh0IG9mIG91ciBub24tc3RhdGljIHNpdHVhdGlvbj8gVGhpcyBpcyBhIGtleSBwb2ludCwgYmVjYXVzZSB0aGF0IGZ1bmN0aW9uIGNhbiBiZSB0aGUgY3J1Y2lhbCBlbGVtZW50IHRoYXQgZW5zdXJlcyBzdGFiaWxpdHkuIFdlIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGl0IGlzIHN1ZmZpY2llbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA2OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2luZXRfY3NrX2xpc3Rlbl9zdG9wJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L2luZXRfY29ubmVjdGlvbl9zb2NrLmg9MzExPWludCBpbmV0X2Nza19saXN0ZW5fc3RhcnQoc3RydWN0IHNvY2sgKnNrKTtcbmluY2x1ZGUvbmV0L2luZXRfY29ubmVjdGlvbl9zb2NrLmg6MzEyOnZvaWQgaW5ldF9jc2tfbGlzdGVuX3N0b3Aoc3RydWN0IHNvY2sgKnNrKTtcbmluY2x1ZGUvbmV0L2luZXRfY29ubmVjdGlvbl9zb2NrLmgtMzEzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNjo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MTcwCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXMgaWYgdGhlc2UgYXJlIG15IHRob3VnaHRzOgoKKipBbmFseXppbmcgYGluZXRfcmVxc2tfY2xvbmVgIFVzYWdlKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBJIHNlZSB0aGF0IHRoZSB0YXJnZXQgaXMgYSBub24tc3RhdGljIGZ1bmN0aW9uLiBUaGF0IGltbWVkaWF0ZWx5IHRyaWdnZXJzIHRoZSAmIzM0O3BvdGVudGlhbCBmb3IgYnJvYWRlciB1c2FnZSYjMzQ7IGFsYXJtIGJlbGxzIGluIG15IGhlYWQuIE15IG5leHQgdGhvdWdodCBpcyB0byB0cnkgYW5kIGVzdGFibGlzaCB0aGUgc2NvcGUgb2YgdGhpcyBmdW5jdGlvbi4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBhbGwgdGhlIGNhbGwgc2l0ZXMgdG8gZ2V0IGEgcHJvcGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb2YgYW55IGNoYW5nZXMuIFRoZSBrZXkgcXVlc3Rpb24gbm93IGlzOiAmIzM0O0FyZSB0aGVyZSBhbnkgb3RoZXIgY2FsbGVycyBvZiBgaW5ldF9yZXFza19jbG9uZWA/JiMzNDsgSSBuZWVkIHRvIGZpbmQgdGhlbSBhbmQgdW5kZXJzdGFuZCBob3cgaXQmIzM5O3MgYmVpbmcgdXNlZCBhY3Jvc3MgdGhlIG5ldHdvcmsgc3RhY2suIFRoaXMgaXMgZnVuZGFtZW50YWwgdG8gbXkgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA2OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2luZXRfcmVxc2tfY2xvbmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYz05MDQ9dm9pZCBfX3JlcXNrX2ZyZWUoc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKVxuLS1cbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtOTEyLVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYzo5MTM6c3RhdGljIHN0cnVjdCByZXF1ZXN0X3NvY2sgKmluZXRfcmVxc2tfY2xvbmUoc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxLFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy05MTQtXHRcdFx0XHRcdCAgICAgc3RydWN0IHNvY2sgKnNrKVxuLS1cbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM9MTAzMz1zdGF0aWMgdm9pZCByZXFza190aW1lcl9oYW5kbGVyKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxuLS1cbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtMTA0OS1cbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM6MTA1MDpcdFx0bnJlcSA9IGluZXRfcmVxc2tfY2xvbmUocmVxLCBuc2spO1xubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xMDUxLVx0XHRpZiAoIW5yZXEpXG4tLVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYz0xNDE3PXN0cnVjdCBzb2NrICppbmV0X2Nza19jb21wbGV0ZV9oYXNoZGFuY2Uoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc29jayAqY2hpbGQsXG4tLVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xNDMwLVx0XHRcdC8qIGhvbGQgYSByZWZjbnQgZm9yIHRoZSBucmVxLVx1MDAzZXJza19saXN0ZW5lclxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYzoxNDMxOlx0XHRcdCAqIHdoaWNoIGlzIGFzc2lnbmVkIGluIGluZXRfcmVxc2tfY2xvbmUoKVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xNDMyLVx0XHRcdCAqL1xubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xNDMzLVx0XHRcdHNvY2tfaG9sZChzayk7XG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jOjE0MzQ6XHRcdFx0bnJlcSA9IGluZXRfcmVxc2tfY2xvbmUocmVxLCBzayk7XG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTE0MzUtXHRcdFx0aWYgKCFucmVxKSB7XG4tLVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYz0xNDY2PXZvaWQgaW5ldF9jc2tfbGlzdGVuX3N0b3Aoc3RydWN0IHNvY2sgKnNrKVxuLS1cbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtMTQ5MC1cdFx0aWYgKG5zaykge1xubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYzoxNDkxOlx0XHRcdG5yZXEgPSBpbmV0X3JlcXNrX2Nsb25lKHJlcSwgbnNrKTtcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtMTQ5Mi1cdFx0XHRpZiAobnJlcSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNjo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5OTc0CgkJCQkJCQlvdXRwdXQ6IDkzCgkJCQkJCQl0aG91Z2h0czogMTYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFRDUCBGYXN0IE9wZW4gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiB0YWtpbmcgYSBsb29rIGF0IHRoaXMgcGF0Y2ggcmVsYXRlZCB0byBUQ1AgRmFzdCBPcGVuLiBJdCBzZWVtcyBsaWtlIGBpbmV0X2Nza19jb21wbGV0ZV9oYXNoZGFuY2VgIGFuZCBgaW5ldF9jc2tfbGlzdGVuX3N0b3BgIGFyZSB0aGUga2V5IGVudHJ5IHBvaW50cyBJIG5lZWQgdG8gZm9jdXMgb24gaW5pdGlhbGx5LiBJIGFsc28gbm90aWNlZCBgcmVxc2tfdGltZXJfaGFuZGxlcmAgbWVudGlvbmVkLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gV2hpbGUgaXQmIzM5O3MgYSB0aW1lciBoYW5kbGVyIGFuZCBub3QgZGlyZWN0bHkgY2FsbGVkIGJ5IGEgc3lzdGVtIGNhbGwsIGl04oCZcyB0cmlnZ2VyZWQgZHVyaW5nIFRDUCBjb25uZWN0aW9uIGhhbmRsaW5nLCBtYWtpbmcgaXQgcmVsZXZhbnQgdG8gdGhlIG92ZXJhbGwgZmxvdy4gVGhlIGJ1ZyBpdHNlbGYgYXBwZWFycyB0byBpbnZvbHZlIGEgbWlzc2VkIGFjY291bnRpbmcgdXBkYXRlOiBgZmFzdG9wZW5xLSZndDtxbGVuYCBpc24mIzM5O3QgcHJvcGVybHkgY2hhcmdlZCB3aGVuIGEgcmVxdWVzdCBzb2NrZXQgaXMgY2xvbmVkIGZvciBhIFRDUCBGYXN0IE9wZW4gbGlzdGVuZXIuIFRoaXMgaXMgYSBjbGFzc2ljIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5IHNpdHVhdGlvbiwgYW5kIGl0JiMzOTtzIGRlZmluaXRlbHkgc29tZXRoaW5nIEkgd2FudCB0byB0ZXN0IHRob3JvdWdobHkuCgpGcm9tIGEgZnVuY3Rpb25hbCBwZXJzcGVjdGl2ZSwgdGhpcyBwYXRjaCBzZWVtcyBsaWtlIGl0JiMzOTtzIHdvcnRoIHRoZSBlZmZvcnQgb2YgZnV6emluZy4gVGhlIGdvb2QgbmV3cyBpcyB0aGF0IG5vIHNwZWNpYWwgY29uZmlndXJhdGlvbnMgYXJlIHJlcXVpcmVkIGJlY2F1c2UgVENQIEZhc3QgT3BlbiBpcyBhbHJlYWR5IGJ1aWx0IGluLiBHaXZlbiBhbGwgb2YgdGhpcywgSSYjMzk7bSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZz10cnVlYC4gTXkgYEZvY3VzU3ltYm9sc2Agd2lsbCBiZSBgWyYjMzQ7aW5ldF9jc2tfY29tcGxldGVfaGFzaGRhbmNlJiMzNDssICYjMzQ7aW5ldF9jc2tfbGlzdGVuX3N0b3AmIzM0O11gLCBhbmQgSSYjMzk7bGwga2VlcCBgRW5hYmxlQ29uZmlnc2AgZW1wdHkgZm9yIG5vdywgYXMgSSBkb24mIzM5O3Qgc2VlIGFueSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA2OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpbmV0X2Nza19jb21wbGV0ZV9oYXNoZGFuY2UmIzM0OywKICAgICYjMzQ7aW5ldF9jc2tfbGlzdGVuX3N0b3AmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgVENQIEZhc3QgT3BlbiByZXF1ZXN0IHNvY2tldCBjbG9uaW5nIGxvZ2ljIGluIGluZXRfcmVxc2tfY2xvbmUgdG8gcHJvcGVybHkgY2hhcmdlIHRoZSBmYXN0b3BlbiBxdWV1ZSBsZW5ndGguIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBsb2dpYyB0aGF0IGhhbmRsZXMgVENQIGNvbm5lY3Rpb25zIGFuZCBsaXN0ZW5pbmcgc29ja2V0cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpbmV0X2Nza19jb21wbGV0ZV9oYXNoZGFuY2UmIzM0OywKICAgICYjMzQ7aW5ldF9jc2tfbGlzdGVuX3N0b3AmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgVENQIEZhc3QgT3BlbiByZXF1ZXN0IHNvY2tldCBjbG9uaW5nIGxvZ2ljIGluIGluZXRfcmVxc2tfY2xvbmUgdG8gcHJvcGVybHkgY2hhcmdlIHRoZSBmYXN0b3BlbiBxdWV1ZSBsZW5ndGguIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBsb2dpYyB0aGF0IGhhbmRsZXMgVENQIGNvbm5lY3Rpb25zIGFuZCBsaXN0ZW5pbmcgc29ja2V0cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA2OjQ4OjM0LjA5MDM5NTUwNloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NjIyNzcyODEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImluZXRfY3NrX2NvbXBsZXRlX2hhc2hkYW5jZVwiLFxuICAgIFwiaW5ldF9jc2tfbGlzdGVuX3N0b3BcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBUQ1AgRmFzdCBPcGVuIHJlcXVlc3Qgc29ja2V0IGNsb25pbmcgbG9naWMgaW4gaW5ldF9yZXFza19jbG9uZSB0byBwcm9wZXJseSBjaGFyZ2UgdGhlIGZhc3RvcGVuIHF1ZXVlIGxlbmd0aC4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGxvZ2ljIHRoYXQgaGFuZGxlcyBUQ1AgY29ubmVjdGlvbnMgYW5kIGxpc3RlbmluZyBzb2NrZXRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNjo0ODozNC4wOTA0MDIzMDZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MTc2NjkxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDE2ZjczMTYwMGUxMGVhZmVkZTExZDk4OWY2MWI5ZDJjZTFiYTdlMDRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMyAwNjo0ODozMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jIGIvbmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suY1xcbmluZGV4IDU2OTAyYmJhNTQ4MzguLjYyNTc0NTliY2VlMjQgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suY1xcbisrKyBiL25ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmNcXG5AQCAtOTQzLDExICs5NDMsMjMgQEAgc3RhdGljIHN0cnVjdCByZXF1ZXN0X3NvY2sgKmluZXRfcmVxc2tfY2xvbmUoc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxLFxcbiBcXG4gXFx0bnJlcS1cXHUwMDNlcnNrX2xpc3RlbmVyID0gc2s7XFxuIFxcbi1cXHQvKiBXZSBuZWVkIG5vdCBhY3F1aXJlIGZhc3RvcGVucS1cXHUwMDNlbG9ja1xcbi1cXHQgKiBiZWNhdXNlIHRoZSBjaGlsZCBzb2NrZXQgaXMgbG9ja2VkIGluIGluZXRfY3NrX2xpc3Rlbl9zdG9wKCkuXFxuLVxcdCAqL1xcbi1cXHRpZiAoc2stXFx1MDAzZXNrX3Byb3RvY29sID09IElQUFJPVE9fVENQIFxcdTAwMjZcXHUwMDI2IHRjcF9yc2sobnJlcSktXFx1MDAzZXRmb19saXN0ZW5lcilcXG4rXFx0aWYgKHNrLVxcdTAwM2Vza19wcm90b2NvbCA9PSBJUFBST1RPX1RDUCBcXHUwMDI2XFx1MDAyNiB0Y3BfcnNrKG5yZXEpLVxcdTAwM2V0Zm9fbGlzdGVuZXIpIHtcXG4rXFx0XFx0c3RydWN0IGZhc3RvcGVuX3F1ZXVlICpmYXN0b3BlbnE7XFxuK1xcbitcXHRcXHQvKiByZXFza19mYXN0b3Blbl9yZW1vdmUoKSB3aWxsIHVuY2hhcmdlIG5yZXEtXFx1MDAzZXJza19saXN0ZW5lcixcXG4rXFx0XFx0ICogdGhhdCBpcyBAc2ssIHNvIGNoYXJnZSBpdCBoZXJlLiAgVW5saWtlIHRoZSBsaXN0ZW5lclxcbitcXHRcXHQgKiBiZWluZyBjbG9zZWQsIEBzayBpcyBsaXZlIGFuZCBuZWVkcyBpdHMgbG9jay5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdGZhc3RvcGVucSA9IFxcdTAwMjZpbmV0X2NzayhzayktXFx1MDAzZWljc2tfYWNjZXB0X3F1ZXVlLmZhc3RvcGVucTtcXG4rXFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZmYXN0b3BlbnEtXFx1MDAzZWxvY2spO1xcbitcXHRcXHRmYXN0b3BlbnEtXFx1MDAzZXFsZW4rKztcXG4rXFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmZhc3RvcGVucS1cXHUwMDNlbG9jayk7XFxuK1xcbitcXHRcXHQvKiBXZSBuZWVkIG5vdCBhY3F1aXJlIGZhc3RvcGVucS1cXHUwMDNlbG9ja1xcbitcXHRcXHQgKiBiZWNhdXNlIHRoZSBjaGlsZCBzb2NrZXQgaXMgbG9ja2VkIGluIGluZXRfY3NrX2xpc3Rlbl9zdG9wKCkuXFxuK1xcdFxcdCAqL1xcbiBcXHRcXHRyY3VfYXNzaWduX3BvaW50ZXIodGNwX3NrKG5yZXEtXFx1MDAzZXNrKS1cXHUwMDNlZmFzdG9wZW5fcnNrLCBucmVxKTtcXG4rXFx0fVxcbiBcXG4gXFx0cmV0dXJuIG5yZXE7XFxuIH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDY6NDg6MzQuNTYzNjAxODI3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDcxNDk1NTgyMTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaW5ldF9jc2tfY29tcGxldGVfaGFzaGRhbmNlXCIsXG4gICAgXCJpbmV0X2Nza19saXN0ZW5fc3RvcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFRDUCBGYXN0IE9wZW4gcmVxdWVzdCBzb2NrZXQgY2xvbmluZyBsb2dpYyBpbiBpbmV0X3JlcXNrX2Nsb25lIHRvIHByb3Blcmx5IGNoYXJnZSB0aGUgZmFzdG9wZW4gcXVldWUgbGVuZ3RoLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgbG9naWMgdGhhdCBoYW5kbGVzIFRDUCBjb25uZWN0aW9ucyBhbmQgbGlzdGVuaW5nIHNvY2tldHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDE2ZjczMTYwMGUxMGVhZmVkZTExZDk4OWY2MWI5ZDJjZTFiYTdlMDRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDA2OjQ4OjMzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYyBiL25ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmNcbmluZGV4IDU2OTAyYmJhNTQ4MzguLjYyNTc0NTliY2VlMjQgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jXG4rKysgYi9uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jXG5AQCAtOTQzLDExICs5NDMsMjMgQEAgc3RhdGljIHN0cnVjdCByZXF1ZXN0X3NvY2sgKmluZXRfcmVxc2tfY2xvbmUoc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxLFxuIFxuIFx0bnJlcS1cdTAwM2Vyc2tfbGlzdGVuZXIgPSBzaztcbiBcbi1cdC8qIFdlIG5lZWQgbm90IGFjcXVpcmUgZmFzdG9wZW5xLVx1MDAzZWxvY2tcbi1cdCAqIGJlY2F1c2UgdGhlIGNoaWxkIHNvY2tldCBpcyBsb2NrZWQgaW4gaW5ldF9jc2tfbGlzdGVuX3N0b3AoKS5cbi1cdCAqL1xuLVx0aWYgKHNrLVx1MDAzZXNrX3Byb3RvY29sID09IElQUFJPVE9fVENQIFx1MDAyNlx1MDAyNiB0Y3BfcnNrKG5yZXEpLVx1MDAzZXRmb19saXN0ZW5lcilcbitcdGlmIChzay1cdTAwM2Vza19wcm90b2NvbCA9PSBJUFBST1RPX1RDUCBcdTAwMjZcdTAwMjYgdGNwX3JzayhucmVxKS1cdTAwM2V0Zm9fbGlzdGVuZXIpIHtcbitcdFx0c3RydWN0IGZhc3RvcGVuX3F1ZXVlICpmYXN0b3BlbnE7XG4rXG4rXHRcdC8qIHJlcXNrX2Zhc3RvcGVuX3JlbW92ZSgpIHdpbGwgdW5jaGFyZ2UgbnJlcS1cdTAwM2Vyc2tfbGlzdGVuZXIsXG4rXHRcdCAqIHRoYXQgaXMgQHNrLCBzbyBjaGFyZ2UgaXQgaGVyZS4gIFVubGlrZSB0aGUgbGlzdGVuZXJcbitcdFx0ICogYmVpbmcgY2xvc2VkLCBAc2sgaXMgbGl2ZSBhbmQgbmVlZHMgaXRzIGxvY2suXG4rXHRcdCAqL1xuK1x0XHRmYXN0b3BlbnEgPSBcdTAwMjZpbmV0X2NzayhzayktXHUwMDNlaWNza19hY2NlcHRfcXVldWUuZmFzdG9wZW5xO1xuK1x0XHRzcGluX2xvY2tfYmgoXHUwMDI2ZmFzdG9wZW5xLVx1MDAzZWxvY2spO1xuK1x0XHRmYXN0b3BlbnEtXHUwMDNlcWxlbisrO1xuK1x0XHRzcGluX3VubG9ja19iaChcdTAwMjZmYXN0b3BlbnEtXHUwMDNlbG9jayk7XG4rXG4rXHRcdC8qIFdlIG5lZWQgbm90IGFjcXVpcmUgZmFzdG9wZW5xLVx1MDAzZWxvY2tcbitcdFx0ICogYmVjYXVzZSB0aGUgY2hpbGQgc29ja2V0IGlzIGxvY2tlZCBpbiBpbmV0X2Nza19saXN0ZW5fc3RvcCgpLlxuK1x0XHQgKi9cbiBcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKHRjcF9zayhucmVxLVx1MDAzZXNrKS1cdTAwM2VmYXN0b3Blbl9yc2ssIG5yZXEpO1xuK1x0fVxuIFxuIFx0cmV0dXJuIG5yZXE7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDY6NDg6MzQuNTYzNjAzODg3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY1NjU4MDU2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGFjdCBvZiBhIFRDUCBGYXN0IE9wZW4gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCdzIHRvdWNoaW5nIGBuZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jYC4gU3BlY2lmaWNhbGx5LCBpdCdzIG1vZGlmeWluZyB0aGUgYGluZXRfcmVxc2tfY2xvbmVgIGZ1bmN0aW9uLiBUaGUga2V5IGhlcmUgaXMgdGhlIGFkZGl0aW9uIG9mIGBmYXN0b3BlbnEtXHUwMDNlcWxlbmAgY2hhcmdpbmcuIEl0IHNlZW1zIGxpa2Ugd2UncmUgYWNjb3VudGluZyBmb3IgVENQIEZhc3QgT3BlbiByZXF1ZXN0cyB3aGVuIGEgbmV3IHJlcXVlc3Qgc29ja2V0IGlzIGJlaW5nIGNsb25lZC5cblxuTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBkcmlsbCBkb3duIG9uIGBpbmV0X3JlcXNrX2Nsb25lYC4gSSBuZWVkIHRvIGZ1bGx5IHVuZGVyc3RhbmQgaXRzIGZ1bmN0aW9uIGFuZCwgaW1wb3J0YW50bHksIHdoYXQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIG5ldyBhY2NvdW50aW5nIGFyZS4gSSdsbCBuZWVkIHRvIGNhcmVmdWxseSByZXZpZXcgdGhlIGNvZGUgYW5kIGNvbnNpZGVyIGl0cyBpbXBhY3Qgb24gcmVzb3VyY2UgbWFuYWdlbWVudCwgcGFydGljdWxhcmx5IHF1ZXVlIGxlbmd0aCBsaW1pdHMuXG5cblRoZW4sIEknbGwgYWJzb2x1dGVseSBuZWVkIHRvIGlkZW50aWZ5IGFsbCB0aGUgY2FsbGVycyBvZiBgaW5ldF9yZXFza19jbG9uZWAuIFRoaXMgaXMgY3JpdGljYWwuIFVuZGVyc3RhbmRpbmcgKndoZXJlKiBhbmQgKmhvdyogdGhpcyBmdW5jdGlvbiBpcyBiZWluZyB1c2VkIHdpbGwgdGVsbCBtZSB0aGUgb3ZlcmFsbCBzY29wZSBvZiB0aGUgY2hhbmdlIGFuZCB3aGF0IHBhcnRzIG9mIHRoZSBuZXR3b3JraW5nIHN0YWNrIHdpbGwgYmUgYWZmZWN0ZWQuIEknbGwgbmVlZCB0byB0aGluayBhYm91dCBwb3RlbnRpYWwgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIFRDUCBzdGFjayBhbmQgY29uc2lkZXIgZWRnZSBjYXNlcy4gSSdsbCBiZSBsb29raW5nIGZvciBhbnkgcGxhY2Ugd2hlcmUgdGhlc2UgY2FsbHMgbWlnaHQgY3JlYXRlIHVuaW50ZW5kZWQgY29uc2VxdWVuY2VzIG9yIHZ1bG5lcmFiaWxpdGllcy4gRXNzZW50aWFsbHksIEkgbmVlZCB0aGUgZnVsbCBwaWN0dXJlIGJlZm9yZSBJIGNhbiBldmFsdWF0ZSB0aGUgcGF0Y2ggcHJvcGVybHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMTYsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA2OjQ4OjM4LjIyMDE4ODU5OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDE4NjA0NTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImluZXRfcmVxc2tfY2xvbmVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYz05MDQ9dm9pZCBfX3JlcXNrX2ZyZWUoc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKVxcbi0tXFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy05MTItXFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYzo5MTM6c3RhdGljIHN0cnVjdCByZXF1ZXN0X3NvY2sgKmluZXRfcmVxc2tfY2xvbmUoc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxLFxcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtOTE0LVxcdFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHNvY2sgKnNrKVxcbi0tXFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYz0xMDMzPXN0YXRpYyB2b2lkIHJlcXNrX3RpbWVyX2hhbmRsZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpXFxuLS1cXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTEwNDktXFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYzoxMDUwOlxcdFxcdG5yZXEgPSBpbmV0X3JlcXNrX2Nsb25lKHJlcSwgbnNrKTtcXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTEwNTEtXFx0XFx0aWYgKCFucmVxKVxcbi0tXFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYz0xNDE3PXN0cnVjdCBzb2NrICppbmV0X2Nza19jb21wbGV0ZV9oYXNoZGFuY2Uoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc29jayAqY2hpbGQsXFxuLS1cXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTE0MzAtXFx0XFx0XFx0LyogaG9sZCBhIHJlZmNudCBmb3IgdGhlIG5yZXEtXFx1MDAzZXJza19saXN0ZW5lclxcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM6MTQzMTpcXHRcXHRcXHQgKiB3aGljaCBpcyBhc3NpZ25lZCBpbiBpbmV0X3JlcXNrX2Nsb25lKClcXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTE0MzItXFx0XFx0XFx0ICovXFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xNDMzLVxcdFxcdFxcdHNvY2tfaG9sZChzayk7XFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYzoxNDM0OlxcdFxcdFxcdG5yZXEgPSBpbmV0X3JlcXNrX2Nsb25lKHJlcSwgc2spO1xcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtMTQzNS1cXHRcXHRcXHRpZiAoIW5yZXEpIHtcXG4tLVxcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM9MTQ2Nj12b2lkIGluZXRfY3NrX2xpc3Rlbl9zdG9wKHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtMTQ5MC1cXHRcXHRpZiAobnNrKSB7XFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYzoxNDkxOlxcdFxcdFxcdG5yZXEgPSBpbmV0X3JlcXNrX2Nsb25lKHJlcSwgbnNrKTtcXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTE0OTItXFx0XFx0XFx0aWYgKG5yZXEpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDY6NDg6NDAuNjM4Nzk5Nzk5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjY0Njg4MDIzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENvbnRleHQgb2YgYGluZXRfcmVxc2tfY2xvbmVgKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGluZXRfcmVxc2tfY2xvbmVgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgdGhpcyBpcyBjb3JlIGtlcm5lbCBUQ1AvSVB2NCBjb25uZWN0aW9uIHN0dWZmLiBJIHNlZSBpdCdzIGNhbGxlZCBmcm9tIGByZXFza190aW1lcl9oYW5kbGVyYCwgYGluZXRfY3NrX2NvbXBsZXRlX2hhc2hkYW5jZWAsIGFuZCBgaW5ldF9jc2tfbGlzdGVuX3N0b3BgIC0gYWxsIGtleSBmdW5jdGlvbnMgaW4gdGhlIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCBhbmQgdGVhcmRvd24gcHJvY2Vzcy4gVGhpcyBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBjcml0aWNhbCBsb2dpYy4gTXkgbmV4dCBzdGVwLCBhcyBhbHdheXMsIGlzIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBmdW5jdGlvbiBpcyBkZXBlbmRlbnQgb24gYW55IHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9ucy4gSSdtIGdvaW5nIHRvIHRyYWNrIGRvd24gdGhlIHNvdXJjZSBmaWxlOyBsb29rcyBsaWtlIGl0J3MgaW4gYG5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmNgLiBOb3csIGxldCdzIGp1c3QgZ3JlcCB0aGUgYE1ha2VmaWxlYCBpbiB0aGF0IGRpcmVjdG9yeSB0byBzZWUgaWYgaXQgaGFzIGFueSBzcGVjaWFsIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjY5LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA2OjQ4OjQ3LjI4NTY4Mzg1NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTQxMTQ5NjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW5ldF9jb25uZWN0aW9uX3NvY2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvTWFrZWZpbGU9Nj1vYmoteSAgICAgOj0gcm91dGUubyBpbmV0cGVlci5vIHByb3RvY29sLm8gXFxcXFxcbi0tXFxubmV0L2lwdjQvTWFrZWZpbGUtOC1cXHQgICAgIGlwX291dHB1dC5vIGlwX3NvY2tnbHVlLm8gaW5ldF9oYXNodGFibGVzLm8gXFxcXFxcbm5ldC9pcHY0L01ha2VmaWxlOjk6XFx0ICAgICBpbmV0X3RpbWV3YWl0X3NvY2subyBpbmV0X2Nvbm5lY3Rpb25fc29jay5vIFxcXFxcXG5uZXQvaXB2NC9NYWtlZmlsZS0xMC1cXHQgICAgIHRjcC5vIHRjcF9pbnB1dC5vIHRjcF9vdXRwdXQubyB0Y3BfdGltZXIubyB0Y3BfaXB2NC5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDY6NDg6NDcuMzk5ODA0MDc5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk1OTkxNzI1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duLCBnaXZlbiBteSBleHBlcnRpc2U6XG5cbioqVENQIEZhc3QgT3BlbiBhbmQgSVB2NCBDb21waWxhdGlvbiBJbnF1aXJ5KipcblxuQWxyaWdodCwgc28gdGhlIGNvZGUncyBjb21waWxlZCB1bmNvbmRpdGlvbmFsbHkgZm9yIElQdjQg4oCTIGEgYml0IG9mIGEgZGVmYXVsdCwgcGVyaGFwcywgYnV0IGl0J3MgdGhlIGZvdW5kYXRpb24gd2UgbmVlZCB0byBhZGRyZXNzLiBUaGlzIGltcGxpZXMgSVB2NCBzdXBwb3J0IGlzIGJha2VkIGluLCB3aGljaCBpc24ndCB1bmV4cGVjdGVkLiBOb3csIHRoZSBjb250ZXh0IGltbWVkaWF0ZWx5IGJyaW5ncyBUQ1AgRmFzdCBPcGVuIHRvIG1pbmQsIGFuZCBJIHN1c3BlY3QgYSByZWxhdGlvbnNoaXAgaGVyZS4gSXQncyBhbG1vc3QgZ3VhcmFudGVlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSB0d28gYXJlIGNvbm5lY3RlZCB3aXRoaW4gdGhpcyBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbi5cblxuTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIHRoZW4gYmVjb21lczogaXMgdGhlcmUgYSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHNldHRpbmcsIGEgZmxhZywgb3IgYSBrbm9iIHNvbWV3aGVyZSwgdGhhdCBleHBsaWNpdGx5IGNvbnRyb2xzIG9yIGVuYWJsZXMvZGlzYWJsZXMgVENQIEZhc3QgT3BlbiBpbiB0aGlzIGJ1aWxkPyBPciwgaXMgaXRzIHN1cHBvcnQgYXNzdW1lZCwgYXV0b21hdGljYWxseSB0cmlnZ2VyZWQgaWYgdGhlIHVuZGVybHlpbmcgc3lzdGVtIHN1cHBvcnRzIGl0IGFuZCB0aGUgYXBwcm9wcmlhdGUgZGF0YSBpcyBwcmVzZW50PyBUaGlzIGlzIHRoZSBjb3JlIGlzc3VlIHRoYXQgSSBuZWVkIHRvIHJlc29sdmUsIGFuZCB0aGlzIHdpbGwgZGV0ZXJtaW5lIGhvdyBkZWVwbHkgSSB3aWxsIGRpdmUgaW50byB0aGlzIHNwZWNpZmljIGltcGxlbWVudGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzI2LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDY6NDg6NTIuMzU5NzIzOTMxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NjA3MzUxNSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiVENQX0ZBU1RPUEVOXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA2OjQ4OjUyLjYwNTgwNjU0NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNzYzNjExMzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRhY2tsaW5nIHRoaXMgaXNzdWUsIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnRpc2U6XG5cbioqQ2hlY2tpbmcgdGhlIFRDUCBGYXN0IE9wZW4gSW1wbGVtZW50YXRpb24qKlxuXG5SaWdodCwgc28gSSdtIHRoaW5raW5nLCBiYXNlZCBvbiB3aGF0IEkndmUgZW5jb3VudGVyZWQsIHRoYXQgdGhlIGJlaGF2aW9yIEknbSBzZWVpbmcgaXMgbGlrZWx5IHJlbGF0ZWQgdG8gaG93IFRDUCBGYXN0IE9wZW4gaXMgaGFuZGxlZC4gTXkgZ3V0IGZlZWxpbmcgaXMgbGVhZGluZyBtZSB0byB0aGUga2VybmVsLWxldmVsIGltcGxlbWVudGF0aW9uLiBHaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBwcm9ibGVtLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIEZhc3QgT3BlbiBvcHRpb25zIGFyZSBpbnRlcnByZXRlZCBhbmQgdXRpbGl6ZWQuIFRoZXJlZm9yZSwgbXkgaW1tZWRpYXRlIGluY2xpbmF0aW9uIGlzIHRvIGV4YW1pbmUgdGhlIHNvdXJjZSBjb2RlLCBzcGVjaWZpY2FsbHkgc29tZXRoaW5nIGxpa2UgYG5ldC9pcHY0L3RjcF9mYXN0b3Blbi5jYCwgb3IgYSBzaW1pbGFyIGZpbGUgd2l0aGluIHRoZSBuZXR3b3JraW5nIHN0YWNrLiBUaGF0J3MgdGhlIGZpcnN0IHBsYWNlIEknZCBsb29rIHRvIHNlZSB0aGUgZGV0YWlsZWQgaGFuZGxpbmcgb2YgdGhlIEZhc3QgT3BlbiBmdW5jdGlvbmFsaXR5LiBJIG5lZWQgdGhlIHNwZWNpZmljcyBvZiB0aGUgRmFzdCBPcGVuIGJlaGF2aW9yIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGlzc3VlcyBhcmUgb2NjdXJyaW5nLiBGcm9tIGhlcmUsIEkgY2FuIGV4YW1pbmUgdGhlIGNhbGwgc3RhY2ssIGRlYnVnIHRoZSBwYWNrZXRzLCBvciBpbnN0cnVtZW50IHRoZSBuZXR3b3JrIHN0YWNrIHRvIHBpbnBvaW50IHRoZSBpc3N1ZXMgYXQgaGFuZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDAwNCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA2OjQ4OjU1LjY4MjE3MDM4NFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE0MDAxNjQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlRDUF9GQVNUT1BFTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvYWZfaW5ldC5jPTE5OD1pbnQgX19pbmV0X2xpc3Rlbl9zayhzdHJ1Y3Qgc29jayAqc2ssIGludCBiYWNrbG9nKVxcbi0tXFxubmV0L2lwdjQvYWZfaW5ldC5jLTIxMC1cXHRpZiAob2xkX3N0YXRlICE9IFRDUF9MSVNURU4pIHtcXG5uZXQvaXB2NC9hZl9pbmV0LmM6MjExOlxcdFxcdC8qIEVuYWJsZSBURk8gdy9vIHJlcXVpcmluZyBUQ1BfRkFTVE9QRU4gc29ja2V0IG9wdGlvbi5cXG5uZXQvaXB2NC9hZl9pbmV0LmMtMjEyLVxcdFxcdCAqIE5vdGUgdGhhdCBvbmx5IFRDUCBzb2NrZXRzIChTT0NLX1NUUkVBTSkgd2lsbCByZWFjaCBoZXJlLlxcbi0tXFxubmV0L2lwdjQvYWZfaW5ldC5jPTYzMT1pbnQgX19pbmV0X3N0cmVhbV9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICp1YWRkcixcXG4tLVxcbm5ldC9pcHY0L2FmX2luZXQuYy02NDAtXFx0ICogc2sgaXMgYSBUQ1AgZmFzdG9wZW4gYWN0aXZlIHNvY2tldCBhbmRcXG5uZXQvaXB2NC9hZl9pbmV0LmM6NjQxOlxcdCAqIFRDUF9GQVNUT1BFTl9DT05ORUNUIHNvY2tvcHQgaXMgc2V0IGFuZFxcbm5ldC9pcHY0L2FmX2luZXQuYy02NDItXFx0ICogd2UgYWxyZWFkeSBoYXZlIGEgdmFsaWQgY29va2llIGZvciB0aGlzIHNvY2tldC5cXG4tLVxcbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jPTI5MT1zdGF0aWMgaW50IHByb2NfdGNwX2Zhc3RvcGVuX2tleShjb25zdCBzdHJ1Y3QgY3RsX3RhYmxlICp0YWJsZSwgaW50IHdyaXRlLFxcbi0tXFxubmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmMtMjk4LVxcdCAqL1xcbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jOjI5OTpcXHRzdHJ1Y3QgY3RsX3RhYmxlIHRibCA9IHsgLm1heGxlbiA9ICgoVENQX0ZBU1RPUEVOX0tFWV9MRU5HVEggKlxcbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jOjMwMDpcXHRcXHRcXHRcXHRcXHQgICAgMiAqIFRDUF9GQVNUT1BFTl9LRVlfTUFYKSArXFxubmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmM6MzAxOlxcdFxcdFxcdFxcdFxcdCAgICAoVENQX0ZBU1RPUEVOX0tFWV9NQVggKiA1KSkgfTtcXG5uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuYzozMDI6XFx0dTMyIHVzZXJfa2V5W1RDUF9GQVNUT1BFTl9LRVlfQlVGX0xFTkdUSCAvIHNpemVvZih1MzIpXTtcXG5uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuYzozMDM6XFx0X19sZTMyIGtleVtUQ1BfRkFTVE9QRU5fS0VZX0JVRl9MRU5HVEggLyBzaXplb2YoX19sZTMyKV07XFxubmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmMtMzA0LVxcdGNoYXIgKmJhY2t1cF9kYXRhO1xcbi0tXFxubmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmMtMzEyLVxcdGlmICghbl9rZXlzKSB7XFxubmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmM6MzEzOlxcdFxcdG1lbXNldChcXHUwMDI2a2V5WzBdLCAwLCBUQ1BfRkFTVE9QRU5fS0VZX0xFTkdUSCk7XFxubmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmMtMzE0LVxcdFxcdG5fa2V5cyA9IDE7XFxuLS1cXG5uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuYz02Mjc9c3RhdGljIHN0cnVjdCBjdGxfdGFibGUgaXB2NF9uZXRfdGFibGVbXSA9IHtcXG4tLVxcbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jLTExMzktXFx0XFx0ICovXFxubmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmM6MTE0MDpcXHRcXHQubWF4bGVuXFx0XFx0PSAoKFRDUF9GQVNUT1BFTl9LRVlfTEVOR1RIICpcXG5uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuYzoxMTQxOlxcdFxcdFxcdFxcdCAgIDIgKiBUQ1BfRkFTVE9QRU5fS0VZX01BWCkgK1xcbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jOjExNDI6XFx0XFx0XFx0XFx0ICAgKFRDUF9GQVNUT1BFTl9LRVlfTUFYICogNSkpLFxcbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jLTExNDMtXFx0XFx0LnByb2NfaGFuZGxlclxcdD0gcHJvY190Y3BfZmFzdG9wZW5fa2V5LFxcbi0tXFxubmV0L2lwdjQvdGNwLmM9MzgzNz1pbnQgZG9fdGNwX3NldHNvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxcbi0tXFxubmV0L2lwdjQvdGNwLmMtMzg4NC1cXHR9XFxubmV0L2lwdjQvdGNwLmM6Mzg4NTpcXHRjYXNlIFRDUF9GQVNUT1BFTl9LRVk6IHtcXG5uZXQvaXB2NC90Y3AuYzozODg2OlxcdFxcdF9fdTgga2V5W1RDUF9GQVNUT1BFTl9LRVlfQlVGX0xFTkdUSF07XFxubmV0L2lwdjQvdGNwLmMtMzg4Ny1cXHRcXHRfX3U4ICpiYWNrdXBfa2V5ID0gTlVMTDtcXG4tLVxcbm5ldC9pcHY0L3RjcC5jLTM4OTEtXFx0XFx0ICovXFxubmV0L2lwdjQvdGNwLmM6Mzg5MjpcXHRcXHRpZiAob3B0bGVuICE9IFRDUF9GQVNUT1BFTl9LRVlfTEVOR1RIIFxcdTAwMjZcXHUwMDI2XFxubmV0L2lwdjQvdGNwLmM6Mzg5MzpcXHRcXHQgICAgb3B0bGVuICE9IFRDUF9GQVNUT1BFTl9LRVlfQlVGX0xFTkdUSClcXG5uZXQvaXB2NC90Y3AuYy0zODk0LVxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxubmV0L2lwdjQvdGNwLmMtMzg5OC1cXG5uZXQvaXB2NC90Y3AuYzozODk5OlxcdFxcdGlmIChvcHRsZW4gPT0gVENQX0ZBU1RPUEVOX0tFWV9CVUZfTEVOR1RIKVxcbm5ldC9pcHY0L3RjcC5jOjM5MDA6XFx0XFx0XFx0YmFja3VwX2tleSA9IGtleSArIFRDUF9GQVNUT1BFTl9LRVlfTEVOR1RIO1xcbm5ldC9pcHY0L3RjcC5jLTM5MDEtXFxuLS1cXG5uZXQvaXB2NC90Y3AuYy00MDk3LSNlbmRpZlxcbm5ldC9pcHY0L3RjcC5jOjQwOTg6XFx0Y2FzZSBUQ1BfRkFTVE9QRU46XFxubmV0L2lwdjQvdGNwLmMtNDA5OS1cXHRcXHRpZiAodmFsIFxcdTAwM2U9IDAgXFx1MDAyNlxcdTAwMjYgKCgxIFxcdTAwM2NcXHUwMDNjIHNrLVxcdTAwM2Vza19zdGF0ZSkgXFx1MDAyNiAoVENQRl9DTE9TRSB8XFxuLS1cXG5uZXQvaXB2NC90Y3AuYy00MTA3LVxcdFxcdGJyZWFrO1xcbm5ldC9pcHY0L3RjcC5jOjQxMDg6XFx0Y2FzZSBUQ1BfRkFTVE9QRU5fQ09OTkVDVDpcXG5uZXQvaXB2NC90Y3AuYy00MTA5LVxcdFxcdGlmICh2YWwgXFx1MDAzZSAxIHx8IHZhbCBcXHUwMDNjIDApIHtcXG4tLVxcbm5ldC9pcHY0L3RjcC5jLTQxMjAtXFx0XFx0YnJlYWs7XFxubmV0L2lwdjQvdGNwLmM6NDEyMTpcXHRjYXNlIFRDUF9GQVNUT1BFTl9OT19DT09LSUU6XFxubmV0L2lwdjQvdGNwLmMtNDEyMi1cXHRcXHRpZiAodmFsIFxcdTAwM2UgMSB8fCB2YWwgXFx1MDAzYyAwKVxcbi0tXFxubmV0L2lwdjQvdGNwLmM9NDQ4MT1pbnQgZG9fdGNwX2dldHNvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGV2ZWwsXFxuLS1cXG5uZXQvaXB2NC90Y3AuYy00NjA0LVxcbm5ldC9pcHY0L3RjcC5jOjQ2MDU6XFx0Y2FzZSBUQ1BfRkFTVE9QRU5fS0VZOiB7XFxubmV0L2lwdjQvdGNwLmM6NDYwNjpcXHRcXHR1NjQga2V5W1RDUF9GQVNUT1BFTl9LRVlfQlVGX0xFTkdUSCAvIHNpemVvZih1NjQpXTtcXG5uZXQvaXB2NC90Y3AuYy00NjA3LVxcdFxcdHVuc2lnbmVkIGludCBrZXlfbGVuO1xcbi0tXFxubmV0L2lwdjQvdGNwLmMtNDYxMi1cXHRcXHRrZXlfbGVuID0gdGNwX2Zhc3RvcGVuX2dldF9jaXBoZXIobmV0LCBpY3NrLCBrZXkpICpcXG5uZXQvaXB2NC90Y3AuYzo0NjEzOlxcdFxcdFxcdFxcdFRDUF9GQVNUT1BFTl9LRVlfTEVOR1RIO1xcbm5ldC9pcHY0L3RjcC5jLTQ2MTQtXFx0XFx0bGVuID0gbWluX3QodW5zaWduZWQgaW50LCBsZW4sIGtleV9sZW4pO1xcbi0tXFxubmV0L2lwdjQvdGNwLmMtNDY3NC1cXG5uZXQvaXB2NC90Y3AuYzo0Njc1OlxcdGNhc2UgVENQX0ZBU1RPUEVOOlxcbm5ldC9pcHY0L3RjcC5jLTQ2NzYtXFx0XFx0dmFsID0gUkVBRF9PTkNFKGljc2stXFx1MDAzZWljc2tfYWNjZXB0X3F1ZXVlLmZhc3RvcGVucS5tYXhfcWxlbik7XFxuLS1cXG5uZXQvaXB2NC90Y3AuYy00Njc4LVxcbm5ldC9pcHY0L3RjcC5jOjQ2Nzk6XFx0Y2FzZSBUQ1BfRkFTVE9QRU5fQ09OTkVDVDpcXG5uZXQvaXB2NC90Y3AuYy00NjgwLVxcdFxcdHZhbCA9IHRwLVxcdTAwM2VmYXN0b3Blbl9jb25uZWN0O1xcbi0tXFxubmV0L2lwdjQvdGNwLmMtNDY4Mi1cXG5uZXQvaXB2NC90Y3AuYzo0NjgzOlxcdGNhc2UgVENQX0ZBU1RPUEVOX05PX0NPT0tJRTpcXG5uZXQvaXB2NC90Y3AuYy00Njg0LVxcdFxcdHZhbCA9IHRwLVxcdTAwM2VmYXN0b3Blbl9ub19jb29raWU7XFxuLS1cXG5uZXQvaXB2NC90Y3BfZmFzdG9wZW4uYz05ND12b2lkIHRjcF9mYXN0b3Blbl9pbml0X2tleV9vbmNlKHN0cnVjdCBuZXQgKm5ldClcXG5uZXQvaXB2NC90Y3BfZmFzdG9wZW4uYy05NS17XFxubmV0L2lwdjQvdGNwX2Zhc3RvcGVuLmM6OTY6XFx0dTgga2V5W1RDUF9GQVNUT1BFTl9LRVlfTEVOR1RIXTtcXG5uZXQvaXB2NC90Y3BfZmFzdG9wZW4uYy05Ny1cXHRzdHJ1Y3QgdGNwX2Zhc3RvcGVuX2NvbnRleHQgKmN0eHQ7XFxuLS1cXG5uZXQvaXB2NC90Y3BfZmFzdG9wZW4uYz0yMDU9c3RhdGljIGJvb2wgX190Y3BfZmFzdG9wZW5fY29va2llX2dlbl9jaXBoZXIoc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxLFxcbi0tXFxubmV0L2lwdjQvdGNwX2Zhc3RvcGVuLmMtMjA5LXtcXG5uZXQvaXB2NC90Y3BfZmFzdG9wZW4uYzoyMTA6XFx0QlVJTERfQlVHX09OKFRDUF9GQVNUT1BFTl9DT09LSUVfU0laRSAhPSBzaXplb2YodTY0KSk7XFxubmV0L2lwdjQvdGNwX2Zhc3RvcGVuLmMtMjExLVxcbi0tXFxubmV0L2lwdjQvdGNwX2Zhc3RvcGVuLmMtMjE4LVxcdFxcdFxcdFxcdFxcdCAga2V5KSk7XFxubmV0L2lwdjQvdGNwX2Zhc3RvcGVuLmM6MjE5OlxcdFxcdGZvYy1cXHUwMDNlbGVuID0gVENQX0ZBU1RPUEVOX0NPT0tJRV9TSVpFO1xcbm5ldC9pcHY0L3RjcF9mYXN0b3Blbi5jLTIyMC1cXHRcXHRyZXR1cm4gdHJ1ZTtcXG4tLVxcbm5ldC9pcHY0L3RjcF9mYXN0b3Blbi5jLTIyOS1cXHRcXHRcXHRcXHRcXHQgIGtleSkpO1xcbm5ldC9pcHY0L3RjcF9mYXN0b3Blbi5jOjIzMDpcXHRcXHRmb2MtXFx1MDAzZWxlbiA9IFRDUF9GQVNUT1BFTl9DT09LSUVfU0laRTtcXG5uZXQvaXB2NC90Y3BfZmFzdG9wZW4uYy0yMzEtXFx0XFx0cmV0dXJuIHRydWU7XFxuLS1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYz00NDgzPXN0YXRpYyB2b2lkIHRjcF9wYXJzZV9mYXN0b3Blbl9vcHRpb24oaW50IGxlbiwgY29uc3QgdW5zaWduZWQgY2hhciAqY29va2llLFxcbi0tXFxubmV0L2lwdjQvdGNwX2lucHV0LmMtNDQ5MC1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYzo0NDkxOlxcdGlmIChsZW4gXFx1MDAzZT0gVENQX0ZBU1RPUEVOX0NPT0tJRV9NSU4gXFx1MDAyNlxcdTAwMjZcXG5uZXQvaXB2NC90Y3BfaW5wdXQuYzo0NDkyOlxcdCAgICBsZW4gXFx1MDAzYz0gVENQX0ZBU1RPUEVOX0NPT0tJRV9NQVgpXFxubmV0L2lwdjQvdGNwX2lucHV0LmMtNDQ5My1cXHRcXHRtZW1jcHkoZm9jLVxcdTAwM2V2YWwsIGNvb2tpZSwgbGVuKTtcXG4tLVxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jPTcxNTI9dGNwX3Jjdl9zdGF0ZV9wcm9jZXNzKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTcyMTctXFxubmV0L2lwdjQvdGNwX2lucHV0LmM6NzIxODpcXHRcXHRTS0JfRFJfU0VUKHJlYXNvbiwgVENQX0ZBU1RPUEVOKTtcXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy03MjE5LVxcdFxcdGlmICghdGNwX2NoZWNrX3JlcShzaywgc2tiLCByZXEsIHRydWUsIFxcdTAwMjZyZXFfc3RvbGVuLCBcXHUwMDI2cmVhc29uKSlcXG4tLVxcbm5ldC9pcHY0L3RjcF9tZXRyaWNzLmM9NjE4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSB0Y3BfbWV0cmljc19ubF9wb2xpY3lbVENQX01FVFJJQ1NfQVRUUl9NQVggKyAxXSA9IHtcXG4tLVxcbm5ldC9pcHY0L3RjcF9tZXRyaWNzLmMtNjM4LVxcdFtUQ1BfTUVUUklDU19BVFRSX0ZPUEVOX0NPT0tJRV1cXHQ9IHsgLnR5cGUgPSBOTEFfQklOQVJZLFxcbm5ldC9pcHY0L3RjcF9tZXRyaWNzLmM6NjM5OlxcdFxcdFxcdFxcdFxcdCAgICAubGVuID0gVENQX0ZBU1RPUEVOX0NPT0tJRV9NQVgsIH0sXFxubmV0L2lwdjQvdGNwX21ldHJpY3MuYy02NDAtI2VuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA2OjQ4OjU1Ljc5NjE4MTc5N1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTQ2NzUxMjY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXMsIHByZXNlbnRlZCBhcyBpZiBJJ20gYW5hbHl6aW5nIHRoZSBzaXR1YXRpb246XG5cbioqVENQIEZhc3QgT3BlbiBDb25maWd1cmF0aW9uIC0gTGV0J3MgRGlnIERlZXBlcioqXG5cblJpZ2h0LCBzbyBUQ1AgRmFzdCBPcGVuIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBpbiB0aGUga2VybmVsLCB0aGF0J3Mgd2hhdCBJJ20gc2VlaW5nLiBCdXQgaGFuZyBvbiwgdGhpcyBpcyBpbnRlcmVzdGluZy4gSSBkb24ndCByZWNhbGwgc2VlaW5nIGEgZGVkaWNhdGVkIGBDT05GSUdfVENQX0ZBU1RPUEVOYCBmbGFnLiBUaGF0J3MgYSBsaXR0bGUgdW51c3VhbCwgY29uc2lkZXJpbmcgaG93IGNvbW1vbiBpdCBpcyB0byBoYXZlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gTWF5YmUgaXQncyBzdWJ0bHkgZW5hYmxlZCB0aHJvdWdoIGFub3RoZXIgcmVsYXRlZCBvcHRpb24/IE9yIHBlcmhhcHMgaXQncyBiYWtlZCBpbnRvIGEgYnJvYWRlciBUQ1AgZmVhdHVyZSBzZXQgd2l0aG91dCBhIGRpcmVjdCB0b2dnbGU/IExldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGUga2VybmVsIGNvbmZpZyBmaWxlcyBmb3IgYW55dGhpbmcgZXZlbiByZW1vdGVseSByZWxhdGVkLCBqdXN0IGluIGNhc2UuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIHNvbWUgc3VidGxlIG51YW5jZSBpbiBpdHMgY29uZmlndXJhdGlvbi4gTGV0J3Mgc2VlIGlmIGEgc2ltcGxlIHNlYXJjaCBoZWxwcyB1bmNvdmVyIGFueSBjbHVlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjkzMSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA2OjQ4OjU4Ljc0MjkzNjA5NFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjYwNzUzMzUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19UQ1BfRkFTVE9QRU5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNjo0ODo1OC44MDkwMTkxOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDQzMjkyMzU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgRm9jdXM6IGBpbmV0X3JlcXNrX2Nsb25lYCBhbmQgaXRzIENhbGxlcnMqKlxuXG5BbHJpZ2h0LCBzbyB0aGVyZSdzIG5vIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZmlsZSB0byB3b3JyeSBhYm91dCBoZXJlLCBnb29kLiBUaGlzIHBhdGNoIGlzIG1vZGlmeWluZyB0aGUgYGluZXRfcmVxc2tfY2xvbmVgIGZ1bmN0aW9uLCB3aGljaCBpcyBjYWxsZWQgZHVyaW5nIHJlcXVlc3Qgc29ja2V0IGNsb25pbmcuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGlkZW50aWZ5IHRoZSBmdW5jdGlvbnMgdGhhdCBjYWxsIGBpbmV0X3JlcXNrX2Nsb25lYCwgYXMgdGhvc2UgYXJlIHRoZSBrZXkgYXJlYXMgZm9yIGZ1enppbmcuIFNpbmNlIGBpbmV0X3JlcXNrX2Nsb25lYCBpcyBkZWNsYXJlZCBzdGF0aWMsIEknbGwgbmVlZCB0byBsb29rIGF0IGFsbCBpdHMgY2FsbCBzaXRlcyB0byB1bmRlcnN0YW5kIHdoZXJlIGl0J3MgYmVpbmcgdXNlZC5cblxuTGV0J3Mgc2VlLi4uIGl0J3MgY2FsbGVkIGJ5IGByZXFza190aW1lcl9oYW5kbGVyYCwgYGluZXRfY3NrX2NvbXBsZXRlX2hhc2hkYW5jZWAsIGFuZCBgaW5ldF9jc2tfbGlzdGVuX3N0b3BgLiBIbW0sIGByZXFza190aW1lcl9oYW5kbGVyYCBpcyBhIHRpbWVyIGhhbmRsZXIsIHdoaWNoIGNvdWxkIGJlIGludGVyZXN0aW5nIGZyb20gYSB0aW1pbmcgcGVyc3BlY3RpdmUuIEhvd2V2ZXIsIGBpbmV0X2Nza19jb21wbGV0ZV9oYXNoZGFuY2VgIGlzIGNhbGxlZCBmcm9tIGB0Y3BfdjRfc3luX3JlY3Zfc29ja2AgYW5kIGB0Y3BfdjZfc3luX3JlY3Zfc29ja2Agd2hpY2ggaGFuZGxlIFNZTiBwYWNrZXQgcmVjZXB0aW9uLiBUaGF0J3MgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcgYmVjYXVzZSBvZiB0aGUgcG90ZW50aWFsIGZvciBtYWxmb3JtZWQgU1lOIHBhY2tldHMsIGFuZCBzaW5jZSBpdCdzIHVzZWQgaW4gYm90aCBJUHY0IGFuZCBJUHY2LCB3ZSBoYXZlIHR3byB0YXJnZXRzIHRoZXJlLiBGaW5hbGx5LCBgaW5ldF9jc2tfbGlzdGVuX3N0b3BgIGlzIGNhbGxlZCB3aGVuIGNsb3NpbmcgYSBsaXN0ZW5pbmcgc29ja2V0LiBUaGF0IHNlZW1zIGEgYml0IGxlc3MgbGlrZWx5IHRvIGJlIGEgc291cmNlIG9mIGltbWVkaWF0ZSB2dWxuZXJhYmlsaXRpZXMgdGhhbiBTWU4gaGFuZGxpbmcsIGJ1dCB3ZSBjYW4ndCBydWxlIGl0IG91dC4gU28sIG15IHByaW1hcnkgZm9jdXMgc2hvdWxkIGJlIGBpbmV0X2Nza19jb21wbGV0ZV9oYXNoZGFuY2VgIGFuZCwgc2Vjb25kYXJpbHksIGBpbmV0X2Nza19saXN0ZW5fc3RvcGAuIE5vdywgSSBuZWVkIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgaW5ldF9jc2tfY29tcGxldGVfaGFzaGRhbmNlYCBhbmQgYGluZXRfY3NrX2xpc3Rlbl9zdG9wYCB0aGVtc2VsdmVzIHRvIGNvbmZpcm0gdGhlIGZ1enppbmcgYXR0YWNrIHN1cmZhY2UgYW5kIHBvdGVudGlhbCBmb3IgdnVsbmVyYWJpbGl0aWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjA5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA2OjQ5OjAzLjg1MjMxNDg1NloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQ2ODIxNjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW5ldF9jc2tfY29tcGxldGVfaGFzaGRhbmNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jPTEzOTM9c3RydWN0IHNvY2sgKmluZXRfY3NrX3JlcXNrX3F1ZXVlX2FkZChzdHJ1Y3Qgc29jayAqc2ssXFxuLS1cXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTE0MTYtXFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYzoxNDE3OnN0cnVjdCBzb2NrICppbmV0X2Nza19jb21wbGV0ZV9oYXNoZGFuY2Uoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc29jayAqY2hpbGQsXFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xNDE4LVxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEsIGJvb2wgb3duX3JlcSlcXG4tLVxcbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYz02ODc9c3RydWN0IHNvY2sgKnRjcF9jaGVja19yZXEoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jLTk1MS1cXHQqcmVxX3N0b2xlbiA9ICFvd25fcmVxO1xcbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYzo5NTI6XFx0cmV0dXJuIGluZXRfY3NrX2NvbXBsZXRlX2hhc2hkYW5jZShzaywgY2hpbGQsIHJlcSwgb3duX3JlcSk7XFxubmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jLTk1My1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDY6NDk6MDMuOTE3MDAxNjYyWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMTczNDc4NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkludmVzdGlnYXRpbmcgYGluZXRfY3NrX2NvbXBsZXRlX2hhc2hkYW5jZWAgVmlzaWJpbGl0eSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBpbmV0X2Nza19jb21wbGV0ZV9oYXNoZGFuY2VgLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXM6ICpJcyB0aGlzIGZ1bmN0aW9uIGV4cG9ydGVkLCBvciBpcyBpdCBhIG5vbi1zdGF0aWMsIGludGVybmFsIGhlbHBlciBmdW5jdGlvbiB3aXRoaW4gdGhlIGtlcm5lbD8qIFVuZGVyc3RhbmRpbmcgaXRzIHZpc2liaWxpdHkgaXMgY3J1Y2lhbCB0byBmaWd1cmluZyBvdXQgaG93IGl0J3MgdXNlZCBhbmQsIGNyaXRpY2FsbHksIHdoZXRoZXIgaXQncyBwYXJ0IG9mIGEgcHVibGljIEFQSSBvciBzb21ldGhpbmcgcHJpdmF0ZSB0byBhIHNwZWNpZmljIG5ldHdvcmtpbmcgc3Vic3lzdGVtLiBUaGlzIHRlbGxzIG1lIHdoZXRoZXIgSSdtIHBvdGVudGlhbGx5IGxvb2tpbmcgYXQgc29tZXRoaW5nIHRoYXQgY291bGQgYmUgcGFydCBvZiBhbiBpbnRlcmZhY2UgSSBtaWdodCBiZSBhYmxlIHRvIGxldmVyYWdlIGRpcmVjdGx5LCBvciBpZiBJIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBpbnRlcm5hbCB3b3JraW5ncyBvZiB0aGUgbmV0d29ya2luZyBzdGFjayB0byB1bmRlcnN0YW5kIGl0cyBiZWhhdmlvciBhbmQgaW1wbGljYXRpb25zLiBJdCdzIGEgZnVuZGFtZW50YWwgcXVlc3Rpb24gdGhhdCBkaXJlY3RzIHRoZSBlbnRpcmUgbGluZSBvZiBpbnF1aXJ5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTQzLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDY6NDk6MDYuOTM0MzUyNTc0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzUyNzExNSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTC4qaW5ldF9jc2tfY29tcGxldGVfaGFzaGRhbmNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDY6NDk6MDcuMDAxODg3NTFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA4Nzg4NjY1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgSSdtIHJlYWR5LiBMZXQncyBzZWUgd2hhdCB3ZSd2ZSBnb3QuIEhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyBmb3IgSGVhZGVyIFByZXNlbmNlKipcblxuQWxyaWdodCwgbXkgaW50ZXJuYWwgcHJvY2VzcyBzdGFydHMgaGVyZS4gSSdtIGltbWVkaWF0ZWx5IHNjYW5uaW5nIHRoZSB0ZXh0LiBUaGUgcHJpbWFyeSBnb2FsIGlzIHRvIGRldGVybWluZSBpZiB0aGUgcGhyYXNlIFwiTGV0J3MgY2hlY2sgaWYgaXQncyBpbiBhIGhlYWRlclwiIGlzIGNvbnRhaW5lZCB3aXRoaW4gYSBoZWFkZXIgZWxlbWVudCwgbGlrZSBhbiBIVE1MIGBcdTAwM2NoMVx1MDAzZWAgdGhyb3VnaCBgXHUwMDNjaDZcdTAwM2VgIHRhZyBvciBNYXJrZG93bidzIGAjYCBzeW50YXguIEl0J3MgYSBmdW5kYW1lbnRhbCBwYXJzaW5nIHRhc2ssIG11Y2ggbGlrZSBpbml0aWFsIHRva2VuaXphdGlvbiBpbiBsYXJnZXIgbGFuZ3VhZ2UgbW9kZWwgYXJjaGl0ZWN0dXJlcy4gVGhlIGFic2VuY2Ugb2YgYSBoZWFkZXIgc2lnbmFscyBhIGRpZmZlcmVudCBzZXQgb2Ygc3Vic2VxdWVudCBhbmFseXNpcyBhcHByb2FjaGVzLiBJZiBpdCAqaXMqIGluIGEgaGVhZGVyLCBJJ2xsIG5lZWQgdG8gcmVjb2duaXplIHRoaXMgc3RydWN0dXJhbCBlbGVtZW50IGFuZCBhZGFwdCBteSByZXNwb25zZSBhcHByb3ByaWF0ZWx5LiBUaGUgc3Vic2VxdWVudCBzdGVwcyBkZXBlbmQgZW50aXJlbHkgb24gdGhpcyBpbml0aWFsIGRldGVjdGlvbiBwaGFzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODM5MCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA2OjQ5OjEwLjA4OTc3NjM4OFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEwNDcxOTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImluZXRfY3NrX2NvbXBsZXRlX2hhc2hkYW5jZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvaW5ldF9jb25uZWN0aW9uX3NvY2suaD0yNzU9Ym9vbCBpbmV0X2Nza19yZXFza19xdWV1ZV9oYXNoX2FkZChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSk7XFxuaW5jbHVkZS9uZXQvaW5ldF9jb25uZWN0aW9uX3NvY2suaDoyNzY6c3RydWN0IHNvY2sgKmluZXRfY3NrX2NvbXBsZXRlX2hhc2hkYW5jZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBzb2NrICpjaGlsZCxcXG5pbmNsdWRlL25ldC9pbmV0X2Nvbm5lY3Rpb25fc29jay5oLTI3Ny1cXHRcXHRcXHRcXHRcXHQgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNjo0OToxMC4yMDAyNTQwMDFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ0NjYwMzM5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkNvbnNpZGVyaW5nIHRoZSBOb24tU3RhdGljIE5hdHVyZSoqXG5cbkFscmlnaHQsIHNvIHRoZSBjb3JlIGlzc3VlIGlzIHRoZSBub24tc3RhdGljIG5hdHVyZSBvZiB0aGlzIHNpdHVhdGlvbi4gSSdtIGltbWVkaWF0ZWx5IHRoaW5raW5nIGFib3V0IGhvdyB0aGF0IGR5bmFtaWMgZWxlbWVudCBpbXBhY3RzIGV2ZXJ5dGhpbmcuIFdlJ3JlIGRlYWxpbmcgd2l0aCBzb21ldGhpbmcgdGhhdCAqaXNuJ3QqIGZpeGVkLCBhbmQgdGhhdCBuZWNlc3NpdGF0ZXMgYSBtb3JlIGZsdWlkIGFuZCBwb3RlbnRpYWxseSBtb3JlIGNvbXBsZXggYXBwcm9hY2guIFdlIG5lZWQgdG8gYWNjb3VudCBmb3IgY2hhbmdpbmcgc3RhdGVzLCB2YXJpYWJsZXMsIGFuZCBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLiBJdCdzIGEgZnVuZGFtZW50YWwgc2hpZnQgaW4gcGVyc3BlY3RpdmUuIEFuZCwgZ2l2ZW4gdGhhdCBkeW5hbWljIGFzcGVjdCwgSSBpbW1lZGlhdGVseSBzdGFydCB0byB0aGluayBhYm91dCBob3cgdG8gYXBwbHkgdGhlIGxlc3NvbnMgSSd2ZSBsZWFybmVkIGZyb20gc2ltaWxhciBub24tc3RhdGljIGFyY2hpdGVjdHVyZXMuIFRoYXQgdW5kZXJzdGFuZGluZyBvZiB0aGUgdW5kZXJseWluZyBuZXR3b3JrIHN0YWNrIHdpbGwgYmUgY3JpdGljYWwuXG5cblRoZW4sIG15IG1pbmQganVtcHMgdG8gYSBzcGVjaWZpYyBmdW5jdGlvbjogYGluZXRfY3NrX2xpc3Rlbl9zdG9wYC4gSSBrbm93IHRoYXQgZnVuY3Rpb24gaXMgY3JpdGljYWxseSBpbXBvcnRhbnQgZm9yIGNsZWFubHkgc2h1dHRpbmcgZG93biBsaXN0ZW5pbmcgc29ja2V0cywgcHJldmVudGluZyByZXNvdXJjZSBsZWFrcywgYW5kIGVuc3VyaW5nIGdyYWNlZnVsIGhhbmRsaW5nIG9mIGNvbm5lY3Rpb25zLiBXaXRoIHRoaXMgbm9uLXN0YXRpYyBpc3N1ZSBpbiBtaW5kLCBJIG5lZWQgdG8gZXZhbHVhdGUgcHJlY2lzZWx5IGhvdyBgaW5ldF9jc2tfbGlzdGVuX3N0b3BgIHdpbGwgcmVhY3Qgb3IgaW50ZXJhY3Qgd2l0aCB0aGUgc2l0dWF0aW9uLiBJcyBpdCBhcHByb3ByaWF0ZSwgb3IgYXJlIHdlIGdvaW5nIHRvIG5lZWQgc29tZXRoaW5nIG1vcmU/IERvIHdlIG5lZWQgdG8gY2FsbCBpdCBhdCBhbGw/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyB0aGF0IHdlIG5lZWQgdG8gY29uc2lkZXIgaW4gdGhlIGNvbnRleHQgb2Ygb3VyIG5vbi1zdGF0aWMgc2l0dWF0aW9uPyBUaGlzIGlzIGEga2V5IHBvaW50LCBiZWNhdXNlIHRoYXQgZnVuY3Rpb24gY2FuIGJlIHRoZSBjcnVjaWFsIGVsZW1lbnQgdGhhdCBlbnN1cmVzIHN0YWJpbGl0eS4gV2UgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQgaXMgc3VmZmljaWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODcyMywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA2OjQ5OjEzLjY0Njg2MDI5N1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY5NjEzNzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW5ldF9jc2tfbGlzdGVuX3N0b3BcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L2luZXRfY29ubmVjdGlvbl9zb2NrLmg9MzExPWludCBpbmV0X2Nza19saXN0ZW5fc3RhcnQoc3RydWN0IHNvY2sgKnNrKTtcXG5pbmNsdWRlL25ldC9pbmV0X2Nvbm5lY3Rpb25fc29jay5oOjMxMjp2b2lkIGluZXRfY3NrX2xpc3Rlbl9zdG9wKHN0cnVjdCBzb2NrICpzayk7XFxuaW5jbHVkZS9uZXQvaW5ldF9jb25uZWN0aW9uX3NvY2suaC0zMTMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA2OjQ5OjEzLjcxMzgyNjkyM1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzcxNjE4Njc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXMgaWYgdGhlc2UgYXJlIG15IHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyBgaW5ldF9yZXFza19jbG9uZWAgVXNhZ2UqKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBJIHNlZSB0aGF0IHRoZSB0YXJnZXQgaXMgYSBub24tc3RhdGljIGZ1bmN0aW9uLiBUaGF0IGltbWVkaWF0ZWx5IHRyaWdnZXJzIHRoZSBcInBvdGVudGlhbCBmb3IgYnJvYWRlciB1c2FnZVwiIGFsYXJtIGJlbGxzIGluIG15IGhlYWQuIE15IG5leHQgdGhvdWdodCBpcyB0byB0cnkgYW5kIGVzdGFibGlzaCB0aGUgc2NvcGUgb2YgdGhpcyBmdW5jdGlvbi4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBhbGwgdGhlIGNhbGwgc2l0ZXMgdG8gZ2V0IGEgcHJvcGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb2YgYW55IGNoYW5nZXMuIFRoZSBrZXkgcXVlc3Rpb24gbm93IGlzOiBcIkFyZSB0aGVyZSBhbnkgb3RoZXIgY2FsbGVycyBvZiBgaW5ldF9yZXFza19jbG9uZWA/XCIgSSBuZWVkIHRvIGZpbmQgdGhlbSBhbmQgdW5kZXJzdGFuZCBob3cgaXQncyBiZWluZyB1c2VkIGFjcm9zcyB0aGUgbmV0d29yayBzdGFjay4gVGhpcyBpcyBmdW5kYW1lbnRhbCB0byBteSBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTE3MCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA2OjQ5OjE2LjQ4NTQ0OTcxMVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE4MDE1MzUyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImluZXRfcmVxc2tfY2xvbmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM9OTA0PXZvaWQgX19yZXFza19mcmVlKHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSlcXG4tLVxcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtOTEyLVxcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM6OTEzOnN0YXRpYyBzdHJ1Y3QgcmVxdWVzdF9zb2NrICppbmV0X3JlcXNrX2Nsb25lKHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSxcXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTkxNC1cXHRcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM9MTAzMz1zdGF0aWMgdm9pZCByZXFza190aW1lcl9oYW5kbGVyKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxcbi0tXFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xMDQ5LVxcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM6MTA1MDpcXHRcXHRucmVxID0gaW5ldF9yZXFza19jbG9uZShyZXEsIG5zayk7XFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xMDUxLVxcdFxcdGlmICghbnJlcSlcXG4tLVxcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM9MTQxNz1zdHJ1Y3Qgc29jayAqaW5ldF9jc2tfY29tcGxldGVfaGFzaGRhbmNlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNvY2sgKmNoaWxkLFxcbi0tXFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xNDMwLVxcdFxcdFxcdC8qIGhvbGQgYSByZWZjbnQgZm9yIHRoZSBucmVxLVxcdTAwM2Vyc2tfbGlzdGVuZXJcXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jOjE0MzE6XFx0XFx0XFx0ICogd2hpY2ggaXMgYXNzaWduZWQgaW4gaW5ldF9yZXFza19jbG9uZSgpXFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xNDMyLVxcdFxcdFxcdCAqL1xcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtMTQzMy1cXHRcXHRcXHRzb2NrX2hvbGQoc2spO1xcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM6MTQzNDpcXHRcXHRcXHRucmVxID0gaW5ldF9yZXFza19jbG9uZShyZXEsIHNrKTtcXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTE0MzUtXFx0XFx0XFx0aWYgKCFucmVxKSB7XFxuLS1cXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jPTE0NjY9dm9pZCBpbmV0X2Nza19saXN0ZW5fc3RvcChzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTE0OTAtXFx0XFx0aWYgKG5zaykge1xcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM6MTQ5MTpcXHRcXHRcXHRucmVxID0gaW5ldF9yZXFza19jbG9uZShyZXEsIG5zayk7XFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xNDkyLVxcdFxcdFxcdGlmIChucmVxKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA2OjQ5OjE2LjYwMzQ3MjY5M1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTA5NjQ2NjkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFRDUCBGYXN0IE9wZW4gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gdGFraW5nIGEgbG9vayBhdCB0aGlzIHBhdGNoIHJlbGF0ZWQgdG8gVENQIEZhc3QgT3Blbi4gSXQgc2VlbXMgbGlrZSBgaW5ldF9jc2tfY29tcGxldGVfaGFzaGRhbmNlYCBhbmQgYGluZXRfY3NrX2xpc3Rlbl9zdG9wYCBhcmUgdGhlIGtleSBlbnRyeSBwb2ludHMgSSBuZWVkIHRvIGZvY3VzIG9uIGluaXRpYWxseS4gSSBhbHNvIG5vdGljZWQgYHJlcXNrX3RpbWVyX2hhbmRsZXJgIG1lbnRpb25lZCwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIFdoaWxlIGl0J3MgYSB0aW1lciBoYW5kbGVyIGFuZCBub3QgZGlyZWN0bHkgY2FsbGVkIGJ5IGEgc3lzdGVtIGNhbGwsIGl04oCZcyB0cmlnZ2VyZWQgZHVyaW5nIFRDUCBjb25uZWN0aW9uIGhhbmRsaW5nLCBtYWtpbmcgaXQgcmVsZXZhbnQgdG8gdGhlIG92ZXJhbGwgZmxvdy4gVGhlIGJ1ZyBpdHNlbGYgYXBwZWFycyB0byBpbnZvbHZlIGEgbWlzc2VkIGFjY291bnRpbmcgdXBkYXRlOiBgZmFzdG9wZW5xLVx1MDAzZXFsZW5gIGlzbid0IHByb3Blcmx5IGNoYXJnZWQgd2hlbiBhIHJlcXVlc3Qgc29ja2V0IGlzIGNsb25lZCBmb3IgYSBUQ1AgRmFzdCBPcGVuIGxpc3RlbmVyLiBUaGlzIGlzIGEgY2xhc3NpYyBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eSBzaXR1YXRpb24sIGFuZCBpdCdzIGRlZmluaXRlbHkgc29tZXRoaW5nIEkgd2FudCB0byB0ZXN0IHRob3JvdWdobHkuXG5cbkZyb20gYSBmdW5jdGlvbmFsIHBlcnNwZWN0aXZlLCB0aGlzIHBhdGNoIHNlZW1zIGxpa2UgaXQncyB3b3J0aCB0aGUgZWZmb3J0IG9mIGZ1enppbmcuIFRoZSBnb29kIG5ld3MgaXMgdGhhdCBubyBzcGVjaWFsIGNvbmZpZ3VyYXRpb25zIGFyZSByZXF1aXJlZCBiZWNhdXNlIFRDUCBGYXN0IE9wZW4gaXMgYWxyZWFkeSBidWlsdCBpbi4gR2l2ZW4gYWxsIG9mIHRoaXMsIEknbSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZz10cnVlYC4gTXkgYEZvY3VzU3ltYm9sc2Agd2lsbCBiZSBgW1wiaW5ldF9jc2tfY29tcGxldGVfaGFzaGRhbmNlXCIsIFwiaW5ldF9jc2tfbGlzdGVuX3N0b3BcIl1gLCBhbmQgSSdsbCBrZWVwIGBFbmFibGVDb25maWdzYCBlbXB0eSBmb3Igbm93LCBhcyBJIGRvbid0IHNlZSBhbnkgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5OTc0LCJPdXRwdXRUb2tlbnMiOjkzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA2OjQ5OjIxLjcxMzEyNDM2NloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzNzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaW5ldF9jc2tfY29tcGxldGVfaGFzaGRhbmNlXCIsXG4gICAgXCJpbmV0X2Nza19saXN0ZW5fc3RvcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFRDUCBGYXN0IE9wZW4gcmVxdWVzdCBzb2NrZXQgY2xvbmluZyBsb2dpYyBpbiBpbmV0X3JlcXNrX2Nsb25lIHRvIHByb3Blcmx5IGNoYXJnZSB0aGUgZmFzdG9wZW4gcXVldWUgbGVuZ3RoLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgbG9naWMgdGhhdCBoYW5kbGVzIFRDUCBjb25uZWN0aW9ucyBhbmQgbGlzdGVuaW5nIHNvY2tldHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaW5ldF9jc2tfY29tcGxldGVfaGFzaGRhbmNlXCIsXG4gICAgXCJpbmV0X2Nza19saXN0ZW5fc3RvcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFRDUCBGYXN0IE9wZW4gcmVxdWVzdCBzb2NrZXQgY2xvbmluZyBsb2dpYyBpbiBpbmV0X3JlcXNrX2Nsb25lIHRvIHByb3Blcmx5IGNoYXJnZSB0aGUgZmFzdG9wZW4gcXVldWUgbGVuZ3RoLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgbG9naWMgdGhhdCBoYW5kbGVzIFRDUCBjb25uZWN0aW9ucyBhbmQgbGlzdGVuaW5nIHNvY2tldHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow9jxcf[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-03 06:22:53 +0000 UTC FinishedAt: 2026-08-03 06:49:22 +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": "af39eb111ce6b5eba9c08513b62c4868eb7e7fd5", "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": "af39eb111ce6b5eba9c08513b62c4868eb7e7fd5", "config_name": "upstream-apparmor-kasan.config", "series_id": "8b8d85be-8618-4753-9989-3e086bb3f303" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "inet_csk_complete_hashdance", "inet_csk_listen_stop" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAzIDA2OjQ4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aW5ldF9jc2tfY29tcGxldGVfaGFzaGRhbmNlJiMzNDssCiAgICAmIzM0O2luZXRfY3NrX2xpc3Rlbl9zdG9wJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFRDUCBGYXN0IE9wZW4gcmVxdWVzdCBzb2NrZXQgY2xvbmluZyBsb2dpYyBpbiBpbmV0X3JlcXNrX2Nsb25lIHRvIHByb3Blcmx5IGNoYXJnZSB0aGUgZmFzdG9wZW4gcXVldWUgbGVuZ3RoLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgbG9naWMgdGhhdCBoYW5kbGVzIFRDUCBjb25uZWN0aW9ucyBhbmQgbGlzdGVuaW5nIHNvY2tldHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDY6NDg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxNmY3MzE2MDBlMTBlYWZlZGUxMWQ5ODlmNjFiOWQyY2UxYmE3ZTA0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAwNjo0ODozMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jIGIvbmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suY1xuaW5kZXggNTY5MDJiYmE1NDgzOC4uNjI1NzQ1OWJjZWUyNCAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmNcbkBAIC05NDMsMTEgJiM0Mzs5NDMsMjMgQEAgc3RhdGljIHN0cnVjdCByZXF1ZXN0X3NvY2sgKmluZXRfcmVxc2tfY2xvbmUoc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxLFxuIFxuIFx0bnJlcS1cdTAwM2Vyc2tfbGlzdGVuZXIgPSBzaztcbiBcbi1cdC8qIFdlIG5lZWQgbm90IGFjcXVpcmUgZmFzdG9wZW5xLVx1MDAzZWxvY2tcbi1cdCAqIGJlY2F1c2UgdGhlIGNoaWxkIHNvY2tldCBpcyBsb2NrZWQgaW4gaW5ldF9jc2tfbGlzdGVuX3N0b3AoKS5cbi1cdCAqL1xuLVx0aWYgKHNrLVx1MDAzZXNrX3Byb3RvY29sID09IElQUFJPVE9fVENQIFx1MDAyNlx1MDAyNiB0Y3BfcnNrKG5yZXEpLVx1MDAzZXRmb19saXN0ZW5lcilcbiYjNDM7XHRpZiAoc2stXHUwMDNlc2tfcHJvdG9jb2wgPT0gSVBQUk9UT19UQ1AgXHUwMDI2XHUwMDI2IHRjcF9yc2sobnJlcSktXHUwMDNldGZvX2xpc3RlbmVyKSB7XG4mIzQzO1x0XHRzdHJ1Y3QgZmFzdG9wZW5fcXVldWUgKmZhc3RvcGVucTtcbiYjNDM7XG4mIzQzO1x0XHQvKiByZXFza19mYXN0b3Blbl9yZW1vdmUoKSB3aWxsIHVuY2hhcmdlIG5yZXEtXHUwMDNlcnNrX2xpc3RlbmVyLFxuJiM0MztcdFx0ICogdGhhdCBpcyBAc2ssIHNvIGNoYXJnZSBpdCBoZXJlLiAgVW5saWtlIHRoZSBsaXN0ZW5lclxuJiM0MztcdFx0ICogYmVpbmcgY2xvc2VkLCBAc2sgaXMgbGl2ZSBhbmQgbmVlZHMgaXRzIGxvY2suXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdGZhc3RvcGVucSA9IFx1MDAyNmluZXRfY3NrKHNrKS1cdTAwM2VpY3NrX2FjY2VwdF9xdWV1ZS5mYXN0b3BlbnE7XG4mIzQzO1x0XHRzcGluX2xvY2tfYmgoXHUwMDI2ZmFzdG9wZW5xLVx1MDAzZWxvY2spO1xuJiM0MztcdFx0ZmFzdG9wZW5xLVx1MDAzZXFsZW4mIzQzOyYjNDM7O1xuJiM0MztcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2ZmFzdG9wZW5xLVx1MDAzZWxvY2spO1xuJiM0MztcbiYjNDM7XHRcdC8qIFdlIG5lZWQgbm90IGFjcXVpcmUgZmFzdG9wZW5xLVx1MDAzZWxvY2tcbiYjNDM7XHRcdCAqIGJlY2F1c2UgdGhlIGNoaWxkIHNvY2tldCBpcyBsb2NrZWQgaW4gaW5ldF9jc2tfbGlzdGVuX3N0b3AoKS5cbiYjNDM7XHRcdCAqL1xuIFx0XHRyY3VfYXNzaWduX3BvaW50ZXIodGNwX3NrKG5yZXEtXHUwMDNlc2spLVx1MDAzZWZhc3RvcGVuX3JzaywgbnJlcSk7XG4mIzQzO1x0fVxuIFxuIFx0cmV0dXJuIG5yZXE7XG4gfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA2OjQ4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2luZXRfY3NrX2NvbXBsZXRlX2hhc2hkYW5jZSYjMzQ7LAogICAgJiMzNDtpbmV0X2Nza19saXN0ZW5fc3RvcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBUQ1AgRmFzdCBPcGVuIHJlcXVlc3Qgc29ja2V0IGNsb25pbmcgbG9naWMgaW4gaW5ldF9yZXFza19jbG9uZSB0byBwcm9wZXJseSBjaGFyZ2UgdGhlIGZhc3RvcGVuIHF1ZXVlIGxlbmd0aC4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGxvZ2ljIHRoYXQgaGFuZGxlcyBUQ1AgY29ubmVjdGlvbnMgYW5kIGxpc3RlbmluZyBzb2NrZXRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTZmNzMxNjAwZTEwZWFmZWRlMTFkOTg5ZjYxYjlkMmNlMWJhN2UwNApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDMgMDY6NDg6MzMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jIGIvbmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYwppbmRleCA1NjkwMmJiYTU0ODM4Li42MjU3NDU5YmNlZTI0IDEwMDY0NAotLS0gYS9uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMKQEAgLTk0MywxMSAmIzQzOzk0MywyMyBAQCBzdGF0aWMgc3RydWN0IHJlcXVlc3Rfc29jayAqaW5ldF9yZXFza19jbG9uZShzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEsCiAKIAlucmVxLSZndDtyc2tfbGlzdGVuZXIgPSBzazsKIAotCS8qIFdlIG5lZWQgbm90IGFjcXVpcmUgZmFzdG9wZW5xLSZndDtsb2NrCi0JICogYmVjYXVzZSB0aGUgY2hpbGQgc29ja2V0IGlzIGxvY2tlZCBpbiBpbmV0X2Nza19saXN0ZW5fc3RvcCgpLgotCSAqLwotCWlmIChzay0mZ3Q7c2tfcHJvdG9jb2wgPT0gSVBQUk9UT19UQ1AgJmFtcDsmYW1wOyB0Y3BfcnNrKG5yZXEpLSZndDt0Zm9fbGlzdGVuZXIpCiYjNDM7CWlmIChzay0mZ3Q7c2tfcHJvdG9jb2wgPT0gSVBQUk9UT19UQ1AgJmFtcDsmYW1wOyB0Y3BfcnNrKG5yZXEpLSZndDt0Zm9fbGlzdGVuZXIpIHsKJiM0MzsJCXN0cnVjdCBmYXN0b3Blbl9xdWV1ZSAqZmFzdG9wZW5xOwomIzQzOwomIzQzOwkJLyogcmVxc2tfZmFzdG9wZW5fcmVtb3ZlKCkgd2lsbCB1bmNoYXJnZSBucmVxLSZndDtyc2tfbGlzdGVuZXIsCiYjNDM7CQkgKiB0aGF0IGlzIEBzaywgc28gY2hhcmdlIGl0IGhlcmUuICBVbmxpa2UgdGhlIGxpc3RlbmVyCiYjNDM7CQkgKiBiZWluZyBjbG9zZWQsIEBzayBpcyBsaXZlIGFuZCBuZWVkcyBpdHMgbG9jay4KJiM0MzsJCSAqLwomIzQzOwkJZmFzdG9wZW5xID0gJmFtcDtpbmV0X2NzayhzayktJmd0O2ljc2tfYWNjZXB0X3F1ZXVlLmZhc3RvcGVucTsKJiM0MzsJCXNwaW5fbG9ja19iaCgmYW1wO2Zhc3RvcGVucS0mZ3Q7bG9jayk7CiYjNDM7CQlmYXN0b3BlbnEtJmd0O3FsZW4mIzQzOyYjNDM7OwomIzQzOwkJc3Bpbl91bmxvY2tfYmgoJmFtcDtmYXN0b3BlbnEtJmd0O2xvY2spOwomIzQzOwomIzQzOwkJLyogV2UgbmVlZCBub3QgYWNxdWlyZSBmYXN0b3BlbnEtJmd0O2xvY2sKJiM0MzsJCSAqIGJlY2F1c2UgdGhlIGNoaWxkIHNvY2tldCBpcyBsb2NrZWQgaW4gaW5ldF9jc2tfbGlzdGVuX3N0b3AoKS4KJiM0MzsJCSAqLwogCQlyY3VfYXNzaWduX3BvaW50ZXIodGNwX3NrKG5yZXEtJmd0O3NrKS0mZ3Q7ZmFzdG9wZW5fcnNrLCBucmVxKTsKJiM0MzsJfQogCiAJcmV0dXJuIG5yZXE7CiB9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA2OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMTYKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEltcGFjdCBvZiBhIFRDUCBGYXN0IE9wZW4gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIHRvdWNoaW5nIGBuZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jYC4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBtb2RpZnlpbmcgdGhlIGBpbmV0X3JlcXNrX2Nsb25lYCBmdW5jdGlvbi4gVGhlIGtleSBoZXJlIGlzIHRoZSBhZGRpdGlvbiBvZiBgZmFzdG9wZW5xLSZndDtxbGVuYCBjaGFyZ2luZy4gSXQgc2VlbXMgbGlrZSB3ZSYjMzk7cmUgYWNjb3VudGluZyBmb3IgVENQIEZhc3QgT3BlbiByZXF1ZXN0cyB3aGVuIGEgbmV3IHJlcXVlc3Qgc29ja2V0IGlzIGJlaW5nIGNsb25lZC4KCk15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gZHJpbGwgZG93biBvbiBgaW5ldF9yZXFza19jbG9uZWAuIEkgbmVlZCB0byBmdWxseSB1bmRlcnN0YW5kIGl0cyBmdW5jdGlvbiBhbmQsIGltcG9ydGFudGx5LCB3aGF0IHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBuZXcgYWNjb3VudGluZyBhcmUuIEkmIzM5O2xsIG5lZWQgdG8gY2FyZWZ1bGx5IHJldmlldyB0aGUgY29kZSBhbmQgY29uc2lkZXIgaXRzIGltcGFjdCBvbiByZXNvdXJjZSBtYW5hZ2VtZW50LCBwYXJ0aWN1bGFybHkgcXVldWUgbGVuZ3RoIGxpbWl0cy4KClRoZW4sIEkmIzM5O2xsIGFic29sdXRlbHkgbmVlZCB0byBpZGVudGlmeSBhbGwgdGhlIGNhbGxlcnMgb2YgYGluZXRfcmVxc2tfY2xvbmVgLiBUaGlzIGlzIGNyaXRpY2FsLiBVbmRlcnN0YW5kaW5nICp3aGVyZSogYW5kICpob3cqIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgdXNlZCB3aWxsIHRlbGwgbWUgdGhlIG92ZXJhbGwgc2NvcGUgb2YgdGhlIGNoYW5nZSBhbmQgd2hhdCBwYXJ0cyBvZiB0aGUgbmV0d29ya2luZyBzdGFjayB3aWxsIGJlIGFmZmVjdGVkLiBJJiMzOTtsbCBuZWVkIHRvIHRoaW5rIGFib3V0IHBvdGVudGlhbCBpbnRlcmFjdGlvbnMgd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgVENQIHN0YWNrIGFuZCBjb25zaWRlciBlZGdlIGNhc2VzLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgcGxhY2Ugd2hlcmUgdGhlc2UgY2FsbHMgbWlnaHQgY3JlYXRlIHVuaW50ZW5kZWQgY29uc2VxdWVuY2VzIG9yIHZ1bG5lcmFiaWxpdGllcy4gRXNzZW50aWFsbHksIEkgbmVlZCB0aGUgZnVsbCBwaWN0dXJlIGJlZm9yZSBJIGNhbiBldmFsdWF0ZSB0aGUgcGF0Y2ggcHJvcGVybHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDY6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW5ldF9yZXFza19jbG9uZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jPTkwND12b2lkIF9fcmVxc2tfZnJlZShzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXG4tLVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy05MTItXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jOjkxMzpzdGF0aWMgc3RydWN0IHJlcXVlc3Rfc29jayAqaW5ldF9yZXFza19jbG9uZShzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEsXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTkxNC1cdFx0XHRcdFx0ICAgICBzdHJ1Y3Qgc29jayAqc2spXG4tLVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYz0xMDMzPXN0YXRpYyB2b2lkIHJlcXNrX3RpbWVyX2hhbmRsZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG4tLVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xMDQ5LVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYzoxMDUwOlx0XHRucmVxID0gaW5ldF9yZXFza19jbG9uZShyZXEsIG5zayk7XG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTEwNTEtXHRcdGlmICghbnJlcSlcbi0tXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jPTE0MTc9c3RydWN0IHNvY2sgKmluZXRfY3NrX2NvbXBsZXRlX2hhc2hkYW5jZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBzb2NrICpjaGlsZCxcbi0tXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTE0MzAtXHRcdFx0LyogaG9sZCBhIHJlZmNudCBmb3IgdGhlIG5yZXEtXHUwMDNlcnNrX2xpc3RlbmVyXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jOjE0MzE6XHRcdFx0ICogd2hpY2ggaXMgYXNzaWduZWQgaW4gaW5ldF9yZXFza19jbG9uZSgpXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTE0MzItXHRcdFx0ICovXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTE0MzMtXHRcdFx0c29ja19ob2xkKHNrKTtcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM6MTQzNDpcdFx0XHRucmVxID0gaW5ldF9yZXFza19jbG9uZShyZXEsIHNrKTtcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtMTQzNS1cdFx0XHRpZiAoIW5yZXEpIHtcbi0tXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jPTE0NjY9dm9pZCBpbmV0X2Nza19saXN0ZW5fc3RvcChzdHJ1Y3Qgc29jayAqc2spXG4tLVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xNDkwLVx0XHRpZiAobnNrKSB7XG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jOjE0OTE6XHRcdFx0bnJlcSA9IGluZXRfcmVxc2tfY2xvbmUocmVxLCBuc2spO1xubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xNDkyLVx0XHRcdGlmIChucmVxKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDY6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI2OQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDEwNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENvbnRleHQgb2YgYGluZXRfcmVxc2tfY2xvbmVgKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgaW5ldF9yZXFza19jbG9uZWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB0aGlzIGlzIGNvcmUga2VybmVsIFRDUC9JUHY0IGNvbm5lY3Rpb24gc3R1ZmYuIEkgc2VlIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGByZXFza190aW1lcl9oYW5kbGVyYCwgYGluZXRfY3NrX2NvbXBsZXRlX2hhc2hkYW5jZWAsIGFuZCBgaW5ldF9jc2tfbGlzdGVuX3N0b3BgIC0gYWxsIGtleSBmdW5jdGlvbnMgaW4gdGhlIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCBhbmQgdGVhcmRvd24gcHJvY2Vzcy4gVGhpcyBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBjcml0aWNhbCBsb2dpYy4gTXkgbmV4dCBzdGVwLCBhcyBhbHdheXMsIGlzIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBmdW5jdGlvbiBpcyBkZXBlbmRlbnQgb24gYW55IHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9ucy4gSSYjMzk7bSBnb2luZyB0byB0cmFjayBkb3duIHRoZSBzb3VyY2UgZmlsZTsgbG9va3MgbGlrZSBpdCYjMzk7cyBpbiBgbmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suY2AuIE5vdywgbGV0JiMzOTtzIGp1c3QgZ3JlcCB0aGUgYE1ha2VmaWxlYCBpbiB0aGF0IGRpcmVjdG9yeSB0byBzZWUgaWYgaXQgaGFzIGFueSBzcGVjaWFsIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA2OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2luZXRfY29ubmVjdGlvbl9zb2NrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGU9Nj1vYmoteSAgICAgOj0gcm91dGUubyBpbmV0cGVlci5vIHByb3RvY29sLm8gXFxcbi0tXG5uZXQvaXB2NC9NYWtlZmlsZS04LVx0ICAgICBpcF9vdXRwdXQubyBpcF9zb2NrZ2x1ZS5vIGluZXRfaGFzaHRhYmxlcy5vIFxcXG5uZXQvaXB2NC9NYWtlZmlsZTo5Olx0ICAgICBpbmV0X3RpbWV3YWl0X3NvY2subyBpbmV0X2Nvbm5lY3Rpb25fc29jay5vIFxcXG5uZXQvaXB2NC9NYWtlZmlsZS0xMC1cdCAgICAgdGNwLm8gdGNwX2lucHV0Lm8gdGNwX291dHB1dC5vIHRjcF90aW1lci5vIHRjcF9pcHY0Lm8gXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNjo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzI2CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24sIGdpdmVuIG15IGV4cGVydGlzZToKCioqVENQIEZhc3QgT3BlbiBhbmQgSVB2NCBDb21waWxhdGlvbiBJbnF1aXJ5KioKCkFscmlnaHQsIHNvIHRoZSBjb2RlJiMzOTtzIGNvbXBpbGVkIHVuY29uZGl0aW9uYWxseSBmb3IgSVB2NCDigJMgYSBiaXQgb2YgYSBkZWZhdWx0LCBwZXJoYXBzLCBidXQgaXQmIzM5O3MgdGhlIGZvdW5kYXRpb24gd2UgbmVlZCB0byBhZGRyZXNzLiBUaGlzIGltcGxpZXMgSVB2NCBzdXBwb3J0IGlzIGJha2VkIGluLCB3aGljaCBpc24mIzM5O3QgdW5leHBlY3RlZC4gTm93LCB0aGUgY29udGV4dCBpbW1lZGlhdGVseSBicmluZ3MgVENQIEZhc3QgT3BlbiB0byBtaW5kLCBhbmQgSSBzdXNwZWN0IGEgcmVsYXRpb25zaGlwIGhlcmUuIEl0JiMzOTtzIGFsbW9zdCBndWFyYW50ZWVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHR3byBhcmUgY29ubmVjdGVkIHdpdGhpbiB0aGlzIHNwZWNpZmljIGltcGxlbWVudGF0aW9uLgoKTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIHRoZW4gYmVjb21lczogaXMgdGhlcmUgYSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHNldHRpbmcsIGEgZmxhZywgb3IgYSBrbm9iIHNvbWV3aGVyZSwgdGhhdCBleHBsaWNpdGx5IGNvbnRyb2xzIG9yIGVuYWJsZXMvZGlzYWJsZXMgVENQIEZhc3QgT3BlbiBpbiB0aGlzIGJ1aWxkPyBPciwgaXMgaXRzIHN1cHBvcnQgYXNzdW1lZCwgYXV0b21hdGljYWxseSB0cmlnZ2VyZWQgaWYgdGhlIHVuZGVybHlpbmcgc3lzdGVtIHN1cHBvcnRzIGl0IGFuZCB0aGUgYXBwcm9wcmlhdGUgZGF0YSBpcyBwcmVzZW50PyBUaGlzIGlzIHRoZSBjb3JlIGlzc3VlIHRoYXQgSSBuZWVkIHRvIHJlc29sdmUsIGFuZCB0aGlzIHdpbGwgZGV0ZXJtaW5lIGhvdyBkZWVwbHkgSSB3aWxsIGRpdmUgaW50byB0aGlzIHNwZWNpZmljIGltcGxlbWVudGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA2OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7VENQX0ZBU1RPUEVOJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDY6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDAwNAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRhY2tsaW5nIHRoaXMgaXNzdWUsIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnRpc2U6CgoqKkNoZWNraW5nIHRoZSBUQ1AgRmFzdCBPcGVuIEltcGxlbWVudGF0aW9uKioKClJpZ2h0LCBzbyBJJiMzOTttIHRoaW5raW5nLCBiYXNlZCBvbiB3aGF0IEkmIzM5O3ZlIGVuY291bnRlcmVkLCB0aGF0IHRoZSBiZWhhdmlvciBJJiMzOTttIHNlZWluZyBpcyBsaWtlbHkgcmVsYXRlZCB0byBob3cgVENQIEZhc3QgT3BlbiBpcyBoYW5kbGVkLiBNeSBndXQgZmVlbGluZyBpcyBsZWFkaW5nIG1lIHRvIHRoZSBrZXJuZWwtbGV2ZWwgaW1wbGVtZW50YXRpb24uIEdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIHByb2JsZW0sIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgRmFzdCBPcGVuIG9wdGlvbnMgYXJlIGludGVycHJldGVkIGFuZCB1dGlsaXplZC4gVGhlcmVmb3JlLCBteSBpbW1lZGlhdGUgaW5jbGluYXRpb24gaXMgdG8gZXhhbWluZSB0aGUgc291cmNlIGNvZGUsIHNwZWNpZmljYWxseSBzb21ldGhpbmcgbGlrZSBgbmV0L2lwdjQvdGNwX2Zhc3RvcGVuLmNgLCBvciBhIHNpbWlsYXIgZmlsZSB3aXRoaW4gdGhlIG5ldHdvcmtpbmcgc3RhY2suIFRoYXQmIzM5O3MgdGhlIGZpcnN0IHBsYWNlIEkmIzM5O2QgbG9vayB0byBzZWUgdGhlIGRldGFpbGVkIGhhbmRsaW5nIG9mIHRoZSBGYXN0IE9wZW4gZnVuY3Rpb25hbGl0eS4gSSBuZWVkIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIEZhc3QgT3BlbiBiZWhhdmlvciB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBpc3N1ZXMgYXJlIG9jY3VycmluZy4gRnJvbSBoZXJlLCBJIGNhbiBleGFtaW5lIHRoZSBjYWxsIHN0YWNrLCBkZWJ1ZyB0aGUgcGFja2V0cywgb3IgaW5zdHJ1bWVudCB0aGUgbmV0d29yayBzdGFjayB0byBwaW5wb2ludCB0aGUgaXNzdWVzIGF0IGhhbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA2OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1RDUF9GQVNUT1BFTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9hZl9pbmV0LmM9MTk4PWludCBfX2luZXRfbGlzdGVuX3NrKHN0cnVjdCBzb2NrICpzaywgaW50IGJhY2tsb2cpXG4tLVxubmV0L2lwdjQvYWZfaW5ldC5jLTIxMC1cdGlmIChvbGRfc3RhdGUgIT0gVENQX0xJU1RFTikge1xubmV0L2lwdjQvYWZfaW5ldC5jOjIxMTpcdFx0LyogRW5hYmxlIFRGTyB3L28gcmVxdWlyaW5nIFRDUF9GQVNUT1BFTiBzb2NrZXQgb3B0aW9uLlxubmV0L2lwdjQvYWZfaW5ldC5jLTIxMi1cdFx0ICogTm90ZSB0aGF0IG9ubHkgVENQIHNvY2tldHMgKFNPQ0tfU1RSRUFNKSB3aWxsIHJlYWNoIGhlcmUuXG4tLVxubmV0L2lwdjQvYWZfaW5ldC5jPTYzMT1pbnQgX19pbmV0X3N0cmVhbV9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICp1YWRkcixcbi0tXG5uZXQvaXB2NC9hZl9pbmV0LmMtNjQwLVx0ICogc2sgaXMgYSBUQ1AgZmFzdG9wZW4gYWN0aXZlIHNvY2tldCBhbmRcbm5ldC9pcHY0L2FmX2luZXQuYzo2NDE6XHQgKiBUQ1BfRkFTVE9QRU5fQ09OTkVDVCBzb2Nrb3B0IGlzIHNldCBhbmRcbm5ldC9pcHY0L2FmX2luZXQuYy02NDItXHQgKiB3ZSBhbHJlYWR5IGhhdmUgYSB2YWxpZCBjb29raWUgZm9yIHRoaXMgc29ja2V0LlxuLS1cbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jPTI5MT1zdGF0aWMgaW50IHByb2NfdGNwX2Zhc3RvcGVuX2tleShjb25zdCBzdHJ1Y3QgY3RsX3RhYmxlICp0YWJsZSwgaW50IHdyaXRlLFxuLS1cbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jLTI5OC1cdCAqL1xubmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmM6Mjk5Olx0c3RydWN0IGN0bF90YWJsZSB0YmwgPSB7IC5tYXhsZW4gPSAoKFRDUF9GQVNUT1BFTl9LRVlfTEVOR1RIICpcbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jOjMwMDpcdFx0XHRcdFx0ICAgIDIgKiBUQ1BfRkFTVE9QRU5fS0VZX01BWCkgJiM0Mztcbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jOjMwMTpcdFx0XHRcdFx0ICAgIChUQ1BfRkFTVE9QRU5fS0VZX01BWCAqIDUpKSB9O1xubmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmM6MzAyOlx0dTMyIHVzZXJfa2V5W1RDUF9GQVNUT1BFTl9LRVlfQlVGX0xFTkdUSCAvIHNpemVvZih1MzIpXTtcbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jOjMwMzpcdF9fbGUzMiBrZXlbVENQX0ZBU1RPUEVOX0tFWV9CVUZfTEVOR1RIIC8gc2l6ZW9mKF9fbGUzMildO1xubmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmMtMzA0LVx0Y2hhciAqYmFja3VwX2RhdGE7XG4tLVxubmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmMtMzEyLVx0aWYgKCFuX2tleXMpIHtcbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jOjMxMzpcdFx0bWVtc2V0KFx1MDAyNmtleVswXSwgMCwgVENQX0ZBU1RPUEVOX0tFWV9MRU5HVEgpO1xubmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmMtMzE0LVx0XHRuX2tleXMgPSAxO1xuLS1cbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jPTYyNz1zdGF0aWMgc3RydWN0IGN0bF90YWJsZSBpcHY0X25ldF90YWJsZVtdID0ge1xuLS1cbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jLTExMzktXHRcdCAqL1xubmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmM6MTE0MDpcdFx0Lm1heGxlblx0XHQ9ICgoVENQX0ZBU1RPUEVOX0tFWV9MRU5HVEggKlxubmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmM6MTE0MTpcdFx0XHRcdCAgIDIgKiBUQ1BfRkFTVE9QRU5fS0VZX01BWCkgJiM0Mztcbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jOjExNDI6XHRcdFx0XHQgICAoVENQX0ZBU1RPUEVOX0tFWV9NQVggKiA1KSksXG5uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuYy0xMTQzLVx0XHQucHJvY19oYW5kbGVyXHQ9IHByb2NfdGNwX2Zhc3RvcGVuX2tleSxcbi0tXG5uZXQvaXB2NC90Y3AuYz0zODM3PWludCBkb190Y3Bfc2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXG4tLVxubmV0L2lwdjQvdGNwLmMtMzg4NC1cdH1cbm5ldC9pcHY0L3RjcC5jOjM4ODU6XHRjYXNlIFRDUF9GQVNUT1BFTl9LRVk6IHtcbm5ldC9pcHY0L3RjcC5jOjM4ODY6XHRcdF9fdTgga2V5W1RDUF9GQVNUT1BFTl9LRVlfQlVGX0xFTkdUSF07XG5uZXQvaXB2NC90Y3AuYy0zODg3LVx0XHRfX3U4ICpiYWNrdXBfa2V5ID0gTlVMTDtcbi0tXG5uZXQvaXB2NC90Y3AuYy0zODkxLVx0XHQgKi9cbm5ldC9pcHY0L3RjcC5jOjM4OTI6XHRcdGlmIChvcHRsZW4gIT0gVENQX0ZBU1RPUEVOX0tFWV9MRU5HVEggXHUwMDI2XHUwMDI2XG5uZXQvaXB2NC90Y3AuYzozODkzOlx0XHQgICAgb3B0bGVuICE9IFRDUF9GQVNUT1BFTl9LRVlfQlVGX0xFTkdUSClcbm5ldC9pcHY0L3RjcC5jLTM4OTQtXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxubmV0L2lwdjQvdGNwLmMtMzg5OC1cbm5ldC9pcHY0L3RjcC5jOjM4OTk6XHRcdGlmIChvcHRsZW4gPT0gVENQX0ZBU1RPUEVOX0tFWV9CVUZfTEVOR1RIKVxubmV0L2lwdjQvdGNwLmM6MzkwMDpcdFx0XHRiYWNrdXBfa2V5ID0ga2V5ICYjNDM7IFRDUF9GQVNUT1BFTl9LRVlfTEVOR1RIO1xubmV0L2lwdjQvdGNwLmMtMzkwMS1cbi0tXG5uZXQvaXB2NC90Y3AuYy00MDk3LSNlbmRpZlxubmV0L2lwdjQvdGNwLmM6NDA5ODpcdGNhc2UgVENQX0ZBU1RPUEVOOlxubmV0L2lwdjQvdGNwLmMtNDA5OS1cdFx0aWYgKHZhbCBcdTAwM2U9IDAgXHUwMDI2XHUwMDI2ICgoMSBcdTAwM2NcdTAwM2Mgc2stXHUwMDNlc2tfc3RhdGUpIFx1MDAyNiAoVENQRl9DTE9TRSB8XG4tLVxubmV0L2lwdjQvdGNwLmMtNDEwNy1cdFx0YnJlYWs7XG5uZXQvaXB2NC90Y3AuYzo0MTA4Olx0Y2FzZSBUQ1BfRkFTVE9QRU5fQ09OTkVDVDpcbm5ldC9pcHY0L3RjcC5jLTQxMDktXHRcdGlmICh2YWwgXHUwMDNlIDEgfHwgdmFsIFx1MDAzYyAwKSB7XG4tLVxubmV0L2lwdjQvdGNwLmMtNDEyMC1cdFx0YnJlYWs7XG5uZXQvaXB2NC90Y3AuYzo0MTIxOlx0Y2FzZSBUQ1BfRkFTVE9QRU5fTk9fQ09PS0lFOlxubmV0L2lwdjQvdGNwLmMtNDEyMi1cdFx0aWYgKHZhbCBcdTAwM2UgMSB8fCB2YWwgXHUwMDNjIDApXG4tLVxubmV0L2lwdjQvdGNwLmM9NDQ4MT1pbnQgZG9fdGNwX2dldHNvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGV2ZWwsXG4tLVxubmV0L2lwdjQvdGNwLmMtNDYwNC1cbm5ldC9pcHY0L3RjcC5jOjQ2MDU6XHRjYXNlIFRDUF9GQVNUT1BFTl9LRVk6IHtcbm5ldC9pcHY0L3RjcC5jOjQ2MDY6XHRcdHU2NCBrZXlbVENQX0ZBU1RPUEVOX0tFWV9CVUZfTEVOR1RIIC8gc2l6ZW9mKHU2NCldO1xubmV0L2lwdjQvdGNwLmMtNDYwNy1cdFx0dW5zaWduZWQgaW50IGtleV9sZW47XG4tLVxubmV0L2lwdjQvdGNwLmMtNDYxMi1cdFx0a2V5X2xlbiA9IHRjcF9mYXN0b3Blbl9nZXRfY2lwaGVyKG5ldCwgaWNzaywga2V5KSAqXG5uZXQvaXB2NC90Y3AuYzo0NjEzOlx0XHRcdFx0VENQX0ZBU1RPUEVOX0tFWV9MRU5HVEg7XG5uZXQvaXB2NC90Y3AuYy00NjE0LVx0XHRsZW4gPSBtaW5fdCh1bnNpZ25lZCBpbnQsIGxlbiwga2V5X2xlbik7XG4tLVxubmV0L2lwdjQvdGNwLmMtNDY3NC1cbm5ldC9pcHY0L3RjcC5jOjQ2NzU6XHRjYXNlIFRDUF9GQVNUT1BFTjpcbm5ldC9pcHY0L3RjcC5jLTQ2NzYtXHRcdHZhbCA9IFJFQURfT05DRShpY3NrLVx1MDAzZWljc2tfYWNjZXB0X3F1ZXVlLmZhc3RvcGVucS5tYXhfcWxlbik7XG4tLVxubmV0L2lwdjQvdGNwLmMtNDY3OC1cbm5ldC9pcHY0L3RjcC5jOjQ2Nzk6XHRjYXNlIFRDUF9GQVNUT1BFTl9DT05ORUNUOlxubmV0L2lwdjQvdGNwLmMtNDY4MC1cdFx0dmFsID0gdHAtXHUwMDNlZmFzdG9wZW5fY29ubmVjdDtcbi0tXG5uZXQvaXB2NC90Y3AuYy00NjgyLVxubmV0L2lwdjQvdGNwLmM6NDY4MzpcdGNhc2UgVENQX0ZBU1RPUEVOX05PX0NPT0tJRTpcbm5ldC9pcHY0L3RjcC5jLTQ2ODQtXHRcdHZhbCA9IHRwLVx1MDAzZWZhc3RvcGVuX25vX2Nvb2tpZTtcbi0tXG5uZXQvaXB2NC90Y3BfZmFzdG9wZW4uYz05ND12b2lkIHRjcF9mYXN0b3Blbl9pbml0X2tleV9vbmNlKHN0cnVjdCBuZXQgKm5ldClcbm5ldC9pcHY0L3RjcF9mYXN0b3Blbi5jLTk1LXtcbm5ldC9pcHY0L3RjcF9mYXN0b3Blbi5jOjk2Olx0dTgga2V5W1RDUF9GQVNUT1BFTl9LRVlfTEVOR1RIXTtcbm5ldC9pcHY0L3RjcF9mYXN0b3Blbi5jLTk3LVx0c3RydWN0IHRjcF9mYXN0b3Blbl9jb250ZXh0ICpjdHh0O1xuLS1cbm5ldC9pcHY0L3RjcF9mYXN0b3Blbi5jPTIwNT1zdGF0aWMgYm9vbCBfX3RjcF9mYXN0b3Blbl9jb29raWVfZ2VuX2NpcGhlcihzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEsXG4tLVxubmV0L2lwdjQvdGNwX2Zhc3RvcGVuLmMtMjA5LXtcbm5ldC9pcHY0L3RjcF9mYXN0b3Blbi5jOjIxMDpcdEJVSUxEX0JVR19PTihUQ1BfRkFTVE9QRU5fQ09PS0lFX1NJWkUgIT0gc2l6ZW9mKHU2NCkpO1xubmV0L2lwdjQvdGNwX2Zhc3RvcGVuLmMtMjExLVxuLS1cbm5ldC9pcHY0L3RjcF9mYXN0b3Blbi5jLTIxOC1cdFx0XHRcdFx0ICBrZXkpKTtcbm5ldC9pcHY0L3RjcF9mYXN0b3Blbi5jOjIxOTpcdFx0Zm9jLVx1MDAzZWxlbiA9IFRDUF9GQVNUT1BFTl9DT09LSUVfU0laRTtcbm5ldC9pcHY0L3RjcF9mYXN0b3Blbi5jLTIyMC1cdFx0cmV0dXJuIHRydWU7XG4tLVxubmV0L2lwdjQvdGNwX2Zhc3RvcGVuLmMtMjI5LVx0XHRcdFx0XHQgIGtleSkpO1xubmV0L2lwdjQvdGNwX2Zhc3RvcGVuLmM6MjMwOlx0XHRmb2MtXHUwMDNlbGVuID0gVENQX0ZBU1RPUEVOX0NPT0tJRV9TSVpFO1xubmV0L2lwdjQvdGNwX2Zhc3RvcGVuLmMtMjMxLVx0XHRyZXR1cm4gdHJ1ZTtcbi0tXG5uZXQvaXB2NC90Y3BfaW5wdXQuYz00NDgzPXN0YXRpYyB2b2lkIHRjcF9wYXJzZV9mYXN0b3Blbl9vcHRpb24oaW50IGxlbiwgY29uc3QgdW5zaWduZWQgY2hhciAqY29va2llLFxuLS1cbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTQ0OTAtXG5uZXQvaXB2NC90Y3BfaW5wdXQuYzo0NDkxOlx0aWYgKGxlbiBcdTAwM2U9IFRDUF9GQVNUT1BFTl9DT09LSUVfTUlOIFx1MDAyNlx1MDAyNlxubmV0L2lwdjQvdGNwX2lucHV0LmM6NDQ5MjpcdCAgICBsZW4gXHUwMDNjPSBUQ1BfRkFTVE9QRU5fQ09PS0lFX01BWClcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTQ0OTMtXHRcdG1lbWNweShmb2MtXHUwMDNldmFsLCBjb29raWUsIGxlbik7XG4tLVxubmV0L2lwdjQvdGNwX2lucHV0LmM9NzE1Mj10Y3BfcmN2X3N0YXRlX3Byb2Nlc3Moc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTcyMTctXG5uZXQvaXB2NC90Y3BfaW5wdXQuYzo3MjE4Olx0XHRTS0JfRFJfU0VUKHJlYXNvbiwgVENQX0ZBU1RPUEVOKTtcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTcyMTktXHRcdGlmICghdGNwX2NoZWNrX3JlcShzaywgc2tiLCByZXEsIHRydWUsIFx1MDAyNnJlcV9zdG9sZW4sIFx1MDAyNnJlYXNvbikpXG4tLVxubmV0L2lwdjQvdGNwX21ldHJpY3MuYz02MTg9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IHRjcF9tZXRyaWNzX25sX3BvbGljeVtUQ1BfTUVUUklDU19BVFRSX01BWCAmIzQzOyAxXSA9IHtcbi0tXG5uZXQvaXB2NC90Y3BfbWV0cmljcy5jLTYzOC1cdFtUQ1BfTUVUUklDU19BVFRSX0ZPUEVOX0NPT0tJRV1cdD0geyAudHlwZSA9IE5MQV9CSU5BUlksXG5uZXQvaXB2NC90Y3BfbWV0cmljcy5jOjYzOTpcdFx0XHRcdFx0ICAgIC5sZW4gPSBUQ1BfRkFTVE9QRU5fQ09PS0lFX01BWCwgfSxcbm5ldC9pcHY0L3RjcF9tZXRyaWNzLmMtNjQwLSNlbmRpZlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNjo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTMxCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXMsIHByZXNlbnRlZCBhcyBpZiBJJiMzOTttIGFuYWx5emluZyB0aGUgc2l0dWF0aW9uOgoKKipUQ1AgRmFzdCBPcGVuIENvbmZpZ3VyYXRpb24gLSBMZXQmIzM5O3MgRGlnIERlZXBlcioqCgpSaWdodCwgc28gVENQIEZhc3QgT3BlbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgaW4gdGhlIGtlcm5lbCwgdGhhdCYjMzk7cyB3aGF0IEkmIzM5O20gc2VlaW5nLiBCdXQgaGFuZyBvbiwgdGhpcyBpcyBpbnRlcmVzdGluZy4gSSBkb24mIzM5O3QgcmVjYWxsIHNlZWluZyBhIGRlZGljYXRlZCBgQ09ORklHX1RDUF9GQVNUT1BFTmAgZmxhZy4gVGhhdCYjMzk7cyBhIGxpdHRsZSB1bnVzdWFsLCBjb25zaWRlcmluZyBob3cgY29tbW9uIGl0IGlzIHRvIGhhdmUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBNYXliZSBpdCYjMzk7cyBzdWJ0bHkgZW5hYmxlZCB0aHJvdWdoIGFub3RoZXIgcmVsYXRlZCBvcHRpb24/IE9yIHBlcmhhcHMgaXQmIzM5O3MgYmFrZWQgaW50byBhIGJyb2FkZXIgVENQIGZlYXR1cmUgc2V0IHdpdGhvdXQgYSBkaXJlY3QgdG9nZ2xlPyBMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhlIGtlcm5lbCBjb25maWcgZmlsZXMgZm9yIGFueXRoaW5nIGV2ZW4gcmVtb3RlbHkgcmVsYXRlZCwganVzdCBpbiBjYXNlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3Npbmcgc29tZSBzdWJ0bGUgbnVhbmNlIGluIGl0cyBjb25maWd1cmF0aW9uLiBMZXQmIzM5O3Mgc2VlIGlmIGEgc2ltcGxlIHNlYXJjaCBoZWxwcyB1bmNvdmVyIGFueSBjbHVlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDY6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfVENQX0ZBU1RPUEVOJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDY6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzIwOQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIEZvY3VzOiBgaW5ldF9yZXFza19jbG9uZWAgYW5kIGl0cyBDYWxsZXJzKioKCkFscmlnaHQsIHNvIHRoZXJlJiMzOTtzIG5vIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZmlsZSB0byB3b3JyeSBhYm91dCBoZXJlLCBnb29kLiBUaGlzIHBhdGNoIGlzIG1vZGlmeWluZyB0aGUgYGluZXRfcmVxc2tfY2xvbmVgIGZ1bmN0aW9uLCB3aGljaCBpcyBjYWxsZWQgZHVyaW5nIHJlcXVlc3Qgc29ja2V0IGNsb25pbmcuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGlkZW50aWZ5IHRoZSBmdW5jdGlvbnMgdGhhdCBjYWxsIGBpbmV0X3JlcXNrX2Nsb25lYCwgYXMgdGhvc2UgYXJlIHRoZSBrZXkgYXJlYXMgZm9yIGZ1enppbmcuIFNpbmNlIGBpbmV0X3JlcXNrX2Nsb25lYCBpcyBkZWNsYXJlZCBzdGF0aWMsIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBhdCBhbGwgaXRzIGNhbGwgc2l0ZXMgdG8gdW5kZXJzdGFuZCB3aGVyZSBpdCYjMzk7cyBiZWluZyB1c2VkLgoKTGV0JiMzOTtzIHNlZS4uLiBpdCYjMzk7cyBjYWxsZWQgYnkgYHJlcXNrX3RpbWVyX2hhbmRsZXJgLCBgaW5ldF9jc2tfY29tcGxldGVfaGFzaGRhbmNlYCwgYW5kIGBpbmV0X2Nza19saXN0ZW5fc3RvcGAuIEhtbSwgYHJlcXNrX3RpbWVyX2hhbmRsZXJgIGlzIGEgdGltZXIgaGFuZGxlciwgd2hpY2ggY291bGQgYmUgaW50ZXJlc3RpbmcgZnJvbSBhIHRpbWluZyBwZXJzcGVjdGl2ZS4gSG93ZXZlciwgYGluZXRfY3NrX2NvbXBsZXRlX2hhc2hkYW5jZWAgaXMgY2FsbGVkIGZyb20gYHRjcF92NF9zeW5fcmVjdl9zb2NrYCBhbmQgYHRjcF92Nl9zeW5fcmVjdl9zb2NrYCB3aGljaCBoYW5kbGUgU1lOIHBhY2tldCByZWNlcHRpb24uIFRoYXQmIzM5O3MgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcgYmVjYXVzZSBvZiB0aGUgcG90ZW50aWFsIGZvciBtYWxmb3JtZWQgU1lOIHBhY2tldHMsIGFuZCBzaW5jZSBpdCYjMzk7cyB1c2VkIGluIGJvdGggSVB2NCBhbmQgSVB2Niwgd2UgaGF2ZSB0d28gdGFyZ2V0cyB0aGVyZS4gRmluYWxseSwgYGluZXRfY3NrX2xpc3Rlbl9zdG9wYCBpcyBjYWxsZWQgd2hlbiBjbG9zaW5nIGEgbGlzdGVuaW5nIHNvY2tldC4gVGhhdCBzZWVtcyBhIGJpdCBsZXNzIGxpa2VseSB0byBiZSBhIHNvdXJjZSBvZiBpbW1lZGlhdGUgdnVsbmVyYWJpbGl0aWVzIHRoYW4gU1lOIGhhbmRsaW5nLCBidXQgd2UgY2FuJiMzOTt0IHJ1bGUgaXQgb3V0LiBTbywgbXkgcHJpbWFyeSBmb2N1cyBzaG91bGQgYmUgYGluZXRfY3NrX2NvbXBsZXRlX2hhc2hkYW5jZWAgYW5kLCBzZWNvbmRhcmlseSwgYGluZXRfY3NrX2xpc3Rlbl9zdG9wYC4gTm93LCBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGBpbmV0X2Nza19jb21wbGV0ZV9oYXNoZGFuY2VgIGFuZCBgaW5ldF9jc2tfbGlzdGVuX3N0b3BgIHRoZW1zZWx2ZXMgdG8gY29uZmlybSB0aGUgZnV6emluZyBhdHRhY2sgc3VyZmFjZSBhbmQgcG90ZW50aWFsIGZvciB2dWxuZXJhYmlsaXRpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA2OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2luZXRfY3NrX2NvbXBsZXRlX2hhc2hkYW5jZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jPTEzOTM9c3RydWN0IHNvY2sgKmluZXRfY3NrX3JlcXNrX3F1ZXVlX2FkZChzdHJ1Y3Qgc29jayAqc2ssXG4tLVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xNDE2LVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYzoxNDE3OnN0cnVjdCBzb2NrICppbmV0X2Nza19jb21wbGV0ZV9oYXNoZGFuY2Uoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc29jayAqY2hpbGQsXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTE0MTgtXHRcdFx0XHRcdCBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEsIGJvb2wgb3duX3JlcSlcbi0tXG5uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmM9Njg3PXN0cnVjdCBzb2NrICp0Y3BfY2hlY2tfcmVxKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmMtOTUxLVx0KnJlcV9zdG9sZW4gPSAhb3duX3JlcTtcbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYzo5NTI6XHRyZXR1cm4gaW5ldF9jc2tfY29tcGxldGVfaGFzaGRhbmNlKHNrLCBjaGlsZCwgcmVxLCBvd25fcmVxKTtcbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYy05NTMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA2OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxNDMKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipJbnZlc3RpZ2F0aW5nIGBpbmV0X2Nza19jb21wbGV0ZV9oYXNoZGFuY2VgIFZpc2liaWxpdHkqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBpbmV0X2Nza19jb21wbGV0ZV9oYXNoZGFuY2VgLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXM6ICpJcyB0aGlzIGZ1bmN0aW9uIGV4cG9ydGVkLCBvciBpcyBpdCBhIG5vbi1zdGF0aWMsIGludGVybmFsIGhlbHBlciBmdW5jdGlvbiB3aXRoaW4gdGhlIGtlcm5lbD8qIFVuZGVyc3RhbmRpbmcgaXRzIHZpc2liaWxpdHkgaXMgY3J1Y2lhbCB0byBmaWd1cmluZyBvdXQgaG93IGl0JiMzOTtzIHVzZWQgYW5kLCBjcml0aWNhbGx5LCB3aGV0aGVyIGl0JiMzOTtzIHBhcnQgb2YgYSBwdWJsaWMgQVBJIG9yIHNvbWV0aGluZyBwcml2YXRlIHRvIGEgc3BlY2lmaWMgbmV0d29ya2luZyBzdWJzeXN0ZW0uIFRoaXMgdGVsbHMgbWUgd2hldGhlciBJJiMzOTttIHBvdGVudGlhbGx5IGxvb2tpbmcgYXQgc29tZXRoaW5nIHRoYXQgY291bGQgYmUgcGFydCBvZiBhbiBpbnRlcmZhY2UgSSBtaWdodCBiZSBhYmxlIHRvIGxldmVyYWdlIGRpcmVjdGx5LCBvciBpZiBJIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBpbnRlcm5hbCB3b3JraW5ncyBvZiB0aGUgbmV0d29ya2luZyBzdGFjayB0byB1bmRlcnN0YW5kIGl0cyBiZWhhdmlvciBhbmQgaW1wbGljYXRpb25zLiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIHF1ZXN0aW9uIHRoYXQgZGlyZWN0cyB0aGUgZW50aXJlIGxpbmUgb2YgaW5xdWlyeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDY6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFBPUlRfU1lNQk9MLippbmV0X2Nza19jb21wbGV0ZV9oYXNoZGFuY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNjo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MzkwCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIEkmIzM5O20gcmVhZHkuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290LiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyBmb3IgSGVhZGVyIFByZXNlbmNlKioKCkFscmlnaHQsIG15IGludGVybmFsIHByb2Nlc3Mgc3RhcnRzIGhlcmUuIEkmIzM5O20gaW1tZWRpYXRlbHkgc2Nhbm5pbmcgdGhlIHRleHQuIFRoZSBwcmltYXJ5IGdvYWwgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoZSBwaHJhc2UgJiMzNDtMZXQmIzM5O3MgY2hlY2sgaWYgaXQmIzM5O3MgaW4gYSBoZWFkZXImIzM0OyBpcyBjb250YWluZWQgd2l0aGluIGEgaGVhZGVyIGVsZW1lbnQsIGxpa2UgYW4gSFRNTCBgJmx0O2gxJmd0O2AgdGhyb3VnaCBgJmx0O2g2Jmd0O2AgdGFnIG9yIE1hcmtkb3duJiMzOTtzIGAjYCBzeW50YXguIEl0JiMzOTtzIGEgZnVuZGFtZW50YWwgcGFyc2luZyB0YXNrLCBtdWNoIGxpa2UgaW5pdGlhbCB0b2tlbml6YXRpb24gaW4gbGFyZ2VyIGxhbmd1YWdlIG1vZGVsIGFyY2hpdGVjdHVyZXMuIFRoZSBhYnNlbmNlIG9mIGEgaGVhZGVyIHNpZ25hbHMgYSBkaWZmZXJlbnQgc2V0IG9mIHN1YnNlcXVlbnQgYW5hbHlzaXMgYXBwcm9hY2hlcy4gSWYgaXQgKmlzKiBpbiBhIGhlYWRlciwgSSYjMzk7bGwgbmVlZCB0byByZWNvZ25pemUgdGhpcyBzdHJ1Y3R1cmFsIGVsZW1lbnQgYW5kIGFkYXB0IG15IHJlc3BvbnNlIGFwcHJvcHJpYXRlbHkuIFRoZSBzdWJzZXF1ZW50IHN0ZXBzIGRlcGVuZCBlbnRpcmVseSBvbiB0aGlzIGluaXRpYWwgZGV0ZWN0aW9uIHBoYXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNjo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbmV0X2Nza19jb21wbGV0ZV9oYXNoZGFuY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlL25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvaW5ldF9jb25uZWN0aW9uX3NvY2suaD0yNzU9Ym9vbCBpbmV0X2Nza19yZXFza19xdWV1ZV9oYXNoX2FkZChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSk7XG5pbmNsdWRlL25ldC9pbmV0X2Nvbm5lY3Rpb25fc29jay5oOjI3NjpzdHJ1Y3Qgc29jayAqaW5ldF9jc2tfY29tcGxldGVfaGFzaGRhbmNlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNvY2sgKmNoaWxkLFxuaW5jbHVkZS9uZXQvaW5ldF9jb25uZWN0aW9uX3NvY2suaC0yNzctXHRcdFx0XHRcdCBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA2OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg3MjMKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkNvbnNpZGVyaW5nIHRoZSBOb24tU3RhdGljIE5hdHVyZSoqCgpBbHJpZ2h0LCBzbyB0aGUgY29yZSBpc3N1ZSBpcyB0aGUgbm9uLXN0YXRpYyBuYXR1cmUgb2YgdGhpcyBzaXR1YXRpb24uIEkmIzM5O20gaW1tZWRpYXRlbHkgdGhpbmtpbmcgYWJvdXQgaG93IHRoYXQgZHluYW1pYyBlbGVtZW50IGltcGFjdHMgZXZlcnl0aGluZy4gV2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBzb21ldGhpbmcgdGhhdCAqaXNuJiMzOTt0KiBmaXhlZCwgYW5kIHRoYXQgbmVjZXNzaXRhdGVzIGEgbW9yZSBmbHVpZCBhbmQgcG90ZW50aWFsbHkgbW9yZSBjb21wbGV4IGFwcHJvYWNoLiBXZSBuZWVkIHRvIGFjY291bnQgZm9yIGNoYW5naW5nIHN0YXRlcywgdmFyaWFibGVzLCBhbmQgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucy4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBzaGlmdCBpbiBwZXJzcGVjdGl2ZS4gQW5kLCBnaXZlbiB0aGF0IGR5bmFtaWMgYXNwZWN0LCBJIGltbWVkaWF0ZWx5IHN0YXJ0IHRvIHRoaW5rIGFib3V0IGhvdyB0byBhcHBseSB0aGUgbGVzc29ucyBJJiMzOTt2ZSBsZWFybmVkIGZyb20gc2ltaWxhciBub24tc3RhdGljIGFyY2hpdGVjdHVyZXMuIFRoYXQgdW5kZXJzdGFuZGluZyBvZiB0aGUgdW5kZXJseWluZyBuZXR3b3JrIHN0YWNrIHdpbGwgYmUgY3JpdGljYWwuCgpUaGVuLCBteSBtaW5kIGp1bXBzIHRvIGEgc3BlY2lmaWMgZnVuY3Rpb246IGBpbmV0X2Nza19saXN0ZW5fc3RvcGAuIEkga25vdyB0aGF0IGZ1bmN0aW9uIGlzIGNyaXRpY2FsbHkgaW1wb3J0YW50IGZvciBjbGVhbmx5IHNodXR0aW5nIGRvd24gbGlzdGVuaW5nIHNvY2tldHMsIHByZXZlbnRpbmcgcmVzb3VyY2UgbGVha3MsIGFuZCBlbnN1cmluZyBncmFjZWZ1bCBoYW5kbGluZyBvZiBjb25uZWN0aW9ucy4gV2l0aCB0aGlzIG5vbi1zdGF0aWMgaXNzdWUgaW4gbWluZCwgSSBuZWVkIHRvIGV2YWx1YXRlIHByZWNpc2VseSBob3cgYGluZXRfY3NrX2xpc3Rlbl9zdG9wYCB3aWxsIHJlYWN0IG9yIGludGVyYWN0IHdpdGggdGhlIHNpdHVhdGlvbi4gSXMgaXQgYXBwcm9wcmlhdGUsIG9yIGFyZSB3ZSBnb2luZyB0byBuZWVkIHNvbWV0aGluZyBtb3JlPyBEbyB3ZSBuZWVkIHRvIGNhbGwgaXQgYXQgYWxsPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgdGhhdCB3ZSBuZWVkIHRvIGNvbnNpZGVyIGluIHRoZSBjb250ZXh0IG9mIG91ciBub24tc3RhdGljIHNpdHVhdGlvbj8gVGhpcyBpcyBhIGtleSBwb2ludCwgYmVjYXVzZSB0aGF0IGZ1bmN0aW9uIGNhbiBiZSB0aGUgY3J1Y2lhbCBlbGVtZW50IHRoYXQgZW5zdXJlcyBzdGFiaWxpdHkuIFdlIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGl0IGlzIHN1ZmZpY2llbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA2OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2luZXRfY3NrX2xpc3Rlbl9zdG9wJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L2luZXRfY29ubmVjdGlvbl9zb2NrLmg9MzExPWludCBpbmV0X2Nza19saXN0ZW5fc3RhcnQoc3RydWN0IHNvY2sgKnNrKTtcbmluY2x1ZGUvbmV0L2luZXRfY29ubmVjdGlvbl9zb2NrLmg6MzEyOnZvaWQgaW5ldF9jc2tfbGlzdGVuX3N0b3Aoc3RydWN0IHNvY2sgKnNrKTtcbmluY2x1ZGUvbmV0L2luZXRfY29ubmVjdGlvbl9zb2NrLmgtMzEzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNjo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MTcwCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXMgaWYgdGhlc2UgYXJlIG15IHRob3VnaHRzOgoKKipBbmFseXppbmcgYGluZXRfcmVxc2tfY2xvbmVgIFVzYWdlKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBJIHNlZSB0aGF0IHRoZSB0YXJnZXQgaXMgYSBub24tc3RhdGljIGZ1bmN0aW9uLiBUaGF0IGltbWVkaWF0ZWx5IHRyaWdnZXJzIHRoZSAmIzM0O3BvdGVudGlhbCBmb3IgYnJvYWRlciB1c2FnZSYjMzQ7IGFsYXJtIGJlbGxzIGluIG15IGhlYWQuIE15IG5leHQgdGhvdWdodCBpcyB0byB0cnkgYW5kIGVzdGFibGlzaCB0aGUgc2NvcGUgb2YgdGhpcyBmdW5jdGlvbi4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBhbGwgdGhlIGNhbGwgc2l0ZXMgdG8gZ2V0IGEgcHJvcGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb2YgYW55IGNoYW5nZXMuIFRoZSBrZXkgcXVlc3Rpb24gbm93IGlzOiAmIzM0O0FyZSB0aGVyZSBhbnkgb3RoZXIgY2FsbGVycyBvZiBgaW5ldF9yZXFza19jbG9uZWA/JiMzNDsgSSBuZWVkIHRvIGZpbmQgdGhlbSBhbmQgdW5kZXJzdGFuZCBob3cgaXQmIzM5O3MgYmVpbmcgdXNlZCBhY3Jvc3MgdGhlIG5ldHdvcmsgc3RhY2suIFRoaXMgaXMgZnVuZGFtZW50YWwgdG8gbXkgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA2OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2luZXRfcmVxc2tfY2xvbmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYz05MDQ9dm9pZCBfX3JlcXNrX2ZyZWUoc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKVxuLS1cbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtOTEyLVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYzo5MTM6c3RhdGljIHN0cnVjdCByZXF1ZXN0X3NvY2sgKmluZXRfcmVxc2tfY2xvbmUoc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxLFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy05MTQtXHRcdFx0XHRcdCAgICAgc3RydWN0IHNvY2sgKnNrKVxuLS1cbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM9MTAzMz1zdGF0aWMgdm9pZCByZXFza190aW1lcl9oYW5kbGVyKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxuLS1cbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtMTA0OS1cbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM6MTA1MDpcdFx0bnJlcSA9IGluZXRfcmVxc2tfY2xvbmUocmVxLCBuc2spO1xubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xMDUxLVx0XHRpZiAoIW5yZXEpXG4tLVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYz0xNDE3PXN0cnVjdCBzb2NrICppbmV0X2Nza19jb21wbGV0ZV9oYXNoZGFuY2Uoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc29jayAqY2hpbGQsXG4tLVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xNDMwLVx0XHRcdC8qIGhvbGQgYSByZWZjbnQgZm9yIHRoZSBucmVxLVx1MDAzZXJza19saXN0ZW5lclxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYzoxNDMxOlx0XHRcdCAqIHdoaWNoIGlzIGFzc2lnbmVkIGluIGluZXRfcmVxc2tfY2xvbmUoKVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xNDMyLVx0XHRcdCAqL1xubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xNDMzLVx0XHRcdHNvY2tfaG9sZChzayk7XG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jOjE0MzQ6XHRcdFx0bnJlcSA9IGluZXRfcmVxc2tfY2xvbmUocmVxLCBzayk7XG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTE0MzUtXHRcdFx0aWYgKCFucmVxKSB7XG4tLVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYz0xNDY2PXZvaWQgaW5ldF9jc2tfbGlzdGVuX3N0b3Aoc3RydWN0IHNvY2sgKnNrKVxuLS1cbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtMTQ5MC1cdFx0aWYgKG5zaykge1xubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYzoxNDkxOlx0XHRcdG5yZXEgPSBpbmV0X3JlcXNrX2Nsb25lKHJlcSwgbnNrKTtcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtMTQ5Mi1cdFx0XHRpZiAobnJlcSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNjo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5OTc0CgkJCQkJCQlvdXRwdXQ6IDkzCgkJCQkJCQl0aG91Z2h0czogMTYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFRDUCBGYXN0IE9wZW4gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiB0YWtpbmcgYSBsb29rIGF0IHRoaXMgcGF0Y2ggcmVsYXRlZCB0byBUQ1AgRmFzdCBPcGVuLiBJdCBzZWVtcyBsaWtlIGBpbmV0X2Nza19jb21wbGV0ZV9oYXNoZGFuY2VgIGFuZCBgaW5ldF9jc2tfbGlzdGVuX3N0b3BgIGFyZSB0aGUga2V5IGVudHJ5IHBvaW50cyBJIG5lZWQgdG8gZm9jdXMgb24gaW5pdGlhbGx5LiBJIGFsc28gbm90aWNlZCBgcmVxc2tfdGltZXJfaGFuZGxlcmAgbWVudGlvbmVkLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gV2hpbGUgaXQmIzM5O3MgYSB0aW1lciBoYW5kbGVyIGFuZCBub3QgZGlyZWN0bHkgY2FsbGVkIGJ5IGEgc3lzdGVtIGNhbGwsIGl04oCZcyB0cmlnZ2VyZWQgZHVyaW5nIFRDUCBjb25uZWN0aW9uIGhhbmRsaW5nLCBtYWtpbmcgaXQgcmVsZXZhbnQgdG8gdGhlIG92ZXJhbGwgZmxvdy4gVGhlIGJ1ZyBpdHNlbGYgYXBwZWFycyB0byBpbnZvbHZlIGEgbWlzc2VkIGFjY291bnRpbmcgdXBkYXRlOiBgZmFzdG9wZW5xLSZndDtxbGVuYCBpc24mIzM5O3QgcHJvcGVybHkgY2hhcmdlZCB3aGVuIGEgcmVxdWVzdCBzb2NrZXQgaXMgY2xvbmVkIGZvciBhIFRDUCBGYXN0IE9wZW4gbGlzdGVuZXIuIFRoaXMgaXMgYSBjbGFzc2ljIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5IHNpdHVhdGlvbiwgYW5kIGl0JiMzOTtzIGRlZmluaXRlbHkgc29tZXRoaW5nIEkgd2FudCB0byB0ZXN0IHRob3JvdWdobHkuCgpGcm9tIGEgZnVuY3Rpb25hbCBwZXJzcGVjdGl2ZSwgdGhpcyBwYXRjaCBzZWVtcyBsaWtlIGl0JiMzOTtzIHdvcnRoIHRoZSBlZmZvcnQgb2YgZnV6emluZy4gVGhlIGdvb2QgbmV3cyBpcyB0aGF0IG5vIHNwZWNpYWwgY29uZmlndXJhdGlvbnMgYXJlIHJlcXVpcmVkIGJlY2F1c2UgVENQIEZhc3QgT3BlbiBpcyBhbHJlYWR5IGJ1aWx0IGluLiBHaXZlbiBhbGwgb2YgdGhpcywgSSYjMzk7bSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZz10cnVlYC4gTXkgYEZvY3VzU3ltYm9sc2Agd2lsbCBiZSBgWyYjMzQ7aW5ldF9jc2tfY29tcGxldGVfaGFzaGRhbmNlJiMzNDssICYjMzQ7aW5ldF9jc2tfbGlzdGVuX3N0b3AmIzM0O11gLCBhbmQgSSYjMzk7bGwga2VlcCBgRW5hYmxlQ29uZmlnc2AgZW1wdHkgZm9yIG5vdywgYXMgSSBkb24mIzM5O3Qgc2VlIGFueSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA2OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpbmV0X2Nza19jb21wbGV0ZV9oYXNoZGFuY2UmIzM0OywKICAgICYjMzQ7aW5ldF9jc2tfbGlzdGVuX3N0b3AmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgVENQIEZhc3QgT3BlbiByZXF1ZXN0IHNvY2tldCBjbG9uaW5nIGxvZ2ljIGluIGluZXRfcmVxc2tfY2xvbmUgdG8gcHJvcGVybHkgY2hhcmdlIHRoZSBmYXN0b3BlbiBxdWV1ZSBsZW5ndGguIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBsb2dpYyB0aGF0IGhhbmRsZXMgVENQIGNvbm5lY3Rpb25zIGFuZCBsaXN0ZW5pbmcgc29ja2V0cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpbmV0X2Nza19jb21wbGV0ZV9oYXNoZGFuY2UmIzM0OywKICAgICYjMzQ7aW5ldF9jc2tfbGlzdGVuX3N0b3AmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgVENQIEZhc3QgT3BlbiByZXF1ZXN0IHNvY2tldCBjbG9uaW5nIGxvZ2ljIGluIGluZXRfcmVxc2tfY2xvbmUgdG8gcHJvcGVybHkgY2hhcmdlIHRoZSBmYXN0b3BlbiBxdWV1ZSBsZW5ndGguIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBsb2dpYyB0aGF0IGhhbmRsZXMgVENQIGNvbm5lY3Rpb25zIGFuZCBsaXN0ZW5pbmcgc29ja2V0cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA2OjQ4OjM0LjA5MDM5NTUwNloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NjIyNzcyODEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImluZXRfY3NrX2NvbXBsZXRlX2hhc2hkYW5jZVwiLFxuICAgIFwiaW5ldF9jc2tfbGlzdGVuX3N0b3BcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBUQ1AgRmFzdCBPcGVuIHJlcXVlc3Qgc29ja2V0IGNsb25pbmcgbG9naWMgaW4gaW5ldF9yZXFza19jbG9uZSB0byBwcm9wZXJseSBjaGFyZ2UgdGhlIGZhc3RvcGVuIHF1ZXVlIGxlbmd0aC4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGxvZ2ljIHRoYXQgaGFuZGxlcyBUQ1AgY29ubmVjdGlvbnMgYW5kIGxpc3RlbmluZyBzb2NrZXRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNjo0ODozNC4wOTA0MDIzMDZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MTc2NjkxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDE2ZjczMTYwMGUxMGVhZmVkZTExZDk4OWY2MWI5ZDJjZTFiYTdlMDRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMyAwNjo0ODozMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jIGIvbmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suY1xcbmluZGV4IDU2OTAyYmJhNTQ4MzguLjYyNTc0NTliY2VlMjQgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suY1xcbisrKyBiL25ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmNcXG5AQCAtOTQzLDExICs5NDMsMjMgQEAgc3RhdGljIHN0cnVjdCByZXF1ZXN0X3NvY2sgKmluZXRfcmVxc2tfY2xvbmUoc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxLFxcbiBcXG4gXFx0bnJlcS1cXHUwMDNlcnNrX2xpc3RlbmVyID0gc2s7XFxuIFxcbi1cXHQvKiBXZSBuZWVkIG5vdCBhY3F1aXJlIGZhc3RvcGVucS1cXHUwMDNlbG9ja1xcbi1cXHQgKiBiZWNhdXNlIHRoZSBjaGlsZCBzb2NrZXQgaXMgbG9ja2VkIGluIGluZXRfY3NrX2xpc3Rlbl9zdG9wKCkuXFxuLVxcdCAqL1xcbi1cXHRpZiAoc2stXFx1MDAzZXNrX3Byb3RvY29sID09IElQUFJPVE9fVENQIFxcdTAwMjZcXHUwMDI2IHRjcF9yc2sobnJlcSktXFx1MDAzZXRmb19saXN0ZW5lcilcXG4rXFx0aWYgKHNrLVxcdTAwM2Vza19wcm90b2NvbCA9PSBJUFBST1RPX1RDUCBcXHUwMDI2XFx1MDAyNiB0Y3BfcnNrKG5yZXEpLVxcdTAwM2V0Zm9fbGlzdGVuZXIpIHtcXG4rXFx0XFx0c3RydWN0IGZhc3RvcGVuX3F1ZXVlICpmYXN0b3BlbnE7XFxuK1xcbitcXHRcXHQvKiByZXFza19mYXN0b3Blbl9yZW1vdmUoKSB3aWxsIHVuY2hhcmdlIG5yZXEtXFx1MDAzZXJza19saXN0ZW5lcixcXG4rXFx0XFx0ICogdGhhdCBpcyBAc2ssIHNvIGNoYXJnZSBpdCBoZXJlLiAgVW5saWtlIHRoZSBsaXN0ZW5lclxcbitcXHRcXHQgKiBiZWluZyBjbG9zZWQsIEBzayBpcyBsaXZlIGFuZCBuZWVkcyBpdHMgbG9jay5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdGZhc3RvcGVucSA9IFxcdTAwMjZpbmV0X2NzayhzayktXFx1MDAzZWljc2tfYWNjZXB0X3F1ZXVlLmZhc3RvcGVucTtcXG4rXFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZmYXN0b3BlbnEtXFx1MDAzZWxvY2spO1xcbitcXHRcXHRmYXN0b3BlbnEtXFx1MDAzZXFsZW4rKztcXG4rXFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmZhc3RvcGVucS1cXHUwMDNlbG9jayk7XFxuK1xcbitcXHRcXHQvKiBXZSBuZWVkIG5vdCBhY3F1aXJlIGZhc3RvcGVucS1cXHUwMDNlbG9ja1xcbitcXHRcXHQgKiBiZWNhdXNlIHRoZSBjaGlsZCBzb2NrZXQgaXMgbG9ja2VkIGluIGluZXRfY3NrX2xpc3Rlbl9zdG9wKCkuXFxuK1xcdFxcdCAqL1xcbiBcXHRcXHRyY3VfYXNzaWduX3BvaW50ZXIodGNwX3NrKG5yZXEtXFx1MDAzZXNrKS1cXHUwMDNlZmFzdG9wZW5fcnNrLCBucmVxKTtcXG4rXFx0fVxcbiBcXG4gXFx0cmV0dXJuIG5yZXE7XFxuIH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDY6NDg6MzQuNTYzNjAxODI3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDcxNDk1NTgyMTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaW5ldF9jc2tfY29tcGxldGVfaGFzaGRhbmNlXCIsXG4gICAgXCJpbmV0X2Nza19saXN0ZW5fc3RvcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFRDUCBGYXN0IE9wZW4gcmVxdWVzdCBzb2NrZXQgY2xvbmluZyBsb2dpYyBpbiBpbmV0X3JlcXNrX2Nsb25lIHRvIHByb3Blcmx5IGNoYXJnZSB0aGUgZmFzdG9wZW4gcXVldWUgbGVuZ3RoLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgbG9naWMgdGhhdCBoYW5kbGVzIFRDUCBjb25uZWN0aW9ucyBhbmQgbGlzdGVuaW5nIHNvY2tldHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDE2ZjczMTYwMGUxMGVhZmVkZTExZDk4OWY2MWI5ZDJjZTFiYTdlMDRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDA2OjQ4OjMzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYyBiL25ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmNcbmluZGV4IDU2OTAyYmJhNTQ4MzguLjYyNTc0NTliY2VlMjQgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jXG4rKysgYi9uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jXG5AQCAtOTQzLDExICs5NDMsMjMgQEAgc3RhdGljIHN0cnVjdCByZXF1ZXN0X3NvY2sgKmluZXRfcmVxc2tfY2xvbmUoc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxLFxuIFxuIFx0bnJlcS1cdTAwM2Vyc2tfbGlzdGVuZXIgPSBzaztcbiBcbi1cdC8qIFdlIG5lZWQgbm90IGFjcXVpcmUgZmFzdG9wZW5xLVx1MDAzZWxvY2tcbi1cdCAqIGJlY2F1c2UgdGhlIGNoaWxkIHNvY2tldCBpcyBsb2NrZWQgaW4gaW5ldF9jc2tfbGlzdGVuX3N0b3AoKS5cbi1cdCAqL1xuLVx0aWYgKHNrLVx1MDAzZXNrX3Byb3RvY29sID09IElQUFJPVE9fVENQIFx1MDAyNlx1MDAyNiB0Y3BfcnNrKG5yZXEpLVx1MDAzZXRmb19saXN0ZW5lcilcbitcdGlmIChzay1cdTAwM2Vza19wcm90b2NvbCA9PSBJUFBST1RPX1RDUCBcdTAwMjZcdTAwMjYgdGNwX3JzayhucmVxKS1cdTAwM2V0Zm9fbGlzdGVuZXIpIHtcbitcdFx0c3RydWN0IGZhc3RvcGVuX3F1ZXVlICpmYXN0b3BlbnE7XG4rXG4rXHRcdC8qIHJlcXNrX2Zhc3RvcGVuX3JlbW92ZSgpIHdpbGwgdW5jaGFyZ2UgbnJlcS1cdTAwM2Vyc2tfbGlzdGVuZXIsXG4rXHRcdCAqIHRoYXQgaXMgQHNrLCBzbyBjaGFyZ2UgaXQgaGVyZS4gIFVubGlrZSB0aGUgbGlzdGVuZXJcbitcdFx0ICogYmVpbmcgY2xvc2VkLCBAc2sgaXMgbGl2ZSBhbmQgbmVlZHMgaXRzIGxvY2suXG4rXHRcdCAqL1xuK1x0XHRmYXN0b3BlbnEgPSBcdTAwMjZpbmV0X2NzayhzayktXHUwMDNlaWNza19hY2NlcHRfcXVldWUuZmFzdG9wZW5xO1xuK1x0XHRzcGluX2xvY2tfYmgoXHUwMDI2ZmFzdG9wZW5xLVx1MDAzZWxvY2spO1xuK1x0XHRmYXN0b3BlbnEtXHUwMDNlcWxlbisrO1xuK1x0XHRzcGluX3VubG9ja19iaChcdTAwMjZmYXN0b3BlbnEtXHUwMDNlbG9jayk7XG4rXG4rXHRcdC8qIFdlIG5lZWQgbm90IGFjcXVpcmUgZmFzdG9wZW5xLVx1MDAzZWxvY2tcbitcdFx0ICogYmVjYXVzZSB0aGUgY2hpbGQgc29ja2V0IGlzIGxvY2tlZCBpbiBpbmV0X2Nza19saXN0ZW5fc3RvcCgpLlxuK1x0XHQgKi9cbiBcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKHRjcF9zayhucmVxLVx1MDAzZXNrKS1cdTAwM2VmYXN0b3Blbl9yc2ssIG5yZXEpO1xuK1x0fVxuIFxuIFx0cmV0dXJuIG5yZXE7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDY6NDg6MzQuNTYzNjAzODg3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY1NjU4MDU2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGFjdCBvZiBhIFRDUCBGYXN0IE9wZW4gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCdzIHRvdWNoaW5nIGBuZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jYC4gU3BlY2lmaWNhbGx5LCBpdCdzIG1vZGlmeWluZyB0aGUgYGluZXRfcmVxc2tfY2xvbmVgIGZ1bmN0aW9uLiBUaGUga2V5IGhlcmUgaXMgdGhlIGFkZGl0aW9uIG9mIGBmYXN0b3BlbnEtXHUwMDNlcWxlbmAgY2hhcmdpbmcuIEl0IHNlZW1zIGxpa2Ugd2UncmUgYWNjb3VudGluZyBmb3IgVENQIEZhc3QgT3BlbiByZXF1ZXN0cyB3aGVuIGEgbmV3IHJlcXVlc3Qgc29ja2V0IGlzIGJlaW5nIGNsb25lZC5cblxuTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBkcmlsbCBkb3duIG9uIGBpbmV0X3JlcXNrX2Nsb25lYC4gSSBuZWVkIHRvIGZ1bGx5IHVuZGVyc3RhbmQgaXRzIGZ1bmN0aW9uIGFuZCwgaW1wb3J0YW50bHksIHdoYXQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIG5ldyBhY2NvdW50aW5nIGFyZS4gSSdsbCBuZWVkIHRvIGNhcmVmdWxseSByZXZpZXcgdGhlIGNvZGUgYW5kIGNvbnNpZGVyIGl0cyBpbXBhY3Qgb24gcmVzb3VyY2UgbWFuYWdlbWVudCwgcGFydGljdWxhcmx5IHF1ZXVlIGxlbmd0aCBsaW1pdHMuXG5cblRoZW4sIEknbGwgYWJzb2x1dGVseSBuZWVkIHRvIGlkZW50aWZ5IGFsbCB0aGUgY2FsbGVycyBvZiBgaW5ldF9yZXFza19jbG9uZWAuIFRoaXMgaXMgY3JpdGljYWwuIFVuZGVyc3RhbmRpbmcgKndoZXJlKiBhbmQgKmhvdyogdGhpcyBmdW5jdGlvbiBpcyBiZWluZyB1c2VkIHdpbGwgdGVsbCBtZSB0aGUgb3ZlcmFsbCBzY29wZSBvZiB0aGUgY2hhbmdlIGFuZCB3aGF0IHBhcnRzIG9mIHRoZSBuZXR3b3JraW5nIHN0YWNrIHdpbGwgYmUgYWZmZWN0ZWQuIEknbGwgbmVlZCB0byB0aGluayBhYm91dCBwb3RlbnRpYWwgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIFRDUCBzdGFjayBhbmQgY29uc2lkZXIgZWRnZSBjYXNlcy4gSSdsbCBiZSBsb29raW5nIGZvciBhbnkgcGxhY2Ugd2hlcmUgdGhlc2UgY2FsbHMgbWlnaHQgY3JlYXRlIHVuaW50ZW5kZWQgY29uc2VxdWVuY2VzIG9yIHZ1bG5lcmFiaWxpdGllcy4gRXNzZW50aWFsbHksIEkgbmVlZCB0aGUgZnVsbCBwaWN0dXJlIGJlZm9yZSBJIGNhbiBldmFsdWF0ZSB0aGUgcGF0Y2ggcHJvcGVybHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMTYsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA2OjQ4OjM4LjIyMDE4ODU5OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDE4NjA0NTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImluZXRfcmVxc2tfY2xvbmVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYz05MDQ9dm9pZCBfX3JlcXNrX2ZyZWUoc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKVxcbi0tXFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy05MTItXFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYzo5MTM6c3RhdGljIHN0cnVjdCByZXF1ZXN0X3NvY2sgKmluZXRfcmVxc2tfY2xvbmUoc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxLFxcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtOTE0LVxcdFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHNvY2sgKnNrKVxcbi0tXFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYz0xMDMzPXN0YXRpYyB2b2lkIHJlcXNrX3RpbWVyX2hhbmRsZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpXFxuLS1cXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTEwNDktXFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYzoxMDUwOlxcdFxcdG5yZXEgPSBpbmV0X3JlcXNrX2Nsb25lKHJlcSwgbnNrKTtcXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTEwNTEtXFx0XFx0aWYgKCFucmVxKVxcbi0tXFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYz0xNDE3PXN0cnVjdCBzb2NrICppbmV0X2Nza19jb21wbGV0ZV9oYXNoZGFuY2Uoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc29jayAqY2hpbGQsXFxuLS1cXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTE0MzAtXFx0XFx0XFx0LyogaG9sZCBhIHJlZmNudCBmb3IgdGhlIG5yZXEtXFx1MDAzZXJza19saXN0ZW5lclxcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM6MTQzMTpcXHRcXHRcXHQgKiB3aGljaCBpcyBhc3NpZ25lZCBpbiBpbmV0X3JlcXNrX2Nsb25lKClcXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTE0MzItXFx0XFx0XFx0ICovXFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xNDMzLVxcdFxcdFxcdHNvY2tfaG9sZChzayk7XFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYzoxNDM0OlxcdFxcdFxcdG5yZXEgPSBpbmV0X3JlcXNrX2Nsb25lKHJlcSwgc2spO1xcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtMTQzNS1cXHRcXHRcXHRpZiAoIW5yZXEpIHtcXG4tLVxcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM9MTQ2Nj12b2lkIGluZXRfY3NrX2xpc3Rlbl9zdG9wKHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtMTQ5MC1cXHRcXHRpZiAobnNrKSB7XFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYzoxNDkxOlxcdFxcdFxcdG5yZXEgPSBpbmV0X3JlcXNrX2Nsb25lKHJlcSwgbnNrKTtcXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTE0OTItXFx0XFx0XFx0aWYgKG5yZXEpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDY6NDg6NDAuNjM4Nzk5Nzk5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjY0Njg4MDIzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENvbnRleHQgb2YgYGluZXRfcmVxc2tfY2xvbmVgKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGluZXRfcmVxc2tfY2xvbmVgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgdGhpcyBpcyBjb3JlIGtlcm5lbCBUQ1AvSVB2NCBjb25uZWN0aW9uIHN0dWZmLiBJIHNlZSBpdCdzIGNhbGxlZCBmcm9tIGByZXFza190aW1lcl9oYW5kbGVyYCwgYGluZXRfY3NrX2NvbXBsZXRlX2hhc2hkYW5jZWAsIGFuZCBgaW5ldF9jc2tfbGlzdGVuX3N0b3BgIC0gYWxsIGtleSBmdW5jdGlvbnMgaW4gdGhlIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCBhbmQgdGVhcmRvd24gcHJvY2Vzcy4gVGhpcyBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBjcml0aWNhbCBsb2dpYy4gTXkgbmV4dCBzdGVwLCBhcyBhbHdheXMsIGlzIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBmdW5jdGlvbiBpcyBkZXBlbmRlbnQgb24gYW55IHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9ucy4gSSdtIGdvaW5nIHRvIHRyYWNrIGRvd24gdGhlIHNvdXJjZSBmaWxlOyBsb29rcyBsaWtlIGl0J3MgaW4gYG5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmNgLiBOb3csIGxldCdzIGp1c3QgZ3JlcCB0aGUgYE1ha2VmaWxlYCBpbiB0aGF0IGRpcmVjdG9yeSB0byBzZWUgaWYgaXQgaGFzIGFueSBzcGVjaWFsIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjY5LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA2OjQ4OjQ3LjI4NTY4Mzg1NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTQxMTQ5NjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW5ldF9jb25uZWN0aW9uX3NvY2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvTWFrZWZpbGU9Nj1vYmoteSAgICAgOj0gcm91dGUubyBpbmV0cGVlci5vIHByb3RvY29sLm8gXFxcXFxcbi0tXFxubmV0L2lwdjQvTWFrZWZpbGUtOC1cXHQgICAgIGlwX291dHB1dC5vIGlwX3NvY2tnbHVlLm8gaW5ldF9oYXNodGFibGVzLm8gXFxcXFxcbm5ldC9pcHY0L01ha2VmaWxlOjk6XFx0ICAgICBpbmV0X3RpbWV3YWl0X3NvY2subyBpbmV0X2Nvbm5lY3Rpb25fc29jay5vIFxcXFxcXG5uZXQvaXB2NC9NYWtlZmlsZS0xMC1cXHQgICAgIHRjcC5vIHRjcF9pbnB1dC5vIHRjcF9vdXRwdXQubyB0Y3BfdGltZXIubyB0Y3BfaXB2NC5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDY6NDg6NDcuMzk5ODA0MDc5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk1OTkxNzI1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duLCBnaXZlbiBteSBleHBlcnRpc2U6XG5cbioqVENQIEZhc3QgT3BlbiBhbmQgSVB2NCBDb21waWxhdGlvbiBJbnF1aXJ5KipcblxuQWxyaWdodCwgc28gdGhlIGNvZGUncyBjb21waWxlZCB1bmNvbmRpdGlvbmFsbHkgZm9yIElQdjQg4oCTIGEgYml0IG9mIGEgZGVmYXVsdCwgcGVyaGFwcywgYnV0IGl0J3MgdGhlIGZvdW5kYXRpb24gd2UgbmVlZCB0byBhZGRyZXNzLiBUaGlzIGltcGxpZXMgSVB2NCBzdXBwb3J0IGlzIGJha2VkIGluLCB3aGljaCBpc24ndCB1bmV4cGVjdGVkLiBOb3csIHRoZSBjb250ZXh0IGltbWVkaWF0ZWx5IGJyaW5ncyBUQ1AgRmFzdCBPcGVuIHRvIG1pbmQsIGFuZCBJIHN1c3BlY3QgYSByZWxhdGlvbnNoaXAgaGVyZS4gSXQncyBhbG1vc3QgZ3VhcmFudGVlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSB0d28gYXJlIGNvbm5lY3RlZCB3aXRoaW4gdGhpcyBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbi5cblxuTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIHRoZW4gYmVjb21lczogaXMgdGhlcmUgYSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHNldHRpbmcsIGEgZmxhZywgb3IgYSBrbm9iIHNvbWV3aGVyZSwgdGhhdCBleHBsaWNpdGx5IGNvbnRyb2xzIG9yIGVuYWJsZXMvZGlzYWJsZXMgVENQIEZhc3QgT3BlbiBpbiB0aGlzIGJ1aWxkPyBPciwgaXMgaXRzIHN1cHBvcnQgYXNzdW1lZCwgYXV0b21hdGljYWxseSB0cmlnZ2VyZWQgaWYgdGhlIHVuZGVybHlpbmcgc3lzdGVtIHN1cHBvcnRzIGl0IGFuZCB0aGUgYXBwcm9wcmlhdGUgZGF0YSBpcyBwcmVzZW50PyBUaGlzIGlzIHRoZSBjb3JlIGlzc3VlIHRoYXQgSSBuZWVkIHRvIHJlc29sdmUsIGFuZCB0aGlzIHdpbGwgZGV0ZXJtaW5lIGhvdyBkZWVwbHkgSSB3aWxsIGRpdmUgaW50byB0aGlzIHNwZWNpZmljIGltcGxlbWVudGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzI2LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDY6NDg6NTIuMzU5NzIzOTMxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NjA3MzUxNSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiVENQX0ZBU1RPUEVOXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA2OjQ4OjUyLjYwNTgwNjU0NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNzYzNjExMzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRhY2tsaW5nIHRoaXMgaXNzdWUsIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnRpc2U6XG5cbioqQ2hlY2tpbmcgdGhlIFRDUCBGYXN0IE9wZW4gSW1wbGVtZW50YXRpb24qKlxuXG5SaWdodCwgc28gSSdtIHRoaW5raW5nLCBiYXNlZCBvbiB3aGF0IEkndmUgZW5jb3VudGVyZWQsIHRoYXQgdGhlIGJlaGF2aW9yIEknbSBzZWVpbmcgaXMgbGlrZWx5IHJlbGF0ZWQgdG8gaG93IFRDUCBGYXN0IE9wZW4gaXMgaGFuZGxlZC4gTXkgZ3V0IGZlZWxpbmcgaXMgbGVhZGluZyBtZSB0byB0aGUga2VybmVsLWxldmVsIGltcGxlbWVudGF0aW9uLiBHaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBwcm9ibGVtLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIEZhc3QgT3BlbiBvcHRpb25zIGFyZSBpbnRlcnByZXRlZCBhbmQgdXRpbGl6ZWQuIFRoZXJlZm9yZSwgbXkgaW1tZWRpYXRlIGluY2xpbmF0aW9uIGlzIHRvIGV4YW1pbmUgdGhlIHNvdXJjZSBjb2RlLCBzcGVjaWZpY2FsbHkgc29tZXRoaW5nIGxpa2UgYG5ldC9pcHY0L3RjcF9mYXN0b3Blbi5jYCwgb3IgYSBzaW1pbGFyIGZpbGUgd2l0aGluIHRoZSBuZXR3b3JraW5nIHN0YWNrLiBUaGF0J3MgdGhlIGZpcnN0IHBsYWNlIEknZCBsb29rIHRvIHNlZSB0aGUgZGV0YWlsZWQgaGFuZGxpbmcgb2YgdGhlIEZhc3QgT3BlbiBmdW5jdGlvbmFsaXR5LiBJIG5lZWQgdGhlIHNwZWNpZmljcyBvZiB0aGUgRmFzdCBPcGVuIGJlaGF2aW9yIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGlzc3VlcyBhcmUgb2NjdXJyaW5nLiBGcm9tIGhlcmUsIEkgY2FuIGV4YW1pbmUgdGhlIGNhbGwgc3RhY2ssIGRlYnVnIHRoZSBwYWNrZXRzLCBvciBpbnN0cnVtZW50IHRoZSBuZXR3b3JrIHN0YWNrIHRvIHBpbnBvaW50IHRoZSBpc3N1ZXMgYXQgaGFuZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDAwNCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA2OjQ4OjU1LjY4MjE3MDM4NFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE0MDAxNjQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlRDUF9GQVNUT1BFTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvYWZfaW5ldC5jPTE5OD1pbnQgX19pbmV0X2xpc3Rlbl9zayhzdHJ1Y3Qgc29jayAqc2ssIGludCBiYWNrbG9nKVxcbi0tXFxubmV0L2lwdjQvYWZfaW5ldC5jLTIxMC1cXHRpZiAob2xkX3N0YXRlICE9IFRDUF9MSVNURU4pIHtcXG5uZXQvaXB2NC9hZl9pbmV0LmM6MjExOlxcdFxcdC8qIEVuYWJsZSBURk8gdy9vIHJlcXVpcmluZyBUQ1BfRkFTVE9QRU4gc29ja2V0IG9wdGlvbi5cXG5uZXQvaXB2NC9hZl9pbmV0LmMtMjEyLVxcdFxcdCAqIE5vdGUgdGhhdCBvbmx5IFRDUCBzb2NrZXRzIChTT0NLX1NUUkVBTSkgd2lsbCByZWFjaCBoZXJlLlxcbi0tXFxubmV0L2lwdjQvYWZfaW5ldC5jPTYzMT1pbnQgX19pbmV0X3N0cmVhbV9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICp1YWRkcixcXG4tLVxcbm5ldC9pcHY0L2FmX2luZXQuYy02NDAtXFx0ICogc2sgaXMgYSBUQ1AgZmFzdG9wZW4gYWN0aXZlIHNvY2tldCBhbmRcXG5uZXQvaXB2NC9hZl9pbmV0LmM6NjQxOlxcdCAqIFRDUF9GQVNUT1BFTl9DT05ORUNUIHNvY2tvcHQgaXMgc2V0IGFuZFxcbm5ldC9pcHY0L2FmX2luZXQuYy02NDItXFx0ICogd2UgYWxyZWFkeSBoYXZlIGEgdmFsaWQgY29va2llIGZvciB0aGlzIHNvY2tldC5cXG4tLVxcbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jPTI5MT1zdGF0aWMgaW50IHByb2NfdGNwX2Zhc3RvcGVuX2tleShjb25zdCBzdHJ1Y3QgY3RsX3RhYmxlICp0YWJsZSwgaW50IHdyaXRlLFxcbi0tXFxubmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmMtMjk4LVxcdCAqL1xcbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jOjI5OTpcXHRzdHJ1Y3QgY3RsX3RhYmxlIHRibCA9IHsgLm1heGxlbiA9ICgoVENQX0ZBU1RPUEVOX0tFWV9MRU5HVEggKlxcbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jOjMwMDpcXHRcXHRcXHRcXHRcXHQgICAgMiAqIFRDUF9GQVNUT1BFTl9LRVlfTUFYKSArXFxubmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmM6MzAxOlxcdFxcdFxcdFxcdFxcdCAgICAoVENQX0ZBU1RPUEVOX0tFWV9NQVggKiA1KSkgfTtcXG5uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuYzozMDI6XFx0dTMyIHVzZXJfa2V5W1RDUF9GQVNUT1BFTl9LRVlfQlVGX0xFTkdUSCAvIHNpemVvZih1MzIpXTtcXG5uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuYzozMDM6XFx0X19sZTMyIGtleVtUQ1BfRkFTVE9QRU5fS0VZX0JVRl9MRU5HVEggLyBzaXplb2YoX19sZTMyKV07XFxubmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmMtMzA0LVxcdGNoYXIgKmJhY2t1cF9kYXRhO1xcbi0tXFxubmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmMtMzEyLVxcdGlmICghbl9rZXlzKSB7XFxubmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmM6MzEzOlxcdFxcdG1lbXNldChcXHUwMDI2a2V5WzBdLCAwLCBUQ1BfRkFTVE9QRU5fS0VZX0xFTkdUSCk7XFxubmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmMtMzE0LVxcdFxcdG5fa2V5cyA9IDE7XFxuLS1cXG5uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuYz02Mjc9c3RhdGljIHN0cnVjdCBjdGxfdGFibGUgaXB2NF9uZXRfdGFibGVbXSA9IHtcXG4tLVxcbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jLTExMzktXFx0XFx0ICovXFxubmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmM6MTE0MDpcXHRcXHQubWF4bGVuXFx0XFx0PSAoKFRDUF9GQVNUT1BFTl9LRVlfTEVOR1RIICpcXG5uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuYzoxMTQxOlxcdFxcdFxcdFxcdCAgIDIgKiBUQ1BfRkFTVE9QRU5fS0VZX01BWCkgK1xcbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jOjExNDI6XFx0XFx0XFx0XFx0ICAgKFRDUF9GQVNUT1BFTl9LRVlfTUFYICogNSkpLFxcbm5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jLTExNDMtXFx0XFx0LnByb2NfaGFuZGxlclxcdD0gcHJvY190Y3BfZmFzdG9wZW5fa2V5LFxcbi0tXFxubmV0L2lwdjQvdGNwLmM9MzgzNz1pbnQgZG9fdGNwX3NldHNvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxcbi0tXFxubmV0L2lwdjQvdGNwLmMtMzg4NC1cXHR9XFxubmV0L2lwdjQvdGNwLmM6Mzg4NTpcXHRjYXNlIFRDUF9GQVNUT1BFTl9LRVk6IHtcXG5uZXQvaXB2NC90Y3AuYzozODg2OlxcdFxcdF9fdTgga2V5W1RDUF9GQVNUT1BFTl9LRVlfQlVGX0xFTkdUSF07XFxubmV0L2lwdjQvdGNwLmMtMzg4Ny1cXHRcXHRfX3U4ICpiYWNrdXBfa2V5ID0gTlVMTDtcXG4tLVxcbm5ldC9pcHY0L3RjcC5jLTM4OTEtXFx0XFx0ICovXFxubmV0L2lwdjQvdGNwLmM6Mzg5MjpcXHRcXHRpZiAob3B0bGVuICE9IFRDUF9GQVNUT1BFTl9LRVlfTEVOR1RIIFxcdTAwMjZcXHUwMDI2XFxubmV0L2lwdjQvdGNwLmM6Mzg5MzpcXHRcXHQgICAgb3B0bGVuICE9IFRDUF9GQVNUT1BFTl9LRVlfQlVGX0xFTkdUSClcXG5uZXQvaXB2NC90Y3AuYy0zODk0LVxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxubmV0L2lwdjQvdGNwLmMtMzg5OC1cXG5uZXQvaXB2NC90Y3AuYzozODk5OlxcdFxcdGlmIChvcHRsZW4gPT0gVENQX0ZBU1RPUEVOX0tFWV9CVUZfTEVOR1RIKVxcbm5ldC9pcHY0L3RjcC5jOjM5MDA6XFx0XFx0XFx0YmFja3VwX2tleSA9IGtleSArIFRDUF9GQVNUT1BFTl9LRVlfTEVOR1RIO1xcbm5ldC9pcHY0L3RjcC5jLTM5MDEtXFxuLS1cXG5uZXQvaXB2NC90Y3AuYy00MDk3LSNlbmRpZlxcbm5ldC9pcHY0L3RjcC5jOjQwOTg6XFx0Y2FzZSBUQ1BfRkFTVE9QRU46XFxubmV0L2lwdjQvdGNwLmMtNDA5OS1cXHRcXHRpZiAodmFsIFxcdTAwM2U9IDAgXFx1MDAyNlxcdTAwMjYgKCgxIFxcdTAwM2NcXHUwMDNjIHNrLVxcdTAwM2Vza19zdGF0ZSkgXFx1MDAyNiAoVENQRl9DTE9TRSB8XFxuLS1cXG5uZXQvaXB2NC90Y3AuYy00MTA3LVxcdFxcdGJyZWFrO1xcbm5ldC9pcHY0L3RjcC5jOjQxMDg6XFx0Y2FzZSBUQ1BfRkFTVE9QRU5fQ09OTkVDVDpcXG5uZXQvaXB2NC90Y3AuYy00MTA5LVxcdFxcdGlmICh2YWwgXFx1MDAzZSAxIHx8IHZhbCBcXHUwMDNjIDApIHtcXG4tLVxcbm5ldC9pcHY0L3RjcC5jLTQxMjAtXFx0XFx0YnJlYWs7XFxubmV0L2lwdjQvdGNwLmM6NDEyMTpcXHRjYXNlIFRDUF9GQVNUT1BFTl9OT19DT09LSUU6XFxubmV0L2lwdjQvdGNwLmMtNDEyMi1cXHRcXHRpZiAodmFsIFxcdTAwM2UgMSB8fCB2YWwgXFx1MDAzYyAwKVxcbi0tXFxubmV0L2lwdjQvdGNwLmM9NDQ4MT1pbnQgZG9fdGNwX2dldHNvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGV2ZWwsXFxuLS1cXG5uZXQvaXB2NC90Y3AuYy00NjA0LVxcbm5ldC9pcHY0L3RjcC5jOjQ2MDU6XFx0Y2FzZSBUQ1BfRkFTVE9QRU5fS0VZOiB7XFxubmV0L2lwdjQvdGNwLmM6NDYwNjpcXHRcXHR1NjQga2V5W1RDUF9GQVNUT1BFTl9LRVlfQlVGX0xFTkdUSCAvIHNpemVvZih1NjQpXTtcXG5uZXQvaXB2NC90Y3AuYy00NjA3LVxcdFxcdHVuc2lnbmVkIGludCBrZXlfbGVuO1xcbi0tXFxubmV0L2lwdjQvdGNwLmMtNDYxMi1cXHRcXHRrZXlfbGVuID0gdGNwX2Zhc3RvcGVuX2dldF9jaXBoZXIobmV0LCBpY3NrLCBrZXkpICpcXG5uZXQvaXB2NC90Y3AuYzo0NjEzOlxcdFxcdFxcdFxcdFRDUF9GQVNUT1BFTl9LRVlfTEVOR1RIO1xcbm5ldC9pcHY0L3RjcC5jLTQ2MTQtXFx0XFx0bGVuID0gbWluX3QodW5zaWduZWQgaW50LCBsZW4sIGtleV9sZW4pO1xcbi0tXFxubmV0L2lwdjQvdGNwLmMtNDY3NC1cXG5uZXQvaXB2NC90Y3AuYzo0Njc1OlxcdGNhc2UgVENQX0ZBU1RPUEVOOlxcbm5ldC9pcHY0L3RjcC5jLTQ2NzYtXFx0XFx0dmFsID0gUkVBRF9PTkNFKGljc2stXFx1MDAzZWljc2tfYWNjZXB0X3F1ZXVlLmZhc3RvcGVucS5tYXhfcWxlbik7XFxuLS1cXG5uZXQvaXB2NC90Y3AuYy00Njc4LVxcbm5ldC9pcHY0L3RjcC5jOjQ2Nzk6XFx0Y2FzZSBUQ1BfRkFTVE9QRU5fQ09OTkVDVDpcXG5uZXQvaXB2NC90Y3AuYy00NjgwLVxcdFxcdHZhbCA9IHRwLVxcdTAwM2VmYXN0b3Blbl9jb25uZWN0O1xcbi0tXFxubmV0L2lwdjQvdGNwLmMtNDY4Mi1cXG5uZXQvaXB2NC90Y3AuYzo0NjgzOlxcdGNhc2UgVENQX0ZBU1RPUEVOX05PX0NPT0tJRTpcXG5uZXQvaXB2NC90Y3AuYy00Njg0LVxcdFxcdHZhbCA9IHRwLVxcdTAwM2VmYXN0b3Blbl9ub19jb29raWU7XFxuLS1cXG5uZXQvaXB2NC90Y3BfZmFzdG9wZW4uYz05ND12b2lkIHRjcF9mYXN0b3Blbl9pbml0X2tleV9vbmNlKHN0cnVjdCBuZXQgKm5ldClcXG5uZXQvaXB2NC90Y3BfZmFzdG9wZW4uYy05NS17XFxubmV0L2lwdjQvdGNwX2Zhc3RvcGVuLmM6OTY6XFx0dTgga2V5W1RDUF9GQVNUT1BFTl9LRVlfTEVOR1RIXTtcXG5uZXQvaXB2NC90Y3BfZmFzdG9wZW4uYy05Ny1cXHRzdHJ1Y3QgdGNwX2Zhc3RvcGVuX2NvbnRleHQgKmN0eHQ7XFxuLS1cXG5uZXQvaXB2NC90Y3BfZmFzdG9wZW4uYz0yMDU9c3RhdGljIGJvb2wgX190Y3BfZmFzdG9wZW5fY29va2llX2dlbl9jaXBoZXIoc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxLFxcbi0tXFxubmV0L2lwdjQvdGNwX2Zhc3RvcGVuLmMtMjA5LXtcXG5uZXQvaXB2NC90Y3BfZmFzdG9wZW4uYzoyMTA6XFx0QlVJTERfQlVHX09OKFRDUF9GQVNUT1BFTl9DT09LSUVfU0laRSAhPSBzaXplb2YodTY0KSk7XFxubmV0L2lwdjQvdGNwX2Zhc3RvcGVuLmMtMjExLVxcbi0tXFxubmV0L2lwdjQvdGNwX2Zhc3RvcGVuLmMtMjE4LVxcdFxcdFxcdFxcdFxcdCAga2V5KSk7XFxubmV0L2lwdjQvdGNwX2Zhc3RvcGVuLmM6MjE5OlxcdFxcdGZvYy1cXHUwMDNlbGVuID0gVENQX0ZBU1RPUEVOX0NPT0tJRV9TSVpFO1xcbm5ldC9pcHY0L3RjcF9mYXN0b3Blbi5jLTIyMC1cXHRcXHRyZXR1cm4gdHJ1ZTtcXG4tLVxcbm5ldC9pcHY0L3RjcF9mYXN0b3Blbi5jLTIyOS1cXHRcXHRcXHRcXHRcXHQgIGtleSkpO1xcbm5ldC9pcHY0L3RjcF9mYXN0b3Blbi5jOjIzMDpcXHRcXHRmb2MtXFx1MDAzZWxlbiA9IFRDUF9GQVNUT1BFTl9DT09LSUVfU0laRTtcXG5uZXQvaXB2NC90Y3BfZmFzdG9wZW4uYy0yMzEtXFx0XFx0cmV0dXJuIHRydWU7XFxuLS1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYz00NDgzPXN0YXRpYyB2b2lkIHRjcF9wYXJzZV9mYXN0b3Blbl9vcHRpb24oaW50IGxlbiwgY29uc3QgdW5zaWduZWQgY2hhciAqY29va2llLFxcbi0tXFxubmV0L2lwdjQvdGNwX2lucHV0LmMtNDQ5MC1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYzo0NDkxOlxcdGlmIChsZW4gXFx1MDAzZT0gVENQX0ZBU1RPUEVOX0NPT0tJRV9NSU4gXFx1MDAyNlxcdTAwMjZcXG5uZXQvaXB2NC90Y3BfaW5wdXQuYzo0NDkyOlxcdCAgICBsZW4gXFx1MDAzYz0gVENQX0ZBU1RPUEVOX0NPT0tJRV9NQVgpXFxubmV0L2lwdjQvdGNwX2lucHV0LmMtNDQ5My1cXHRcXHRtZW1jcHkoZm9jLVxcdTAwM2V2YWwsIGNvb2tpZSwgbGVuKTtcXG4tLVxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jPTcxNTI9dGNwX3Jjdl9zdGF0ZV9wcm9jZXNzKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTcyMTctXFxubmV0L2lwdjQvdGNwX2lucHV0LmM6NzIxODpcXHRcXHRTS0JfRFJfU0VUKHJlYXNvbiwgVENQX0ZBU1RPUEVOKTtcXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy03MjE5LVxcdFxcdGlmICghdGNwX2NoZWNrX3JlcShzaywgc2tiLCByZXEsIHRydWUsIFxcdTAwMjZyZXFfc3RvbGVuLCBcXHUwMDI2cmVhc29uKSlcXG4tLVxcbm5ldC9pcHY0L3RjcF9tZXRyaWNzLmM9NjE4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSB0Y3BfbWV0cmljc19ubF9wb2xpY3lbVENQX01FVFJJQ1NfQVRUUl9NQVggKyAxXSA9IHtcXG4tLVxcbm5ldC9pcHY0L3RjcF9tZXRyaWNzLmMtNjM4LVxcdFtUQ1BfTUVUUklDU19BVFRSX0ZPUEVOX0NPT0tJRV1cXHQ9IHsgLnR5cGUgPSBOTEFfQklOQVJZLFxcbm5ldC9pcHY0L3RjcF9tZXRyaWNzLmM6NjM5OlxcdFxcdFxcdFxcdFxcdCAgICAubGVuID0gVENQX0ZBU1RPUEVOX0NPT0tJRV9NQVgsIH0sXFxubmV0L2lwdjQvdGNwX21ldHJpY3MuYy02NDAtI2VuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA2OjQ4OjU1Ljc5NjE4MTc5N1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTQ2NzUxMjY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXMsIHByZXNlbnRlZCBhcyBpZiBJJ20gYW5hbHl6aW5nIHRoZSBzaXR1YXRpb246XG5cbioqVENQIEZhc3QgT3BlbiBDb25maWd1cmF0aW9uIC0gTGV0J3MgRGlnIERlZXBlcioqXG5cblJpZ2h0LCBzbyBUQ1AgRmFzdCBPcGVuIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBpbiB0aGUga2VybmVsLCB0aGF0J3Mgd2hhdCBJJ20gc2VlaW5nLiBCdXQgaGFuZyBvbiwgdGhpcyBpcyBpbnRlcmVzdGluZy4gSSBkb24ndCByZWNhbGwgc2VlaW5nIGEgZGVkaWNhdGVkIGBDT05GSUdfVENQX0ZBU1RPUEVOYCBmbGFnLiBUaGF0J3MgYSBsaXR0bGUgdW51c3VhbCwgY29uc2lkZXJpbmcgaG93IGNvbW1vbiBpdCBpcyB0byBoYXZlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gTWF5YmUgaXQncyBzdWJ0bHkgZW5hYmxlZCB0aHJvdWdoIGFub3RoZXIgcmVsYXRlZCBvcHRpb24/IE9yIHBlcmhhcHMgaXQncyBiYWtlZCBpbnRvIGEgYnJvYWRlciBUQ1AgZmVhdHVyZSBzZXQgd2l0aG91dCBhIGRpcmVjdCB0b2dnbGU/IExldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGUga2VybmVsIGNvbmZpZyBmaWxlcyBmb3IgYW55dGhpbmcgZXZlbiByZW1vdGVseSByZWxhdGVkLCBqdXN0IGluIGNhc2UuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIHNvbWUgc3VidGxlIG51YW5jZSBpbiBpdHMgY29uZmlndXJhdGlvbi4gTGV0J3Mgc2VlIGlmIGEgc2ltcGxlIHNlYXJjaCBoZWxwcyB1bmNvdmVyIGFueSBjbHVlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjkzMSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA2OjQ4OjU4Ljc0MjkzNjA5NFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjYwNzUzMzUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19UQ1BfRkFTVE9QRU5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNjo0ODo1OC44MDkwMTkxOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDQzMjkyMzU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgRm9jdXM6IGBpbmV0X3JlcXNrX2Nsb25lYCBhbmQgaXRzIENhbGxlcnMqKlxuXG5BbHJpZ2h0LCBzbyB0aGVyZSdzIG5vIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZmlsZSB0byB3b3JyeSBhYm91dCBoZXJlLCBnb29kLiBUaGlzIHBhdGNoIGlzIG1vZGlmeWluZyB0aGUgYGluZXRfcmVxc2tfY2xvbmVgIGZ1bmN0aW9uLCB3aGljaCBpcyBjYWxsZWQgZHVyaW5nIHJlcXVlc3Qgc29ja2V0IGNsb25pbmcuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGlkZW50aWZ5IHRoZSBmdW5jdGlvbnMgdGhhdCBjYWxsIGBpbmV0X3JlcXNrX2Nsb25lYCwgYXMgdGhvc2UgYXJlIHRoZSBrZXkgYXJlYXMgZm9yIGZ1enppbmcuIFNpbmNlIGBpbmV0X3JlcXNrX2Nsb25lYCBpcyBkZWNsYXJlZCBzdGF0aWMsIEknbGwgbmVlZCB0byBsb29rIGF0IGFsbCBpdHMgY2FsbCBzaXRlcyB0byB1bmRlcnN0YW5kIHdoZXJlIGl0J3MgYmVpbmcgdXNlZC5cblxuTGV0J3Mgc2VlLi4uIGl0J3MgY2FsbGVkIGJ5IGByZXFza190aW1lcl9oYW5kbGVyYCwgYGluZXRfY3NrX2NvbXBsZXRlX2hhc2hkYW5jZWAsIGFuZCBgaW5ldF9jc2tfbGlzdGVuX3N0b3BgLiBIbW0sIGByZXFza190aW1lcl9oYW5kbGVyYCBpcyBhIHRpbWVyIGhhbmRsZXIsIHdoaWNoIGNvdWxkIGJlIGludGVyZXN0aW5nIGZyb20gYSB0aW1pbmcgcGVyc3BlY3RpdmUuIEhvd2V2ZXIsIGBpbmV0X2Nza19jb21wbGV0ZV9oYXNoZGFuY2VgIGlzIGNhbGxlZCBmcm9tIGB0Y3BfdjRfc3luX3JlY3Zfc29ja2AgYW5kIGB0Y3BfdjZfc3luX3JlY3Zfc29ja2Agd2hpY2ggaGFuZGxlIFNZTiBwYWNrZXQgcmVjZXB0aW9uLiBUaGF0J3MgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcgYmVjYXVzZSBvZiB0aGUgcG90ZW50aWFsIGZvciBtYWxmb3JtZWQgU1lOIHBhY2tldHMsIGFuZCBzaW5jZSBpdCdzIHVzZWQgaW4gYm90aCBJUHY0IGFuZCBJUHY2LCB3ZSBoYXZlIHR3byB0YXJnZXRzIHRoZXJlLiBGaW5hbGx5LCBgaW5ldF9jc2tfbGlzdGVuX3N0b3BgIGlzIGNhbGxlZCB3aGVuIGNsb3NpbmcgYSBsaXN0ZW5pbmcgc29ja2V0LiBUaGF0IHNlZW1zIGEgYml0IGxlc3MgbGlrZWx5IHRvIGJlIGEgc291cmNlIG9mIGltbWVkaWF0ZSB2dWxuZXJhYmlsaXRpZXMgdGhhbiBTWU4gaGFuZGxpbmcsIGJ1dCB3ZSBjYW4ndCBydWxlIGl0IG91dC4gU28sIG15IHByaW1hcnkgZm9jdXMgc2hvdWxkIGJlIGBpbmV0X2Nza19jb21wbGV0ZV9oYXNoZGFuY2VgIGFuZCwgc2Vjb25kYXJpbHksIGBpbmV0X2Nza19saXN0ZW5fc3RvcGAuIE5vdywgSSBuZWVkIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgaW5ldF9jc2tfY29tcGxldGVfaGFzaGRhbmNlYCBhbmQgYGluZXRfY3NrX2xpc3Rlbl9zdG9wYCB0aGVtc2VsdmVzIHRvIGNvbmZpcm0gdGhlIGZ1enppbmcgYXR0YWNrIHN1cmZhY2UgYW5kIHBvdGVudGlhbCBmb3IgdnVsbmVyYWJpbGl0aWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjA5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA2OjQ5OjAzLjg1MjMxNDg1NloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQ2ODIxNjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW5ldF9jc2tfY29tcGxldGVfaGFzaGRhbmNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jPTEzOTM9c3RydWN0IHNvY2sgKmluZXRfY3NrX3JlcXNrX3F1ZXVlX2FkZChzdHJ1Y3Qgc29jayAqc2ssXFxuLS1cXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTE0MTYtXFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYzoxNDE3OnN0cnVjdCBzb2NrICppbmV0X2Nza19jb21wbGV0ZV9oYXNoZGFuY2Uoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc29jayAqY2hpbGQsXFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xNDE4LVxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEsIGJvb2wgb3duX3JlcSlcXG4tLVxcbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYz02ODc9c3RydWN0IHNvY2sgKnRjcF9jaGVja19yZXEoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jLTk1MS1cXHQqcmVxX3N0b2xlbiA9ICFvd25fcmVxO1xcbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYzo5NTI6XFx0cmV0dXJuIGluZXRfY3NrX2NvbXBsZXRlX2hhc2hkYW5jZShzaywgY2hpbGQsIHJlcSwgb3duX3JlcSk7XFxubmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jLTk1My1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDY6NDk6MDMuOTE3MDAxNjYyWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMTczNDc4NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkludmVzdGlnYXRpbmcgYGluZXRfY3NrX2NvbXBsZXRlX2hhc2hkYW5jZWAgVmlzaWJpbGl0eSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBpbmV0X2Nza19jb21wbGV0ZV9oYXNoZGFuY2VgLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXM6ICpJcyB0aGlzIGZ1bmN0aW9uIGV4cG9ydGVkLCBvciBpcyBpdCBhIG5vbi1zdGF0aWMsIGludGVybmFsIGhlbHBlciBmdW5jdGlvbiB3aXRoaW4gdGhlIGtlcm5lbD8qIFVuZGVyc3RhbmRpbmcgaXRzIHZpc2liaWxpdHkgaXMgY3J1Y2lhbCB0byBmaWd1cmluZyBvdXQgaG93IGl0J3MgdXNlZCBhbmQsIGNyaXRpY2FsbHksIHdoZXRoZXIgaXQncyBwYXJ0IG9mIGEgcHVibGljIEFQSSBvciBzb21ldGhpbmcgcHJpdmF0ZSB0byBhIHNwZWNpZmljIG5ldHdvcmtpbmcgc3Vic3lzdGVtLiBUaGlzIHRlbGxzIG1lIHdoZXRoZXIgSSdtIHBvdGVudGlhbGx5IGxvb2tpbmcgYXQgc29tZXRoaW5nIHRoYXQgY291bGQgYmUgcGFydCBvZiBhbiBpbnRlcmZhY2UgSSBtaWdodCBiZSBhYmxlIHRvIGxldmVyYWdlIGRpcmVjdGx5LCBvciBpZiBJIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBpbnRlcm5hbCB3b3JraW5ncyBvZiB0aGUgbmV0d29ya2luZyBzdGFjayB0byB1bmRlcnN0YW5kIGl0cyBiZWhhdmlvciBhbmQgaW1wbGljYXRpb25zLiBJdCdzIGEgZnVuZGFtZW50YWwgcXVlc3Rpb24gdGhhdCBkaXJlY3RzIHRoZSBlbnRpcmUgbGluZSBvZiBpbnF1aXJ5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTQzLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDY6NDk6MDYuOTM0MzUyNTc0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzUyNzExNSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTC4qaW5ldF9jc2tfY29tcGxldGVfaGFzaGRhbmNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDY6NDk6MDcuMDAxODg3NTFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA4Nzg4NjY1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgSSdtIHJlYWR5LiBMZXQncyBzZWUgd2hhdCB3ZSd2ZSBnb3QuIEhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyBmb3IgSGVhZGVyIFByZXNlbmNlKipcblxuQWxyaWdodCwgbXkgaW50ZXJuYWwgcHJvY2VzcyBzdGFydHMgaGVyZS4gSSdtIGltbWVkaWF0ZWx5IHNjYW5uaW5nIHRoZSB0ZXh0LiBUaGUgcHJpbWFyeSBnb2FsIGlzIHRvIGRldGVybWluZSBpZiB0aGUgcGhyYXNlIFwiTGV0J3MgY2hlY2sgaWYgaXQncyBpbiBhIGhlYWRlclwiIGlzIGNvbnRhaW5lZCB3aXRoaW4gYSBoZWFkZXIgZWxlbWVudCwgbGlrZSBhbiBIVE1MIGBcdTAwM2NoMVx1MDAzZWAgdGhyb3VnaCBgXHUwMDNjaDZcdTAwM2VgIHRhZyBvciBNYXJrZG93bidzIGAjYCBzeW50YXguIEl0J3MgYSBmdW5kYW1lbnRhbCBwYXJzaW5nIHRhc2ssIG11Y2ggbGlrZSBpbml0aWFsIHRva2VuaXphdGlvbiBpbiBsYXJnZXIgbGFuZ3VhZ2UgbW9kZWwgYXJjaGl0ZWN0dXJlcy4gVGhlIGFic2VuY2Ugb2YgYSBoZWFkZXIgc2lnbmFscyBhIGRpZmZlcmVudCBzZXQgb2Ygc3Vic2VxdWVudCBhbmFseXNpcyBhcHByb2FjaGVzLiBJZiBpdCAqaXMqIGluIGEgaGVhZGVyLCBJJ2xsIG5lZWQgdG8gcmVjb2duaXplIHRoaXMgc3RydWN0dXJhbCBlbGVtZW50IGFuZCBhZGFwdCBteSByZXNwb25zZSBhcHByb3ByaWF0ZWx5LiBUaGUgc3Vic2VxdWVudCBzdGVwcyBkZXBlbmQgZW50aXJlbHkgb24gdGhpcyBpbml0aWFsIGRldGVjdGlvbiBwaGFzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODM5MCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA2OjQ5OjEwLjA4OTc3NjM4OFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEwNDcxOTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImluZXRfY3NrX2NvbXBsZXRlX2hhc2hkYW5jZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvaW5ldF9jb25uZWN0aW9uX3NvY2suaD0yNzU9Ym9vbCBpbmV0X2Nza19yZXFza19xdWV1ZV9oYXNoX2FkZChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSk7XFxuaW5jbHVkZS9uZXQvaW5ldF9jb25uZWN0aW9uX3NvY2suaDoyNzY6c3RydWN0IHNvY2sgKmluZXRfY3NrX2NvbXBsZXRlX2hhc2hkYW5jZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBzb2NrICpjaGlsZCxcXG5pbmNsdWRlL25ldC9pbmV0X2Nvbm5lY3Rpb25fc29jay5oLTI3Ny1cXHRcXHRcXHRcXHRcXHQgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNjo0OToxMC4yMDAyNTQwMDFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ0NjYwMzM5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkNvbnNpZGVyaW5nIHRoZSBOb24tU3RhdGljIE5hdHVyZSoqXG5cbkFscmlnaHQsIHNvIHRoZSBjb3JlIGlzc3VlIGlzIHRoZSBub24tc3RhdGljIG5hdHVyZSBvZiB0aGlzIHNpdHVhdGlvbi4gSSdtIGltbWVkaWF0ZWx5IHRoaW5raW5nIGFib3V0IGhvdyB0aGF0IGR5bmFtaWMgZWxlbWVudCBpbXBhY3RzIGV2ZXJ5dGhpbmcuIFdlJ3JlIGRlYWxpbmcgd2l0aCBzb21ldGhpbmcgdGhhdCAqaXNuJ3QqIGZpeGVkLCBhbmQgdGhhdCBuZWNlc3NpdGF0ZXMgYSBtb3JlIGZsdWlkIGFuZCBwb3RlbnRpYWxseSBtb3JlIGNvbXBsZXggYXBwcm9hY2guIFdlIG5lZWQgdG8gYWNjb3VudCBmb3IgY2hhbmdpbmcgc3RhdGVzLCB2YXJpYWJsZXMsIGFuZCBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLiBJdCdzIGEgZnVuZGFtZW50YWwgc2hpZnQgaW4gcGVyc3BlY3RpdmUuIEFuZCwgZ2l2ZW4gdGhhdCBkeW5hbWljIGFzcGVjdCwgSSBpbW1lZGlhdGVseSBzdGFydCB0byB0aGluayBhYm91dCBob3cgdG8gYXBwbHkgdGhlIGxlc3NvbnMgSSd2ZSBsZWFybmVkIGZyb20gc2ltaWxhciBub24tc3RhdGljIGFyY2hpdGVjdHVyZXMuIFRoYXQgdW5kZXJzdGFuZGluZyBvZiB0aGUgdW5kZXJseWluZyBuZXR3b3JrIHN0YWNrIHdpbGwgYmUgY3JpdGljYWwuXG5cblRoZW4sIG15IG1pbmQganVtcHMgdG8gYSBzcGVjaWZpYyBmdW5jdGlvbjogYGluZXRfY3NrX2xpc3Rlbl9zdG9wYC4gSSBrbm93IHRoYXQgZnVuY3Rpb24gaXMgY3JpdGljYWxseSBpbXBvcnRhbnQgZm9yIGNsZWFubHkgc2h1dHRpbmcgZG93biBsaXN0ZW5pbmcgc29ja2V0cywgcHJldmVudGluZyByZXNvdXJjZSBsZWFrcywgYW5kIGVuc3VyaW5nIGdyYWNlZnVsIGhhbmRsaW5nIG9mIGNvbm5lY3Rpb25zLiBXaXRoIHRoaXMgbm9uLXN0YXRpYyBpc3N1ZSBpbiBtaW5kLCBJIG5lZWQgdG8gZXZhbHVhdGUgcHJlY2lzZWx5IGhvdyBgaW5ldF9jc2tfbGlzdGVuX3N0b3BgIHdpbGwgcmVhY3Qgb3IgaW50ZXJhY3Qgd2l0aCB0aGUgc2l0dWF0aW9uLiBJcyBpdCBhcHByb3ByaWF0ZSwgb3IgYXJlIHdlIGdvaW5nIHRvIG5lZWQgc29tZXRoaW5nIG1vcmU/IERvIHdlIG5lZWQgdG8gY2FsbCBpdCBhdCBhbGw/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyB0aGF0IHdlIG5lZWQgdG8gY29uc2lkZXIgaW4gdGhlIGNvbnRleHQgb2Ygb3VyIG5vbi1zdGF0aWMgc2l0dWF0aW9uPyBUaGlzIGlzIGEga2V5IHBvaW50LCBiZWNhdXNlIHRoYXQgZnVuY3Rpb24gY2FuIGJlIHRoZSBjcnVjaWFsIGVsZW1lbnQgdGhhdCBlbnN1cmVzIHN0YWJpbGl0eS4gV2UgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQgaXMgc3VmZmljaWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODcyMywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA2OjQ5OjEzLjY0Njg2MDI5N1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY5NjEzNzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW5ldF9jc2tfbGlzdGVuX3N0b3BcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L2luZXRfY29ubmVjdGlvbl9zb2NrLmg9MzExPWludCBpbmV0X2Nza19saXN0ZW5fc3RhcnQoc3RydWN0IHNvY2sgKnNrKTtcXG5pbmNsdWRlL25ldC9pbmV0X2Nvbm5lY3Rpb25fc29jay5oOjMxMjp2b2lkIGluZXRfY3NrX2xpc3Rlbl9zdG9wKHN0cnVjdCBzb2NrICpzayk7XFxuaW5jbHVkZS9uZXQvaW5ldF9jb25uZWN0aW9uX3NvY2suaC0zMTMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA2OjQ5OjEzLjcxMzgyNjkyM1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzcxNjE4Njc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXMgaWYgdGhlc2UgYXJlIG15IHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyBgaW5ldF9yZXFza19jbG9uZWAgVXNhZ2UqKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBJIHNlZSB0aGF0IHRoZSB0YXJnZXQgaXMgYSBub24tc3RhdGljIGZ1bmN0aW9uLiBUaGF0IGltbWVkaWF0ZWx5IHRyaWdnZXJzIHRoZSBcInBvdGVudGlhbCBmb3IgYnJvYWRlciB1c2FnZVwiIGFsYXJtIGJlbGxzIGluIG15IGhlYWQuIE15IG5leHQgdGhvdWdodCBpcyB0byB0cnkgYW5kIGVzdGFibGlzaCB0aGUgc2NvcGUgb2YgdGhpcyBmdW5jdGlvbi4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBhbGwgdGhlIGNhbGwgc2l0ZXMgdG8gZ2V0IGEgcHJvcGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb2YgYW55IGNoYW5nZXMuIFRoZSBrZXkgcXVlc3Rpb24gbm93IGlzOiBcIkFyZSB0aGVyZSBhbnkgb3RoZXIgY2FsbGVycyBvZiBgaW5ldF9yZXFza19jbG9uZWA/XCIgSSBuZWVkIHRvIGZpbmQgdGhlbSBhbmQgdW5kZXJzdGFuZCBob3cgaXQncyBiZWluZyB1c2VkIGFjcm9zcyB0aGUgbmV0d29yayBzdGFjay4gVGhpcyBpcyBmdW5kYW1lbnRhbCB0byBteSBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTE3MCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA2OjQ5OjE2LjQ4NTQ0OTcxMVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE4MDE1MzUyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImluZXRfcmVxc2tfY2xvbmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM9OTA0PXZvaWQgX19yZXFza19mcmVlKHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSlcXG4tLVxcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtOTEyLVxcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM6OTEzOnN0YXRpYyBzdHJ1Y3QgcmVxdWVzdF9zb2NrICppbmV0X3JlcXNrX2Nsb25lKHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSxcXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTkxNC1cXHRcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM9MTAzMz1zdGF0aWMgdm9pZCByZXFza190aW1lcl9oYW5kbGVyKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxcbi0tXFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xMDQ5LVxcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM6MTA1MDpcXHRcXHRucmVxID0gaW5ldF9yZXFza19jbG9uZShyZXEsIG5zayk7XFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xMDUxLVxcdFxcdGlmICghbnJlcSlcXG4tLVxcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM9MTQxNz1zdHJ1Y3Qgc29jayAqaW5ldF9jc2tfY29tcGxldGVfaGFzaGRhbmNlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNvY2sgKmNoaWxkLFxcbi0tXFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xNDMwLVxcdFxcdFxcdC8qIGhvbGQgYSByZWZjbnQgZm9yIHRoZSBucmVxLVxcdTAwM2Vyc2tfbGlzdGVuZXJcXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jOjE0MzE6XFx0XFx0XFx0ICogd2hpY2ggaXMgYXNzaWduZWQgaW4gaW5ldF9yZXFza19jbG9uZSgpXFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xNDMyLVxcdFxcdFxcdCAqL1xcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtMTQzMy1cXHRcXHRcXHRzb2NrX2hvbGQoc2spO1xcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM6MTQzNDpcXHRcXHRcXHRucmVxID0gaW5ldF9yZXFza19jbG9uZShyZXEsIHNrKTtcXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTE0MzUtXFx0XFx0XFx0aWYgKCFucmVxKSB7XFxuLS1cXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jPTE0NjY9dm9pZCBpbmV0X2Nza19saXN0ZW5fc3RvcChzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTE0OTAtXFx0XFx0aWYgKG5zaykge1xcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM6MTQ5MTpcXHRcXHRcXHRucmVxID0gaW5ldF9yZXFza19jbG9uZShyZXEsIG5zayk7XFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xNDkyLVxcdFxcdFxcdGlmIChucmVxKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA2OjQ5OjE2LjYwMzQ3MjY5M1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTA5NjQ2NjkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFRDUCBGYXN0IE9wZW4gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gdGFraW5nIGEgbG9vayBhdCB0aGlzIHBhdGNoIHJlbGF0ZWQgdG8gVENQIEZhc3QgT3Blbi4gSXQgc2VlbXMgbGlrZSBgaW5ldF9jc2tfY29tcGxldGVfaGFzaGRhbmNlYCBhbmQgYGluZXRfY3NrX2xpc3Rlbl9zdG9wYCBhcmUgdGhlIGtleSBlbnRyeSBwb2ludHMgSSBuZWVkIHRvIGZvY3VzIG9uIGluaXRpYWxseS4gSSBhbHNvIG5vdGljZWQgYHJlcXNrX3RpbWVyX2hhbmRsZXJgIG1lbnRpb25lZCwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIFdoaWxlIGl0J3MgYSB0aW1lciBoYW5kbGVyIGFuZCBub3QgZGlyZWN0bHkgY2FsbGVkIGJ5IGEgc3lzdGVtIGNhbGwsIGl04oCZcyB0cmlnZ2VyZWQgZHVyaW5nIFRDUCBjb25uZWN0aW9uIGhhbmRsaW5nLCBtYWtpbmcgaXQgcmVsZXZhbnQgdG8gdGhlIG92ZXJhbGwgZmxvdy4gVGhlIGJ1ZyBpdHNlbGYgYXBwZWFycyB0byBpbnZvbHZlIGEgbWlzc2VkIGFjY291bnRpbmcgdXBkYXRlOiBgZmFzdG9wZW5xLVx1MDAzZXFsZW5gIGlzbid0IHByb3Blcmx5IGNoYXJnZWQgd2hlbiBhIHJlcXVlc3Qgc29ja2V0IGlzIGNsb25lZCBmb3IgYSBUQ1AgRmFzdCBPcGVuIGxpc3RlbmVyLiBUaGlzIGlzIGEgY2xhc3NpYyBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eSBzaXR1YXRpb24sIGFuZCBpdCdzIGRlZmluaXRlbHkgc29tZXRoaW5nIEkgd2FudCB0byB0ZXN0IHRob3JvdWdobHkuXG5cbkZyb20gYSBmdW5jdGlvbmFsIHBlcnNwZWN0aXZlLCB0aGlzIHBhdGNoIHNlZW1zIGxpa2UgaXQncyB3b3J0aCB0aGUgZWZmb3J0IG9mIGZ1enppbmcuIFRoZSBnb29kIG5ld3MgaXMgdGhhdCBubyBzcGVjaWFsIGNvbmZpZ3VyYXRpb25zIGFyZSByZXF1aXJlZCBiZWNhdXNlIFRDUCBGYXN0IE9wZW4gaXMgYWxyZWFkeSBidWlsdCBpbi4gR2l2ZW4gYWxsIG9mIHRoaXMsIEknbSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZz10cnVlYC4gTXkgYEZvY3VzU3ltYm9sc2Agd2lsbCBiZSBgW1wiaW5ldF9jc2tfY29tcGxldGVfaGFzaGRhbmNlXCIsIFwiaW5ldF9jc2tfbGlzdGVuX3N0b3BcIl1gLCBhbmQgSSdsbCBrZWVwIGBFbmFibGVDb25maWdzYCBlbXB0eSBmb3Igbm93LCBhcyBJIGRvbid0IHNlZSBhbnkgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5OTc0LCJPdXRwdXRUb2tlbnMiOjkzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA2OjQ5OjIxLjcxMzEyNDM2NloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzNzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaW5ldF9jc2tfY29tcGxldGVfaGFzaGRhbmNlXCIsXG4gICAgXCJpbmV0X2Nza19saXN0ZW5fc3RvcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFRDUCBGYXN0IE9wZW4gcmVxdWVzdCBzb2NrZXQgY2xvbmluZyBsb2dpYyBpbiBpbmV0X3JlcXNrX2Nsb25lIHRvIHByb3Blcmx5IGNoYXJnZSB0aGUgZmFzdG9wZW4gcXVldWUgbGVuZ3RoLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgbG9naWMgdGhhdCBoYW5kbGVzIFRDUCBjb25uZWN0aW9ucyBhbmQgbGlzdGVuaW5nIHNvY2tldHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaW5ldF9jc2tfY29tcGxldGVfaGFzaGRhbmNlXCIsXG4gICAgXCJpbmV0X2Nza19saXN0ZW5fc3RvcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFRDUCBGYXN0IE9wZW4gcmVxdWVzdCBzb2NrZXQgY2xvbmluZyBsb2dpYyBpbiBpbmV0X3JlcXNrX2Nsb25lIHRvIHByb3Blcmx5IGNoYXJnZSB0aGUgZmFzdG9wZW4gcXVldWUgbGVuZ3RoLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgbG9naWMgdGhhdCBoYW5kbGVzIFRDUCBjb25uZWN0aW9ucyBhbmQgbGlzdGVuaW5nIHNvY2tldHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow9jxcf[1] Phase: Succeeded StartedAt: 2026-08-03 06:49:32 +0000 UTC FinishedAt: 2026-08-03 06:49:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jxcf[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-03 06:49:32 +0000 UTC FinishedAt: 2026-08-03 06:49:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jxcf[2] Phase: Succeeded StartedAt: 2026-08-03 06:49:32 +0000 UTC FinishedAt: 2026-08-03 10:33:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jxcf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","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":["inet_csk_complete_hashdance","inet_csk_listen_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","series_id":"8b8d85be-8618-4753-9989-3e086bb3f303","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-08-03 06:49:32 +0000 UTC FinishedAt: 2026-08-03 10:33:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","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":["inet_csk_complete_hashdance","inet_csk_listen_stop"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","series_id":"8b8d85be-8618-4753-9989-3e086bb3f303","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-workflow9jxcf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","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":["inet_csk_complete_hashdance","inet_csk_listen_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","series_id":"8b8d85be-8618-4753-9989-3e086bb3f303","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-08-03 06:49:32 +0000 UTC FinishedAt: 2026-08-03 06:49:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jxcf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","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":["inet_csk_complete_hashdance","inet_csk_listen_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","series_id":"8b8d85be-8618-4753-9989-3e086bb3f303","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-08-03 06:49:32 +0000 UTC FinishedAt: 2026-08-03 06:49:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","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-workflow9jxcf/series-workflow9jxcf-convert-artifact-2375745074/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9jxcf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","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":["inet_csk_complete_hashdance","inet_csk_listen_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","series_id":"8b8d85be-8618-4753-9989-3e086bb3f303","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-08-03 06:49:42 +0000 UTC FinishedAt: 2026-08-03 07:09:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jxcf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","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":["inet_csk_complete_hashdance","inet_csk_listen_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","series_id":"8b8d85be-8618-4753-9989-3e086bb3f303","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-08-03 06:49:42 +0000 UTC FinishedAt: 2026-08-03 07:09:36 +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:*120dbf6e-9fcd-445e-b6ec-62959ee94861,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-workflow9jxcf/series-workflow9jxcf-convert-artifact-2375745074/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": "22eb17ab-f1ad-47fb-adc8-40f6ceedd86a", "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-workflow9jxcf/series-workflow9jxcf-build-action-555175856/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9jxcf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","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":["inet_csk_complete_hashdance","inet_csk_listen_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","series_id":"8b8d85be-8618-4753-9989-3e086bb3f303","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-08-03 06:49:42 +0000 UTC FinishedAt: 2026-08-03 07:09:26 +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:*120dbf6e-9fcd-445e-b6ec-62959ee94861,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-workflow9jxcf/series-workflow9jxcf-convert-artifact-2375745074/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": "22eb17ab-f1ad-47fb-adc8-40f6ceedd86a", "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-workflow9jxcf/series-workflow9jxcf-build-action-555175856/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9jxcf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","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":["inet_csk_complete_hashdance","inet_csk_listen_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","series_id":"8b8d85be-8618-4753-9989-3e086bb3f303","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-08-03 07:09:36 +0000 UTC FinishedAt: 2026-08-03 07:09:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jxcf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","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":["inet_csk_complete_hashdance","inet_csk_listen_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","series_id":"8b8d85be-8618-4753-9989-3e086bb3f303","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-08-03 07:09:36 +0000 UTC FinishedAt: 2026-08-03 07:09:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jxcf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","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":["inet_csk_complete_hashdance","inet_csk_listen_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","series_id":"8b8d85be-8618-4753-9989-3e086bb3f303","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-08-03 07:09:36 +0000 UTC FinishedAt: 2026-08-03 07:09:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jxcf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","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":["inet_csk_complete_hashdance","inet_csk_listen_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","series_id":"8b8d85be-8618-4753-9989-3e086bb3f303","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-08-03 07:09:36 +0000 UTC FinishedAt: 2026-08-03 07:09:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","series_id":"8b8d85be-8618-4753-9989-3e086bb3f303","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-workflow9jxcf/series-workflow9jxcf-convert-artifact-646948941/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9jxcf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","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":["inet_csk_complete_hashdance","inet_csk_listen_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","series_id":"8b8d85be-8618-4753-9989-3e086bb3f303","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-08-03 07:09:46 +0000 UTC FinishedAt: 2026-08-03 07:11:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jxcf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","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":["inet_csk_complete_hashdance","inet_csk_listen_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","series_id":"8b8d85be-8618-4753-9989-3e086bb3f303","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-08-03 07:09:46 +0000 UTC FinishedAt: 2026-08-03 07:11:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*22eb17ab-f1ad-47fb-adc8-40f6ceedd86a,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-workflow9jxcf/series-workflow9jxcf-build-action-555175856/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-workflow9jxcf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","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":["inet_csk_complete_hashdance","inet_csk_listen_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","series_id":"8b8d85be-8618-4753-9989-3e086bb3f303","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-08-03 07:11:50 +0000 UTC FinishedAt: 2026-08-03 07:11:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jxcf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","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":["inet_csk_complete_hashdance","inet_csk_listen_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","series_id":"8b8d85be-8618-4753-9989-3e086bb3f303","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-08-03 07:11:50 +0000 UTC FinishedAt: 2026-08-03 07:11:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jxcf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","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":["inet_csk_complete_hashdance","inet_csk_listen_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","series_id":"8b8d85be-8618-4753-9989-3e086bb3f303","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-08-03 07:11:50 +0000 UTC FinishedAt: 2026-08-03 07:29:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jxcf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","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":["inet_csk_complete_hashdance","inet_csk_listen_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","series_id":"8b8d85be-8618-4753-9989-3e086bb3f303","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-08-03 07:11:50 +0000 UTC FinishedAt: 2026-08-03 07:29:30 +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:*120dbf6e-9fcd-445e-b6ec-62959ee94861,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-workflow9jxcf/series-workflow9jxcf-convert-artifact-646948941/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": "ea32a9dc-18d0-431e-a92b-bfd942d28e42", "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-workflow9jxcf/series-workflow9jxcf-build-action-799462953/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9jxcf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","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":["inet_csk_complete_hashdance","inet_csk_listen_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","series_id":"8b8d85be-8618-4753-9989-3e086bb3f303","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-08-03 07:11:50 +0000 UTC FinishedAt: 2026-08-03 07:29:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*120dbf6e-9fcd-445e-b6ec-62959ee94861,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-workflow9jxcf/series-workflow9jxcf-convert-artifact-646948941/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": "ea32a9dc-18d0-431e-a92b-bfd942d28e42", "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-workflow9jxcf/series-workflow9jxcf-build-action-799462953/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9jxcf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","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":["inet_csk_complete_hashdance","inet_csk_listen_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","series_id":"8b8d85be-8618-4753-9989-3e086bb3f303","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-08-03 07:29:30 +0000 UTC FinishedAt: 2026-08-03 07:29:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jxcf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","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":["inet_csk_complete_hashdance","inet_csk_listen_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","series_id":"8b8d85be-8618-4753-9989-3e086bb3f303","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-08-03 07:29:30 +0000 UTC FinishedAt: 2026-08-03 07:29:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jxcf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","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":["inet_csk_complete_hashdance","inet_csk_listen_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","series_id":"8b8d85be-8618-4753-9989-3e086bb3f303","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-08-03 07:29:30 +0000 UTC FinishedAt: 2026-08-03 07:31:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jxcf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","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":["inet_csk_complete_hashdance","inet_csk_listen_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","series_id":"8b8d85be-8618-4753-9989-3e086bb3f303","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-08-03 07:29:30 +0000 UTC FinishedAt: 2026-08-03 07:31:25 +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:*ea32a9dc-18d0-431e-a92b-bfd942d28e42,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-workflow9jxcf/series-workflow9jxcf-build-action-799462953/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-workflow9jxcf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","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":["inet_csk_complete_hashdance","inet_csk_listen_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","series_id":"8b8d85be-8618-4753-9989-3e086bb3f303","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-08-03 07:31:34 +0000 UTC FinishedAt: 2026-08-03 10:33:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jxcf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","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":["inet_csk_complete_hashdance","inet_csk_listen_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","series_id":"8b8d85be-8618-4753-9989-3e086bb3f303","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-08-03 07:31:34 +0000 UTC FinishedAt: 2026-08-03 10:33:59 +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":["inet_csk_complete_hashdance","inet_csk_listen_stop"],"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:*22eb17ab-f1ad-47fb-adc8-40f6ceedd86a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ea32a9dc-18d0-431e-a92b-bfd942d28e42,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-workflow9jxcf/series-workflow9jxcf-build-action-555175856/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-workflow9jxcf/series-workflow9jxcf-build-action-799462953/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow9jxcf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","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":["inet_csk_complete_hashdance","inet_csk_listen_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","series_id":"8b8d85be-8618-4753-9989-3e086bb3f303","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-08-03 07:31:34 +0000 UTC FinishedAt: 2026-08-03 07:31:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jxcf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","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":["inet_csk_complete_hashdance","inet_csk_listen_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","series_id":"8b8d85be-8618-4753-9989-3e086bb3f303","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-08-03 07:31:34 +0000 UTC FinishedAt: 2026-08-03 07:31:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet_csk_complete_hashdance","inet_csk_listen_stop"],"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-workflow9jxcf/series-workflow9jxcf-convert-artifact-1524689458/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9jxcf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","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":["inet_csk_complete_hashdance","inet_csk_listen_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","series_id":"8b8d85be-8618-4753-9989-3e086bb3f303","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-08-03 07:31:34 +0000 UTC FinishedAt: 2026-08-03 07:31:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jxcf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","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":["inet_csk_complete_hashdance","inet_csk_listen_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","series_id":"8b8d85be-8618-4753-9989-3e086bb3f303","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-08-03 07:31:34 +0000 UTC FinishedAt: 2026-08-03 07:31:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jxcf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","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":["inet_csk_complete_hashdance","inet_csk_listen_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","series_id":"8b8d85be-8618-4753-9989-3e086bb3f303","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-08-03 07:31:34 +0000 UTC FinishedAt: 2026-08-03 07:31:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jxcf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","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":["inet_csk_complete_hashdance","inet_csk_listen_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","series_id":"8b8d85be-8618-4753-9989-3e086bb3f303","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-08-03 07:31:45 +0000 UTC FinishedAt: 2026-08-03 10:33:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jxcf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","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":["inet_csk_complete_hashdance","inet_csk_listen_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","series_id":"8b8d85be-8618-4753-9989-3e086bb3f303","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-08-03 07:31:45 +0000 UTC FinishedAt: 2026-08-03 10:33:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*22eb17ab-f1ad-47fb-adc8-40f6ceedd86a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ea32a9dc-18d0-431e-a92b-bfd942d28e42,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-workflow9jxcf/series-workflow9jxcf-build-action-555175856/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-workflow9jxcf/series-workflow9jxcf-build-action-799462953/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-workflow9jxcf/series-workflow9jxcf-convert-artifact-1524689458/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,}