Name: series-workflowrndsq Phase: Succeeded StartedAt: 2026-08-25 14:45:28 +0000 UTC FinishedAt: 2026-08-25 18:48:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrndsq[0] Phase: Succeeded StartedAt: 2026-08-25 14:45:28 +0000 UTC FinishedAt: 2026-08-25 15:00:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrndsq[0].run-triage Phase: Succeeded StartedAt: 2026-08-25 14:45:28 +0000 UTC FinishedAt: 2026-08-25 15:00:23 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "66498c75b4f8017f62d720d9b59675bdf3abce91", "config_name": "upstream-apparmor-kasan.config", "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "66498c75b4f8017f62d720d9b59675bdf3abce91", "config_name": "upstream-apparmor-kasan.config", "series_id": "74cee958-a152-479a-9987-ef2734ea9b0b" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "__do_once_sleepable_done" ], "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+CgkJCTx0ZD4yMDI2LzA4LzI1IDE0OjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MTJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fZG9fb25jZV9zbGVlcGFibGVfZG9uZSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgX19kb19vbmNlX3NsZWVwYWJsZV9kb25lYCBmdW5jdGlvbiBpbiBgbGliL29uY2UuY2AgdG8gdXNlIGBvbmNlX2Rpc2FibGVfanVtcGAgaW5zdGVhZCBvZiBgc3RhdGljX2JyYW5jaF9kaXNhYmxlYC4gVGhpcyBpcyByZWxhdGVkIHRvIHRoZSBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYERPX09OQ0VgIG1hY3JvIGFuZCBzdGF0aWMga2V5cywgbGlrZWx5IHRvIGhhbmRsZSBtb2R1bGUgdW5sb2FkaW5nIG9yIGRlZmVycmVkIHN0YXRpYyBicmFuY2ggZGlzYWJsaW5nIGNvcnJlY3RseS4gVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIHVzZXItc3BhY2UgY29waWVzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIHdvdWxkIGJlIHJlbGF0ZWQgdG8gc3RhdGljIGtleXMsIGxvY2tpbmcsIG9yIG1vZHVsZSBzdGF0ZSwgd2hpY2ggYXJlIGNvdmVyZWQgYnkgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scyBhbmQgS0FTQU4vTE9DS0RFUCwgbm90IEtNU0FOLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgX19kb19vbmNlX3NsZWVwYWJsZV9kb25lYCBpbiBgbGliL29uY2UuY2AgdG8gZGVmZXIgdGhlIHN0YXRpYyBicmFuY2ggZGlzYWJsZSBvcGVyYXRpb24gdG8gYSB3b3JrcXVldWUgdXNpbmcgYG9uY2VfZGlzYWJsZV9qdW1wYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBrZXJuZWwgcHJpbWl0aXZlIHVzZWQgYnkgYERPX09OQ0VfU0xFRVBBQkxFYCBhbmQgYGdldF9yYW5kb21fc2xlZXBhYmxlX29uY2VgLCB3aGljaCBhcmUgcmVhY2hhYmxlIGR1cmluZyBuZXR3b3JrIGNvbm5lY3Rpb24gc2V0dXAgKGUuZy4sIGBfX2luZXRfaGFzaF9jb25uZWN0YCkuIEl0IGlzIHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIHRoZSBkZWZlcnJlZCB3b3JrcXVldWUgZXhlY3V0aW9uIGRvZXMgbm90IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciByYWNlIGNvbmRpdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTQ6NDc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjNTc2NTRmMjRlYWE2YTY4MTFiZDhhM2Q5Y2NlZWYyZDdlMmIyYjdjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMjUgMTQ6NDc6MTEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbGliL29uY2UuYyBiL2xpYi9vbmNlLmNcbmluZGV4IGQ4MDFiZmE5NDVlNjMuLjBhMGE5MTkxNTZlMDUgMTAwNjQ0XG4tLS0gYS9saWIvb25jZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9saWIvb25jZS5jXG5AQCAtOTMsNiAmIzQzOzkzLDYgQEAgdm9pZCBfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmUoYm9vbCAqZG9uZSwgc3RydWN0IHN0YXRpY19rZXlfdHJ1ZSAqb25jZV9rZXksXG4ge1xuIFx0KmRvbmUgPSB0cnVlO1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNm9uY2VfbXV0ZXgpO1xuLVx0c3RhdGljX2JyYW5jaF9kaXNhYmxlKG9uY2Vfa2V5KTtcbiYjNDM7XHRvbmNlX2Rpc2FibGVfanVtcChvbmNlX2tleSwgbW9kKTtcbiB9XG4gRVhQT1JUX1NZTUJPTChfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE0OjQ3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjEybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZWAgaW4gYGxpYi9vbmNlLmNgIHRvIGRlZmVyIHRoZSBzdGF0aWMgYnJhbmNoIGRpc2FibGUgb3BlcmF0aW9uIHRvIGEgd29ya3F1ZXVlIHVzaW5nIGBvbmNlX2Rpc2FibGVfanVtcGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGNvcmUga2VybmVsIHByaW1pdGl2ZSB1c2VkIGJ5IGBET19PTkNFX1NMRUVQQUJMRWAgYW5kIGBnZXRfcmFuZG9tX3NsZWVwYWJsZV9vbmNlYCwgd2hpY2ggYXJlIHJlYWNoYWJsZSBkdXJpbmcgbmV0d29yayBjb25uZWN0aW9uIHNldHVwIChlLmcuLCBgX19pbmV0X2hhc2hfY29ubmVjdGApLiBJdCBpcyB3b3J0aCBmdXp6aW5nIHRvIGVuc3VyZSB0aGUgZGVmZXJyZWQgd29ya3F1ZXVlIGV4ZWN1dGlvbiBkb2VzIG5vdCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgcmFjZSBjb25kaXRpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYzU3NjU0ZjI0ZWFhNmE2ODExYmQ4YTNkOWNjZWVmMmQ3ZTJiMmI3YwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDI1IDE0OjQ3OjExIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbGliL29uY2UuYyBiL2xpYi9vbmNlLmMKaW5kZXggZDgwMWJmYTk0NWU2My4uMGEwYTkxOTE1NmUwNSAxMDA2NDQKLS0tIGEvbGliL29uY2UuYwomIzQzOyYjNDM7JiM0MzsgYi9saWIvb25jZS5jCkBAIC05Myw2ICYjNDM7OTMsNiBAQCB2b2lkIF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZShib29sICpkb25lLCBzdHJ1Y3Qgc3RhdGljX2tleV90cnVlICpvbmNlX2tleSwKIHsKIAkqZG9uZSA9IHRydWU7CiAJbXV0ZXhfdW5sb2NrKCZhbXA7b25jZV9tdXRleCk7Ci0Jc3RhdGljX2JyYW5jaF9kaXNhYmxlKG9uY2Vfa2V5KTsKJiM0MzsJb25jZV9kaXNhYmxlX2p1bXAob25jZV9rZXksIG1vZCk7CiB9CiBFWFBPUlRfU1lNQk9MKF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE0OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NTQKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlICYjMzk7b25jZSYjMzk7IENvZGUgTW9kaWZpY2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCYjMzk7cyBnb3QgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGNoYW5nZSBpbiBgbGliL29uY2UuY2AuIFNwZWNpZmljYWxseSwgaXQmIzM5O3Mgc3dhcHBpbmcgb3V0IGBzdGF0aWNfYnJhbmNoX2Rpc2FibGUob25jZV9rZXkpO2Agd2l0aCBgb25jZV9kaXNhYmxlX2p1bXAob25jZV9rZXksIG1vZCk7YCB3aXRoaW4gdGhlIGBfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmVgIGZ1bmN0aW9uLiBUaGlzIHN1Z2dlc3RzIGEgc2hpZnQgaW4gaG93IHdlJiMzOTtyZSBoYW5kbGluZyB0aGUgJiMzNDtvbmNlJiMzNDsgZXhlY3V0aW9uIG1lY2hhbmlzbSwgcHJlc3VtYWJseSByZWxhdGVkIHRvIGRpc2FibGluZyBpdCBhZnRlciB0aGUgaW5pdGlhbCBydW4uIE5hdHVyYWxseSwgbXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIGBsaWIvb25jZS5jYCBhbmQgZmlndXJlIG91dCAqZXhhY3RseSogd2hhdCBgb25jZV9kaXNhYmxlX2p1bXBgIGlzIGRvaW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgbmV3IGZ1bmN0aW9uIGFuZCBob3cgaXQgZGlmZmVycyBmcm9tIHRoZSBvcmlnaW5hbCBgc3RhdGljX2JyYW5jaF9kaXNhYmxlYC4gSXMgaXQgbW9yZSBlZmZpY2llbnQsIG1vcmUgZmxleGlibGUsIHBvdGVudGlhbGx5IHRpZWQgdG8gYSBzcGVjaWZpYyBoYXJkd2FyZSBmZWF0dXJlLCBvciBtYXliZSBpdCBpcyBwYXJ0IG9mIGEgYmlnZ2VyIHByb2plY3Q/IFRoZSBgbW9kYCB2YXJpYWJsZSBhbHNvIHBpcXVlcyBteSBpbnRlcmVzdDsgd2hlcmUgaXMgdGhhdCBjb21pbmcgZnJvbSwgYW5kIHdoYXQmIzM5O3MgaXRzIHJvbGUgaW4gYWxsIHRoaXM/IE5lZWQgdG8gZHJpbGwgaW50byB0aGF0LiBUaW1lIHRvIGdldCBpbnRvIHRoZSBkZXRhaWxzIGFuZCB3b3JrIHRocm91Z2ggaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTQ6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b25jZV9kaXNhYmxlX2p1bXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtsaWIvb25jZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2xpYi9vbmNlLmM9MTQ9c3RhdGljIHZvaWQgb25jZV9kZWZlcnJlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpXG4tLVxubGliL29uY2UuYy0yNC1cbmxpYi9vbmNlLmM6MjU6c3RhdGljIHZvaWQgb25jZV9kaXNhYmxlX2p1bXAoc3RydWN0IHN0YXRpY19rZXlfdHJ1ZSAqa2V5LCBzdHJ1Y3QgbW9kdWxlICptb2QpXG5saWIvb25jZS5jLTI2LXtcbi0tXG5saWIvb25jZS5jPTYwPXZvaWQgX19kb19vbmNlX2RvbmUoYm9vbCAqZG9uZSwgc3RydWN0IHN0YXRpY19rZXlfdHJ1ZSAqb25jZV9rZXksXG4tLVxubGliL29uY2UuYy02NS1cdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2b25jZV9sb2NrLCAqZmxhZ3MpO1xubGliL29uY2UuYzo2NjpcdG9uY2VfZGlzYWJsZV9qdW1wKG9uY2Vfa2V5LCBtb2QpO1xubGliL29uY2UuYy02Ny19XG4tLVxubGliL29uY2UuYz05MD12b2lkIF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZShib29sICpkb25lLCBzdHJ1Y3Qgc3RhdGljX2tleV90cnVlICpvbmNlX2tleSxcbi0tXG5saWIvb25jZS5jLTk1LVx0bXV0ZXhfdW5sb2NrKFx1MDAyNm9uY2VfbXV0ZXgpO1xubGliL29uY2UuYzo5NjpcdG9uY2VfZGlzYWJsZV9qdW1wKG9uY2Vfa2V5LCBtb2QpO1xubGliL29uY2UuYy05Ny19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTQ6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU4MQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipEZWNvbnN0cnVjdGluZyBgb25jZV9kaXNhYmxlX2p1bXBgKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgb25jZV9kaXNhYmxlX2p1bXBgIGFuZCBteSBmaXJzdCB0aG91Z2h0IGlzLCAmIzM0O1JpZ2h0LCBpdCYjMzk7cyBhIGBzdGF0aWNgIGZ1bmN0aW9uLCBhbmQgaXQgbGl2ZXMgaW4gYGxpYi9vbmNlLmNgLiYjMzQ7IFRoYXQgdGVsbHMgbWUgYSBmZXcgdGhpbmdzIGltbWVkaWF0ZWx5LiBJdCYjMzk7cyBpbnRlcm5hbCB0byB0aGF0IGNvbXBpbGF0aW9uIHVuaXQsIHByb2JhYmx5IHBhcnQgb2YgYSBsYXJnZXIgbWVjaGFuaXNtIHdpdGhpbiB0aGF0IGxpYnJhcnkuIFN0YXRpYyBmdW5jdGlvbnMgYXJlIG9mdGVuIHVzZWQgZm9yIGltcGxlbWVudGF0aW9uIGRldGFpbHMsIGhlbHBlciBmdW5jdGlvbnMgdGhhdCBhcmVuJiMzOTt0IGludGVuZGVkIGZvciBleHRlcm5hbCB1c2UuIE5vdywgdGhlIGNydWNpYWwgcGFydCBpcyB0byBkaWcgaW50byAqd2hhdCogaXQgYWN0dWFsbHkgZG9lcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgd2l0aGluIHRoZSBsYXJnZXIgYG9uY2VgIHN5c3RlbS4gVGltZSB0byBkaXZlIGludG8gdGhlIGNvZGUgYW5kIHNlZSBob3cgaXQgd29ya3MhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTQ6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtsaWIvb25jZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAyMDpcdFx0c3RhdGljX2JyYW5jaF9kaXNhYmxlKHdvcmstXHUwMDNla2V5KTtcbiAgMjE6XHRcdG1vZHVsZV9wdXQod29yay1cdTAwM2Vtb2R1bGUpO1xuICAyMjpcdFx0a2ZyZWUod29yayk7XG4gIDIzOlx0fVxuICAyNDpcdFxuICAyNTpcdHN0YXRpYyB2b2lkIG9uY2VfZGlzYWJsZV9qdW1wKHN0cnVjdCBzdGF0aWNfa2V5X3RydWUgKmtleSwgc3RydWN0IG1vZHVsZSAqbW9kKVxuICAyNjpcdHtcbiAgMjc6XHRcdHN0cnVjdCBvbmNlX3dvcmsgKnc7XG4gIDI4Olx0XG4gIDI5Olx0XHR3ID0ga21hbGxvY19vYmooKncsIEdGUF9BVE9NSUMpO1xuICAzMDpcdFx0aWYgKCF3KVxuICAzMTpcdFx0XHRyZXR1cm47XG4gIDMyOlx0XG4gIDMzOlx0XHRJTklUX1dPUksoXHUwMDI2dy1cdTAwM2V3b3JrLCBvbmNlX2RlZmVycmVkKTtcbiAgMzQ6XHRcdHctXHUwMDNla2V5ID0ga2V5O1xuICAzNTpcdFx0dy1cdTAwM2Vtb2R1bGUgPSBtb2Q7XG4gIDM2Olx0XHRfX21vZHVsZV9nZXQobW9kKTtcbiAgMzc6XHRcdHNjaGVkdWxlX3dvcmsoXHUwMDI2dy1cdTAwM2V3b3JrKTtcbiAgMzg6XHR9XG4gIDM5Olx0XG4gIDQwOlx0c3RhdGljIERFRklORV9TUElOTE9DSyhvbmNlX2xvY2spO1xuICA0MTpcdFxuICA0MjpcdGJvb2wgX19kb19vbmNlX3N0YXJ0KGJvb2wgKmRvbmUsIHVuc2lnbmVkIGxvbmcgKmZsYWdzKVxuICA0MzpcdFx0X19hY3F1aXJlcyhvbmNlX2xvY2spXG4gIDQ0Olx0e1xuICA0NTpcdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2b25jZV9sb2NrLCAqZmxhZ3MpO1xuICA0NjpcdFx0aWYgKCpkb25lKSB7XG4gIDQ3Olx0XHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2b25jZV9sb2NrLCAqZmxhZ3MpO1xuICA0ODpcdFx0XHQvKiBLZWVwIHNwYXJzZSBoYXBweSBieSByZXN0b3JpbmcgYW4gZXZlbiBsb2NrIGNvdW50IG9uXG4gIDQ5Olx0XHRcdCAqIHRoaXMgbG9jay4gSW4gY2FzZSB3ZSByZXR1cm4gaGVyZSwgd2UgZG9uJiMzOTt0IGNhbGwgaW50b1xuICA1MDpcdFx0XHQgKiBfX2RvX29uY2VfZG9uZSBidXQgcmV0dXJuIGVhcmx5IGluIHRoZSBET19PTkNFKCkgbWFjcm8uXG4gIDUxOlx0XHRcdCAqL1xuICA1MjpcdFx0XHRfX2FjcXVpcmUob25jZV9sb2NrKTtcbiAgNTM6XHRcdFx0cmV0dXJuIGZhbHNlO1xuICA1NDpcdFx0fVxuICA1NTpcdFxuICA1NjpcdFx0cmV0dXJuIHRydWU7XG4gIDU3Olx0fVxuICA1ODpcdEVYUE9SVF9TWU1CT0woX19kb19vbmNlX3N0YXJ0KTtcbiAgNTk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxNDo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzE4CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ2hhbmdlIHRvIGBfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmVgKioKCk9rYXksIHNvIHRoZSBjaGFuZ2UgaXMgaW4gYF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZWAuIFRoZXkmIzM5O3ZlIHN3YXBwZWQgb3V0IGBzdGF0aWNfYnJhbmNoX2Rpc2FibGUob25jZV9rZXkpYCBmb3IgYG9uY2VfZGlzYWJsZV9qdW1wKG9uY2Vfa2V5LCBtb2QpYC4gVGhpcyBpcyBpbnRlcmVzdGluZzsgaXQgbG9va3MgbGlrZSB0aGV5JiMzOTtyZSBkZWZlcnJpbmcgdGhlIGp1bXAgbGFiZWwgdXBkYXRlIHRvIGEgd29ya3F1ZXVlLiBUaGUgZ29hbCBpcyBsaWtlbHkgdG8gYXZvaWQgc2xlZXBpbmcgb3IgYmxvY2tpbmcgaW4gY2VydGFpbiBjb250ZXh0cywgb3IgcGVyaGFwcyB0aGV5JiMzOTtyZSB0cnlpbmcgdG8gcmVzb2x2ZSBzb21lIGxvY2tkZXAgaXNzdWVzLgoKV2FpdCBhIG1pbnV0ZSwgYF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZWAgaXMgdGllZCB0byBgRE9fT05DRV9TTEVFUEFCTEVgLCByaWdodD8gQ29uc2lkZXJpbmcgaXRzIGFzc29jaWF0aW9uIHdpdGggYERPX09OQ0VfU0xFRVBBQkxFYCwgc2hvdWxkIHRoaXMgYmUgYSB0YXJnZXQgZm9yIGZ1enppbmc/IEhtbW0sIGl0JiMzOTtzIGEgZnVuZGFtZW50YWwga2VybmVsIHByaW1pdGl2ZS4gRnV6emluZyBpdCBkaXJlY3RseSBtaWdodCBub3QgYmUgdGhlIG1vc3QgZWZmZWN0aXZlIHN0cmF0ZWd5IHNpbmNlIGBET19PTkNFYCBhbmQgYERPX09OQ0VfU0xFRVBBQkxFYCBhcmUgdXNlZCBzbyBleHRlbnNpdmVseSB0aHJvdWdob3V0IHRoZSBrZXJuZWwuIEl0IHdvdWxkIGxpa2VseSBwcm9kdWNlIGJyb2FkIHJlc3VsdHMuCgpJJiMzOTttIGJldHRlciBvZmYgY2hlY2tpbmcgd2hlcmUgYF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZWAgaXMgYmVpbmcgdXNlZCB0byBnZXQgYSBiZXR0ZXIgc2Vuc2Ugb2YgdGhlIHNjb3BlIG9mIHRoZSBwb3RlbnRpYWwgaW1wYWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE0OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fZG9fb25jZV9zbGVlcGFibGVfZG9uZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L29uY2UuaD0xNj1ib29sIF9fZG9fb25jZV9zbGVlcGFibGVfc3RhcnQoYm9vbCAqZG9uZSk7XG5pbmNsdWRlL2xpbnV4L29uY2UuaDoxNzp2b2lkIF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZShib29sICpkb25lLCBzdHJ1Y3Qgc3RhdGljX2tleV90cnVlICpvbmNlX2tleSxcbmluY2x1ZGUvbGludXgvb25jZS5oLTE4LVx0XHRcdCAgICAgIHN0cnVjdCBtb2R1bGUgKm1vZCk7XG4tLVxuaW5jbHVkZS9saW51eC9vbmNlLmgtNzItXHRcdFx0XHRmdW5jKF9fVkFfQVJHU19fKTtcdFx0XHRcdFxcXG5pbmNsdWRlL2xpbnV4L29uY2UuaDo3MzpcdFx0XHRcdF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZShcdTAwMjZfX19kb25lLCBcdTAwMjZfX19vbmNlX2tleSxcXFxuaW5jbHVkZS9saW51eC9vbmNlLmgtNzQtXHRcdFx0XHRcdFx0ICAgIFRISVNfTU9EVUxFKTtcdFx0XFxcbi0tXG5saWIvb25jZS5jPTg4PUVYUE9SVF9TWU1CT0woX19kb19vbmNlX3NsZWVwYWJsZV9zdGFydCk7XG5saWIvb25jZS5jLTg5LVxubGliL29uY2UuYzo5MDp2b2lkIF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZShib29sICpkb25lLCBzdHJ1Y3Qgc3RhdGljX2tleV90cnVlICpvbmNlX2tleSxcbmxpYi9vbmNlLmMtOTEtXHRcdFx0IHN0cnVjdCBtb2R1bGUgKm1vZClcbi0tXG5saWIvb25jZS5jLTk3LX1cbmxpYi9vbmNlLmM6OTg6RVhQT1JUX1NZTUJPTChfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE0OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT40bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwNzYKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAxMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgYHN0YXRpY19icmFuY2hfZGlzYWJsZWAgV29ya3F1ZXVlIERlZmVycmFsKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGEgY2hhbmdlIHRoYXQmIzM5O3MgZXNzZW50aWFsbHkgbW92aW5nIHRoZSBgc3RhdGljX2JyYW5jaF9kaXNhYmxlYCBmdW5jdGlvbmFsaXR5IHRvIGEgd29ya3F1ZXVlLiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIGNoYW5nZSB3aXRoaW4gdGhlIGtlcm5lbCBpdHNlbGYsIHNvLCB5ZXMsIGFic29sdXRlbHksIHRoaXMgd2FycmFudHMgZnV6emluZy4gV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IHN1YnRsZSByZWdyZXNzaW9ucyBvciBpc3N1ZXMuCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0JiMzOTtzIHRhcmdldCBgX19kb19vbmNlX3NsZWVwYWJsZV9kb25lYC4gVGhhdCBzZWVtcyBsaWtlIGEga2V5IHN5bWJvbCByZWxhdGVkIHRvIHRoZSAmIzM0O29uY2UmIzM0OyBpbmZyYXN0cnVjdHVyZSwgYW5kIGJhc2VkIG9uIG15IGV4cGVyaWVuY2UsIGEgY2hhbmdlIGxpa2UgdGhpcyBjb3VsZCBwb3RlbnRpYWxseSBpbnRlcmFjdCB3aXRoIGl0IGluIGludGVyZXN0aW5nIHdheXMuIFdhaXQgYSBtaW51dGUsIGBfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmVgICppcyogYSBjb3JlIGtlcm5lbCBmdW5jdGlvbi4gSXQgbGl2ZXMgaW4gYGxpYi9vbmNlLmNgLgoKTGV0IG1lIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50LiBIbW0sIGxvb2tzIGxpa2Ugd2UgZG9uJiMzOTt0IG5lZWQgYW55IHNwZWNpYWwgY29uZmlnIGZsYWdzIHRvIGVuYWJsZSBvciBkaXNhYmxlIGl0OyBpdCBzZWVtcyB0byBiZSBidWlsdCBpbiBieSBkZWZhdWx0LiBFeGNlbGxlbnQuIEkmIzM5O2xsIGp1bXAgb3ZlciB0byB0aGUgYGxpYi9NYWtlZmlsZWAgdG8gY29uZmlybSBgb25jZS5vYCBpcyBhbHdheXMgYnVpbHQsIGVuc3VyaW5nIGl0IGlzIGFsd2F5cyBwYXJ0IG9mIG91ciBhdHRhY2sgc3VyZmFjZSBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTQ6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b25jZVxcLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtsaWIvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bGliL01ha2VmaWxlPTU1PW9iai15ICYjNDM7PSBiY2QubyBzb3J0Lm8gcGFyc2VyLm8gZGVidWdfbG9ja3MubyByYW5kb20zMi5vIFxcXG4tLVxubGliL01ha2VmaWxlLTU5LVx0IHBlcmNwdS1yZWZjb3VudC5vIHJoYXNodGFibGUubyBiYXNlNjQubyBcXFxubGliL01ha2VmaWxlOjYwOlx0IG9uY2UubyByZWZjb3VudC5vIHJjdXJlZi5vIHVzZXJjb3B5Lm8gZXJyc2VxLm8gYnVja2V0X2xvY2tzLm8gXFxcbmxpYi9NYWtlZmlsZS02MS1cdCBnZW5lcmljLXJhZGl4LXRyZWUubyBiaXRtYXAtc3RyLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTQ6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDYyMQoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDIyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFBvdGVudGlhbDogYG9uY2Uub2AgYW5kIGBfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmVgKioKCk9rYXksIHNvIGBvbmNlLm9gIGlzIGNvbnNpc3RlbnRseSBidWlsdCwgdGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBwaW5wb2ludCBhIHNwZWNpZmljIGZ1bmN0aW9uIHRvIGZvY3VzIHRoZSBmdXp6aW5nIG9uLiBSaWdodCwgYF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZWAgbG9va3MgaW50ZXJlc3RpbmcsIGVzcGVjaWFsbHkgc2luY2UgaXQmIzM5O3MgYW4gZXhwb3J0ZWQgc3ltYm9sLiBJcyB0aGlzIHNtYWxsIGNvZGUgY2hhbmdlIC0gcmVwbGFjaW5nIGBzdGF0aWNfYnJhbmNoX2Rpc2FibGVgIHdpdGggYG9uY2VfZGlzYWJsZV9qdW1wYCAtIGV2ZW4gd29ydGggZnV6emluZz8gT24gdGhlIGZhY2Ugb2YgaXQsIGl0IGFwcGVhcnMgZnVuY3Rpb25hbGx5IG1pbm9yLCBidXQgdGhpcyBpcyBhIGNvcmUgcHJpbWl0aXZlIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGhlcmUuCgpIbW0sIGBvbmNlX2Rpc2FibGVfanVtcGAgaXMgYWxzbyBhIGZ1bmN0aW9uLCBidXQgc3RhdGljLiBUaGF0IGRvZXNuJiMzOTt0IGxvb2sgcHJvbWlzaW5nIGZvciBkaXJlY3QgZnV6emluZywgdGhvdWdoIHRoZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBub24tc3RhdGljIHN5bWJvbCBpcyBzdGlsbCBpbnRyaWd1aW5nLiBHaXZlbiB0aGUgY2hhbmdlIGFuZCB0aGF0IHRoZSB0YXJnZXQgaXMgYSBjb3JlIHByaW1pdGl2ZSwgSSB0aGluayB0aGUgZWZmb3J0IGlzIGp1c3RpZmllZC4KCklzIGBfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmVgIGEgaG90LXBhdGggZnVuY3Rpb24/IFRoYXQmIzM5O3MgdGhlIHJlYWwgcXVlc3Rpb24uIGBET19PTkNFX1NMRUVQQUJMRWAgc3VnZ2VzdHMgb25lLXRpbWUgaW5pdGlhbGl6YXRpb24sIHNvIGl0IGlzIG5vdCBhIGhvdCBwYXRoIGFmdGVyIHRoZSBmaXJzdCBleGVjdXRpb24uIEJ1dCwgdGhlIGZpcnN0IHRpbWUgaXQgKmlzKiBjYWxsZWQsIHRoaXMgZnVuY3Rpb24gaXMgZXhlY3V0ZWQuIFRoZXJlZm9yZSwgdGhhdCBpbml0aWFsIGV4ZWN1dGlvbiBwYXRoIGlzIHRoZSBjcml0aWNhbCBvbmUuCgpJJiMzOTtsbCBmbGFnIGl0IGFzIFdvcnRoRnV6emluZz10cnVlLCB3aXRoIEZvY3VzU3ltYm9scz1bJiMzNDtfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmUmIzM0O10uIE5vdyBsZXQmIzM5O3Mgc2VlIGV4YWN0bHkgd2hlcmUgYERPX09OQ0VfU0xFRVBBQkxFYCBpcyB1c2VkIHRvIGdldCBtb3JlIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE0OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0RPX09OQ0VfU0xFRVBBQkxFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL3Jlc2N0cmwvcmR0Z3JvdXAuYz0zMTcxPXN0YXRpYyBpbnQgcmR0X2dldF90cmVlKHN0cnVjdCBmc19jb250ZXh0ICpmYylcbi0tXG5mcy9yZXNjdHJsL3JkdGdyb3VwLmMtMzE3OS1cbmZzL3Jlc2N0cmwvcmR0Z3JvdXAuYzozMTgwOlx0RE9fT05DRV9TTEVFUEFCTEUocmVzY3RybF9hcmNoX3ByZV9tb3VudCk7XG5mcy9yZXNjdHJsL3JkdGdyb3VwLmMtMzE4MS1cbi0tXG5pbmNsdWRlL2xpbnV4L29uY2UuaD0xNz12b2lkIF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZShib29sICpkb25lLCBzdHJ1Y3Qgc3RhdGljX2tleV90cnVlICpvbmNlX2tleSxcbi0tXG5pbmNsdWRlL2xpbnV4L29uY2UuaC02My0vKiBWYXJpYW50IG9mIERPX09OQ0UoKSBmb3IgcHJvY2Vzcy9zbGVlcGFibGUgY29udGV4dHMuICovXG5pbmNsdWRlL2xpbnV4L29uY2UuaDo2NDojZGVmaW5lIERPX09OQ0VfU0xFRVBBQkxFKGZ1bmMsIC4uLilcdFx0XHRcdFx0XHRcXFxuaW5jbHVkZS9saW51eC9vbmNlLmgtNjUtXHQoe1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4tLVxuaW5jbHVkZS9saW51eC9vbmNlLmgtODMtI2RlZmluZSBnZXRfcmFuZG9tX3NsZWVwYWJsZV9vbmNlKGJ1ZiwgbmJ5dGVzKVx0XHRcdFx0ICAgICBcXFxuaW5jbHVkZS9saW51eC9vbmNlLmg6ODQ6XHRET19PTkNFX1NMRUVQQUJMRShnZXRfcmFuZG9tX2J5dGVzLCAoYnVmKSwgKG5ieXRlcykpXG5pbmNsdWRlL2xpbnV4L29uY2UuaC04NS1cbi0tXG5saWIvb25jZS5jPTcyPWJvb2wgX19kb19vbmNlX3NsZWVwYWJsZV9zdGFydChib29sICpkb25lKVxuLS1cbmxpYi9vbmNlLmMtNzktXHRcdCAqIHRoaXMgbXV0ZXguIEluIGNhc2Ugd2UgcmV0dXJuIGhlcmUsIHdlIGRvbiYjMzk7dCBjYWxsIGludG9cbmxpYi9vbmNlLmM6ODA6XHRcdCAqIF9fZG9fb25jZV9kb25lIGJ1dCByZXR1cm4gZWFybHkgaW4gdGhlIERPX09OQ0VfU0xFRVBBQkxFKCkgbWFjcm8uXG5saWIvb25jZS5jLTgxLVx0XHQgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTQ6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTYxOAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIGEgQ29kZSBTbmlwcGV0KioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuLi4gdGhpcyBiaXQgb2YgY29kZSBpcyBwb3BwaW5nIHVwIGluIGBmcy9yZXNjdHJsL3JkdGdyb3VwLmNgLiBBaCwgaW50ZXJlc3RpbmcsIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJlc291cmNlIGNvbnRyb2wgc3R1ZmYgbGl2ZXMsIHNvIEkmIzM5O2QgZXhwZWN0IGl0IHRvIGJlIHVzZWQgdGhlcmUsIGNvbnRyb2xsaW5nIGNhY2hlIGFsbG9jYXRpb24gYW5kIHN1Y2guIEJ1dCB0aGVuIHRoZXJlJiMzOTtzIHRoaXMgYGdldF9yYW5kb21fc2xlZXBhYmxlX29uY2VgIGZ1bmN0aW9uLi4uIFdhaXQgYSBzZWNvbmQsIGlzbiYjMzk7dCAqdGhhdCogdXNlZCBpbiBhIGZldyBtb3JlIHBsYWNlcyB0aGFuIEkgaW5pdGlhbGx5IHRob3VnaHQ/IEkgbmVlZCB0byBjaGVjayB0aGUgY2FsbCBncmFwaCBmb3IgYGdldF9yYW5kb21fc2xlZXBhYmxlX29uY2VgIGJlY2F1c2UgdGhpcyBzdWdnZXN0cyB0aGF0IHRoaXMgaXMgbW9yZSB3aWRlbHkgc2NvcGVkIGFuZCBhIGJyb2FkZXIgZGVwZW5kZW5jeSB0aGFuIEkgZmlyc3Qgc3VzcGVjdGVkLiBJIHdvbmRlciBpZiB0aGVyZSBhcmUgYW55IHN1YnRsZSBpbnRlcmFjdGlvbnMgdG8gYmUgYXdhcmUgb2Y/IEl0JiMzOTtzIHRpbWUgdG8gZGlnIGRlZXBlciBhbmQgc2VlIHdoZXJlIGVsc2UgdGhpcyBmdW5jdGlvbiBpcyBiZWluZyBjYWxsZWQgYW5kIHdoZXRoZXIgdGhlIHNoYXJlZCBjb250ZXh0IGlzIGltcG9ydGFudC4gVGhpcyBmZWVscyBsaWtlIGl0IHdhcnJhbnRzIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGJpZ2dlciBwaWN0dXJlIGJlZm9yZSBJIHByb2NlZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE0OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2dldF9yYW5kb21fc2xlZXBhYmxlX29uY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9uZXQuaD0zMzg9ZG8ge1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4tLVxuaW5jbHVkZS9saW51eC9uZXQuaC0zNTQtXHRnZXRfcmFuZG9tX29uY2UoKGJ1ZiksIChuYnl0ZXMpKVxuaW5jbHVkZS9saW51eC9uZXQuaDozNTU6I2RlZmluZSBuZXRfZ2V0X3JhbmRvbV9zbGVlcGFibGVfb25jZShidWYsIG5ieXRlcylcdFx0XFxcbmluY2x1ZGUvbGludXgvbmV0Lmg6MzU2Olx0Z2V0X3JhbmRvbV9zbGVlcGFibGVfb25jZSgoYnVmKSwgKG5ieXRlcykpXG5pbmNsdWRlL2xpbnV4L25ldC5oLTM1Ny1cbi0tXG5pbmNsdWRlL2xpbnV4L29uY2UuaD0xNz12b2lkIF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZShib29sICpkb25lLCBzdHJ1Y3Qgc3RhdGljX2tleV90cnVlICpvbmNlX2tleSxcbi0tXG5pbmNsdWRlL2xpbnV4L29uY2UuaC04Mi1cbmluY2x1ZGUvbGludXgvb25jZS5oOjgzOiNkZWZpbmUgZ2V0X3JhbmRvbV9zbGVlcGFibGVfb25jZShidWYsIG5ieXRlcylcdFx0XHRcdCAgICAgXFxcbmluY2x1ZGUvbGludXgvb25jZS5oLTg0LVx0RE9fT05DRV9TTEVFUEFCTEUoZ2V0X3JhbmRvbV9ieXRlcywgKGJ1ZiksIChuYnl0ZXMpKVxuLS1cbm5ldC9pcHY0L2luZXRfaGFzaHRhYmxlcy5jPTM0PXN0YXRpYyB2b2lkIGluZXRfaW5pdF9laGFzaF9zZWNyZXQodm9pZClcbm5ldC9pcHY0L2luZXRfaGFzaHRhYmxlcy5jLTM1LXtcbm5ldC9pcHY0L2luZXRfaGFzaHRhYmxlcy5jOjM2Olx0bmV0X2dldF9yYW5kb21fc2xlZXBhYmxlX29uY2UoXHUwMDI2aW5ldF9laGFzaF9zZWNyZXQsXG5uZXQvaXB2NC9pbmV0X2hhc2h0YWJsZXMuYy0zNy1cdFx0XHRcdCAgICAgIHNpemVvZihpbmV0X2VoYXNoX3NlY3JldCkpO1xuLS1cbm5ldC9pcHY0L2luZXRfaGFzaHRhYmxlcy5jPTEwNDA9aW50IF9faW5ldF9oYXNoX2Nvbm5lY3Qoc3RydWN0IGluZXRfdGltZXdhaXRfZGVhdGhfcm93ICpkZWF0aF9yb3csXG4tLVxubmV0L2lwdjQvaW5ldF9oYXNodGFibGVzLmMtMTA4MC1cbm5ldC9pcHY0L2luZXRfaGFzaHRhYmxlcy5jOjEwODE6XHRnZXRfcmFuZG9tX3NsZWVwYWJsZV9vbmNlKHRhYmxlX3BlcnR1cmIsXG5uZXQvaXB2NC9pbmV0X2hhc2h0YWJsZXMuYy0xMDgyLVx0XHRcdFx0ICBJTkVUX1RBQkxFX1BFUlRVUkJfU0laRSAqIHNpemVvZigqdGFibGVfcGVydHVyYikpO1xuLS1cbm5ldC9pcHY2L2luZXQ2X2hhc2h0YWJsZXMuYz0yNj12b2lkIGluZXQ2X2luaXRfZWhhc2hfc2VjcmV0KHZvaWQpXG5uZXQvaXB2Ni9pbmV0Nl9oYXNodGFibGVzLmMtMjcte1xubmV0L2lwdjYvaW5ldDZfaGFzaHRhYmxlcy5jOjI4Olx0bmV0X2dldF9yYW5kb21fc2xlZXBhYmxlX29uY2UoXHUwMDI2aW5ldDZfZWhhc2hfc2VjcmV0LFxubmV0L2lwdjYvaW5ldDZfaGFzaHRhYmxlcy5jLTI5LVx0XHRcdFx0ICAgICAgc2l6ZW9mKGluZXQ2X2VoYXNoX3NlY3JldCkpO1xubmV0L2lwdjYvaW5ldDZfaGFzaHRhYmxlcy5jOjMwOlx0bmV0X2dldF9yYW5kb21fc2xlZXBhYmxlX29uY2UoXHUwMDI2dGNwX2lwdjZfaGFzaF9zZWNyZXQsXG5uZXQvaXB2Ni9pbmV0Nl9oYXNodGFibGVzLmMtMzEtXHRcdFx0XHQgICAgICBzaXplb2YodGNwX2lwdjZfaGFzaF9zZWNyZXQpKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTQ6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjU4NAoJCQkJCQkJb3V0cHV0OiAxNTYKCQkJCQkJCXRob3VnaHRzOiA3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbioqCgpBbHJpZ2h0LCBsb29raW5nIGF0IHRoaXMgY29kZSwgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoYXQgYF9faW5ldF9oYXNoX2Nvbm5lY3RgIGlzIGEga2V5IGZ1bmN0aW9uIGludm9sdmVkIGluIG5ldHdvcmsgY29ubmVjdGlvbiBzZXR1cC4gVGhhdCBhbG9uZSBtYWtlcyBpdCBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZyDigJMgaXQmIzM5O3MgZGVmaW5pdGVseSByZWFjaGFibGUgd2l0aGluIGEgY3JpdGljYWwgcGFydCBvZiB0aGUgc3lzdGVtLiBUaGUgZmFjdCB0aGF0IHRoZSBjaGFuZ2UgZGVmZXJzIGBzdGF0aWNfYnJhbmNoX2Rpc2FibGVgIHRvIGEgd29ya3F1ZXVlIHN1Z2dlc3RzIGEgcG90ZW50aWFsIGZvciBpbnRlcmVzdGluZyBjb25jdXJyZW5jeS1yZWxhdGVkIGlzc3Vlcy4gSSYjMzk7bSBnb2luZyB0byBmbGFnIHRoaXMgYXMgYFdvcnRoRnV6emluZz10cnVlYC4gVG8gemVybyBpbiBvbiB0aGUgaW50ZXJlc3RpbmcgcGllY2VzIG9mIHRoaXMgc2VjdGlvbiwgSSYjMzk7bGwgcGF5IHNwZWNpZmljIGF0dGVudGlvbiB0byB0aGUgYF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZWAgc3ltYm9sIGFzIGEgZm9jdXMgcG9pbnQuIE5vIHNwZWNpYWwgY29uZmlndXJhdGlvbiBpcyBuZWVkZWQgdG8gbWFrZSB0aGlzIGludGVyZXN0aW5nLCBmcm9tIHdoYXQgSSBjYW4gc2VlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxNDo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19kb19vbmNlX3NsZWVwYWJsZV9kb25lJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmVgIGluIGBsaWIvb25jZS5jYCB0byBkZWZlciB0aGUgc3RhdGljIGJyYW5jaCBkaXNhYmxlIG9wZXJhdGlvbiB0byBhIHdvcmtxdWV1ZSB1c2luZyBgb25jZV9kaXNhYmxlX2p1bXBgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGtlcm5lbCBwcmltaXRpdmUgdXNlZCBieSBgRE9fT05DRV9TTEVFUEFCTEVgIGFuZCBgZ2V0X3JhbmRvbV9zbGVlcGFibGVfb25jZWAsIHdoaWNoIGFyZSByZWFjaGFibGUgZHVyaW5nIG5ldHdvcmsgY29ubmVjdGlvbiBzZXR1cCAoZS5nLiwgYF9faW5ldF9oYXNoX2Nvbm5lY3RgKS4gSXQgaXMgd29ydGggZnV6emluZyB0byBlbnN1cmUgdGhlIGRlZmVycmVkIHdvcmtxdWV1ZSBleGVjdXRpb24gZG9lcyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHJhY2UgY29uZGl0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZWAgaW4gYGxpYi9vbmNlLmNgIHRvIGRlZmVyIHRoZSBzdGF0aWMgYnJhbmNoIGRpc2FibGUgb3BlcmF0aW9uIHRvIGEgd29ya3F1ZXVlIHVzaW5nIGBvbmNlX2Rpc2FibGVfanVtcGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGNvcmUga2VybmVsIHByaW1pdGl2ZSB1c2VkIGJ5IGBET19PTkNFX1NMRUVQQUJMRWAgYW5kIGBnZXRfcmFuZG9tX3NsZWVwYWJsZV9vbmNlYCwgd2hpY2ggYXJlIHJlYWNoYWJsZSBkdXJpbmcgbmV0d29yayBjb25uZWN0aW9uIHNldHVwIChlLmcuLCBgX19pbmV0X2hhc2hfY29ubmVjdGApLiBJdCBpcyB3b3J0aCBmdXp6aW5nIHRvIGVuc3VyZSB0aGUgZGVmZXJyZWQgd29ya3F1ZXVlIGV4ZWN1dGlvbiBkb2VzIG5vdCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgcmFjZSBjb25kaXRpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxNDo1OTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE0OjU5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgX19kb19vbmNlX3NsZWVwYWJsZV9kb25lYCBmdW5jdGlvbiBpbiBgbGliL29uY2UuY2AgdG8gdXNlIGBvbmNlX2Rpc2FibGVfanVtcGAgaW5zdGVhZCBvZiBgc3RhdGljX2JyYW5jaF9kaXNhYmxlYC4gVGhpcyBpcyByZWxhdGVkIHRvIHRoZSBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYERPX09OQ0VgIG1hY3JvIGFuZCBzdGF0aWMga2V5cywgbGlrZWx5IHRvIGhhbmRsZSBtb2R1bGUgdW5sb2FkaW5nIG9yIGRlZmVycmVkIHN0YXRpYyBicmFuY2ggZGlzYWJsaW5nIGNvcnJlY3RseS4gVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIHVzZXItc3BhY2UgY29waWVzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIHdvdWxkIGJlIHJlbGF0ZWQgdG8gc3RhdGljIGtleXMsIGxvY2tpbmcsIG9yIG1vZHVsZSBzdGF0ZSwgd2hpY2ggYXJlIGNvdmVyZWQgYnkgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scyBhbmQgS0FTQU4vTE9DS0RFUCwgbm90IEtNU0FOLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjNTc2NTRmMjRlYWE2YTY4MTFiZDhhM2Q5Y2NlZWYyZDdlMmIyYjdjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBBdWcgMjUgMTQ6NDc6MTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9saWIvb25jZS5jIGIvbGliL29uY2UuYwppbmRleCBkODAxYmZhOTQ1ZTYzLi4wYTBhOTE5MTU2ZTA1IDEwMDY0NAotLS0gYS9saWIvb25jZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2xpYi9vbmNlLmMKQEAgLTkzLDYgJiM0Mzs5Myw2IEBAIHZvaWQgX19kb19vbmNlX3NsZWVwYWJsZV9kb25lKGJvb2wgKmRvbmUsIHN0cnVjdCBzdGF0aWNfa2V5X3RydWUgKm9uY2Vfa2V5LAogewogCSpkb25lID0gdHJ1ZTsKIAltdXRleF91bmxvY2soJmFtcDtvbmNlX211dGV4KTsKLQlzdGF0aWNfYnJhbmNoX2Rpc2FibGUob25jZV9rZXkpOwomIzQzOwlvbmNlX2Rpc2FibGVfanVtcChvbmNlX2tleSwgbW9kKTsKIH0KIEVYUE9SVF9TWU1CT0woX19kb19vbmNlX3NsZWVwYWJsZV9kb25lKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE0OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NTEKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgYGxpYi9vbmNlLmNgIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZWAgaW4gYGxpYi9vbmNlLmNgLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIHN3YXBwaW5nIG91dCBhIGBzdGF0aWNfYnJhbmNoX2Rpc2FibGUob25jZV9rZXkpO2AgY2FsbCBmb3IgYG9uY2VfZGlzYWJsZV9qdW1wKG9uY2Vfa2V5LCBtb2QpO2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeS4gRmlyc3QgdGhpbmdzIGZpcnN0LCBJIHNob3VsZCBxdWlja2x5IHZlcmlmeSBib3RoIGBsaWIvb25jZS5jYCBhbmQgc3BlY2lmaWNhbGx5IGBvbmNlX2Rpc2FibGVfanVtcGAgaWYgbmVjZXNzYXJ5LCB0byBnZXQgdGhlIGZ1bGwgY29udGV4dC4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBtYWtlIHN1cmUgdGhpcyBkb2VzbiYjMzk7dCBhY2NpZGVudGFsbHkgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgYnV0IHRoYXQgd291bGRuJiMzOTt0IG1ha2Ugc2Vuc2Ugc2luY2Ugd2UgYXJlIGRlYWxpbmcgd2l0aCBzdGF0aWMgYnJhbmNoZXMgYW5kIGBET19PTkNFYCBtYWNyb3MuIFRoaXMgc2VlbXMgdG8gYmUgcHJpbWFyaWx5IGNvbmNlcm5lZCB3aXRoIGp1bXAgbGFiZWxzIGFuZCBzdGF0aWMga2V5cy4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJJiMzOTttIGdvaW5nIHRvIGRvdWJsZS1jaGVjayBgb25jZV9kaXNhYmxlX2p1bXBgIHRvIGNvbmZpcm0gdGhhdCBpdCYjMzk7cyBvcGVyYXRpbmcgYXMgZXhwZWN0ZWQgYW5kIHRoYXQgdGhlIHN1YnN0aXR1dGlvbiBpcyBzYWZlIGFuZCBzZW1hbnRpY2FsbHkgZXF1aXZhbGVudCBpbiB0aGlzIGNvbnRleHQuIEl0JiMzOTtzIGFsd2F5cyBnb29kIHRvIGJlIHRob3JvdWdoIHdpdGggdGhlc2UgdHlwZXMgb2YgY2hhbmdlcyBpbiB0aGUga2VybmVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxNTowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtvbmNlX2Rpc2FibGVfanVtcCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtsaWIvb25jZS5jPTE0PXN0YXRpYyB2b2lkIG9uY2VfZGVmZXJyZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3KVxuLS1cbmxpYi9vbmNlLmMtMjQtXG5saWIvb25jZS5jOjI1OnN0YXRpYyB2b2lkIG9uY2VfZGlzYWJsZV9qdW1wKHN0cnVjdCBzdGF0aWNfa2V5X3RydWUgKmtleSwgc3RydWN0IG1vZHVsZSAqbW9kKVxubGliL29uY2UuYy0yNi17XG4tLVxubGliL29uY2UuYz02MD12b2lkIF9fZG9fb25jZV9kb25lKGJvb2wgKmRvbmUsIHN0cnVjdCBzdGF0aWNfa2V5X3RydWUgKm9uY2Vfa2V5LFxuLS1cbmxpYi9vbmNlLmMtNjUtXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNm9uY2VfbG9jaywgKmZsYWdzKTtcbmxpYi9vbmNlLmM6NjY6XHRvbmNlX2Rpc2FibGVfanVtcChvbmNlX2tleSwgbW9kKTtcbmxpYi9vbmNlLmMtNjctfVxuLS1cbmxpYi9vbmNlLmM9OTA9dm9pZCBfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmUoYm9vbCAqZG9uZSwgc3RydWN0IHN0YXRpY19rZXlfdHJ1ZSAqb25jZV9rZXksXG4tLVxubGliL29uY2UuYy05NS1cdG11dGV4X3VubG9jayhcdTAwMjZvbmNlX211dGV4KTtcbmxpYi9vbmNlLmM6OTY6XHRvbmNlX2Rpc2FibGVfanVtcChvbmNlX2tleSwgbW9kKTtcbmxpYi9vbmNlLmMtOTctfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxNTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjEwCgkJCQkJCQlvdXRwdXQ6IDE3MQoJCQkJCQkJdGhvdWdodHM6IDExNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHN3aXRjaGluZyBgc3RhdGljX2JyYW5jaF9kaXNhYmxlKG9uY2Vfa2V5KWAgdG8gYG9uY2VfZGlzYWJsZV9qdW1wKG9uY2Vfa2V5LCBtb2QpYC4gVGhpcyBpcyBjbGVhcmx5IGFpbWVkIGF0IGFkZHJlc3NpbmcgYSBwcm9ibGVtIHNwZWNpZmljYWxseSB3aXRoaW4gbW9kdWxlcywgbGlrZWx5IGFyb3VuZCBob3cgYERPX09OQ0VgIGlzIGhhbmRsZWQuIFRoZSBjdXJyZW50IG1ldGhvZCB3aXRoIGBzdGF0aWNfYnJhbmNoX2Rpc2FibGVgIHNlZW1zIHRvIGJlIHByb2JsZW1hdGljIG9yIHJlcXVpcmUgc29tZSBkZWxheWVkIGFjdGlvbiwgd2hpY2ggaXMgd2hhdCBgb25jZV9kaXNhYmxlX2p1bXBgIGlzIGRlc2lnbmVkIHRvIHByb3ZpZGUuCgpDcnVjaWFsbHksIGZyb20gd2hhdCBJIGNhbiB0ZWxsLCB0aGlzIGhhcyAqemVybyogYmVhcmluZyBvbiB0aGUgaXNzdWVzIEtNU0FOIGlzIGRlc2lnbmVkIHRvIGRldGVjdC4gVGhlcmUmIzM5O3Mgbm8gaGludCBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB2dWxuZXJhYmlsaXRpZXMsIHBvdGVudGlhbCBpbmZvcm1hdGlvbiBsZWFrcywgb3IgYW55dGhpbmcgZWxzZSB0aGF0IEtNU0FOIHdvdWxkIGZsYWcuIFRoaXMgaXMgcHVyZWx5IGEgY29udHJvbCBmbG93IGFuZCBzdGF0aWMga2V5IGNvcnJlY3Rpb24uCgpUaGVyZWZvcmUsIEkmIzM5O20gY29uZmlkZW50IGluIHNldHRpbmcgYE5lZWRzS01TQU49ZmFsc2VgLiBJdCYjMzk7cyBzaW1wbHkgbm90IHJlbGV2YW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxNTowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgYF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZWAgZnVuY3Rpb24gaW4gYGxpYi9vbmNlLmNgIHRvIHVzZSBgb25jZV9kaXNhYmxlX2p1bXBgIGluc3RlYWQgb2YgYHN0YXRpY19icmFuY2hfZGlzYWJsZWAuIFRoaXMgaXMgcmVsYXRlZCB0byB0aGUgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIGBET19PTkNFYCBtYWNybyBhbmQgc3RhdGljIGtleXMsIGxpa2VseSB0byBoYW5kbGUgbW9kdWxlIHVubG9hZGluZyBvciBkZWZlcnJlZCBzdGF0aWMgYnJhbmNoIGRpc2FibGluZyBjb3JyZWN0bHkuIFRoaXMgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciB1c2VyLXNwYWNlIGNvcGllcy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCB3b3VsZCBiZSByZWxhdGVkIHRvIHN0YXRpYyBrZXlzLCBsb2NraW5nLCBvciBtb2R1bGUgc3RhdGUsIHdoaWNoIGFyZSBjb3ZlcmVkIGJ5IHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMgYW5kIEtBU0FOL0xPQ0tERVAsIG5vdCBLTVNBTi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgX19kb19vbmNlX3NsZWVwYWJsZV9kb25lYCBmdW5jdGlvbiBpbiBgbGliL29uY2UuY2AgdG8gdXNlIGBvbmNlX2Rpc2FibGVfanVtcGAgaW5zdGVhZCBvZiBgc3RhdGljX2JyYW5jaF9kaXNhYmxlYC4gVGhpcyBpcyByZWxhdGVkIHRvIHRoZSBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYERPX09OQ0VgIG1hY3JvIGFuZCBzdGF0aWMga2V5cywgbGlrZWx5IHRvIGhhbmRsZSBtb2R1bGUgdW5sb2FkaW5nIG9yIGRlZmVycmVkIHN0YXRpYyBicmFuY2ggZGlzYWJsaW5nIGNvcnJlY3RseS4gVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIHVzZXItc3BhY2UgY29waWVzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIHdvdWxkIGJlIHJlbGF0ZWQgdG8gc3RhdGljIGtleXMsIGxvY2tpbmcsIG9yIG1vZHVsZSBzdGF0ZSwgd2hpY2ggYXJlIGNvdmVyZWQgYnkgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scyBhbmQgS0FTQU4vTE9DS0RFUCwgbm90IEtNU0FOLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxNDo0NzoxMy4zNDQ2NTQ5NjNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzgxMjgwMjcyMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19kb19vbmNlX3NsZWVwYWJsZV9kb25lXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZWAgZnVuY3Rpb24gaW4gYGxpYi9vbmNlLmNgIHRvIHVzZSBgb25jZV9kaXNhYmxlX2p1bXBgIGluc3RlYWQgb2YgYHN0YXRpY19icmFuY2hfZGlzYWJsZWAuIFRoaXMgaXMgcmVsYXRlZCB0byB0aGUgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIGBET19PTkNFYCBtYWNybyBhbmQgc3RhdGljIGtleXMsIGxpa2VseSB0byBoYW5kbGUgbW9kdWxlIHVubG9hZGluZyBvciBkZWZlcnJlZCBzdGF0aWMgYnJhbmNoIGRpc2FibGluZyBjb3JyZWN0bHkuIFRoaXMgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciB1c2VyLXNwYWNlIGNvcGllcy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCB3b3VsZCBiZSByZWxhdGVkIHRvIHN0YXRpYyBrZXlzLCBsb2NraW5nLCBvciBtb2R1bGUgc3RhdGUsIHdoaWNoIGFyZSBjb3ZlcmVkIGJ5IHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMgYW5kIEtBU0FOL0xPQ0tERVAsIG5vdCBLTVNBTi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgX19kb19vbmNlX3NsZWVwYWJsZV9kb25lYCBpbiBgbGliL29uY2UuY2AgdG8gZGVmZXIgdGhlIHN0YXRpYyBicmFuY2ggZGlzYWJsZSBvcGVyYXRpb24gdG8gYSB3b3JrcXVldWUgdXNpbmcgYG9uY2VfZGlzYWJsZV9qdW1wYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBrZXJuZWwgcHJpbWl0aXZlIHVzZWQgYnkgYERPX09OQ0VfU0xFRVBBQkxFYCBhbmQgYGdldF9yYW5kb21fc2xlZXBhYmxlX29uY2VgLCB3aGljaCBhcmUgcmVhY2hhYmxlIGR1cmluZyBuZXR3b3JrIGNvbm5lY3Rpb24gc2V0dXAgKGUuZy4sIGBfX2luZXRfaGFzaF9jb25uZWN0YCkuIEl0IGlzIHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIHRoZSBkZWZlcnJlZCB3b3JrcXVldWUgZXhlY3V0aW9uIGRvZXMgbm90IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciByYWNlIGNvbmRpdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE0OjQ3OjEzLjM0NDY2MDY4M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQzNzUwNzc2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGM1NzY1NGYyNGVhYTZhNjgxMWJkOGEzZDljY2VlZjJkN2UyYjJiN2NcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgMjUgMTQ6NDc6MTEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbGliL29uY2UuYyBiL2xpYi9vbmNlLmNcXG5pbmRleCBkODAxYmZhOTQ1ZTYzLi4wYTBhOTE5MTU2ZTA1IDEwMDY0NFxcbi0tLSBhL2xpYi9vbmNlLmNcXG4rKysgYi9saWIvb25jZS5jXFxuQEAgLTkzLDYgKzkzLDYgQEAgdm9pZCBfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmUoYm9vbCAqZG9uZSwgc3RydWN0IHN0YXRpY19rZXlfdHJ1ZSAqb25jZV9rZXksXFxuIHtcXG4gXFx0KmRvbmUgPSB0cnVlO1xcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNm9uY2VfbXV0ZXgpO1xcbi1cXHRzdGF0aWNfYnJhbmNoX2Rpc2FibGUob25jZV9rZXkpO1xcbitcXHRvbmNlX2Rpc2FibGVfanVtcChvbmNlX2tleSwgbW9kKTtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MKF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE0OjQ3OjE0Ljc4NDE2MDkwMVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjc2MzEzNDUxMDUxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgX19kb19vbmNlX3NsZWVwYWJsZV9kb25lYCBpbiBgbGliL29uY2UuY2AgdG8gZGVmZXIgdGhlIHN0YXRpYyBicmFuY2ggZGlzYWJsZSBvcGVyYXRpb24gdG8gYSB3b3JrcXVldWUgdXNpbmcgYG9uY2VfZGlzYWJsZV9qdW1wYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBrZXJuZWwgcHJpbWl0aXZlIHVzZWQgYnkgYERPX09OQ0VfU0xFRVBBQkxFYCBhbmQgYGdldF9yYW5kb21fc2xlZXBhYmxlX29uY2VgLCB3aGljaCBhcmUgcmVhY2hhYmxlIGR1cmluZyBuZXR3b3JrIGNvbm5lY3Rpb24gc2V0dXAgKGUuZy4sIGBfX2luZXRfaGFzaF9jb25uZWN0YCkuIEl0IGlzIHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIHRoZSBkZWZlcnJlZCB3b3JrcXVldWUgZXhlY3V0aW9uIGRvZXMgbm90IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciByYWNlIGNvbmRpdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGM1NzY1NGYyNGVhYTZhNjgxMWJkOGEzZDljY2VlZjJkN2UyYjJiN2NcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAyNSAxNDo0NzoxMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2xpYi9vbmNlLmMgYi9saWIvb25jZS5jXG5pbmRleCBkODAxYmZhOTQ1ZTYzLi4wYTBhOTE5MTU2ZTA1IDEwMDY0NFxuLS0tIGEvbGliL29uY2UuY1xuKysrIGIvbGliL29uY2UuY1xuQEAgLTkzLDYgKzkzLDYgQEAgdm9pZCBfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmUoYm9vbCAqZG9uZSwgc3RydWN0IHN0YXRpY19rZXlfdHJ1ZSAqb25jZV9rZXksXG4ge1xuIFx0KmRvbmUgPSB0cnVlO1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNm9uY2VfbXV0ZXgpO1xuLVx0c3RhdGljX2JyYW5jaF9kaXNhYmxlKG9uY2Vfa2V5KTtcbitcdG9uY2VfZGlzYWJsZV9qdW1wKG9uY2Vfa2V5LCBtb2QpO1xuIH1cbiBFWFBPUlRfU1lNQk9MKF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxNDo0NzoxNC43ODQxNjI4OTFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjg2MjMzOTQzMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSAnb25jZScgQ29kZSBNb2RpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCdzIGdvdCBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgY2hhbmdlIGluIGBsaWIvb25jZS5jYC4gU3BlY2lmaWNhbGx5LCBpdCdzIHN3YXBwaW5nIG91dCBgc3RhdGljX2JyYW5jaF9kaXNhYmxlKG9uY2Vfa2V5KTtgIHdpdGggYG9uY2VfZGlzYWJsZV9qdW1wKG9uY2Vfa2V5LCBtb2QpO2Agd2l0aGluIHRoZSBgX19kb19vbmNlX3NsZWVwYWJsZV9kb25lYCBmdW5jdGlvbi4gVGhpcyBzdWdnZXN0cyBhIHNoaWZ0IGluIGhvdyB3ZSdyZSBoYW5kbGluZyB0aGUgXCJvbmNlXCIgZXhlY3V0aW9uIG1lY2hhbmlzbSwgcHJlc3VtYWJseSByZWxhdGVkIHRvIGRpc2FibGluZyBpdCBhZnRlciB0aGUgaW5pdGlhbCBydW4uIE5hdHVyYWxseSwgbXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIGBsaWIvb25jZS5jYCBhbmQgZmlndXJlIG91dCAqZXhhY3RseSogd2hhdCBgb25jZV9kaXNhYmxlX2p1bXBgIGlzIGRvaW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgbmV3IGZ1bmN0aW9uIGFuZCBob3cgaXQgZGlmZmVycyBmcm9tIHRoZSBvcmlnaW5hbCBgc3RhdGljX2JyYW5jaF9kaXNhYmxlYC4gSXMgaXQgbW9yZSBlZmZpY2llbnQsIG1vcmUgZmxleGlibGUsIHBvdGVudGlhbGx5IHRpZWQgdG8gYSBzcGVjaWZpYyBoYXJkd2FyZSBmZWF0dXJlLCBvciBtYXliZSBpdCBpcyBwYXJ0IG9mIGEgYmlnZ2VyIHByb2plY3Q/IFRoZSBgbW9kYCB2YXJpYWJsZSBhbHNvIHBpcXVlcyBteSBpbnRlcmVzdDsgd2hlcmUgaXMgdGhhdCBjb21pbmcgZnJvbSwgYW5kIHdoYXQncyBpdHMgcm9sZSBpbiBhbGwgdGhpcz8gTmVlZCB0byBkcmlsbCBpbnRvIHRoYXQuIFRpbWUgdG8gZ2V0IGludG8gdGhlIGRldGFpbHMgYW5kIHdvcmsgdGhyb3VnaCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk1NCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTQ6NTA6MDMuNDA3NTU5NDUyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MDIzOTIxNzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwib25jZV9kaXNhYmxlX2p1bXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibGliL29uY2UuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJsaWIvb25jZS5jPTE0PXN0YXRpYyB2b2lkIG9uY2VfZGVmZXJyZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3KVxcbi0tXFxubGliL29uY2UuYy0yNC1cXG5saWIvb25jZS5jOjI1OnN0YXRpYyB2b2lkIG9uY2VfZGlzYWJsZV9qdW1wKHN0cnVjdCBzdGF0aWNfa2V5X3RydWUgKmtleSwgc3RydWN0IG1vZHVsZSAqbW9kKVxcbmxpYi9vbmNlLmMtMjYte1xcbi0tXFxubGliL29uY2UuYz02MD12b2lkIF9fZG9fb25jZV9kb25lKGJvb2wgKmRvbmUsIHN0cnVjdCBzdGF0aWNfa2V5X3RydWUgKm9uY2Vfa2V5LFxcbi0tXFxubGliL29uY2UuYy02NS1cXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZvbmNlX2xvY2ssICpmbGFncyk7XFxubGliL29uY2UuYzo2NjpcXHRvbmNlX2Rpc2FibGVfanVtcChvbmNlX2tleSwgbW9kKTtcXG5saWIvb25jZS5jLTY3LX1cXG4tLVxcbmxpYi9vbmNlLmM9OTA9dm9pZCBfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmUoYm9vbCAqZG9uZSwgc3RydWN0IHN0YXRpY19rZXlfdHJ1ZSAqb25jZV9rZXksXFxuLS1cXG5saWIvb25jZS5jLTk1LVxcdG11dGV4X3VubG9jayhcXHUwMDI2b25jZV9tdXRleCk7XFxubGliL29uY2UuYzo5NjpcXHRvbmNlX2Rpc2FibGVfanVtcChvbmNlX2tleSwgbW9kKTtcXG5saWIvb25jZS5jLTk3LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTQ6NTA6MDQuODA5OTU1MjExWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA1OTY0MDg4MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipEZWNvbnN0cnVjdGluZyBgb25jZV9kaXNhYmxlX2p1bXBgKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYG9uY2VfZGlzYWJsZV9qdW1wYCBhbmQgbXkgZmlyc3QgdGhvdWdodCBpcywgXCJSaWdodCwgaXQncyBhIGBzdGF0aWNgIGZ1bmN0aW9uLCBhbmQgaXQgbGl2ZXMgaW4gYGxpYi9vbmNlLmNgLlwiIFRoYXQgdGVsbHMgbWUgYSBmZXcgdGhpbmdzIGltbWVkaWF0ZWx5LiBJdCdzIGludGVybmFsIHRvIHRoYXQgY29tcGlsYXRpb24gdW5pdCwgcHJvYmFibHkgcGFydCBvZiBhIGxhcmdlciBtZWNoYW5pc20gd2l0aGluIHRoYXQgbGlicmFyeS4gU3RhdGljIGZ1bmN0aW9ucyBhcmUgb2Z0ZW4gdXNlZCBmb3IgaW1wbGVtZW50YXRpb24gZGV0YWlscywgaGVscGVyIGZ1bmN0aW9ucyB0aGF0IGFyZW4ndCBpbnRlbmRlZCBmb3IgZXh0ZXJuYWwgdXNlLiBOb3csIHRoZSBjcnVjaWFsIHBhcnQgaXMgdG8gZGlnIGludG8gKndoYXQqIGl0IGFjdHVhbGx5IGRvZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIHdpdGhpbiB0aGUgbGFyZ2VyIGBvbmNlYCBzeXN0ZW0uIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGFuZCBzZWUgaG93IGl0IHdvcmtzIVxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTgxLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTQ6NTA6NTUuNDA2MzY2NDM4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTkzMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibGliL29uY2UuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAyMDpcXHRcXHRzdGF0aWNfYnJhbmNoX2Rpc2FibGUod29yay1cXHUwMDNla2V5KTtcXG4gIDIxOlxcdFxcdG1vZHVsZV9wdXQod29yay1cXHUwMDNlbW9kdWxlKTtcXG4gIDIyOlxcdFxcdGtmcmVlKHdvcmspO1xcbiAgMjM6XFx0fVxcbiAgMjQ6XFx0XFxuICAyNTpcXHRzdGF0aWMgdm9pZCBvbmNlX2Rpc2FibGVfanVtcChzdHJ1Y3Qgc3RhdGljX2tleV90cnVlICprZXksIHN0cnVjdCBtb2R1bGUgKm1vZClcXG4gIDI2OlxcdHtcXG4gIDI3OlxcdFxcdHN0cnVjdCBvbmNlX3dvcmsgKnc7XFxuICAyODpcXHRcXG4gIDI5OlxcdFxcdHcgPSBrbWFsbG9jX29iaigqdywgR0ZQX0FUT01JQyk7XFxuICAzMDpcXHRcXHRpZiAoIXcpXFxuICAzMTpcXHRcXHRcXHRyZXR1cm47XFxuICAzMjpcXHRcXG4gIDMzOlxcdFxcdElOSVRfV09SSyhcXHUwMDI2dy1cXHUwMDNld29yaywgb25jZV9kZWZlcnJlZCk7XFxuICAzNDpcXHRcXHR3LVxcdTAwM2VrZXkgPSBrZXk7XFxuICAzNTpcXHRcXHR3LVxcdTAwM2Vtb2R1bGUgPSBtb2Q7XFxuICAzNjpcXHRcXHRfX21vZHVsZV9nZXQobW9kKTtcXG4gIDM3OlxcdFxcdHNjaGVkdWxlX3dvcmsoXFx1MDAyNnctXFx1MDAzZXdvcmspO1xcbiAgMzg6XFx0fVxcbiAgMzk6XFx0XFxuICA0MDpcXHRzdGF0aWMgREVGSU5FX1NQSU5MT0NLKG9uY2VfbG9jayk7XFxuICA0MTpcXHRcXG4gIDQyOlxcdGJvb2wgX19kb19vbmNlX3N0YXJ0KGJvb2wgKmRvbmUsIHVuc2lnbmVkIGxvbmcgKmZsYWdzKVxcbiAgNDM6XFx0XFx0X19hY3F1aXJlcyhvbmNlX2xvY2spXFxuICA0NDpcXHR7XFxuICA0NTpcXHRcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2b25jZV9sb2NrLCAqZmxhZ3MpO1xcbiAgNDY6XFx0XFx0aWYgKCpkb25lKSB7XFxuICA0NzpcXHRcXHRcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZvbmNlX2xvY2ssICpmbGFncyk7XFxuICA0ODpcXHRcXHRcXHQvKiBLZWVwIHNwYXJzZSBoYXBweSBieSByZXN0b3JpbmcgYW4gZXZlbiBsb2NrIGNvdW50IG9uXFxuICA0OTpcXHRcXHRcXHQgKiB0aGlzIGxvY2suIEluIGNhc2Ugd2UgcmV0dXJuIGhlcmUsIHdlIGRvbid0IGNhbGwgaW50b1xcbiAgNTA6XFx0XFx0XFx0ICogX19kb19vbmNlX2RvbmUgYnV0IHJldHVybiBlYXJseSBpbiB0aGUgRE9fT05DRSgpIG1hY3JvLlxcbiAgNTE6XFx0XFx0XFx0ICovXFxuICA1MjpcXHRcXHRcXHRfX2FjcXVpcmUob25jZV9sb2NrKTtcXG4gIDUzOlxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4gIDU0OlxcdFxcdH1cXG4gIDU1OlxcdFxcbiAgNTY6XFx0XFx0cmV0dXJuIHRydWU7XFxuICA1NzpcXHR9XFxuICA1ODpcXHRFWFBPUlRfU1lNQk9MKF9fZG9fb25jZV9zdGFydCk7XFxuICA1OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTQ6NTA6NTUuNDA2NDI3MzQ4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjM5NDE3MjIwNjEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ2hhbmdlIHRvIGBfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmVgKipcblxuT2theSwgc28gdGhlIGNoYW5nZSBpcyBpbiBgX19kb19vbmNlX3NsZWVwYWJsZV9kb25lYC4gVGhleSd2ZSBzd2FwcGVkIG91dCBgc3RhdGljX2JyYW5jaF9kaXNhYmxlKG9uY2Vfa2V5KWAgZm9yIGBvbmNlX2Rpc2FibGVfanVtcChvbmNlX2tleSwgbW9kKWAuIFRoaXMgaXMgaW50ZXJlc3Rpbmc7IGl0IGxvb2tzIGxpa2UgdGhleSdyZSBkZWZlcnJpbmcgdGhlIGp1bXAgbGFiZWwgdXBkYXRlIHRvIGEgd29ya3F1ZXVlLiBUaGUgZ29hbCBpcyBsaWtlbHkgdG8gYXZvaWQgc2xlZXBpbmcgb3IgYmxvY2tpbmcgaW4gY2VydGFpbiBjb250ZXh0cywgb3IgcGVyaGFwcyB0aGV5J3JlIHRyeWluZyB0byByZXNvbHZlIHNvbWUgbG9ja2RlcCBpc3N1ZXMuXG5cbldhaXQgYSBtaW51dGUsIGBfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmVgIGlzIHRpZWQgdG8gYERPX09OQ0VfU0xFRVBBQkxFYCwgcmlnaHQ/IENvbnNpZGVyaW5nIGl0cyBhc3NvY2lhdGlvbiB3aXRoIGBET19PTkNFX1NMRUVQQUJMRWAsIHNob3VsZCB0aGlzIGJlIGEgdGFyZ2V0IGZvciBmdXp6aW5nPyBIbW1tLCBpdCdzIGEgZnVuZGFtZW50YWwga2VybmVsIHByaW1pdGl2ZS4gRnV6emluZyBpdCBkaXJlY3RseSBtaWdodCBub3QgYmUgdGhlIG1vc3QgZWZmZWN0aXZlIHN0cmF0ZWd5IHNpbmNlIGBET19PTkNFYCBhbmQgYERPX09OQ0VfU0xFRVBBQkxFYCBhcmUgdXNlZCBzbyBleHRlbnNpdmVseSB0aHJvdWdob3V0IHRoZSBrZXJuZWwuIEl0IHdvdWxkIGxpa2VseSBwcm9kdWNlIGJyb2FkIHJlc3VsdHMuXG5cbkknbSBiZXR0ZXIgb2ZmIGNoZWNraW5nIHdoZXJlIGBfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmVgIGlzIGJlaW5nIHVzZWQgdG8gZ2V0IGEgYmV0dGVyIHNlbnNlIG9mIHRoZSBzY29wZSBvZiB0aGUgcG90ZW50aWFsIGltcGFjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMxOCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE0OjU0OjU0LjgyMzY1MTAxMVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODE3NTE5NjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fZG9fb25jZV9zbGVlcGFibGVfZG9uZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9vbmNlLmg9MTY9Ym9vbCBfX2RvX29uY2Vfc2xlZXBhYmxlX3N0YXJ0KGJvb2wgKmRvbmUpO1xcbmluY2x1ZGUvbGludXgvb25jZS5oOjE3OnZvaWQgX19kb19vbmNlX3NsZWVwYWJsZV9kb25lKGJvb2wgKmRvbmUsIHN0cnVjdCBzdGF0aWNfa2V5X3RydWUgKm9uY2Vfa2V5LFxcbmluY2x1ZGUvbGludXgvb25jZS5oLTE4LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBtb2R1bGUgKm1vZCk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L29uY2UuaC03Mi1cXHRcXHRcXHRcXHRmdW5jKF9fVkFfQVJHU19fKTtcXHRcXHRcXHRcXHRcXFxcXFxuaW5jbHVkZS9saW51eC9vbmNlLmg6NzM6XFx0XFx0XFx0XFx0X19kb19vbmNlX3NsZWVwYWJsZV9kb25lKFxcdTAwMjZfX19kb25lLCBcXHUwMDI2X19fb25jZV9rZXksXFxcXFxcbmluY2x1ZGUvbGludXgvb25jZS5oLTc0LVxcdFxcdFxcdFxcdFxcdFxcdCAgICBUSElTX01PRFVMRSk7XFx0XFx0XFxcXFxcbi0tXFxubGliL29uY2UuYz04OD1FWFBPUlRfU1lNQk9MKF9fZG9fb25jZV9zbGVlcGFibGVfc3RhcnQpO1xcbmxpYi9vbmNlLmMtODktXFxubGliL29uY2UuYzo5MDp2b2lkIF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZShib29sICpkb25lLCBzdHJ1Y3Qgc3RhdGljX2tleV90cnVlICpvbmNlX2tleSxcXG5saWIvb25jZS5jLTkxLVxcdFxcdFxcdCBzdHJ1Y3QgbW9kdWxlICptb2QpXFxuLS1cXG5saWIvb25jZS5jLTk3LX1cXG5saWIvb25jZS5jOjk4OkVYUE9SVF9TWU1CT0woX19kb19vbmNlX3NsZWVwYWJsZV9kb25lKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTQ6NTQ6NTcuNjQxMTc1Nzg5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc4MDAxODQyNzA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIGBzdGF0aWNfYnJhbmNoX2Rpc2FibGVgIFdvcmtxdWV1ZSBEZWZlcnJhbCoqXG5cbk9rYXksIHNvIHdlJ3JlIGxvb2tpbmcgYXQgYSBjaGFuZ2UgdGhhdCdzIGVzc2VudGlhbGx5IG1vdmluZyB0aGUgYHN0YXRpY19icmFuY2hfZGlzYWJsZWAgZnVuY3Rpb25hbGl0eSB0byBhIHdvcmtxdWV1ZS4gSXQncyBhIGZ1bmRhbWVudGFsIGNoYW5nZSB3aXRoaW4gdGhlIGtlcm5lbCBpdHNlbGYsIHNvLCB5ZXMsIGFic29sdXRlbHksIHRoaXMgd2FycmFudHMgZnV6emluZy4gV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBkb2Vzbid0IGludHJvZHVjZSBhbnkgc3VidGxlIHJlZ3Jlc3Npb25zIG9yIGlzc3Vlcy5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGxldCdzIHRhcmdldCBgX19kb19vbmNlX3NsZWVwYWJsZV9kb25lYC4gVGhhdCBzZWVtcyBsaWtlIGEga2V5IHN5bWJvbCByZWxhdGVkIHRvIHRoZSBcIm9uY2VcIiBpbmZyYXN0cnVjdHVyZSwgYW5kIGJhc2VkIG9uIG15IGV4cGVyaWVuY2UsIGEgY2hhbmdlIGxpa2UgdGhpcyBjb3VsZCBwb3RlbnRpYWxseSBpbnRlcmFjdCB3aXRoIGl0IGluIGludGVyZXN0aW5nIHdheXMuIFdhaXQgYSBtaW51dGUsIGBfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmVgICppcyogYSBjb3JlIGtlcm5lbCBmdW5jdGlvbi4gSXQgbGl2ZXMgaW4gYGxpYi9vbmNlLmNgLlxuXG5MZXQgbWUgc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQuIEhtbSwgbG9va3MgbGlrZSB3ZSBkb24ndCBuZWVkIGFueSBzcGVjaWFsIGNvbmZpZyBmbGFncyB0byBlbmFibGUgb3IgZGlzYWJsZSBpdDsgaXQgc2VlbXMgdG8gYmUgYnVpbHQgaW4gYnkgZGVmYXVsdC4gRXhjZWxsZW50LiBJJ2xsIGp1bXAgb3ZlciB0byB0aGUgYGxpYi9NYWtlZmlsZWAgdG8gY29uZmlybSBgb25jZS5vYCBpcyBhbHdheXMgYnVpbHQsIGVuc3VyaW5nIGl0IGlzIGFsd2F5cyBwYXJ0IG9mIG91ciBhdHRhY2sgc3VyZmFjZSBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA3NiwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxNDo1OTozNS42NDMwMjEwMjRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MDU5NTA5NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwib25jZVxcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJsaWIvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibGliL01ha2VmaWxlPTU1PW9iai15ICs9IGJjZC5vIHNvcnQubyBwYXJzZXIubyBkZWJ1Z19sb2Nrcy5vIHJhbmRvbTMyLm8gXFxcXFxcbi0tXFxubGliL01ha2VmaWxlLTU5LVxcdCBwZXJjcHUtcmVmY291bnQubyByaGFzaHRhYmxlLm8gYmFzZTY0Lm8gXFxcXFxcbmxpYi9NYWtlZmlsZTo2MDpcXHQgb25jZS5vIHJlZmNvdW50Lm8gcmN1cmVmLm8gdXNlcmNvcHkubyBlcnJzZXEubyBidWNrZXRfbG9ja3MubyBcXFxcXFxubGliL01ha2VmaWxlLTYxLVxcdCBnZW5lcmljLXJhZGl4LXRyZWUubyBiaXRtYXAtc3RyLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTQ6NTk6MzcuMDQ4OTc3ODEzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc0ODIyODYwOTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBQb3RlbnRpYWw6IGBvbmNlLm9gIGFuZCBgX19kb19vbmNlX3NsZWVwYWJsZV9kb25lYCoqXG5cbk9rYXksIHNvIGBvbmNlLm9gIGlzIGNvbnNpc3RlbnRseSBidWlsdCwgdGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHBpbnBvaW50IGEgc3BlY2lmaWMgZnVuY3Rpb24gdG8gZm9jdXMgdGhlIGZ1enppbmcgb24uIFJpZ2h0LCBgX19kb19vbmNlX3NsZWVwYWJsZV9kb25lYCBsb29rcyBpbnRlcmVzdGluZywgZXNwZWNpYWxseSBzaW5jZSBpdCdzIGFuIGV4cG9ydGVkIHN5bWJvbC4gSXMgdGhpcyBzbWFsbCBjb2RlIGNoYW5nZSAtIHJlcGxhY2luZyBgc3RhdGljX2JyYW5jaF9kaXNhYmxlYCB3aXRoIGBvbmNlX2Rpc2FibGVfanVtcGAgLSBldmVuIHdvcnRoIGZ1enppbmc/IE9uIHRoZSBmYWNlIG9mIGl0LCBpdCBhcHBlYXJzIGZ1bmN0aW9uYWxseSBtaW5vciwgYnV0IHRoaXMgaXMgYSBjb3JlIHByaW1pdGl2ZSB3ZSdyZSB0YWxraW5nIGFib3V0IGhlcmUuXG5cbkhtbSwgYG9uY2VfZGlzYWJsZV9qdW1wYCBpcyBhbHNvIGEgZnVuY3Rpb24sIGJ1dCBzdGF0aWMuIFRoYXQgZG9lc24ndCBsb29rIHByb21pc2luZyBmb3IgZGlyZWN0IGZ1enppbmcsIHRob3VnaCB0aGUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgbm9uLXN0YXRpYyBzeW1ib2wgaXMgc3RpbGwgaW50cmlndWluZy4gR2l2ZW4gdGhlIGNoYW5nZSBhbmQgdGhhdCB0aGUgdGFyZ2V0IGlzIGEgY29yZSBwcmltaXRpdmUsIEkgdGhpbmsgdGhlIGVmZm9ydCBpcyBqdXN0aWZpZWQuXG5cbklzIGBfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmVgIGEgaG90LXBhdGggZnVuY3Rpb24/IFRoYXQncyB0aGUgcmVhbCBxdWVzdGlvbi4gYERPX09OQ0VfU0xFRVBBQkxFYCBzdWdnZXN0cyBvbmUtdGltZSBpbml0aWFsaXphdGlvbiwgc28gaXQgaXMgbm90IGEgaG90IHBhdGggYWZ0ZXIgdGhlIGZpcnN0IGV4ZWN1dGlvbi4gQnV0LCB0aGUgZmlyc3QgdGltZSBpdCAqaXMqIGNhbGxlZCwgdGhpcyBmdW5jdGlvbiBpcyBleGVjdXRlZC4gVGhlcmVmb3JlLCB0aGF0IGluaXRpYWwgZXhlY3V0aW9uIHBhdGggaXMgdGhlIGNyaXRpY2FsIG9uZS5cblxuSSdsbCBmbGFnIGl0IGFzIFdvcnRoRnV6emluZz10cnVlLCB3aXRoIEZvY3VzU3ltYm9scz1bXCJfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmVcIl0uIE5vdyBsZXQncyBzZWUgZXhhY3RseSB3aGVyZSBgRE9fT05DRV9TTEVFUEFCTEVgIGlzIHVzZWQgdG8gZ2V0IG1vcmUgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDYyMSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxNDo1OTo0NC41MzEyNjcwMDFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNDUxNTI4NTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRE9fT05DRV9TTEVFUEFCTEVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL3Jlc2N0cmwvcmR0Z3JvdXAuYz0zMTcxPXN0YXRpYyBpbnQgcmR0X2dldF90cmVlKHN0cnVjdCBmc19jb250ZXh0ICpmYylcXG4tLVxcbmZzL3Jlc2N0cmwvcmR0Z3JvdXAuYy0zMTc5LVxcbmZzL3Jlc2N0cmwvcmR0Z3JvdXAuYzozMTgwOlxcdERPX09OQ0VfU0xFRVBBQkxFKHJlc2N0cmxfYXJjaF9wcmVfbW91bnQpO1xcbmZzL3Jlc2N0cmwvcmR0Z3JvdXAuYy0zMTgxLVxcbi0tXFxuaW5jbHVkZS9saW51eC9vbmNlLmg9MTc9dm9pZCBfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmUoYm9vbCAqZG9uZSwgc3RydWN0IHN0YXRpY19rZXlfdHJ1ZSAqb25jZV9rZXksXFxuLS1cXG5pbmNsdWRlL2xpbnV4L29uY2UuaC02My0vKiBWYXJpYW50IG9mIERPX09OQ0UoKSBmb3IgcHJvY2Vzcy9zbGVlcGFibGUgY29udGV4dHMuICovXFxuaW5jbHVkZS9saW51eC9vbmNlLmg6NjQ6I2RlZmluZSBET19PTkNFX1NMRUVQQUJMRShmdW5jLCAuLi4pXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmluY2x1ZGUvbGludXgvb25jZS5oLTY1LVxcdCh7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuaW5jbHVkZS9saW51eC9vbmNlLmgtODMtI2RlZmluZSBnZXRfcmFuZG9tX3NsZWVwYWJsZV9vbmNlKGJ1ZiwgbmJ5dGVzKVxcdFxcdFxcdFxcdCAgICAgXFxcXFxcbmluY2x1ZGUvbGludXgvb25jZS5oOjg0OlxcdERPX09OQ0VfU0xFRVBBQkxFKGdldF9yYW5kb21fYnl0ZXMsIChidWYpLCAobmJ5dGVzKSlcXG5pbmNsdWRlL2xpbnV4L29uY2UuaC04NS1cXG4tLVxcbmxpYi9vbmNlLmM9NzI9Ym9vbCBfX2RvX29uY2Vfc2xlZXBhYmxlX3N0YXJ0KGJvb2wgKmRvbmUpXFxuLS1cXG5saWIvb25jZS5jLTc5LVxcdFxcdCAqIHRoaXMgbXV0ZXguIEluIGNhc2Ugd2UgcmV0dXJuIGhlcmUsIHdlIGRvbid0IGNhbGwgaW50b1xcbmxpYi9vbmNlLmM6ODA6XFx0XFx0ICogX19kb19vbmNlX2RvbmUgYnV0IHJldHVybiBlYXJseSBpbiB0aGUgRE9fT05DRV9TTEVFUEFCTEUoKSBtYWNyby5cXG5saWIvb25jZS5jLTgxLVxcdFxcdCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxNDo1OTo0Ni43NzY0MjU1OTdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA3NTI5MTU1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBhIENvZGUgU25pcHBldCoqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4uLiB0aGlzIGJpdCBvZiBjb2RlIGlzIHBvcHBpbmcgdXAgaW4gYGZzL3Jlc2N0cmwvcmR0Z3JvdXAuY2AuIEFoLCBpbnRlcmVzdGluZywgdGhhdCdzIHdoZXJlIHRoZSByZXNvdXJjZSBjb250cm9sIHN0dWZmIGxpdmVzLCBzbyBJJ2QgZXhwZWN0IGl0IHRvIGJlIHVzZWQgdGhlcmUsIGNvbnRyb2xsaW5nIGNhY2hlIGFsbG9jYXRpb24gYW5kIHN1Y2guIEJ1dCB0aGVuIHRoZXJlJ3MgdGhpcyBgZ2V0X3JhbmRvbV9zbGVlcGFibGVfb25jZWAgZnVuY3Rpb24uLi4gV2FpdCBhIHNlY29uZCwgaXNuJ3QgKnRoYXQqIHVzZWQgaW4gYSBmZXcgbW9yZSBwbGFjZXMgdGhhbiBJIGluaXRpYWxseSB0aG91Z2h0PyBJIG5lZWQgdG8gY2hlY2sgdGhlIGNhbGwgZ3JhcGggZm9yIGBnZXRfcmFuZG9tX3NsZWVwYWJsZV9vbmNlYCBiZWNhdXNlIHRoaXMgc3VnZ2VzdHMgdGhhdCB0aGlzIGlzIG1vcmUgd2lkZWx5IHNjb3BlZCBhbmQgYSBicm9hZGVyIGRlcGVuZGVuY3kgdGhhbiBJIGZpcnN0IHN1c3BlY3RlZC4gSSB3b25kZXIgaWYgdGhlcmUgYXJlIGFueSBzdWJ0bGUgaW50ZXJhY3Rpb25zIHRvIGJlIGF3YXJlIG9mPyBJdCdzIHRpbWUgdG8gZGlnIGRlZXBlciBhbmQgc2VlIHdoZXJlIGVsc2UgdGhpcyBmdW5jdGlvbiBpcyBiZWluZyBjYWxsZWQgYW5kIHdoZXRoZXIgdGhlIHNoYXJlZCBjb250ZXh0IGlzIGltcG9ydGFudC4gVGhpcyBmZWVscyBsaWtlIGl0IHdhcnJhbnRzIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGJpZ2dlciBwaWN0dXJlIGJlZm9yZSBJIHByb2NlZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2MTgsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxNDo1OTo1MC44NTE3MTkyMTVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwOTk5MTQ2NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZ2V0X3JhbmRvbV9zbGVlcGFibGVfb25jZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9uZXQuaD0zMzg9ZG8ge1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0LmgtMzU0LVxcdGdldF9yYW5kb21fb25jZSgoYnVmKSwgKG5ieXRlcykpXFxuaW5jbHVkZS9saW51eC9uZXQuaDozNTU6I2RlZmluZSBuZXRfZ2V0X3JhbmRvbV9zbGVlcGFibGVfb25jZShidWYsIG5ieXRlcylcXHRcXHRcXFxcXFxuaW5jbHVkZS9saW51eC9uZXQuaDozNTY6XFx0Z2V0X3JhbmRvbV9zbGVlcGFibGVfb25jZSgoYnVmKSwgKG5ieXRlcykpXFxuaW5jbHVkZS9saW51eC9uZXQuaC0zNTctXFxuLS1cXG5pbmNsdWRlL2xpbnV4L29uY2UuaD0xNz12b2lkIF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZShib29sICpkb25lLCBzdHJ1Y3Qgc3RhdGljX2tleV90cnVlICpvbmNlX2tleSxcXG4tLVxcbmluY2x1ZGUvbGludXgvb25jZS5oLTgyLVxcbmluY2x1ZGUvbGludXgvb25jZS5oOjgzOiNkZWZpbmUgZ2V0X3JhbmRvbV9zbGVlcGFibGVfb25jZShidWYsIG5ieXRlcylcXHRcXHRcXHRcXHQgICAgIFxcXFxcXG5pbmNsdWRlL2xpbnV4L29uY2UuaC04NC1cXHRET19PTkNFX1NMRUVQQUJMRShnZXRfcmFuZG9tX2J5dGVzLCAoYnVmKSwgKG5ieXRlcykpXFxuLS1cXG5uZXQvaXB2NC9pbmV0X2hhc2h0YWJsZXMuYz0zND1zdGF0aWMgdm9pZCBpbmV0X2luaXRfZWhhc2hfc2VjcmV0KHZvaWQpXFxubmV0L2lwdjQvaW5ldF9oYXNodGFibGVzLmMtMzUte1xcbm5ldC9pcHY0L2luZXRfaGFzaHRhYmxlcy5jOjM2OlxcdG5ldF9nZXRfcmFuZG9tX3NsZWVwYWJsZV9vbmNlKFxcdTAwMjZpbmV0X2VoYXNoX3NlY3JldCxcXG5uZXQvaXB2NC9pbmV0X2hhc2h0YWJsZXMuYy0zNy1cXHRcXHRcXHRcXHQgICAgICBzaXplb2YoaW5ldF9laGFzaF9zZWNyZXQpKTtcXG4tLVxcbm5ldC9pcHY0L2luZXRfaGFzaHRhYmxlcy5jPTEwNDA9aW50IF9faW5ldF9oYXNoX2Nvbm5lY3Qoc3RydWN0IGluZXRfdGltZXdhaXRfZGVhdGhfcm93ICpkZWF0aF9yb3csXFxuLS1cXG5uZXQvaXB2NC9pbmV0X2hhc2h0YWJsZXMuYy0xMDgwLVxcbm5ldC9pcHY0L2luZXRfaGFzaHRhYmxlcy5jOjEwODE6XFx0Z2V0X3JhbmRvbV9zbGVlcGFibGVfb25jZSh0YWJsZV9wZXJ0dXJiLFxcbm5ldC9pcHY0L2luZXRfaGFzaHRhYmxlcy5jLTEwODItXFx0XFx0XFx0XFx0ICBJTkVUX1RBQkxFX1BFUlRVUkJfU0laRSAqIHNpemVvZigqdGFibGVfcGVydHVyYikpO1xcbi0tXFxubmV0L2lwdjYvaW5ldDZfaGFzaHRhYmxlcy5jPTI2PXZvaWQgaW5ldDZfaW5pdF9laGFzaF9zZWNyZXQodm9pZClcXG5uZXQvaXB2Ni9pbmV0Nl9oYXNodGFibGVzLmMtMjcte1xcbm5ldC9pcHY2L2luZXQ2X2hhc2h0YWJsZXMuYzoyODpcXHRuZXRfZ2V0X3JhbmRvbV9zbGVlcGFibGVfb25jZShcXHUwMDI2aW5ldDZfZWhhc2hfc2VjcmV0LFxcbm5ldC9pcHY2L2luZXQ2X2hhc2h0YWJsZXMuYy0yOS1cXHRcXHRcXHRcXHQgICAgICBzaXplb2YoaW5ldDZfZWhhc2hfc2VjcmV0KSk7XFxubmV0L2lwdjYvaW5ldDZfaGFzaHRhYmxlcy5jOjMwOlxcdG5ldF9nZXRfcmFuZG9tX3NsZWVwYWJsZV9vbmNlKFxcdTAwMjZ0Y3BfaXB2Nl9oYXNoX3NlY3JldCxcXG5uZXQvaXB2Ni9pbmV0Nl9oYXNodGFibGVzLmMtMzEtXFx0XFx0XFx0XFx0ICAgICAgc2l6ZW9mKHRjcF9pcHY2X2hhc2hfc2VjcmV0KSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE0OjU5OjUyLjk1MTYzOTA1NFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTY2OTg5MTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uKipcblxuQWxyaWdodCwgbG9va2luZyBhdCB0aGlzIGNvZGUsIGl0J3MgcHJldHR5IGNsZWFyIHRoYXQgYF9faW5ldF9oYXNoX2Nvbm5lY3RgIGlzIGEga2V5IGZ1bmN0aW9uIGludm9sdmVkIGluIG5ldHdvcmsgY29ubmVjdGlvbiBzZXR1cC4gVGhhdCBhbG9uZSBtYWtlcyBpdCBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZyDigJMgaXQncyBkZWZpbml0ZWx5IHJlYWNoYWJsZSB3aXRoaW4gYSBjcml0aWNhbCBwYXJ0IG9mIHRoZSBzeXN0ZW0uIFRoZSBmYWN0IHRoYXQgdGhlIGNoYW5nZSBkZWZlcnMgYHN0YXRpY19icmFuY2hfZGlzYWJsZWAgdG8gYSB3b3JrcXVldWUgc3VnZ2VzdHMgYSBwb3RlbnRpYWwgZm9yIGludGVyZXN0aW5nIGNvbmN1cnJlbmN5LXJlbGF0ZWQgaXNzdWVzLiBJJ20gZ29pbmcgdG8gZmxhZyB0aGlzIGFzIGBXb3J0aEZ1enppbmc9dHJ1ZWAuIFRvIHplcm8gaW4gb24gdGhlIGludGVyZXN0aW5nIHBpZWNlcyBvZiB0aGlzIHNlY3Rpb24sIEknbGwgcGF5IHNwZWNpZmljIGF0dGVudGlvbiB0byB0aGUgYF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZWAgc3ltYm9sIGFzIGEgZm9jdXMgcG9pbnQuIE5vIHNwZWNpYWwgY29uZmlndXJhdGlvbiBpcyBuZWVkZWQgdG8gbWFrZSB0aGlzIGludGVyZXN0aW5nLCBmcm9tIHdoYXQgSSBjYW4gc2VlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTg0LCJPdXRwdXRUb2tlbnMiOjE1NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE0OjU5OjU3LjkxODYzMTQzOVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3NjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19kb19vbmNlX3NsZWVwYWJsZV9kb25lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZWAgaW4gYGxpYi9vbmNlLmNgIHRvIGRlZmVyIHRoZSBzdGF0aWMgYnJhbmNoIGRpc2FibGUgb3BlcmF0aW9uIHRvIGEgd29ya3F1ZXVlIHVzaW5nIGBvbmNlX2Rpc2FibGVfanVtcGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGNvcmUga2VybmVsIHByaW1pdGl2ZSB1c2VkIGJ5IGBET19PTkNFX1NMRUVQQUJMRWAgYW5kIGBnZXRfcmFuZG9tX3NsZWVwYWJsZV9vbmNlYCwgd2hpY2ggYXJlIHJlYWNoYWJsZSBkdXJpbmcgbmV0d29yayBjb25uZWN0aW9uIHNldHVwIChlLmcuLCBgX19pbmV0X2hhc2hfY29ubmVjdGApLiBJdCBpcyB3b3J0aCBmdXp6aW5nIHRvIGVuc3VyZSB0aGUgZGVmZXJyZWQgd29ya3F1ZXVlIGV4ZWN1dGlvbiBkb2VzIG5vdCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgcmFjZSBjb25kaXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fZG9fb25jZV9zbGVlcGFibGVfZG9uZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmVgIGluIGBsaWIvb25jZS5jYCB0byBkZWZlciB0aGUgc3RhdGljIGJyYW5jaCBkaXNhYmxlIG9wZXJhdGlvbiB0byBhIHdvcmtxdWV1ZSB1c2luZyBgb25jZV9kaXNhYmxlX2p1bXBgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGtlcm5lbCBwcmltaXRpdmUgdXNlZCBieSBgRE9fT05DRV9TTEVFUEFCTEVgIGFuZCBgZ2V0X3JhbmRvbV9zbGVlcGFibGVfb25jZWAsIHdoaWNoIGFyZSByZWFjaGFibGUgZHVyaW5nIG5ldHdvcmsgY29ubmVjdGlvbiBzZXR1cCAoZS5nLiwgYF9faW5ldF9oYXNoX2Nvbm5lY3RgKS4gSXQgaXMgd29ydGggZnV6emluZyB0byBlbnN1cmUgdGhlIGRlZmVycmVkIHdvcmtxdWV1ZSBleGVjdXRpb24gZG9lcyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHJhY2UgY29uZGl0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTQ6NTk6NTcuOTE4Njc1ODI5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzU1Mzk5NDE4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE0OjU5OjU3LjkxOTU3NDM3OVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMzU1MzA5MDM5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGBfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmVgIGZ1bmN0aW9uIGluIGBsaWIvb25jZS5jYCB0byB1c2UgYG9uY2VfZGlzYWJsZV9qdW1wYCBpbnN0ZWFkIG9mIGBzdGF0aWNfYnJhbmNoX2Rpc2FibGVgLiBUaGlzIGlzIHJlbGF0ZWQgdG8gdGhlIGludGVybmFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgRE9fT05DRWAgbWFjcm8gYW5kIHN0YXRpYyBrZXlzLCBsaWtlbHkgdG8gaGFuZGxlIG1vZHVsZSB1bmxvYWRpbmcgb3IgZGVmZXJyZWQgc3RhdGljIGJyYW5jaCBkaXNhYmxpbmcgY29ycmVjdGx5LiBUaGlzIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgdXNlci1zcGFjZSBjb3BpZXMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgd291bGQgYmUgcmVsYXRlZCB0byBzdGF0aWMga2V5cywgbG9ja2luZywgb3IgbW9kdWxlIHN0YXRlLCB3aGljaCBhcmUgY292ZXJlZCBieSBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzIGFuZCBLQVNBTi9MT0NLREVQLCBub3QgS01TQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYzU3NjU0ZjI0ZWFhNmE2ODExYmQ4YTNkOWNjZWVmMmQ3ZTJiMmI3Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDI1IDE0OjQ3OjExIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbGliL29uY2UuYyBiL2xpYi9vbmNlLmNcbmluZGV4IGQ4MDFiZmE5NDVlNjMuLjBhMGE5MTkxNTZlMDUgMTAwNjQ0XG4tLS0gYS9saWIvb25jZS5jXG4rKysgYi9saWIvb25jZS5jXG5AQCAtOTMsNiArOTMsNiBAQCB2b2lkIF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZShib29sICpkb25lLCBzdHJ1Y3Qgc3RhdGljX2tleV90cnVlICpvbmNlX2tleSxcbiB7XG4gXHQqZG9uZSA9IHRydWU7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2b25jZV9tdXRleCk7XG4tXHRzdGF0aWNfYnJhbmNoX2Rpc2FibGUob25jZV9rZXkpO1xuK1x0b25jZV9kaXNhYmxlX2p1bXAob25jZV9rZXksIG1vZCk7XG4gfVxuIEVYUE9SVF9TWU1CT0woX19kb19vbmNlX3NsZWVwYWJsZV9kb25lKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE0OjU5OjU3LjkxOTU3NTg5OVoiLCJTZXEiOjE5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODU5MzM2ODYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIGBsaWIvb25jZS5jYCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZWAgaW4gYGxpYi9vbmNlLmNgLiBJdCBsb29rcyBsaWtlIGl0J3Mgc3dhcHBpbmcgb3V0IGEgYHN0YXRpY19icmFuY2hfZGlzYWJsZShvbmNlX2tleSk7YCBjYWxsIGZvciBgb25jZV9kaXNhYmxlX2p1bXAob25jZV9rZXksIG1vZCk7YC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5LiBGaXJzdCB0aGluZ3MgZmlyc3QsIEkgc2hvdWxkIHF1aWNrbHkgdmVyaWZ5IGJvdGggYGxpYi9vbmNlLmNgIGFuZCBzcGVjaWZpY2FsbHkgYG9uY2VfZGlzYWJsZV9qdW1wYCBpZiBuZWNlc3NhcnksIHRvIGdldCB0aGUgZnVsbCBjb250ZXh0LlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbWFrZSBzdXJlIHRoaXMgZG9lc24ndCBhY2NpZGVudGFsbHkgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgYnV0IHRoYXQgd291bGRuJ3QgbWFrZSBzZW5zZSBzaW5jZSB3ZSBhcmUgZGVhbGluZyB3aXRoIHN0YXRpYyBicmFuY2hlcyBhbmQgYERPX09OQ0VgIG1hY3Jvcy4gVGhpcyBzZWVtcyB0byBiZSBwcmltYXJpbHkgY29uY2VybmVkIHdpdGgganVtcCBsYWJlbHMgYW5kIHN0YXRpYyBrZXlzLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSdtIGdvaW5nIHRvIGRvdWJsZS1jaGVjayBgb25jZV9kaXNhYmxlX2p1bXBgIHRvIGNvbmZpcm0gdGhhdCBpdCdzIG9wZXJhdGluZyBhcyBleHBlY3RlZCBhbmQgdGhhdCB0aGUgc3Vic3RpdHV0aW9uIGlzIHNhZmUgYW5kIHNlbWFudGljYWxseSBlcXVpdmFsZW50IGluIHRoaXMgY29udGV4dC4gSXQncyBhbHdheXMgZ29vZCB0byBiZSB0aG9yb3VnaCB3aXRoIHRoZXNlIHR5cGVzIG9mIGNoYW5nZXMgaW4gdGhlIGtlcm5lbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk1MSwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyOCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE1OjAwOjAzLjc3ODkxNjM0MloiLCJTZXEiOjIwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEwOTMwOTUyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvbmNlX2Rpc2FibGVfanVtcFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJsaWIvb25jZS5jPTE0PXN0YXRpYyB2b2lkIG9uY2VfZGVmZXJyZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3KVxcbi0tXFxubGliL29uY2UuYy0yNC1cXG5saWIvb25jZS5jOjI1OnN0YXRpYyB2b2lkIG9uY2VfZGlzYWJsZV9qdW1wKHN0cnVjdCBzdGF0aWNfa2V5X3RydWUgKmtleSwgc3RydWN0IG1vZHVsZSAqbW9kKVxcbmxpYi9vbmNlLmMtMjYte1xcbi0tXFxubGliL29uY2UuYz02MD12b2lkIF9fZG9fb25jZV9kb25lKGJvb2wgKmRvbmUsIHN0cnVjdCBzdGF0aWNfa2V5X3RydWUgKm9uY2Vfa2V5LFxcbi0tXFxubGliL29uY2UuYy02NS1cXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZvbmNlX2xvY2ssICpmbGFncyk7XFxubGliL29uY2UuYzo2NjpcXHRvbmNlX2Rpc2FibGVfanVtcChvbmNlX2tleSwgbW9kKTtcXG5saWIvb25jZS5jLTY3LX1cXG4tLVxcbmxpYi9vbmNlLmM9OTA9dm9pZCBfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmUoYm9vbCAqZG9uZSwgc3RydWN0IHN0YXRpY19rZXlfdHJ1ZSAqb25jZV9rZXksXFxuLS1cXG5saWIvb25jZS5jLTk1LVxcdG11dGV4X3VubG9jayhcXHUwMDI2b25jZV9tdXRleCk7XFxubGliL29uY2UuYzo5NjpcXHRvbmNlX2Rpc2FibGVfanVtcChvbmNlX2tleSwgbW9kKTtcXG5saWIvb25jZS5jLTk3LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTU6MDA6MDUuODg4MjMxOTRaIiwiU2VxIjoyMSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU4NDQwNTgzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgc3dpdGNoaW5nIGBzdGF0aWNfYnJhbmNoX2Rpc2FibGUob25jZV9rZXkpYCB0byBgb25jZV9kaXNhYmxlX2p1bXAob25jZV9rZXksIG1vZClgLiBUaGlzIGlzIGNsZWFybHkgYWltZWQgYXQgYWRkcmVzc2luZyBhIHByb2JsZW0gc3BlY2lmaWNhbGx5IHdpdGhpbiBtb2R1bGVzLCBsaWtlbHkgYXJvdW5kIGhvdyBgRE9fT05DRWAgaXMgaGFuZGxlZC4gVGhlIGN1cnJlbnQgbWV0aG9kIHdpdGggYHN0YXRpY19icmFuY2hfZGlzYWJsZWAgc2VlbXMgdG8gYmUgcHJvYmxlbWF0aWMgb3IgcmVxdWlyZSBzb21lIGRlbGF5ZWQgYWN0aW9uLCB3aGljaCBpcyB3aGF0IGBvbmNlX2Rpc2FibGVfanVtcGAgaXMgZGVzaWduZWQgdG8gcHJvdmlkZS5cblxuQ3J1Y2lhbGx5LCBmcm9tIHdoYXQgSSBjYW4gdGVsbCwgdGhpcyBoYXMgKnplcm8qIGJlYXJpbmcgb24gdGhlIGlzc3VlcyBLTVNBTiBpcyBkZXNpZ25lZCB0byBkZXRlY3QuIFRoZXJlJ3Mgbm8gaGludCBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB2dWxuZXJhYmlsaXRpZXMsIHBvdGVudGlhbCBpbmZvcm1hdGlvbiBsZWFrcywgb3IgYW55dGhpbmcgZWxzZSB0aGF0IEtNU0FOIHdvdWxkIGZsYWcuIFRoaXMgaXMgcHVyZWx5IGEgY29udHJvbCBmbG93IGFuZCBzdGF0aWMga2V5IGNvcnJlY3Rpb24uXG5cblRoZXJlZm9yZSwgSSdtIGNvbmZpZGVudCBpbiBzZXR0aW5nIGBOZWVkc0tNU0FOPWZhbHNlYC4gSXQncyBzaW1wbHkgbm90IHJlbGV2YW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjEwLCJPdXRwdXRUb2tlbnMiOjE3MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxNTowMDoxMS40NzI2NDAyOTdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjY3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgX19kb19vbmNlX3NsZWVwYWJsZV9kb25lYCBmdW5jdGlvbiBpbiBgbGliL29uY2UuY2AgdG8gdXNlIGBvbmNlX2Rpc2FibGVfanVtcGAgaW5zdGVhZCBvZiBgc3RhdGljX2JyYW5jaF9kaXNhYmxlYC4gVGhpcyBpcyByZWxhdGVkIHRvIHRoZSBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYERPX09OQ0VgIG1hY3JvIGFuZCBzdGF0aWMga2V5cywgbGlrZWx5IHRvIGhhbmRsZSBtb2R1bGUgdW5sb2FkaW5nIG9yIGRlZmVycmVkIHN0YXRpYyBicmFuY2ggZGlzYWJsaW5nIGNvcnJlY3RseS4gVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIHVzZXItc3BhY2UgY29waWVzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIHdvdWxkIGJlIHJlbGF0ZWQgdG8gc3RhdGljIGtleXMsIGxvY2tpbmcsIG9yIG1vZHVsZSBzdGF0ZSwgd2hpY2ggYXJlIGNvdmVyZWQgYnkgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scyBhbmQgS0FTQU4vTE9DS0RFUCwgbm90IEtNU0FOLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgX19kb19vbmNlX3NsZWVwYWJsZV9kb25lYCBmdW5jdGlvbiBpbiBgbGliL29uY2UuY2AgdG8gdXNlIGBvbmNlX2Rpc2FibGVfanVtcGAgaW5zdGVhZCBvZiBgc3RhdGljX2JyYW5jaF9kaXNhYmxlYC4gVGhpcyBpcyByZWxhdGVkIHRvIHRoZSBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYERPX09OQ0VgIG1hY3JvIGFuZCBzdGF0aWMga2V5cywgbGlrZWx5IHRvIGhhbmRsZSBtb2R1bGUgdW5sb2FkaW5nIG9yIGRlZmVycmVkIHN0YXRpYyBicmFuY2ggZGlzYWJsaW5nIGNvcnJlY3RseS4gVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIHVzZXItc3BhY2UgY29waWVzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIHdvdWxkIGJlIHJlbGF0ZWQgdG8gc3RhdGljIGtleXMsIGxvY2tpbmcsIG9yIG1vZHVsZSBzdGF0ZSwgd2hpY2ggYXJlIGNvdmVyZWQgYnkgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scyBhbmQgS0FTQU4vTE9DS0RFUCwgbm90IEtNU0FOLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowrndsq[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-25 14:45:28 +0000 UTC FinishedAt: 2026-08-25 15:00:13 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "66498c75b4f8017f62d720d9b59675bdf3abce91", "config_name": "upstream-apparmor-kasan.config", "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "66498c75b4f8017f62d720d9b59675bdf3abce91", "config_name": "upstream-apparmor-kasan.config", "series_id": "74cee958-a152-479a-9987-ef2734ea9b0b" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "__do_once_sleepable_done" ], "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+CgkJCTx0ZD4yMDI2LzA4LzI1IDE0OjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MTJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fZG9fb25jZV9zbGVlcGFibGVfZG9uZSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgX19kb19vbmNlX3NsZWVwYWJsZV9kb25lYCBmdW5jdGlvbiBpbiBgbGliL29uY2UuY2AgdG8gdXNlIGBvbmNlX2Rpc2FibGVfanVtcGAgaW5zdGVhZCBvZiBgc3RhdGljX2JyYW5jaF9kaXNhYmxlYC4gVGhpcyBpcyByZWxhdGVkIHRvIHRoZSBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYERPX09OQ0VgIG1hY3JvIGFuZCBzdGF0aWMga2V5cywgbGlrZWx5IHRvIGhhbmRsZSBtb2R1bGUgdW5sb2FkaW5nIG9yIGRlZmVycmVkIHN0YXRpYyBicmFuY2ggZGlzYWJsaW5nIGNvcnJlY3RseS4gVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIHVzZXItc3BhY2UgY29waWVzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIHdvdWxkIGJlIHJlbGF0ZWQgdG8gc3RhdGljIGtleXMsIGxvY2tpbmcsIG9yIG1vZHVsZSBzdGF0ZSwgd2hpY2ggYXJlIGNvdmVyZWQgYnkgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scyBhbmQgS0FTQU4vTE9DS0RFUCwgbm90IEtNU0FOLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgX19kb19vbmNlX3NsZWVwYWJsZV9kb25lYCBpbiBgbGliL29uY2UuY2AgdG8gZGVmZXIgdGhlIHN0YXRpYyBicmFuY2ggZGlzYWJsZSBvcGVyYXRpb24gdG8gYSB3b3JrcXVldWUgdXNpbmcgYG9uY2VfZGlzYWJsZV9qdW1wYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBrZXJuZWwgcHJpbWl0aXZlIHVzZWQgYnkgYERPX09OQ0VfU0xFRVBBQkxFYCBhbmQgYGdldF9yYW5kb21fc2xlZXBhYmxlX29uY2VgLCB3aGljaCBhcmUgcmVhY2hhYmxlIGR1cmluZyBuZXR3b3JrIGNvbm5lY3Rpb24gc2V0dXAgKGUuZy4sIGBfX2luZXRfaGFzaF9jb25uZWN0YCkuIEl0IGlzIHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIHRoZSBkZWZlcnJlZCB3b3JrcXVldWUgZXhlY3V0aW9uIGRvZXMgbm90IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciByYWNlIGNvbmRpdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTQ6NDc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjNTc2NTRmMjRlYWE2YTY4MTFiZDhhM2Q5Y2NlZWYyZDdlMmIyYjdjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMjUgMTQ6NDc6MTEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbGliL29uY2UuYyBiL2xpYi9vbmNlLmNcbmluZGV4IGQ4MDFiZmE5NDVlNjMuLjBhMGE5MTkxNTZlMDUgMTAwNjQ0XG4tLS0gYS9saWIvb25jZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9saWIvb25jZS5jXG5AQCAtOTMsNiAmIzQzOzkzLDYgQEAgdm9pZCBfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmUoYm9vbCAqZG9uZSwgc3RydWN0IHN0YXRpY19rZXlfdHJ1ZSAqb25jZV9rZXksXG4ge1xuIFx0KmRvbmUgPSB0cnVlO1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNm9uY2VfbXV0ZXgpO1xuLVx0c3RhdGljX2JyYW5jaF9kaXNhYmxlKG9uY2Vfa2V5KTtcbiYjNDM7XHRvbmNlX2Rpc2FibGVfanVtcChvbmNlX2tleSwgbW9kKTtcbiB9XG4gRVhQT1JUX1NZTUJPTChfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE0OjQ3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjEybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZWAgaW4gYGxpYi9vbmNlLmNgIHRvIGRlZmVyIHRoZSBzdGF0aWMgYnJhbmNoIGRpc2FibGUgb3BlcmF0aW9uIHRvIGEgd29ya3F1ZXVlIHVzaW5nIGBvbmNlX2Rpc2FibGVfanVtcGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGNvcmUga2VybmVsIHByaW1pdGl2ZSB1c2VkIGJ5IGBET19PTkNFX1NMRUVQQUJMRWAgYW5kIGBnZXRfcmFuZG9tX3NsZWVwYWJsZV9vbmNlYCwgd2hpY2ggYXJlIHJlYWNoYWJsZSBkdXJpbmcgbmV0d29yayBjb25uZWN0aW9uIHNldHVwIChlLmcuLCBgX19pbmV0X2hhc2hfY29ubmVjdGApLiBJdCBpcyB3b3J0aCBmdXp6aW5nIHRvIGVuc3VyZSB0aGUgZGVmZXJyZWQgd29ya3F1ZXVlIGV4ZWN1dGlvbiBkb2VzIG5vdCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgcmFjZSBjb25kaXRpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYzU3NjU0ZjI0ZWFhNmE2ODExYmQ4YTNkOWNjZWVmMmQ3ZTJiMmI3YwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDI1IDE0OjQ3OjExIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbGliL29uY2UuYyBiL2xpYi9vbmNlLmMKaW5kZXggZDgwMWJmYTk0NWU2My4uMGEwYTkxOTE1NmUwNSAxMDA2NDQKLS0tIGEvbGliL29uY2UuYwomIzQzOyYjNDM7JiM0MzsgYi9saWIvb25jZS5jCkBAIC05Myw2ICYjNDM7OTMsNiBAQCB2b2lkIF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZShib29sICpkb25lLCBzdHJ1Y3Qgc3RhdGljX2tleV90cnVlICpvbmNlX2tleSwKIHsKIAkqZG9uZSA9IHRydWU7CiAJbXV0ZXhfdW5sb2NrKCZhbXA7b25jZV9tdXRleCk7Ci0Jc3RhdGljX2JyYW5jaF9kaXNhYmxlKG9uY2Vfa2V5KTsKJiM0MzsJb25jZV9kaXNhYmxlX2p1bXAob25jZV9rZXksIG1vZCk7CiB9CiBFWFBPUlRfU1lNQk9MKF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE0OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NTQKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlICYjMzk7b25jZSYjMzk7IENvZGUgTW9kaWZpY2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCYjMzk7cyBnb3QgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGNoYW5nZSBpbiBgbGliL29uY2UuY2AuIFNwZWNpZmljYWxseSwgaXQmIzM5O3Mgc3dhcHBpbmcgb3V0IGBzdGF0aWNfYnJhbmNoX2Rpc2FibGUob25jZV9rZXkpO2Agd2l0aCBgb25jZV9kaXNhYmxlX2p1bXAob25jZV9rZXksIG1vZCk7YCB3aXRoaW4gdGhlIGBfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmVgIGZ1bmN0aW9uLiBUaGlzIHN1Z2dlc3RzIGEgc2hpZnQgaW4gaG93IHdlJiMzOTtyZSBoYW5kbGluZyB0aGUgJiMzNDtvbmNlJiMzNDsgZXhlY3V0aW9uIG1lY2hhbmlzbSwgcHJlc3VtYWJseSByZWxhdGVkIHRvIGRpc2FibGluZyBpdCBhZnRlciB0aGUgaW5pdGlhbCBydW4uIE5hdHVyYWxseSwgbXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIGBsaWIvb25jZS5jYCBhbmQgZmlndXJlIG91dCAqZXhhY3RseSogd2hhdCBgb25jZV9kaXNhYmxlX2p1bXBgIGlzIGRvaW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgbmV3IGZ1bmN0aW9uIGFuZCBob3cgaXQgZGlmZmVycyBmcm9tIHRoZSBvcmlnaW5hbCBgc3RhdGljX2JyYW5jaF9kaXNhYmxlYC4gSXMgaXQgbW9yZSBlZmZpY2llbnQsIG1vcmUgZmxleGlibGUsIHBvdGVudGlhbGx5IHRpZWQgdG8gYSBzcGVjaWZpYyBoYXJkd2FyZSBmZWF0dXJlLCBvciBtYXliZSBpdCBpcyBwYXJ0IG9mIGEgYmlnZ2VyIHByb2plY3Q/IFRoZSBgbW9kYCB2YXJpYWJsZSBhbHNvIHBpcXVlcyBteSBpbnRlcmVzdDsgd2hlcmUgaXMgdGhhdCBjb21pbmcgZnJvbSwgYW5kIHdoYXQmIzM5O3MgaXRzIHJvbGUgaW4gYWxsIHRoaXM/IE5lZWQgdG8gZHJpbGwgaW50byB0aGF0LiBUaW1lIHRvIGdldCBpbnRvIHRoZSBkZXRhaWxzIGFuZCB3b3JrIHRocm91Z2ggaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTQ6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b25jZV9kaXNhYmxlX2p1bXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtsaWIvb25jZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2xpYi9vbmNlLmM9MTQ9c3RhdGljIHZvaWQgb25jZV9kZWZlcnJlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpXG4tLVxubGliL29uY2UuYy0yNC1cbmxpYi9vbmNlLmM6MjU6c3RhdGljIHZvaWQgb25jZV9kaXNhYmxlX2p1bXAoc3RydWN0IHN0YXRpY19rZXlfdHJ1ZSAqa2V5LCBzdHJ1Y3QgbW9kdWxlICptb2QpXG5saWIvb25jZS5jLTI2LXtcbi0tXG5saWIvb25jZS5jPTYwPXZvaWQgX19kb19vbmNlX2RvbmUoYm9vbCAqZG9uZSwgc3RydWN0IHN0YXRpY19rZXlfdHJ1ZSAqb25jZV9rZXksXG4tLVxubGliL29uY2UuYy02NS1cdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2b25jZV9sb2NrLCAqZmxhZ3MpO1xubGliL29uY2UuYzo2NjpcdG9uY2VfZGlzYWJsZV9qdW1wKG9uY2Vfa2V5LCBtb2QpO1xubGliL29uY2UuYy02Ny19XG4tLVxubGliL29uY2UuYz05MD12b2lkIF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZShib29sICpkb25lLCBzdHJ1Y3Qgc3RhdGljX2tleV90cnVlICpvbmNlX2tleSxcbi0tXG5saWIvb25jZS5jLTk1LVx0bXV0ZXhfdW5sb2NrKFx1MDAyNm9uY2VfbXV0ZXgpO1xubGliL29uY2UuYzo5NjpcdG9uY2VfZGlzYWJsZV9qdW1wKG9uY2Vfa2V5LCBtb2QpO1xubGliL29uY2UuYy05Ny19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTQ6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU4MQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipEZWNvbnN0cnVjdGluZyBgb25jZV9kaXNhYmxlX2p1bXBgKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgb25jZV9kaXNhYmxlX2p1bXBgIGFuZCBteSBmaXJzdCB0aG91Z2h0IGlzLCAmIzM0O1JpZ2h0LCBpdCYjMzk7cyBhIGBzdGF0aWNgIGZ1bmN0aW9uLCBhbmQgaXQgbGl2ZXMgaW4gYGxpYi9vbmNlLmNgLiYjMzQ7IFRoYXQgdGVsbHMgbWUgYSBmZXcgdGhpbmdzIGltbWVkaWF0ZWx5LiBJdCYjMzk7cyBpbnRlcm5hbCB0byB0aGF0IGNvbXBpbGF0aW9uIHVuaXQsIHByb2JhYmx5IHBhcnQgb2YgYSBsYXJnZXIgbWVjaGFuaXNtIHdpdGhpbiB0aGF0IGxpYnJhcnkuIFN0YXRpYyBmdW5jdGlvbnMgYXJlIG9mdGVuIHVzZWQgZm9yIGltcGxlbWVudGF0aW9uIGRldGFpbHMsIGhlbHBlciBmdW5jdGlvbnMgdGhhdCBhcmVuJiMzOTt0IGludGVuZGVkIGZvciBleHRlcm5hbCB1c2UuIE5vdywgdGhlIGNydWNpYWwgcGFydCBpcyB0byBkaWcgaW50byAqd2hhdCogaXQgYWN0dWFsbHkgZG9lcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgd2l0aGluIHRoZSBsYXJnZXIgYG9uY2VgIHN5c3RlbS4gVGltZSB0byBkaXZlIGludG8gdGhlIGNvZGUgYW5kIHNlZSBob3cgaXQgd29ya3MhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTQ6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtsaWIvb25jZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAyMDpcdFx0c3RhdGljX2JyYW5jaF9kaXNhYmxlKHdvcmstXHUwMDNla2V5KTtcbiAgMjE6XHRcdG1vZHVsZV9wdXQod29yay1cdTAwM2Vtb2R1bGUpO1xuICAyMjpcdFx0a2ZyZWUod29yayk7XG4gIDIzOlx0fVxuICAyNDpcdFxuICAyNTpcdHN0YXRpYyB2b2lkIG9uY2VfZGlzYWJsZV9qdW1wKHN0cnVjdCBzdGF0aWNfa2V5X3RydWUgKmtleSwgc3RydWN0IG1vZHVsZSAqbW9kKVxuICAyNjpcdHtcbiAgMjc6XHRcdHN0cnVjdCBvbmNlX3dvcmsgKnc7XG4gIDI4Olx0XG4gIDI5Olx0XHR3ID0ga21hbGxvY19vYmooKncsIEdGUF9BVE9NSUMpO1xuICAzMDpcdFx0aWYgKCF3KVxuICAzMTpcdFx0XHRyZXR1cm47XG4gIDMyOlx0XG4gIDMzOlx0XHRJTklUX1dPUksoXHUwMDI2dy1cdTAwM2V3b3JrLCBvbmNlX2RlZmVycmVkKTtcbiAgMzQ6XHRcdHctXHUwMDNla2V5ID0ga2V5O1xuICAzNTpcdFx0dy1cdTAwM2Vtb2R1bGUgPSBtb2Q7XG4gIDM2Olx0XHRfX21vZHVsZV9nZXQobW9kKTtcbiAgMzc6XHRcdHNjaGVkdWxlX3dvcmsoXHUwMDI2dy1cdTAwM2V3b3JrKTtcbiAgMzg6XHR9XG4gIDM5Olx0XG4gIDQwOlx0c3RhdGljIERFRklORV9TUElOTE9DSyhvbmNlX2xvY2spO1xuICA0MTpcdFxuICA0MjpcdGJvb2wgX19kb19vbmNlX3N0YXJ0KGJvb2wgKmRvbmUsIHVuc2lnbmVkIGxvbmcgKmZsYWdzKVxuICA0MzpcdFx0X19hY3F1aXJlcyhvbmNlX2xvY2spXG4gIDQ0Olx0e1xuICA0NTpcdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2b25jZV9sb2NrLCAqZmxhZ3MpO1xuICA0NjpcdFx0aWYgKCpkb25lKSB7XG4gIDQ3Olx0XHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2b25jZV9sb2NrLCAqZmxhZ3MpO1xuICA0ODpcdFx0XHQvKiBLZWVwIHNwYXJzZSBoYXBweSBieSByZXN0b3JpbmcgYW4gZXZlbiBsb2NrIGNvdW50IG9uXG4gIDQ5Olx0XHRcdCAqIHRoaXMgbG9jay4gSW4gY2FzZSB3ZSByZXR1cm4gaGVyZSwgd2UgZG9uJiMzOTt0IGNhbGwgaW50b1xuICA1MDpcdFx0XHQgKiBfX2RvX29uY2VfZG9uZSBidXQgcmV0dXJuIGVhcmx5IGluIHRoZSBET19PTkNFKCkgbWFjcm8uXG4gIDUxOlx0XHRcdCAqL1xuICA1MjpcdFx0XHRfX2FjcXVpcmUob25jZV9sb2NrKTtcbiAgNTM6XHRcdFx0cmV0dXJuIGZhbHNlO1xuICA1NDpcdFx0fVxuICA1NTpcdFxuICA1NjpcdFx0cmV0dXJuIHRydWU7XG4gIDU3Olx0fVxuICA1ODpcdEVYUE9SVF9TWU1CT0woX19kb19vbmNlX3N0YXJ0KTtcbiAgNTk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxNDo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzE4CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ2hhbmdlIHRvIGBfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmVgKioKCk9rYXksIHNvIHRoZSBjaGFuZ2UgaXMgaW4gYF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZWAuIFRoZXkmIzM5O3ZlIHN3YXBwZWQgb3V0IGBzdGF0aWNfYnJhbmNoX2Rpc2FibGUob25jZV9rZXkpYCBmb3IgYG9uY2VfZGlzYWJsZV9qdW1wKG9uY2Vfa2V5LCBtb2QpYC4gVGhpcyBpcyBpbnRlcmVzdGluZzsgaXQgbG9va3MgbGlrZSB0aGV5JiMzOTtyZSBkZWZlcnJpbmcgdGhlIGp1bXAgbGFiZWwgdXBkYXRlIHRvIGEgd29ya3F1ZXVlLiBUaGUgZ29hbCBpcyBsaWtlbHkgdG8gYXZvaWQgc2xlZXBpbmcgb3IgYmxvY2tpbmcgaW4gY2VydGFpbiBjb250ZXh0cywgb3IgcGVyaGFwcyB0aGV5JiMzOTtyZSB0cnlpbmcgdG8gcmVzb2x2ZSBzb21lIGxvY2tkZXAgaXNzdWVzLgoKV2FpdCBhIG1pbnV0ZSwgYF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZWAgaXMgdGllZCB0byBgRE9fT05DRV9TTEVFUEFCTEVgLCByaWdodD8gQ29uc2lkZXJpbmcgaXRzIGFzc29jaWF0aW9uIHdpdGggYERPX09OQ0VfU0xFRVBBQkxFYCwgc2hvdWxkIHRoaXMgYmUgYSB0YXJnZXQgZm9yIGZ1enppbmc/IEhtbW0sIGl0JiMzOTtzIGEgZnVuZGFtZW50YWwga2VybmVsIHByaW1pdGl2ZS4gRnV6emluZyBpdCBkaXJlY3RseSBtaWdodCBub3QgYmUgdGhlIG1vc3QgZWZmZWN0aXZlIHN0cmF0ZWd5IHNpbmNlIGBET19PTkNFYCBhbmQgYERPX09OQ0VfU0xFRVBBQkxFYCBhcmUgdXNlZCBzbyBleHRlbnNpdmVseSB0aHJvdWdob3V0IHRoZSBrZXJuZWwuIEl0IHdvdWxkIGxpa2VseSBwcm9kdWNlIGJyb2FkIHJlc3VsdHMuCgpJJiMzOTttIGJldHRlciBvZmYgY2hlY2tpbmcgd2hlcmUgYF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZWAgaXMgYmVpbmcgdXNlZCB0byBnZXQgYSBiZXR0ZXIgc2Vuc2Ugb2YgdGhlIHNjb3BlIG9mIHRoZSBwb3RlbnRpYWwgaW1wYWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE0OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fZG9fb25jZV9zbGVlcGFibGVfZG9uZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L29uY2UuaD0xNj1ib29sIF9fZG9fb25jZV9zbGVlcGFibGVfc3RhcnQoYm9vbCAqZG9uZSk7XG5pbmNsdWRlL2xpbnV4L29uY2UuaDoxNzp2b2lkIF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZShib29sICpkb25lLCBzdHJ1Y3Qgc3RhdGljX2tleV90cnVlICpvbmNlX2tleSxcbmluY2x1ZGUvbGludXgvb25jZS5oLTE4LVx0XHRcdCAgICAgIHN0cnVjdCBtb2R1bGUgKm1vZCk7XG4tLVxuaW5jbHVkZS9saW51eC9vbmNlLmgtNzItXHRcdFx0XHRmdW5jKF9fVkFfQVJHU19fKTtcdFx0XHRcdFxcXG5pbmNsdWRlL2xpbnV4L29uY2UuaDo3MzpcdFx0XHRcdF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZShcdTAwMjZfX19kb25lLCBcdTAwMjZfX19vbmNlX2tleSxcXFxuaW5jbHVkZS9saW51eC9vbmNlLmgtNzQtXHRcdFx0XHRcdFx0ICAgIFRISVNfTU9EVUxFKTtcdFx0XFxcbi0tXG5saWIvb25jZS5jPTg4PUVYUE9SVF9TWU1CT0woX19kb19vbmNlX3NsZWVwYWJsZV9zdGFydCk7XG5saWIvb25jZS5jLTg5LVxubGliL29uY2UuYzo5MDp2b2lkIF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZShib29sICpkb25lLCBzdHJ1Y3Qgc3RhdGljX2tleV90cnVlICpvbmNlX2tleSxcbmxpYi9vbmNlLmMtOTEtXHRcdFx0IHN0cnVjdCBtb2R1bGUgKm1vZClcbi0tXG5saWIvb25jZS5jLTk3LX1cbmxpYi9vbmNlLmM6OTg6RVhQT1JUX1NZTUJPTChfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE0OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT40bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwNzYKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAxMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgYHN0YXRpY19icmFuY2hfZGlzYWJsZWAgV29ya3F1ZXVlIERlZmVycmFsKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGEgY2hhbmdlIHRoYXQmIzM5O3MgZXNzZW50aWFsbHkgbW92aW5nIHRoZSBgc3RhdGljX2JyYW5jaF9kaXNhYmxlYCBmdW5jdGlvbmFsaXR5IHRvIGEgd29ya3F1ZXVlLiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIGNoYW5nZSB3aXRoaW4gdGhlIGtlcm5lbCBpdHNlbGYsIHNvLCB5ZXMsIGFic29sdXRlbHksIHRoaXMgd2FycmFudHMgZnV6emluZy4gV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IHN1YnRsZSByZWdyZXNzaW9ucyBvciBpc3N1ZXMuCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0JiMzOTtzIHRhcmdldCBgX19kb19vbmNlX3NsZWVwYWJsZV9kb25lYC4gVGhhdCBzZWVtcyBsaWtlIGEga2V5IHN5bWJvbCByZWxhdGVkIHRvIHRoZSAmIzM0O29uY2UmIzM0OyBpbmZyYXN0cnVjdHVyZSwgYW5kIGJhc2VkIG9uIG15IGV4cGVyaWVuY2UsIGEgY2hhbmdlIGxpa2UgdGhpcyBjb3VsZCBwb3RlbnRpYWxseSBpbnRlcmFjdCB3aXRoIGl0IGluIGludGVyZXN0aW5nIHdheXMuIFdhaXQgYSBtaW51dGUsIGBfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmVgICppcyogYSBjb3JlIGtlcm5lbCBmdW5jdGlvbi4gSXQgbGl2ZXMgaW4gYGxpYi9vbmNlLmNgLgoKTGV0IG1lIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50LiBIbW0sIGxvb2tzIGxpa2Ugd2UgZG9uJiMzOTt0IG5lZWQgYW55IHNwZWNpYWwgY29uZmlnIGZsYWdzIHRvIGVuYWJsZSBvciBkaXNhYmxlIGl0OyBpdCBzZWVtcyB0byBiZSBidWlsdCBpbiBieSBkZWZhdWx0LiBFeGNlbGxlbnQuIEkmIzM5O2xsIGp1bXAgb3ZlciB0byB0aGUgYGxpYi9NYWtlZmlsZWAgdG8gY29uZmlybSBgb25jZS5vYCBpcyBhbHdheXMgYnVpbHQsIGVuc3VyaW5nIGl0IGlzIGFsd2F5cyBwYXJ0IG9mIG91ciBhdHRhY2sgc3VyZmFjZSBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTQ6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b25jZVxcLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtsaWIvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bGliL01ha2VmaWxlPTU1PW9iai15ICYjNDM7PSBiY2QubyBzb3J0Lm8gcGFyc2VyLm8gZGVidWdfbG9ja3MubyByYW5kb20zMi5vIFxcXG4tLVxubGliL01ha2VmaWxlLTU5LVx0IHBlcmNwdS1yZWZjb3VudC5vIHJoYXNodGFibGUubyBiYXNlNjQubyBcXFxubGliL01ha2VmaWxlOjYwOlx0IG9uY2UubyByZWZjb3VudC5vIHJjdXJlZi5vIHVzZXJjb3B5Lm8gZXJyc2VxLm8gYnVja2V0X2xvY2tzLm8gXFxcbmxpYi9NYWtlZmlsZS02MS1cdCBnZW5lcmljLXJhZGl4LXRyZWUubyBiaXRtYXAtc3RyLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTQ6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDYyMQoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDIyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFBvdGVudGlhbDogYG9uY2Uub2AgYW5kIGBfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmVgKioKCk9rYXksIHNvIGBvbmNlLm9gIGlzIGNvbnNpc3RlbnRseSBidWlsdCwgdGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBwaW5wb2ludCBhIHNwZWNpZmljIGZ1bmN0aW9uIHRvIGZvY3VzIHRoZSBmdXp6aW5nIG9uLiBSaWdodCwgYF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZWAgbG9va3MgaW50ZXJlc3RpbmcsIGVzcGVjaWFsbHkgc2luY2UgaXQmIzM5O3MgYW4gZXhwb3J0ZWQgc3ltYm9sLiBJcyB0aGlzIHNtYWxsIGNvZGUgY2hhbmdlIC0gcmVwbGFjaW5nIGBzdGF0aWNfYnJhbmNoX2Rpc2FibGVgIHdpdGggYG9uY2VfZGlzYWJsZV9qdW1wYCAtIGV2ZW4gd29ydGggZnV6emluZz8gT24gdGhlIGZhY2Ugb2YgaXQsIGl0IGFwcGVhcnMgZnVuY3Rpb25hbGx5IG1pbm9yLCBidXQgdGhpcyBpcyBhIGNvcmUgcHJpbWl0aXZlIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGhlcmUuCgpIbW0sIGBvbmNlX2Rpc2FibGVfanVtcGAgaXMgYWxzbyBhIGZ1bmN0aW9uLCBidXQgc3RhdGljLiBUaGF0IGRvZXNuJiMzOTt0IGxvb2sgcHJvbWlzaW5nIGZvciBkaXJlY3QgZnV6emluZywgdGhvdWdoIHRoZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBub24tc3RhdGljIHN5bWJvbCBpcyBzdGlsbCBpbnRyaWd1aW5nLiBHaXZlbiB0aGUgY2hhbmdlIGFuZCB0aGF0IHRoZSB0YXJnZXQgaXMgYSBjb3JlIHByaW1pdGl2ZSwgSSB0aGluayB0aGUgZWZmb3J0IGlzIGp1c3RpZmllZC4KCklzIGBfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmVgIGEgaG90LXBhdGggZnVuY3Rpb24/IFRoYXQmIzM5O3MgdGhlIHJlYWwgcXVlc3Rpb24uIGBET19PTkNFX1NMRUVQQUJMRWAgc3VnZ2VzdHMgb25lLXRpbWUgaW5pdGlhbGl6YXRpb24sIHNvIGl0IGlzIG5vdCBhIGhvdCBwYXRoIGFmdGVyIHRoZSBmaXJzdCBleGVjdXRpb24uIEJ1dCwgdGhlIGZpcnN0IHRpbWUgaXQgKmlzKiBjYWxsZWQsIHRoaXMgZnVuY3Rpb24gaXMgZXhlY3V0ZWQuIFRoZXJlZm9yZSwgdGhhdCBpbml0aWFsIGV4ZWN1dGlvbiBwYXRoIGlzIHRoZSBjcml0aWNhbCBvbmUuCgpJJiMzOTtsbCBmbGFnIGl0IGFzIFdvcnRoRnV6emluZz10cnVlLCB3aXRoIEZvY3VzU3ltYm9scz1bJiMzNDtfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmUmIzM0O10uIE5vdyBsZXQmIzM5O3Mgc2VlIGV4YWN0bHkgd2hlcmUgYERPX09OQ0VfU0xFRVBBQkxFYCBpcyB1c2VkIHRvIGdldCBtb3JlIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE0OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0RPX09OQ0VfU0xFRVBBQkxFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL3Jlc2N0cmwvcmR0Z3JvdXAuYz0zMTcxPXN0YXRpYyBpbnQgcmR0X2dldF90cmVlKHN0cnVjdCBmc19jb250ZXh0ICpmYylcbi0tXG5mcy9yZXNjdHJsL3JkdGdyb3VwLmMtMzE3OS1cbmZzL3Jlc2N0cmwvcmR0Z3JvdXAuYzozMTgwOlx0RE9fT05DRV9TTEVFUEFCTEUocmVzY3RybF9hcmNoX3ByZV9tb3VudCk7XG5mcy9yZXNjdHJsL3JkdGdyb3VwLmMtMzE4MS1cbi0tXG5pbmNsdWRlL2xpbnV4L29uY2UuaD0xNz12b2lkIF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZShib29sICpkb25lLCBzdHJ1Y3Qgc3RhdGljX2tleV90cnVlICpvbmNlX2tleSxcbi0tXG5pbmNsdWRlL2xpbnV4L29uY2UuaC02My0vKiBWYXJpYW50IG9mIERPX09OQ0UoKSBmb3IgcHJvY2Vzcy9zbGVlcGFibGUgY29udGV4dHMuICovXG5pbmNsdWRlL2xpbnV4L29uY2UuaDo2NDojZGVmaW5lIERPX09OQ0VfU0xFRVBBQkxFKGZ1bmMsIC4uLilcdFx0XHRcdFx0XHRcXFxuaW5jbHVkZS9saW51eC9vbmNlLmgtNjUtXHQoe1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4tLVxuaW5jbHVkZS9saW51eC9vbmNlLmgtODMtI2RlZmluZSBnZXRfcmFuZG9tX3NsZWVwYWJsZV9vbmNlKGJ1ZiwgbmJ5dGVzKVx0XHRcdFx0ICAgICBcXFxuaW5jbHVkZS9saW51eC9vbmNlLmg6ODQ6XHRET19PTkNFX1NMRUVQQUJMRShnZXRfcmFuZG9tX2J5dGVzLCAoYnVmKSwgKG5ieXRlcykpXG5pbmNsdWRlL2xpbnV4L29uY2UuaC04NS1cbi0tXG5saWIvb25jZS5jPTcyPWJvb2wgX19kb19vbmNlX3NsZWVwYWJsZV9zdGFydChib29sICpkb25lKVxuLS1cbmxpYi9vbmNlLmMtNzktXHRcdCAqIHRoaXMgbXV0ZXguIEluIGNhc2Ugd2UgcmV0dXJuIGhlcmUsIHdlIGRvbiYjMzk7dCBjYWxsIGludG9cbmxpYi9vbmNlLmM6ODA6XHRcdCAqIF9fZG9fb25jZV9kb25lIGJ1dCByZXR1cm4gZWFybHkgaW4gdGhlIERPX09OQ0VfU0xFRVBBQkxFKCkgbWFjcm8uXG5saWIvb25jZS5jLTgxLVx0XHQgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTQ6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTYxOAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIGEgQ29kZSBTbmlwcGV0KioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuLi4gdGhpcyBiaXQgb2YgY29kZSBpcyBwb3BwaW5nIHVwIGluIGBmcy9yZXNjdHJsL3JkdGdyb3VwLmNgLiBBaCwgaW50ZXJlc3RpbmcsIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJlc291cmNlIGNvbnRyb2wgc3R1ZmYgbGl2ZXMsIHNvIEkmIzM5O2QgZXhwZWN0IGl0IHRvIGJlIHVzZWQgdGhlcmUsIGNvbnRyb2xsaW5nIGNhY2hlIGFsbG9jYXRpb24gYW5kIHN1Y2guIEJ1dCB0aGVuIHRoZXJlJiMzOTtzIHRoaXMgYGdldF9yYW5kb21fc2xlZXBhYmxlX29uY2VgIGZ1bmN0aW9uLi4uIFdhaXQgYSBzZWNvbmQsIGlzbiYjMzk7dCAqdGhhdCogdXNlZCBpbiBhIGZldyBtb3JlIHBsYWNlcyB0aGFuIEkgaW5pdGlhbGx5IHRob3VnaHQ/IEkgbmVlZCB0byBjaGVjayB0aGUgY2FsbCBncmFwaCBmb3IgYGdldF9yYW5kb21fc2xlZXBhYmxlX29uY2VgIGJlY2F1c2UgdGhpcyBzdWdnZXN0cyB0aGF0IHRoaXMgaXMgbW9yZSB3aWRlbHkgc2NvcGVkIGFuZCBhIGJyb2FkZXIgZGVwZW5kZW5jeSB0aGFuIEkgZmlyc3Qgc3VzcGVjdGVkLiBJIHdvbmRlciBpZiB0aGVyZSBhcmUgYW55IHN1YnRsZSBpbnRlcmFjdGlvbnMgdG8gYmUgYXdhcmUgb2Y/IEl0JiMzOTtzIHRpbWUgdG8gZGlnIGRlZXBlciBhbmQgc2VlIHdoZXJlIGVsc2UgdGhpcyBmdW5jdGlvbiBpcyBiZWluZyBjYWxsZWQgYW5kIHdoZXRoZXIgdGhlIHNoYXJlZCBjb250ZXh0IGlzIGltcG9ydGFudC4gVGhpcyBmZWVscyBsaWtlIGl0IHdhcnJhbnRzIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGJpZ2dlciBwaWN0dXJlIGJlZm9yZSBJIHByb2NlZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE0OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2dldF9yYW5kb21fc2xlZXBhYmxlX29uY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9uZXQuaD0zMzg9ZG8ge1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4tLVxuaW5jbHVkZS9saW51eC9uZXQuaC0zNTQtXHRnZXRfcmFuZG9tX29uY2UoKGJ1ZiksIChuYnl0ZXMpKVxuaW5jbHVkZS9saW51eC9uZXQuaDozNTU6I2RlZmluZSBuZXRfZ2V0X3JhbmRvbV9zbGVlcGFibGVfb25jZShidWYsIG5ieXRlcylcdFx0XFxcbmluY2x1ZGUvbGludXgvbmV0Lmg6MzU2Olx0Z2V0X3JhbmRvbV9zbGVlcGFibGVfb25jZSgoYnVmKSwgKG5ieXRlcykpXG5pbmNsdWRlL2xpbnV4L25ldC5oLTM1Ny1cbi0tXG5pbmNsdWRlL2xpbnV4L29uY2UuaD0xNz12b2lkIF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZShib29sICpkb25lLCBzdHJ1Y3Qgc3RhdGljX2tleV90cnVlICpvbmNlX2tleSxcbi0tXG5pbmNsdWRlL2xpbnV4L29uY2UuaC04Mi1cbmluY2x1ZGUvbGludXgvb25jZS5oOjgzOiNkZWZpbmUgZ2V0X3JhbmRvbV9zbGVlcGFibGVfb25jZShidWYsIG5ieXRlcylcdFx0XHRcdCAgICAgXFxcbmluY2x1ZGUvbGludXgvb25jZS5oLTg0LVx0RE9fT05DRV9TTEVFUEFCTEUoZ2V0X3JhbmRvbV9ieXRlcywgKGJ1ZiksIChuYnl0ZXMpKVxuLS1cbm5ldC9pcHY0L2luZXRfaGFzaHRhYmxlcy5jPTM0PXN0YXRpYyB2b2lkIGluZXRfaW5pdF9laGFzaF9zZWNyZXQodm9pZClcbm5ldC9pcHY0L2luZXRfaGFzaHRhYmxlcy5jLTM1LXtcbm5ldC9pcHY0L2luZXRfaGFzaHRhYmxlcy5jOjM2Olx0bmV0X2dldF9yYW5kb21fc2xlZXBhYmxlX29uY2UoXHUwMDI2aW5ldF9laGFzaF9zZWNyZXQsXG5uZXQvaXB2NC9pbmV0X2hhc2h0YWJsZXMuYy0zNy1cdFx0XHRcdCAgICAgIHNpemVvZihpbmV0X2VoYXNoX3NlY3JldCkpO1xuLS1cbm5ldC9pcHY0L2luZXRfaGFzaHRhYmxlcy5jPTEwNDA9aW50IF9faW5ldF9oYXNoX2Nvbm5lY3Qoc3RydWN0IGluZXRfdGltZXdhaXRfZGVhdGhfcm93ICpkZWF0aF9yb3csXG4tLVxubmV0L2lwdjQvaW5ldF9oYXNodGFibGVzLmMtMTA4MC1cbm5ldC9pcHY0L2luZXRfaGFzaHRhYmxlcy5jOjEwODE6XHRnZXRfcmFuZG9tX3NsZWVwYWJsZV9vbmNlKHRhYmxlX3BlcnR1cmIsXG5uZXQvaXB2NC9pbmV0X2hhc2h0YWJsZXMuYy0xMDgyLVx0XHRcdFx0ICBJTkVUX1RBQkxFX1BFUlRVUkJfU0laRSAqIHNpemVvZigqdGFibGVfcGVydHVyYikpO1xuLS1cbm5ldC9pcHY2L2luZXQ2X2hhc2h0YWJsZXMuYz0yNj12b2lkIGluZXQ2X2luaXRfZWhhc2hfc2VjcmV0KHZvaWQpXG5uZXQvaXB2Ni9pbmV0Nl9oYXNodGFibGVzLmMtMjcte1xubmV0L2lwdjYvaW5ldDZfaGFzaHRhYmxlcy5jOjI4Olx0bmV0X2dldF9yYW5kb21fc2xlZXBhYmxlX29uY2UoXHUwMDI2aW5ldDZfZWhhc2hfc2VjcmV0LFxubmV0L2lwdjYvaW5ldDZfaGFzaHRhYmxlcy5jLTI5LVx0XHRcdFx0ICAgICAgc2l6ZW9mKGluZXQ2X2VoYXNoX3NlY3JldCkpO1xubmV0L2lwdjYvaW5ldDZfaGFzaHRhYmxlcy5jOjMwOlx0bmV0X2dldF9yYW5kb21fc2xlZXBhYmxlX29uY2UoXHUwMDI2dGNwX2lwdjZfaGFzaF9zZWNyZXQsXG5uZXQvaXB2Ni9pbmV0Nl9oYXNodGFibGVzLmMtMzEtXHRcdFx0XHQgICAgICBzaXplb2YodGNwX2lwdjZfaGFzaF9zZWNyZXQpKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTQ6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjU4NAoJCQkJCQkJb3V0cHV0OiAxNTYKCQkJCQkJCXRob3VnaHRzOiA3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbioqCgpBbHJpZ2h0LCBsb29raW5nIGF0IHRoaXMgY29kZSwgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoYXQgYF9faW5ldF9oYXNoX2Nvbm5lY3RgIGlzIGEga2V5IGZ1bmN0aW9uIGludm9sdmVkIGluIG5ldHdvcmsgY29ubmVjdGlvbiBzZXR1cC4gVGhhdCBhbG9uZSBtYWtlcyBpdCBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZyDigJMgaXQmIzM5O3MgZGVmaW5pdGVseSByZWFjaGFibGUgd2l0aGluIGEgY3JpdGljYWwgcGFydCBvZiB0aGUgc3lzdGVtLiBUaGUgZmFjdCB0aGF0IHRoZSBjaGFuZ2UgZGVmZXJzIGBzdGF0aWNfYnJhbmNoX2Rpc2FibGVgIHRvIGEgd29ya3F1ZXVlIHN1Z2dlc3RzIGEgcG90ZW50aWFsIGZvciBpbnRlcmVzdGluZyBjb25jdXJyZW5jeS1yZWxhdGVkIGlzc3Vlcy4gSSYjMzk7bSBnb2luZyB0byBmbGFnIHRoaXMgYXMgYFdvcnRoRnV6emluZz10cnVlYC4gVG8gemVybyBpbiBvbiB0aGUgaW50ZXJlc3RpbmcgcGllY2VzIG9mIHRoaXMgc2VjdGlvbiwgSSYjMzk7bGwgcGF5IHNwZWNpZmljIGF0dGVudGlvbiB0byB0aGUgYF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZWAgc3ltYm9sIGFzIGEgZm9jdXMgcG9pbnQuIE5vIHNwZWNpYWwgY29uZmlndXJhdGlvbiBpcyBuZWVkZWQgdG8gbWFrZSB0aGlzIGludGVyZXN0aW5nLCBmcm9tIHdoYXQgSSBjYW4gc2VlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxNDo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19kb19vbmNlX3NsZWVwYWJsZV9kb25lJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmVgIGluIGBsaWIvb25jZS5jYCB0byBkZWZlciB0aGUgc3RhdGljIGJyYW5jaCBkaXNhYmxlIG9wZXJhdGlvbiB0byBhIHdvcmtxdWV1ZSB1c2luZyBgb25jZV9kaXNhYmxlX2p1bXBgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGtlcm5lbCBwcmltaXRpdmUgdXNlZCBieSBgRE9fT05DRV9TTEVFUEFCTEVgIGFuZCBgZ2V0X3JhbmRvbV9zbGVlcGFibGVfb25jZWAsIHdoaWNoIGFyZSByZWFjaGFibGUgZHVyaW5nIG5ldHdvcmsgY29ubmVjdGlvbiBzZXR1cCAoZS5nLiwgYF9faW5ldF9oYXNoX2Nvbm5lY3RgKS4gSXQgaXMgd29ydGggZnV6emluZyB0byBlbnN1cmUgdGhlIGRlZmVycmVkIHdvcmtxdWV1ZSBleGVjdXRpb24gZG9lcyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHJhY2UgY29uZGl0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZWAgaW4gYGxpYi9vbmNlLmNgIHRvIGRlZmVyIHRoZSBzdGF0aWMgYnJhbmNoIGRpc2FibGUgb3BlcmF0aW9uIHRvIGEgd29ya3F1ZXVlIHVzaW5nIGBvbmNlX2Rpc2FibGVfanVtcGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGNvcmUga2VybmVsIHByaW1pdGl2ZSB1c2VkIGJ5IGBET19PTkNFX1NMRUVQQUJMRWAgYW5kIGBnZXRfcmFuZG9tX3NsZWVwYWJsZV9vbmNlYCwgd2hpY2ggYXJlIHJlYWNoYWJsZSBkdXJpbmcgbmV0d29yayBjb25uZWN0aW9uIHNldHVwIChlLmcuLCBgX19pbmV0X2hhc2hfY29ubmVjdGApLiBJdCBpcyB3b3J0aCBmdXp6aW5nIHRvIGVuc3VyZSB0aGUgZGVmZXJyZWQgd29ya3F1ZXVlIGV4ZWN1dGlvbiBkb2VzIG5vdCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgcmFjZSBjb25kaXRpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxNDo1OTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE0OjU5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgX19kb19vbmNlX3NsZWVwYWJsZV9kb25lYCBmdW5jdGlvbiBpbiBgbGliL29uY2UuY2AgdG8gdXNlIGBvbmNlX2Rpc2FibGVfanVtcGAgaW5zdGVhZCBvZiBgc3RhdGljX2JyYW5jaF9kaXNhYmxlYC4gVGhpcyBpcyByZWxhdGVkIHRvIHRoZSBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYERPX09OQ0VgIG1hY3JvIGFuZCBzdGF0aWMga2V5cywgbGlrZWx5IHRvIGhhbmRsZSBtb2R1bGUgdW5sb2FkaW5nIG9yIGRlZmVycmVkIHN0YXRpYyBicmFuY2ggZGlzYWJsaW5nIGNvcnJlY3RseS4gVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIHVzZXItc3BhY2UgY29waWVzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIHdvdWxkIGJlIHJlbGF0ZWQgdG8gc3RhdGljIGtleXMsIGxvY2tpbmcsIG9yIG1vZHVsZSBzdGF0ZSwgd2hpY2ggYXJlIGNvdmVyZWQgYnkgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scyBhbmQgS0FTQU4vTE9DS0RFUCwgbm90IEtNU0FOLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjNTc2NTRmMjRlYWE2YTY4MTFiZDhhM2Q5Y2NlZWYyZDdlMmIyYjdjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBBdWcgMjUgMTQ6NDc6MTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9saWIvb25jZS5jIGIvbGliL29uY2UuYwppbmRleCBkODAxYmZhOTQ1ZTYzLi4wYTBhOTE5MTU2ZTA1IDEwMDY0NAotLS0gYS9saWIvb25jZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2xpYi9vbmNlLmMKQEAgLTkzLDYgJiM0Mzs5Myw2IEBAIHZvaWQgX19kb19vbmNlX3NsZWVwYWJsZV9kb25lKGJvb2wgKmRvbmUsIHN0cnVjdCBzdGF0aWNfa2V5X3RydWUgKm9uY2Vfa2V5LAogewogCSpkb25lID0gdHJ1ZTsKIAltdXRleF91bmxvY2soJmFtcDtvbmNlX211dGV4KTsKLQlzdGF0aWNfYnJhbmNoX2Rpc2FibGUob25jZV9rZXkpOwomIzQzOwlvbmNlX2Rpc2FibGVfanVtcChvbmNlX2tleSwgbW9kKTsKIH0KIEVYUE9SVF9TWU1CT0woX19kb19vbmNlX3NsZWVwYWJsZV9kb25lKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDE0OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NTEKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgYGxpYi9vbmNlLmNgIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZWAgaW4gYGxpYi9vbmNlLmNgLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIHN3YXBwaW5nIG91dCBhIGBzdGF0aWNfYnJhbmNoX2Rpc2FibGUob25jZV9rZXkpO2AgY2FsbCBmb3IgYG9uY2VfZGlzYWJsZV9qdW1wKG9uY2Vfa2V5LCBtb2QpO2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeS4gRmlyc3QgdGhpbmdzIGZpcnN0LCBJIHNob3VsZCBxdWlja2x5IHZlcmlmeSBib3RoIGBsaWIvb25jZS5jYCBhbmQgc3BlY2lmaWNhbGx5IGBvbmNlX2Rpc2FibGVfanVtcGAgaWYgbmVjZXNzYXJ5LCB0byBnZXQgdGhlIGZ1bGwgY29udGV4dC4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBtYWtlIHN1cmUgdGhpcyBkb2VzbiYjMzk7dCBhY2NpZGVudGFsbHkgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgYnV0IHRoYXQgd291bGRuJiMzOTt0IG1ha2Ugc2Vuc2Ugc2luY2Ugd2UgYXJlIGRlYWxpbmcgd2l0aCBzdGF0aWMgYnJhbmNoZXMgYW5kIGBET19PTkNFYCBtYWNyb3MuIFRoaXMgc2VlbXMgdG8gYmUgcHJpbWFyaWx5IGNvbmNlcm5lZCB3aXRoIGp1bXAgbGFiZWxzIGFuZCBzdGF0aWMga2V5cy4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJJiMzOTttIGdvaW5nIHRvIGRvdWJsZS1jaGVjayBgb25jZV9kaXNhYmxlX2p1bXBgIHRvIGNvbmZpcm0gdGhhdCBpdCYjMzk7cyBvcGVyYXRpbmcgYXMgZXhwZWN0ZWQgYW5kIHRoYXQgdGhlIHN1YnN0aXR1dGlvbiBpcyBzYWZlIGFuZCBzZW1hbnRpY2FsbHkgZXF1aXZhbGVudCBpbiB0aGlzIGNvbnRleHQuIEl0JiMzOTtzIGFsd2F5cyBnb29kIHRvIGJlIHRob3JvdWdoIHdpdGggdGhlc2UgdHlwZXMgb2YgY2hhbmdlcyBpbiB0aGUga2VybmVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxNTowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtvbmNlX2Rpc2FibGVfanVtcCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtsaWIvb25jZS5jPTE0PXN0YXRpYyB2b2lkIG9uY2VfZGVmZXJyZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3KVxuLS1cbmxpYi9vbmNlLmMtMjQtXG5saWIvb25jZS5jOjI1OnN0YXRpYyB2b2lkIG9uY2VfZGlzYWJsZV9qdW1wKHN0cnVjdCBzdGF0aWNfa2V5X3RydWUgKmtleSwgc3RydWN0IG1vZHVsZSAqbW9kKVxubGliL29uY2UuYy0yNi17XG4tLVxubGliL29uY2UuYz02MD12b2lkIF9fZG9fb25jZV9kb25lKGJvb2wgKmRvbmUsIHN0cnVjdCBzdGF0aWNfa2V5X3RydWUgKm9uY2Vfa2V5LFxuLS1cbmxpYi9vbmNlLmMtNjUtXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNm9uY2VfbG9jaywgKmZsYWdzKTtcbmxpYi9vbmNlLmM6NjY6XHRvbmNlX2Rpc2FibGVfanVtcChvbmNlX2tleSwgbW9kKTtcbmxpYi9vbmNlLmMtNjctfVxuLS1cbmxpYi9vbmNlLmM9OTA9dm9pZCBfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmUoYm9vbCAqZG9uZSwgc3RydWN0IHN0YXRpY19rZXlfdHJ1ZSAqb25jZV9rZXksXG4tLVxubGliL29uY2UuYy05NS1cdG11dGV4X3VubG9jayhcdTAwMjZvbmNlX211dGV4KTtcbmxpYi9vbmNlLmM6OTY6XHRvbmNlX2Rpc2FibGVfanVtcChvbmNlX2tleSwgbW9kKTtcbmxpYi9vbmNlLmMtOTctfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxNTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjEwCgkJCQkJCQlvdXRwdXQ6IDE3MQoJCQkJCQkJdGhvdWdodHM6IDExNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHN3aXRjaGluZyBgc3RhdGljX2JyYW5jaF9kaXNhYmxlKG9uY2Vfa2V5KWAgdG8gYG9uY2VfZGlzYWJsZV9qdW1wKG9uY2Vfa2V5LCBtb2QpYC4gVGhpcyBpcyBjbGVhcmx5IGFpbWVkIGF0IGFkZHJlc3NpbmcgYSBwcm9ibGVtIHNwZWNpZmljYWxseSB3aXRoaW4gbW9kdWxlcywgbGlrZWx5IGFyb3VuZCBob3cgYERPX09OQ0VgIGlzIGhhbmRsZWQuIFRoZSBjdXJyZW50IG1ldGhvZCB3aXRoIGBzdGF0aWNfYnJhbmNoX2Rpc2FibGVgIHNlZW1zIHRvIGJlIHByb2JsZW1hdGljIG9yIHJlcXVpcmUgc29tZSBkZWxheWVkIGFjdGlvbiwgd2hpY2ggaXMgd2hhdCBgb25jZV9kaXNhYmxlX2p1bXBgIGlzIGRlc2lnbmVkIHRvIHByb3ZpZGUuCgpDcnVjaWFsbHksIGZyb20gd2hhdCBJIGNhbiB0ZWxsLCB0aGlzIGhhcyAqemVybyogYmVhcmluZyBvbiB0aGUgaXNzdWVzIEtNU0FOIGlzIGRlc2lnbmVkIHRvIGRldGVjdC4gVGhlcmUmIzM5O3Mgbm8gaGludCBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB2dWxuZXJhYmlsaXRpZXMsIHBvdGVudGlhbCBpbmZvcm1hdGlvbiBsZWFrcywgb3IgYW55dGhpbmcgZWxzZSB0aGF0IEtNU0FOIHdvdWxkIGZsYWcuIFRoaXMgaXMgcHVyZWx5IGEgY29udHJvbCBmbG93IGFuZCBzdGF0aWMga2V5IGNvcnJlY3Rpb24uCgpUaGVyZWZvcmUsIEkmIzM5O20gY29uZmlkZW50IGluIHNldHRpbmcgYE5lZWRzS01TQU49ZmFsc2VgLiBJdCYjMzk7cyBzaW1wbHkgbm90IHJlbGV2YW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxNTowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgYF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZWAgZnVuY3Rpb24gaW4gYGxpYi9vbmNlLmNgIHRvIHVzZSBgb25jZV9kaXNhYmxlX2p1bXBgIGluc3RlYWQgb2YgYHN0YXRpY19icmFuY2hfZGlzYWJsZWAuIFRoaXMgaXMgcmVsYXRlZCB0byB0aGUgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIGBET19PTkNFYCBtYWNybyBhbmQgc3RhdGljIGtleXMsIGxpa2VseSB0byBoYW5kbGUgbW9kdWxlIHVubG9hZGluZyBvciBkZWZlcnJlZCBzdGF0aWMgYnJhbmNoIGRpc2FibGluZyBjb3JyZWN0bHkuIFRoaXMgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciB1c2VyLXNwYWNlIGNvcGllcy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCB3b3VsZCBiZSByZWxhdGVkIHRvIHN0YXRpYyBrZXlzLCBsb2NraW5nLCBvciBtb2R1bGUgc3RhdGUsIHdoaWNoIGFyZSBjb3ZlcmVkIGJ5IHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMgYW5kIEtBU0FOL0xPQ0tERVAsIG5vdCBLTVNBTi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgX19kb19vbmNlX3NsZWVwYWJsZV9kb25lYCBmdW5jdGlvbiBpbiBgbGliL29uY2UuY2AgdG8gdXNlIGBvbmNlX2Rpc2FibGVfanVtcGAgaW5zdGVhZCBvZiBgc3RhdGljX2JyYW5jaF9kaXNhYmxlYC4gVGhpcyBpcyByZWxhdGVkIHRvIHRoZSBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYERPX09OQ0VgIG1hY3JvIGFuZCBzdGF0aWMga2V5cywgbGlrZWx5IHRvIGhhbmRsZSBtb2R1bGUgdW5sb2FkaW5nIG9yIGRlZmVycmVkIHN0YXRpYyBicmFuY2ggZGlzYWJsaW5nIGNvcnJlY3RseS4gVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIHVzZXItc3BhY2UgY29waWVzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIHdvdWxkIGJlIHJlbGF0ZWQgdG8gc3RhdGljIGtleXMsIGxvY2tpbmcsIG9yIG1vZHVsZSBzdGF0ZSwgd2hpY2ggYXJlIGNvdmVyZWQgYnkgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scyBhbmQgS0FTQU4vTE9DS0RFUCwgbm90IEtNU0FOLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxNDo0NzoxMy4zNDQ2NTQ5NjNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzgxMjgwMjcyMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19kb19vbmNlX3NsZWVwYWJsZV9kb25lXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZWAgZnVuY3Rpb24gaW4gYGxpYi9vbmNlLmNgIHRvIHVzZSBgb25jZV9kaXNhYmxlX2p1bXBgIGluc3RlYWQgb2YgYHN0YXRpY19icmFuY2hfZGlzYWJsZWAuIFRoaXMgaXMgcmVsYXRlZCB0byB0aGUgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIGBET19PTkNFYCBtYWNybyBhbmQgc3RhdGljIGtleXMsIGxpa2VseSB0byBoYW5kbGUgbW9kdWxlIHVubG9hZGluZyBvciBkZWZlcnJlZCBzdGF0aWMgYnJhbmNoIGRpc2FibGluZyBjb3JyZWN0bHkuIFRoaXMgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciB1c2VyLXNwYWNlIGNvcGllcy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCB3b3VsZCBiZSByZWxhdGVkIHRvIHN0YXRpYyBrZXlzLCBsb2NraW5nLCBvciBtb2R1bGUgc3RhdGUsIHdoaWNoIGFyZSBjb3ZlcmVkIGJ5IHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMgYW5kIEtBU0FOL0xPQ0tERVAsIG5vdCBLTVNBTi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgX19kb19vbmNlX3NsZWVwYWJsZV9kb25lYCBpbiBgbGliL29uY2UuY2AgdG8gZGVmZXIgdGhlIHN0YXRpYyBicmFuY2ggZGlzYWJsZSBvcGVyYXRpb24gdG8gYSB3b3JrcXVldWUgdXNpbmcgYG9uY2VfZGlzYWJsZV9qdW1wYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBrZXJuZWwgcHJpbWl0aXZlIHVzZWQgYnkgYERPX09OQ0VfU0xFRVBBQkxFYCBhbmQgYGdldF9yYW5kb21fc2xlZXBhYmxlX29uY2VgLCB3aGljaCBhcmUgcmVhY2hhYmxlIGR1cmluZyBuZXR3b3JrIGNvbm5lY3Rpb24gc2V0dXAgKGUuZy4sIGBfX2luZXRfaGFzaF9jb25uZWN0YCkuIEl0IGlzIHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIHRoZSBkZWZlcnJlZCB3b3JrcXVldWUgZXhlY3V0aW9uIGRvZXMgbm90IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciByYWNlIGNvbmRpdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE0OjQ3OjEzLjM0NDY2MDY4M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQzNzUwNzc2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGM1NzY1NGYyNGVhYTZhNjgxMWJkOGEzZDljY2VlZjJkN2UyYjJiN2NcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgMjUgMTQ6NDc6MTEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbGliL29uY2UuYyBiL2xpYi9vbmNlLmNcXG5pbmRleCBkODAxYmZhOTQ1ZTYzLi4wYTBhOTE5MTU2ZTA1IDEwMDY0NFxcbi0tLSBhL2xpYi9vbmNlLmNcXG4rKysgYi9saWIvb25jZS5jXFxuQEAgLTkzLDYgKzkzLDYgQEAgdm9pZCBfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmUoYm9vbCAqZG9uZSwgc3RydWN0IHN0YXRpY19rZXlfdHJ1ZSAqb25jZV9rZXksXFxuIHtcXG4gXFx0KmRvbmUgPSB0cnVlO1xcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNm9uY2VfbXV0ZXgpO1xcbi1cXHRzdGF0aWNfYnJhbmNoX2Rpc2FibGUob25jZV9rZXkpO1xcbitcXHRvbmNlX2Rpc2FibGVfanVtcChvbmNlX2tleSwgbW9kKTtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MKF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE0OjQ3OjE0Ljc4NDE2MDkwMVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjc2MzEzNDUxMDUxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgX19kb19vbmNlX3NsZWVwYWJsZV9kb25lYCBpbiBgbGliL29uY2UuY2AgdG8gZGVmZXIgdGhlIHN0YXRpYyBicmFuY2ggZGlzYWJsZSBvcGVyYXRpb24gdG8gYSB3b3JrcXVldWUgdXNpbmcgYG9uY2VfZGlzYWJsZV9qdW1wYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBrZXJuZWwgcHJpbWl0aXZlIHVzZWQgYnkgYERPX09OQ0VfU0xFRVBBQkxFYCBhbmQgYGdldF9yYW5kb21fc2xlZXBhYmxlX29uY2VgLCB3aGljaCBhcmUgcmVhY2hhYmxlIGR1cmluZyBuZXR3b3JrIGNvbm5lY3Rpb24gc2V0dXAgKGUuZy4sIGBfX2luZXRfaGFzaF9jb25uZWN0YCkuIEl0IGlzIHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIHRoZSBkZWZlcnJlZCB3b3JrcXVldWUgZXhlY3V0aW9uIGRvZXMgbm90IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciByYWNlIGNvbmRpdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGM1NzY1NGYyNGVhYTZhNjgxMWJkOGEzZDljY2VlZjJkN2UyYjJiN2NcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAyNSAxNDo0NzoxMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2xpYi9vbmNlLmMgYi9saWIvb25jZS5jXG5pbmRleCBkODAxYmZhOTQ1ZTYzLi4wYTBhOTE5MTU2ZTA1IDEwMDY0NFxuLS0tIGEvbGliL29uY2UuY1xuKysrIGIvbGliL29uY2UuY1xuQEAgLTkzLDYgKzkzLDYgQEAgdm9pZCBfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmUoYm9vbCAqZG9uZSwgc3RydWN0IHN0YXRpY19rZXlfdHJ1ZSAqb25jZV9rZXksXG4ge1xuIFx0KmRvbmUgPSB0cnVlO1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNm9uY2VfbXV0ZXgpO1xuLVx0c3RhdGljX2JyYW5jaF9kaXNhYmxlKG9uY2Vfa2V5KTtcbitcdG9uY2VfZGlzYWJsZV9qdW1wKG9uY2Vfa2V5LCBtb2QpO1xuIH1cbiBFWFBPUlRfU1lNQk9MKF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxNDo0NzoxNC43ODQxNjI4OTFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjg2MjMzOTQzMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSAnb25jZScgQ29kZSBNb2RpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCdzIGdvdCBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgY2hhbmdlIGluIGBsaWIvb25jZS5jYC4gU3BlY2lmaWNhbGx5LCBpdCdzIHN3YXBwaW5nIG91dCBgc3RhdGljX2JyYW5jaF9kaXNhYmxlKG9uY2Vfa2V5KTtgIHdpdGggYG9uY2VfZGlzYWJsZV9qdW1wKG9uY2Vfa2V5LCBtb2QpO2Agd2l0aGluIHRoZSBgX19kb19vbmNlX3NsZWVwYWJsZV9kb25lYCBmdW5jdGlvbi4gVGhpcyBzdWdnZXN0cyBhIHNoaWZ0IGluIGhvdyB3ZSdyZSBoYW5kbGluZyB0aGUgXCJvbmNlXCIgZXhlY3V0aW9uIG1lY2hhbmlzbSwgcHJlc3VtYWJseSByZWxhdGVkIHRvIGRpc2FibGluZyBpdCBhZnRlciB0aGUgaW5pdGlhbCBydW4uIE5hdHVyYWxseSwgbXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIGBsaWIvb25jZS5jYCBhbmQgZmlndXJlIG91dCAqZXhhY3RseSogd2hhdCBgb25jZV9kaXNhYmxlX2p1bXBgIGlzIGRvaW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgbmV3IGZ1bmN0aW9uIGFuZCBob3cgaXQgZGlmZmVycyBmcm9tIHRoZSBvcmlnaW5hbCBgc3RhdGljX2JyYW5jaF9kaXNhYmxlYC4gSXMgaXQgbW9yZSBlZmZpY2llbnQsIG1vcmUgZmxleGlibGUsIHBvdGVudGlhbGx5IHRpZWQgdG8gYSBzcGVjaWZpYyBoYXJkd2FyZSBmZWF0dXJlLCBvciBtYXliZSBpdCBpcyBwYXJ0IG9mIGEgYmlnZ2VyIHByb2plY3Q/IFRoZSBgbW9kYCB2YXJpYWJsZSBhbHNvIHBpcXVlcyBteSBpbnRlcmVzdDsgd2hlcmUgaXMgdGhhdCBjb21pbmcgZnJvbSwgYW5kIHdoYXQncyBpdHMgcm9sZSBpbiBhbGwgdGhpcz8gTmVlZCB0byBkcmlsbCBpbnRvIHRoYXQuIFRpbWUgdG8gZ2V0IGludG8gdGhlIGRldGFpbHMgYW5kIHdvcmsgdGhyb3VnaCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk1NCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTQ6NTA6MDMuNDA3NTU5NDUyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MDIzOTIxNzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwib25jZV9kaXNhYmxlX2p1bXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibGliL29uY2UuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJsaWIvb25jZS5jPTE0PXN0YXRpYyB2b2lkIG9uY2VfZGVmZXJyZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3KVxcbi0tXFxubGliL29uY2UuYy0yNC1cXG5saWIvb25jZS5jOjI1OnN0YXRpYyB2b2lkIG9uY2VfZGlzYWJsZV9qdW1wKHN0cnVjdCBzdGF0aWNfa2V5X3RydWUgKmtleSwgc3RydWN0IG1vZHVsZSAqbW9kKVxcbmxpYi9vbmNlLmMtMjYte1xcbi0tXFxubGliL29uY2UuYz02MD12b2lkIF9fZG9fb25jZV9kb25lKGJvb2wgKmRvbmUsIHN0cnVjdCBzdGF0aWNfa2V5X3RydWUgKm9uY2Vfa2V5LFxcbi0tXFxubGliL29uY2UuYy02NS1cXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZvbmNlX2xvY2ssICpmbGFncyk7XFxubGliL29uY2UuYzo2NjpcXHRvbmNlX2Rpc2FibGVfanVtcChvbmNlX2tleSwgbW9kKTtcXG5saWIvb25jZS5jLTY3LX1cXG4tLVxcbmxpYi9vbmNlLmM9OTA9dm9pZCBfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmUoYm9vbCAqZG9uZSwgc3RydWN0IHN0YXRpY19rZXlfdHJ1ZSAqb25jZV9rZXksXFxuLS1cXG5saWIvb25jZS5jLTk1LVxcdG11dGV4X3VubG9jayhcXHUwMDI2b25jZV9tdXRleCk7XFxubGliL29uY2UuYzo5NjpcXHRvbmNlX2Rpc2FibGVfanVtcChvbmNlX2tleSwgbW9kKTtcXG5saWIvb25jZS5jLTk3LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTQ6NTA6MDQuODA5OTU1MjExWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA1OTY0MDg4MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipEZWNvbnN0cnVjdGluZyBgb25jZV9kaXNhYmxlX2p1bXBgKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYG9uY2VfZGlzYWJsZV9qdW1wYCBhbmQgbXkgZmlyc3QgdGhvdWdodCBpcywgXCJSaWdodCwgaXQncyBhIGBzdGF0aWNgIGZ1bmN0aW9uLCBhbmQgaXQgbGl2ZXMgaW4gYGxpYi9vbmNlLmNgLlwiIFRoYXQgdGVsbHMgbWUgYSBmZXcgdGhpbmdzIGltbWVkaWF0ZWx5LiBJdCdzIGludGVybmFsIHRvIHRoYXQgY29tcGlsYXRpb24gdW5pdCwgcHJvYmFibHkgcGFydCBvZiBhIGxhcmdlciBtZWNoYW5pc20gd2l0aGluIHRoYXQgbGlicmFyeS4gU3RhdGljIGZ1bmN0aW9ucyBhcmUgb2Z0ZW4gdXNlZCBmb3IgaW1wbGVtZW50YXRpb24gZGV0YWlscywgaGVscGVyIGZ1bmN0aW9ucyB0aGF0IGFyZW4ndCBpbnRlbmRlZCBmb3IgZXh0ZXJuYWwgdXNlLiBOb3csIHRoZSBjcnVjaWFsIHBhcnQgaXMgdG8gZGlnIGludG8gKndoYXQqIGl0IGFjdHVhbGx5IGRvZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIHdpdGhpbiB0aGUgbGFyZ2VyIGBvbmNlYCBzeXN0ZW0uIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGFuZCBzZWUgaG93IGl0IHdvcmtzIVxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTgxLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTQ6NTA6NTUuNDA2MzY2NDM4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTkzMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibGliL29uY2UuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAyMDpcXHRcXHRzdGF0aWNfYnJhbmNoX2Rpc2FibGUod29yay1cXHUwMDNla2V5KTtcXG4gIDIxOlxcdFxcdG1vZHVsZV9wdXQod29yay1cXHUwMDNlbW9kdWxlKTtcXG4gIDIyOlxcdFxcdGtmcmVlKHdvcmspO1xcbiAgMjM6XFx0fVxcbiAgMjQ6XFx0XFxuICAyNTpcXHRzdGF0aWMgdm9pZCBvbmNlX2Rpc2FibGVfanVtcChzdHJ1Y3Qgc3RhdGljX2tleV90cnVlICprZXksIHN0cnVjdCBtb2R1bGUgKm1vZClcXG4gIDI2OlxcdHtcXG4gIDI3OlxcdFxcdHN0cnVjdCBvbmNlX3dvcmsgKnc7XFxuICAyODpcXHRcXG4gIDI5OlxcdFxcdHcgPSBrbWFsbG9jX29iaigqdywgR0ZQX0FUT01JQyk7XFxuICAzMDpcXHRcXHRpZiAoIXcpXFxuICAzMTpcXHRcXHRcXHRyZXR1cm47XFxuICAzMjpcXHRcXG4gIDMzOlxcdFxcdElOSVRfV09SSyhcXHUwMDI2dy1cXHUwMDNld29yaywgb25jZV9kZWZlcnJlZCk7XFxuICAzNDpcXHRcXHR3LVxcdTAwM2VrZXkgPSBrZXk7XFxuICAzNTpcXHRcXHR3LVxcdTAwM2Vtb2R1bGUgPSBtb2Q7XFxuICAzNjpcXHRcXHRfX21vZHVsZV9nZXQobW9kKTtcXG4gIDM3OlxcdFxcdHNjaGVkdWxlX3dvcmsoXFx1MDAyNnctXFx1MDAzZXdvcmspO1xcbiAgMzg6XFx0fVxcbiAgMzk6XFx0XFxuICA0MDpcXHRzdGF0aWMgREVGSU5FX1NQSU5MT0NLKG9uY2VfbG9jayk7XFxuICA0MTpcXHRcXG4gIDQyOlxcdGJvb2wgX19kb19vbmNlX3N0YXJ0KGJvb2wgKmRvbmUsIHVuc2lnbmVkIGxvbmcgKmZsYWdzKVxcbiAgNDM6XFx0XFx0X19hY3F1aXJlcyhvbmNlX2xvY2spXFxuICA0NDpcXHR7XFxuICA0NTpcXHRcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2b25jZV9sb2NrLCAqZmxhZ3MpO1xcbiAgNDY6XFx0XFx0aWYgKCpkb25lKSB7XFxuICA0NzpcXHRcXHRcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZvbmNlX2xvY2ssICpmbGFncyk7XFxuICA0ODpcXHRcXHRcXHQvKiBLZWVwIHNwYXJzZSBoYXBweSBieSByZXN0b3JpbmcgYW4gZXZlbiBsb2NrIGNvdW50IG9uXFxuICA0OTpcXHRcXHRcXHQgKiB0aGlzIGxvY2suIEluIGNhc2Ugd2UgcmV0dXJuIGhlcmUsIHdlIGRvbid0IGNhbGwgaW50b1xcbiAgNTA6XFx0XFx0XFx0ICogX19kb19vbmNlX2RvbmUgYnV0IHJldHVybiBlYXJseSBpbiB0aGUgRE9fT05DRSgpIG1hY3JvLlxcbiAgNTE6XFx0XFx0XFx0ICovXFxuICA1MjpcXHRcXHRcXHRfX2FjcXVpcmUob25jZV9sb2NrKTtcXG4gIDUzOlxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4gIDU0OlxcdFxcdH1cXG4gIDU1OlxcdFxcbiAgNTY6XFx0XFx0cmV0dXJuIHRydWU7XFxuICA1NzpcXHR9XFxuICA1ODpcXHRFWFBPUlRfU1lNQk9MKF9fZG9fb25jZV9zdGFydCk7XFxuICA1OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTQ6NTA6NTUuNDA2NDI3MzQ4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjM5NDE3MjIwNjEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ2hhbmdlIHRvIGBfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmVgKipcblxuT2theSwgc28gdGhlIGNoYW5nZSBpcyBpbiBgX19kb19vbmNlX3NsZWVwYWJsZV9kb25lYC4gVGhleSd2ZSBzd2FwcGVkIG91dCBgc3RhdGljX2JyYW5jaF9kaXNhYmxlKG9uY2Vfa2V5KWAgZm9yIGBvbmNlX2Rpc2FibGVfanVtcChvbmNlX2tleSwgbW9kKWAuIFRoaXMgaXMgaW50ZXJlc3Rpbmc7IGl0IGxvb2tzIGxpa2UgdGhleSdyZSBkZWZlcnJpbmcgdGhlIGp1bXAgbGFiZWwgdXBkYXRlIHRvIGEgd29ya3F1ZXVlLiBUaGUgZ29hbCBpcyBsaWtlbHkgdG8gYXZvaWQgc2xlZXBpbmcgb3IgYmxvY2tpbmcgaW4gY2VydGFpbiBjb250ZXh0cywgb3IgcGVyaGFwcyB0aGV5J3JlIHRyeWluZyB0byByZXNvbHZlIHNvbWUgbG9ja2RlcCBpc3N1ZXMuXG5cbldhaXQgYSBtaW51dGUsIGBfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmVgIGlzIHRpZWQgdG8gYERPX09OQ0VfU0xFRVBBQkxFYCwgcmlnaHQ/IENvbnNpZGVyaW5nIGl0cyBhc3NvY2lhdGlvbiB3aXRoIGBET19PTkNFX1NMRUVQQUJMRWAsIHNob3VsZCB0aGlzIGJlIGEgdGFyZ2V0IGZvciBmdXp6aW5nPyBIbW1tLCBpdCdzIGEgZnVuZGFtZW50YWwga2VybmVsIHByaW1pdGl2ZS4gRnV6emluZyBpdCBkaXJlY3RseSBtaWdodCBub3QgYmUgdGhlIG1vc3QgZWZmZWN0aXZlIHN0cmF0ZWd5IHNpbmNlIGBET19PTkNFYCBhbmQgYERPX09OQ0VfU0xFRVBBQkxFYCBhcmUgdXNlZCBzbyBleHRlbnNpdmVseSB0aHJvdWdob3V0IHRoZSBrZXJuZWwuIEl0IHdvdWxkIGxpa2VseSBwcm9kdWNlIGJyb2FkIHJlc3VsdHMuXG5cbkknbSBiZXR0ZXIgb2ZmIGNoZWNraW5nIHdoZXJlIGBfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmVgIGlzIGJlaW5nIHVzZWQgdG8gZ2V0IGEgYmV0dGVyIHNlbnNlIG9mIHRoZSBzY29wZSBvZiB0aGUgcG90ZW50aWFsIGltcGFjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMxOCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE0OjU0OjU0LjgyMzY1MTAxMVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODE3NTE5NjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fZG9fb25jZV9zbGVlcGFibGVfZG9uZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9vbmNlLmg9MTY9Ym9vbCBfX2RvX29uY2Vfc2xlZXBhYmxlX3N0YXJ0KGJvb2wgKmRvbmUpO1xcbmluY2x1ZGUvbGludXgvb25jZS5oOjE3OnZvaWQgX19kb19vbmNlX3NsZWVwYWJsZV9kb25lKGJvb2wgKmRvbmUsIHN0cnVjdCBzdGF0aWNfa2V5X3RydWUgKm9uY2Vfa2V5LFxcbmluY2x1ZGUvbGludXgvb25jZS5oLTE4LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBtb2R1bGUgKm1vZCk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L29uY2UuaC03Mi1cXHRcXHRcXHRcXHRmdW5jKF9fVkFfQVJHU19fKTtcXHRcXHRcXHRcXHRcXFxcXFxuaW5jbHVkZS9saW51eC9vbmNlLmg6NzM6XFx0XFx0XFx0XFx0X19kb19vbmNlX3NsZWVwYWJsZV9kb25lKFxcdTAwMjZfX19kb25lLCBcXHUwMDI2X19fb25jZV9rZXksXFxcXFxcbmluY2x1ZGUvbGludXgvb25jZS5oLTc0LVxcdFxcdFxcdFxcdFxcdFxcdCAgICBUSElTX01PRFVMRSk7XFx0XFx0XFxcXFxcbi0tXFxubGliL29uY2UuYz04OD1FWFBPUlRfU1lNQk9MKF9fZG9fb25jZV9zbGVlcGFibGVfc3RhcnQpO1xcbmxpYi9vbmNlLmMtODktXFxubGliL29uY2UuYzo5MDp2b2lkIF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZShib29sICpkb25lLCBzdHJ1Y3Qgc3RhdGljX2tleV90cnVlICpvbmNlX2tleSxcXG5saWIvb25jZS5jLTkxLVxcdFxcdFxcdCBzdHJ1Y3QgbW9kdWxlICptb2QpXFxuLS1cXG5saWIvb25jZS5jLTk3LX1cXG5saWIvb25jZS5jOjk4OkVYUE9SVF9TWU1CT0woX19kb19vbmNlX3NsZWVwYWJsZV9kb25lKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTQ6NTQ6NTcuNjQxMTc1Nzg5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc4MDAxODQyNzA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIGBzdGF0aWNfYnJhbmNoX2Rpc2FibGVgIFdvcmtxdWV1ZSBEZWZlcnJhbCoqXG5cbk9rYXksIHNvIHdlJ3JlIGxvb2tpbmcgYXQgYSBjaGFuZ2UgdGhhdCdzIGVzc2VudGlhbGx5IG1vdmluZyB0aGUgYHN0YXRpY19icmFuY2hfZGlzYWJsZWAgZnVuY3Rpb25hbGl0eSB0byBhIHdvcmtxdWV1ZS4gSXQncyBhIGZ1bmRhbWVudGFsIGNoYW5nZSB3aXRoaW4gdGhlIGtlcm5lbCBpdHNlbGYsIHNvLCB5ZXMsIGFic29sdXRlbHksIHRoaXMgd2FycmFudHMgZnV6emluZy4gV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBkb2Vzbid0IGludHJvZHVjZSBhbnkgc3VidGxlIHJlZ3Jlc3Npb25zIG9yIGlzc3Vlcy5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGxldCdzIHRhcmdldCBgX19kb19vbmNlX3NsZWVwYWJsZV9kb25lYC4gVGhhdCBzZWVtcyBsaWtlIGEga2V5IHN5bWJvbCByZWxhdGVkIHRvIHRoZSBcIm9uY2VcIiBpbmZyYXN0cnVjdHVyZSwgYW5kIGJhc2VkIG9uIG15IGV4cGVyaWVuY2UsIGEgY2hhbmdlIGxpa2UgdGhpcyBjb3VsZCBwb3RlbnRpYWxseSBpbnRlcmFjdCB3aXRoIGl0IGluIGludGVyZXN0aW5nIHdheXMuIFdhaXQgYSBtaW51dGUsIGBfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmVgICppcyogYSBjb3JlIGtlcm5lbCBmdW5jdGlvbi4gSXQgbGl2ZXMgaW4gYGxpYi9vbmNlLmNgLlxuXG5MZXQgbWUgc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQuIEhtbSwgbG9va3MgbGlrZSB3ZSBkb24ndCBuZWVkIGFueSBzcGVjaWFsIGNvbmZpZyBmbGFncyB0byBlbmFibGUgb3IgZGlzYWJsZSBpdDsgaXQgc2VlbXMgdG8gYmUgYnVpbHQgaW4gYnkgZGVmYXVsdC4gRXhjZWxsZW50LiBJJ2xsIGp1bXAgb3ZlciB0byB0aGUgYGxpYi9NYWtlZmlsZWAgdG8gY29uZmlybSBgb25jZS5vYCBpcyBhbHdheXMgYnVpbHQsIGVuc3VyaW5nIGl0IGlzIGFsd2F5cyBwYXJ0IG9mIG91ciBhdHRhY2sgc3VyZmFjZSBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA3NiwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxNDo1OTozNS42NDMwMjEwMjRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MDU5NTA5NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwib25jZVxcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJsaWIvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibGliL01ha2VmaWxlPTU1PW9iai15ICs9IGJjZC5vIHNvcnQubyBwYXJzZXIubyBkZWJ1Z19sb2Nrcy5vIHJhbmRvbTMyLm8gXFxcXFxcbi0tXFxubGliL01ha2VmaWxlLTU5LVxcdCBwZXJjcHUtcmVmY291bnQubyByaGFzaHRhYmxlLm8gYmFzZTY0Lm8gXFxcXFxcbmxpYi9NYWtlZmlsZTo2MDpcXHQgb25jZS5vIHJlZmNvdW50Lm8gcmN1cmVmLm8gdXNlcmNvcHkubyBlcnJzZXEubyBidWNrZXRfbG9ja3MubyBcXFxcXFxubGliL01ha2VmaWxlLTYxLVxcdCBnZW5lcmljLXJhZGl4LXRyZWUubyBiaXRtYXAtc3RyLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTQ6NTk6MzcuMDQ4OTc3ODEzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc0ODIyODYwOTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBQb3RlbnRpYWw6IGBvbmNlLm9gIGFuZCBgX19kb19vbmNlX3NsZWVwYWJsZV9kb25lYCoqXG5cbk9rYXksIHNvIGBvbmNlLm9gIGlzIGNvbnNpc3RlbnRseSBidWlsdCwgdGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHBpbnBvaW50IGEgc3BlY2lmaWMgZnVuY3Rpb24gdG8gZm9jdXMgdGhlIGZ1enppbmcgb24uIFJpZ2h0LCBgX19kb19vbmNlX3NsZWVwYWJsZV9kb25lYCBsb29rcyBpbnRlcmVzdGluZywgZXNwZWNpYWxseSBzaW5jZSBpdCdzIGFuIGV4cG9ydGVkIHN5bWJvbC4gSXMgdGhpcyBzbWFsbCBjb2RlIGNoYW5nZSAtIHJlcGxhY2luZyBgc3RhdGljX2JyYW5jaF9kaXNhYmxlYCB3aXRoIGBvbmNlX2Rpc2FibGVfanVtcGAgLSBldmVuIHdvcnRoIGZ1enppbmc/IE9uIHRoZSBmYWNlIG9mIGl0LCBpdCBhcHBlYXJzIGZ1bmN0aW9uYWxseSBtaW5vciwgYnV0IHRoaXMgaXMgYSBjb3JlIHByaW1pdGl2ZSB3ZSdyZSB0YWxraW5nIGFib3V0IGhlcmUuXG5cbkhtbSwgYG9uY2VfZGlzYWJsZV9qdW1wYCBpcyBhbHNvIGEgZnVuY3Rpb24sIGJ1dCBzdGF0aWMuIFRoYXQgZG9lc24ndCBsb29rIHByb21pc2luZyBmb3IgZGlyZWN0IGZ1enppbmcsIHRob3VnaCB0aGUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgbm9uLXN0YXRpYyBzeW1ib2wgaXMgc3RpbGwgaW50cmlndWluZy4gR2l2ZW4gdGhlIGNoYW5nZSBhbmQgdGhhdCB0aGUgdGFyZ2V0IGlzIGEgY29yZSBwcmltaXRpdmUsIEkgdGhpbmsgdGhlIGVmZm9ydCBpcyBqdXN0aWZpZWQuXG5cbklzIGBfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmVgIGEgaG90LXBhdGggZnVuY3Rpb24/IFRoYXQncyB0aGUgcmVhbCBxdWVzdGlvbi4gYERPX09OQ0VfU0xFRVBBQkxFYCBzdWdnZXN0cyBvbmUtdGltZSBpbml0aWFsaXphdGlvbiwgc28gaXQgaXMgbm90IGEgaG90IHBhdGggYWZ0ZXIgdGhlIGZpcnN0IGV4ZWN1dGlvbi4gQnV0LCB0aGUgZmlyc3QgdGltZSBpdCAqaXMqIGNhbGxlZCwgdGhpcyBmdW5jdGlvbiBpcyBleGVjdXRlZC4gVGhlcmVmb3JlLCB0aGF0IGluaXRpYWwgZXhlY3V0aW9uIHBhdGggaXMgdGhlIGNyaXRpY2FsIG9uZS5cblxuSSdsbCBmbGFnIGl0IGFzIFdvcnRoRnV6emluZz10cnVlLCB3aXRoIEZvY3VzU3ltYm9scz1bXCJfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmVcIl0uIE5vdyBsZXQncyBzZWUgZXhhY3RseSB3aGVyZSBgRE9fT05DRV9TTEVFUEFCTEVgIGlzIHVzZWQgdG8gZ2V0IG1vcmUgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDYyMSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxNDo1OTo0NC41MzEyNjcwMDFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNDUxNTI4NTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRE9fT05DRV9TTEVFUEFCTEVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL3Jlc2N0cmwvcmR0Z3JvdXAuYz0zMTcxPXN0YXRpYyBpbnQgcmR0X2dldF90cmVlKHN0cnVjdCBmc19jb250ZXh0ICpmYylcXG4tLVxcbmZzL3Jlc2N0cmwvcmR0Z3JvdXAuYy0zMTc5LVxcbmZzL3Jlc2N0cmwvcmR0Z3JvdXAuYzozMTgwOlxcdERPX09OQ0VfU0xFRVBBQkxFKHJlc2N0cmxfYXJjaF9wcmVfbW91bnQpO1xcbmZzL3Jlc2N0cmwvcmR0Z3JvdXAuYy0zMTgxLVxcbi0tXFxuaW5jbHVkZS9saW51eC9vbmNlLmg9MTc9dm9pZCBfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmUoYm9vbCAqZG9uZSwgc3RydWN0IHN0YXRpY19rZXlfdHJ1ZSAqb25jZV9rZXksXFxuLS1cXG5pbmNsdWRlL2xpbnV4L29uY2UuaC02My0vKiBWYXJpYW50IG9mIERPX09OQ0UoKSBmb3IgcHJvY2Vzcy9zbGVlcGFibGUgY29udGV4dHMuICovXFxuaW5jbHVkZS9saW51eC9vbmNlLmg6NjQ6I2RlZmluZSBET19PTkNFX1NMRUVQQUJMRShmdW5jLCAuLi4pXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmluY2x1ZGUvbGludXgvb25jZS5oLTY1LVxcdCh7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuaW5jbHVkZS9saW51eC9vbmNlLmgtODMtI2RlZmluZSBnZXRfcmFuZG9tX3NsZWVwYWJsZV9vbmNlKGJ1ZiwgbmJ5dGVzKVxcdFxcdFxcdFxcdCAgICAgXFxcXFxcbmluY2x1ZGUvbGludXgvb25jZS5oOjg0OlxcdERPX09OQ0VfU0xFRVBBQkxFKGdldF9yYW5kb21fYnl0ZXMsIChidWYpLCAobmJ5dGVzKSlcXG5pbmNsdWRlL2xpbnV4L29uY2UuaC04NS1cXG4tLVxcbmxpYi9vbmNlLmM9NzI9Ym9vbCBfX2RvX29uY2Vfc2xlZXBhYmxlX3N0YXJ0KGJvb2wgKmRvbmUpXFxuLS1cXG5saWIvb25jZS5jLTc5LVxcdFxcdCAqIHRoaXMgbXV0ZXguIEluIGNhc2Ugd2UgcmV0dXJuIGhlcmUsIHdlIGRvbid0IGNhbGwgaW50b1xcbmxpYi9vbmNlLmM6ODA6XFx0XFx0ICogX19kb19vbmNlX2RvbmUgYnV0IHJldHVybiBlYXJseSBpbiB0aGUgRE9fT05DRV9TTEVFUEFCTEUoKSBtYWNyby5cXG5saWIvb25jZS5jLTgxLVxcdFxcdCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxNDo1OTo0Ni43NzY0MjU1OTdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA3NTI5MTU1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBhIENvZGUgU25pcHBldCoqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4uLiB0aGlzIGJpdCBvZiBjb2RlIGlzIHBvcHBpbmcgdXAgaW4gYGZzL3Jlc2N0cmwvcmR0Z3JvdXAuY2AuIEFoLCBpbnRlcmVzdGluZywgdGhhdCdzIHdoZXJlIHRoZSByZXNvdXJjZSBjb250cm9sIHN0dWZmIGxpdmVzLCBzbyBJJ2QgZXhwZWN0IGl0IHRvIGJlIHVzZWQgdGhlcmUsIGNvbnRyb2xsaW5nIGNhY2hlIGFsbG9jYXRpb24gYW5kIHN1Y2guIEJ1dCB0aGVuIHRoZXJlJ3MgdGhpcyBgZ2V0X3JhbmRvbV9zbGVlcGFibGVfb25jZWAgZnVuY3Rpb24uLi4gV2FpdCBhIHNlY29uZCwgaXNuJ3QgKnRoYXQqIHVzZWQgaW4gYSBmZXcgbW9yZSBwbGFjZXMgdGhhbiBJIGluaXRpYWxseSB0aG91Z2h0PyBJIG5lZWQgdG8gY2hlY2sgdGhlIGNhbGwgZ3JhcGggZm9yIGBnZXRfcmFuZG9tX3NsZWVwYWJsZV9vbmNlYCBiZWNhdXNlIHRoaXMgc3VnZ2VzdHMgdGhhdCB0aGlzIGlzIG1vcmUgd2lkZWx5IHNjb3BlZCBhbmQgYSBicm9hZGVyIGRlcGVuZGVuY3kgdGhhbiBJIGZpcnN0IHN1c3BlY3RlZC4gSSB3b25kZXIgaWYgdGhlcmUgYXJlIGFueSBzdWJ0bGUgaW50ZXJhY3Rpb25zIHRvIGJlIGF3YXJlIG9mPyBJdCdzIHRpbWUgdG8gZGlnIGRlZXBlciBhbmQgc2VlIHdoZXJlIGVsc2UgdGhpcyBmdW5jdGlvbiBpcyBiZWluZyBjYWxsZWQgYW5kIHdoZXRoZXIgdGhlIHNoYXJlZCBjb250ZXh0IGlzIGltcG9ydGFudC4gVGhpcyBmZWVscyBsaWtlIGl0IHdhcnJhbnRzIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGJpZ2dlciBwaWN0dXJlIGJlZm9yZSBJIHByb2NlZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2MTgsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxNDo1OTo1MC44NTE3MTkyMTVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwOTk5MTQ2NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZ2V0X3JhbmRvbV9zbGVlcGFibGVfb25jZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9uZXQuaD0zMzg9ZG8ge1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0LmgtMzU0LVxcdGdldF9yYW5kb21fb25jZSgoYnVmKSwgKG5ieXRlcykpXFxuaW5jbHVkZS9saW51eC9uZXQuaDozNTU6I2RlZmluZSBuZXRfZ2V0X3JhbmRvbV9zbGVlcGFibGVfb25jZShidWYsIG5ieXRlcylcXHRcXHRcXFxcXFxuaW5jbHVkZS9saW51eC9uZXQuaDozNTY6XFx0Z2V0X3JhbmRvbV9zbGVlcGFibGVfb25jZSgoYnVmKSwgKG5ieXRlcykpXFxuaW5jbHVkZS9saW51eC9uZXQuaC0zNTctXFxuLS1cXG5pbmNsdWRlL2xpbnV4L29uY2UuaD0xNz12b2lkIF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZShib29sICpkb25lLCBzdHJ1Y3Qgc3RhdGljX2tleV90cnVlICpvbmNlX2tleSxcXG4tLVxcbmluY2x1ZGUvbGludXgvb25jZS5oLTgyLVxcbmluY2x1ZGUvbGludXgvb25jZS5oOjgzOiNkZWZpbmUgZ2V0X3JhbmRvbV9zbGVlcGFibGVfb25jZShidWYsIG5ieXRlcylcXHRcXHRcXHRcXHQgICAgIFxcXFxcXG5pbmNsdWRlL2xpbnV4L29uY2UuaC04NC1cXHRET19PTkNFX1NMRUVQQUJMRShnZXRfcmFuZG9tX2J5dGVzLCAoYnVmKSwgKG5ieXRlcykpXFxuLS1cXG5uZXQvaXB2NC9pbmV0X2hhc2h0YWJsZXMuYz0zND1zdGF0aWMgdm9pZCBpbmV0X2luaXRfZWhhc2hfc2VjcmV0KHZvaWQpXFxubmV0L2lwdjQvaW5ldF9oYXNodGFibGVzLmMtMzUte1xcbm5ldC9pcHY0L2luZXRfaGFzaHRhYmxlcy5jOjM2OlxcdG5ldF9nZXRfcmFuZG9tX3NsZWVwYWJsZV9vbmNlKFxcdTAwMjZpbmV0X2VoYXNoX3NlY3JldCxcXG5uZXQvaXB2NC9pbmV0X2hhc2h0YWJsZXMuYy0zNy1cXHRcXHRcXHRcXHQgICAgICBzaXplb2YoaW5ldF9laGFzaF9zZWNyZXQpKTtcXG4tLVxcbm5ldC9pcHY0L2luZXRfaGFzaHRhYmxlcy5jPTEwNDA9aW50IF9faW5ldF9oYXNoX2Nvbm5lY3Qoc3RydWN0IGluZXRfdGltZXdhaXRfZGVhdGhfcm93ICpkZWF0aF9yb3csXFxuLS1cXG5uZXQvaXB2NC9pbmV0X2hhc2h0YWJsZXMuYy0xMDgwLVxcbm5ldC9pcHY0L2luZXRfaGFzaHRhYmxlcy5jOjEwODE6XFx0Z2V0X3JhbmRvbV9zbGVlcGFibGVfb25jZSh0YWJsZV9wZXJ0dXJiLFxcbm5ldC9pcHY0L2luZXRfaGFzaHRhYmxlcy5jLTEwODItXFx0XFx0XFx0XFx0ICBJTkVUX1RBQkxFX1BFUlRVUkJfU0laRSAqIHNpemVvZigqdGFibGVfcGVydHVyYikpO1xcbi0tXFxubmV0L2lwdjYvaW5ldDZfaGFzaHRhYmxlcy5jPTI2PXZvaWQgaW5ldDZfaW5pdF9laGFzaF9zZWNyZXQodm9pZClcXG5uZXQvaXB2Ni9pbmV0Nl9oYXNodGFibGVzLmMtMjcte1xcbm5ldC9pcHY2L2luZXQ2X2hhc2h0YWJsZXMuYzoyODpcXHRuZXRfZ2V0X3JhbmRvbV9zbGVlcGFibGVfb25jZShcXHUwMDI2aW5ldDZfZWhhc2hfc2VjcmV0LFxcbm5ldC9pcHY2L2luZXQ2X2hhc2h0YWJsZXMuYy0yOS1cXHRcXHRcXHRcXHQgICAgICBzaXplb2YoaW5ldDZfZWhhc2hfc2VjcmV0KSk7XFxubmV0L2lwdjYvaW5ldDZfaGFzaHRhYmxlcy5jOjMwOlxcdG5ldF9nZXRfcmFuZG9tX3NsZWVwYWJsZV9vbmNlKFxcdTAwMjZ0Y3BfaXB2Nl9oYXNoX3NlY3JldCxcXG5uZXQvaXB2Ni9pbmV0Nl9oYXNodGFibGVzLmMtMzEtXFx0XFx0XFx0XFx0ICAgICAgc2l6ZW9mKHRjcF9pcHY2X2hhc2hfc2VjcmV0KSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE0OjU5OjUyLjk1MTYzOTA1NFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTY2OTg5MTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uKipcblxuQWxyaWdodCwgbG9va2luZyBhdCB0aGlzIGNvZGUsIGl0J3MgcHJldHR5IGNsZWFyIHRoYXQgYF9faW5ldF9oYXNoX2Nvbm5lY3RgIGlzIGEga2V5IGZ1bmN0aW9uIGludm9sdmVkIGluIG5ldHdvcmsgY29ubmVjdGlvbiBzZXR1cC4gVGhhdCBhbG9uZSBtYWtlcyBpdCBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZyDigJMgaXQncyBkZWZpbml0ZWx5IHJlYWNoYWJsZSB3aXRoaW4gYSBjcml0aWNhbCBwYXJ0IG9mIHRoZSBzeXN0ZW0uIFRoZSBmYWN0IHRoYXQgdGhlIGNoYW5nZSBkZWZlcnMgYHN0YXRpY19icmFuY2hfZGlzYWJsZWAgdG8gYSB3b3JrcXVldWUgc3VnZ2VzdHMgYSBwb3RlbnRpYWwgZm9yIGludGVyZXN0aW5nIGNvbmN1cnJlbmN5LXJlbGF0ZWQgaXNzdWVzLiBJJ20gZ29pbmcgdG8gZmxhZyB0aGlzIGFzIGBXb3J0aEZ1enppbmc9dHJ1ZWAuIFRvIHplcm8gaW4gb24gdGhlIGludGVyZXN0aW5nIHBpZWNlcyBvZiB0aGlzIHNlY3Rpb24sIEknbGwgcGF5IHNwZWNpZmljIGF0dGVudGlvbiB0byB0aGUgYF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZWAgc3ltYm9sIGFzIGEgZm9jdXMgcG9pbnQuIE5vIHNwZWNpYWwgY29uZmlndXJhdGlvbiBpcyBuZWVkZWQgdG8gbWFrZSB0aGlzIGludGVyZXN0aW5nLCBmcm9tIHdoYXQgSSBjYW4gc2VlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTg0LCJPdXRwdXRUb2tlbnMiOjE1NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE0OjU5OjU3LjkxODYzMTQzOVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3NjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19kb19vbmNlX3NsZWVwYWJsZV9kb25lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZWAgaW4gYGxpYi9vbmNlLmNgIHRvIGRlZmVyIHRoZSBzdGF0aWMgYnJhbmNoIGRpc2FibGUgb3BlcmF0aW9uIHRvIGEgd29ya3F1ZXVlIHVzaW5nIGBvbmNlX2Rpc2FibGVfanVtcGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGNvcmUga2VybmVsIHByaW1pdGl2ZSB1c2VkIGJ5IGBET19PTkNFX1NMRUVQQUJMRWAgYW5kIGBnZXRfcmFuZG9tX3NsZWVwYWJsZV9vbmNlYCwgd2hpY2ggYXJlIHJlYWNoYWJsZSBkdXJpbmcgbmV0d29yayBjb25uZWN0aW9uIHNldHVwIChlLmcuLCBgX19pbmV0X2hhc2hfY29ubmVjdGApLiBJdCBpcyB3b3J0aCBmdXp6aW5nIHRvIGVuc3VyZSB0aGUgZGVmZXJyZWQgd29ya3F1ZXVlIGV4ZWN1dGlvbiBkb2VzIG5vdCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgcmFjZSBjb25kaXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fZG9fb25jZV9zbGVlcGFibGVfZG9uZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmVgIGluIGBsaWIvb25jZS5jYCB0byBkZWZlciB0aGUgc3RhdGljIGJyYW5jaCBkaXNhYmxlIG9wZXJhdGlvbiB0byBhIHdvcmtxdWV1ZSB1c2luZyBgb25jZV9kaXNhYmxlX2p1bXBgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGtlcm5lbCBwcmltaXRpdmUgdXNlZCBieSBgRE9fT05DRV9TTEVFUEFCTEVgIGFuZCBgZ2V0X3JhbmRvbV9zbGVlcGFibGVfb25jZWAsIHdoaWNoIGFyZSByZWFjaGFibGUgZHVyaW5nIG5ldHdvcmsgY29ubmVjdGlvbiBzZXR1cCAoZS5nLiwgYF9faW5ldF9oYXNoX2Nvbm5lY3RgKS4gSXQgaXMgd29ydGggZnV6emluZyB0byBlbnN1cmUgdGhlIGRlZmVycmVkIHdvcmtxdWV1ZSBleGVjdXRpb24gZG9lcyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHJhY2UgY29uZGl0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTQ6NTk6NTcuOTE4Njc1ODI5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzU1Mzk5NDE4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE0OjU5OjU3LjkxOTU3NDM3OVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMzU1MzA5MDM5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGBfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmVgIGZ1bmN0aW9uIGluIGBsaWIvb25jZS5jYCB0byB1c2UgYG9uY2VfZGlzYWJsZV9qdW1wYCBpbnN0ZWFkIG9mIGBzdGF0aWNfYnJhbmNoX2Rpc2FibGVgLiBUaGlzIGlzIHJlbGF0ZWQgdG8gdGhlIGludGVybmFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgRE9fT05DRWAgbWFjcm8gYW5kIHN0YXRpYyBrZXlzLCBsaWtlbHkgdG8gaGFuZGxlIG1vZHVsZSB1bmxvYWRpbmcgb3IgZGVmZXJyZWQgc3RhdGljIGJyYW5jaCBkaXNhYmxpbmcgY29ycmVjdGx5LiBUaGlzIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgdXNlci1zcGFjZSBjb3BpZXMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgd291bGQgYmUgcmVsYXRlZCB0byBzdGF0aWMga2V5cywgbG9ja2luZywgb3IgbW9kdWxlIHN0YXRlLCB3aGljaCBhcmUgY292ZXJlZCBieSBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzIGFuZCBLQVNBTi9MT0NLREVQLCBub3QgS01TQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYzU3NjU0ZjI0ZWFhNmE2ODExYmQ4YTNkOWNjZWVmMmQ3ZTJiMmI3Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDI1IDE0OjQ3OjExIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbGliL29uY2UuYyBiL2xpYi9vbmNlLmNcbmluZGV4IGQ4MDFiZmE5NDVlNjMuLjBhMGE5MTkxNTZlMDUgMTAwNjQ0XG4tLS0gYS9saWIvb25jZS5jXG4rKysgYi9saWIvb25jZS5jXG5AQCAtOTMsNiArOTMsNiBAQCB2b2lkIF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZShib29sICpkb25lLCBzdHJ1Y3Qgc3RhdGljX2tleV90cnVlICpvbmNlX2tleSxcbiB7XG4gXHQqZG9uZSA9IHRydWU7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2b25jZV9tdXRleCk7XG4tXHRzdGF0aWNfYnJhbmNoX2Rpc2FibGUob25jZV9rZXkpO1xuK1x0b25jZV9kaXNhYmxlX2p1bXAob25jZV9rZXksIG1vZCk7XG4gfVxuIEVYUE9SVF9TWU1CT0woX19kb19vbmNlX3NsZWVwYWJsZV9kb25lKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE0OjU5OjU3LjkxOTU3NTg5OVoiLCJTZXEiOjE5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODU5MzM2ODYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIGBsaWIvb25jZS5jYCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYF9fZG9fb25jZV9zbGVlcGFibGVfZG9uZWAgaW4gYGxpYi9vbmNlLmNgLiBJdCBsb29rcyBsaWtlIGl0J3Mgc3dhcHBpbmcgb3V0IGEgYHN0YXRpY19icmFuY2hfZGlzYWJsZShvbmNlX2tleSk7YCBjYWxsIGZvciBgb25jZV9kaXNhYmxlX2p1bXAob25jZV9rZXksIG1vZCk7YC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5LiBGaXJzdCB0aGluZ3MgZmlyc3QsIEkgc2hvdWxkIHF1aWNrbHkgdmVyaWZ5IGJvdGggYGxpYi9vbmNlLmNgIGFuZCBzcGVjaWZpY2FsbHkgYG9uY2VfZGlzYWJsZV9qdW1wYCBpZiBuZWNlc3NhcnksIHRvIGdldCB0aGUgZnVsbCBjb250ZXh0LlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbWFrZSBzdXJlIHRoaXMgZG9lc24ndCBhY2NpZGVudGFsbHkgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgYnV0IHRoYXQgd291bGRuJ3QgbWFrZSBzZW5zZSBzaW5jZSB3ZSBhcmUgZGVhbGluZyB3aXRoIHN0YXRpYyBicmFuY2hlcyBhbmQgYERPX09OQ0VgIG1hY3Jvcy4gVGhpcyBzZWVtcyB0byBiZSBwcmltYXJpbHkgY29uY2VybmVkIHdpdGgganVtcCBsYWJlbHMgYW5kIHN0YXRpYyBrZXlzLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSdtIGdvaW5nIHRvIGRvdWJsZS1jaGVjayBgb25jZV9kaXNhYmxlX2p1bXBgIHRvIGNvbmZpcm0gdGhhdCBpdCdzIG9wZXJhdGluZyBhcyBleHBlY3RlZCBhbmQgdGhhdCB0aGUgc3Vic3RpdHV0aW9uIGlzIHNhZmUgYW5kIHNlbWFudGljYWxseSBlcXVpdmFsZW50IGluIHRoaXMgY29udGV4dC4gSXQncyBhbHdheXMgZ29vZCB0byBiZSB0aG9yb3VnaCB3aXRoIHRoZXNlIHR5cGVzIG9mIGNoYW5nZXMgaW4gdGhlIGtlcm5lbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk1MSwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyOCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDE1OjAwOjAzLjc3ODkxNjM0MloiLCJTZXEiOjIwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEwOTMwOTUyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvbmNlX2Rpc2FibGVfanVtcFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJsaWIvb25jZS5jPTE0PXN0YXRpYyB2b2lkIG9uY2VfZGVmZXJyZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3KVxcbi0tXFxubGliL29uY2UuYy0yNC1cXG5saWIvb25jZS5jOjI1OnN0YXRpYyB2b2lkIG9uY2VfZGlzYWJsZV9qdW1wKHN0cnVjdCBzdGF0aWNfa2V5X3RydWUgKmtleSwgc3RydWN0IG1vZHVsZSAqbW9kKVxcbmxpYi9vbmNlLmMtMjYte1xcbi0tXFxubGliL29uY2UuYz02MD12b2lkIF9fZG9fb25jZV9kb25lKGJvb2wgKmRvbmUsIHN0cnVjdCBzdGF0aWNfa2V5X3RydWUgKm9uY2Vfa2V5LFxcbi0tXFxubGliL29uY2UuYy02NS1cXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZvbmNlX2xvY2ssICpmbGFncyk7XFxubGliL29uY2UuYzo2NjpcXHRvbmNlX2Rpc2FibGVfanVtcChvbmNlX2tleSwgbW9kKTtcXG5saWIvb25jZS5jLTY3LX1cXG4tLVxcbmxpYi9vbmNlLmM9OTA9dm9pZCBfX2RvX29uY2Vfc2xlZXBhYmxlX2RvbmUoYm9vbCAqZG9uZSwgc3RydWN0IHN0YXRpY19rZXlfdHJ1ZSAqb25jZV9rZXksXFxuLS1cXG5saWIvb25jZS5jLTk1LVxcdG11dGV4X3VubG9jayhcXHUwMDI2b25jZV9tdXRleCk7XFxubGliL29uY2UuYzo5NjpcXHRvbmNlX2Rpc2FibGVfanVtcChvbmNlX2tleSwgbW9kKTtcXG5saWIvb25jZS5jLTk3LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTU6MDA6MDUuODg4MjMxOTRaIiwiU2VxIjoyMSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU4NDQwNTgzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgc3dpdGNoaW5nIGBzdGF0aWNfYnJhbmNoX2Rpc2FibGUob25jZV9rZXkpYCB0byBgb25jZV9kaXNhYmxlX2p1bXAob25jZV9rZXksIG1vZClgLiBUaGlzIGlzIGNsZWFybHkgYWltZWQgYXQgYWRkcmVzc2luZyBhIHByb2JsZW0gc3BlY2lmaWNhbGx5IHdpdGhpbiBtb2R1bGVzLCBsaWtlbHkgYXJvdW5kIGhvdyBgRE9fT05DRWAgaXMgaGFuZGxlZC4gVGhlIGN1cnJlbnQgbWV0aG9kIHdpdGggYHN0YXRpY19icmFuY2hfZGlzYWJsZWAgc2VlbXMgdG8gYmUgcHJvYmxlbWF0aWMgb3IgcmVxdWlyZSBzb21lIGRlbGF5ZWQgYWN0aW9uLCB3aGljaCBpcyB3aGF0IGBvbmNlX2Rpc2FibGVfanVtcGAgaXMgZGVzaWduZWQgdG8gcHJvdmlkZS5cblxuQ3J1Y2lhbGx5LCBmcm9tIHdoYXQgSSBjYW4gdGVsbCwgdGhpcyBoYXMgKnplcm8qIGJlYXJpbmcgb24gdGhlIGlzc3VlcyBLTVNBTiBpcyBkZXNpZ25lZCB0byBkZXRlY3QuIFRoZXJlJ3Mgbm8gaGludCBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB2dWxuZXJhYmlsaXRpZXMsIHBvdGVudGlhbCBpbmZvcm1hdGlvbiBsZWFrcywgb3IgYW55dGhpbmcgZWxzZSB0aGF0IEtNU0FOIHdvdWxkIGZsYWcuIFRoaXMgaXMgcHVyZWx5IGEgY29udHJvbCBmbG93IGFuZCBzdGF0aWMga2V5IGNvcnJlY3Rpb24uXG5cblRoZXJlZm9yZSwgSSdtIGNvbmZpZGVudCBpbiBzZXR0aW5nIGBOZWVkc0tNU0FOPWZhbHNlYC4gSXQncyBzaW1wbHkgbm90IHJlbGV2YW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjEwLCJPdXRwdXRUb2tlbnMiOjE3MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxNTowMDoxMS40NzI2NDAyOTdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjY3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgX19kb19vbmNlX3NsZWVwYWJsZV9kb25lYCBmdW5jdGlvbiBpbiBgbGliL29uY2UuY2AgdG8gdXNlIGBvbmNlX2Rpc2FibGVfanVtcGAgaW5zdGVhZCBvZiBgc3RhdGljX2JyYW5jaF9kaXNhYmxlYC4gVGhpcyBpcyByZWxhdGVkIHRvIHRoZSBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYERPX09OQ0VgIG1hY3JvIGFuZCBzdGF0aWMga2V5cywgbGlrZWx5IHRvIGhhbmRsZSBtb2R1bGUgdW5sb2FkaW5nIG9yIGRlZmVycmVkIHN0YXRpYyBicmFuY2ggZGlzYWJsaW5nIGNvcnJlY3RseS4gVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIHVzZXItc3BhY2UgY29waWVzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIHdvdWxkIGJlIHJlbGF0ZWQgdG8gc3RhdGljIGtleXMsIGxvY2tpbmcsIG9yIG1vZHVsZSBzdGF0ZSwgd2hpY2ggYXJlIGNvdmVyZWQgYnkgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scyBhbmQgS0FTQU4vTE9DS0RFUCwgbm90IEtNU0FOLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgX19kb19vbmNlX3NsZWVwYWJsZV9kb25lYCBmdW5jdGlvbiBpbiBgbGliL29uY2UuY2AgdG8gdXNlIGBvbmNlX2Rpc2FibGVfanVtcGAgaW5zdGVhZCBvZiBgc3RhdGljX2JyYW5jaF9kaXNhYmxlYC4gVGhpcyBpcyByZWxhdGVkIHRvIHRoZSBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYERPX09OQ0VgIG1hY3JvIGFuZCBzdGF0aWMga2V5cywgbGlrZWx5IHRvIGhhbmRsZSBtb2R1bGUgdW5sb2FkaW5nIG9yIGRlZmVycmVkIHN0YXRpYyBicmFuY2ggZGlzYWJsaW5nIGNvcnJlY3RseS4gVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIHVzZXItc3BhY2UgY29waWVzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIHdvdWxkIGJlIHJlbGF0ZWQgdG8gc3RhdGljIGtleXMsIGxvY2tpbmcsIG9yIG1vZHVsZSBzdGF0ZSwgd2hpY2ggYXJlIGNvdmVyZWQgYnkgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scyBhbmQgS0FTQU4vTE9DS0RFUCwgbm90IEtNU0FOLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowrndsq[1] Phase: Succeeded StartedAt: 2026-08-25 15:00:23 +0000 UTC FinishedAt: 2026-08-25 15:00:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrndsq[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-25 15:00:23 +0000 UTC FinishedAt: 2026-08-25 15:00:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrndsq[2] Phase: Succeeded StartedAt: 2026-08-25 15:00:23 +0000 UTC FinishedAt: 2026-08-25 18:48:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrndsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__do_once_sleepable_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"74cee958-a152-479a-9987-ef2734ea9b0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-25 15:00:23 +0000 UTC FinishedAt: 2026-08-25 18:48:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__do_once_sleepable_done"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"74cee958-a152-479a-9987-ef2734ea9b0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowrndsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__do_once_sleepable_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"74cee958-a152-479a-9987-ef2734ea9b0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-25 15:00:23 +0000 UTC FinishedAt: 2026-08-25 15:00:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrndsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__do_once_sleepable_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"74cee958-a152-479a-9987-ef2734ea9b0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-25 15:00:23 +0000 UTC FinishedAt: 2026-08-25 15:00:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowrndsq/series-workflowrndsq-convert-artifact-2611878014/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrndsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__do_once_sleepable_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"74cee958-a152-479a-9987-ef2734ea9b0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-25 15:00:33 +0000 UTC FinishedAt: 2026-08-25 15:16:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrndsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__do_once_sleepable_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"74cee958-a152-479a-9987-ef2734ea9b0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-25 15:00:33 +0000 UTC FinishedAt: 2026-08-25 15:16:35 +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:*ab764f10-a8e4-4bcd-863b-1f09f863f52e,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-workflowrndsq/series-workflowrndsq-convert-artifact-2611878014/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": "07c7cf61-4406-4762-8e25-2516dd8f652b", "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-workflowrndsq/series-workflowrndsq-build-action-1880948836/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrndsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__do_once_sleepable_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"74cee958-a152-479a-9987-ef2734ea9b0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-25 15:00:33 +0000 UTC FinishedAt: 2026-08-25 15:16:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*ab764f10-a8e4-4bcd-863b-1f09f863f52e,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-workflowrndsq/series-workflowrndsq-convert-artifact-2611878014/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": "07c7cf61-4406-4762-8e25-2516dd8f652b", "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-workflowrndsq/series-workflowrndsq-build-action-1880948836/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrndsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__do_once_sleepable_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"74cee958-a152-479a-9987-ef2734ea9b0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-25 15:16:35 +0000 UTC FinishedAt: 2026-08-25 15:16:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrndsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__do_once_sleepable_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"74cee958-a152-479a-9987-ef2734ea9b0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-25 15:16:35 +0000 UTC FinishedAt: 2026-08-25 15:16:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrndsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__do_once_sleepable_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"74cee958-a152-479a-9987-ef2734ea9b0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-25 15:16:35 +0000 UTC FinishedAt: 2026-08-25 15:16:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrndsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__do_once_sleepable_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"74cee958-a152-479a-9987-ef2734ea9b0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-25 15:16:35 +0000 UTC FinishedAt: 2026-08-25 15:16:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"74cee958-a152-479a-9987-ef2734ea9b0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowrndsq/series-workflowrndsq-convert-artifact-2622552241/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrndsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__do_once_sleepable_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"74cee958-a152-479a-9987-ef2734ea9b0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-25 15:16:45 +0000 UTC FinishedAt: 2026-08-25 15:18:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrndsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__do_once_sleepable_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"74cee958-a152-479a-9987-ef2734ea9b0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-25 15:16:45 +0000 UTC FinishedAt: 2026-08-25 15:18:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*07c7cf61-4406-4762-8e25-2516dd8f652b,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-workflowrndsq/series-workflowrndsq-build-action-1880948836/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-workflowrndsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__do_once_sleepable_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"74cee958-a152-479a-9987-ef2734ea9b0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-25 15:18:57 +0000 UTC FinishedAt: 2026-08-25 15:18:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrndsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__do_once_sleepable_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"74cee958-a152-479a-9987-ef2734ea9b0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-25 15:18:57 +0000 UTC FinishedAt: 2026-08-25 15:18:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrndsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__do_once_sleepable_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"74cee958-a152-479a-9987-ef2734ea9b0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-25 15:18:57 +0000 UTC FinishedAt: 2026-08-25 15:38:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrndsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__do_once_sleepable_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"74cee958-a152-479a-9987-ef2734ea9b0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-25 15:18:57 +0000 UTC FinishedAt: 2026-08-25 15:38:57 +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:*ab764f10-a8e4-4bcd-863b-1f09f863f52e,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-workflowrndsq/series-workflowrndsq-convert-artifact-2622552241/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": "b764db50-cf97-44af-b8a3-a61c6de531e7", "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-workflowrndsq/series-workflowrndsq-build-action-462698109/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrndsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__do_once_sleepable_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"74cee958-a152-479a-9987-ef2734ea9b0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-25 15:18:57 +0000 UTC FinishedAt: 2026-08-25 15:38:32 +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:*ab764f10-a8e4-4bcd-863b-1f09f863f52e,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-workflowrndsq/series-workflowrndsq-convert-artifact-2622552241/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": "b764db50-cf97-44af-b8a3-a61c6de531e7", "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-workflowrndsq/series-workflowrndsq-build-action-462698109/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrndsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__do_once_sleepable_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"74cee958-a152-479a-9987-ef2734ea9b0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-25 15:38:57 +0000 UTC FinishedAt: 2026-08-25 15:38:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrndsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__do_once_sleepable_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"74cee958-a152-479a-9987-ef2734ea9b0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-25 15:38:57 +0000 UTC FinishedAt: 2026-08-25 15:38:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrndsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__do_once_sleepable_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"74cee958-a152-479a-9987-ef2734ea9b0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-25 15:38:57 +0000 UTC FinishedAt: 2026-08-25 15:40:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrndsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__do_once_sleepable_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"74cee958-a152-479a-9987-ef2734ea9b0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-25 15:38:57 +0000 UTC FinishedAt: 2026-08-25 15:40:41 +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:*b764db50-cf97-44af-b8a3-a61c6de531e7,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-workflowrndsq/series-workflowrndsq-build-action-462698109/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-workflowrndsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__do_once_sleepable_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"74cee958-a152-479a-9987-ef2734ea9b0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-25 15:40:51 +0000 UTC FinishedAt: 2026-08-25 18:48:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrndsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__do_once_sleepable_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"74cee958-a152-479a-9987-ef2734ea9b0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-25 15:40:51 +0000 UTC FinishedAt: 2026-08-25 18:48:52 +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":["__do_once_sleepable_done"],"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:*07c7cf61-4406-4762-8e25-2516dd8f652b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b764db50-cf97-44af-b8a3-a61c6de531e7,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-workflowrndsq/series-workflowrndsq-build-action-1880948836/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-workflowrndsq/series-workflowrndsq-build-action-462698109/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowrndsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__do_once_sleepable_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"74cee958-a152-479a-9987-ef2734ea9b0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-25 15:40:51 +0000 UTC FinishedAt: 2026-08-25 15:41:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrndsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__do_once_sleepable_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"74cee958-a152-479a-9987-ef2734ea9b0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-25 15:40:51 +0000 UTC FinishedAt: 2026-08-25 15:41:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__do_once_sleepable_done"],"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-workflowrndsq/series-workflowrndsq-convert-artifact-1344291430/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrndsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__do_once_sleepable_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"74cee958-a152-479a-9987-ef2734ea9b0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-25 15:40:51 +0000 UTC FinishedAt: 2026-08-25 15:40:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrndsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__do_once_sleepable_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"74cee958-a152-479a-9987-ef2734ea9b0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-25 15:40:51 +0000 UTC FinishedAt: 2026-08-25 15:40:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrndsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__do_once_sleepable_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"74cee958-a152-479a-9987-ef2734ea9b0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-25 15:40:51 +0000 UTC FinishedAt: 2026-08-25 15:40:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrndsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__do_once_sleepable_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"74cee958-a152-479a-9987-ef2734ea9b0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-25 15:41:11 +0000 UTC FinishedAt: 2026-08-25 18:48:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrndsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__do_once_sleepable_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","series_id":"74cee958-a152-479a-9987-ef2734ea9b0b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-25 15:41:11 +0000 UTC FinishedAt: 2026-08-25 18:48:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*07c7cf61-4406-4762-8e25-2516dd8f652b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b764db50-cf97-44af-b8a3-a61c6de531e7,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-workflowrndsq/series-workflowrndsq-build-action-1880948836/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-workflowrndsq/series-workflowrndsq-build-action-462698109/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-workflowrndsq/series-workflowrndsq-convert-artifact-1344291430/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,}