Name: series-workflowcgsx2 Phase: Succeeded StartedAt: 2026-08-10 23:33:26 +0000 UTC FinishedAt: 2026-08-11 00:43:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcgsx2[0] Phase: Succeeded StartedAt: 2026-08-10 23:33:26 +0000 UTC FinishedAt: 2026-08-10 23:51:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcgsx2[0].run-triage Phase: Succeeded StartedAt: 2026-08-10 23:33:26 +0000 UTC FinishedAt: 2026-08-10 23:51:39 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "6b8c8af514d739d0335f5579b585e02babe8a727", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ZRAM", "ZRAM_WRITEBACK", "ZRAM_MULTI_COMP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "6b8c8af514d739d0335f5579b585e02babe8a727", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ZRAM", "ZRAM_WRITEBACK", "ZRAM_MULTI_COMP" ], "series_id": "fec7849c-1ea8-448b-8a1f-a1f8c1603a16" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "zram_submit_bio", "disksize_store", "reset_store", "recompress_store", "writeback_store", "idle_store", "compact_store" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIzOjUwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1pSQU0mIzM0OywKICAgICYjMzQ7WlJBTV9XUklURUJBQ0smIzM0OywKICAgICYjMzQ7WlJBTV9NVUxUSV9DT01QJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7enJhbV9zdWJtaXRfYmlvJiMzNDssCiAgICAmIzM0O2Rpc2tzaXplX3N0b3JlJiMzNDssCiAgICAmIzM0O3Jlc2V0X3N0b3JlJiMzNDssCiAgICAmIzM0O3JlY29tcHJlc3Nfc3RvcmUmIzM0OywKICAgICYjMzQ7d3JpdGViYWNrX3N0b3JlJiMzNDssCiAgICAmIzM0O2lkbGVfc3RvcmUmIzM0OywKICAgICYjMzQ7Y29tcGFjdF9zdG9yZSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYml0LWxvY2sgcG9zaXRpb24gaXNzdWUgb24gNjQtYml0IGJpZy1lbmRpYW4gYXJjaGl0ZWN0dXJlcyBpbiB0aGUgenJhbSBkcml2ZXIuIEl0IGVuc3VyZXMgdGhhdCB0aGUgbG9jayBiaXQgbGFuZHMgaW4gdGhlIGNvcnJlY3QgcG9zaXRpb24gd2l0aGluIHRoZSBgX19sb2NrYCB3b3JkLCB3aGljaCBpcyBhbGlhc2VkIGJ5IHR3byBgdTMyYHMuIFRoaXMgaXMgYSBsb2NraW5nIGFuZCBiaXQgbWFuaXB1bGF0aW9uIGZpeCwgbm90IHJlbGF0ZWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnksIGluZm8tbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlIGZpZWxkcy4gU3RhbmRhcmQgdG9vbHMgbGlrZSBLQ1NBTiBvciBMT0NLREVQIGFyZSBiZXR0ZXIgc3VpdGVkIGZvciBsb2NraW5nIGFuZCBjb25jdXJyZW5jeSBpc3N1ZXMsIHdoaWxlIEtNU0FOIGlzIHNwZWNpZmljYWxseSBmb3IgZGV0ZWN0aW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCB3aGljaCBpcyBub3QgcmVsZXZhbnQgaGVyZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBsb2NraW5nIGJ1ZyBpbiB6cmFtIG9uIDY0LWJpdCBiaWctZW5kaWFuIHN5c3RlbXMgYnkgY29ycmVjdGluZyB0aGUgYml0IHBvc2l0aW9uIHVzZWQgZm9yIFpSQU1fRU5UUllfTE9DSy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIGV4ZWN1dGlvbiBmbG93IG9uIGJpZy1lbmRpYW4gYXJjaGl0ZWN0dXJlcyBsaWtlIHMzOTB4LCB3aGljaCBhcmUgc3VwcG9ydGVkIGJ5IHN5emthbGxlci4gRnV6emluZyB6cmFtIGJsb2NrIGRldmljZSBvcGVyYXRpb25zIGFuZCBzeXNmcyBpbnRlcmZhY2VzIGNhbiBoZWxwIHZlcmlmeSB0aGUgZml4LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIzOjUwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMmFjZWI0YWViYzU3ZTMzY2I5OTYyNDhjOTFiNmMwYjRjZGQxYTU5NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDEwIDIzOjUwOjAwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jIGIvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmNcbmluZGV4IGQwOWZkY2E0OWNiZGEuLmE5YjNiYjFkM2JlZjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmNcbkBAIC03NCw3ICYjNDM7NzQsNyBAQCBzdGF0aWMgX19tdXN0X2NoZWNrIGJvb2wgc2xvdF90cnlsb2NrKHN0cnVjdCB6cmFtICp6cmFtLCB1bnNpZ25lZCBsb25nIGluZGV4KVxuIHtcbiBcdHVuc2lnbmVkIGxvbmcgKmxvY2sgPSBcdTAwMjZ6cmFtLVx1MDAzZXRhYmxlW2luZGV4XS5fX2xvY2s7XG4gXG4tXHRpZiAoIXRlc3RfYW5kX3NldF9iaXRfbG9jayhaUkFNX0VOVFJZX0xPQ0ssIGxvY2spKSB7XG4mIzQzO1x0aWYgKCF0ZXN0X2FuZF9zZXRfYml0X2xvY2soWlJBTV9FTlRSWV9MT0NLX0JJVCwgbG9jaykpIHtcbiBcdFx0bXV0ZXhfYWNxdWlyZShcdTAwMjZ6cmFtLVx1MDAzZXRhYmxlX2xvY2tfbWFwLCAwLCAxLCBfUkVUX0lQXyk7XG4gXHRcdGxvY2tfYWNxdWlyZWQoXHUwMDI2enJhbS1cdTAwM2V0YWJsZV9sb2NrX21hcCwgX1JFVF9JUF8pO1xuIFx0XHRyZXR1cm4gdHJ1ZTtcbkBAIC04OCw3ICYjNDM7ODgsNyBAQCBzdGF0aWMgdm9pZCBzbG90X2xvY2soc3RydWN0IHpyYW0gKnpyYW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpXG4gXHR1bnNpZ25lZCBsb25nICpsb2NrID0gXHUwMDI2enJhbS1cdTAwM2V0YWJsZVtpbmRleF0uX19sb2NrO1xuIFxuIFx0bXV0ZXhfYWNxdWlyZShcdTAwMjZ6cmFtLVx1MDAzZXRhYmxlX2xvY2tfbWFwLCAwLCAwLCBfUkVUX0lQXyk7XG4tXHR3YWl0X29uX2JpdF9sb2NrKGxvY2ssIFpSQU1fRU5UUllfTE9DSywgVEFTS19VTklOVEVSUlVQVElCTEUpO1xuJiM0MztcdHdhaXRfb25fYml0X2xvY2sobG9jaywgWlJBTV9FTlRSWV9MT0NLX0JJVCwgVEFTS19VTklOVEVSUlVQVElCTEUpO1xuIFx0bG9ja19hY3F1aXJlZChcdTAwMjZ6cmFtLVx1MDAzZXRhYmxlX2xvY2tfbWFwLCBfUkVUX0lQXyk7XG4gfVxuIFxuQEAgLTk3LDcgJiM0Mzs5Nyw3IEBAIHN0YXRpYyB2b2lkIHNsb3RfdW5sb2NrKHN0cnVjdCB6cmFtICp6cmFtLCB1bnNpZ25lZCBsb25nIGluZGV4KVxuIFx0dW5zaWduZWQgbG9uZyAqbG9jayA9IFx1MDAyNnpyYW0tXHUwMDNldGFibGVbaW5kZXhdLl9fbG9jaztcbiBcbiBcdG11dGV4X3JlbGVhc2UoXHUwMDI2enJhbS1cdTAwM2V0YWJsZV9sb2NrX21hcCwgX1JFVF9JUF8pO1xuLVx0Y2xlYXJfYW5kX3dha2VfdXBfYml0KFpSQU1fRU5UUllfTE9DSywgbG9jayk7XG4mIzQzO1x0Y2xlYXJfYW5kX3dha2VfdXBfYml0KFpSQU1fRU5UUllfTE9DS19CSVQsIGxvY2spO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIGJvb2wgaW5pdF9kb25lKHN0cnVjdCB6cmFtICp6cmFtKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oIGIvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmhcbmluZGV4IDRmZGRjNTgyZjNiODIuLjdhNTVkNzUxNDE3ZTIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmhcbkBAIC0xNSw2ICYjNDM7MTUsNyBAQFxuICNpZm5kZWYgX1pSQU1fRFJWX0hfXG4gI2RlZmluZSBfWlJBTV9EUlZfSF9cbiBcbiYjNDM7I2luY2x1ZGUgXHUwMDNjYXNtL2J5dGVvcmRlci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcndzZW0uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3pzbWFsbG9jLmhcdTAwM2VcbiBcbkBAIC01Nyw2ICYjNDM7NTgsMTkgQEAgZW51bSB6cmFtX3BhZ2VmbGFncyB7XG4gXHRfX05SX1pSQU1fUEFHRUZMQUdTLFxuIH07XG4gXG4mIzQzOy8qXG4mIzQzOyAqIFRoZSBzbG90IGxvY2sgaXMgYSBiaXQtd2FpdCBsb2NrIG9uIHRoZSB3aG9sZSBfX2xvY2sgd29yZCwgd2hpbGVcbiYjNDM7ICogZmxhZ3MgYW5kIGFjX3RpbWUgYWxpYXMgdGhhdCB3b3JkIGFzIHR3byB1MzJzLiAgVGhlIGxvY2sgYml0IG11c3RcbiYjNDM7ICogbGFuZCBpbiB0aGUgc2xvdCB0aGF0IFpSQU1fRU5UUllfTE9DSyByZXNlcnZlcyBpbiBhdHRyLmZsYWdzOyBvblxuJiM0MzsgKiA2NC1iaXQgYmlnLWVuZGlhbiB0aGUgZmxhZ3Mgd29yZCBtYXBzIHRvIHRoZSB1cHBlciBoYWxmIG9mIF9fbG9jayxcbiYjNDM7ICogc28gdGhlIGJpdCBwb3NpdGlvbiBoYXMgdG8gYmUgc2hpZnRlZCB1cC5cbiYjNDM7ICovXG4mIzQzOyNpZiBkZWZpbmVkKENPTkZJR182NEJJVCkgXHUwMDI2XHUwMDI2IGRlZmluZWQoX19CSUdfRU5ESUFOKVxuJiM0MzsjZGVmaW5lIFpSQU1fRU5UUllfTE9DS19CSVQgIChaUkFNX0VOVFJZX0xPQ0sgJiM0MzsgMzIpXG4mIzQzOyNlbHNlXG4mIzQzOyNkZWZpbmUgWlJBTV9FTlRSWV9MT0NLX0JJVCAgWlJBTV9FTlRSWV9MT0NLXG4mIzQzOyNlbmRpZlxuJiM0MztcbiAvKlxuICAqIEFsbG9jYXRlZCBmb3IgZWFjaCBkaXNrIHBhZ2UuICBXZSB1c2UgYml0LWxvY2sgKFpSQU1fRU5UUllfTE9DSyBiaXRcbiAgKiBvZiBmbGFncykgdG8gc2F2ZSBtZW1vcnkuICBUaGVyZSBjYW4gYmUgcGxlbnR5IG9mIGVudHJpZXMgYW5kIHN0YW5kYXJkXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjM6NTA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1pSQU0mIzM0OywKICAgICYjMzQ7WlJBTV9XUklURUJBQ0smIzM0OywKICAgICYjMzQ7WlJBTV9NVUxUSV9DT01QJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7enJhbV9zdWJtaXRfYmlvJiMzNDssCiAgICAmIzM0O2Rpc2tzaXplX3N0b3JlJiMzNDssCiAgICAmIzM0O3Jlc2V0X3N0b3JlJiMzNDssCiAgICAmIzM0O3JlY29tcHJlc3Nfc3RvcmUmIzM0OywKICAgICYjMzQ7d3JpdGViYWNrX3N0b3JlJiMzNDssCiAgICAmIzM0O2lkbGVfc3RvcmUmIzM0OywKICAgICYjMzQ7Y29tcGFjdF9zdG9yZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGxvY2tpbmcgYnVnIGluIHpyYW0gb24gNjQtYml0IGJpZy1lbmRpYW4gc3lzdGVtcyBieSBjb3JyZWN0aW5nIHRoZSBiaXQgcG9zaXRpb24gdXNlZCBmb3IgWlJBTV9FTlRSWV9MT0NLLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbHRlcnMgZXhlY3V0aW9uIGZsb3cgb24gYmlnLWVuZGlhbiBhcmNoaXRlY3R1cmVzIGxpa2UgczM5MHgsIHdoaWNoIGFyZSBzdXBwb3J0ZWQgYnkgc3l6a2FsbGVyLiBGdXp6aW5nIHpyYW0gYmxvY2sgZGV2aWNlIG9wZXJhdGlvbnMgYW5kIHN5c2ZzIGludGVyZmFjZXMgY2FuIGhlbHAgdmVyaWZ5IHRoZSBmaXguJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyYWNlYjRhZWJjNTdlMzNjYjk5NjI0OGM5MWI2YzBiNGNkZDFhNTk1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMTAgMjM6NTA6MDAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYyBiL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jCmluZGV4IGQwOWZkY2E0OWNiZGEuLmE5YjNiYjFkM2JlZjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jCkBAIC03NCw3ICYjNDM7NzQsNyBAQCBzdGF0aWMgX19tdXN0X2NoZWNrIGJvb2wgc2xvdF90cnlsb2NrKHN0cnVjdCB6cmFtICp6cmFtLCB1bnNpZ25lZCBsb25nIGluZGV4KQogewogCXVuc2lnbmVkIGxvbmcgKmxvY2sgPSAmYW1wO3pyYW0tJmd0O3RhYmxlW2luZGV4XS5fX2xvY2s7CiAKLQlpZiAoIXRlc3RfYW5kX3NldF9iaXRfbG9jayhaUkFNX0VOVFJZX0xPQ0ssIGxvY2spKSB7CiYjNDM7CWlmICghdGVzdF9hbmRfc2V0X2JpdF9sb2NrKFpSQU1fRU5UUllfTE9DS19CSVQsIGxvY2spKSB7CiAJCW11dGV4X2FjcXVpcmUoJmFtcDt6cmFtLSZndDt0YWJsZV9sb2NrX21hcCwgMCwgMSwgX1JFVF9JUF8pOwogCQlsb2NrX2FjcXVpcmVkKCZhbXA7enJhbS0mZ3Q7dGFibGVfbG9ja19tYXAsIF9SRVRfSVBfKTsKIAkJcmV0dXJuIHRydWU7CkBAIC04OCw3ICYjNDM7ODgsNyBAQCBzdGF0aWMgdm9pZCBzbG90X2xvY2soc3RydWN0IHpyYW0gKnpyYW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpCiAJdW5zaWduZWQgbG9uZyAqbG9jayA9ICZhbXA7enJhbS0mZ3Q7dGFibGVbaW5kZXhdLl9fbG9jazsKIAogCW11dGV4X2FjcXVpcmUoJmFtcDt6cmFtLSZndDt0YWJsZV9sb2NrX21hcCwgMCwgMCwgX1JFVF9JUF8pOwotCXdhaXRfb25fYml0X2xvY2sobG9jaywgWlJBTV9FTlRSWV9MT0NLLCBUQVNLX1VOSU5URVJSVVBUSUJMRSk7CiYjNDM7CXdhaXRfb25fYml0X2xvY2sobG9jaywgWlJBTV9FTlRSWV9MT0NLX0JJVCwgVEFTS19VTklOVEVSUlVQVElCTEUpOwogCWxvY2tfYWNxdWlyZWQoJmFtcDt6cmFtLSZndDt0YWJsZV9sb2NrX21hcCwgX1JFVF9JUF8pOwogfQogCkBAIC05Nyw3ICYjNDM7OTcsNyBAQCBzdGF0aWMgdm9pZCBzbG90X3VubG9jayhzdHJ1Y3QgenJhbSAqenJhbSwgdW5zaWduZWQgbG9uZyBpbmRleCkKIAl1bnNpZ25lZCBsb25nICpsb2NrID0gJmFtcDt6cmFtLSZndDt0YWJsZVtpbmRleF0uX19sb2NrOwogCiAJbXV0ZXhfcmVsZWFzZSgmYW1wO3pyYW0tJmd0O3RhYmxlX2xvY2tfbWFwLCBfUkVUX0lQXyk7Ci0JY2xlYXJfYW5kX3dha2VfdXBfYml0KFpSQU1fRU5UUllfTE9DSywgbG9jayk7CiYjNDM7CWNsZWFyX2FuZF93YWtlX3VwX2JpdChaUkFNX0VOVFJZX0xPQ0tfQklULCBsb2NrKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGluaXRfZG9uZShzdHJ1Y3QgenJhbSAqenJhbSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oIGIvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmgKaW5kZXggNGZkZGM1ODJmM2I4Mi4uN2E1NWQ3NTE0MTdlMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmgKQEAgLTE1LDYgJiM0MzsxNSw3IEBACiAjaWZuZGVmIF9aUkFNX0RSVl9IXwogI2RlZmluZSBfWlJBTV9EUlZfSF8KIAomIzQzOyNpbmNsdWRlICZsdDthc20vYnl0ZW9yZGVyLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcndzZW0uaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC96c21hbGxvYy5oJmd0OwogCkBAIC01Nyw2ICYjNDM7NTgsMTkgQEAgZW51bSB6cmFtX3BhZ2VmbGFncyB7CiAJX19OUl9aUkFNX1BBR0VGTEFHUywKIH07CiAKJiM0MzsvKgomIzQzOyAqIFRoZSBzbG90IGxvY2sgaXMgYSBiaXQtd2FpdCBsb2NrIG9uIHRoZSB3aG9sZSBfX2xvY2sgd29yZCwgd2hpbGUKJiM0MzsgKiBmbGFncyBhbmQgYWNfdGltZSBhbGlhcyB0aGF0IHdvcmQgYXMgdHdvIHUzMnMuICBUaGUgbG9jayBiaXQgbXVzdAomIzQzOyAqIGxhbmQgaW4gdGhlIHNsb3QgdGhhdCBaUkFNX0VOVFJZX0xPQ0sgcmVzZXJ2ZXMgaW4gYXR0ci5mbGFnczsgb24KJiM0MzsgKiA2NC1iaXQgYmlnLWVuZGlhbiB0aGUgZmxhZ3Mgd29yZCBtYXBzIHRvIHRoZSB1cHBlciBoYWxmIG9mIF9fbG9jaywKJiM0MzsgKiBzbyB0aGUgYml0IHBvc2l0aW9uIGhhcyB0byBiZSBzaGlmdGVkIHVwLgomIzQzOyAqLwomIzQzOyNpZiBkZWZpbmVkKENPTkZJR182NEJJVCkgJmFtcDsmYW1wOyBkZWZpbmVkKF9fQklHX0VORElBTikKJiM0MzsjZGVmaW5lIFpSQU1fRU5UUllfTE9DS19CSVQgIChaUkFNX0VOVFJZX0xPQ0sgJiM0MzsgMzIpCiYjNDM7I2Vsc2UKJiM0MzsjZGVmaW5lIFpSQU1fRU5UUllfTE9DS19CSVQgIFpSQU1fRU5UUllfTE9DSwomIzQzOyNlbmRpZgomIzQzOwogLyoKICAqIEFsbG9jYXRlZCBmb3IgZWFjaCBkaXNrIHBhZ2UuICBXZSB1c2UgYml0LWxvY2sgKFpSQU1fRU5UUllfTE9DSyBiaXQKICAqIG9mIGZsYWdzKSB0byBzYXZlIG1lbW9yeS4gIFRoZXJlIGNhbiBiZSBwbGVudHkgb2YgZW50cmllcyBhbmQgc3RhbmRhcmQKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjM6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc3MwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDQzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBaUkFNIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQmIzM5O3MgdG91Y2hpbmcgYGRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jYCBhbmQgYGRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSByZW5hbWluZyBgWlJBTV9FTlRSWV9MT0NLYCB0byBgWlJBTV9FTlRSWV9MT0NLX0JJVGAgaW4gdGhlIGBzbG90X3RyeWxvY2tgLCBgc2xvdF9sb2NrYCwgYW5kIGBzbG90X3VubG9ja2AgZnVuY3Rpb25zLiBJdCBsb29rcyBsaWtlIGl0IGRlZmluZXMgYFpSQU1fRU5UUllfTE9DS19CSVRgIGRpZmZlcmVudGx5IGJhc2VkIG9uIHRoZSBzeXN0ZW0mIzM5O3MgZW5kaWFubmVzcyBhbmQgd2hldGhlciBpdCYjMzk7cyA2NC1iaXQuIEFoLCB0aGlzIGlzIGEgYnVnIGZpeCDigJMgdGFyZ2V0aW5nIGEgcHJvYmxlbSB3aXRoIGJpdCBsb2NraW5nIG9uIGJpZy1lbmRpYW4gNjQtYml0IHN5c3RlbXMuCgpCdXQgd2FpdCwgZG9lcyB0aGlzIGNoYW5nZSBhbnl0aGluZyBvbiBsaXR0bGUtZW5kaWFuIG9yIDMyLWJpdCBzeXN0ZW1zPyBObywgaXQgbG9va3MgbGlrZSBgWlJBTV9FTlRSWV9MT0NLX0JJVGAganVzdCBiZWNvbWVzIGBaUkFNX0VOVFJZX0xPQ0tgIGZvciB0aG9zZS4gU28sIHN0cmljdGx5IHNwZWFraW5nLCB0aGUgZnVuY3Rpb25hbCBjaGFuZ2UgaXMgc3BlY2lmaWMgdG8gdGhhdCBuaWNoZSBhcmNoaXRlY3R1cmUuCgpUaGUgYmlnIHF1ZXN0aW9uOiBpcyB0aGlzIHdvcnRoIGZ1enppbmc/IFRoZSBwYXRjaCAqaXMqIGEgYnVnIGZpeCByZWxhdGVkIHRvIHpyYW0mIzM5O3MgbG9ja2luZywgd2hpY2gsIGluIHRoZW9yeSwgbWFrZXMgaXQgYW4gYXR0cmFjdGl2ZSB0YXJnZXQuIFpyYW0gaXRzZWxmIGlzIGtub3duIHRvIGJlIGZ1enphYmxlLiBCdXQgdGhlIHByb21wdCBzYXlzIHNvbWV0aGluZyBhYm91dCBub3QgZnV6emluZyBpZiBpdCYjMzk7cyBqdXN0IGNvbnN0YW50cywgYnV0IHRoaXMgYWN0dWFsbHkgYWx0ZXJzIHRoZSBleGVjdXRpb24gZmxvdywganVzdCBvbiB0aGF0IHNwZWNpZmljIGFyY2hpdGVjdHVyZS4KCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFN5emthbGxlciBzdXBwb3J0cyB4ODZfNjQgKGxpdHRsZS1lbmRpYW4pLCBhcm02NCwgcmlzY3Y2NCwgYW5kIHMzOTB4IChiaWctZW5kaWFuKS4gVGhlIGZpeCBpcyBmb3IgYmlnLWVuZGlhbiA2NC1iaXQsIHNvIGl0ICpjb3VsZCogaW1wYWN0IHMzOTB4LiBUaGlzIG1pZ2h0IGJlIHdvcnRoIGludmVzdGlnYXRpbmcuIFRoZSBwcm9tcHQgc2F5cyB0byByZXR1cm4gZmFsc2UgaWYgaXQgb25seSBjaGFuZ2VzIGNvbnN0YW50cyB0aGF0IGRvbiYjMzk7dCBhbHRlciBleGVjdXRpb24uIEkgZG9uJiMzOTt0IHRoaW5rIGl0IGNoYW5nZXMgZXhlY3V0aW9uIG9uIHRoZSBzdGFuZGFyZCBhcmNoaXRlY3R1cmVzLCBidXQgSSBkbyB0aGluayBpdCBhbHRlcnMgZXhlY3V0aW9uIG9uIHMzOTB4LiBMZXQgbWUgY2hlY2sgdGhlIHNvdXJjZSBmaWxlcy4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIzOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1pSQU1fRU5UUllfTE9DSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svenJhbS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9NzM9c3RhdGljIF9fbXVzdF9jaGVjayBib29sIHNsb3RfdHJ5bG9jayhzdHJ1Y3QgenJhbSAqenJhbSwgdW5zaWduZWQgbG9uZyBpbmRleClcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy03Ni1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjc3Olx0aWYgKCF0ZXN0X2FuZF9zZXRfYml0X2xvY2soWlJBTV9FTlRSWV9MT0NLX0JJVCwgbG9jaykpIHtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTc4LVx0XHRtdXRleF9hY3F1aXJlKFx1MDAyNnpyYW0tXHUwMDNldGFibGVfbG9ja19tYXAsIDAsIDEsIF9SRVRfSVBfKTtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz04Nj1zdGF0aWMgdm9pZCBzbG90X2xvY2soc3RydWN0IHpyYW0gKnpyYW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtOTAtXHRtdXRleF9hY3F1aXJlKFx1MDAyNnpyYW0tXHUwMDNldGFibGVfbG9ja19tYXAsIDAsIDAsIF9SRVRfSVBfKTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjkxOlx0d2FpdF9vbl9iaXRfbG9jayhsb2NrLCBaUkFNX0VOVFJZX0xPQ0tfQklULCBUQVNLX1VOSU5URVJSVVBUSUJMRSk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy05Mi1cdGxvY2tfYWNxdWlyZWQoXHUwMDI2enJhbS1cdTAwM2V0YWJsZV9sb2NrX21hcCwgX1JFVF9JUF8pO1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTk1PXN0YXRpYyB2b2lkIHNsb3RfdW5sb2NrKHN0cnVjdCB6cmFtICp6cmFtLCB1bnNpZ25lZCBsb25nIGluZGV4KVxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTk5LVx0bXV0ZXhfcmVsZWFzZShcdTAwMjZ6cmFtLVx1MDAzZXRhYmxlX2xvY2tfbWFwLCBfUkVUX0lQXyk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoxMDA6XHRjbGVhcl9hbmRfd2FrZV91cF9iaXQoWlJBTV9FTlRSWV9MT0NLX0JJVCwgbG9jayk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xMDEtfVxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oPTQ2PWVudW0genJhbV9wYWdlZmxhZ3Mge1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmgtNDctXHRaUkFNX1NBTUUgPSBaUkFNX0ZMQUdfU0hJRlQsXHQvKiBQYWdlIGNvbnNpc3RzIHRoZSBzYW1lIGVsZW1lbnQgKi9cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oOjQ4Olx0WlJBTV9FTlRSWV9MT0NLLCAvKiBlbnRyeSBhY2Nlc3MgbG9jayBiaXQgKi9cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oLTQ5LVx0WlJBTV9XQixcdC8qIHBhZ2UgaXMgc3RvcmVkIG9uIGJhY2tpbmdfZGV2aWNlICovXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmgtNjMtICogZmxhZ3MgYW5kIGFjX3RpbWUgYWxpYXMgdGhhdCB3b3JkIGFzIHR3byB1MzJzLiAgVGhlIGxvY2sgYml0IG11c3RcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oOjY0OiAqIGxhbmQgaW4gdGhlIHNsb3QgdGhhdCBaUkFNX0VOVFJZX0xPQ0sgcmVzZXJ2ZXMgaW4gYXR0ci5mbGFnczsgb25cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oLTY1LSAqIDY0LWJpdCBiaWctZW5kaWFuIHRoZSBmbGFncyB3b3JkIG1hcHMgdG8gdGhlIHVwcGVyIGhhbGYgb2YgX19sb2NrLFxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oLTY4LSNpZiBkZWZpbmVkKENPTkZJR182NEJJVCkgXHUwMDI2XHUwMDI2IGRlZmluZWQoX19CSUdfRU5ESUFOKVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2Lmg6Njk6I2RlZmluZSBaUkFNX0VOVFJZX0xPQ0tfQklUICAoWlJBTV9FTlRSWV9MT0NLICYjNDM7IDMyKVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmgtNzAtI2Vsc2VcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oOjcxOiNkZWZpbmUgWlJBTV9FTlRSWV9MT0NLX0JJVCAgWlJBTV9FTlRSWV9MT0NLXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuaC03Mi0jZW5kaWZcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuaC03NC0vKlxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2Lmg6NzU6ICogQWxsb2NhdGVkIGZvciBlYWNoIGRpc2sgcGFnZS4gIFdlIHVzZSBiaXQtbG9jayAoWlJBTV9FTlRSWV9MT0NLIGJpdFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmgtNzYtICogb2YgZmxhZ3MpIHRvIHNhdmUgbWVtb3J5LiAgVGhlcmUgY2FuIGJlIHBsZW50eSBvZiBlbnRyaWVzIGFuZCBzdGFuZGFyZFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIzOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2MzEKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUaGlzIFpSQU0gUGF0Y2ggLSBBIFdvcnRoeSBFbmRlYXZvcioqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGFkZHJlc3NlcyBhIGxvY2tpbmcgYnVnIHdpdGhpbiB6cmFtLCBzcGVjaWZpY2FsbHkgb24gNjQtYml0IGJpZy1lbmRpYW4gc3lzdGVtcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7V29ydGggZnV6emluZz8mIzM0OyBHaXZlbiB0aGUgc2NvcGUgb2YgdGhlIGNoYW5nZSwgd2hpY2ggaW52b2x2ZXMgdGhlIGNvcmUgenJhbSBsb2dpYyDigJMgdGhlIGxvY2tpbmcgbWVjaGFuaXNtIGl0c2VsZiDigJMgdGhlIGFuc3dlciBpcyBhIHJlc291bmRpbmcgJiMzNDtZZXMuJiMzNDsgVGhpcyBpcyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4KCk5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGNvbmZpcm0gaWYgenJhbSBpcyBldmVuIGZ1enphYmxlLiBMdWNraWx5LCBpdCBwcmVzZW50cyBhcyBhIGJsb2NrIGRldmljZSwgYWNjZXNzaWJsZSB0aHJvdWdoIGAvZGV2L3pyYW0wYC4gUGVyZmVjdCEgV2UgY2FuIGxldmVyYWdlIHN0YW5kYXJkIGJsb2NrIGRldmljZSBmdXp6aW5nIHRlY2huaXF1ZXMuCgpIb3dldmVyLCBhIHF1aWNrIHJldmlldyBvZiB0aGUgaW5zdHJ1Y3Rpb25zIHN0b3BzIG1lLiBUaGUgcHJvbXB0IHN0YXRlcyB0aGF0IGlmIHRoZSBwYXRjaCAqb25seSogaW52b2x2ZXMgY2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkb24mIzM5O3QgYWx0ZXIgZnVuY3Rpb25hbCBleGVjdXRpb24sIHRoZSBhbnN3ZXIgaXMgJiMzNDtXb3J0aEZ1enppbmc9ZmFsc2UmIzM0Oy4gT24gbGl0dGxlLWVuZGlhbiBhcmNoaXRlY3R1cmVzIGxpa2UgeDg2XzY0LCB0aGlzIHBhdGNoIGxpa2VseSAqd291bGRuJiMzOTt0KiBjaGFuZ2UgdGhlIGV4ZWN1dGlvbiBmbG93LiBIb3dldmVyLCB0aGUgY2F0Y2ggaXMgdGhlIGJpZy1lbmRpYW4gc3lzdGVtcy4gU2luY2UgdGhpcyBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBsb2NraW5nIG1lY2hhbmlzbSwgaXQgZG9lcyBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cgb24gYSBiaWctZW5kaWFuIGFyY2hpdGVjdHVyZS4KClRoZSBnb29kIG5ld3MgaXMgdGhhdCBTeXprYWxsZXIgKmRvZXMqIHN1cHBvcnQgczM5MHgsIHdoaWNoIGlzIGEgYmlnLWVuZGlhbiBhcmNoaXRlY3R1cmUuIFRoZXJlZm9yZSwgZ2l2ZW4gdGhlIHBsYXRmb3JtIHN1cHBvcnQgYW5kIHRoZSBtb2RpZmljYXRpb24gdG8gY29yZSBsb2dpYywgdGhpcyBwYXRjaCAqaXMqIHdvcnRoIGZ1enppbmcuIFRoZSBuZXh0IHN0ZXAgaXMgdG8gZmluZCB0aGUgcmVsZXZhbnQgenJhbSBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIzOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBaUkFNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjI6Y29uZmlnIFpSQU1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtDb21wcmVzc2VkIFJBTSBibG9jayBkZXZpY2Ugc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTE2LVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MTc6Y29uZmlnIFpSQU1fQkFDS0VORF9MWjRcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTE4LVx0Ym9vbCBcJiMzNDtsejQgY29tcHJlc3Npb24gc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTIyLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MjM6Y29uZmlnIFpSQU1fQkFDS0VORF9MWjRIQ1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMjQtXHRib29sIFwmIzM0O2x6NGhjIGNvbXByZXNzaW9uIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0yOC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjI5OmNvbmZpZyBaUkFNX0JBQ0tFTkRfWlNURFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMzAtXHRib29sIFwmIzM0O3pzdGQgY29tcHJlc3Npb24gc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTM0LVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MzU6Y29uZmlnIFpSQU1fQkFDS0VORF9ERUZMQVRFXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0zNi1cdGJvb2wgXCYjMzQ7ZGVmbGF0ZSBjb21wcmVzc2lvbiBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNDAtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo0MTpjb25maWcgWlJBTV9CQUNLRU5EXzg0MlxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNDItXHRib29sIFwmIzM0Ozg0MiBjb21wcmVzc2lvbiBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNDYtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo0Nzpjb25maWcgWlJBTV9CQUNLRU5EX0ZPUkNFX0xaT1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNDgtXHRkZXBlbmRzIG9uIFpSQU1cbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy01Mi1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjUzOmNvbmZpZyBaUkFNX0JBQ0tFTkRfTFpPXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy01NC1cdGJvb2wgXCYjMzQ7bHpvIGFuZCBsem8tcmxlIGNvbXByZXNzaW9uIHN1cHBvcnRcJiMzNDsgaWYgIVpSQU1fQkFDS0VORF9GT1JDRV9MWk9cbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz02MD1jaG9pY2Vcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy02NC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjY1OmNvbmZpZyBaUkFNX0RFRl9DT01QX0xaT1JMRVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNjYtXHRib29sIFwmIzM0O2x6by1ybGVcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy02OC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjY5OmNvbmZpZyBaUkFNX0RFRl9DT01QX0xaT1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzAtXHRib29sIFwmIzM0O2x6b1wmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTcyLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NzM6Y29uZmlnIFpSQU1fREVGX0NPTVBfTFo0XG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy03NC1cdGJvb2wgXCYjMzQ7bHo0XCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzYtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo3Nzpjb25maWcgWlJBTV9ERUZfQ09NUF9MWjRIQ1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzgtXHRib29sIFwmIzM0O2x6NGhjXCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODAtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo4MTpjb25maWcgWlJBTV9ERUZfQ09NUF9aU1REXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy04Mi1cdGJvb2wgXCYjMzQ7enN0ZFwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTg0LVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6ODU6Y29uZmlnIFpSQU1fREVGX0NPTVBfREVGTEFURVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODYtXHRib29sIFwmIzM0O2RlZmxhdGVcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy04OC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjg5OmNvbmZpZyBaUkFNX0RFRl9DT01QXzg0MlxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctOTAtXHRib29sIFwmIzM0Ozg0MlwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnPTkzPWVuZGNob2ljZVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctOTQtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo5NTpjb25maWcgWlJBTV9ERUZfQ09NUFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctOTYtXHRzdHJpbmdcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMDYtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxMDc6Y29uZmlnIFpSQU1fV1JJVEVCQUNLXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMDgtICAgICAgIGJvb2wgXCYjMzQ7V3JpdGUgYmFjayBpbmNvbXByZXNzaWJsZSBvciBpZGxlIHBhZ2UgdG8gYmFja2luZyBkZXZpY2VcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMjAtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxMjE6Y29uZmlnIFpSQU1fVFJBQ0tfRU5UUllfQUNUSU1FXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMjItXHRib29sIFwmIzM0O1RyYWNrIGFjY2VzcyB0aW1lIG9mIHpyYW0gZW50cmllc1wmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEyOC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjEyOTpjb25maWcgWlJBTV9NRU1PUllfVFJBQ0tJTkdcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEzMC1cdGJvb2wgXCYjMzQ7VHJhY2sgelJhbSBibG9jayBzdGF0dXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMzktXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxNDA6Y29uZmlnIFpSQU1fTVVMVElfQ09NUFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTQxLVx0Ym9vbCBcJiMzNDtFbmFibGUgbXVsdGlwbGUgY29tcHJlc3Npb24gc3RyZWFtc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIzOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0NDkKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczoKCioqWlJBTSBEZXBlbmRlbmN5IENoZWNrKioKCk9rYXksIHRoZSBjb25maWd1cmF0aW9uIEkmIzM5O20gd29ya2luZyB3aXRoIGlzIHNldCB0byBgWlJBTWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O2RvZXMgYFpSQU1gIGhhdmUgYW55IGRlcGVuZGVuY2llcyB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZj8mIzM0Oy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgc2NvcGUgb2Ygd2hhdCBhY3RpdmF0aW5nIG9yIG1vZGlmeWluZyBgWlJBTWAgbWlnaHQgaW52b2x2ZS4gVGhpcyBjb3VsZCBiZSBoYXJkd2FyZSwga2VybmVsIG1vZHVsZXMsIHNwZWNpZmljIGRyaXZlcnMsIG9yIG90aGVyIHN5c3RlbSBzZXR0aW5ncy4gVW5kZXJzdGFuZGluZyB0aGVzZSBkZXBlbmRlbmNpZXMgaXMgY3J1Y2lhbCBmb3IgYSBjbGVhbiBpbXBsZW1lbnRhdGlvbi4gSSBzaG91bGQgcHJvYmFibHkgc3RhcnQgbWFwcGluZyBvdXQgd2hhdCB0aG9zZSBjb3VsZCBiZS4gVGltZSB0byBkaWcgZGVlcGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIzOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDE1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0Y29uZmlnIFpSQU1cbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O0NvbXByZXNzZWQgUkFNIGJsb2NrIGRldmljZSBzdXBwb3J0XCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIEJMT0NLIFx1MDAyNlx1MDAyNiBTWVNGUyBcdTAwMjZcdTAwMjYgTU1VXG4gICA1Olx0XHRzZWxlY3QgWlNNQUxMT0NcbiAgIDY6XHRcdGhlbHBcbiAgIDc6XHRcdCAgQ3JlYXRlcyB2aXJ0dWFsIGJsb2NrIGRldmljZXMgY2FsbGVkIC9kZXYvenJhbVggKFggPSAwLCAxLCAuLi4pLlxuICAgODpcdFx0ICBQYWdlcyB3cml0dGVuIHRvIHRoZXNlIGRpc2tzIGFyZSBjb21wcmVzc2VkIGFuZCBzdG9yZWQgaW4gbWVtb3J5XG4gICA5Olx0XHQgIGl0c2VsZi4gVGhlc2UgZGlza3MgYWxsb3cgdmVyeSBmYXN0IEkvTyBhbmQgY29tcHJlc3Npb24gcHJvdmlkZXNcbiAgMTA6XHRcdCAgZ29vZCBhbW91bnRzIG9mIG1lbW9yeSBzYXZpbmdzLlxuICAxMTpcdFxuICAxMjpcdFx0ICBJdCBoYXMgc2V2ZXJhbCB1c2UgY2FzZXMsIGZvciBleGFtcGxlOiAvdG1wIHN0b3JhZ2UsIHVzZSBhcyBzd2FwXG4gIDEzOlx0XHQgIGRpc2tzIGFuZCBtYXliZSBtYW55IG1vcmUuXG4gIDE0Olx0XG4gIDE1Olx0XHQgIFNlZSBEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2Jsb2NrZGV2L3pyYW0ucnN0IGZvciBtb3JlIGluZm9ybWF0aW9uLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIzOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY4NTgKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqTXkgVGhpbmtpbmcgb24gWlJBTSBhbmQgS2VybmVsIE1vZGlmaWNhdGlvbnMqKgoKUmlnaHQsIHNvIHRoaXMga2VybmVsLWxldmVsIG9wdGltaXphdGlvbiBoaW5nZXMgb24gYSBmZXcgY29yZSBjb21wb25lbnRzOiBgQkxPQ0tgLCBgU1lTRlNgLCBhbmQgdGhlIGBNTVVgLiBCYXNlZCBvbiB0aGF0LCBhbmQgY29uc2lkZXJpbmcgdGhlIHByb2JsZW0gZG9tYWluLCBpdCBsb29rcyBsaWtlIGBaU01BTExPQ2AgaXMgdGhlIHByZWZlcnJlZCBhbGxvY2F0b3IuIElmIHRoYXQmIzM5O3MgdGhlIGNhc2UsIHRoZW4gYFpSQU1gIGl0c2VsZiBzaG91bGQgYmUgc3VmZmljaWVudCBmb3IgdGhlIHJlcXVpcmVkIGZ1bmN0aW9uYWxpdHkuIFNlZW1zIGxpa2UgYSBkZWNlbnQgc3RhcnRpbmcgcG9pbnQuCgpOb3csIGxldCYjMzk7cyBwaW5wb2ludCB0aGUgY3J1eCBvZiB0aGlzIG1vZGlmaWNhdGlvbi4gSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggSSYjMzk7bSBleGFtaW5pbmcgaXMgZm9jdXNlZCBvbiB0aGVzZSBgc2xvdF90cnlsb2NrYCwgYHNsb3RfbG9ja2AsIGFuZCBgc2xvdF91bmxvY2tgIGZ1bmN0aW9ucy4gQW5kIHRoZXkmIzM5O3JlICpzdGF0aWMqLCB3aGljaCBpcyBpbXBvcnRhbnQgY29udGV4dC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkLiBLbm93aW5nIHRoZSBjYWxsIHNpdGVzIHdpbGwgYmUga2V5IHRvIGdyYXNwaW5nIHRoZSBmdWxsIGltcGFjdCBvZiB0aGVzZSBjaGFuZ2VzLiBJJiMzOTtsbCBmb2N1cyBvbiB3aGVyZSB0aG9zZSBhcmUgaW52b2tlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjM6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2xvdF9sb2NrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9NzM9c3RhdGljIF9fbXVzdF9jaGVjayBib29sIHNsb3RfdHJ5bG9jayhzdHJ1Y3QgenJhbSAqenJhbSwgdW5zaWduZWQgbG9uZyBpbmRleClcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy04NS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjg2OnN0YXRpYyB2b2lkIHNsb3RfbG9jayhzdHJ1Y3QgenJhbSAqenJhbSwgdW5zaWduZWQgbG9uZyBpbmRleClcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTg3LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0yNTU9c3RhdGljIHZvaWQgcmVsZWFzZV9wcF9zbG90KHN0cnVjdCB6cmFtICp6cmFtLCBzdHJ1Y3QgenJhbV9wcF9zbG90ICpwcHMpXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjU4LVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MjU5Olx0c2xvdF9sb2NrKHpyYW0sIHBwcy1cdTAwM2VpbmRleCk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yNjAtXHRjbGVhcl9zbG90X2ZsYWcoenJhbSwgcHBzLVx1MDAzZWluZGV4LCBaUkFNX1BQX1NMT1QpO1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTQxOD1zdGF0aWMgdm9pZCBtYXJrX2lkbGUoc3RydWN0IHpyYW0gKnpyYW0sIGt0aW1lX3QgY3V0b2ZmKVxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTQzMS1cdFx0ICovXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzo0MzI6XHRcdHNsb3RfbG9jayh6cmFtLCBpbmRleCk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy00MzMtXHRcdGlmICghc2xvdF9hbGxvY2F0ZWQoenJhbSwgaW5kZXgpIHx8XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9OTEzPXN0YXRpYyBpbnQgenJhbV93cml0ZWJhY2tfY29tcGxldGUoc3RydWN0IHpyYW0gKnpyYW0sIHN0cnVjdCB6cmFtX3diX3JlcSAqcmVxKVxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTkyOS1cdGF0b21pYzY0X2luYyhcdTAwMjZ6cmFtLVx1MDAzZXN0YXRzLmJkX3dyaXRlcyk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzo5MzA6XHRzbG90X2xvY2soenJhbSwgaW5kZXgpO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtOTMxLVx0Lypcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xMDI5PXN0YXRpYyBpbnQgenJhbV93cml0ZWJhY2tfc2xvdHMoc3RydWN0IHpyYW0gKnpyYW0sXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTA3NC1cdFx0aW5kZXggPSBwcHMtXHUwMDNlaW5kZXg7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoxMDc1Olx0XHRzbG90X2xvY2soenJhbSwgaW5kZXgpO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTA3Ni1cdFx0Lypcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xMTk5PXN0YXRpYyB2b2lkIHNjYW5fc2xvdHNfZm9yX3dyaXRlYmFjayhzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIG1vZGUsXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTIwNy1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjEyMDg6XHRcdHNsb3RfbG9jayh6cmFtLCBpbmRleCk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xMjA5LVx0XHRpZiAoIXNsb3RfYWxsb2NhdGVkKHpyYW0sIGluZGV4KSlcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xMzQxPXN0YXRpYyBpbnQgZGVjb21wcmVzc19iZGV2X3BhZ2Uoc3RydWN0IHpyYW0gKnpyYW0sIHN0cnVjdCBwYWdlICpwYWdlLFxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTEzNDgtXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoxMzQ5Olx0c2xvdF9sb2NrKHpyYW0sIGluZGV4KTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTEzNTAtXHQvKiBTaW5jZSBzbG90IHdhcyB1bmxvY2tlZCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSBpdCYjMzk7cyBzdGlsbCBaUkFNX1dCICovXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MTU0NT1zdGF0aWMgc3NpemVfdCByZWFkX2Jsb2NrX3N0YXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqYnVmLFxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE1NjgtXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoxNTY5Olx0XHRzbG90X2xvY2soenJhbSwgaW5kZXgpO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTU3MC1cdFx0aWYgKCFzbG90X2FsbG9jYXRlZCh6cmFtLCBpbmRleCkpXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MjE3ND1zdGF0aWMgaW50IHpyYW1fcmVhZF9wYWdlKHN0cnVjdCB6cmFtICp6cmFtLCBzdHJ1Y3QgcGFnZSAqcGFnZSxcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yMTc4LVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MjE3OTpcdHNsb3RfbG9jayh6cmFtLCBpbmRleCk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yMTgwLVx0aWYgKCF0ZXN0X3Nsb3RfZmxhZyh6cmFtLCBpbmRleCwgWlJBTV9XQikpIHtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0yMjI5PXN0YXRpYyBpbnQgd3JpdGVfc2FtZV9maWxsZWRfcGFnZShzdHJ1Y3QgenJhbSAqenJhbSwgdW5zaWduZWQgbG9uZyBmaWxsLFxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTIyMzEte1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MjIzMjpcdHNsb3RfbG9jayh6cmFtLCBpbmRleCk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yMjMzLVx0c2xvdF9mcmVlKHpyYW0sIGluZGV4KTtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0yMjQ0PXN0YXRpYyBpbnQgd3JpdGVfaW5jb21wcmVzc2libGVfcGFnZShzdHJ1Y3QgenJhbSAqenJhbSwgc3RydWN0IHBhZ2UgKnBhZ2UsXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjI2OS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjIyNzA6XHRzbG90X2xvY2soenJhbSwgaW5kZXgpO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjI3MS1cdHNsb3RfZnJlZSh6cmFtLCBpbmRleCk7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MjI4NT1zdGF0aWMgaW50IHpyYW1fd3JpdGVfcGFnZShzdHJ1Y3QgenJhbSAqenJhbSwgc3RydWN0IHBhZ2UgKnBhZ2UsXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjMzNS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjIzMzY6XHRzbG90X2xvY2soenJhbSwgaW5kZXgpO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjMzNy1cdHNsb3RfZnJlZSh6cmFtLCBpbmRleCk7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MjM5ND1zdGF0aWMgdm9pZCBzY2FuX3Nsb3RzX2Zvcl9yZWNvbXByZXNzKHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgbW9kZSwgdTMyIHByaW8sXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjQwMi1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI0MDM6XHRcdHNsb3RfbG9jayh6cmFtLCBpbmRleCk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yNDA0LVx0XHRpZiAoIXNsb3RfYWxsb2NhdGVkKHpyYW0sIGluZGV4KSlcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0yNTQ2PXN0YXRpYyBzc2l6ZV90IHJlY29tcHJlc3Nfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI2NjMtXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoyNjY0Olx0XHRzbG90X2xvY2soenJhbSwgcHBzLVx1MDAzZWluZGV4KTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI2NjUtXHRcdGlmICghdGVzdF9zbG90X2ZsYWcoenJhbSwgcHBzLVx1MDAzZWluZGV4LCBaUkFNX1BQX1NMT1QpKVxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTI2OTA9c3RhdGljIHZvaWQgenJhbV9iaW9fZGlzY2FyZChzdHJ1Y3QgenJhbSAqenJhbSwgc3RydWN0IGJpbyAqYmlvKVxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI3MTUtXHR3aGlsZSAobiBcdTAwM2U9IFBBR0VfU0laRSkge1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MjcxNjpcdFx0c2xvdF9sb2NrKHpyYW0sIGluZGV4KTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI3MTctXHRcdHNsb3RfZnJlZSh6cmFtLCBpbmRleCk7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MjcyOD1zdGF0aWMgdm9pZCB6cmFtX2Jpb19yZWFkKHN0cnVjdCB6cmFtICp6cmFtLCBzdHJ1Y3QgYmlvICpiaW8pXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjc0Ny1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI3NDg6XHRcdHNsb3RfbG9jayh6cmFtLCBpbmRleCk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yNzQ5LVx0XHRtYXJrX3Nsb3RfYWNjZXNzZWQoenJhbSwgaW5kZXgpO1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTI3NTk9c3RhdGljIHZvaWQgenJhbV9iaW9fd3JpdGUoc3RydWN0IHpyYW0gKnpyYW0sIHN0cnVjdCBiaW8gKmJpbylcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yNzc3LVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjc3ODpcdFx0c2xvdF9sb2NrKHpyYW0sIGluZGV4KTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI3NzktXHRcdG1hcmtfc2xvdF9hY2Nlc3NlZCh6cmFtLCBpbmRleCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIzOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkzNzAKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFpSQU0gQ29uY3VycmVuY3kqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBaUkFNIGNvZGUgYW5kIGltbWVkaWF0ZWx5IEkgc2VlIGBzbG90X2xvY2tgIGJlaW5nIHVzZWQgYWNyb3NzIGEgYnVuY2ggb2Yga2V5IGZ1bmN0aW9uczogYHpyYW1fcmVhZF9wYWdlYCwgYHpyYW1fd3JpdGVfcGFnZWAsIGB6cmFtX2Jpb19kaXNjYXJkYCwgYHpyYW1fYmlvX3JlYWRgLCBgenJhbV9iaW9fd3JpdGVgLCBgenJhbV93cml0ZWJhY2tfc2xvdHNgLCBgcmVjb21wcmVzc19zdG9yZWAsIGFuZCBgcmVhZF9ibG9ja19zdGF0ZWAuIFRoYXQmIzM5O3MgYSBwcmV0dHkgYnJvYWQgc2NvcGUgZm9yIGEgc2luZ2xlIGxvY2ssIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCYjMzk7cyBiZWluZyB1c2VkIGFuZCBpZiB0aGVyZSBhcmUgYW55IHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBjb250ZW50aW9uIGlzc3Vlcy4KClJpZ2h0IG5vdywgSSYjMzk7bSBnb2luZyB0byB6ZXJvIGluIG9uIGB6cmFtX3JlYWRfcGFnZWAsIGB6cmFtX3dyaXRlX3BhZ2VgLCBgenJhbV9iaW9fZGlzY2FyZGAsIGB6cmFtX2Jpb19yZWFkYCwgYW5kIGB6cmFtX2Jpb193cml0ZWAsIGFzIHRob3NlIHNlZW0gbGlrZSB0aGUgY29yZSBJL08gb3BlcmF0aW9ucy4gSG9sZCBvbiBhIHNlY29uZC4uLiBhcmUgYHpyYW1fYmlvX3JlYWRgIGFuZCBgenJhbV9iaW9fd3JpdGVgIHN0YXRpYz8gWWVwLCB0aGV5IGFyZS4gVGhhdCBtZWFucyB0aGV5JiMzOTtyZSBub3QgZW50cnkgcG9pbnRzIGZyb20gb3V0c2lkZSB0aGlzIG1vZHVsZS4gT2theSwgdGhhdCYjMzk7cyBhbiBpbXBvcnRhbnQgcGllY2Ugb2YgaW5mb3JtYXRpb24uIEkgbmVlZCB0byBub3cgZm9jdXMgb24gdGhlIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzIHNvIEkgY2FuIHVuZGVyc3RhbmQgaG93IHRoZXNlIGZ1bmN0aW9ucyBhcmUgYmVpbmcgaW52b2tlZC4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSB0aG9zZSBmdW5jdGlvbiBjYWxscyBhbmQgc2VlIHdoZXJlIHRoZSBsb2NraW5nIG9jY3Vycy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjM6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7enJhbV9iaW9fcmVhZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTI2OTA9c3RhdGljIHZvaWQgenJhbV9iaW9fZGlzY2FyZChzdHJ1Y3QgenJhbSAqenJhbSwgc3RydWN0IGJpbyAqYmlvKVxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI3MjctXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoyNzI4OnN0YXRpYyB2b2lkIHpyYW1fYmlvX3JlYWQoc3RydWN0IHpyYW0gKnpyYW0sIHN0cnVjdCBiaW8gKmJpbylcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI3Mjkte1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTI3OTI9c3RhdGljIHZvaWQgenJhbV9zdWJtaXRfYmlvKHN0cnVjdCBiaW8gKmJpbylcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yNzk3LVx0Y2FzZSBSRVFfT1BfUkVBRDpcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI3OTg6XHRcdHpyYW1fYmlvX3JlYWQoenJhbSwgYmlvKTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI3OTktXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMzo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDExMgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgdGhvdWdoIEkgd2VyZSBjb25zaWRlcmluZyBpdCBteXNlbGYsIHdpdGggYSBmb2N1cyBvbiBhIHVzZXIgd2hvJiMzOTtzIGFuIGV4cGVydDoKCioqVW5kZXJzdGFuZGluZyBgenJhbV9zdWJtaXRfYmlvYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBgenJhbV9zdWJtaXRfYmlvYCwgd2hpY2gsIGFzIHRoZSBuYW1lIHN1Z2dlc3RzLCBpcyB0aGUgYHN1Ym1pdF9iaW9gIGZ1bmN0aW9uIHdpdGhpbiB0aGUgenJhbSBibG9jayBkZXZpY2UgZHJpdmVyLiBTdHJhaWdodGZvcndhcmQgZW5vdWdoLCBidXQgbGV0JiMzOTtzIGJlIGFic29sdXRlbHkgY2xlYXI6IHRoaXMgaXMgdGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciAqaGFuZGluZyBvZmYqIHRoZSBJL08gcmVxdWVzdCB0byB0aGUgenJhbSBsYXllciBmcm9tIHRoZSBibG9jayBsYXllci4gTWVhbmluZywgaXQmIzM5O3Mgd2hlcmUgdGhlIGRhdGEgZW50ZXJzIHRoZSB6cmFtIGRvbWFpbiwgYW5kIHdoZXJlIGFsbCB0aGUgbWFnaWMgb2YgY29tcHJlc3Npb24sIGFuZCBwb3RlbnRpYWxseSBzd2FwcGluZywgYmVnaW5zLiBUaGlzIGlzIG5vdCB0aGUgJiMzNDtzdGFydCYjMzQ7IG9mIHRoZSBzdWJtaXNzaW9uIG9mIHRoZSBibG9jayBvcGVyYXRpb24sIHRoZSBiaW8gY291bGQgaGF2ZSBhbHJlYWR5IGJlZW4gc3RhcnRlZCwgd2hpY2ggbWVhbnMgdGhpcyBvcGVyYXRpb24gd2lsbCBoYXZlIHRvIHRha2UgcGxhY2Ugb24gdG9wLiBXZSBhbHJlYWR5IGtub3cgdGhlIGRhdGEgaXMgYSBCSU8gb3BlcmF0aW9uLiBJIG5lZWQgdG8gYmUgYXdhcmUgb2YgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGZ1bmN0aW9uIGNhbGwgaW4gdGhlIG92ZXJhbGwgSS9PIHBhdGguIFRoaXMgZnVuY3Rpb24sIGlmIG5vdCBjYXJlZnVsbHkgd3JpdHRlbiwgY291bGQgY3JlYXRlIGEgYm90dGxlbmVjayBhbmQgaW1wYWN0IHBlcmZvcm1hbmNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMzo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt6cmFtX3N1Ym1pdF9iaW8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0yNzU5PXN0YXRpYyB2b2lkIHpyYW1fYmlvX3dyaXRlKHN0cnVjdCB6cmFtICp6cmFtLCBzdHJ1Y3QgYmlvICpiaW8pXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjc5MS0gKi9cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI3OTI6c3RhdGljIHZvaWQgenJhbV9zdWJtaXRfYmlvKHN0cnVjdCBiaW8gKmJpbylcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI3OTMte1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTI5ODM9c3RhdGljIGNvbnN0IHN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyB6cmFtX2Rldm9wcyA9IHtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI5ODQtXHQub3BlbiA9IHpyYW1fb3BlbixcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI5ODU6XHQuc3VibWl0X2JpbyA9IHpyYW1fc3VibWl0X2JpbyxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI5ODYtXHQuc3dhcF9zbG90X2ZyZWVfbm90aWZ5ID0genJhbV9zbG90X2ZyZWVfbm90aWZ5LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMzo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDY3NQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHNpdHVhdGlvbiwgZmlsdGVyZWQgdGhyb3VnaCBteSBleHBlcnQgbGVuczoKCioqWnJhbSBCbG9jayBEZXZpY2UgQ29udGV4dCoqCgpBbHJpZ2h0LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCB0aGUgY29yZSBmdW5jdGlvbnMgYW5kIG1lY2hhbmlzbXMgb2YgdGhlIHpyYW0gYmxvY2sgZGV2aWNlIGRyaXZlci4gVGhlIHByaW1hcnkgc3VibWl0IGZ1bmN0aW9uLCBgenJhbV9zdWJtaXRfYmlvYCwgaXMgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCwgc28gdG8gc3BlYWsuIFRoaXMgaXMgdGhlIGhlYXJ0IG9mIEkvTyBoYW5kbGluZyDigJMgdGhlIGNyaXRpY2FsIHBhdGguCgpCZXlvbmQgdGhhdCBjb3JlIGZ1bmN0aW9uLCBJIHNlZSB0aGUgdHlwaWNhbCBkZXZpY2UgbGlmZWN5Y2xlIGZ1bmN0aW9ucyByZXByZXNlbnRlZDogYHpyYW1fb3BlbmAsIGB6cmFtX3Nsb3RfZnJlZV9ub3RpZnlgIGFuZCBgenJhbV9yZWxlYXNlYCAuIGB6cmFtX29wZW5gIG9idmlvdXNseSBoYW5kbGVzIGRldmljZSBpbml0aWFsaXphdGlvbiwgd2hpbGUgYHpyYW1fcmVsZWFzZWAgZGVhbHMgd2l0aCBkZWNvbnN0cnVjdGlvbiBhbmQgcmVzb3VyY2UgY2xlYW51cC4gYHpyYW1fc2xvdF9mcmVlX25vdGlmeWAgbGlrZWx5IHJlbGF0ZXMgdG8gbWVtb3J5IG1hbmFnZW1lbnQgd2l0aGluIHRoZSBjb21wcmVzc2VkIGJsb2NrIHN0b3JhZ2Ug4oCTIGEgbm90aWZpY2F0aW9uIHRyaWdnZXJlZCB3aGVuIGEgY29tcHJlc3Npb24gc2xvdCBpcyBmcmVlZC4gQW5kIGZpbmFsbHksIHRoZSBwcmVzZW5jZSBvZiBzeXNmcyBhdHRyaWJ1dGVzIGluZGljYXRlcyB1c2VyLXNwYWNlIGNvbnRyb2wgYW5kIG1vbml0b3JpbmcgaG9va3MsIHdoaWNoIGlzIGVzc2VudGlhbCBmb3IgYW55IG1vZGVybiBkcml2ZXIgdG8gYmUgdXNlZnVsIGFuZCBjb25maWd1cmFibGUuIEkmIzM5O2xsIG5lZWQgdG8gZHJpbGwgZG93biB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hhdCBhdHRyaWJ1dGVzIGFyZSBleHBvc2VkLCBidXQgdGhlIGV4aXN0ZW5jZSBpcyBhcyBleHBlY3RlZC4gVGhpcyBzdWdnZXN0cyBhIHdlbGwtZGVzaWduZWQgZHJpdmVyIHRoYXQgYWxsb3dzIGZvciBydW50aW1lIHR3ZWFraW5nIGFuZCBwZXJmb3JtYW5jZSBtb25pdG9yaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMzo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyZWNvbXByZXNzX3N0b3JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MjQzOT1zdGF0aWMgaW50IHJlY29tcHJlc3Nfc2xvdChzdHJ1Y3QgenJhbSAqenJhbSwgdW5zaWduZWQgbG9uZyBpbmRleCxcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yNTQ1LVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MjU0NjpzdGF0aWMgc3NpemVfdCByZWNvbXByZXNzX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI1NDctXHRcdFx0XHRzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjM6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTExNDgKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHN5c2ZzIEF0dHJpYnV0ZXMqKgoKQWxyaWdodCwgdGhlIG9iamVjdGl2ZSBpcyBwcmV0dHkgY2xlYXI6IEkgbmVlZCB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzIGJ5IGRpZ2dpbmcgaW50byB0aGUgc3lzZnMgYXR0cmlidXRlcy4gSSBpbW1lZGlhdGVseSBuZWVkIHRvIHplcm8gaW4gb24gd2hhdCBkYXRhIGlzIGF2YWlsYWJsZS4gVGhpcyBpc24mIzM5O3QgYSAmIzM0O2xldCYjMzk7cyBzdGFydCBwb2tpbmcgYXJvdW5kIHJhbmRvbWx5JiMzNDsgc2NlbmFyaW87IEkgbmVlZCB0byBiZSBzdHJhdGVnaWMuIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGxpa2VseSBjYW5kaWRhdGVzLCB0aGUga2VybmVsIG1vZHVsZXMgb3IgZGV2aWNlIGRyaXZlcnMgdGhhdCBhcmUgcmVsZXZhbnQgdG8gdGhpcyBpc3N1ZS4gTGV0IG1lIHN0YXJ0IGJ5IHRoaW5raW5nIGFib3V0IHRoZSBkZXZpY2Ugb3IgZmVhdHVyZSB0aGlzIHJlbGF0ZXMgdG8uIE9uY2UgSSBoYXZlIHRoZSBzeXN0ZW0gY29tcG9uZW50IEkgYW0gaW50ZXJlc3RlZCBpbiwgc3lzZnMgZ2l2ZXMgeW91IGEgd2luZG93IGludG8gdGhlIGlubmVyIHdvcmtpbmdzIG9mIHRoZSBrZXJuZWwuIFdoYXQmIzM5O3MgZXhwb3NlZCBhbmQgYXZhaWxhYmxlLiBUaGUgZ29hbCwgYXMgYWx3YXlzLCBpcyB0byBwaW5wb2ludCB0aGUgcmVsZXZhbnQgYXR0cmlidXRlcyB0aGF0IHJldmVhbCB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb24gb3Igc3RhdHVzIGluZm9ybWF0aW9uIEkmIzM5O20gYWZ0ZXIuIEl0JiMzOTtzIHRpbWUgdG8gZ2V0IGEgYml0IG1vcmUgZm9jdXNlZCBhbmQgbWV0aG9kaWNhbC4gSSBoYXZlIGEgZmVlbGluZyB0aGUgaW5mb3JtYXRpb24gaXMgZ29pbmcgdG8gYmUgd2l0aGluIHN5c2ZzIC0gdGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gbG9vay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjM6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7REVWSUNFX0FUVFJfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9Mjk4Mz1zdGF0aWMgY29uc3Qgc3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRpb25zIHpyYW1fZGV2b3BzID0ge1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI5ODktXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoyOTkwOnN0YXRpYyBERVZJQ0VfQVRUUl9STyhpb19zdGF0KTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI5OTE6c3RhdGljIERFVklDRV9BVFRSX1JPKG1tX3N0YXQpO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjk5MjpzdGF0aWMgREVWSUNFX0FUVFJfUk8oZGVidWdfc3RhdCk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoyOTkzOnN0YXRpYyBERVZJQ0VfQVRUUl9XTyhjb21wYWN0KTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI5OTQ6c3RhdGljIERFVklDRV9BVFRSX1JXKGRpc2tzaXplKTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI5OTU6c3RhdGljIERFVklDRV9BVFRSX1JPKGluaXRzdGF0ZSk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoyOTk2OnN0YXRpYyBERVZJQ0VfQVRUUl9XTyhyZXNldCk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoyOTk3OnN0YXRpYyBERVZJQ0VfQVRUUl9XTyhtZW1fbGltaXQpO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjk5ODpzdGF0aWMgREVWSUNFX0FUVFJfV08obWVtX3VzZWRfbWF4KTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI5OTk6c3RhdGljIERFVklDRV9BVFRSX1dPKGlkbGUpO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzAwMDpzdGF0aWMgREVWSUNFX0FUVFJfUlcoY29tcF9hbGdvcml0aG0pO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzAwMS0jaWZkZWYgQ09ORklHX1pSQU1fV1JJVEVCQUNLXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMDAyOnN0YXRpYyBERVZJQ0VfQVRUUl9STyhiZF9zdGF0KTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjMwMDM6c3RhdGljIERFVklDRV9BVFRSX1JXKGJhY2tpbmdfZGV2KTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjMwMDQ6c3RhdGljIERFVklDRV9BVFRSX1dPKHdyaXRlYmFjayk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMDA1OnN0YXRpYyBERVZJQ0VfQVRUUl9SVyh3cml0ZWJhY2tfbGltaXQpO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzAwNjpzdGF0aWMgREVWSUNFX0FUVFJfUlcod3JpdGViYWNrX2xpbWl0X2VuYWJsZSk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMDA3OnN0YXRpYyBERVZJQ0VfQVRUUl9SVyh3cml0ZWJhY2tfYmF0Y2hfc2l6ZSk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMDA4OnN0YXRpYyBERVZJQ0VfQVRUUl9SVyhjb21wcmVzc2VkX3dyaXRlYmFjayk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0zMDA5LSNlbmRpZlxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzAxMC0jaWZkZWYgQ09ORklHX1pSQU1fTVVMVElfQ09NUFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzAxMTpzdGF0aWMgREVWSUNFX0FUVFJfUlcocmVjb21wX2FsZ29yaXRobSk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMDEyOnN0YXRpYyBERVZJQ0VfQVRUUl9XTyhyZWNvbXByZXNzKTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTMwMTMtI2VuZGlmXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMDE0OnN0YXRpYyBERVZJQ0VfQVRUUl9XTyhhbGdvcml0aG1fcGFyYW1zKTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTMwMTUtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIzOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMjUyCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBaUkFNJiMzOTtzIEFQSSBFeHBvc3VyZSBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRoZSB6cmFtIGRldmljZSBpcyBleHBvc2VkLCBzcGVjaWZpY2FsbHkgd2l0aCBhbiBleWUgdG93YXJkcyBmdXp6aW5nIHdpdGggc29tZXRoaW5nIGxpa2UgU3l6a2FsbGVyLiBJIHNlZSB0aGUgc3lzZnMgZnVuY3Rpb25zIGFyZSBuYW1lZCBsaWtlIGBkaXNrc2l6ZV9zdG9yZWAsIGByZXNldF9zdG9yZWAsIGFuZCBzbyBvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBsaXN0IGB6cmFtX3N1Ym1pdF9iaW9gLCBhbG9uZyB3aXRoIHRoZXNlIHN5c2ZzIGVudHJpZXMgdG8gZm9jdXMgb24sIGJ1dCB0aGVuIEkgcmVtZW1iZXIgdGhhdCBgenJhbV9zdWJtaXRfYmlvYCBpcyBhY3R1YWxseSBtYXJrZWQgYXMgKnN0YXRpYyouIEhtbSwgdGhhdCBjb3VsZCBiZSBhIHByb2JsZW0sIHNpbmNlIHRoZSBwcm9tcHQgSSYjMzk7bSB3b3JraW5nIGZyb20gc3VnZ2VzdHMgcHJlZmVycmluZyBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMuIExldCBtZSBzZWUuLi5pdCYjMzk7cyBwYXJ0IG9mIGB6cmFtX2Rldm9wc2AsIHRoYXQmIzM5O3MgaG93IGl0JiMzOTtzIGxpbmtlZCB1cCB0byB0aGUgYmxvY2sgZGV2aWNlIG9wZXJhdGlvbnMuCgpTeXprYWxsZXIgY2FuIGZ1enogYmxvY2sgZGV2aWNlcywgc28gSSAqa25vdyogaXQgd2lsbCBoaXQgYHpyYW1fc3VibWl0X2Jpb2AgdGhyb3VnaCB0aGUgbm9ybWFsIGBzdWJtaXRfYmlvYCBwYXRoLiBCdXQgdGhlIGZhY3QgdGhhdCBpdCYjMzk7cyAqc3RhdGljKiBnaXZlcyBtZSBwYXVzZS4gSXQgbWlnaHQgYmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIsIG9yIGF0IHRoZSB2ZXJ5IGxlYXN0IGhhdmUgbm8gY2xlYXJseSBkZWZpbmVkIHN5bWJvbCBhZGRyZXNzIHdoaWNoIG1ha2VzIGZ1enppbmcgaGFyZGVyLiBXYWl0LCBpdCBpcyAqYXNzaWduZWQgdG8gYSBmdW5jdGlvbiBwb2ludGVyKiwgc28gbm8gaXQgY2FuJiMzOTt0IGJlIGlubGluZWQhIE9rYXksIHNvIEkgc2hvdWxkIGJlIGFibGUgdG8gZ2V0IGEgc3ltYm9sIGFkZHJlc3MgZm9yIGl0LCBldmVuIGlmIGl0JiMzOTtzIHN0YXRpYy4KCkJ1dCwgYmFjayB0byB0aGUgbGFyZ2VyIHByb2JsZW0g4oCTIHRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IGVtcGhhc2l6ZXMgKm5vbi1zdGF0aWMqIGVudHJ5IHBvaW50cy4gT2theSwgYnV0IGFsbCB0aGUgc3lzZnMgZnVuY3Rpb25zLCBsaWtlIGBkaXNrc2l6ZV9zdG9yZWAsIHNlZW0gdG8gYmUgKnN0YXRpYyogYXMgd2VsbCEgVGhleSYjMzk7cmUgYXNzaWduZWQgdG8gYERFVklDRV9BVFRSYCBzdHJ1Y3R1cmVzLCBzbyBJIG5lZWQgdG8gY2hlY2sgaWYgdGhvc2UgYXNzaWdubWVudHMgYWxzbyBpbnZvbHZlIHRoZSBzdGF0aWMga2V5d29yZC4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIGRlZmluaXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMzo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkaXNrc2l6ZV9zdG9yZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTI4NTk9c3RhdGljIHZvaWQgenJhbV9yZXNldF9kZXZpY2Uoc3RydWN0IHpyYW0gKnpyYW0pXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjg3NS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI4NzY6c3RhdGljIHNzaXplX3QgZGlza3NpemVfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI4NzctXHRcdFx0ICAgICAgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgbGVuKVxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTMxMzM9c3RhdGljIGludCB6cmFtX3JlbW92ZShzdHJ1Y3QgenJhbSAqenJhbSlcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0zMTY5LVx0LypcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjMxNzA6XHQgKiBkaXNrc2l6ZV9zdG9yZSgpIG1heSBiZSBjYWxsZWQgaW4gYmV0d2VlbiB6cmFtX3Jlc2V0X2RldmljZSgpXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0zMTcxLVx0ICogYW5kIGRlbF9nZW5kaXNrKCksIHNvIHJ1biB0aGUgbGFzdCByZXNldCB0byBhdm9pZCBsZWFraW5nXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMTcyOlx0ICogYW55dGhpbmcgYWxsb2NhdGVkIHdpdGggZGlza3NpemVfc3RvcmUoKVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzE3My1cdCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMzo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzI0NwoJCQkJCQkJb3V0cHV0OiA3MAoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlLiBIZXJlJiMzOTtzIG15IHN1bW1hcnksIHRha2luZyB0aGUgcGVyc3BlY3RpdmUgeW91IHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyB0aGUgWnJhbSBEcml2ZXIqKgoKQWxyaWdodCwgc28gdGhlIHN0cnVjdHVyZXMgYXJlIHN0YXRpYywgd2hpY2ggbWFrZXMgc2Vuc2U7IHRoZXkgYWN0IGFzIHRoZSBpbml0aWFsIGhvb2tzIGludG8gdGhlIHN5c2ZzIGludGVyZmFjZS4gVGhhdCYjMzk7cyB0aGUgZmlyc3QgdGhpbmcgSSBleHBlY3QuIE5vdywgbXkgbmV4dCBtb3ZlIGlzIHRvIGRpdmUgZGVlcGVyIGludG8gYHpyYW1fZHJ2LmNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0LCBpZiBhbnl0aGluZywgaXMgZHluYW1pY2FsbHkgaGFuZGxlZCB3aXRoaW4gdGhlIGRyaXZlciBpdHNlbGYuIE15IGludHVpdGlvbiB0ZWxscyBtZSB0aGF0IHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUga2VybmVsIGludGVyYWN0aW9uIHByb2JhYmx5IGxpZXMgaW4gYW55IGZ1bmN0aW9ucyB3aXRoaW4gdGhhdCBmaWxlIHRoYXQgYXJlbiYjMzk7dCBkZWZpbmVkIGFzIHN0YXRpYy4gTGV0JiMzOTtzIHNlZSBpZiB3ZSBjYW4gZmluZCBzb21lIGNsdWVzIHRoZXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZHluYW1pc20gYmVoaW5kIHRoaXMgYWJzdHJhY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIzOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bYS16QS1aX11bYS16QS1aMC05X10qIFthLXpBLVpfXVthLXpBLVowLTlfXSpcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0zOS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjQwOnN0YXRpYyBERUZJTkVfSURSKHpyYW1faW5kZXhfaWRyKTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTQxLS8qIGlkciBpbmRleCBtdXN0IGJlIHByb3RlY3RlZCAqL1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6NDI6c3RhdGljIERFRklORV9NVVRFWCh6cmFtX2luZGV4X211dGV4KTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTQzLVxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTI5ODM9c3RhdGljIGNvbnN0IHN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyB6cmFtX2Rldm9wcyA9IHtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yOTg5LVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjk5MDpzdGF0aWMgREVWSUNFX0FUVFJfUk8oaW9fc3RhdCk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoyOTkxOnN0YXRpYyBERVZJQ0VfQVRUUl9STyhtbV9zdGF0KTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI5OTI6c3RhdGljIERFVklDRV9BVFRSX1JPKGRlYnVnX3N0YXQpO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjk5MzpzdGF0aWMgREVWSUNFX0FUVFJfV08oY29tcGFjdCk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoyOTk0OnN0YXRpYyBERVZJQ0VfQVRUUl9SVyhkaXNrc2l6ZSk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoyOTk1OnN0YXRpYyBERVZJQ0VfQVRUUl9STyhpbml0c3RhdGUpO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjk5NjpzdGF0aWMgREVWSUNFX0FUVFJfV08ocmVzZXQpO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjk5NzpzdGF0aWMgREVWSUNFX0FUVFJfV08obWVtX2xpbWl0KTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI5OTg6c3RhdGljIERFVklDRV9BVFRSX1dPKG1lbV91c2VkX21heCk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoyOTk5OnN0YXRpYyBERVZJQ0VfQVRUUl9XTyhpZGxlKTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjMwMDA6c3RhdGljIERFVklDRV9BVFRSX1JXKGNvbXBfYWxnb3JpdGhtKTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTMwMDEtI2lmZGVmIENPTkZJR19aUkFNX1dSSVRFQkFDS1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzAwMjpzdGF0aWMgREVWSUNFX0FUVFJfUk8oYmRfc3RhdCk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMDAzOnN0YXRpYyBERVZJQ0VfQVRUUl9SVyhiYWNraW5nX2Rldik7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMDA0OnN0YXRpYyBERVZJQ0VfQVRUUl9XTyh3cml0ZWJhY2spO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzAwNTpzdGF0aWMgREVWSUNFX0FUVFJfUlcod3JpdGViYWNrX2xpbWl0KTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjMwMDY6c3RhdGljIERFVklDRV9BVFRSX1JXKHdyaXRlYmFja19saW1pdF9lbmFibGUpO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzAwNzpzdGF0aWMgREVWSUNFX0FUVFJfUlcod3JpdGViYWNrX2JhdGNoX3NpemUpO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzAwODpzdGF0aWMgREVWSUNFX0FUVFJfUlcoY29tcHJlc3NlZF93cml0ZWJhY2spO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzAwOS0jZW5kaWZcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTMwMTAtI2lmZGVmIENPTkZJR19aUkFNX01VTFRJX0NPTVBcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjMwMTE6c3RhdGljIERFVklDRV9BVFRSX1JXKHJlY29tcF9hbGdvcml0aG0pO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzAxMjpzdGF0aWMgREVWSUNFX0FUVFJfV08ocmVjb21wcmVzcyk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0zMDEzLSNlbmRpZlxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzAxNDpzdGF0aWMgREVWSUNFX0FUVFJfV08oYWxnb3JpdGhtX3BhcmFtcyk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0zMDE1LVxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTMyMDc9c3RhdGljIHNzaXplX3QgaG90X3JlbW92ZV9zdG9yZShjb25zdCBzdHJ1Y3QgY2xhc3MgKmNsYXNzLFxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTMyMzUtfVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzIzNjpzdGF0aWMgQ0xBU1NfQVRUUl9XTyhob3RfcmVtb3ZlKTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTMyMzctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIzOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NTg0CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogOTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgY29uc2lkZXJpbmcgbXkgZXhwZXJ0aXNlOgoKKipNeSBBcHByb2FjaCB0byBBbmFseXppbmcgWnJhbSYjMzk7cyBFbnRyeSBQb2ludHMqKgoKQWxyaWdodCwgSSBjYW4gZGVmaW5pdGVseSBtYWtlIHNvbWUgaGVhZHdheSBoZXJlLiBJbnN0ZWFkIG9mIGdldHRpbmcgYm9nZ2VkIGRvd24gaW4gdGhlIG1pbnV0aWFlLCBJJiMzOTttIGdvaW5nIHRvIGxldmVyYWdlIG15IHVuZGVyc3RhbmRpbmcgb2Yga2VybmVsIHN0cnVjdHVyZXMgYW5kIHBpbnBvaW50IHRoZSBrZXkgZW50cnkgcG9pbnRzLiBUaGlua2luZyBzdHJhdGVnaWNhbGx5LCBJJiMzOTtsbCB1c2UgdGhvc2UgZnVuY3Rpb25zIOKAkyBgenJhbV9zdWJtaXRfYmlvYCwgYGRpc2tzaXplX3N0b3JlYCwgYHJlc2V0X3N0b3JlYCwgYHJlY29tcHJlc3Nfc3RvcmVgLCBgd3JpdGViYWNrX3N0b3JlYCwgYGlkbGVfc3RvcmVgLCBhbmQgYGNvbXBhY3Rfc3RvcmVgIOKAkyBhcyBteSBmb2N1cyBzeW1ib2xzLiBUaGVzZSBzaG91bGQgcmVwcmVzZW50IHRoZSBwcmltYXJ5IGludGVyZmFjZXMgaW50byB0aGUgenJhbSBzdWJzeXN0ZW0uCgpOb3csIGxldCBtZSBqdXN0IGNvbmZpcm0gdGhhdCBgenJhbV9zdWJtaXRfYmlvYCBpcyBhY3R1YWxseSBkZWZpbmVkIGluIHRoZSBjdXJyZW50IGNvbnRleHQuIFllcCwgdGhlcmUgaXQgaXMhIEdvb2QuIFRoYXQmIzM5O3MgYSBzb2xpZCBzdGFydGluZyBwb2ludC4gTmV4dCwgSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIGlmIGB6cmFtX2luaXRgIGlzIHByZXNlbnQgdG9vLiBXZSBuZWVkIHRvIGJlIHN1cmUgd2hlcmUgaW5pdGlhbGl6YXRpb24gaGFwcGVucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjM6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0zMzEwPXN0YXRpYyB2b2lkIF9fZXhpdCB6cmFtX2V4aXQodm9pZClcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0zMzE0LVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzMxNTptb2R1bGVfaW5pdCh6cmFtX2luaXQpO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzMxNi1tb2R1bGVfZXhpdCh6cmFtX2V4aXQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMzo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTA0MQoJCQkJCQkJb3V0cHV0OiAxNzkKCQkJCQkJCXRob3VnaHRzOiAyNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgWlJBTSBQYXRjaCoqCgpPa2F5LCBzbyB0aGUgZXNzZW50aWFsIGNvbmZpZyBoZXJlIGlzIGBaUkFNYCwgdGhhdCYjMzk7cyB0aGUgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgZWxzZSBpbiB0aGUgZGVwZW5kZW5jaWVzLCBidXQgaXQgbG9va3MgbGlrZSB0aGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIGZvY3VzZWQgYXJvdW5kIHRoYXQuIExvb2tpbmcgZGVlcGVyLCBpdCBtb2RpZmllcyB0aGUgYFpSQU1fRU5UUllfTE9DS19CSVRgIGxvZ2ljLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyB0aGlzIGFzIGEgcG90ZW50aWFsIGJ1ZyBmaXggZm9yIHRob3NlIHRyaWNreSBiaWctZW5kaWFuIDY0LWJpdCBhcmNoaXRlY3R1cmVzIC0gZ29vZCB0byBrbm93LgoKR2l2ZW4gdGhhdCwgSSYjMzk7bSBkZWZpbml0ZWx5IGdvaW5nIHRvIGZsYWcgdGhpcyBhcyBgV29ydGhGdXp6aW5nPXRydWVgLiBNeSBtYWluIGZvY3VzIHN5bWJvbHMgYXJlIGdvaW5nIHRvIGJlIGB6cmFtX3N1Ym1pdF9iaW9gLCBgZGlza3NpemVfc3RvcmVgLCBgcmVzZXRfc3RvcmVgLCBgcmVjb21wcmVzc19zdG9yZWAsIGB3cml0ZWJhY2tfc3RvcmVgLCBgaWRsZV9zdG9yZWAsIGFuZCBgY29tcGFjdF9zdG9yZWAuIEhvd2V2ZXIsIHdhaXQgYSBtaW51dGUuLi4gYHdyaXRlYmFja19zdG9yZWAgcmVsaWVzIG9uIGBDT05GSUdfWlJBTV9XUklURUJBQ0tgLiBBbmQsIEkgYWxzbyBzZWUgdGhhdCBgcmVjb21wcmVzc19zdG9yZWAgaXMgZ3VhcmRlZCBieSBgQ09ORklHX1pSQU1fTVVMVElfQ09NUGAuIFJpZ2h0LCBJIGNhbiYjMzk7dCBvdmVybG9vayB0aG9zZSBkZXBlbmRlbmNpZXMuCgpUaGVyZWZvcmUsIEkgbmVlZCB0byBhZGQgYm90aCBgWlJBTV9XUklURUJBQ0tgIGFuZCBgWlJBTV9NVUxUSV9DT01QYCB0byBgRW5hYmxlQ29uZmlnc2AsIHJpZ2h0IGFsb25nc2lkZSBgWlJBTWAuIExldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IHRob3NlIGFyZSBhY3R1YWxseSBkZWZpbmVkIGluIHRoZSBLY29uZmlnLiBZZXAsIHRoZXkmIzM5O3JlIHRoZXJlLiBKdXN0IHRvIGJlIHRob3JvdWdoLCBJIHNob3VsZCBhbHNvIHF1aWNrbHkgY2hlY2sgYFpSQU1fVFJBQ0tfRU5UUllfQUNUSU1FYCBhbmQgYFpSQU1fTUVNT1JZX1RSQUNLSU5HYCwgYnV0IEkgZG9uJiMzOTt0IHRoaW5rIHRoZXkmIzM5O3JlIHJlbGV2YW50IHRvIHRoaXMgc3BlY2lmaWMgcGF0Y2guCgpTbywgdGhlIGZpbmFsIGxpc3QgZm9yIG15IGNvbmZpZ3VyYXRpb24gd2lsbCBiZSBgWlJBTWAsIGBaUkFNX1dSSVRFQkFDS2AsIGFuZCBgWlJBTV9NVUxUSV9DT01QYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGJhc2UgdG8gc3RhcnQgdGVzdGluZyB0aGlzIHBhdGNoIHRob3JvdWdobHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIzOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtaUkFNJiMzNDssCiAgICAmIzM0O1pSQU1fV1JJVEVCQUNLJiMzNDssCiAgICAmIzM0O1pSQU1fTVVMVElfQ09NUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3pyYW1fc3VibWl0X2JpbyYjMzQ7LAogICAgJiMzNDtkaXNrc2l6ZV9zdG9yZSYjMzQ7LAogICAgJiMzNDtyZXNldF9zdG9yZSYjMzQ7LAogICAgJiMzNDtyZWNvbXByZXNzX3N0b3JlJiMzNDssCiAgICAmIzM0O3dyaXRlYmFja19zdG9yZSYjMzQ7LAogICAgJiMzNDtpZGxlX3N0b3JlJiMzNDssCiAgICAmIzM0O2NvbXBhY3Rfc3RvcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBsb2NraW5nIGJ1ZyBpbiB6cmFtIG9uIDY0LWJpdCBiaWctZW5kaWFuIHN5c3RlbXMgYnkgY29ycmVjdGluZyB0aGUgYml0IHBvc2l0aW9uIHVzZWQgZm9yIFpSQU1fRU5UUllfTE9DSy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIGV4ZWN1dGlvbiBmbG93IG9uIGJpZy1lbmRpYW4gYXJjaGl0ZWN0dXJlcyBsaWtlIHMzOTB4LCB3aGljaCBhcmUgc3VwcG9ydGVkIGJ5IHN5emthbGxlci4gRnV6emluZyB6cmFtIGJsb2NrIGRldmljZSBvcGVyYXRpb25zIGFuZCBzeXNmcyBpbnRlcmZhY2VzIGNhbiBoZWxwIHZlcmlmeSB0aGUgZml4LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtaUkFNJiMzNDssCiAgICAmIzM0O1pSQU1fV1JJVEVCQUNLJiMzNDssCiAgICAmIzM0O1pSQU1fTVVMVElfQ09NUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3pyYW1fc3VibWl0X2JpbyYjMzQ7LAogICAgJiMzNDtkaXNrc2l6ZV9zdG9yZSYjMzQ7LAogICAgJiMzNDtyZXNldF9zdG9yZSYjMzQ7LAogICAgJiMzNDtyZWNvbXByZXNzX3N0b3JlJiMzNDssCiAgICAmIzM0O3dyaXRlYmFja19zdG9yZSYjMzQ7LAogICAgJiMzNDtpZGxlX3N0b3JlJiMzNDssCiAgICAmIzM0O2NvbXBhY3Rfc3RvcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBsb2NraW5nIGJ1ZyBpbiB6cmFtIG9uIDY0LWJpdCBiaWctZW5kaWFuIHN5c3RlbXMgYnkgY29ycmVjdGluZyB0aGUgYml0IHBvc2l0aW9uIHVzZWQgZm9yIFpSQU1fRU5UUllfTE9DSy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIGV4ZWN1dGlvbiBmbG93IG9uIGJpZy1lbmRpYW4gYXJjaGl0ZWN0dXJlcyBsaWtlIHMzOTB4LCB3aGljaCBhcmUgc3VwcG9ydGVkIGJ5IHN5emthbGxlci4gRnV6emluZyB6cmFtIGJsb2NrIGRldmljZSBvcGVyYXRpb25zIGFuZCBzeXNmcyBpbnRlcmZhY2VzIGNhbiBoZWxwIHZlcmlmeSB0aGUgZml4LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMzo1MTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIzOjUxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYml0LWxvY2sgcG9zaXRpb24gaXNzdWUgb24gNjQtYml0IGJpZy1lbmRpYW4gYXJjaGl0ZWN0dXJlcyBpbiB0aGUgenJhbSBkcml2ZXIuIEl0IGVuc3VyZXMgdGhhdCB0aGUgbG9jayBiaXQgbGFuZHMgaW4gdGhlIGNvcnJlY3QgcG9zaXRpb24gd2l0aGluIHRoZSBgX19sb2NrYCB3b3JkLCB3aGljaCBpcyBhbGlhc2VkIGJ5IHR3byBgdTMyYHMuIFRoaXMgaXMgYSBsb2NraW5nIGFuZCBiaXQgbWFuaXB1bGF0aW9uIGZpeCwgbm90IHJlbGF0ZWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnksIGluZm8tbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlIGZpZWxkcy4gU3RhbmRhcmQgdG9vbHMgbGlrZSBLQ1NBTiBvciBMT0NLREVQIGFyZSBiZXR0ZXIgc3VpdGVkIGZvciBsb2NraW5nIGFuZCBjb25jdXJyZW5jeSBpc3N1ZXMsIHdoaWxlIEtNU0FOIGlzIHNwZWNpZmljYWxseSBmb3IgZGV0ZWN0aW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCB3aGljaCBpcyBub3QgcmVsZXZhbnQgaGVyZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMmFjZWI0YWViYzU3ZTMzY2I5OTYyNDhjOTFiNmMwYjRjZGQxYTU5NQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDEwIDIzOjUwOjAwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMgYi9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYwppbmRleCBkMDlmZGNhNDljYmRhLi5hOWIzYmIxZDNiZWYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYwpAQCAtNzQsNyAmIzQzOzc0LDcgQEAgc3RhdGljIF9fbXVzdF9jaGVjayBib29sIHNsb3RfdHJ5bG9jayhzdHJ1Y3QgenJhbSAqenJhbSwgdW5zaWduZWQgbG9uZyBpbmRleCkKIHsKIAl1bnNpZ25lZCBsb25nICpsb2NrID0gJmFtcDt6cmFtLSZndDt0YWJsZVtpbmRleF0uX19sb2NrOwogCi0JaWYgKCF0ZXN0X2FuZF9zZXRfYml0X2xvY2soWlJBTV9FTlRSWV9MT0NLLCBsb2NrKSkgewomIzQzOwlpZiAoIXRlc3RfYW5kX3NldF9iaXRfbG9jayhaUkFNX0VOVFJZX0xPQ0tfQklULCBsb2NrKSkgewogCQltdXRleF9hY3F1aXJlKCZhbXA7enJhbS0mZ3Q7dGFibGVfbG9ja19tYXAsIDAsIDEsIF9SRVRfSVBfKTsKIAkJbG9ja19hY3F1aXJlZCgmYW1wO3pyYW0tJmd0O3RhYmxlX2xvY2tfbWFwLCBfUkVUX0lQXyk7CiAJCXJldHVybiB0cnVlOwpAQCAtODgsNyAmIzQzOzg4LDcgQEAgc3RhdGljIHZvaWQgc2xvdF9sb2NrKHN0cnVjdCB6cmFtICp6cmFtLCB1bnNpZ25lZCBsb25nIGluZGV4KQogCXVuc2lnbmVkIGxvbmcgKmxvY2sgPSAmYW1wO3pyYW0tJmd0O3RhYmxlW2luZGV4XS5fX2xvY2s7CiAKIAltdXRleF9hY3F1aXJlKCZhbXA7enJhbS0mZ3Q7dGFibGVfbG9ja19tYXAsIDAsIDAsIF9SRVRfSVBfKTsKLQl3YWl0X29uX2JpdF9sb2NrKGxvY2ssIFpSQU1fRU5UUllfTE9DSywgVEFTS19VTklOVEVSUlVQVElCTEUpOwomIzQzOwl3YWl0X29uX2JpdF9sb2NrKGxvY2ssIFpSQU1fRU5UUllfTE9DS19CSVQsIFRBU0tfVU5JTlRFUlJVUFRJQkxFKTsKIAlsb2NrX2FjcXVpcmVkKCZhbXA7enJhbS0mZ3Q7dGFibGVfbG9ja19tYXAsIF9SRVRfSVBfKTsKIH0KIApAQCAtOTcsNyAmIzQzOzk3LDcgQEAgc3RhdGljIHZvaWQgc2xvdF91bmxvY2soc3RydWN0IHpyYW0gKnpyYW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpCiAJdW5zaWduZWQgbG9uZyAqbG9jayA9ICZhbXA7enJhbS0mZ3Q7dGFibGVbaW5kZXhdLl9fbG9jazsKIAogCW11dGV4X3JlbGVhc2UoJmFtcDt6cmFtLSZndDt0YWJsZV9sb2NrX21hcCwgX1JFVF9JUF8pOwotCWNsZWFyX2FuZF93YWtlX3VwX2JpdChaUkFNX0VOVFJZX0xPQ0ssIGxvY2spOwomIzQzOwljbGVhcl9hbmRfd2FrZV91cF9iaXQoWlJBTV9FTlRSWV9MT0NLX0JJVCwgbG9jayk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpbml0X2RvbmUoc3RydWN0IHpyYW0gKnpyYW0pCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuaCBiL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oCmluZGV4IDRmZGRjNTgyZjNiODIuLjdhNTVkNzUxNDE3ZTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oCkBAIC0xNSw2ICYjNDM7MTUsNyBAQAogI2lmbmRlZiBfWlJBTV9EUlZfSF8KICNkZWZpbmUgX1pSQU1fRFJWX0hfCiAKJiM0MzsjaW5jbHVkZSAmbHQ7YXNtL2J5dGVvcmRlci5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3J3c2VtLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvenNtYWxsb2MuaCZndDsKIApAQCAtNTcsNiAmIzQzOzU4LDE5IEBAIGVudW0genJhbV9wYWdlZmxhZ3MgewogCV9fTlJfWlJBTV9QQUdFRkxBR1MsCiB9OwogCiYjNDM7LyoKJiM0MzsgKiBUaGUgc2xvdCBsb2NrIGlzIGEgYml0LXdhaXQgbG9jayBvbiB0aGUgd2hvbGUgX19sb2NrIHdvcmQsIHdoaWxlCiYjNDM7ICogZmxhZ3MgYW5kIGFjX3RpbWUgYWxpYXMgdGhhdCB3b3JkIGFzIHR3byB1MzJzLiAgVGhlIGxvY2sgYml0IG11c3QKJiM0MzsgKiBsYW5kIGluIHRoZSBzbG90IHRoYXQgWlJBTV9FTlRSWV9MT0NLIHJlc2VydmVzIGluIGF0dHIuZmxhZ3M7IG9uCiYjNDM7ICogNjQtYml0IGJpZy1lbmRpYW4gdGhlIGZsYWdzIHdvcmQgbWFwcyB0byB0aGUgdXBwZXIgaGFsZiBvZiBfX2xvY2ssCiYjNDM7ICogc28gdGhlIGJpdCBwb3NpdGlvbiBoYXMgdG8gYmUgc2hpZnRlZCB1cC4KJiM0MzsgKi8KJiM0MzsjaWYgZGVmaW5lZChDT05GSUdfNjRCSVQpICZhbXA7JmFtcDsgZGVmaW5lZChfX0JJR19FTkRJQU4pCiYjNDM7I2RlZmluZSBaUkFNX0VOVFJZX0xPQ0tfQklUICAoWlJBTV9FTlRSWV9MT0NLICYjNDM7IDMyKQomIzQzOyNlbHNlCiYjNDM7I2RlZmluZSBaUkFNX0VOVFJZX0xPQ0tfQklUICBaUkFNX0VOVFJZX0xPQ0sKJiM0MzsjZW5kaWYKJiM0MzsKIC8qCiAgKiBBbGxvY2F0ZWQgZm9yIGVhY2ggZGlzayBwYWdlLiAgV2UgdXNlIGJpdC1sb2NrIChaUkFNX0VOVFJZX0xPQ0sgYml0CiAgKiBvZiBmbGFncykgdG8gc2F2ZSBtZW1vcnkuICBUaGVyZSBjYW4gYmUgcGxlbnR5IG9mIGVudHJpZXMgYW5kIHN0YW5kYXJkCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMzo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzcwCgkJCQkJCQlvdXRwdXQ6IDE0NgoJCQkJCQkJdGhvdWdodHM6IDQ1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFpSQU0gUGF0Y2ggZm9yIEtNU0FOIEltcGxpY2F0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgdHdlYWtpbmcgYHpyYW1fZHJ2LmNgIGFuZCBgenJhbV9kcnYuaGAuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgYXBwZWFycyB0byBiZSBhIGJpdC1sb2NrIGNvcnJlY3Rpb24gc3BlY2lmaWNhbGx5IHRhcmdldGVkIGF0IDY0LWJpdCBiaWctZW5kaWFuIGFyY2hpdGVjdHVyZXMuIFRoZXkmIzM5O3JlIGNoYW5naW5nIGBaUkFNX0VOVFJZX0xPQ0tgIHRvIGBaUkFNX0VOVFJZX0xPQ0tfQklUYCBpbiB0aGUgbG9jayBmdW5jdGlvbnMgKGB0ZXN0X2FuZF9zZXRfYml0X2xvY2tgLCBgd2FpdF9vbl9iaXRfbG9ja2AsIGBjbGVhcl9hbmRfd2FrZV91cF9iaXRgKS4gSXQgc2VlbXMgbGlrZSB0aGUgaXNzdWUgaXMgcmVsYXRlZCB0byBob3cgdGhlIGxvY2sgYml0IG1hcHMgd2hlbiBgX19sb2NrYCBpcyBhbiBgdW5zaWduZWQgbG9uZ2AsIGJ1dCB0aGVuIGBmbGFnc2AgYW5kIGBhY190aW1lYCBhbGlhcyB0aGF0IHNhbWUgd29yZCBhcyB0d28gYHUzMmBzLiBUaGUgbmV3IG1hY3JvIGBaUkFNX0VOVFJZX0xPQ0tfQklUYCB0aGVuIGFjY291bnRzIGZvciBhIGJpdCBwb3NpdGlvbiBzaGlmdCBvbiA2NC1iaXQgYmlnLWVuZGlhbiBzeXN0ZW1zLgoKRXNzZW50aWFsbHksIHRoaXMgaXMgYSBsb2NraW5nIGJ1ZyBmaXgsIHB1cmUgYW5kIHNpbXBsZS4gSXQgaXNuJiMzOTt0IHRvdWNoaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGF0IGFsbCwgd2hpY2ggaXMgd2hhdCBLTVNBTiAoS2VybmVsIE1lbW9yeSBTYW5pdGl6ZXIpIGlzIGRlc2lnbmVkIHRvIGRldGVjdC4gS01TQU4gaXMgZ3JlYXQgZm9yIGZpbmRpbmcgdGhvc2UgdHlwZXMgb2YgYnVncywgYnV0IHRoaXMgcGF0Y2ggZG9lc24mIzM5O3QgdHJpZ2dlciBhbnkgY29uY2VybnMgdGhlcmUuCgpLQVNBTiwgTE9DS0RFUCwgb3IgS0NTQU4gbWlnaHQgYmUgcmVsZXZhbnQgZm9yIGRldGVjdGluZyByYWNlIGNvbmRpdGlvbnMgb3Igb3RoZXIgbG9ja2luZyBpc3N1ZXMsIGJ1dCB0aGF0JiMzOTtzIG5vdCB0aGUgcHJpbWFyeSBmb2N1cyBvZiBLTVNBTi4gTXkgZ29hbCBoZXJlIGlzIHRvIGRldGVybWluZSBpZiBLTVNBTiBpcyAqbmVlZGVkKiBmb3IgdGhpcy4KCkxldCBtZSB0YWtlIGEgcXVpY2sgbG9vayBhdCBgenJhbV9kcnYuaGAgdG8gY29uZmlybSB0aGUgY2hhbmdlOgoKYGBgYwovKgogKiBUaGUgc2xvdCBsb2NrIGlzIGEgYml0LXdhaXQgbG9jayBvbiB0aGUgd2hvbGUgX19sb2NrIHdvcmQsIHdoaWxlCiAqIGZsYWdzIGFuZCBhY190aW1lIGFsaWFzIHRoYXQgd29yZCBhcyB0d28gdTMycy4gIFRoZSBsb2NrIGJpdCBtdXN0CiAqIGxhbmQgaW4gdGhlIHNsb3QgdGhhdCBaUkFNX0VOVFJZX0xPQ0sgcmVzZXJ2ZXMgaW4gYXR0ci5mbGFnczsgb24KICogNjQtYml0IGJpZy1lbmRpYW4gdGhlIGZsYWdzIHdvcmQgbWFwcyB0byB0aGUgdXBwZXIgaGFsZiBvZiBfX2xvY2ssCiAqIHNvIHRoZSBiaXQgcG9zaXRpb24gaGFzIHRvIGJlIHNoaWZ0ZWQgdXAuCiAqLwojaWYgZGVmaW5lZChDT05GSUdfNjRCSVQpICZhbXA7JmFtcDsgZGVmaW5lZChfX0JJR19FTkRJQU4pCiNkZWZpbmUgWlJBTV9FTlRSWV9MT0NLX0JJVCAgKFpSQU1fRU5UUllfTE9DSyAmIzQzOyAzMikKI2Vsc2UKI2RlZmluZSBaUkFNX0VOVFJZX0xPQ0tfQklUICBaUkFNX0VOVFJZX0xPQ0sKI2VuZGlmCmBgYAoKWWVhaCwgdGhhdCBqdXN0IGNvbmZpcm1zIHRoZSBiaXQgbWFuaXB1bGF0aW9uIGZvciB0aGUgbG9jayBvbiBiaWctZW5kaWFuIGFyY2hpdGVjdHVyZXMuIEl0JiMzOTtzIGEgY2xlYW4gYml0LXR3aWRkbGluZyBmaXguIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3Vlcy4gVGhlcmVmb3JlLCBgTmVlZHNLTVNBTmAgaXMgZGVmaW5pdGVseSBmYWxzZSBmb3IgdGhpcyBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjM6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBiaXQtbG9jayBwb3NpdGlvbiBpc3N1ZSBvbiA2NC1iaXQgYmlnLWVuZGlhbiBhcmNoaXRlY3R1cmVzIGluIHRoZSB6cmFtIGRyaXZlci4gSXQgZW5zdXJlcyB0aGF0IHRoZSBsb2NrIGJpdCBsYW5kcyBpbiB0aGUgY29ycmVjdCBwb3NpdGlvbiB3aXRoaW4gdGhlIGBfX2xvY2tgIHdvcmQsIHdoaWNoIGlzIGFsaWFzZWQgYnkgdHdvIGB1MzJgcy4gVGhpcyBpcyBhIGxvY2tpbmcgYW5kIGJpdCBtYW5pcHVsYXRpb24gZml4LCBub3QgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSwgaW5mby1sZWFrcywgb3IgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgZmllbGRzLiBTdGFuZGFyZCB0b29scyBsaWtlIEtDU0FOIG9yIExPQ0tERVAgYXJlIGJldHRlciBzdWl0ZWQgZm9yIGxvY2tpbmcgYW5kIGNvbmN1cnJlbmN5IGlzc3Vlcywgd2hpbGUgS01TQU4gaXMgc3BlY2lmaWNhbGx5IGZvciBkZXRlY3RpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIHdoaWNoIGlzIG5vdCByZWxldmFudCBoZXJlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBiaXQtbG9jayBwb3NpdGlvbiBpc3N1ZSBvbiA2NC1iaXQgYmlnLWVuZGlhbiBhcmNoaXRlY3R1cmVzIGluIHRoZSB6cmFtIGRyaXZlci4gSXQgZW5zdXJlcyB0aGF0IHRoZSBsb2NrIGJpdCBsYW5kcyBpbiB0aGUgY29ycmVjdCBwb3NpdGlvbiB3aXRoaW4gdGhlIGBfX2xvY2tgIHdvcmQsIHdoaWNoIGlzIGFsaWFzZWQgYnkgdHdvIGB1MzJgcy4gVGhpcyBpcyBhIGxvY2tpbmcgYW5kIGJpdCBtYW5pcHVsYXRpb24gZml4LCBub3QgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSwgaW5mby1sZWFrcywgb3IgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgZmllbGRzLiBTdGFuZGFyZCB0b29scyBsaWtlIEtDU0FOIG9yIExPQ0tERVAgYXJlIGJldHRlciBzdWl0ZWQgZm9yIGxvY2tpbmcgYW5kIGNvbmN1cnJlbmN5IGlzc3Vlcywgd2hpbGUgS01TQU4gaXMgc3BlY2lmaWNhbGx5IGZvciBkZXRlY3RpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIHdoaWNoIGlzIG5vdCByZWxldmFudCBoZXJlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMzo1MDowMS42MzMwMjMzOTNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTc3MzY1NjgzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJaUkFNXCIsXG4gICAgXCJaUkFNX1dSSVRFQkFDS1wiLFxuICAgIFwiWlJBTV9NVUxUSV9DT01QXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwienJhbV9zdWJtaXRfYmlvXCIsXG4gICAgXCJkaXNrc2l6ZV9zdG9yZVwiLFxuICAgIFwicmVzZXRfc3RvcmVcIixcbiAgICBcInJlY29tcHJlc3Nfc3RvcmVcIixcbiAgICBcIndyaXRlYmFja19zdG9yZVwiLFxuICAgIFwiaWRsZV9zdG9yZVwiLFxuICAgIFwiY29tcGFjdF9zdG9yZVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBiaXQtbG9jayBwb3NpdGlvbiBpc3N1ZSBvbiA2NC1iaXQgYmlnLWVuZGlhbiBhcmNoaXRlY3R1cmVzIGluIHRoZSB6cmFtIGRyaXZlci4gSXQgZW5zdXJlcyB0aGF0IHRoZSBsb2NrIGJpdCBsYW5kcyBpbiB0aGUgY29ycmVjdCBwb3NpdGlvbiB3aXRoaW4gdGhlIGBfX2xvY2tgIHdvcmQsIHdoaWNoIGlzIGFsaWFzZWQgYnkgdHdvIGB1MzJgcy4gVGhpcyBpcyBhIGxvY2tpbmcgYW5kIGJpdCBtYW5pcHVsYXRpb24gZml4LCBub3QgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSwgaW5mby1sZWFrcywgb3IgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgZmllbGRzLiBTdGFuZGFyZCB0b29scyBsaWtlIEtDU0FOIG9yIExPQ0tERVAgYXJlIGJldHRlciBzdWl0ZWQgZm9yIGxvY2tpbmcgYW5kIGNvbmN1cnJlbmN5IGlzc3Vlcywgd2hpbGUgS01TQU4gaXMgc3BlY2lmaWNhbGx5IGZvciBkZXRlY3RpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIHdoaWNoIGlzIG5vdCByZWxldmFudCBoZXJlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbG9ja2luZyBidWcgaW4genJhbSBvbiA2NC1iaXQgYmlnLWVuZGlhbiBzeXN0ZW1zIGJ5IGNvcnJlY3RpbmcgdGhlIGJpdCBwb3NpdGlvbiB1c2VkIGZvciBaUkFNX0VOVFJZX0xPQ0suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyBleGVjdXRpb24gZmxvdyBvbiBiaWctZW5kaWFuIGFyY2hpdGVjdHVyZXMgbGlrZSBzMzkweCwgd2hpY2ggYXJlIHN1cHBvcnRlZCBieSBzeXprYWxsZXIuIEZ1enppbmcgenJhbSBibG9jayBkZXZpY2Ugb3BlcmF0aW9ucyBhbmQgc3lzZnMgaW50ZXJmYWNlcyBjYW4gaGVscCB2ZXJpZnkgdGhlIGZpeC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjM6NTA6MDEuNjMzMDI4NDkzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzQyNjMyNTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyYWNlYjRhZWJjNTdlMzNjYjk5NjI0OGM5MWI2YzBiNGNkZDFhNTk1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDEwIDIzOjUwOjAwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jIGIvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmNcXG5pbmRleCBkMDlmZGNhNDljYmRhLi5hOWIzYmIxZDNiZWYzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jXFxuKysrIGIvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmNcXG5AQCAtNzQsNyArNzQsNyBAQCBzdGF0aWMgX19tdXN0X2NoZWNrIGJvb2wgc2xvdF90cnlsb2NrKHN0cnVjdCB6cmFtICp6cmFtLCB1bnNpZ25lZCBsb25nIGluZGV4KVxcbiB7XFxuIFxcdHVuc2lnbmVkIGxvbmcgKmxvY2sgPSBcXHUwMDI2enJhbS1cXHUwMDNldGFibGVbaW5kZXhdLl9fbG9jaztcXG4gXFxuLVxcdGlmICghdGVzdF9hbmRfc2V0X2JpdF9sb2NrKFpSQU1fRU5UUllfTE9DSywgbG9jaykpIHtcXG4rXFx0aWYgKCF0ZXN0X2FuZF9zZXRfYml0X2xvY2soWlJBTV9FTlRSWV9MT0NLX0JJVCwgbG9jaykpIHtcXG4gXFx0XFx0bXV0ZXhfYWNxdWlyZShcXHUwMDI2enJhbS1cXHUwMDNldGFibGVfbG9ja19tYXAsIDAsIDEsIF9SRVRfSVBfKTtcXG4gXFx0XFx0bG9ja19hY3F1aXJlZChcXHUwMDI2enJhbS1cXHUwMDNldGFibGVfbG9ja19tYXAsIF9SRVRfSVBfKTtcXG4gXFx0XFx0cmV0dXJuIHRydWU7XFxuQEAgLTg4LDcgKzg4LDcgQEAgc3RhdGljIHZvaWQgc2xvdF9sb2NrKHN0cnVjdCB6cmFtICp6cmFtLCB1bnNpZ25lZCBsb25nIGluZGV4KVxcbiBcXHR1bnNpZ25lZCBsb25nICpsb2NrID0gXFx1MDAyNnpyYW0tXFx1MDAzZXRhYmxlW2luZGV4XS5fX2xvY2s7XFxuIFxcbiBcXHRtdXRleF9hY3F1aXJlKFxcdTAwMjZ6cmFtLVxcdTAwM2V0YWJsZV9sb2NrX21hcCwgMCwgMCwgX1JFVF9JUF8pO1xcbi1cXHR3YWl0X29uX2JpdF9sb2NrKGxvY2ssIFpSQU1fRU5UUllfTE9DSywgVEFTS19VTklOVEVSUlVQVElCTEUpO1xcbitcXHR3YWl0X29uX2JpdF9sb2NrKGxvY2ssIFpSQU1fRU5UUllfTE9DS19CSVQsIFRBU0tfVU5JTlRFUlJVUFRJQkxFKTtcXG4gXFx0bG9ja19hY3F1aXJlZChcXHUwMDI2enJhbS1cXHUwMDNldGFibGVfbG9ja19tYXAsIF9SRVRfSVBfKTtcXG4gfVxcbiBcXG5AQCAtOTcsNyArOTcsNyBAQCBzdGF0aWMgdm9pZCBzbG90X3VubG9jayhzdHJ1Y3QgenJhbSAqenJhbSwgdW5zaWduZWQgbG9uZyBpbmRleClcXG4gXFx0dW5zaWduZWQgbG9uZyAqbG9jayA9IFxcdTAwMjZ6cmFtLVxcdTAwM2V0YWJsZVtpbmRleF0uX19sb2NrO1xcbiBcXG4gXFx0bXV0ZXhfcmVsZWFzZShcXHUwMDI2enJhbS1cXHUwMDNldGFibGVfbG9ja19tYXAsIF9SRVRfSVBfKTtcXG4tXFx0Y2xlYXJfYW5kX3dha2VfdXBfYml0KFpSQU1fRU5UUllfTE9DSywgbG9jayk7XFxuK1xcdGNsZWFyX2FuZF93YWtlX3VwX2JpdChaUkFNX0VOVFJZX0xPQ0tfQklULCBsb2NrKTtcXG4gfVxcbiBcXG4gc3RhdGljIGlubGluZSBib29sIGluaXRfZG9uZShzdHJ1Y3QgenJhbSAqenJhbSlcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmggYi9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuaFxcbmluZGV4IDRmZGRjNTgyZjNiODIuLjdhNTVkNzUxNDE3ZTIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmhcXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuaFxcbkBAIC0xNSw2ICsxNSw3IEBAXFxuICNpZm5kZWYgX1pSQU1fRFJWX0hfXFxuICNkZWZpbmUgX1pSQU1fRFJWX0hfXFxuIFxcbisjaW5jbHVkZSBcXHUwMDNjYXNtL2J5dGVvcmRlci5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcndzZW0uaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3pzbWFsbG9jLmhcXHUwMDNlXFxuIFxcbkBAIC01Nyw2ICs1OCwxOSBAQCBlbnVtIHpyYW1fcGFnZWZsYWdzIHtcXG4gXFx0X19OUl9aUkFNX1BBR0VGTEFHUyxcXG4gfTtcXG4gXFxuKy8qXFxuKyAqIFRoZSBzbG90IGxvY2sgaXMgYSBiaXQtd2FpdCBsb2NrIG9uIHRoZSB3aG9sZSBfX2xvY2sgd29yZCwgd2hpbGVcXG4rICogZmxhZ3MgYW5kIGFjX3RpbWUgYWxpYXMgdGhhdCB3b3JkIGFzIHR3byB1MzJzLiAgVGhlIGxvY2sgYml0IG11c3RcXG4rICogbGFuZCBpbiB0aGUgc2xvdCB0aGF0IFpSQU1fRU5UUllfTE9DSyByZXNlcnZlcyBpbiBhdHRyLmZsYWdzOyBvblxcbisgKiA2NC1iaXQgYmlnLWVuZGlhbiB0aGUgZmxhZ3Mgd29yZCBtYXBzIHRvIHRoZSB1cHBlciBoYWxmIG9mIF9fbG9jayxcXG4rICogc28gdGhlIGJpdCBwb3NpdGlvbiBoYXMgdG8gYmUgc2hpZnRlZCB1cC5cXG4rICovXFxuKyNpZiBkZWZpbmVkKENPTkZJR182NEJJVCkgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChfX0JJR19FTkRJQU4pXFxuKyNkZWZpbmUgWlJBTV9FTlRSWV9MT0NLX0JJVCAgKFpSQU1fRU5UUllfTE9DSyArIDMyKVxcbisjZWxzZVxcbisjZGVmaW5lIFpSQU1fRU5UUllfTE9DS19CSVQgIFpSQU1fRU5UUllfTE9DS1xcbisjZW5kaWZcXG4rXFxuIC8qXFxuICAqIEFsbG9jYXRlZCBmb3IgZWFjaCBkaXNrIHBhZ2UuICBXZSB1c2UgYml0LWxvY2sgKFpSQU1fRU5UUllfTE9DSyBiaXRcXG4gICogb2YgZmxhZ3MpIHRvIHNhdmUgbWVtb3J5LiAgVGhlcmUgY2FuIGJlIHBsZW50eSBvZiBlbnRyaWVzIGFuZCBzdGFuZGFyZFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMzo1MDowMi4wNjgwMDExOThaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo2MjMzNTQ2MTYzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJaUkFNXCIsXG4gICAgXCJaUkFNX1dSSVRFQkFDS1wiLFxuICAgIFwiWlJBTV9NVUxUSV9DT01QXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwienJhbV9zdWJtaXRfYmlvXCIsXG4gICAgXCJkaXNrc2l6ZV9zdG9yZVwiLFxuICAgIFwicmVzZXRfc3RvcmVcIixcbiAgICBcInJlY29tcHJlc3Nfc3RvcmVcIixcbiAgICBcIndyaXRlYmFja19zdG9yZVwiLFxuICAgIFwiaWRsZV9zdG9yZVwiLFxuICAgIFwiY29tcGFjdF9zdG9yZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbG9ja2luZyBidWcgaW4genJhbSBvbiA2NC1iaXQgYmlnLWVuZGlhbiBzeXN0ZW1zIGJ5IGNvcnJlY3RpbmcgdGhlIGJpdCBwb3NpdGlvbiB1c2VkIGZvciBaUkFNX0VOVFJZX0xPQ0suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyBleGVjdXRpb24gZmxvdyBvbiBiaWctZW5kaWFuIGFyY2hpdGVjdHVyZXMgbGlrZSBzMzkweCwgd2hpY2ggYXJlIHN1cHBvcnRlZCBieSBzeXprYWxsZXIuIEZ1enppbmcgenJhbSBibG9jayBkZXZpY2Ugb3BlcmF0aW9ucyBhbmQgc3lzZnMgaW50ZXJmYWNlcyBjYW4gaGVscCB2ZXJpZnkgdGhlIGZpeC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMmFjZWI0YWViYzU3ZTMzY2I5OTYyNDhjOTFiNmMwYjRjZGQxYTU5NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDEwIDIzOjUwOjAwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMgYi9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuY1xuaW5kZXggZDA5ZmRjYTQ5Y2JkYS4uYTliM2JiMWQzYmVmMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuY1xuQEAgLTc0LDcgKzc0LDcgQEAgc3RhdGljIF9fbXVzdF9jaGVjayBib29sIHNsb3RfdHJ5bG9jayhzdHJ1Y3QgenJhbSAqenJhbSwgdW5zaWduZWQgbG9uZyBpbmRleClcbiB7XG4gXHR1bnNpZ25lZCBsb25nICpsb2NrID0gXHUwMDI2enJhbS1cdTAwM2V0YWJsZVtpbmRleF0uX19sb2NrO1xuIFxuLVx0aWYgKCF0ZXN0X2FuZF9zZXRfYml0X2xvY2soWlJBTV9FTlRSWV9MT0NLLCBsb2NrKSkge1xuK1x0aWYgKCF0ZXN0X2FuZF9zZXRfYml0X2xvY2soWlJBTV9FTlRSWV9MT0NLX0JJVCwgbG9jaykpIHtcbiBcdFx0bXV0ZXhfYWNxdWlyZShcdTAwMjZ6cmFtLVx1MDAzZXRhYmxlX2xvY2tfbWFwLCAwLCAxLCBfUkVUX0lQXyk7XG4gXHRcdGxvY2tfYWNxdWlyZWQoXHUwMDI2enJhbS1cdTAwM2V0YWJsZV9sb2NrX21hcCwgX1JFVF9JUF8pO1xuIFx0XHRyZXR1cm4gdHJ1ZTtcbkBAIC04OCw3ICs4OCw3IEBAIHN0YXRpYyB2b2lkIHNsb3RfbG9jayhzdHJ1Y3QgenJhbSAqenJhbSwgdW5zaWduZWQgbG9uZyBpbmRleClcbiBcdHVuc2lnbmVkIGxvbmcgKmxvY2sgPSBcdTAwMjZ6cmFtLVx1MDAzZXRhYmxlW2luZGV4XS5fX2xvY2s7XG4gXG4gXHRtdXRleF9hY3F1aXJlKFx1MDAyNnpyYW0tXHUwMDNldGFibGVfbG9ja19tYXAsIDAsIDAsIF9SRVRfSVBfKTtcbi1cdHdhaXRfb25fYml0X2xvY2sobG9jaywgWlJBTV9FTlRSWV9MT0NLLCBUQVNLX1VOSU5URVJSVVBUSUJMRSk7XG4rXHR3YWl0X29uX2JpdF9sb2NrKGxvY2ssIFpSQU1fRU5UUllfTE9DS19CSVQsIFRBU0tfVU5JTlRFUlJVUFRJQkxFKTtcbiBcdGxvY2tfYWNxdWlyZWQoXHUwMDI2enJhbS1cdTAwM2V0YWJsZV9sb2NrX21hcCwgX1JFVF9JUF8pO1xuIH1cbiBcbkBAIC05Nyw3ICs5Nyw3IEBAIHN0YXRpYyB2b2lkIHNsb3RfdW5sb2NrKHN0cnVjdCB6cmFtICp6cmFtLCB1bnNpZ25lZCBsb25nIGluZGV4KVxuIFx0dW5zaWduZWQgbG9uZyAqbG9jayA9IFx1MDAyNnpyYW0tXHUwMDNldGFibGVbaW5kZXhdLl9fbG9jaztcbiBcbiBcdG11dGV4X3JlbGVhc2UoXHUwMDI2enJhbS1cdTAwM2V0YWJsZV9sb2NrX21hcCwgX1JFVF9JUF8pO1xuLVx0Y2xlYXJfYW5kX3dha2VfdXBfYml0KFpSQU1fRU5UUllfTE9DSywgbG9jayk7XG4rXHRjbGVhcl9hbmRfd2FrZV91cF9iaXQoWlJBTV9FTlRSWV9MT0NLX0JJVCwgbG9jayk7XG4gfVxuIFxuIHN0YXRpYyBpbmxpbmUgYm9vbCBpbml0X2RvbmUoc3RydWN0IHpyYW0gKnpyYW0pXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmggYi9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuaFxuaW5kZXggNGZkZGM1ODJmM2I4Mi4uN2E1NWQ3NTE0MTdlMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuaFxuQEAgLTE1LDYgKzE1LDcgQEBcbiAjaWZuZGVmIF9aUkFNX0RSVl9IX1xuICNkZWZpbmUgX1pSQU1fRFJWX0hfXG4gXG4rI2luY2x1ZGUgXHUwMDNjYXNtL2J5dGVvcmRlci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcndzZW0uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3pzbWFsbG9jLmhcdTAwM2VcbiBcbkBAIC01Nyw2ICs1OCwxOSBAQCBlbnVtIHpyYW1fcGFnZWZsYWdzIHtcbiBcdF9fTlJfWlJBTV9QQUdFRkxBR1MsXG4gfTtcbiBcbisvKlxuKyAqIFRoZSBzbG90IGxvY2sgaXMgYSBiaXQtd2FpdCBsb2NrIG9uIHRoZSB3aG9sZSBfX2xvY2sgd29yZCwgd2hpbGVcbisgKiBmbGFncyBhbmQgYWNfdGltZSBhbGlhcyB0aGF0IHdvcmQgYXMgdHdvIHUzMnMuICBUaGUgbG9jayBiaXQgbXVzdFxuKyAqIGxhbmQgaW4gdGhlIHNsb3QgdGhhdCBaUkFNX0VOVFJZX0xPQ0sgcmVzZXJ2ZXMgaW4gYXR0ci5mbGFnczsgb25cbisgKiA2NC1iaXQgYmlnLWVuZGlhbiB0aGUgZmxhZ3Mgd29yZCBtYXBzIHRvIHRoZSB1cHBlciBoYWxmIG9mIF9fbG9jayxcbisgKiBzbyB0aGUgYml0IHBvc2l0aW9uIGhhcyB0byBiZSBzaGlmdGVkIHVwLlxuKyAqL1xuKyNpZiBkZWZpbmVkKENPTkZJR182NEJJVCkgXHUwMDI2XHUwMDI2IGRlZmluZWQoX19CSUdfRU5ESUFOKVxuKyNkZWZpbmUgWlJBTV9FTlRSWV9MT0NLX0JJVCAgKFpSQU1fRU5UUllfTE9DSyArIDMyKVxuKyNlbHNlXG4rI2RlZmluZSBaUkFNX0VOVFJZX0xPQ0tfQklUICBaUkFNX0VOVFJZX0xPQ0tcbisjZW5kaWZcbitcbiAvKlxuICAqIEFsbG9jYXRlZCBmb3IgZWFjaCBkaXNrIHBhZ2UuICBXZSB1c2UgYml0LWxvY2sgKFpSQU1fRU5UUllfTE9DSyBiaXRcbiAgKiBvZiBmbGFncykgdG8gc2F2ZSBtZW1vcnkuICBUaGVyZSBjYW4gYmUgcGxlbnR5IG9mIGVudHJpZXMgYW5kIHN0YW5kYXJkXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMzo1MDowMi4wNjgwMDIzNThaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NDcwOTQwOTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFpSQU0gUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQncyB0b3VjaGluZyBgZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmNgIGFuZCBgZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmhgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIHJlbmFtaW5nIGBaUkFNX0VOVFJZX0xPQ0tgIHRvIGBaUkFNX0VOVFJZX0xPQ0tfQklUYCBpbiB0aGUgYHNsb3RfdHJ5bG9ja2AsIGBzbG90X2xvY2tgLCBhbmQgYHNsb3RfdW5sb2NrYCBmdW5jdGlvbnMuIEl0IGxvb2tzIGxpa2UgaXQgZGVmaW5lcyBgWlJBTV9FTlRSWV9MT0NLX0JJVGAgZGlmZmVyZW50bHkgYmFzZWQgb24gdGhlIHN5c3RlbSdzIGVuZGlhbm5lc3MgYW5kIHdoZXRoZXIgaXQncyA2NC1iaXQuIEFoLCB0aGlzIGlzIGEgYnVnIGZpeCDigJMgdGFyZ2V0aW5nIGEgcHJvYmxlbSB3aXRoIGJpdCBsb2NraW5nIG9uIGJpZy1lbmRpYW4gNjQtYml0IHN5c3RlbXMuXG5cbkJ1dCB3YWl0LCBkb2VzIHRoaXMgY2hhbmdlIGFueXRoaW5nIG9uIGxpdHRsZS1lbmRpYW4gb3IgMzItYml0IHN5c3RlbXM/IE5vLCBpdCBsb29rcyBsaWtlIGBaUkFNX0VOVFJZX0xPQ0tfQklUYCBqdXN0IGJlY29tZXMgYFpSQU1fRU5UUllfTE9DS2AgZm9yIHRob3NlLiBTbywgc3RyaWN0bHkgc3BlYWtpbmcsIHRoZSBmdW5jdGlvbmFsIGNoYW5nZSBpcyBzcGVjaWZpYyB0byB0aGF0IG5pY2hlIGFyY2hpdGVjdHVyZS5cblxuVGhlIGJpZyBxdWVzdGlvbjogaXMgdGhpcyB3b3J0aCBmdXp6aW5nPyBUaGUgcGF0Y2ggKmlzKiBhIGJ1ZyBmaXggcmVsYXRlZCB0byB6cmFtJ3MgbG9ja2luZywgd2hpY2gsIGluIHRoZW9yeSwgbWFrZXMgaXQgYW4gYXR0cmFjdGl2ZSB0YXJnZXQuIFpyYW0gaXRzZWxmIGlzIGtub3duIHRvIGJlIGZ1enphYmxlLiBCdXQgdGhlIHByb21wdCBzYXlzIHNvbWV0aGluZyBhYm91dCBub3QgZnV6emluZyBpZiBpdCdzIGp1c3QgY29uc3RhbnRzLCBidXQgdGhpcyBhY3R1YWxseSBhbHRlcnMgdGhlIGV4ZWN1dGlvbiBmbG93LCBqdXN0IG9uIHRoYXQgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlLlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFN5emthbGxlciBzdXBwb3J0cyB4ODZfNjQgKGxpdHRsZS1lbmRpYW4pLCBhcm02NCwgcmlzY3Y2NCwgYW5kIHMzOTB4IChiaWctZW5kaWFuKS4gVGhlIGZpeCBpcyBmb3IgYmlnLWVuZGlhbiA2NC1iaXQsIHNvIGl0ICpjb3VsZCogaW1wYWN0IHMzOTB4LiBUaGlzIG1pZ2h0IGJlIHdvcnRoIGludmVzdGlnYXRpbmcuIFRoZSBwcm9tcHQgc2F5cyB0byByZXR1cm4gZmFsc2UgaWYgaXQgb25seSBjaGFuZ2VzIGNvbnN0YW50cyB0aGF0IGRvbid0IGFsdGVyIGV4ZWN1dGlvbi4gSSBkb24ndCB0aGluayBpdCBjaGFuZ2VzIGV4ZWN1dGlvbiBvbiB0aGUgc3RhbmRhcmQgYXJjaGl0ZWN0dXJlcywgYnV0IEkgZG8gdGhpbmsgaXQgYWx0ZXJzIGV4ZWN1dGlvbiBvbiBzMzkweC4gTGV0IG1lIGNoZWNrIHRoZSBzb3VyY2UgZmlsZXMuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc3MywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzNSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIzOjUwOjA5LjUzODk0NjE0M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODE0MTMyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJaUkFNX0VOVFJZX0xPQ0tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay96cmFtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz03Mz1zdGF0aWMgX19tdXN0X2NoZWNrIGJvb2wgc2xvdF90cnlsb2NrKHN0cnVjdCB6cmFtICp6cmFtLCB1bnNpZ25lZCBsb25nIGluZGV4KVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtNzYtXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Nzc6XFx0aWYgKCF0ZXN0X2FuZF9zZXRfYml0X2xvY2soWlJBTV9FTlRSWV9MT0NLX0JJVCwgbG9jaykpIHtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy03OC1cXHRcXHRtdXRleF9hY3F1aXJlKFxcdTAwMjZ6cmFtLVxcdTAwM2V0YWJsZV9sb2NrX21hcCwgMCwgMSwgX1JFVF9JUF8pO1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9ODY9c3RhdGljIHZvaWQgc2xvdF9sb2NrKHN0cnVjdCB6cmFtICp6cmFtLCB1bnNpZ25lZCBsb25nIGluZGV4KVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtOTAtXFx0bXV0ZXhfYWNxdWlyZShcXHUwMDI2enJhbS1cXHUwMDNldGFibGVfbG9ja19tYXAsIDAsIDAsIF9SRVRfSVBfKTtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzo5MTpcXHR3YWl0X29uX2JpdF9sb2NrKGxvY2ssIFpSQU1fRU5UUllfTE9DS19CSVQsIFRBU0tfVU5JTlRFUlJVUFRJQkxFKTtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy05Mi1cXHRsb2NrX2FjcXVpcmVkKFxcdTAwMjZ6cmFtLVxcdTAwM2V0YWJsZV9sb2NrX21hcCwgX1JFVF9JUF8pO1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9OTU9c3RhdGljIHZvaWQgc2xvdF91bmxvY2soc3RydWN0IHpyYW0gKnpyYW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy05OS1cXHRtdXRleF9yZWxlYXNlKFxcdTAwMjZ6cmFtLVxcdTAwM2V0YWJsZV9sb2NrX21hcCwgX1JFVF9JUF8pO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjEwMDpcXHRjbGVhcl9hbmRfd2FrZV91cF9iaXQoWlJBTV9FTlRSWV9MT0NLX0JJVCwgbG9jayk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTAxLX1cXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oPTQ2PWVudW0genJhbV9wYWdlZmxhZ3Mge1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oLTQ3LVxcdFpSQU1fU0FNRSA9IFpSQU1fRkxBR19TSElGVCxcXHQvKiBQYWdlIGNvbnNpc3RzIHRoZSBzYW1lIGVsZW1lbnQgKi9cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuaDo0ODpcXHRaUkFNX0VOVFJZX0xPQ0ssIC8qIGVudHJ5IGFjY2VzcyBsb2NrIGJpdCAqL1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oLTQ5LVxcdFpSQU1fV0IsXFx0LyogcGFnZSBpcyBzdG9yZWQgb24gYmFja2luZ19kZXZpY2UgKi9cXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oLTYzLSAqIGZsYWdzIGFuZCBhY190aW1lIGFsaWFzIHRoYXQgd29yZCBhcyB0d28gdTMycy4gIFRoZSBsb2NrIGJpdCBtdXN0XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2Lmg6NjQ6ICogbGFuZCBpbiB0aGUgc2xvdCB0aGF0IFpSQU1fRU5UUllfTE9DSyByZXNlcnZlcyBpbiBhdHRyLmZsYWdzOyBvblxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oLTY1LSAqIDY0LWJpdCBiaWctZW5kaWFuIHRoZSBmbGFncyB3b3JkIG1hcHMgdG8gdGhlIHVwcGVyIGhhbGYgb2YgX19sb2NrLFxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmgtNjgtI2lmIGRlZmluZWQoQ09ORklHXzY0QklUKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKF9fQklHX0VORElBTilcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuaDo2OTojZGVmaW5lIFpSQU1fRU5UUllfTE9DS19CSVQgIChaUkFNX0VOVFJZX0xPQ0sgKyAzMilcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuaC03MC0jZWxzZVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oOjcxOiNkZWZpbmUgWlJBTV9FTlRSWV9MT0NLX0JJVCAgWlJBTV9FTlRSWV9MT0NLXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmgtNzItI2VuZGlmXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuaC03NC0vKlxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oOjc1OiAqIEFsbG9jYXRlZCBmb3IgZWFjaCBkaXNrIHBhZ2UuICBXZSB1c2UgYml0LWxvY2sgKFpSQU1fRU5UUllfTE9DSyBiaXRcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuaC03Ni0gKiBvZiBmbGFncykgdG8gc2F2ZSBtZW1vcnkuICBUaGVyZSBjYW4gYmUgcGxlbnR5IG9mIGVudHJpZXMgYW5kIHN0YW5kYXJkXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIzOjUwOjA5LjU4NzA5NDI2OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzODU5MjAwMDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUaGlzIFpSQU0gUGF0Y2ggLSBBIFdvcnRoeSBFbmRlYXZvcioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgbG9ja2luZyBidWcgd2l0aGluIHpyYW0sIHNwZWNpZmljYWxseSBvbiA2NC1iaXQgYmlnLWVuZGlhbiBzeXN0ZW1zLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXb3J0aCBmdXp6aW5nP1wiIEdpdmVuIHRoZSBzY29wZSBvZiB0aGUgY2hhbmdlLCB3aGljaCBpbnZvbHZlcyB0aGUgY29yZSB6cmFtIGxvZ2ljIOKAkyB0aGUgbG9ja2luZyBtZWNoYW5pc20gaXRzZWxmIOKAkyB0aGUgYW5zd2VyIGlzIGEgcmVzb3VuZGluZyBcIlllcy5cIiBUaGlzIGlzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLlxuXG5Ob3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBjb25maXJtIGlmIHpyYW0gaXMgZXZlbiBmdXp6YWJsZS4gTHVja2lseSwgaXQgcHJlc2VudHMgYXMgYSBibG9jayBkZXZpY2UsIGFjY2Vzc2libGUgdGhyb3VnaCBgL2Rldi96cmFtMGAuIFBlcmZlY3QhIFdlIGNhbiBsZXZlcmFnZSBzdGFuZGFyZCBibG9jayBkZXZpY2UgZnV6emluZyB0ZWNobmlxdWVzLlxuXG5Ib3dldmVyLCBhIHF1aWNrIHJldmlldyBvZiB0aGUgaW5zdHJ1Y3Rpb25zIHN0b3BzIG1lLiBUaGUgcHJvbXB0IHN0YXRlcyB0aGF0IGlmIHRoZSBwYXRjaCAqb25seSogaW52b2x2ZXMgY2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkb24ndCBhbHRlciBmdW5jdGlvbmFsIGV4ZWN1dGlvbiwgdGhlIGFuc3dlciBpcyBcIldvcnRoRnV6emluZz1mYWxzZVwiLiBPbiBsaXR0bGUtZW5kaWFuIGFyY2hpdGVjdHVyZXMgbGlrZSB4ODZfNjQsIHRoaXMgcGF0Y2ggbGlrZWx5ICp3b3VsZG4ndCogY2hhbmdlIHRoZSBleGVjdXRpb24gZmxvdy4gSG93ZXZlciwgdGhlIGNhdGNoIGlzIHRoZSBiaWctZW5kaWFuIHN5c3RlbXMuIFNpbmNlIHRoaXMgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgbG9ja2luZyBtZWNoYW5pc20sIGl0IGRvZXMgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93IG9uIGEgYmlnLWVuZGlhbiBhcmNoaXRlY3R1cmUuXG5cblRoZSBnb29kIG5ld3MgaXMgdGhhdCBTeXprYWxsZXIgKmRvZXMqIHN1cHBvcnQgczM5MHgsIHdoaWNoIGlzIGEgYmlnLWVuZGlhbiBhcmNoaXRlY3R1cmUuIFRoZXJlZm9yZSwgZ2l2ZW4gdGhlIHBsYXRmb3JtIHN1cHBvcnQgYW5kIHRoZSBtb2RpZmljYXRpb24gdG8gY29yZSBsb2dpYywgdGhpcyBwYXRjaCAqaXMqIHdvcnRoIGZ1enppbmcuIFRoZSBuZXh0IHN0ZXAgaXMgdG8gZmluZCB0aGUgcmVsZXZhbnQgenJhbSBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjMxLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIzOjUwOjE0Ljk3MzAxNjk2NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzUxNDU5ODIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFpSQU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay96cmFtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoyOmNvbmZpZyBaUkFNXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiQ29tcHJlc3NlZCBSQU0gYmxvY2sgZGV2aWNlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xNi1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxNzpjb25maWcgWlJBTV9CQUNLRU5EX0xaNFxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTE4LVxcdGJvb2wgXFxcImx6NCBjb21wcmVzc2lvbiBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMjItXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MjM6Y29uZmlnIFpSQU1fQkFDS0VORF9MWjRIQ1xcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTI0LVxcdGJvb2wgXFxcImx6NGhjIGNvbXByZXNzaW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0yOC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoyOTpjb25maWcgWlJBTV9CQUNLRU5EX1pTVERcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0zMC1cXHRib29sIFxcXCJ6c3RkIGNvbXByZXNzaW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0zNC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzozNTpjb25maWcgWlJBTV9CQUNLRU5EX0RFRkxBVEVcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0zNi1cXHRib29sIFxcXCJkZWZsYXRlIGNvbXByZXNzaW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy00MC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo0MTpjb25maWcgWlJBTV9CQUNLRU5EXzg0MlxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTQyLVxcdGJvb2wgXFxcIjg0MiBjb21wcmVzc2lvbiBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNDYtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NDc6Y29uZmlnIFpSQU1fQkFDS0VORF9GT1JDRV9MWk9cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy00OC1cXHRkZXBlbmRzIG9uIFpSQU1cXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTUyLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjUzOmNvbmZpZyBaUkFNX0JBQ0tFTkRfTFpPXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNTQtXFx0Ym9vbCBcXFwibHpvIGFuZCBsem8tcmxlIGNvbXByZXNzaW9uIHN1cHBvcnRcXFwiIGlmICFaUkFNX0JBQ0tFTkRfRk9SQ0VfTFpPXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz02MD1jaG9pY2VcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTY0LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjY1OmNvbmZpZyBaUkFNX0RFRl9DT01QX0xaT1JMRVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTY2LVxcdGJvb2wgXFxcImx6by1ybGVcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy02OC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo2OTpjb25maWcgWlJBTV9ERUZfQ09NUF9MWk9cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy03MC1cXHRib29sIFxcXCJsem9cXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy03Mi1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo3Mzpjb25maWcgWlJBTV9ERUZfQ09NUF9MWjRcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy03NC1cXHRib29sIFxcXCJsejRcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy03Ni1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo3Nzpjb25maWcgWlJBTV9ERUZfQ09NUF9MWjRIQ1xcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTc4LVxcdGJvb2wgXFxcImx6NGhjXFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODAtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6ODE6Y29uZmlnIFpSQU1fREVGX0NPTVBfWlNURFxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTgyLVxcdGJvb2wgXFxcInpzdGRcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy04NC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo4NTpjb25maWcgWlJBTV9ERUZfQ09NUF9ERUZMQVRFXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODYtXFx0Ym9vbCBcXFwiZGVmbGF0ZVxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTg4LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjg5OmNvbmZpZyBaUkFNX0RFRl9DT01QXzg0MlxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTkwLVxcdGJvb2wgXFxcIjg0MlxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnPTkzPWVuZGNob2ljZVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTk0LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjk1OmNvbmZpZyBaUkFNX0RFRl9DT01QXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctOTYtXFx0c3RyaW5nXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMDYtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MTA3OmNvbmZpZyBaUkFNX1dSSVRFQkFDS1xcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEwOC0gICAgICAgYm9vbCBcXFwiV3JpdGUgYmFjayBpbmNvbXByZXNzaWJsZSBvciBpZGxlIHBhZ2UgdG8gYmFja2luZyBkZXZpY2VcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMjAtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MTIxOmNvbmZpZyBaUkFNX1RSQUNLX0VOVFJZX0FDVElNRVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEyMi1cXHRib29sIFxcXCJUcmFjayBhY2Nlc3MgdGltZSBvZiB6cmFtIGVudHJpZXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMjgtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MTI5OmNvbmZpZyBaUkFNX01FTU9SWV9UUkFDS0lOR1xcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEzMC1cXHRib29sIFxcXCJUcmFjayB6UmFtIGJsb2NrIHN0YXR1c1xcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEzOS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxNDA6Y29uZmlnIFpSQU1fTVVMVElfQ09NUFxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTE0MS1cXHRib29sIFxcXCJFbmFibGUgbXVsdGlwbGUgY29tcHJlc3Npb24gc3RyZWFtc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjM6NTA6MTUuMzQ4MTY4NDk4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA1MTIyNjg0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgc3RhbmRzOlxuXG4qKlpSQU0gRGVwZW5kZW5jeSBDaGVjayoqXG5cbk9rYXksIHRoZSBjb25maWd1cmF0aW9uIEknbSB3b3JraW5nIHdpdGggaXMgc2V0IHRvIGBaUkFNYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiZG9lcyBgWlJBTWAgaGF2ZSBhbnkgZGVwZW5kZW5jaWVzIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mP1wiLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBzY29wZSBvZiB3aGF0IGFjdGl2YXRpbmcgb3IgbW9kaWZ5aW5nIGBaUkFNYCBtaWdodCBpbnZvbHZlLiBUaGlzIGNvdWxkIGJlIGhhcmR3YXJlLCBrZXJuZWwgbW9kdWxlcywgc3BlY2lmaWMgZHJpdmVycywgb3Igb3RoZXIgc3lzdGVtIHNldHRpbmdzLiBVbmRlcnN0YW5kaW5nIHRoZXNlIGRlcGVuZGVuY2llcyBpcyBjcnVjaWFsIGZvciBhIGNsZWFuIGltcGxlbWVudGF0aW9uLiBJIHNob3VsZCBwcm9iYWJseSBzdGFydCBtYXBwaW5nIG91dCB3aGF0IHRob3NlIGNvdWxkIGJlLiBUaW1lIHRvIGRpZyBkZWVwZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0NDksIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMzo1MDoxOC4zOTkzOTczMzVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzQ0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdGNvbmZpZyBaUkFNXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiQ29tcHJlc3NlZCBSQU0gYmxvY2sgZGV2aWNlIHN1cHBvcnRcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIEJMT0NLIFxcdTAwMjZcXHUwMDI2IFNZU0ZTIFxcdTAwMjZcXHUwMDI2IE1NVVxcbiAgIDU6XFx0XFx0c2VsZWN0IFpTTUFMTE9DXFxuICAgNjpcXHRcXHRoZWxwXFxuICAgNzpcXHRcXHQgIENyZWF0ZXMgdmlydHVhbCBibG9jayBkZXZpY2VzIGNhbGxlZCAvZGV2L3pyYW1YIChYID0gMCwgMSwgLi4uKS5cXG4gICA4OlxcdFxcdCAgUGFnZXMgd3JpdHRlbiB0byB0aGVzZSBkaXNrcyBhcmUgY29tcHJlc3NlZCBhbmQgc3RvcmVkIGluIG1lbW9yeVxcbiAgIDk6XFx0XFx0ICBpdHNlbGYuIFRoZXNlIGRpc2tzIGFsbG93IHZlcnkgZmFzdCBJL08gYW5kIGNvbXByZXNzaW9uIHByb3ZpZGVzXFxuICAxMDpcXHRcXHQgIGdvb2QgYW1vdW50cyBvZiBtZW1vcnkgc2F2aW5ncy5cXG4gIDExOlxcdFxcbiAgMTI6XFx0XFx0ICBJdCBoYXMgc2V2ZXJhbCB1c2UgY2FzZXMsIGZvciBleGFtcGxlOiAvdG1wIHN0b3JhZ2UsIHVzZSBhcyBzd2FwXFxuICAxMzpcXHRcXHQgIGRpc2tzIGFuZCBtYXliZSBtYW55IG1vcmUuXFxuICAxNDpcXHRcXG4gIDE1OlxcdFxcdCAgU2VlIERvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvYmxvY2tkZXYvenJhbS5yc3QgZm9yIG1vcmUgaW5mb3JtYXRpb24uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIzOjUwOjE4LjM5OTQ1NTg2NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2MTUzNjM2NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipNeSBUaGlua2luZyBvbiBaUkFNIGFuZCBLZXJuZWwgTW9kaWZpY2F0aW9ucyoqXG5cblJpZ2h0LCBzbyB0aGlzIGtlcm5lbC1sZXZlbCBvcHRpbWl6YXRpb24gaGluZ2VzIG9uIGEgZmV3IGNvcmUgY29tcG9uZW50czogYEJMT0NLYCwgYFNZU0ZTYCwgYW5kIHRoZSBgTU1VYC4gQmFzZWQgb24gdGhhdCwgYW5kIGNvbnNpZGVyaW5nIHRoZSBwcm9ibGVtIGRvbWFpbiwgaXQgbG9va3MgbGlrZSBgWlNNQUxMT0NgIGlzIHRoZSBwcmVmZXJyZWQgYWxsb2NhdG9yLiBJZiB0aGF0J3MgdGhlIGNhc2UsIHRoZW4gYFpSQU1gIGl0c2VsZiBzaG91bGQgYmUgc3VmZmljaWVudCBmb3IgdGhlIHJlcXVpcmVkIGZ1bmN0aW9uYWxpdHkuIFNlZW1zIGxpa2UgYSBkZWNlbnQgc3RhcnRpbmcgcG9pbnQuXG5cbk5vdywgbGV0J3MgcGlucG9pbnQgdGhlIGNydXggb2YgdGhpcyBtb2RpZmljYXRpb24uIEl0IGxvb2tzIGxpa2UgdGhlIHBhdGNoIEknbSBleGFtaW5pbmcgaXMgZm9jdXNlZCBvbiB0aGVzZSBgc2xvdF90cnlsb2NrYCwgYHNsb3RfbG9ja2AsIGFuZCBgc2xvdF91bmxvY2tgIGZ1bmN0aW9ucy4gQW5kIHRoZXkncmUgKnN0YXRpYyosIHdoaWNoIGlzIGltcG9ydGFudCBjb250ZXh0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGVzZSBmdW5jdGlvbnMgYXJlIHVzZWQuIEtub3dpbmcgdGhlIGNhbGwgc2l0ZXMgd2lsbCBiZSBrZXkgdG8gZ3Jhc3BpbmcgdGhlIGZ1bGwgaW1wYWN0IG9mIHRoZXNlIGNoYW5nZXMuIEknbGwgZm9jdXMgb24gd2hlcmUgdGhvc2UgYXJlIGludm9rZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4NTgsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIzOjUwOjI1LjAxNDgyMjg0N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE0Njk0MTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2xvdF9sb2NrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTczPXN0YXRpYyBfX211c3RfY2hlY2sgYm9vbCBzbG90X3RyeWxvY2soc3RydWN0IHpyYW0gKnpyYW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy04NS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzo4NjpzdGF0aWMgdm9pZCBzbG90X2xvY2soc3RydWN0IHpyYW0gKnpyYW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtODcte1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MjU1PXN0YXRpYyB2b2lkIHJlbGVhc2VfcHBfc2xvdChzdHJ1Y3QgenJhbSAqenJhbSwgc3RydWN0IHpyYW1fcHBfc2xvdCAqcHBzKVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjU4LVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI1OTpcXHRzbG90X2xvY2soenJhbSwgcHBzLVxcdTAwM2VpbmRleCk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjYwLVxcdGNsZWFyX3Nsb3RfZmxhZyh6cmFtLCBwcHMtXFx1MDAzZWluZGV4LCBaUkFNX1BQX1NMT1QpO1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9NDE4PXN0YXRpYyB2b2lkIG1hcmtfaWRsZShzdHJ1Y3QgenJhbSAqenJhbSwga3RpbWVfdCBjdXRvZmYpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy00MzEtXFx0XFx0ICovXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6NDMyOlxcdFxcdHNsb3RfbG9jayh6cmFtLCBpbmRleCk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtNDMzLVxcdFxcdGlmICghc2xvdF9hbGxvY2F0ZWQoenJhbSwgaW5kZXgpIHx8XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz05MTM9c3RhdGljIGludCB6cmFtX3dyaXRlYmFja19jb21wbGV0ZShzdHJ1Y3QgenJhbSAqenJhbSwgc3RydWN0IHpyYW1fd2JfcmVxICpyZXEpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy05MjktXFx0YXRvbWljNjRfaW5jKFxcdTAwMjZ6cmFtLVxcdTAwM2VzdGF0cy5iZF93cml0ZXMpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjkzMDpcXHRzbG90X2xvY2soenJhbSwgaW5kZXgpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTkzMS1cXHQvKlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MTAyOT1zdGF0aWMgaW50IHpyYW1fd3JpdGViYWNrX3Nsb3RzKHN0cnVjdCB6cmFtICp6cmFtLFxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTA3NC1cXHRcXHRpbmRleCA9IHBwcy1cXHUwMDNlaW5kZXg7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTA3NTpcXHRcXHRzbG90X2xvY2soenJhbSwgaW5kZXgpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTEwNzYtXFx0XFx0LypcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTExOTk9c3RhdGljIHZvaWQgc2Nhbl9zbG90c19mb3Jfd3JpdGViYWNrKHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgbW9kZSxcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTEyMDctXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTIwODpcXHRcXHRzbG90X2xvY2soenJhbSwgaW5kZXgpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTEyMDktXFx0XFx0aWYgKCFzbG90X2FsbG9jYXRlZCh6cmFtLCBpbmRleCkpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xMzQxPXN0YXRpYyBpbnQgZGVjb21wcmVzc19iZGV2X3BhZ2Uoc3RydWN0IHpyYW0gKnpyYW0sIHN0cnVjdCBwYWdlICpwYWdlLFxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTM0OC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoxMzQ5OlxcdHNsb3RfbG9jayh6cmFtLCBpbmRleCk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTM1MC1cXHQvKiBTaW5jZSBzbG90IHdhcyB1bmxvY2tlZCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSBpdCdzIHN0aWxsIFpSQU1fV0IgKi9cXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTE1NDU9c3RhdGljIHNzaXplX3QgcmVhZF9ibG9ja19zdGF0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKmJ1ZixcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE1NjgtXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTU2OTpcXHRcXHRzbG90X2xvY2soenJhbSwgaW5kZXgpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE1NzAtXFx0XFx0aWYgKCFzbG90X2FsbG9jYXRlZCh6cmFtLCBpbmRleCkpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0yMTc0PXN0YXRpYyBpbnQgenJhbV9yZWFkX3BhZ2Uoc3RydWN0IHpyYW0gKnpyYW0sIHN0cnVjdCBwYWdlICpwYWdlLFxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjE3OC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoyMTc5OlxcdHNsb3RfbG9jayh6cmFtLCBpbmRleCk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjE4MC1cXHRpZiAoIXRlc3Rfc2xvdF9mbGFnKHpyYW0sIGluZGV4LCBaUkFNX1dCKSkge1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MjIyOT1zdGF0aWMgaW50IHdyaXRlX3NhbWVfZmlsbGVkX3BhZ2Uoc3RydWN0IHpyYW0gKnpyYW0sIHVuc2lnbmVkIGxvbmcgZmlsbCxcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTIyMzEte1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjIyMzI6XFx0c2xvdF9sb2NrKHpyYW0sIGluZGV4KTtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yMjMzLVxcdHNsb3RfZnJlZSh6cmFtLCBpbmRleCk7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0yMjQ0PXN0YXRpYyBpbnQgd3JpdGVfaW5jb21wcmVzc2libGVfcGFnZShzdHJ1Y3QgenJhbSAqenJhbSwgc3RydWN0IHBhZ2UgKnBhZ2UsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yMjY5LVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjIyNzA6XFx0c2xvdF9sb2NrKHpyYW0sIGluZGV4KTtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yMjcxLVxcdHNsb3RfZnJlZSh6cmFtLCBpbmRleCk7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0yMjg1PXN0YXRpYyBpbnQgenJhbV93cml0ZV9wYWdlKHN0cnVjdCB6cmFtICp6cmFtLCBzdHJ1Y3QgcGFnZSAqcGFnZSxcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTIzMzUtXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MjMzNjpcXHRzbG90X2xvY2soenJhbSwgaW5kZXgpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTIzMzctXFx0c2xvdF9mcmVlKHpyYW0sIGluZGV4KTtcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTIzOTQ9c3RhdGljIHZvaWQgc2Nhbl9zbG90c19mb3JfcmVjb21wcmVzcyhzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIG1vZGUsIHUzMiBwcmlvLFxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjQwMi1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoyNDAzOlxcdFxcdHNsb3RfbG9jayh6cmFtLCBpbmRleCk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjQwNC1cXHRcXHRpZiAoIXNsb3RfYWxsb2NhdGVkKHpyYW0sIGluZGV4KSlcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTI1NDY9c3RhdGljIHNzaXplX3QgcmVjb21wcmVzc19zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yNjYzLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI2NjQ6XFx0XFx0c2xvdF9sb2NrKHpyYW0sIHBwcy1cXHUwMDNlaW5kZXgpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI2NjUtXFx0XFx0aWYgKCF0ZXN0X3Nsb3RfZmxhZyh6cmFtLCBwcHMtXFx1MDAzZWluZGV4LCBaUkFNX1BQX1NMT1QpKVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MjY5MD1zdGF0aWMgdm9pZCB6cmFtX2Jpb19kaXNjYXJkKHN0cnVjdCB6cmFtICp6cmFtLCBzdHJ1Y3QgYmlvICpiaW8pXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yNzE1LVxcdHdoaWxlIChuIFxcdTAwM2U9IFBBR0VfU0laRSkge1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI3MTY6XFx0XFx0c2xvdF9sb2NrKHpyYW0sIGluZGV4KTtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yNzE3LVxcdFxcdHNsb3RfZnJlZSh6cmFtLCBpbmRleCk7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0yNzI4PXN0YXRpYyB2b2lkIHpyYW1fYmlvX3JlYWQoc3RydWN0IHpyYW0gKnpyYW0sIHN0cnVjdCBiaW8gKmJpbylcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI3NDctXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjc0ODpcXHRcXHRzbG90X2xvY2soenJhbSwgaW5kZXgpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI3NDktXFx0XFx0bWFya19zbG90X2FjY2Vzc2VkKHpyYW0sIGluZGV4KTtcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTI3NTk9c3RhdGljIHZvaWQgenJhbV9iaW9fd3JpdGUoc3RydWN0IHpyYW0gKnpyYW0sIHN0cnVjdCBiaW8gKmJpbylcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI3NzctXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjc3ODpcXHRcXHRzbG90X2xvY2soenJhbSwgaW5kZXgpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI3NzktXFx0XFx0bWFya19zbG90X2FjY2Vzc2VkKHpyYW0sIGluZGV4KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjM6NTA6MjUuMDY2Mjk4NjEyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyNzEwNTQxNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFpSQU0gQ29uY3VycmVuY3kqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgWlJBTSBjb2RlIGFuZCBpbW1lZGlhdGVseSBJIHNlZSBgc2xvdF9sb2NrYCBiZWluZyB1c2VkIGFjcm9zcyBhIGJ1bmNoIG9mIGtleSBmdW5jdGlvbnM6IGB6cmFtX3JlYWRfcGFnZWAsIGB6cmFtX3dyaXRlX3BhZ2VgLCBgenJhbV9iaW9fZGlzY2FyZGAsIGB6cmFtX2Jpb19yZWFkYCwgYHpyYW1fYmlvX3dyaXRlYCwgYHpyYW1fd3JpdGViYWNrX3Nsb3RzYCwgYHJlY29tcHJlc3Nfc3RvcmVgLCBhbmQgYHJlYWRfYmxvY2tfc3RhdGVgLiBUaGF0J3MgYSBwcmV0dHkgYnJvYWQgc2NvcGUgZm9yIGEgc2luZ2xlIGxvY2ssIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCdzIGJlaW5nIHVzZWQgYW5kIGlmIHRoZXJlIGFyZSBhbnkgcG90ZW50aWFsIGJvdHRsZW5lY2tzIG9yIGNvbnRlbnRpb24gaXNzdWVzLlxuXG5SaWdodCBub3csIEknbSBnb2luZyB0byB6ZXJvIGluIG9uIGB6cmFtX3JlYWRfcGFnZWAsIGB6cmFtX3dyaXRlX3BhZ2VgLCBgenJhbV9iaW9fZGlzY2FyZGAsIGB6cmFtX2Jpb19yZWFkYCwgYW5kIGB6cmFtX2Jpb193cml0ZWAsIGFzIHRob3NlIHNlZW0gbGlrZSB0aGUgY29yZSBJL08gb3BlcmF0aW9ucy4gSG9sZCBvbiBhIHNlY29uZC4uLiBhcmUgYHpyYW1fYmlvX3JlYWRgIGFuZCBgenJhbV9iaW9fd3JpdGVgIHN0YXRpYz8gWWVwLCB0aGV5IGFyZS4gVGhhdCBtZWFucyB0aGV5J3JlIG5vdCBlbnRyeSBwb2ludHMgZnJvbSBvdXRzaWRlIHRoaXMgbW9kdWxlLiBPa2F5LCB0aGF0J3MgYW4gaW1wb3J0YW50IHBpZWNlIG9mIGluZm9ybWF0aW9uLiBJIG5lZWQgdG8gbm93IGZvY3VzIG9uIHRoZSBub24tc3RhdGljIGVudHJ5IHBvaW50cyBzbyBJIGNhbiB1bmRlcnN0YW5kIGhvdyB0aGVzZSBmdW5jdGlvbnMgYXJlIGJlaW5nIGludm9rZWQuIEknbGwgbmVlZCB0byB0cmFjZSB0aG9zZSBmdW5jdGlvbiBjYWxscyBhbmQgc2VlIHdoZXJlIHRoZSBsb2NraW5nIG9jY3Vycy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTM3MCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMzo1MDozMC4zMzczNTU4MDJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyNjQ2NTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInpyYW1fYmlvX3JlYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MjY5MD1zdGF0aWMgdm9pZCB6cmFtX2Jpb19kaXNjYXJkKHN0cnVjdCB6cmFtICp6cmFtLCBzdHJ1Y3QgYmlvICpiaW8pXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yNzI3LVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI3Mjg6c3RhdGljIHZvaWQgenJhbV9iaW9fcmVhZChzdHJ1Y3QgenJhbSAqenJhbSwgc3RydWN0IGJpbyAqYmlvKVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI3Mjkte1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9Mjc5Mj1zdGF0aWMgdm9pZCB6cmFtX3N1Ym1pdF9iaW8oc3RydWN0IGJpbyAqYmlvKVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjc5Ny1cXHRjYXNlIFJFUV9PUF9SRUFEOlxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI3OTg6XFx0XFx0enJhbV9iaW9fcmVhZCh6cmFtLCBiaW8pO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI3OTktXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIzOjUwOjMwLjM5MDAwODE1N1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDQ5MTM4ODY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyB0aG91Z2ggSSB3ZXJlIGNvbnNpZGVyaW5nIGl0IG15c2VsZiwgd2l0aCBhIGZvY3VzIG9uIGEgdXNlciB3aG8ncyBhbiBleHBlcnQ6XG5cbioqVW5kZXJzdGFuZGluZyBgenJhbV9zdWJtaXRfYmlvYCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2UncmUgdGFsa2luZyBhYm91dCBgenJhbV9zdWJtaXRfYmlvYCwgd2hpY2gsIGFzIHRoZSBuYW1lIHN1Z2dlc3RzLCBpcyB0aGUgYHN1Ym1pdF9iaW9gIGZ1bmN0aW9uIHdpdGhpbiB0aGUgenJhbSBibG9jayBkZXZpY2UgZHJpdmVyLiBTdHJhaWdodGZvcndhcmQgZW5vdWdoLCBidXQgbGV0J3MgYmUgYWJzb2x1dGVseSBjbGVhcjogdGhpcyBpcyB0aGUgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yICpoYW5kaW5nIG9mZiogdGhlIEkvTyByZXF1ZXN0IHRvIHRoZSB6cmFtIGxheWVyIGZyb20gdGhlIGJsb2NrIGxheWVyLiBNZWFuaW5nLCBpdCdzIHdoZXJlIHRoZSBkYXRhIGVudGVycyB0aGUgenJhbSBkb21haW4sIGFuZCB3aGVyZSBhbGwgdGhlIG1hZ2ljIG9mIGNvbXByZXNzaW9uLCBhbmQgcG90ZW50aWFsbHkgc3dhcHBpbmcsIGJlZ2lucy4gVGhpcyBpcyBub3QgdGhlIFwic3RhcnRcIiBvZiB0aGUgc3VibWlzc2lvbiBvZiB0aGUgYmxvY2sgb3BlcmF0aW9uLCB0aGUgYmlvIGNvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIHN0YXJ0ZWQsIHdoaWNoIG1lYW5zIHRoaXMgb3BlcmF0aW9uIHdpbGwgaGF2ZSB0byB0YWtlIHBsYWNlIG9uIHRvcC4gV2UgYWxyZWFkeSBrbm93IHRoZSBkYXRhIGlzIGEgQklPIG9wZXJhdGlvbi4gSSBuZWVkIHRvIGJlIGF3YXJlIG9mIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBmdW5jdGlvbiBjYWxsIGluIHRoZSBvdmVyYWxsIEkvTyBwYXRoLiBUaGlzIGZ1bmN0aW9uLCBpZiBub3QgY2FyZWZ1bGx5IHdyaXR0ZW4sIGNvdWxkIGNyZWF0ZSBhIGJvdHRsZW5lY2sgYW5kIGltcGFjdCBwZXJmb3JtYW5jZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAxMTIsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMzo1MDozNC40MzkxNTU0MjJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2OTk3Njg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInpyYW1fc3VibWl0X2Jpb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0yNzU5PXN0YXRpYyB2b2lkIHpyYW1fYmlvX3dyaXRlKHN0cnVjdCB6cmFtICp6cmFtLCBzdHJ1Y3QgYmlvICpiaW8pXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yNzkxLSAqL1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI3OTI6c3RhdGljIHZvaWQgenJhbV9zdWJtaXRfYmlvKHN0cnVjdCBiaW8gKmJpbylcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yNzkzLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTI5ODM9c3RhdGljIGNvbnN0IHN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyB6cmFtX2Rldm9wcyA9IHtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yOTg0LVxcdC5vcGVuID0genJhbV9vcGVuLFxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI5ODU6XFx0LnN1Ym1pdF9iaW8gPSB6cmFtX3N1Ym1pdF9iaW8sXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjk4Ni1cXHQuc3dhcF9zbG90X2ZyZWVfbm90aWZ5ID0genJhbV9zbG90X2ZyZWVfbm90aWZ5LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMzo1MDozNC40ODYxNTgyNzdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU0MDU1NDQwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHNpdHVhdGlvbiwgZmlsdGVyZWQgdGhyb3VnaCBteSBleHBlcnQgbGVuczpcblxuKipacmFtIEJsb2NrIERldmljZSBDb250ZXh0KipcblxuQWxyaWdodCwgc28gd2UncmUgbG9va2luZyBhdCB0aGUgY29yZSBmdW5jdGlvbnMgYW5kIG1lY2hhbmlzbXMgb2YgdGhlIHpyYW0gYmxvY2sgZGV2aWNlIGRyaXZlci4gVGhlIHByaW1hcnkgc3VibWl0IGZ1bmN0aW9uLCBgenJhbV9zdWJtaXRfYmlvYCwgaXMgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCwgc28gdG8gc3BlYWsuIFRoaXMgaXMgdGhlIGhlYXJ0IG9mIEkvTyBoYW5kbGluZyDigJMgdGhlIGNyaXRpY2FsIHBhdGguXG5cbkJleW9uZCB0aGF0IGNvcmUgZnVuY3Rpb24sIEkgc2VlIHRoZSB0eXBpY2FsIGRldmljZSBsaWZlY3ljbGUgZnVuY3Rpb25zIHJlcHJlc2VudGVkOiBgenJhbV9vcGVuYCwgYHpyYW1fc2xvdF9mcmVlX25vdGlmeWAgYW5kIGB6cmFtX3JlbGVhc2VgIC4gYHpyYW1fb3BlbmAgb2J2aW91c2x5IGhhbmRsZXMgZGV2aWNlIGluaXRpYWxpemF0aW9uLCB3aGlsZSBgenJhbV9yZWxlYXNlYCBkZWFscyB3aXRoIGRlY29uc3RydWN0aW9uIGFuZCByZXNvdXJjZSBjbGVhbnVwLiBgenJhbV9zbG90X2ZyZWVfbm90aWZ5YCBsaWtlbHkgcmVsYXRlcyB0byBtZW1vcnkgbWFuYWdlbWVudCB3aXRoaW4gdGhlIGNvbXByZXNzZWQgYmxvY2sgc3RvcmFnZSDigJMgYSBub3RpZmljYXRpb24gdHJpZ2dlcmVkIHdoZW4gYSBjb21wcmVzc2lvbiBzbG90IGlzIGZyZWVkLiBBbmQgZmluYWxseSwgdGhlIHByZXNlbmNlIG9mIHN5c2ZzIGF0dHJpYnV0ZXMgaW5kaWNhdGVzIHVzZXItc3BhY2UgY29udHJvbCBhbmQgbW9uaXRvcmluZyBob29rcywgd2hpY2ggaXMgZXNzZW50aWFsIGZvciBhbnkgbW9kZXJuIGRyaXZlciB0byBiZSB1c2VmdWwgYW5kIGNvbmZpZ3VyYWJsZS4gSSdsbCBuZWVkIHRvIGRyaWxsIGRvd24gdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQgYXR0cmlidXRlcyBhcmUgZXhwb3NlZCwgYnV0IHRoZSBleGlzdGVuY2UgaXMgYXMgZXhwZWN0ZWQuIFRoaXMgc3VnZ2VzdHMgYSB3ZWxsLWRlc2lnbmVkIGRyaXZlciB0aGF0IGFsbG93cyBmb3IgcnVudGltZSB0d2Vha2luZyBhbmQgcGVyZm9ybWFuY2UgbW9uaXRvcmluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA2NzUsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMzo1MDozOS4wMjY3MTYwNzJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MDg3MTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJlY29tcHJlc3Nfc3RvcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MjQzOT1zdGF0aWMgaW50IHJlY29tcHJlc3Nfc2xvdChzdHJ1Y3QgenJhbSAqenJhbSwgdW5zaWduZWQgbG9uZyBpbmRleCxcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI1NDUtXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MjU0NjpzdGF0aWMgc3NpemVfdCByZWNvbXByZXNzX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yNTQ3LVxcdFxcdFxcdFxcdHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMzo1MDozOS4wNzA4MDgyNTdaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc0NTAxNDE0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gc3lzZnMgQXR0cmlidXRlcyoqXG5cbkFscmlnaHQsIHRoZSBvYmplY3RpdmUgaXMgcHJldHR5IGNsZWFyOiBJIG5lZWQgdG8gZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcyBieSBkaWdnaW5nIGludG8gdGhlIHN5c2ZzIGF0dHJpYnV0ZXMuIEkgaW1tZWRpYXRlbHkgbmVlZCB0byB6ZXJvIGluIG9uIHdoYXQgZGF0YSBpcyBhdmFpbGFibGUuIFRoaXMgaXNuJ3QgYSBcImxldCdzIHN0YXJ0IHBva2luZyBhcm91bmQgcmFuZG9tbHlcIiBzY2VuYXJpbzsgSSBuZWVkIHRvIGJlIHN0cmF0ZWdpYy4gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBsaWtlbHkgY2FuZGlkYXRlcywgdGhlIGtlcm5lbCBtb2R1bGVzIG9yIGRldmljZSBkcml2ZXJzIHRoYXQgYXJlIHJlbGV2YW50IHRvIHRoaXMgaXNzdWUuIExldCBtZSBzdGFydCBieSB0aGlua2luZyBhYm91dCB0aGUgZGV2aWNlIG9yIGZlYXR1cmUgdGhpcyByZWxhdGVzIHRvLiBPbmNlIEkgaGF2ZSB0aGUgc3lzdGVtIGNvbXBvbmVudCBJIGFtIGludGVyZXN0ZWQgaW4sIHN5c2ZzIGdpdmVzIHlvdSBhIHdpbmRvdyBpbnRvIHRoZSBpbm5lciB3b3JraW5ncyBvZiB0aGUga2VybmVsLiBXaGF0J3MgZXhwb3NlZCBhbmQgYXZhaWxhYmxlLiBUaGUgZ29hbCwgYXMgYWx3YXlzLCBpcyB0byBwaW5wb2ludCB0aGUgcmVsZXZhbnQgYXR0cmlidXRlcyB0aGF0IHJldmVhbCB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb24gb3Igc3RhdHVzIGluZm9ybWF0aW9uIEknbSBhZnRlci4gSXQncyB0aW1lIHRvIGdldCBhIGJpdCBtb3JlIGZvY3VzZWQgYW5kIG1ldGhvZGljYWwuIEkgaGF2ZSBhIGZlZWxpbmcgdGhlIGluZm9ybWF0aW9uIGlzIGdvaW5nIHRvIGJlIHdpdGhpbiBzeXNmcyAtIHRoYXQncyB3aGVyZSBJIG5lZWQgdG8gbG9vay5cblxuXG4iLCJJbnB1dFRva2VucyI6MTExNDgsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIzOjUwOjQyLjgxNTgyNDg0NFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU5OTQ1MzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiREVWSUNFX0FUVFJfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTI5ODM9c3RhdGljIGNvbnN0IHN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyB6cmFtX2Rldm9wcyA9IHtcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI5ODktXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjk5MDpzdGF0aWMgREVWSUNFX0FUVFJfUk8oaW9fc3RhdCk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjk5MTpzdGF0aWMgREVWSUNFX0FUVFJfUk8obW1fc3RhdCk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjk5MjpzdGF0aWMgREVWSUNFX0FUVFJfUk8oZGVidWdfc3RhdCk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjk5MzpzdGF0aWMgREVWSUNFX0FUVFJfV08oY29tcGFjdCk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjk5NDpzdGF0aWMgREVWSUNFX0FUVFJfUlcoZGlza3NpemUpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI5OTU6c3RhdGljIERFVklDRV9BVFRSX1JPKGluaXRzdGF0ZSk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjk5NjpzdGF0aWMgREVWSUNFX0FUVFJfV08ocmVzZXQpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI5OTc6c3RhdGljIERFVklDRV9BVFRSX1dPKG1lbV9saW1pdCk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjk5ODpzdGF0aWMgREVWSUNFX0FUVFJfV08obWVtX3VzZWRfbWF4KTtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoyOTk5OnN0YXRpYyBERVZJQ0VfQVRUUl9XTyhpZGxlKTtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMDAwOnN0YXRpYyBERVZJQ0VfQVRUUl9SVyhjb21wX2FsZ29yaXRobSk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzAwMS0jaWZkZWYgQ09ORklHX1pSQU1fV1JJVEVCQUNLXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzAwMjpzdGF0aWMgREVWSUNFX0FUVFJfUk8oYmRfc3RhdCk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzAwMzpzdGF0aWMgREVWSUNFX0FUVFJfUlcoYmFja2luZ19kZXYpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjMwMDQ6c3RhdGljIERFVklDRV9BVFRSX1dPKHdyaXRlYmFjayk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzAwNTpzdGF0aWMgREVWSUNFX0FUVFJfUlcod3JpdGViYWNrX2xpbWl0KTtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMDA2OnN0YXRpYyBERVZJQ0VfQVRUUl9SVyh3cml0ZWJhY2tfbGltaXRfZW5hYmxlKTtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMDA3OnN0YXRpYyBERVZJQ0VfQVRUUl9SVyh3cml0ZWJhY2tfYmF0Y2hfc2l6ZSk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzAwODpzdGF0aWMgREVWSUNFX0FUVFJfUlcoY29tcHJlc3NlZF93cml0ZWJhY2spO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTMwMDktI2VuZGlmXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzAxMC0jaWZkZWYgQ09ORklHX1pSQU1fTVVMVElfQ09NUFxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjMwMTE6c3RhdGljIERFVklDRV9BVFRSX1JXKHJlY29tcF9hbGdvcml0aG0pO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjMwMTI6c3RhdGljIERFVklDRV9BVFRSX1dPKHJlY29tcHJlc3MpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTMwMTMtI2VuZGlmXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzAxNDpzdGF0aWMgREVWSUNFX0FUVFJfV08oYWxnb3JpdGhtX3BhcmFtcyk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzAxNS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjM6NTA6NDIuODYxODI3MjQ5WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY3ODMxNzA3MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFpSQU0ncyBBUEkgRXhwb3N1cmUgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdGhlIHpyYW0gZGV2aWNlIGlzIGV4cG9zZWQsIHNwZWNpZmljYWxseSB3aXRoIGFuIGV5ZSB0b3dhcmRzIGZ1enppbmcgd2l0aCBzb21ldGhpbmcgbGlrZSBTeXprYWxsZXIuIEkgc2VlIHRoZSBzeXNmcyBmdW5jdGlvbnMgYXJlIG5hbWVkIGxpa2UgYGRpc2tzaXplX3N0b3JlYCwgYHJlc2V0X3N0b3JlYCwgYW5kIHNvIG9uLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGxpc3QgYHpyYW1fc3VibWl0X2Jpb2AsIGFsb25nIHdpdGggdGhlc2Ugc3lzZnMgZW50cmllcyB0byBmb2N1cyBvbiwgYnV0IHRoZW4gSSByZW1lbWJlciB0aGF0IGB6cmFtX3N1Ym1pdF9iaW9gIGlzIGFjdHVhbGx5IG1hcmtlZCBhcyAqc3RhdGljKi4gSG1tLCB0aGF0IGNvdWxkIGJlIGEgcHJvYmxlbSwgc2luY2UgdGhlIHByb21wdCBJJ20gd29ya2luZyBmcm9tIHN1Z2dlc3RzIHByZWZlcnJpbmcgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLiBMZXQgbWUgc2VlLi4uaXQncyBwYXJ0IG9mIGB6cmFtX2Rldm9wc2AsIHRoYXQncyBob3cgaXQncyBsaW5rZWQgdXAgdG8gdGhlIGJsb2NrIGRldmljZSBvcGVyYXRpb25zLlxuXG5TeXprYWxsZXIgY2FuIGZ1enogYmxvY2sgZGV2aWNlcywgc28gSSAqa25vdyogaXQgd2lsbCBoaXQgYHpyYW1fc3VibWl0X2Jpb2AgdGhyb3VnaCB0aGUgbm9ybWFsIGBzdWJtaXRfYmlvYCBwYXRoLiBCdXQgdGhlIGZhY3QgdGhhdCBpdCdzICpzdGF0aWMqIGdpdmVzIG1lIHBhdXNlLiBJdCBtaWdodCBiZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciwgb3IgYXQgdGhlIHZlcnkgbGVhc3QgaGF2ZSBubyBjbGVhcmx5IGRlZmluZWQgc3ltYm9sIGFkZHJlc3Mgd2hpY2ggbWFrZXMgZnV6emluZyBoYXJkZXIuIFdhaXQsIGl0IGlzICphc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIqLCBzbyBubyBpdCBjYW4ndCBiZSBpbmxpbmVkISBPa2F5LCBzbyBJIHNob3VsZCBiZSBhYmxlIHRvIGdldCBhIHN5bWJvbCBhZGRyZXNzIGZvciBpdCwgZXZlbiBpZiBpdCdzIHN0YXRpYy5cblxuQnV0LCBiYWNrIHRvIHRoZSBsYXJnZXIgcHJvYmxlbSDigJMgdGhlIHByb21wdCBzcGVjaWZpY2FsbHkgZW1waGFzaXplcyAqbm9uLXN0YXRpYyogZW50cnkgcG9pbnRzLiBPa2F5LCBidXQgYWxsIHRoZSBzeXNmcyBmdW5jdGlvbnMsIGxpa2UgYGRpc2tzaXplX3N0b3JlYCwgc2VlbSB0byBiZSAqc3RhdGljKiBhcyB3ZWxsISBUaGV5J3JlIGFzc2lnbmVkIHRvIGBERVZJQ0VfQVRUUmAgc3RydWN0dXJlcywgc28gSSBuZWVkIHRvIGNoZWNrIGlmIHRob3NlIGFzc2lnbm1lbnRzIGFsc28gaW52b2x2ZSB0aGUgc3RhdGljIGtleXdvcmQuIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIGRlZmluaXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjI1MiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMzo1MDo0OS42NDUwMDA3ODRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NDQ5ODM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRpc2tzaXplX3N0b3JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTI4NTk9c3RhdGljIHZvaWQgenJhbV9yZXNldF9kZXZpY2Uoc3RydWN0IHpyYW0gKnpyYW0pXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yODc1LVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI4NzY6c3RhdGljIHNzaXplX3QgZGlza3NpemVfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yODc3LVxcdFxcdFxcdCAgICAgIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbilcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTMxMzM9c3RhdGljIGludCB6cmFtX3JlbW92ZShzdHJ1Y3QgenJhbSAqenJhbSlcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTMxNjktXFx0LypcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMTcwOlxcdCAqIGRpc2tzaXplX3N0b3JlKCkgbWF5IGJlIGNhbGxlZCBpbiBiZXR3ZWVuIHpyYW1fcmVzZXRfZGV2aWNlKClcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0zMTcxLVxcdCAqIGFuZCBkZWxfZ2VuZGlzaygpLCBzbyBydW4gdGhlIGxhc3QgcmVzZXQgdG8gYXZvaWQgbGVha2luZ1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjMxNzI6XFx0ICogYW55dGhpbmcgYWxsb2NhdGVkIHdpdGggZGlza3NpemVfc3RvcmUoKVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTMxNzMtXFx0ICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIzOjUwOjQ5LjY5NDQ1NjE2OVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDQ4ODgwMDQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUuIEhlcmUncyBteSBzdW1tYXJ5LCB0YWtpbmcgdGhlIHBlcnNwZWN0aXZlIHlvdSByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyB0aGUgWnJhbSBEcml2ZXIqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgc3RydWN0dXJlcyBhcmUgc3RhdGljLCB3aGljaCBtYWtlcyBzZW5zZTsgdGhleSBhY3QgYXMgdGhlIGluaXRpYWwgaG9va3MgaW50byB0aGUgc3lzZnMgaW50ZXJmYWNlLiBUaGF0J3MgdGhlIGZpcnN0IHRoaW5nIEkgZXhwZWN0LiBOb3csIG15IG5leHQgbW92ZSBpcyB0byBkaXZlIGRlZXBlciBpbnRvIGB6cmFtX2Rydi5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCwgaWYgYW55dGhpbmcsIGlzIGR5bmFtaWNhbGx5IGhhbmRsZWQgd2l0aGluIHRoZSBkcml2ZXIgaXRzZWxmLiBNeSBpbnR1aXRpb24gdGVsbHMgbWUgdGhhdCB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGtlcm5lbCBpbnRlcmFjdGlvbiBwcm9iYWJseSBsaWVzIGluIGFueSBmdW5jdGlvbnMgd2l0aGluIHRoYXQgZmlsZSB0aGF0IGFyZW4ndCBkZWZpbmVkIGFzIHN0YXRpYy4gTGV0J3Mgc2VlIGlmIHdlIGNhbiBmaW5kIHNvbWUgY2x1ZXMgdGhlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkeW5hbWlzbSBiZWhpbmQgdGhpcyBhYnN0cmFjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMyNDcsIk91dHB1dFRva2VucyI6NzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMzo1MDo1My4xNDMzMzg5MzVaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1Mjk5OTY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aX11bYS16QS1aMC05X10qIFthLXpBLVpfXVthLXpBLVowLTlfXSpcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0zOS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzo0MDpzdGF0aWMgREVGSU5FX0lEUih6cmFtX2luZGV4X2lkcik7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtNDEtLyogaWRyIGluZGV4IG11c3QgYmUgcHJvdGVjdGVkICovXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6NDI6c3RhdGljIERFRklORV9NVVRFWCh6cmFtX2luZGV4X211dGV4KTtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy00My1cXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTI5ODM9c3RhdGljIGNvbnN0IHN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyB6cmFtX2Rldm9wcyA9IHtcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI5ODktXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjk5MDpzdGF0aWMgREVWSUNFX0FUVFJfUk8oaW9fc3RhdCk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjk5MTpzdGF0aWMgREVWSUNFX0FUVFJfUk8obW1fc3RhdCk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjk5MjpzdGF0aWMgREVWSUNFX0FUVFJfUk8oZGVidWdfc3RhdCk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjk5MzpzdGF0aWMgREVWSUNFX0FUVFJfV08oY29tcGFjdCk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjk5NDpzdGF0aWMgREVWSUNFX0FUVFJfUlcoZGlza3NpemUpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI5OTU6c3RhdGljIERFVklDRV9BVFRSX1JPKGluaXRzdGF0ZSk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjk5NjpzdGF0aWMgREVWSUNFX0FUVFJfV08ocmVzZXQpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI5OTc6c3RhdGljIERFVklDRV9BVFRSX1dPKG1lbV9saW1pdCk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjk5ODpzdGF0aWMgREVWSUNFX0FUVFJfV08obWVtX3VzZWRfbWF4KTtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoyOTk5OnN0YXRpYyBERVZJQ0VfQVRUUl9XTyhpZGxlKTtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMDAwOnN0YXRpYyBERVZJQ0VfQVRUUl9SVyhjb21wX2FsZ29yaXRobSk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzAwMS0jaWZkZWYgQ09ORklHX1pSQU1fV1JJVEVCQUNLXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzAwMjpzdGF0aWMgREVWSUNFX0FUVFJfUk8oYmRfc3RhdCk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzAwMzpzdGF0aWMgREVWSUNFX0FUVFJfUlcoYmFja2luZ19kZXYpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjMwMDQ6c3RhdGljIERFVklDRV9BVFRSX1dPKHdyaXRlYmFjayk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzAwNTpzdGF0aWMgREVWSUNFX0FUVFJfUlcod3JpdGViYWNrX2xpbWl0KTtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMDA2OnN0YXRpYyBERVZJQ0VfQVRUUl9SVyh3cml0ZWJhY2tfbGltaXRfZW5hYmxlKTtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMDA3OnN0YXRpYyBERVZJQ0VfQVRUUl9SVyh3cml0ZWJhY2tfYmF0Y2hfc2l6ZSk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzAwODpzdGF0aWMgREVWSUNFX0FUVFJfUlcoY29tcHJlc3NlZF93cml0ZWJhY2spO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTMwMDktI2VuZGlmXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzAxMC0jaWZkZWYgQ09ORklHX1pSQU1fTVVMVElfQ09NUFxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjMwMTE6c3RhdGljIERFVklDRV9BVFRSX1JXKHJlY29tcF9hbGdvcml0aG0pO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjMwMTI6c3RhdGljIERFVklDRV9BVFRSX1dPKHJlY29tcHJlc3MpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTMwMTMtI2VuZGlmXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzAxNDpzdGF0aWMgREVWSUNFX0FUVFJfV08oYWxnb3JpdGhtX3BhcmFtcyk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzAxNS1cXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTMyMDc9c3RhdGljIHNzaXplX3QgaG90X3JlbW92ZV9zdG9yZShjb25zdCBzdHJ1Y3QgY2xhc3MgKmNsYXNzLFxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzIzNS19XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzIzNjpzdGF0aWMgQ0xBU1NfQVRUUl9XTyhob3RfcmVtb3ZlKTtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0zMjM3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMzo1MDo1My4xODg2NDMzNDFaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE1NzM1MzMxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIGNvbnNpZGVyaW5nIG15IGV4cGVydGlzZTpcblxuKipNeSBBcHByb2FjaCB0byBBbmFseXppbmcgWnJhbSdzIEVudHJ5IFBvaW50cyoqXG5cbkFscmlnaHQsIEkgY2FuIGRlZmluaXRlbHkgbWFrZSBzb21lIGhlYWR3YXkgaGVyZS4gSW5zdGVhZCBvZiBnZXR0aW5nIGJvZ2dlZCBkb3duIGluIHRoZSBtaW51dGlhZSwgSSdtIGdvaW5nIHRvIGxldmVyYWdlIG15IHVuZGVyc3RhbmRpbmcgb2Yga2VybmVsIHN0cnVjdHVyZXMgYW5kIHBpbnBvaW50IHRoZSBrZXkgZW50cnkgcG9pbnRzLiBUaGlua2luZyBzdHJhdGVnaWNhbGx5LCBJJ2xsIHVzZSB0aG9zZSBmdW5jdGlvbnMg4oCTIGB6cmFtX3N1Ym1pdF9iaW9gLCBgZGlza3NpemVfc3RvcmVgLCBgcmVzZXRfc3RvcmVgLCBgcmVjb21wcmVzc19zdG9yZWAsIGB3cml0ZWJhY2tfc3RvcmVgLCBgaWRsZV9zdG9yZWAsIGFuZCBgY29tcGFjdF9zdG9yZWAg4oCTIGFzIG15IGZvY3VzIHN5bWJvbHMuIFRoZXNlIHNob3VsZCByZXByZXNlbnQgdGhlIHByaW1hcnkgaW50ZXJmYWNlcyBpbnRvIHRoZSB6cmFtIHN1YnN5c3RlbS5cblxuTm93LCBsZXQgbWUganVzdCBjb25maXJtIHRoYXQgYHpyYW1fc3VibWl0X2Jpb2AgaXMgYWN0dWFsbHkgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBjb250ZXh0LiBZZXAsIHRoZXJlIGl0IGlzISBHb29kLiBUaGF0J3MgYSBzb2xpZCBzdGFydGluZyBwb2ludC4gTmV4dCwgSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIGlmIGB6cmFtX2luaXRgIGlzIHByZXNlbnQgdG9vLiBXZSBuZWVkIHRvIGJlIHN1cmUgd2hlcmUgaW5pdGlhbGl6YXRpb24gaGFwcGVucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ1ODQsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMzo1MDo1Ny4zNDU5OTk4ODVaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1OTY3ODE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTMzMTA9c3RhdGljIHZvaWQgX19leGl0IHpyYW1fZXhpdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzMxNC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMzE1Om1vZHVsZV9pbml0KHpyYW1faW5pdCk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzMxNi1tb2R1bGVfZXhpdCh6cmFtX2V4aXQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMzo1MDo1Ny4zOTE5NzI3NVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2OTE0NTI2MDgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFpSQU0gUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGUgZXNzZW50aWFsIGNvbmZpZyBoZXJlIGlzIGBaUkFNYCwgdGhhdCdzIHRoZSBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIGVsc2UgaW4gdGhlIGRlcGVuZGVuY2llcywgYnV0IGl0IGxvb2tzIGxpa2UgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBmb2N1c2VkIGFyb3VuZCB0aGF0LiBMb29raW5nIGRlZXBlciwgaXQgbW9kaWZpZXMgdGhlIGBaUkFNX0VOVFJZX0xPQ0tfQklUYCBsb2dpYywgd2hpY2ggaW1tZWRpYXRlbHkgZmxhZ3MgdGhpcyBhcyBhIHBvdGVudGlhbCBidWcgZml4IGZvciB0aG9zZSB0cmlja3kgYmlnLWVuZGlhbiA2NC1iaXQgYXJjaGl0ZWN0dXJlcyAtIGdvb2QgdG8ga25vdy5cblxuR2l2ZW4gdGhhdCwgSSdtIGRlZmluaXRlbHkgZ29pbmcgdG8gZmxhZyB0aGlzIGFzIGBXb3J0aEZ1enppbmc9dHJ1ZWAuIE15IG1haW4gZm9jdXMgc3ltYm9scyBhcmUgZ29pbmcgdG8gYmUgYHpyYW1fc3VibWl0X2Jpb2AsIGBkaXNrc2l6ZV9zdG9yZWAsIGByZXNldF9zdG9yZWAsIGByZWNvbXByZXNzX3N0b3JlYCwgYHdyaXRlYmFja19zdG9yZWAsIGBpZGxlX3N0b3JlYCwgYW5kIGBjb21wYWN0X3N0b3JlYC4gSG93ZXZlciwgd2FpdCBhIG1pbnV0ZS4uLiBgd3JpdGViYWNrX3N0b3JlYCByZWxpZXMgb24gYENPTkZJR19aUkFNX1dSSVRFQkFDS2AuIEFuZCwgSSBhbHNvIHNlZSB0aGF0IGByZWNvbXByZXNzX3N0b3JlYCBpcyBndWFyZGVkIGJ5IGBDT05GSUdfWlJBTV9NVUxUSV9DT01QYC4gUmlnaHQsIEkgY2FuJ3Qgb3Zlcmxvb2sgdGhvc2UgZGVwZW5kZW5jaWVzLlxuXG5UaGVyZWZvcmUsIEkgbmVlZCB0byBhZGQgYm90aCBgWlJBTV9XUklURUJBQ0tgIGFuZCBgWlJBTV9NVUxUSV9DT01QYCB0byBgRW5hYmxlQ29uZmlnc2AsIHJpZ2h0IGFsb25nc2lkZSBgWlJBTWAuIExldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IHRob3NlIGFyZSBhY3R1YWxseSBkZWZpbmVkIGluIHRoZSBLY29uZmlnLiBZZXAsIHRoZXkncmUgdGhlcmUuIEp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIGFsc28gcXVpY2tseSBjaGVjayBgWlJBTV9UUkFDS19FTlRSWV9BQ1RJTUVgIGFuZCBgWlJBTV9NRU1PUllfVFJBQ0tJTkdgLCBidXQgSSBkb24ndCB0aGluayB0aGV5J3JlIHJlbGV2YW50IHRvIHRoaXMgc3BlY2lmaWMgcGF0Y2guXG5cblNvLCB0aGUgZmluYWwgbGlzdCBmb3IgbXkgY29uZmlndXJhdGlvbiB3aWxsIGJlIGBaUkFNYCwgYFpSQU1fV1JJVEVCQUNLYCwgYW5kIGBaUkFNX01VTFRJX0NPTVBgLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgc29saWQgYmFzZSB0byBzdGFydCB0ZXN0aW5nIHRoaXMgcGF0Y2ggdGhvcm91Z2hseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUwNDEsIk91dHB1dFRva2VucyI6MTc5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIzOjUxOjA0LjMwNjUwMTk3WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTY5NTgzMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlpSQU1cIixcbiAgICBcIlpSQU1fV1JJVEVCQUNLXCIsXG4gICAgXCJaUkFNX01VTFRJX0NPTVBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ6cmFtX3N1Ym1pdF9iaW9cIixcbiAgICBcImRpc2tzaXplX3N0b3JlXCIsXG4gICAgXCJyZXNldF9zdG9yZVwiLFxuICAgIFwicmVjb21wcmVzc19zdG9yZVwiLFxuICAgIFwid3JpdGViYWNrX3N0b3JlXCIsXG4gICAgXCJpZGxlX3N0b3JlXCIsXG4gICAgXCJjb21wYWN0X3N0b3JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBsb2NraW5nIGJ1ZyBpbiB6cmFtIG9uIDY0LWJpdCBiaWctZW5kaWFuIHN5c3RlbXMgYnkgY29ycmVjdGluZyB0aGUgYml0IHBvc2l0aW9uIHVzZWQgZm9yIFpSQU1fRU5UUllfTE9DSy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIGV4ZWN1dGlvbiBmbG93IG9uIGJpZy1lbmRpYW4gYXJjaGl0ZWN0dXJlcyBsaWtlIHMzOTB4LCB3aGljaCBhcmUgc3VwcG9ydGVkIGJ5IHN5emthbGxlci4gRnV6emluZyB6cmFtIGJsb2NrIGRldmljZSBvcGVyYXRpb25zIGFuZCBzeXNmcyBpbnRlcmZhY2VzIGNhbiBoZWxwIHZlcmlmeSB0aGUgZml4LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlpSQU1cIixcbiAgICBcIlpSQU1fV1JJVEVCQUNLXCIsXG4gICAgXCJaUkFNX01VTFRJX0NPTVBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ6cmFtX3N1Ym1pdF9iaW9cIixcbiAgICBcImRpc2tzaXplX3N0b3JlXCIsXG4gICAgXCJyZXNldF9zdG9yZVwiLFxuICAgIFwicmVjb21wcmVzc19zdG9yZVwiLFxuICAgIFwid3JpdGViYWNrX3N0b3JlXCIsXG4gICAgXCJpZGxlX3N0b3JlXCIsXG4gICAgXCJjb21wYWN0X3N0b3JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBsb2NraW5nIGJ1ZyBpbiB6cmFtIG9uIDY0LWJpdCBiaWctZW5kaWFuIHN5c3RlbXMgYnkgY29ycmVjdGluZyB0aGUgYml0IHBvc2l0aW9uIHVzZWQgZm9yIFpSQU1fRU5UUllfTE9DSy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIGV4ZWN1dGlvbiBmbG93IG9uIGJpZy1lbmRpYW4gYXJjaGl0ZWN0dXJlcyBsaWtlIHMzOTB4LCB3aGljaCBhcmUgc3VwcG9ydGVkIGJ5IHN5emthbGxlci4gRnV6emluZyB6cmFtIGJsb2NrIGRldmljZSBvcGVyYXRpb25zIGFuZCBzeXNmcyBpbnRlcmZhY2VzIGNhbiBoZWxwIHZlcmlmeSB0aGUgZml4LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMzo1MTowNC40MDM0NjY5MzFaIiwiU2VxIjoyNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwMDMyMDUwMjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMzo1MTowNC40MDQxMDUwNTFaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6OTAwMjU2MjI4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBiaXQtbG9jayBwb3NpdGlvbiBpc3N1ZSBvbiA2NC1iaXQgYmlnLWVuZGlhbiBhcmNoaXRlY3R1cmVzIGluIHRoZSB6cmFtIGRyaXZlci4gSXQgZW5zdXJlcyB0aGF0IHRoZSBsb2NrIGJpdCBsYW5kcyBpbiB0aGUgY29ycmVjdCBwb3NpdGlvbiB3aXRoaW4gdGhlIGBfX2xvY2tgIHdvcmQsIHdoaWNoIGlzIGFsaWFzZWQgYnkgdHdvIGB1MzJgcy4gVGhpcyBpcyBhIGxvY2tpbmcgYW5kIGJpdCBtYW5pcHVsYXRpb24gZml4LCBub3QgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSwgaW5mby1sZWFrcywgb3IgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgZmllbGRzLiBTdGFuZGFyZCB0b29scyBsaWtlIEtDU0FOIG9yIExPQ0tERVAgYXJlIGJldHRlciBzdWl0ZWQgZm9yIGxvY2tpbmcgYW5kIGNvbmN1cnJlbmN5IGlzc3Vlcywgd2hpbGUgS01TQU4gaXMgc3BlY2lmaWNhbGx5IGZvciBkZXRlY3RpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIHdoaWNoIGlzIG5vdCByZWxldmFudCBoZXJlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDJhY2ViNGFlYmM1N2UzM2NiOTk2MjQ4YzkxYjZjMGI0Y2RkMWE1OTVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAxMCAyMzo1MDowMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jIGIvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmNcbmluZGV4IGQwOWZkY2E0OWNiZGEuLmE5YjNiYjFkM2JlZjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuY1xuKysrIGIvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmNcbkBAIC03NCw3ICs3NCw3IEBAIHN0YXRpYyBfX211c3RfY2hlY2sgYm9vbCBzbG90X3RyeWxvY2soc3RydWN0IHpyYW0gKnpyYW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpXG4ge1xuIFx0dW5zaWduZWQgbG9uZyAqbG9jayA9IFx1MDAyNnpyYW0tXHUwMDNldGFibGVbaW5kZXhdLl9fbG9jaztcbiBcbi1cdGlmICghdGVzdF9hbmRfc2V0X2JpdF9sb2NrKFpSQU1fRU5UUllfTE9DSywgbG9jaykpIHtcbitcdGlmICghdGVzdF9hbmRfc2V0X2JpdF9sb2NrKFpSQU1fRU5UUllfTE9DS19CSVQsIGxvY2spKSB7XG4gXHRcdG11dGV4X2FjcXVpcmUoXHUwMDI2enJhbS1cdTAwM2V0YWJsZV9sb2NrX21hcCwgMCwgMSwgX1JFVF9JUF8pO1xuIFx0XHRsb2NrX2FjcXVpcmVkKFx1MDAyNnpyYW0tXHUwMDNldGFibGVfbG9ja19tYXAsIF9SRVRfSVBfKTtcbiBcdFx0cmV0dXJuIHRydWU7XG5AQCAtODgsNyArODgsNyBAQCBzdGF0aWMgdm9pZCBzbG90X2xvY2soc3RydWN0IHpyYW0gKnpyYW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpXG4gXHR1bnNpZ25lZCBsb25nICpsb2NrID0gXHUwMDI2enJhbS1cdTAwM2V0YWJsZVtpbmRleF0uX19sb2NrO1xuIFxuIFx0bXV0ZXhfYWNxdWlyZShcdTAwMjZ6cmFtLVx1MDAzZXRhYmxlX2xvY2tfbWFwLCAwLCAwLCBfUkVUX0lQXyk7XG4tXHR3YWl0X29uX2JpdF9sb2NrKGxvY2ssIFpSQU1fRU5UUllfTE9DSywgVEFTS19VTklOVEVSUlVQVElCTEUpO1xuK1x0d2FpdF9vbl9iaXRfbG9jayhsb2NrLCBaUkFNX0VOVFJZX0xPQ0tfQklULCBUQVNLX1VOSU5URVJSVVBUSUJMRSk7XG4gXHRsb2NrX2FjcXVpcmVkKFx1MDAyNnpyYW0tXHUwMDNldGFibGVfbG9ja19tYXAsIF9SRVRfSVBfKTtcbiB9XG4gXG5AQCAtOTcsNyArOTcsNyBAQCBzdGF0aWMgdm9pZCBzbG90X3VubG9jayhzdHJ1Y3QgenJhbSAqenJhbSwgdW5zaWduZWQgbG9uZyBpbmRleClcbiBcdHVuc2lnbmVkIGxvbmcgKmxvY2sgPSBcdTAwMjZ6cmFtLVx1MDAzZXRhYmxlW2luZGV4XS5fX2xvY2s7XG4gXG4gXHRtdXRleF9yZWxlYXNlKFx1MDAyNnpyYW0tXHUwMDNldGFibGVfbG9ja19tYXAsIF9SRVRfSVBfKTtcbi1cdGNsZWFyX2FuZF93YWtlX3VwX2JpdChaUkFNX0VOVFJZX0xPQ0ssIGxvY2spO1xuK1x0Y2xlYXJfYW5kX3dha2VfdXBfYml0KFpSQU1fRU5UUllfTE9DS19CSVQsIGxvY2spO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIGJvb2wgaW5pdF9kb25lKHN0cnVjdCB6cmFtICp6cmFtKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oIGIvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmhcbmluZGV4IDRmZGRjNTgyZjNiODIuLjdhNTVkNzUxNDE3ZTIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuaFxuKysrIGIvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmhcbkBAIC0xNSw2ICsxNSw3IEBAXG4gI2lmbmRlZiBfWlJBTV9EUlZfSF9cbiAjZGVmaW5lIF9aUkFNX0RSVl9IX1xuIFxuKyNpbmNsdWRlIFx1MDAzY2FzbS9ieXRlb3JkZXIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3J3c2VtLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC96c21hbGxvYy5oXHUwMDNlXG4gXG5AQCAtNTcsNiArNTgsMTkgQEAgZW51bSB6cmFtX3BhZ2VmbGFncyB7XG4gXHRfX05SX1pSQU1fUEFHRUZMQUdTLFxuIH07XG4gXG4rLypcbisgKiBUaGUgc2xvdCBsb2NrIGlzIGEgYml0LXdhaXQgbG9jayBvbiB0aGUgd2hvbGUgX19sb2NrIHdvcmQsIHdoaWxlXG4rICogZmxhZ3MgYW5kIGFjX3RpbWUgYWxpYXMgdGhhdCB3b3JkIGFzIHR3byB1MzJzLiAgVGhlIGxvY2sgYml0IG11c3RcbisgKiBsYW5kIGluIHRoZSBzbG90IHRoYXQgWlJBTV9FTlRSWV9MT0NLIHJlc2VydmVzIGluIGF0dHIuZmxhZ3M7IG9uXG4rICogNjQtYml0IGJpZy1lbmRpYW4gdGhlIGZsYWdzIHdvcmQgbWFwcyB0byB0aGUgdXBwZXIgaGFsZiBvZiBfX2xvY2ssXG4rICogc28gdGhlIGJpdCBwb3NpdGlvbiBoYXMgdG8gYmUgc2hpZnRlZCB1cC5cbisgKi9cbisjaWYgZGVmaW5lZChDT05GSUdfNjRCSVQpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKF9fQklHX0VORElBTilcbisjZGVmaW5lIFpSQU1fRU5UUllfTE9DS19CSVQgIChaUkFNX0VOVFJZX0xPQ0sgKyAzMilcbisjZWxzZVxuKyNkZWZpbmUgWlJBTV9FTlRSWV9MT0NLX0JJVCAgWlJBTV9FTlRSWV9MT0NLXG4rI2VuZGlmXG4rXG4gLypcbiAgKiBBbGxvY2F0ZWQgZm9yIGVhY2ggZGlzayBwYWdlLiAgV2UgdXNlIGJpdC1sb2NrIChaUkFNX0VOVFJZX0xPQ0sgYml0XG4gICogb2YgZmxhZ3MpIHRvIHNhdmUgbWVtb3J5LiAgVGhlcmUgY2FuIGJlIHBsZW50eSBvZiBlbnRyaWVzIGFuZCBzdGFuZGFyZFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjM6NTE6MDQuNDA0MTA3MzcxWiIsIlNlcSI6MjksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkwMDI1MzU2OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBaUkFNIFBhdGNoIGZvciBLTVNBTiBJbXBsaWNhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCdzIHR3ZWFraW5nIGB6cmFtX2Rydi5jYCBhbmQgYHpyYW1fZHJ2LmhgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGFwcGVhcnMgdG8gYmUgYSBiaXQtbG9jayBjb3JyZWN0aW9uIHNwZWNpZmljYWxseSB0YXJnZXRlZCBhdCA2NC1iaXQgYmlnLWVuZGlhbiBhcmNoaXRlY3R1cmVzLiBUaGV5J3JlIGNoYW5naW5nIGBaUkFNX0VOVFJZX0xPQ0tgIHRvIGBaUkFNX0VOVFJZX0xPQ0tfQklUYCBpbiB0aGUgbG9jayBmdW5jdGlvbnMgKGB0ZXN0X2FuZF9zZXRfYml0X2xvY2tgLCBgd2FpdF9vbl9iaXRfbG9ja2AsIGBjbGVhcl9hbmRfd2FrZV91cF9iaXRgKS4gSXQgc2VlbXMgbGlrZSB0aGUgaXNzdWUgaXMgcmVsYXRlZCB0byBob3cgdGhlIGxvY2sgYml0IG1hcHMgd2hlbiBgX19sb2NrYCBpcyBhbiBgdW5zaWduZWQgbG9uZ2AsIGJ1dCB0aGVuIGBmbGFnc2AgYW5kIGBhY190aW1lYCBhbGlhcyB0aGF0IHNhbWUgd29yZCBhcyB0d28gYHUzMmBzLiBUaGUgbmV3IG1hY3JvIGBaUkFNX0VOVFJZX0xPQ0tfQklUYCB0aGVuIGFjY291bnRzIGZvciBhIGJpdCBwb3NpdGlvbiBzaGlmdCBvbiA2NC1iaXQgYmlnLWVuZGlhbiBzeXN0ZW1zLlxuXG5Fc3NlbnRpYWxseSwgdGhpcyBpcyBhIGxvY2tpbmcgYnVnIGZpeCwgcHVyZSBhbmQgc2ltcGxlLiBJdCBpc24ndCB0b3VjaGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSBhdCBhbGwsIHdoaWNoIGlzIHdoYXQgS01TQU4gKEtlcm5lbCBNZW1vcnkgU2FuaXRpemVyKSBpcyBkZXNpZ25lZCB0byBkZXRlY3QuIEtNU0FOIGlzIGdyZWF0IGZvciBmaW5kaW5nIHRob3NlIHR5cGVzIG9mIGJ1Z3MsIGJ1dCB0aGlzIHBhdGNoIGRvZXNuJ3QgdHJpZ2dlciBhbnkgY29uY2VybnMgdGhlcmUuXG5cbktBU0FOLCBMT0NLREVQLCBvciBLQ1NBTiBtaWdodCBiZSByZWxldmFudCBmb3IgZGV0ZWN0aW5nIHJhY2UgY29uZGl0aW9ucyBvciBvdGhlciBsb2NraW5nIGlzc3VlcywgYnV0IHRoYXQncyBub3QgdGhlIHByaW1hcnkgZm9jdXMgb2YgS01TQU4uIE15IGdvYWwgaGVyZSBpcyB0byBkZXRlcm1pbmUgaWYgS01TQU4gaXMgKm5lZWRlZCogZm9yIHRoaXMuXG5cbkxldCBtZSB0YWtlIGEgcXVpY2sgbG9vayBhdCBgenJhbV9kcnYuaGAgdG8gY29uZmlybSB0aGUgY2hhbmdlOlxuXG5gYGBjXG4vKlxuICogVGhlIHNsb3QgbG9jayBpcyBhIGJpdC13YWl0IGxvY2sgb24gdGhlIHdob2xlIF9fbG9jayB3b3JkLCB3aGlsZVxuICogZmxhZ3MgYW5kIGFjX3RpbWUgYWxpYXMgdGhhdCB3b3JkIGFzIHR3byB1MzJzLiAgVGhlIGxvY2sgYml0IG11c3RcbiAqIGxhbmQgaW4gdGhlIHNsb3QgdGhhdCBaUkFNX0VOVFJZX0xPQ0sgcmVzZXJ2ZXMgaW4gYXR0ci5mbGFnczsgb25cbiAqIDY0LWJpdCBiaWctZW5kaWFuIHRoZSBmbGFncyB3b3JkIG1hcHMgdG8gdGhlIHVwcGVyIGhhbGYgb2YgX19sb2NrLFxuICogc28gdGhlIGJpdCBwb3NpdGlvbiBoYXMgdG8gYmUgc2hpZnRlZCB1cC5cbiAqL1xuI2lmIGRlZmluZWQoQ09ORklHXzY0QklUKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChfX0JJR19FTkRJQU4pXG4jZGVmaW5lIFpSQU1fRU5UUllfTE9DS19CSVQgIChaUkFNX0VOVFJZX0xPQ0sgKyAzMilcbiNlbHNlXG4jZGVmaW5lIFpSQU1fRU5UUllfTE9DS19CSVQgIFpSQU1fRU5UUllfTE9DS1xuI2VuZGlmXG5gYGBcblxuWWVhaCwgdGhhdCBqdXN0IGNvbmZpcm1zIHRoZSBiaXQgbWFuaXB1bGF0aW9uIGZvciB0aGUgbG9jayBvbiBiaWctZW5kaWFuIGFyY2hpdGVjdHVyZXMuIEl0J3MgYSBjbGVhbiBiaXQtdHdpZGRsaW5nIGZpeC4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLiBUaGVyZWZvcmUsIGBOZWVkc0tNU0FOYCBpcyBkZWZpbml0ZWx5IGZhbHNlIGZvciB0aGlzIHBhdGNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzcwLCJPdXRwdXRUb2tlbnMiOjE0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIzOjUxOjEzLjQwNjY0Njc0OFoiLCJTZXEiOjMwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBiaXQtbG9jayBwb3NpdGlvbiBpc3N1ZSBvbiA2NC1iaXQgYmlnLWVuZGlhbiBhcmNoaXRlY3R1cmVzIGluIHRoZSB6cmFtIGRyaXZlci4gSXQgZW5zdXJlcyB0aGF0IHRoZSBsb2NrIGJpdCBsYW5kcyBpbiB0aGUgY29ycmVjdCBwb3NpdGlvbiB3aXRoaW4gdGhlIGBfX2xvY2tgIHdvcmQsIHdoaWNoIGlzIGFsaWFzZWQgYnkgdHdvIGB1MzJgcy4gVGhpcyBpcyBhIGxvY2tpbmcgYW5kIGJpdCBtYW5pcHVsYXRpb24gZml4LCBub3QgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSwgaW5mby1sZWFrcywgb3IgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgZmllbGRzLiBTdGFuZGFyZCB0b29scyBsaWtlIEtDU0FOIG9yIExPQ0tERVAgYXJlIGJldHRlciBzdWl0ZWQgZm9yIGxvY2tpbmcgYW5kIGNvbmN1cnJlbmN5IGlzc3Vlcywgd2hpbGUgS01TQU4gaXMgc3BlY2lmaWNhbGx5IGZvciBkZXRlY3RpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIHdoaWNoIGlzIG5vdCByZWxldmFudCBoZXJlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYml0LWxvY2sgcG9zaXRpb24gaXNzdWUgb24gNjQtYml0IGJpZy1lbmRpYW4gYXJjaGl0ZWN0dXJlcyBpbiB0aGUgenJhbSBkcml2ZXIuIEl0IGVuc3VyZXMgdGhhdCB0aGUgbG9jayBiaXQgbGFuZHMgaW4gdGhlIGNvcnJlY3QgcG9zaXRpb24gd2l0aGluIHRoZSBgX19sb2NrYCB3b3JkLCB3aGljaCBpcyBhbGlhc2VkIGJ5IHR3byBgdTMyYHMuIFRoaXMgaXMgYSBsb2NraW5nIGFuZCBiaXQgbWFuaXB1bGF0aW9uIGZpeCwgbm90IHJlbGF0ZWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnksIGluZm8tbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlIGZpZWxkcy4gU3RhbmRhcmQgdG9vbHMgbGlrZSBLQ1NBTiBvciBMT0NLREVQIGFyZSBiZXR0ZXIgc3VpdGVkIGZvciBsb2NraW5nIGFuZCBjb25jdXJyZW5jeSBpc3N1ZXMsIHdoaWxlIEtNU0FOIGlzIHNwZWNpZmljYWxseSBmb3IgZGV0ZWN0aW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCB3aGljaCBpcyBub3QgcmVsZXZhbnQgaGVyZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowcgsx2[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-10 23:33:26 +0000 UTC FinishedAt: 2026-08-10 23:51:14 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "6b8c8af514d739d0335f5579b585e02babe8a727", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ZRAM", "ZRAM_WRITEBACK", "ZRAM_MULTI_COMP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "6b8c8af514d739d0335f5579b585e02babe8a727", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ZRAM", "ZRAM_WRITEBACK", "ZRAM_MULTI_COMP" ], "series_id": "fec7849c-1ea8-448b-8a1f-a1f8c1603a16" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "zram_submit_bio", "disksize_store", "reset_store", "recompress_store", "writeback_store", "idle_store", "compact_store" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIzOjUwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1pSQU0mIzM0OywKICAgICYjMzQ7WlJBTV9XUklURUJBQ0smIzM0OywKICAgICYjMzQ7WlJBTV9NVUxUSV9DT01QJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7enJhbV9zdWJtaXRfYmlvJiMzNDssCiAgICAmIzM0O2Rpc2tzaXplX3N0b3JlJiMzNDssCiAgICAmIzM0O3Jlc2V0X3N0b3JlJiMzNDssCiAgICAmIzM0O3JlY29tcHJlc3Nfc3RvcmUmIzM0OywKICAgICYjMzQ7d3JpdGViYWNrX3N0b3JlJiMzNDssCiAgICAmIzM0O2lkbGVfc3RvcmUmIzM0OywKICAgICYjMzQ7Y29tcGFjdF9zdG9yZSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYml0LWxvY2sgcG9zaXRpb24gaXNzdWUgb24gNjQtYml0IGJpZy1lbmRpYW4gYXJjaGl0ZWN0dXJlcyBpbiB0aGUgenJhbSBkcml2ZXIuIEl0IGVuc3VyZXMgdGhhdCB0aGUgbG9jayBiaXQgbGFuZHMgaW4gdGhlIGNvcnJlY3QgcG9zaXRpb24gd2l0aGluIHRoZSBgX19sb2NrYCB3b3JkLCB3aGljaCBpcyBhbGlhc2VkIGJ5IHR3byBgdTMyYHMuIFRoaXMgaXMgYSBsb2NraW5nIGFuZCBiaXQgbWFuaXB1bGF0aW9uIGZpeCwgbm90IHJlbGF0ZWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnksIGluZm8tbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlIGZpZWxkcy4gU3RhbmRhcmQgdG9vbHMgbGlrZSBLQ1NBTiBvciBMT0NLREVQIGFyZSBiZXR0ZXIgc3VpdGVkIGZvciBsb2NraW5nIGFuZCBjb25jdXJyZW5jeSBpc3N1ZXMsIHdoaWxlIEtNU0FOIGlzIHNwZWNpZmljYWxseSBmb3IgZGV0ZWN0aW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCB3aGljaCBpcyBub3QgcmVsZXZhbnQgaGVyZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBsb2NraW5nIGJ1ZyBpbiB6cmFtIG9uIDY0LWJpdCBiaWctZW5kaWFuIHN5c3RlbXMgYnkgY29ycmVjdGluZyB0aGUgYml0IHBvc2l0aW9uIHVzZWQgZm9yIFpSQU1fRU5UUllfTE9DSy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIGV4ZWN1dGlvbiBmbG93IG9uIGJpZy1lbmRpYW4gYXJjaGl0ZWN0dXJlcyBsaWtlIHMzOTB4LCB3aGljaCBhcmUgc3VwcG9ydGVkIGJ5IHN5emthbGxlci4gRnV6emluZyB6cmFtIGJsb2NrIGRldmljZSBvcGVyYXRpb25zIGFuZCBzeXNmcyBpbnRlcmZhY2VzIGNhbiBoZWxwIHZlcmlmeSB0aGUgZml4LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIzOjUwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMmFjZWI0YWViYzU3ZTMzY2I5OTYyNDhjOTFiNmMwYjRjZGQxYTU5NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDEwIDIzOjUwOjAwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jIGIvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmNcbmluZGV4IGQwOWZkY2E0OWNiZGEuLmE5YjNiYjFkM2JlZjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmNcbkBAIC03NCw3ICYjNDM7NzQsNyBAQCBzdGF0aWMgX19tdXN0X2NoZWNrIGJvb2wgc2xvdF90cnlsb2NrKHN0cnVjdCB6cmFtICp6cmFtLCB1bnNpZ25lZCBsb25nIGluZGV4KVxuIHtcbiBcdHVuc2lnbmVkIGxvbmcgKmxvY2sgPSBcdTAwMjZ6cmFtLVx1MDAzZXRhYmxlW2luZGV4XS5fX2xvY2s7XG4gXG4tXHRpZiAoIXRlc3RfYW5kX3NldF9iaXRfbG9jayhaUkFNX0VOVFJZX0xPQ0ssIGxvY2spKSB7XG4mIzQzO1x0aWYgKCF0ZXN0X2FuZF9zZXRfYml0X2xvY2soWlJBTV9FTlRSWV9MT0NLX0JJVCwgbG9jaykpIHtcbiBcdFx0bXV0ZXhfYWNxdWlyZShcdTAwMjZ6cmFtLVx1MDAzZXRhYmxlX2xvY2tfbWFwLCAwLCAxLCBfUkVUX0lQXyk7XG4gXHRcdGxvY2tfYWNxdWlyZWQoXHUwMDI2enJhbS1cdTAwM2V0YWJsZV9sb2NrX21hcCwgX1JFVF9JUF8pO1xuIFx0XHRyZXR1cm4gdHJ1ZTtcbkBAIC04OCw3ICYjNDM7ODgsNyBAQCBzdGF0aWMgdm9pZCBzbG90X2xvY2soc3RydWN0IHpyYW0gKnpyYW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpXG4gXHR1bnNpZ25lZCBsb25nICpsb2NrID0gXHUwMDI2enJhbS1cdTAwM2V0YWJsZVtpbmRleF0uX19sb2NrO1xuIFxuIFx0bXV0ZXhfYWNxdWlyZShcdTAwMjZ6cmFtLVx1MDAzZXRhYmxlX2xvY2tfbWFwLCAwLCAwLCBfUkVUX0lQXyk7XG4tXHR3YWl0X29uX2JpdF9sb2NrKGxvY2ssIFpSQU1fRU5UUllfTE9DSywgVEFTS19VTklOVEVSUlVQVElCTEUpO1xuJiM0MztcdHdhaXRfb25fYml0X2xvY2sobG9jaywgWlJBTV9FTlRSWV9MT0NLX0JJVCwgVEFTS19VTklOVEVSUlVQVElCTEUpO1xuIFx0bG9ja19hY3F1aXJlZChcdTAwMjZ6cmFtLVx1MDAzZXRhYmxlX2xvY2tfbWFwLCBfUkVUX0lQXyk7XG4gfVxuIFxuQEAgLTk3LDcgJiM0Mzs5Nyw3IEBAIHN0YXRpYyB2b2lkIHNsb3RfdW5sb2NrKHN0cnVjdCB6cmFtICp6cmFtLCB1bnNpZ25lZCBsb25nIGluZGV4KVxuIFx0dW5zaWduZWQgbG9uZyAqbG9jayA9IFx1MDAyNnpyYW0tXHUwMDNldGFibGVbaW5kZXhdLl9fbG9jaztcbiBcbiBcdG11dGV4X3JlbGVhc2UoXHUwMDI2enJhbS1cdTAwM2V0YWJsZV9sb2NrX21hcCwgX1JFVF9JUF8pO1xuLVx0Y2xlYXJfYW5kX3dha2VfdXBfYml0KFpSQU1fRU5UUllfTE9DSywgbG9jayk7XG4mIzQzO1x0Y2xlYXJfYW5kX3dha2VfdXBfYml0KFpSQU1fRU5UUllfTE9DS19CSVQsIGxvY2spO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIGJvb2wgaW5pdF9kb25lKHN0cnVjdCB6cmFtICp6cmFtKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oIGIvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmhcbmluZGV4IDRmZGRjNTgyZjNiODIuLjdhNTVkNzUxNDE3ZTIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmhcbkBAIC0xNSw2ICYjNDM7MTUsNyBAQFxuICNpZm5kZWYgX1pSQU1fRFJWX0hfXG4gI2RlZmluZSBfWlJBTV9EUlZfSF9cbiBcbiYjNDM7I2luY2x1ZGUgXHUwMDNjYXNtL2J5dGVvcmRlci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcndzZW0uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3pzbWFsbG9jLmhcdTAwM2VcbiBcbkBAIC01Nyw2ICYjNDM7NTgsMTkgQEAgZW51bSB6cmFtX3BhZ2VmbGFncyB7XG4gXHRfX05SX1pSQU1fUEFHRUZMQUdTLFxuIH07XG4gXG4mIzQzOy8qXG4mIzQzOyAqIFRoZSBzbG90IGxvY2sgaXMgYSBiaXQtd2FpdCBsb2NrIG9uIHRoZSB3aG9sZSBfX2xvY2sgd29yZCwgd2hpbGVcbiYjNDM7ICogZmxhZ3MgYW5kIGFjX3RpbWUgYWxpYXMgdGhhdCB3b3JkIGFzIHR3byB1MzJzLiAgVGhlIGxvY2sgYml0IG11c3RcbiYjNDM7ICogbGFuZCBpbiB0aGUgc2xvdCB0aGF0IFpSQU1fRU5UUllfTE9DSyByZXNlcnZlcyBpbiBhdHRyLmZsYWdzOyBvblxuJiM0MzsgKiA2NC1iaXQgYmlnLWVuZGlhbiB0aGUgZmxhZ3Mgd29yZCBtYXBzIHRvIHRoZSB1cHBlciBoYWxmIG9mIF9fbG9jayxcbiYjNDM7ICogc28gdGhlIGJpdCBwb3NpdGlvbiBoYXMgdG8gYmUgc2hpZnRlZCB1cC5cbiYjNDM7ICovXG4mIzQzOyNpZiBkZWZpbmVkKENPTkZJR182NEJJVCkgXHUwMDI2XHUwMDI2IGRlZmluZWQoX19CSUdfRU5ESUFOKVxuJiM0MzsjZGVmaW5lIFpSQU1fRU5UUllfTE9DS19CSVQgIChaUkFNX0VOVFJZX0xPQ0sgJiM0MzsgMzIpXG4mIzQzOyNlbHNlXG4mIzQzOyNkZWZpbmUgWlJBTV9FTlRSWV9MT0NLX0JJVCAgWlJBTV9FTlRSWV9MT0NLXG4mIzQzOyNlbmRpZlxuJiM0MztcbiAvKlxuICAqIEFsbG9jYXRlZCBmb3IgZWFjaCBkaXNrIHBhZ2UuICBXZSB1c2UgYml0LWxvY2sgKFpSQU1fRU5UUllfTE9DSyBiaXRcbiAgKiBvZiBmbGFncykgdG8gc2F2ZSBtZW1vcnkuICBUaGVyZSBjYW4gYmUgcGxlbnR5IG9mIGVudHJpZXMgYW5kIHN0YW5kYXJkXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjM6NTA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1pSQU0mIzM0OywKICAgICYjMzQ7WlJBTV9XUklURUJBQ0smIzM0OywKICAgICYjMzQ7WlJBTV9NVUxUSV9DT01QJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7enJhbV9zdWJtaXRfYmlvJiMzNDssCiAgICAmIzM0O2Rpc2tzaXplX3N0b3JlJiMzNDssCiAgICAmIzM0O3Jlc2V0X3N0b3JlJiMzNDssCiAgICAmIzM0O3JlY29tcHJlc3Nfc3RvcmUmIzM0OywKICAgICYjMzQ7d3JpdGViYWNrX3N0b3JlJiMzNDssCiAgICAmIzM0O2lkbGVfc3RvcmUmIzM0OywKICAgICYjMzQ7Y29tcGFjdF9zdG9yZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGxvY2tpbmcgYnVnIGluIHpyYW0gb24gNjQtYml0IGJpZy1lbmRpYW4gc3lzdGVtcyBieSBjb3JyZWN0aW5nIHRoZSBiaXQgcG9zaXRpb24gdXNlZCBmb3IgWlJBTV9FTlRSWV9MT0NLLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbHRlcnMgZXhlY3V0aW9uIGZsb3cgb24gYmlnLWVuZGlhbiBhcmNoaXRlY3R1cmVzIGxpa2UgczM5MHgsIHdoaWNoIGFyZSBzdXBwb3J0ZWQgYnkgc3l6a2FsbGVyLiBGdXp6aW5nIHpyYW0gYmxvY2sgZGV2aWNlIG9wZXJhdGlvbnMgYW5kIHN5c2ZzIGludGVyZmFjZXMgY2FuIGhlbHAgdmVyaWZ5IHRoZSBmaXguJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyYWNlYjRhZWJjNTdlMzNjYjk5NjI0OGM5MWI2YzBiNGNkZDFhNTk1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMTAgMjM6NTA6MDAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYyBiL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jCmluZGV4IGQwOWZkY2E0OWNiZGEuLmE5YjNiYjFkM2JlZjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jCkBAIC03NCw3ICYjNDM7NzQsNyBAQCBzdGF0aWMgX19tdXN0X2NoZWNrIGJvb2wgc2xvdF90cnlsb2NrKHN0cnVjdCB6cmFtICp6cmFtLCB1bnNpZ25lZCBsb25nIGluZGV4KQogewogCXVuc2lnbmVkIGxvbmcgKmxvY2sgPSAmYW1wO3pyYW0tJmd0O3RhYmxlW2luZGV4XS5fX2xvY2s7CiAKLQlpZiAoIXRlc3RfYW5kX3NldF9iaXRfbG9jayhaUkFNX0VOVFJZX0xPQ0ssIGxvY2spKSB7CiYjNDM7CWlmICghdGVzdF9hbmRfc2V0X2JpdF9sb2NrKFpSQU1fRU5UUllfTE9DS19CSVQsIGxvY2spKSB7CiAJCW11dGV4X2FjcXVpcmUoJmFtcDt6cmFtLSZndDt0YWJsZV9sb2NrX21hcCwgMCwgMSwgX1JFVF9JUF8pOwogCQlsb2NrX2FjcXVpcmVkKCZhbXA7enJhbS0mZ3Q7dGFibGVfbG9ja19tYXAsIF9SRVRfSVBfKTsKIAkJcmV0dXJuIHRydWU7CkBAIC04OCw3ICYjNDM7ODgsNyBAQCBzdGF0aWMgdm9pZCBzbG90X2xvY2soc3RydWN0IHpyYW0gKnpyYW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpCiAJdW5zaWduZWQgbG9uZyAqbG9jayA9ICZhbXA7enJhbS0mZ3Q7dGFibGVbaW5kZXhdLl9fbG9jazsKIAogCW11dGV4X2FjcXVpcmUoJmFtcDt6cmFtLSZndDt0YWJsZV9sb2NrX21hcCwgMCwgMCwgX1JFVF9JUF8pOwotCXdhaXRfb25fYml0X2xvY2sobG9jaywgWlJBTV9FTlRSWV9MT0NLLCBUQVNLX1VOSU5URVJSVVBUSUJMRSk7CiYjNDM7CXdhaXRfb25fYml0X2xvY2sobG9jaywgWlJBTV9FTlRSWV9MT0NLX0JJVCwgVEFTS19VTklOVEVSUlVQVElCTEUpOwogCWxvY2tfYWNxdWlyZWQoJmFtcDt6cmFtLSZndDt0YWJsZV9sb2NrX21hcCwgX1JFVF9JUF8pOwogfQogCkBAIC05Nyw3ICYjNDM7OTcsNyBAQCBzdGF0aWMgdm9pZCBzbG90X3VubG9jayhzdHJ1Y3QgenJhbSAqenJhbSwgdW5zaWduZWQgbG9uZyBpbmRleCkKIAl1bnNpZ25lZCBsb25nICpsb2NrID0gJmFtcDt6cmFtLSZndDt0YWJsZVtpbmRleF0uX19sb2NrOwogCiAJbXV0ZXhfcmVsZWFzZSgmYW1wO3pyYW0tJmd0O3RhYmxlX2xvY2tfbWFwLCBfUkVUX0lQXyk7Ci0JY2xlYXJfYW5kX3dha2VfdXBfYml0KFpSQU1fRU5UUllfTE9DSywgbG9jayk7CiYjNDM7CWNsZWFyX2FuZF93YWtlX3VwX2JpdChaUkFNX0VOVFJZX0xPQ0tfQklULCBsb2NrKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGluaXRfZG9uZShzdHJ1Y3QgenJhbSAqenJhbSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oIGIvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmgKaW5kZXggNGZkZGM1ODJmM2I4Mi4uN2E1NWQ3NTE0MTdlMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmgKQEAgLTE1LDYgJiM0MzsxNSw3IEBACiAjaWZuZGVmIF9aUkFNX0RSVl9IXwogI2RlZmluZSBfWlJBTV9EUlZfSF8KIAomIzQzOyNpbmNsdWRlICZsdDthc20vYnl0ZW9yZGVyLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcndzZW0uaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC96c21hbGxvYy5oJmd0OwogCkBAIC01Nyw2ICYjNDM7NTgsMTkgQEAgZW51bSB6cmFtX3BhZ2VmbGFncyB7CiAJX19OUl9aUkFNX1BBR0VGTEFHUywKIH07CiAKJiM0MzsvKgomIzQzOyAqIFRoZSBzbG90IGxvY2sgaXMgYSBiaXQtd2FpdCBsb2NrIG9uIHRoZSB3aG9sZSBfX2xvY2sgd29yZCwgd2hpbGUKJiM0MzsgKiBmbGFncyBhbmQgYWNfdGltZSBhbGlhcyB0aGF0IHdvcmQgYXMgdHdvIHUzMnMuICBUaGUgbG9jayBiaXQgbXVzdAomIzQzOyAqIGxhbmQgaW4gdGhlIHNsb3QgdGhhdCBaUkFNX0VOVFJZX0xPQ0sgcmVzZXJ2ZXMgaW4gYXR0ci5mbGFnczsgb24KJiM0MzsgKiA2NC1iaXQgYmlnLWVuZGlhbiB0aGUgZmxhZ3Mgd29yZCBtYXBzIHRvIHRoZSB1cHBlciBoYWxmIG9mIF9fbG9jaywKJiM0MzsgKiBzbyB0aGUgYml0IHBvc2l0aW9uIGhhcyB0byBiZSBzaGlmdGVkIHVwLgomIzQzOyAqLwomIzQzOyNpZiBkZWZpbmVkKENPTkZJR182NEJJVCkgJmFtcDsmYW1wOyBkZWZpbmVkKF9fQklHX0VORElBTikKJiM0MzsjZGVmaW5lIFpSQU1fRU5UUllfTE9DS19CSVQgIChaUkFNX0VOVFJZX0xPQ0sgJiM0MzsgMzIpCiYjNDM7I2Vsc2UKJiM0MzsjZGVmaW5lIFpSQU1fRU5UUllfTE9DS19CSVQgIFpSQU1fRU5UUllfTE9DSwomIzQzOyNlbmRpZgomIzQzOwogLyoKICAqIEFsbG9jYXRlZCBmb3IgZWFjaCBkaXNrIHBhZ2UuICBXZSB1c2UgYml0LWxvY2sgKFpSQU1fRU5UUllfTE9DSyBiaXQKICAqIG9mIGZsYWdzKSB0byBzYXZlIG1lbW9yeS4gIFRoZXJlIGNhbiBiZSBwbGVudHkgb2YgZW50cmllcyBhbmQgc3RhbmRhcmQKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjM6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc3MwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDQzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBaUkFNIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQmIzM5O3MgdG91Y2hpbmcgYGRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jYCBhbmQgYGRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSByZW5hbWluZyBgWlJBTV9FTlRSWV9MT0NLYCB0byBgWlJBTV9FTlRSWV9MT0NLX0JJVGAgaW4gdGhlIGBzbG90X3RyeWxvY2tgLCBgc2xvdF9sb2NrYCwgYW5kIGBzbG90X3VubG9ja2AgZnVuY3Rpb25zLiBJdCBsb29rcyBsaWtlIGl0IGRlZmluZXMgYFpSQU1fRU5UUllfTE9DS19CSVRgIGRpZmZlcmVudGx5IGJhc2VkIG9uIHRoZSBzeXN0ZW0mIzM5O3MgZW5kaWFubmVzcyBhbmQgd2hldGhlciBpdCYjMzk7cyA2NC1iaXQuIEFoLCB0aGlzIGlzIGEgYnVnIGZpeCDigJMgdGFyZ2V0aW5nIGEgcHJvYmxlbSB3aXRoIGJpdCBsb2NraW5nIG9uIGJpZy1lbmRpYW4gNjQtYml0IHN5c3RlbXMuCgpCdXQgd2FpdCwgZG9lcyB0aGlzIGNoYW5nZSBhbnl0aGluZyBvbiBsaXR0bGUtZW5kaWFuIG9yIDMyLWJpdCBzeXN0ZW1zPyBObywgaXQgbG9va3MgbGlrZSBgWlJBTV9FTlRSWV9MT0NLX0JJVGAganVzdCBiZWNvbWVzIGBaUkFNX0VOVFJZX0xPQ0tgIGZvciB0aG9zZS4gU28sIHN0cmljdGx5IHNwZWFraW5nLCB0aGUgZnVuY3Rpb25hbCBjaGFuZ2UgaXMgc3BlY2lmaWMgdG8gdGhhdCBuaWNoZSBhcmNoaXRlY3R1cmUuCgpUaGUgYmlnIHF1ZXN0aW9uOiBpcyB0aGlzIHdvcnRoIGZ1enppbmc/IFRoZSBwYXRjaCAqaXMqIGEgYnVnIGZpeCByZWxhdGVkIHRvIHpyYW0mIzM5O3MgbG9ja2luZywgd2hpY2gsIGluIHRoZW9yeSwgbWFrZXMgaXQgYW4gYXR0cmFjdGl2ZSB0YXJnZXQuIFpyYW0gaXRzZWxmIGlzIGtub3duIHRvIGJlIGZ1enphYmxlLiBCdXQgdGhlIHByb21wdCBzYXlzIHNvbWV0aGluZyBhYm91dCBub3QgZnV6emluZyBpZiBpdCYjMzk7cyBqdXN0IGNvbnN0YW50cywgYnV0IHRoaXMgYWN0dWFsbHkgYWx0ZXJzIHRoZSBleGVjdXRpb24gZmxvdywganVzdCBvbiB0aGF0IHNwZWNpZmljIGFyY2hpdGVjdHVyZS4KCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFN5emthbGxlciBzdXBwb3J0cyB4ODZfNjQgKGxpdHRsZS1lbmRpYW4pLCBhcm02NCwgcmlzY3Y2NCwgYW5kIHMzOTB4IChiaWctZW5kaWFuKS4gVGhlIGZpeCBpcyBmb3IgYmlnLWVuZGlhbiA2NC1iaXQsIHNvIGl0ICpjb3VsZCogaW1wYWN0IHMzOTB4LiBUaGlzIG1pZ2h0IGJlIHdvcnRoIGludmVzdGlnYXRpbmcuIFRoZSBwcm9tcHQgc2F5cyB0byByZXR1cm4gZmFsc2UgaWYgaXQgb25seSBjaGFuZ2VzIGNvbnN0YW50cyB0aGF0IGRvbiYjMzk7dCBhbHRlciBleGVjdXRpb24uIEkgZG9uJiMzOTt0IHRoaW5rIGl0IGNoYW5nZXMgZXhlY3V0aW9uIG9uIHRoZSBzdGFuZGFyZCBhcmNoaXRlY3R1cmVzLCBidXQgSSBkbyB0aGluayBpdCBhbHRlcnMgZXhlY3V0aW9uIG9uIHMzOTB4LiBMZXQgbWUgY2hlY2sgdGhlIHNvdXJjZSBmaWxlcy4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIzOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1pSQU1fRU5UUllfTE9DSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svenJhbS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9NzM9c3RhdGljIF9fbXVzdF9jaGVjayBib29sIHNsb3RfdHJ5bG9jayhzdHJ1Y3QgenJhbSAqenJhbSwgdW5zaWduZWQgbG9uZyBpbmRleClcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy03Ni1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjc3Olx0aWYgKCF0ZXN0X2FuZF9zZXRfYml0X2xvY2soWlJBTV9FTlRSWV9MT0NLX0JJVCwgbG9jaykpIHtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTc4LVx0XHRtdXRleF9hY3F1aXJlKFx1MDAyNnpyYW0tXHUwMDNldGFibGVfbG9ja19tYXAsIDAsIDEsIF9SRVRfSVBfKTtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz04Nj1zdGF0aWMgdm9pZCBzbG90X2xvY2soc3RydWN0IHpyYW0gKnpyYW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtOTAtXHRtdXRleF9hY3F1aXJlKFx1MDAyNnpyYW0tXHUwMDNldGFibGVfbG9ja19tYXAsIDAsIDAsIF9SRVRfSVBfKTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjkxOlx0d2FpdF9vbl9iaXRfbG9jayhsb2NrLCBaUkFNX0VOVFJZX0xPQ0tfQklULCBUQVNLX1VOSU5URVJSVVBUSUJMRSk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy05Mi1cdGxvY2tfYWNxdWlyZWQoXHUwMDI2enJhbS1cdTAwM2V0YWJsZV9sb2NrX21hcCwgX1JFVF9JUF8pO1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTk1PXN0YXRpYyB2b2lkIHNsb3RfdW5sb2NrKHN0cnVjdCB6cmFtICp6cmFtLCB1bnNpZ25lZCBsb25nIGluZGV4KVxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTk5LVx0bXV0ZXhfcmVsZWFzZShcdTAwMjZ6cmFtLVx1MDAzZXRhYmxlX2xvY2tfbWFwLCBfUkVUX0lQXyk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoxMDA6XHRjbGVhcl9hbmRfd2FrZV91cF9iaXQoWlJBTV9FTlRSWV9MT0NLX0JJVCwgbG9jayk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xMDEtfVxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oPTQ2PWVudW0genJhbV9wYWdlZmxhZ3Mge1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmgtNDctXHRaUkFNX1NBTUUgPSBaUkFNX0ZMQUdfU0hJRlQsXHQvKiBQYWdlIGNvbnNpc3RzIHRoZSBzYW1lIGVsZW1lbnQgKi9cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oOjQ4Olx0WlJBTV9FTlRSWV9MT0NLLCAvKiBlbnRyeSBhY2Nlc3MgbG9jayBiaXQgKi9cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oLTQ5LVx0WlJBTV9XQixcdC8qIHBhZ2UgaXMgc3RvcmVkIG9uIGJhY2tpbmdfZGV2aWNlICovXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmgtNjMtICogZmxhZ3MgYW5kIGFjX3RpbWUgYWxpYXMgdGhhdCB3b3JkIGFzIHR3byB1MzJzLiAgVGhlIGxvY2sgYml0IG11c3RcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oOjY0OiAqIGxhbmQgaW4gdGhlIHNsb3QgdGhhdCBaUkFNX0VOVFJZX0xPQ0sgcmVzZXJ2ZXMgaW4gYXR0ci5mbGFnczsgb25cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oLTY1LSAqIDY0LWJpdCBiaWctZW5kaWFuIHRoZSBmbGFncyB3b3JkIG1hcHMgdG8gdGhlIHVwcGVyIGhhbGYgb2YgX19sb2NrLFxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oLTY4LSNpZiBkZWZpbmVkKENPTkZJR182NEJJVCkgXHUwMDI2XHUwMDI2IGRlZmluZWQoX19CSUdfRU5ESUFOKVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2Lmg6Njk6I2RlZmluZSBaUkFNX0VOVFJZX0xPQ0tfQklUICAoWlJBTV9FTlRSWV9MT0NLICYjNDM7IDMyKVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmgtNzAtI2Vsc2VcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oOjcxOiNkZWZpbmUgWlJBTV9FTlRSWV9MT0NLX0JJVCAgWlJBTV9FTlRSWV9MT0NLXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuaC03Mi0jZW5kaWZcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuaC03NC0vKlxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2Lmg6NzU6ICogQWxsb2NhdGVkIGZvciBlYWNoIGRpc2sgcGFnZS4gIFdlIHVzZSBiaXQtbG9jayAoWlJBTV9FTlRSWV9MT0NLIGJpdFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmgtNzYtICogb2YgZmxhZ3MpIHRvIHNhdmUgbWVtb3J5LiAgVGhlcmUgY2FuIGJlIHBsZW50eSBvZiBlbnRyaWVzIGFuZCBzdGFuZGFyZFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIzOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2MzEKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUaGlzIFpSQU0gUGF0Y2ggLSBBIFdvcnRoeSBFbmRlYXZvcioqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGFkZHJlc3NlcyBhIGxvY2tpbmcgYnVnIHdpdGhpbiB6cmFtLCBzcGVjaWZpY2FsbHkgb24gNjQtYml0IGJpZy1lbmRpYW4gc3lzdGVtcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7V29ydGggZnV6emluZz8mIzM0OyBHaXZlbiB0aGUgc2NvcGUgb2YgdGhlIGNoYW5nZSwgd2hpY2ggaW52b2x2ZXMgdGhlIGNvcmUgenJhbSBsb2dpYyDigJMgdGhlIGxvY2tpbmcgbWVjaGFuaXNtIGl0c2VsZiDigJMgdGhlIGFuc3dlciBpcyBhIHJlc291bmRpbmcgJiMzNDtZZXMuJiMzNDsgVGhpcyBpcyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4KCk5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGNvbmZpcm0gaWYgenJhbSBpcyBldmVuIGZ1enphYmxlLiBMdWNraWx5LCBpdCBwcmVzZW50cyBhcyBhIGJsb2NrIGRldmljZSwgYWNjZXNzaWJsZSB0aHJvdWdoIGAvZGV2L3pyYW0wYC4gUGVyZmVjdCEgV2UgY2FuIGxldmVyYWdlIHN0YW5kYXJkIGJsb2NrIGRldmljZSBmdXp6aW5nIHRlY2huaXF1ZXMuCgpIb3dldmVyLCBhIHF1aWNrIHJldmlldyBvZiB0aGUgaW5zdHJ1Y3Rpb25zIHN0b3BzIG1lLiBUaGUgcHJvbXB0IHN0YXRlcyB0aGF0IGlmIHRoZSBwYXRjaCAqb25seSogaW52b2x2ZXMgY2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkb24mIzM5O3QgYWx0ZXIgZnVuY3Rpb25hbCBleGVjdXRpb24sIHRoZSBhbnN3ZXIgaXMgJiMzNDtXb3J0aEZ1enppbmc9ZmFsc2UmIzM0Oy4gT24gbGl0dGxlLWVuZGlhbiBhcmNoaXRlY3R1cmVzIGxpa2UgeDg2XzY0LCB0aGlzIHBhdGNoIGxpa2VseSAqd291bGRuJiMzOTt0KiBjaGFuZ2UgdGhlIGV4ZWN1dGlvbiBmbG93LiBIb3dldmVyLCB0aGUgY2F0Y2ggaXMgdGhlIGJpZy1lbmRpYW4gc3lzdGVtcy4gU2luY2UgdGhpcyBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBsb2NraW5nIG1lY2hhbmlzbSwgaXQgZG9lcyBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cgb24gYSBiaWctZW5kaWFuIGFyY2hpdGVjdHVyZS4KClRoZSBnb29kIG5ld3MgaXMgdGhhdCBTeXprYWxsZXIgKmRvZXMqIHN1cHBvcnQgczM5MHgsIHdoaWNoIGlzIGEgYmlnLWVuZGlhbiBhcmNoaXRlY3R1cmUuIFRoZXJlZm9yZSwgZ2l2ZW4gdGhlIHBsYXRmb3JtIHN1cHBvcnQgYW5kIHRoZSBtb2RpZmljYXRpb24gdG8gY29yZSBsb2dpYywgdGhpcyBwYXRjaCAqaXMqIHdvcnRoIGZ1enppbmcuIFRoZSBuZXh0IHN0ZXAgaXMgdG8gZmluZCB0aGUgcmVsZXZhbnQgenJhbSBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIzOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBaUkFNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjI6Y29uZmlnIFpSQU1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtDb21wcmVzc2VkIFJBTSBibG9jayBkZXZpY2Ugc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTE2LVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MTc6Y29uZmlnIFpSQU1fQkFDS0VORF9MWjRcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTE4LVx0Ym9vbCBcJiMzNDtsejQgY29tcHJlc3Npb24gc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTIyLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MjM6Y29uZmlnIFpSQU1fQkFDS0VORF9MWjRIQ1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMjQtXHRib29sIFwmIzM0O2x6NGhjIGNvbXByZXNzaW9uIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0yOC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjI5OmNvbmZpZyBaUkFNX0JBQ0tFTkRfWlNURFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMzAtXHRib29sIFwmIzM0O3pzdGQgY29tcHJlc3Npb24gc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTM0LVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MzU6Y29uZmlnIFpSQU1fQkFDS0VORF9ERUZMQVRFXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0zNi1cdGJvb2wgXCYjMzQ7ZGVmbGF0ZSBjb21wcmVzc2lvbiBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNDAtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo0MTpjb25maWcgWlJBTV9CQUNLRU5EXzg0MlxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNDItXHRib29sIFwmIzM0Ozg0MiBjb21wcmVzc2lvbiBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNDYtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo0Nzpjb25maWcgWlJBTV9CQUNLRU5EX0ZPUkNFX0xaT1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNDgtXHRkZXBlbmRzIG9uIFpSQU1cbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy01Mi1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjUzOmNvbmZpZyBaUkFNX0JBQ0tFTkRfTFpPXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy01NC1cdGJvb2wgXCYjMzQ7bHpvIGFuZCBsem8tcmxlIGNvbXByZXNzaW9uIHN1cHBvcnRcJiMzNDsgaWYgIVpSQU1fQkFDS0VORF9GT1JDRV9MWk9cbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz02MD1jaG9pY2Vcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy02NC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjY1OmNvbmZpZyBaUkFNX0RFRl9DT01QX0xaT1JMRVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNjYtXHRib29sIFwmIzM0O2x6by1ybGVcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy02OC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjY5OmNvbmZpZyBaUkFNX0RFRl9DT01QX0xaT1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzAtXHRib29sIFwmIzM0O2x6b1wmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTcyLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NzM6Y29uZmlnIFpSQU1fREVGX0NPTVBfTFo0XG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy03NC1cdGJvb2wgXCYjMzQ7bHo0XCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzYtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo3Nzpjb25maWcgWlJBTV9ERUZfQ09NUF9MWjRIQ1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzgtXHRib29sIFwmIzM0O2x6NGhjXCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODAtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo4MTpjb25maWcgWlJBTV9ERUZfQ09NUF9aU1REXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy04Mi1cdGJvb2wgXCYjMzQ7enN0ZFwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTg0LVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6ODU6Y29uZmlnIFpSQU1fREVGX0NPTVBfREVGTEFURVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODYtXHRib29sIFwmIzM0O2RlZmxhdGVcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy04OC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjg5OmNvbmZpZyBaUkFNX0RFRl9DT01QXzg0MlxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctOTAtXHRib29sIFwmIzM0Ozg0MlwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnPTkzPWVuZGNob2ljZVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctOTQtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo5NTpjb25maWcgWlJBTV9ERUZfQ09NUFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctOTYtXHRzdHJpbmdcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMDYtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxMDc6Y29uZmlnIFpSQU1fV1JJVEVCQUNLXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMDgtICAgICAgIGJvb2wgXCYjMzQ7V3JpdGUgYmFjayBpbmNvbXByZXNzaWJsZSBvciBpZGxlIHBhZ2UgdG8gYmFja2luZyBkZXZpY2VcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMjAtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxMjE6Y29uZmlnIFpSQU1fVFJBQ0tfRU5UUllfQUNUSU1FXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMjItXHRib29sIFwmIzM0O1RyYWNrIGFjY2VzcyB0aW1lIG9mIHpyYW0gZW50cmllc1wmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEyOC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjEyOTpjb25maWcgWlJBTV9NRU1PUllfVFJBQ0tJTkdcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEzMC1cdGJvb2wgXCYjMzQ7VHJhY2sgelJhbSBibG9jayBzdGF0dXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMzktXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxNDA6Y29uZmlnIFpSQU1fTVVMVElfQ09NUFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTQxLVx0Ym9vbCBcJiMzNDtFbmFibGUgbXVsdGlwbGUgY29tcHJlc3Npb24gc3RyZWFtc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIzOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0NDkKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczoKCioqWlJBTSBEZXBlbmRlbmN5IENoZWNrKioKCk9rYXksIHRoZSBjb25maWd1cmF0aW9uIEkmIzM5O20gd29ya2luZyB3aXRoIGlzIHNldCB0byBgWlJBTWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O2RvZXMgYFpSQU1gIGhhdmUgYW55IGRlcGVuZGVuY2llcyB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZj8mIzM0Oy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgc2NvcGUgb2Ygd2hhdCBhY3RpdmF0aW5nIG9yIG1vZGlmeWluZyBgWlJBTWAgbWlnaHQgaW52b2x2ZS4gVGhpcyBjb3VsZCBiZSBoYXJkd2FyZSwga2VybmVsIG1vZHVsZXMsIHNwZWNpZmljIGRyaXZlcnMsIG9yIG90aGVyIHN5c3RlbSBzZXR0aW5ncy4gVW5kZXJzdGFuZGluZyB0aGVzZSBkZXBlbmRlbmNpZXMgaXMgY3J1Y2lhbCBmb3IgYSBjbGVhbiBpbXBsZW1lbnRhdGlvbi4gSSBzaG91bGQgcHJvYmFibHkgc3RhcnQgbWFwcGluZyBvdXQgd2hhdCB0aG9zZSBjb3VsZCBiZS4gVGltZSB0byBkaWcgZGVlcGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIzOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDE1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0Y29uZmlnIFpSQU1cbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O0NvbXByZXNzZWQgUkFNIGJsb2NrIGRldmljZSBzdXBwb3J0XCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIEJMT0NLIFx1MDAyNlx1MDAyNiBTWVNGUyBcdTAwMjZcdTAwMjYgTU1VXG4gICA1Olx0XHRzZWxlY3QgWlNNQUxMT0NcbiAgIDY6XHRcdGhlbHBcbiAgIDc6XHRcdCAgQ3JlYXRlcyB2aXJ0dWFsIGJsb2NrIGRldmljZXMgY2FsbGVkIC9kZXYvenJhbVggKFggPSAwLCAxLCAuLi4pLlxuICAgODpcdFx0ICBQYWdlcyB3cml0dGVuIHRvIHRoZXNlIGRpc2tzIGFyZSBjb21wcmVzc2VkIGFuZCBzdG9yZWQgaW4gbWVtb3J5XG4gICA5Olx0XHQgIGl0c2VsZi4gVGhlc2UgZGlza3MgYWxsb3cgdmVyeSBmYXN0IEkvTyBhbmQgY29tcHJlc3Npb24gcHJvdmlkZXNcbiAgMTA6XHRcdCAgZ29vZCBhbW91bnRzIG9mIG1lbW9yeSBzYXZpbmdzLlxuICAxMTpcdFxuICAxMjpcdFx0ICBJdCBoYXMgc2V2ZXJhbCB1c2UgY2FzZXMsIGZvciBleGFtcGxlOiAvdG1wIHN0b3JhZ2UsIHVzZSBhcyBzd2FwXG4gIDEzOlx0XHQgIGRpc2tzIGFuZCBtYXliZSBtYW55IG1vcmUuXG4gIDE0Olx0XG4gIDE1Olx0XHQgIFNlZSBEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2Jsb2NrZGV2L3pyYW0ucnN0IGZvciBtb3JlIGluZm9ybWF0aW9uLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIzOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY4NTgKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqTXkgVGhpbmtpbmcgb24gWlJBTSBhbmQgS2VybmVsIE1vZGlmaWNhdGlvbnMqKgoKUmlnaHQsIHNvIHRoaXMga2VybmVsLWxldmVsIG9wdGltaXphdGlvbiBoaW5nZXMgb24gYSBmZXcgY29yZSBjb21wb25lbnRzOiBgQkxPQ0tgLCBgU1lTRlNgLCBhbmQgdGhlIGBNTVVgLiBCYXNlZCBvbiB0aGF0LCBhbmQgY29uc2lkZXJpbmcgdGhlIHByb2JsZW0gZG9tYWluLCBpdCBsb29rcyBsaWtlIGBaU01BTExPQ2AgaXMgdGhlIHByZWZlcnJlZCBhbGxvY2F0b3IuIElmIHRoYXQmIzM5O3MgdGhlIGNhc2UsIHRoZW4gYFpSQU1gIGl0c2VsZiBzaG91bGQgYmUgc3VmZmljaWVudCBmb3IgdGhlIHJlcXVpcmVkIGZ1bmN0aW9uYWxpdHkuIFNlZW1zIGxpa2UgYSBkZWNlbnQgc3RhcnRpbmcgcG9pbnQuCgpOb3csIGxldCYjMzk7cyBwaW5wb2ludCB0aGUgY3J1eCBvZiB0aGlzIG1vZGlmaWNhdGlvbi4gSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggSSYjMzk7bSBleGFtaW5pbmcgaXMgZm9jdXNlZCBvbiB0aGVzZSBgc2xvdF90cnlsb2NrYCwgYHNsb3RfbG9ja2AsIGFuZCBgc2xvdF91bmxvY2tgIGZ1bmN0aW9ucy4gQW5kIHRoZXkmIzM5O3JlICpzdGF0aWMqLCB3aGljaCBpcyBpbXBvcnRhbnQgY29udGV4dC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkLiBLbm93aW5nIHRoZSBjYWxsIHNpdGVzIHdpbGwgYmUga2V5IHRvIGdyYXNwaW5nIHRoZSBmdWxsIGltcGFjdCBvZiB0aGVzZSBjaGFuZ2VzLiBJJiMzOTtsbCBmb2N1cyBvbiB3aGVyZSB0aG9zZSBhcmUgaW52b2tlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjM6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2xvdF9sb2NrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9NzM9c3RhdGljIF9fbXVzdF9jaGVjayBib29sIHNsb3RfdHJ5bG9jayhzdHJ1Y3QgenJhbSAqenJhbSwgdW5zaWduZWQgbG9uZyBpbmRleClcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy04NS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjg2OnN0YXRpYyB2b2lkIHNsb3RfbG9jayhzdHJ1Y3QgenJhbSAqenJhbSwgdW5zaWduZWQgbG9uZyBpbmRleClcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTg3LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0yNTU9c3RhdGljIHZvaWQgcmVsZWFzZV9wcF9zbG90KHN0cnVjdCB6cmFtICp6cmFtLCBzdHJ1Y3QgenJhbV9wcF9zbG90ICpwcHMpXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjU4LVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MjU5Olx0c2xvdF9sb2NrKHpyYW0sIHBwcy1cdTAwM2VpbmRleCk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yNjAtXHRjbGVhcl9zbG90X2ZsYWcoenJhbSwgcHBzLVx1MDAzZWluZGV4LCBaUkFNX1BQX1NMT1QpO1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTQxOD1zdGF0aWMgdm9pZCBtYXJrX2lkbGUoc3RydWN0IHpyYW0gKnpyYW0sIGt0aW1lX3QgY3V0b2ZmKVxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTQzMS1cdFx0ICovXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzo0MzI6XHRcdHNsb3RfbG9jayh6cmFtLCBpbmRleCk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy00MzMtXHRcdGlmICghc2xvdF9hbGxvY2F0ZWQoenJhbSwgaW5kZXgpIHx8XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9OTEzPXN0YXRpYyBpbnQgenJhbV93cml0ZWJhY2tfY29tcGxldGUoc3RydWN0IHpyYW0gKnpyYW0sIHN0cnVjdCB6cmFtX3diX3JlcSAqcmVxKVxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTkyOS1cdGF0b21pYzY0X2luYyhcdTAwMjZ6cmFtLVx1MDAzZXN0YXRzLmJkX3dyaXRlcyk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzo5MzA6XHRzbG90X2xvY2soenJhbSwgaW5kZXgpO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtOTMxLVx0Lypcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xMDI5PXN0YXRpYyBpbnQgenJhbV93cml0ZWJhY2tfc2xvdHMoc3RydWN0IHpyYW0gKnpyYW0sXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTA3NC1cdFx0aW5kZXggPSBwcHMtXHUwMDNlaW5kZXg7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoxMDc1Olx0XHRzbG90X2xvY2soenJhbSwgaW5kZXgpO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTA3Ni1cdFx0Lypcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xMTk5PXN0YXRpYyB2b2lkIHNjYW5fc2xvdHNfZm9yX3dyaXRlYmFjayhzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIG1vZGUsXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTIwNy1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjEyMDg6XHRcdHNsb3RfbG9jayh6cmFtLCBpbmRleCk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xMjA5LVx0XHRpZiAoIXNsb3RfYWxsb2NhdGVkKHpyYW0sIGluZGV4KSlcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xMzQxPXN0YXRpYyBpbnQgZGVjb21wcmVzc19iZGV2X3BhZ2Uoc3RydWN0IHpyYW0gKnpyYW0sIHN0cnVjdCBwYWdlICpwYWdlLFxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTEzNDgtXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoxMzQ5Olx0c2xvdF9sb2NrKHpyYW0sIGluZGV4KTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTEzNTAtXHQvKiBTaW5jZSBzbG90IHdhcyB1bmxvY2tlZCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSBpdCYjMzk7cyBzdGlsbCBaUkFNX1dCICovXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MTU0NT1zdGF0aWMgc3NpemVfdCByZWFkX2Jsb2NrX3N0YXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqYnVmLFxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE1NjgtXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoxNTY5Olx0XHRzbG90X2xvY2soenJhbSwgaW5kZXgpO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTU3MC1cdFx0aWYgKCFzbG90X2FsbG9jYXRlZCh6cmFtLCBpbmRleCkpXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MjE3ND1zdGF0aWMgaW50IHpyYW1fcmVhZF9wYWdlKHN0cnVjdCB6cmFtICp6cmFtLCBzdHJ1Y3QgcGFnZSAqcGFnZSxcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yMTc4LVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MjE3OTpcdHNsb3RfbG9jayh6cmFtLCBpbmRleCk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yMTgwLVx0aWYgKCF0ZXN0X3Nsb3RfZmxhZyh6cmFtLCBpbmRleCwgWlJBTV9XQikpIHtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0yMjI5PXN0YXRpYyBpbnQgd3JpdGVfc2FtZV9maWxsZWRfcGFnZShzdHJ1Y3QgenJhbSAqenJhbSwgdW5zaWduZWQgbG9uZyBmaWxsLFxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTIyMzEte1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MjIzMjpcdHNsb3RfbG9jayh6cmFtLCBpbmRleCk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yMjMzLVx0c2xvdF9mcmVlKHpyYW0sIGluZGV4KTtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0yMjQ0PXN0YXRpYyBpbnQgd3JpdGVfaW5jb21wcmVzc2libGVfcGFnZShzdHJ1Y3QgenJhbSAqenJhbSwgc3RydWN0IHBhZ2UgKnBhZ2UsXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjI2OS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjIyNzA6XHRzbG90X2xvY2soenJhbSwgaW5kZXgpO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjI3MS1cdHNsb3RfZnJlZSh6cmFtLCBpbmRleCk7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MjI4NT1zdGF0aWMgaW50IHpyYW1fd3JpdGVfcGFnZShzdHJ1Y3QgenJhbSAqenJhbSwgc3RydWN0IHBhZ2UgKnBhZ2UsXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjMzNS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjIzMzY6XHRzbG90X2xvY2soenJhbSwgaW5kZXgpO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjMzNy1cdHNsb3RfZnJlZSh6cmFtLCBpbmRleCk7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MjM5ND1zdGF0aWMgdm9pZCBzY2FuX3Nsb3RzX2Zvcl9yZWNvbXByZXNzKHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgbW9kZSwgdTMyIHByaW8sXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjQwMi1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI0MDM6XHRcdHNsb3RfbG9jayh6cmFtLCBpbmRleCk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yNDA0LVx0XHRpZiAoIXNsb3RfYWxsb2NhdGVkKHpyYW0sIGluZGV4KSlcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0yNTQ2PXN0YXRpYyBzc2l6ZV90IHJlY29tcHJlc3Nfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI2NjMtXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoyNjY0Olx0XHRzbG90X2xvY2soenJhbSwgcHBzLVx1MDAzZWluZGV4KTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI2NjUtXHRcdGlmICghdGVzdF9zbG90X2ZsYWcoenJhbSwgcHBzLVx1MDAzZWluZGV4LCBaUkFNX1BQX1NMT1QpKVxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTI2OTA9c3RhdGljIHZvaWQgenJhbV9iaW9fZGlzY2FyZChzdHJ1Y3QgenJhbSAqenJhbSwgc3RydWN0IGJpbyAqYmlvKVxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI3MTUtXHR3aGlsZSAobiBcdTAwM2U9IFBBR0VfU0laRSkge1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MjcxNjpcdFx0c2xvdF9sb2NrKHpyYW0sIGluZGV4KTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI3MTctXHRcdHNsb3RfZnJlZSh6cmFtLCBpbmRleCk7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MjcyOD1zdGF0aWMgdm9pZCB6cmFtX2Jpb19yZWFkKHN0cnVjdCB6cmFtICp6cmFtLCBzdHJ1Y3QgYmlvICpiaW8pXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjc0Ny1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI3NDg6XHRcdHNsb3RfbG9jayh6cmFtLCBpbmRleCk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yNzQ5LVx0XHRtYXJrX3Nsb3RfYWNjZXNzZWQoenJhbSwgaW5kZXgpO1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTI3NTk9c3RhdGljIHZvaWQgenJhbV9iaW9fd3JpdGUoc3RydWN0IHpyYW0gKnpyYW0sIHN0cnVjdCBiaW8gKmJpbylcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yNzc3LVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjc3ODpcdFx0c2xvdF9sb2NrKHpyYW0sIGluZGV4KTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI3NzktXHRcdG1hcmtfc2xvdF9hY2Nlc3NlZCh6cmFtLCBpbmRleCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIzOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkzNzAKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFpSQU0gQ29uY3VycmVuY3kqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBaUkFNIGNvZGUgYW5kIGltbWVkaWF0ZWx5IEkgc2VlIGBzbG90X2xvY2tgIGJlaW5nIHVzZWQgYWNyb3NzIGEgYnVuY2ggb2Yga2V5IGZ1bmN0aW9uczogYHpyYW1fcmVhZF9wYWdlYCwgYHpyYW1fd3JpdGVfcGFnZWAsIGB6cmFtX2Jpb19kaXNjYXJkYCwgYHpyYW1fYmlvX3JlYWRgLCBgenJhbV9iaW9fd3JpdGVgLCBgenJhbV93cml0ZWJhY2tfc2xvdHNgLCBgcmVjb21wcmVzc19zdG9yZWAsIGFuZCBgcmVhZF9ibG9ja19zdGF0ZWAuIFRoYXQmIzM5O3MgYSBwcmV0dHkgYnJvYWQgc2NvcGUgZm9yIGEgc2luZ2xlIGxvY2ssIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCYjMzk7cyBiZWluZyB1c2VkIGFuZCBpZiB0aGVyZSBhcmUgYW55IHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBjb250ZW50aW9uIGlzc3Vlcy4KClJpZ2h0IG5vdywgSSYjMzk7bSBnb2luZyB0byB6ZXJvIGluIG9uIGB6cmFtX3JlYWRfcGFnZWAsIGB6cmFtX3dyaXRlX3BhZ2VgLCBgenJhbV9iaW9fZGlzY2FyZGAsIGB6cmFtX2Jpb19yZWFkYCwgYW5kIGB6cmFtX2Jpb193cml0ZWAsIGFzIHRob3NlIHNlZW0gbGlrZSB0aGUgY29yZSBJL08gb3BlcmF0aW9ucy4gSG9sZCBvbiBhIHNlY29uZC4uLiBhcmUgYHpyYW1fYmlvX3JlYWRgIGFuZCBgenJhbV9iaW9fd3JpdGVgIHN0YXRpYz8gWWVwLCB0aGV5IGFyZS4gVGhhdCBtZWFucyB0aGV5JiMzOTtyZSBub3QgZW50cnkgcG9pbnRzIGZyb20gb3V0c2lkZSB0aGlzIG1vZHVsZS4gT2theSwgdGhhdCYjMzk7cyBhbiBpbXBvcnRhbnQgcGllY2Ugb2YgaW5mb3JtYXRpb24uIEkgbmVlZCB0byBub3cgZm9jdXMgb24gdGhlIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzIHNvIEkgY2FuIHVuZGVyc3RhbmQgaG93IHRoZXNlIGZ1bmN0aW9ucyBhcmUgYmVpbmcgaW52b2tlZC4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSB0aG9zZSBmdW5jdGlvbiBjYWxscyBhbmQgc2VlIHdoZXJlIHRoZSBsb2NraW5nIG9jY3Vycy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjM6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7enJhbV9iaW9fcmVhZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTI2OTA9c3RhdGljIHZvaWQgenJhbV9iaW9fZGlzY2FyZChzdHJ1Y3QgenJhbSAqenJhbSwgc3RydWN0IGJpbyAqYmlvKVxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI3MjctXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoyNzI4OnN0YXRpYyB2b2lkIHpyYW1fYmlvX3JlYWQoc3RydWN0IHpyYW0gKnpyYW0sIHN0cnVjdCBiaW8gKmJpbylcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI3Mjkte1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTI3OTI9c3RhdGljIHZvaWQgenJhbV9zdWJtaXRfYmlvKHN0cnVjdCBiaW8gKmJpbylcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yNzk3LVx0Y2FzZSBSRVFfT1BfUkVBRDpcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI3OTg6XHRcdHpyYW1fYmlvX3JlYWQoenJhbSwgYmlvKTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI3OTktXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMzo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDExMgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgdGhvdWdoIEkgd2VyZSBjb25zaWRlcmluZyBpdCBteXNlbGYsIHdpdGggYSBmb2N1cyBvbiBhIHVzZXIgd2hvJiMzOTtzIGFuIGV4cGVydDoKCioqVW5kZXJzdGFuZGluZyBgenJhbV9zdWJtaXRfYmlvYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBgenJhbV9zdWJtaXRfYmlvYCwgd2hpY2gsIGFzIHRoZSBuYW1lIHN1Z2dlc3RzLCBpcyB0aGUgYHN1Ym1pdF9iaW9gIGZ1bmN0aW9uIHdpdGhpbiB0aGUgenJhbSBibG9jayBkZXZpY2UgZHJpdmVyLiBTdHJhaWdodGZvcndhcmQgZW5vdWdoLCBidXQgbGV0JiMzOTtzIGJlIGFic29sdXRlbHkgY2xlYXI6IHRoaXMgaXMgdGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciAqaGFuZGluZyBvZmYqIHRoZSBJL08gcmVxdWVzdCB0byB0aGUgenJhbSBsYXllciBmcm9tIHRoZSBibG9jayBsYXllci4gTWVhbmluZywgaXQmIzM5O3Mgd2hlcmUgdGhlIGRhdGEgZW50ZXJzIHRoZSB6cmFtIGRvbWFpbiwgYW5kIHdoZXJlIGFsbCB0aGUgbWFnaWMgb2YgY29tcHJlc3Npb24sIGFuZCBwb3RlbnRpYWxseSBzd2FwcGluZywgYmVnaW5zLiBUaGlzIGlzIG5vdCB0aGUgJiMzNDtzdGFydCYjMzQ7IG9mIHRoZSBzdWJtaXNzaW9uIG9mIHRoZSBibG9jayBvcGVyYXRpb24sIHRoZSBiaW8gY291bGQgaGF2ZSBhbHJlYWR5IGJlZW4gc3RhcnRlZCwgd2hpY2ggbWVhbnMgdGhpcyBvcGVyYXRpb24gd2lsbCBoYXZlIHRvIHRha2UgcGxhY2Ugb24gdG9wLiBXZSBhbHJlYWR5IGtub3cgdGhlIGRhdGEgaXMgYSBCSU8gb3BlcmF0aW9uLiBJIG5lZWQgdG8gYmUgYXdhcmUgb2YgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGZ1bmN0aW9uIGNhbGwgaW4gdGhlIG92ZXJhbGwgSS9PIHBhdGguIFRoaXMgZnVuY3Rpb24sIGlmIG5vdCBjYXJlZnVsbHkgd3JpdHRlbiwgY291bGQgY3JlYXRlIGEgYm90dGxlbmVjayBhbmQgaW1wYWN0IHBlcmZvcm1hbmNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMzo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt6cmFtX3N1Ym1pdF9iaW8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0yNzU5PXN0YXRpYyB2b2lkIHpyYW1fYmlvX3dyaXRlKHN0cnVjdCB6cmFtICp6cmFtLCBzdHJ1Y3QgYmlvICpiaW8pXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjc5MS0gKi9cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI3OTI6c3RhdGljIHZvaWQgenJhbV9zdWJtaXRfYmlvKHN0cnVjdCBiaW8gKmJpbylcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI3OTMte1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTI5ODM9c3RhdGljIGNvbnN0IHN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyB6cmFtX2Rldm9wcyA9IHtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI5ODQtXHQub3BlbiA9IHpyYW1fb3BlbixcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI5ODU6XHQuc3VibWl0X2JpbyA9IHpyYW1fc3VibWl0X2JpbyxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI5ODYtXHQuc3dhcF9zbG90X2ZyZWVfbm90aWZ5ID0genJhbV9zbG90X2ZyZWVfbm90aWZ5LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMzo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDY3NQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHNpdHVhdGlvbiwgZmlsdGVyZWQgdGhyb3VnaCBteSBleHBlcnQgbGVuczoKCioqWnJhbSBCbG9jayBEZXZpY2UgQ29udGV4dCoqCgpBbHJpZ2h0LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCB0aGUgY29yZSBmdW5jdGlvbnMgYW5kIG1lY2hhbmlzbXMgb2YgdGhlIHpyYW0gYmxvY2sgZGV2aWNlIGRyaXZlci4gVGhlIHByaW1hcnkgc3VibWl0IGZ1bmN0aW9uLCBgenJhbV9zdWJtaXRfYmlvYCwgaXMgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCwgc28gdG8gc3BlYWsuIFRoaXMgaXMgdGhlIGhlYXJ0IG9mIEkvTyBoYW5kbGluZyDigJMgdGhlIGNyaXRpY2FsIHBhdGguCgpCZXlvbmQgdGhhdCBjb3JlIGZ1bmN0aW9uLCBJIHNlZSB0aGUgdHlwaWNhbCBkZXZpY2UgbGlmZWN5Y2xlIGZ1bmN0aW9ucyByZXByZXNlbnRlZDogYHpyYW1fb3BlbmAsIGB6cmFtX3Nsb3RfZnJlZV9ub3RpZnlgIGFuZCBgenJhbV9yZWxlYXNlYCAuIGB6cmFtX29wZW5gIG9idmlvdXNseSBoYW5kbGVzIGRldmljZSBpbml0aWFsaXphdGlvbiwgd2hpbGUgYHpyYW1fcmVsZWFzZWAgZGVhbHMgd2l0aCBkZWNvbnN0cnVjdGlvbiBhbmQgcmVzb3VyY2UgY2xlYW51cC4gYHpyYW1fc2xvdF9mcmVlX25vdGlmeWAgbGlrZWx5IHJlbGF0ZXMgdG8gbWVtb3J5IG1hbmFnZW1lbnQgd2l0aGluIHRoZSBjb21wcmVzc2VkIGJsb2NrIHN0b3JhZ2Ug4oCTIGEgbm90aWZpY2F0aW9uIHRyaWdnZXJlZCB3aGVuIGEgY29tcHJlc3Npb24gc2xvdCBpcyBmcmVlZC4gQW5kIGZpbmFsbHksIHRoZSBwcmVzZW5jZSBvZiBzeXNmcyBhdHRyaWJ1dGVzIGluZGljYXRlcyB1c2VyLXNwYWNlIGNvbnRyb2wgYW5kIG1vbml0b3JpbmcgaG9va3MsIHdoaWNoIGlzIGVzc2VudGlhbCBmb3IgYW55IG1vZGVybiBkcml2ZXIgdG8gYmUgdXNlZnVsIGFuZCBjb25maWd1cmFibGUuIEkmIzM5O2xsIG5lZWQgdG8gZHJpbGwgZG93biB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hhdCBhdHRyaWJ1dGVzIGFyZSBleHBvc2VkLCBidXQgdGhlIGV4aXN0ZW5jZSBpcyBhcyBleHBlY3RlZC4gVGhpcyBzdWdnZXN0cyBhIHdlbGwtZGVzaWduZWQgZHJpdmVyIHRoYXQgYWxsb3dzIGZvciBydW50aW1lIHR3ZWFraW5nIGFuZCBwZXJmb3JtYW5jZSBtb25pdG9yaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMzo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyZWNvbXByZXNzX3N0b3JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MjQzOT1zdGF0aWMgaW50IHJlY29tcHJlc3Nfc2xvdChzdHJ1Y3QgenJhbSAqenJhbSwgdW5zaWduZWQgbG9uZyBpbmRleCxcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yNTQ1LVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MjU0NjpzdGF0aWMgc3NpemVfdCByZWNvbXByZXNzX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI1NDctXHRcdFx0XHRzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjM6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTExNDgKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHN5c2ZzIEF0dHJpYnV0ZXMqKgoKQWxyaWdodCwgdGhlIG9iamVjdGl2ZSBpcyBwcmV0dHkgY2xlYXI6IEkgbmVlZCB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzIGJ5IGRpZ2dpbmcgaW50byB0aGUgc3lzZnMgYXR0cmlidXRlcy4gSSBpbW1lZGlhdGVseSBuZWVkIHRvIHplcm8gaW4gb24gd2hhdCBkYXRhIGlzIGF2YWlsYWJsZS4gVGhpcyBpc24mIzM5O3QgYSAmIzM0O2xldCYjMzk7cyBzdGFydCBwb2tpbmcgYXJvdW5kIHJhbmRvbWx5JiMzNDsgc2NlbmFyaW87IEkgbmVlZCB0byBiZSBzdHJhdGVnaWMuIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGxpa2VseSBjYW5kaWRhdGVzLCB0aGUga2VybmVsIG1vZHVsZXMgb3IgZGV2aWNlIGRyaXZlcnMgdGhhdCBhcmUgcmVsZXZhbnQgdG8gdGhpcyBpc3N1ZS4gTGV0IG1lIHN0YXJ0IGJ5IHRoaW5raW5nIGFib3V0IHRoZSBkZXZpY2Ugb3IgZmVhdHVyZSB0aGlzIHJlbGF0ZXMgdG8uIE9uY2UgSSBoYXZlIHRoZSBzeXN0ZW0gY29tcG9uZW50IEkgYW0gaW50ZXJlc3RlZCBpbiwgc3lzZnMgZ2l2ZXMgeW91IGEgd2luZG93IGludG8gdGhlIGlubmVyIHdvcmtpbmdzIG9mIHRoZSBrZXJuZWwuIFdoYXQmIzM5O3MgZXhwb3NlZCBhbmQgYXZhaWxhYmxlLiBUaGUgZ29hbCwgYXMgYWx3YXlzLCBpcyB0byBwaW5wb2ludCB0aGUgcmVsZXZhbnQgYXR0cmlidXRlcyB0aGF0IHJldmVhbCB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb24gb3Igc3RhdHVzIGluZm9ybWF0aW9uIEkmIzM5O20gYWZ0ZXIuIEl0JiMzOTtzIHRpbWUgdG8gZ2V0IGEgYml0IG1vcmUgZm9jdXNlZCBhbmQgbWV0aG9kaWNhbC4gSSBoYXZlIGEgZmVlbGluZyB0aGUgaW5mb3JtYXRpb24gaXMgZ29pbmcgdG8gYmUgd2l0aGluIHN5c2ZzIC0gdGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gbG9vay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjM6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7REVWSUNFX0FUVFJfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9Mjk4Mz1zdGF0aWMgY29uc3Qgc3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRpb25zIHpyYW1fZGV2b3BzID0ge1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI5ODktXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoyOTkwOnN0YXRpYyBERVZJQ0VfQVRUUl9STyhpb19zdGF0KTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI5OTE6c3RhdGljIERFVklDRV9BVFRSX1JPKG1tX3N0YXQpO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjk5MjpzdGF0aWMgREVWSUNFX0FUVFJfUk8oZGVidWdfc3RhdCk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoyOTkzOnN0YXRpYyBERVZJQ0VfQVRUUl9XTyhjb21wYWN0KTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI5OTQ6c3RhdGljIERFVklDRV9BVFRSX1JXKGRpc2tzaXplKTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI5OTU6c3RhdGljIERFVklDRV9BVFRSX1JPKGluaXRzdGF0ZSk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoyOTk2OnN0YXRpYyBERVZJQ0VfQVRUUl9XTyhyZXNldCk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoyOTk3OnN0YXRpYyBERVZJQ0VfQVRUUl9XTyhtZW1fbGltaXQpO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjk5ODpzdGF0aWMgREVWSUNFX0FUVFJfV08obWVtX3VzZWRfbWF4KTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI5OTk6c3RhdGljIERFVklDRV9BVFRSX1dPKGlkbGUpO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzAwMDpzdGF0aWMgREVWSUNFX0FUVFJfUlcoY29tcF9hbGdvcml0aG0pO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzAwMS0jaWZkZWYgQ09ORklHX1pSQU1fV1JJVEVCQUNLXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMDAyOnN0YXRpYyBERVZJQ0VfQVRUUl9STyhiZF9zdGF0KTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjMwMDM6c3RhdGljIERFVklDRV9BVFRSX1JXKGJhY2tpbmdfZGV2KTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjMwMDQ6c3RhdGljIERFVklDRV9BVFRSX1dPKHdyaXRlYmFjayk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMDA1OnN0YXRpYyBERVZJQ0VfQVRUUl9SVyh3cml0ZWJhY2tfbGltaXQpO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzAwNjpzdGF0aWMgREVWSUNFX0FUVFJfUlcod3JpdGViYWNrX2xpbWl0X2VuYWJsZSk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMDA3OnN0YXRpYyBERVZJQ0VfQVRUUl9SVyh3cml0ZWJhY2tfYmF0Y2hfc2l6ZSk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMDA4OnN0YXRpYyBERVZJQ0VfQVRUUl9SVyhjb21wcmVzc2VkX3dyaXRlYmFjayk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0zMDA5LSNlbmRpZlxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzAxMC0jaWZkZWYgQ09ORklHX1pSQU1fTVVMVElfQ09NUFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzAxMTpzdGF0aWMgREVWSUNFX0FUVFJfUlcocmVjb21wX2FsZ29yaXRobSk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMDEyOnN0YXRpYyBERVZJQ0VfQVRUUl9XTyhyZWNvbXByZXNzKTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTMwMTMtI2VuZGlmXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMDE0OnN0YXRpYyBERVZJQ0VfQVRUUl9XTyhhbGdvcml0aG1fcGFyYW1zKTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTMwMTUtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIzOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMjUyCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBaUkFNJiMzOTtzIEFQSSBFeHBvc3VyZSBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRoZSB6cmFtIGRldmljZSBpcyBleHBvc2VkLCBzcGVjaWZpY2FsbHkgd2l0aCBhbiBleWUgdG93YXJkcyBmdXp6aW5nIHdpdGggc29tZXRoaW5nIGxpa2UgU3l6a2FsbGVyLiBJIHNlZSB0aGUgc3lzZnMgZnVuY3Rpb25zIGFyZSBuYW1lZCBsaWtlIGBkaXNrc2l6ZV9zdG9yZWAsIGByZXNldF9zdG9yZWAsIGFuZCBzbyBvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBsaXN0IGB6cmFtX3N1Ym1pdF9iaW9gLCBhbG9uZyB3aXRoIHRoZXNlIHN5c2ZzIGVudHJpZXMgdG8gZm9jdXMgb24sIGJ1dCB0aGVuIEkgcmVtZW1iZXIgdGhhdCBgenJhbV9zdWJtaXRfYmlvYCBpcyBhY3R1YWxseSBtYXJrZWQgYXMgKnN0YXRpYyouIEhtbSwgdGhhdCBjb3VsZCBiZSBhIHByb2JsZW0sIHNpbmNlIHRoZSBwcm9tcHQgSSYjMzk7bSB3b3JraW5nIGZyb20gc3VnZ2VzdHMgcHJlZmVycmluZyBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMuIExldCBtZSBzZWUuLi5pdCYjMzk7cyBwYXJ0IG9mIGB6cmFtX2Rldm9wc2AsIHRoYXQmIzM5O3MgaG93IGl0JiMzOTtzIGxpbmtlZCB1cCB0byB0aGUgYmxvY2sgZGV2aWNlIG9wZXJhdGlvbnMuCgpTeXprYWxsZXIgY2FuIGZ1enogYmxvY2sgZGV2aWNlcywgc28gSSAqa25vdyogaXQgd2lsbCBoaXQgYHpyYW1fc3VibWl0X2Jpb2AgdGhyb3VnaCB0aGUgbm9ybWFsIGBzdWJtaXRfYmlvYCBwYXRoLiBCdXQgdGhlIGZhY3QgdGhhdCBpdCYjMzk7cyAqc3RhdGljKiBnaXZlcyBtZSBwYXVzZS4gSXQgbWlnaHQgYmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIsIG9yIGF0IHRoZSB2ZXJ5IGxlYXN0IGhhdmUgbm8gY2xlYXJseSBkZWZpbmVkIHN5bWJvbCBhZGRyZXNzIHdoaWNoIG1ha2VzIGZ1enppbmcgaGFyZGVyLiBXYWl0LCBpdCBpcyAqYXNzaWduZWQgdG8gYSBmdW5jdGlvbiBwb2ludGVyKiwgc28gbm8gaXQgY2FuJiMzOTt0IGJlIGlubGluZWQhIE9rYXksIHNvIEkgc2hvdWxkIGJlIGFibGUgdG8gZ2V0IGEgc3ltYm9sIGFkZHJlc3MgZm9yIGl0LCBldmVuIGlmIGl0JiMzOTtzIHN0YXRpYy4KCkJ1dCwgYmFjayB0byB0aGUgbGFyZ2VyIHByb2JsZW0g4oCTIHRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IGVtcGhhc2l6ZXMgKm5vbi1zdGF0aWMqIGVudHJ5IHBvaW50cy4gT2theSwgYnV0IGFsbCB0aGUgc3lzZnMgZnVuY3Rpb25zLCBsaWtlIGBkaXNrc2l6ZV9zdG9yZWAsIHNlZW0gdG8gYmUgKnN0YXRpYyogYXMgd2VsbCEgVGhleSYjMzk7cmUgYXNzaWduZWQgdG8gYERFVklDRV9BVFRSYCBzdHJ1Y3R1cmVzLCBzbyBJIG5lZWQgdG8gY2hlY2sgaWYgdGhvc2UgYXNzaWdubWVudHMgYWxzbyBpbnZvbHZlIHRoZSBzdGF0aWMga2V5d29yZC4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIGRlZmluaXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMzo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkaXNrc2l6ZV9zdG9yZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTI4NTk9c3RhdGljIHZvaWQgenJhbV9yZXNldF9kZXZpY2Uoc3RydWN0IHpyYW0gKnpyYW0pXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjg3NS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI4NzY6c3RhdGljIHNzaXplX3QgZGlza3NpemVfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI4NzctXHRcdFx0ICAgICAgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgbGVuKVxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTMxMzM9c3RhdGljIGludCB6cmFtX3JlbW92ZShzdHJ1Y3QgenJhbSAqenJhbSlcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0zMTY5LVx0LypcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjMxNzA6XHQgKiBkaXNrc2l6ZV9zdG9yZSgpIG1heSBiZSBjYWxsZWQgaW4gYmV0d2VlbiB6cmFtX3Jlc2V0X2RldmljZSgpXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0zMTcxLVx0ICogYW5kIGRlbF9nZW5kaXNrKCksIHNvIHJ1biB0aGUgbGFzdCByZXNldCB0byBhdm9pZCBsZWFraW5nXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMTcyOlx0ICogYW55dGhpbmcgYWxsb2NhdGVkIHdpdGggZGlza3NpemVfc3RvcmUoKVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzE3My1cdCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMzo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzI0NwoJCQkJCQkJb3V0cHV0OiA3MAoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlLiBIZXJlJiMzOTtzIG15IHN1bW1hcnksIHRha2luZyB0aGUgcGVyc3BlY3RpdmUgeW91IHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyB0aGUgWnJhbSBEcml2ZXIqKgoKQWxyaWdodCwgc28gdGhlIHN0cnVjdHVyZXMgYXJlIHN0YXRpYywgd2hpY2ggbWFrZXMgc2Vuc2U7IHRoZXkgYWN0IGFzIHRoZSBpbml0aWFsIGhvb2tzIGludG8gdGhlIHN5c2ZzIGludGVyZmFjZS4gVGhhdCYjMzk7cyB0aGUgZmlyc3QgdGhpbmcgSSBleHBlY3QuIE5vdywgbXkgbmV4dCBtb3ZlIGlzIHRvIGRpdmUgZGVlcGVyIGludG8gYHpyYW1fZHJ2LmNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0LCBpZiBhbnl0aGluZywgaXMgZHluYW1pY2FsbHkgaGFuZGxlZCB3aXRoaW4gdGhlIGRyaXZlciBpdHNlbGYuIE15IGludHVpdGlvbiB0ZWxscyBtZSB0aGF0IHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUga2VybmVsIGludGVyYWN0aW9uIHByb2JhYmx5IGxpZXMgaW4gYW55IGZ1bmN0aW9ucyB3aXRoaW4gdGhhdCBmaWxlIHRoYXQgYXJlbiYjMzk7dCBkZWZpbmVkIGFzIHN0YXRpYy4gTGV0JiMzOTtzIHNlZSBpZiB3ZSBjYW4gZmluZCBzb21lIGNsdWVzIHRoZXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZHluYW1pc20gYmVoaW5kIHRoaXMgYWJzdHJhY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIzOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bYS16QS1aX11bYS16QS1aMC05X10qIFthLXpBLVpfXVthLXpBLVowLTlfXSpcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0zOS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjQwOnN0YXRpYyBERUZJTkVfSURSKHpyYW1faW5kZXhfaWRyKTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTQxLS8qIGlkciBpbmRleCBtdXN0IGJlIHByb3RlY3RlZCAqL1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6NDI6c3RhdGljIERFRklORV9NVVRFWCh6cmFtX2luZGV4X211dGV4KTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTQzLVxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTI5ODM9c3RhdGljIGNvbnN0IHN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyB6cmFtX2Rldm9wcyA9IHtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yOTg5LVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjk5MDpzdGF0aWMgREVWSUNFX0FUVFJfUk8oaW9fc3RhdCk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoyOTkxOnN0YXRpYyBERVZJQ0VfQVRUUl9STyhtbV9zdGF0KTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI5OTI6c3RhdGljIERFVklDRV9BVFRSX1JPKGRlYnVnX3N0YXQpO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjk5MzpzdGF0aWMgREVWSUNFX0FUVFJfV08oY29tcGFjdCk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoyOTk0OnN0YXRpYyBERVZJQ0VfQVRUUl9SVyhkaXNrc2l6ZSk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoyOTk1OnN0YXRpYyBERVZJQ0VfQVRUUl9STyhpbml0c3RhdGUpO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjk5NjpzdGF0aWMgREVWSUNFX0FUVFJfV08ocmVzZXQpO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjk5NzpzdGF0aWMgREVWSUNFX0FUVFJfV08obWVtX2xpbWl0KTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI5OTg6c3RhdGljIERFVklDRV9BVFRSX1dPKG1lbV91c2VkX21heCk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoyOTk5OnN0YXRpYyBERVZJQ0VfQVRUUl9XTyhpZGxlKTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjMwMDA6c3RhdGljIERFVklDRV9BVFRSX1JXKGNvbXBfYWxnb3JpdGhtKTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTMwMDEtI2lmZGVmIENPTkZJR19aUkFNX1dSSVRFQkFDS1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzAwMjpzdGF0aWMgREVWSUNFX0FUVFJfUk8oYmRfc3RhdCk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMDAzOnN0YXRpYyBERVZJQ0VfQVRUUl9SVyhiYWNraW5nX2Rldik7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMDA0OnN0YXRpYyBERVZJQ0VfQVRUUl9XTyh3cml0ZWJhY2spO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzAwNTpzdGF0aWMgREVWSUNFX0FUVFJfUlcod3JpdGViYWNrX2xpbWl0KTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjMwMDY6c3RhdGljIERFVklDRV9BVFRSX1JXKHdyaXRlYmFja19saW1pdF9lbmFibGUpO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzAwNzpzdGF0aWMgREVWSUNFX0FUVFJfUlcod3JpdGViYWNrX2JhdGNoX3NpemUpO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzAwODpzdGF0aWMgREVWSUNFX0FUVFJfUlcoY29tcHJlc3NlZF93cml0ZWJhY2spO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzAwOS0jZW5kaWZcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTMwMTAtI2lmZGVmIENPTkZJR19aUkFNX01VTFRJX0NPTVBcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjMwMTE6c3RhdGljIERFVklDRV9BVFRSX1JXKHJlY29tcF9hbGdvcml0aG0pO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzAxMjpzdGF0aWMgREVWSUNFX0FUVFJfV08ocmVjb21wcmVzcyk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0zMDEzLSNlbmRpZlxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzAxNDpzdGF0aWMgREVWSUNFX0FUVFJfV08oYWxnb3JpdGhtX3BhcmFtcyk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0zMDE1LVxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTMyMDc9c3RhdGljIHNzaXplX3QgaG90X3JlbW92ZV9zdG9yZShjb25zdCBzdHJ1Y3QgY2xhc3MgKmNsYXNzLFxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTMyMzUtfVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzIzNjpzdGF0aWMgQ0xBU1NfQVRUUl9XTyhob3RfcmVtb3ZlKTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTMyMzctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIzOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NTg0CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogOTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgY29uc2lkZXJpbmcgbXkgZXhwZXJ0aXNlOgoKKipNeSBBcHByb2FjaCB0byBBbmFseXppbmcgWnJhbSYjMzk7cyBFbnRyeSBQb2ludHMqKgoKQWxyaWdodCwgSSBjYW4gZGVmaW5pdGVseSBtYWtlIHNvbWUgaGVhZHdheSBoZXJlLiBJbnN0ZWFkIG9mIGdldHRpbmcgYm9nZ2VkIGRvd24gaW4gdGhlIG1pbnV0aWFlLCBJJiMzOTttIGdvaW5nIHRvIGxldmVyYWdlIG15IHVuZGVyc3RhbmRpbmcgb2Yga2VybmVsIHN0cnVjdHVyZXMgYW5kIHBpbnBvaW50IHRoZSBrZXkgZW50cnkgcG9pbnRzLiBUaGlua2luZyBzdHJhdGVnaWNhbGx5LCBJJiMzOTtsbCB1c2UgdGhvc2UgZnVuY3Rpb25zIOKAkyBgenJhbV9zdWJtaXRfYmlvYCwgYGRpc2tzaXplX3N0b3JlYCwgYHJlc2V0X3N0b3JlYCwgYHJlY29tcHJlc3Nfc3RvcmVgLCBgd3JpdGViYWNrX3N0b3JlYCwgYGlkbGVfc3RvcmVgLCBhbmQgYGNvbXBhY3Rfc3RvcmVgIOKAkyBhcyBteSBmb2N1cyBzeW1ib2xzLiBUaGVzZSBzaG91bGQgcmVwcmVzZW50IHRoZSBwcmltYXJ5IGludGVyZmFjZXMgaW50byB0aGUgenJhbSBzdWJzeXN0ZW0uCgpOb3csIGxldCBtZSBqdXN0IGNvbmZpcm0gdGhhdCBgenJhbV9zdWJtaXRfYmlvYCBpcyBhY3R1YWxseSBkZWZpbmVkIGluIHRoZSBjdXJyZW50IGNvbnRleHQuIFllcCwgdGhlcmUgaXQgaXMhIEdvb2QuIFRoYXQmIzM5O3MgYSBzb2xpZCBzdGFydGluZyBwb2ludC4gTmV4dCwgSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIGlmIGB6cmFtX2luaXRgIGlzIHByZXNlbnQgdG9vLiBXZSBuZWVkIHRvIGJlIHN1cmUgd2hlcmUgaW5pdGlhbGl6YXRpb24gaGFwcGVucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjM6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0zMzEwPXN0YXRpYyB2b2lkIF9fZXhpdCB6cmFtX2V4aXQodm9pZClcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0zMzE0LVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzMxNTptb2R1bGVfaW5pdCh6cmFtX2luaXQpO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzMxNi1tb2R1bGVfZXhpdCh6cmFtX2V4aXQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMzo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTA0MQoJCQkJCQkJb3V0cHV0OiAxNzkKCQkJCQkJCXRob3VnaHRzOiAyNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgWlJBTSBQYXRjaCoqCgpPa2F5LCBzbyB0aGUgZXNzZW50aWFsIGNvbmZpZyBoZXJlIGlzIGBaUkFNYCwgdGhhdCYjMzk7cyB0aGUgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgZWxzZSBpbiB0aGUgZGVwZW5kZW5jaWVzLCBidXQgaXQgbG9va3MgbGlrZSB0aGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIGZvY3VzZWQgYXJvdW5kIHRoYXQuIExvb2tpbmcgZGVlcGVyLCBpdCBtb2RpZmllcyB0aGUgYFpSQU1fRU5UUllfTE9DS19CSVRgIGxvZ2ljLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyB0aGlzIGFzIGEgcG90ZW50aWFsIGJ1ZyBmaXggZm9yIHRob3NlIHRyaWNreSBiaWctZW5kaWFuIDY0LWJpdCBhcmNoaXRlY3R1cmVzIC0gZ29vZCB0byBrbm93LgoKR2l2ZW4gdGhhdCwgSSYjMzk7bSBkZWZpbml0ZWx5IGdvaW5nIHRvIGZsYWcgdGhpcyBhcyBgV29ydGhGdXp6aW5nPXRydWVgLiBNeSBtYWluIGZvY3VzIHN5bWJvbHMgYXJlIGdvaW5nIHRvIGJlIGB6cmFtX3N1Ym1pdF9iaW9gLCBgZGlza3NpemVfc3RvcmVgLCBgcmVzZXRfc3RvcmVgLCBgcmVjb21wcmVzc19zdG9yZWAsIGB3cml0ZWJhY2tfc3RvcmVgLCBgaWRsZV9zdG9yZWAsIGFuZCBgY29tcGFjdF9zdG9yZWAuIEhvd2V2ZXIsIHdhaXQgYSBtaW51dGUuLi4gYHdyaXRlYmFja19zdG9yZWAgcmVsaWVzIG9uIGBDT05GSUdfWlJBTV9XUklURUJBQ0tgLiBBbmQsIEkgYWxzbyBzZWUgdGhhdCBgcmVjb21wcmVzc19zdG9yZWAgaXMgZ3VhcmRlZCBieSBgQ09ORklHX1pSQU1fTVVMVElfQ09NUGAuIFJpZ2h0LCBJIGNhbiYjMzk7dCBvdmVybG9vayB0aG9zZSBkZXBlbmRlbmNpZXMuCgpUaGVyZWZvcmUsIEkgbmVlZCB0byBhZGQgYm90aCBgWlJBTV9XUklURUJBQ0tgIGFuZCBgWlJBTV9NVUxUSV9DT01QYCB0byBgRW5hYmxlQ29uZmlnc2AsIHJpZ2h0IGFsb25nc2lkZSBgWlJBTWAuIExldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IHRob3NlIGFyZSBhY3R1YWxseSBkZWZpbmVkIGluIHRoZSBLY29uZmlnLiBZZXAsIHRoZXkmIzM5O3JlIHRoZXJlLiBKdXN0IHRvIGJlIHRob3JvdWdoLCBJIHNob3VsZCBhbHNvIHF1aWNrbHkgY2hlY2sgYFpSQU1fVFJBQ0tfRU5UUllfQUNUSU1FYCBhbmQgYFpSQU1fTUVNT1JZX1RSQUNLSU5HYCwgYnV0IEkgZG9uJiMzOTt0IHRoaW5rIHRoZXkmIzM5O3JlIHJlbGV2YW50IHRvIHRoaXMgc3BlY2lmaWMgcGF0Y2guCgpTbywgdGhlIGZpbmFsIGxpc3QgZm9yIG15IGNvbmZpZ3VyYXRpb24gd2lsbCBiZSBgWlJBTWAsIGBaUkFNX1dSSVRFQkFDS2AsIGFuZCBgWlJBTV9NVUxUSV9DT01QYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGJhc2UgdG8gc3RhcnQgdGVzdGluZyB0aGlzIHBhdGNoIHRob3JvdWdobHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIzOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtaUkFNJiMzNDssCiAgICAmIzM0O1pSQU1fV1JJVEVCQUNLJiMzNDssCiAgICAmIzM0O1pSQU1fTVVMVElfQ09NUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3pyYW1fc3VibWl0X2JpbyYjMzQ7LAogICAgJiMzNDtkaXNrc2l6ZV9zdG9yZSYjMzQ7LAogICAgJiMzNDtyZXNldF9zdG9yZSYjMzQ7LAogICAgJiMzNDtyZWNvbXByZXNzX3N0b3JlJiMzNDssCiAgICAmIzM0O3dyaXRlYmFja19zdG9yZSYjMzQ7LAogICAgJiMzNDtpZGxlX3N0b3JlJiMzNDssCiAgICAmIzM0O2NvbXBhY3Rfc3RvcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBsb2NraW5nIGJ1ZyBpbiB6cmFtIG9uIDY0LWJpdCBiaWctZW5kaWFuIHN5c3RlbXMgYnkgY29ycmVjdGluZyB0aGUgYml0IHBvc2l0aW9uIHVzZWQgZm9yIFpSQU1fRU5UUllfTE9DSy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIGV4ZWN1dGlvbiBmbG93IG9uIGJpZy1lbmRpYW4gYXJjaGl0ZWN0dXJlcyBsaWtlIHMzOTB4LCB3aGljaCBhcmUgc3VwcG9ydGVkIGJ5IHN5emthbGxlci4gRnV6emluZyB6cmFtIGJsb2NrIGRldmljZSBvcGVyYXRpb25zIGFuZCBzeXNmcyBpbnRlcmZhY2VzIGNhbiBoZWxwIHZlcmlmeSB0aGUgZml4LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtaUkFNJiMzNDssCiAgICAmIzM0O1pSQU1fV1JJVEVCQUNLJiMzNDssCiAgICAmIzM0O1pSQU1fTVVMVElfQ09NUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3pyYW1fc3VibWl0X2JpbyYjMzQ7LAogICAgJiMzNDtkaXNrc2l6ZV9zdG9yZSYjMzQ7LAogICAgJiMzNDtyZXNldF9zdG9yZSYjMzQ7LAogICAgJiMzNDtyZWNvbXByZXNzX3N0b3JlJiMzNDssCiAgICAmIzM0O3dyaXRlYmFja19zdG9yZSYjMzQ7LAogICAgJiMzNDtpZGxlX3N0b3JlJiMzNDssCiAgICAmIzM0O2NvbXBhY3Rfc3RvcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBsb2NraW5nIGJ1ZyBpbiB6cmFtIG9uIDY0LWJpdCBiaWctZW5kaWFuIHN5c3RlbXMgYnkgY29ycmVjdGluZyB0aGUgYml0IHBvc2l0aW9uIHVzZWQgZm9yIFpSQU1fRU5UUllfTE9DSy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIGV4ZWN1dGlvbiBmbG93IG9uIGJpZy1lbmRpYW4gYXJjaGl0ZWN0dXJlcyBsaWtlIHMzOTB4LCB3aGljaCBhcmUgc3VwcG9ydGVkIGJ5IHN5emthbGxlci4gRnV6emluZyB6cmFtIGJsb2NrIGRldmljZSBvcGVyYXRpb25zIGFuZCBzeXNmcyBpbnRlcmZhY2VzIGNhbiBoZWxwIHZlcmlmeSB0aGUgZml4LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMzo1MTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDIzOjUxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYml0LWxvY2sgcG9zaXRpb24gaXNzdWUgb24gNjQtYml0IGJpZy1lbmRpYW4gYXJjaGl0ZWN0dXJlcyBpbiB0aGUgenJhbSBkcml2ZXIuIEl0IGVuc3VyZXMgdGhhdCB0aGUgbG9jayBiaXQgbGFuZHMgaW4gdGhlIGNvcnJlY3QgcG9zaXRpb24gd2l0aGluIHRoZSBgX19sb2NrYCB3b3JkLCB3aGljaCBpcyBhbGlhc2VkIGJ5IHR3byBgdTMyYHMuIFRoaXMgaXMgYSBsb2NraW5nIGFuZCBiaXQgbWFuaXB1bGF0aW9uIGZpeCwgbm90IHJlbGF0ZWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnksIGluZm8tbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlIGZpZWxkcy4gU3RhbmRhcmQgdG9vbHMgbGlrZSBLQ1NBTiBvciBMT0NLREVQIGFyZSBiZXR0ZXIgc3VpdGVkIGZvciBsb2NraW5nIGFuZCBjb25jdXJyZW5jeSBpc3N1ZXMsIHdoaWxlIEtNU0FOIGlzIHNwZWNpZmljYWxseSBmb3IgZGV0ZWN0aW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCB3aGljaCBpcyBub3QgcmVsZXZhbnQgaGVyZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMmFjZWI0YWViYzU3ZTMzY2I5OTYyNDhjOTFiNmMwYjRjZGQxYTU5NQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDEwIDIzOjUwOjAwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMgYi9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYwppbmRleCBkMDlmZGNhNDljYmRhLi5hOWIzYmIxZDNiZWYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYwpAQCAtNzQsNyAmIzQzOzc0LDcgQEAgc3RhdGljIF9fbXVzdF9jaGVjayBib29sIHNsb3RfdHJ5bG9jayhzdHJ1Y3QgenJhbSAqenJhbSwgdW5zaWduZWQgbG9uZyBpbmRleCkKIHsKIAl1bnNpZ25lZCBsb25nICpsb2NrID0gJmFtcDt6cmFtLSZndDt0YWJsZVtpbmRleF0uX19sb2NrOwogCi0JaWYgKCF0ZXN0X2FuZF9zZXRfYml0X2xvY2soWlJBTV9FTlRSWV9MT0NLLCBsb2NrKSkgewomIzQzOwlpZiAoIXRlc3RfYW5kX3NldF9iaXRfbG9jayhaUkFNX0VOVFJZX0xPQ0tfQklULCBsb2NrKSkgewogCQltdXRleF9hY3F1aXJlKCZhbXA7enJhbS0mZ3Q7dGFibGVfbG9ja19tYXAsIDAsIDEsIF9SRVRfSVBfKTsKIAkJbG9ja19hY3F1aXJlZCgmYW1wO3pyYW0tJmd0O3RhYmxlX2xvY2tfbWFwLCBfUkVUX0lQXyk7CiAJCXJldHVybiB0cnVlOwpAQCAtODgsNyAmIzQzOzg4LDcgQEAgc3RhdGljIHZvaWQgc2xvdF9sb2NrKHN0cnVjdCB6cmFtICp6cmFtLCB1bnNpZ25lZCBsb25nIGluZGV4KQogCXVuc2lnbmVkIGxvbmcgKmxvY2sgPSAmYW1wO3pyYW0tJmd0O3RhYmxlW2luZGV4XS5fX2xvY2s7CiAKIAltdXRleF9hY3F1aXJlKCZhbXA7enJhbS0mZ3Q7dGFibGVfbG9ja19tYXAsIDAsIDAsIF9SRVRfSVBfKTsKLQl3YWl0X29uX2JpdF9sb2NrKGxvY2ssIFpSQU1fRU5UUllfTE9DSywgVEFTS19VTklOVEVSUlVQVElCTEUpOwomIzQzOwl3YWl0X29uX2JpdF9sb2NrKGxvY2ssIFpSQU1fRU5UUllfTE9DS19CSVQsIFRBU0tfVU5JTlRFUlJVUFRJQkxFKTsKIAlsb2NrX2FjcXVpcmVkKCZhbXA7enJhbS0mZ3Q7dGFibGVfbG9ja19tYXAsIF9SRVRfSVBfKTsKIH0KIApAQCAtOTcsNyAmIzQzOzk3LDcgQEAgc3RhdGljIHZvaWQgc2xvdF91bmxvY2soc3RydWN0IHpyYW0gKnpyYW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpCiAJdW5zaWduZWQgbG9uZyAqbG9jayA9ICZhbXA7enJhbS0mZ3Q7dGFibGVbaW5kZXhdLl9fbG9jazsKIAogCW11dGV4X3JlbGVhc2UoJmFtcDt6cmFtLSZndDt0YWJsZV9sb2NrX21hcCwgX1JFVF9JUF8pOwotCWNsZWFyX2FuZF93YWtlX3VwX2JpdChaUkFNX0VOVFJZX0xPQ0ssIGxvY2spOwomIzQzOwljbGVhcl9hbmRfd2FrZV91cF9iaXQoWlJBTV9FTlRSWV9MT0NLX0JJVCwgbG9jayk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpbml0X2RvbmUoc3RydWN0IHpyYW0gKnpyYW0pCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuaCBiL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oCmluZGV4IDRmZGRjNTgyZjNiODIuLjdhNTVkNzUxNDE3ZTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oCkBAIC0xNSw2ICYjNDM7MTUsNyBAQAogI2lmbmRlZiBfWlJBTV9EUlZfSF8KICNkZWZpbmUgX1pSQU1fRFJWX0hfCiAKJiM0MzsjaW5jbHVkZSAmbHQ7YXNtL2J5dGVvcmRlci5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3J3c2VtLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvenNtYWxsb2MuaCZndDsKIApAQCAtNTcsNiAmIzQzOzU4LDE5IEBAIGVudW0genJhbV9wYWdlZmxhZ3MgewogCV9fTlJfWlJBTV9QQUdFRkxBR1MsCiB9OwogCiYjNDM7LyoKJiM0MzsgKiBUaGUgc2xvdCBsb2NrIGlzIGEgYml0LXdhaXQgbG9jayBvbiB0aGUgd2hvbGUgX19sb2NrIHdvcmQsIHdoaWxlCiYjNDM7ICogZmxhZ3MgYW5kIGFjX3RpbWUgYWxpYXMgdGhhdCB3b3JkIGFzIHR3byB1MzJzLiAgVGhlIGxvY2sgYml0IG11c3QKJiM0MzsgKiBsYW5kIGluIHRoZSBzbG90IHRoYXQgWlJBTV9FTlRSWV9MT0NLIHJlc2VydmVzIGluIGF0dHIuZmxhZ3M7IG9uCiYjNDM7ICogNjQtYml0IGJpZy1lbmRpYW4gdGhlIGZsYWdzIHdvcmQgbWFwcyB0byB0aGUgdXBwZXIgaGFsZiBvZiBfX2xvY2ssCiYjNDM7ICogc28gdGhlIGJpdCBwb3NpdGlvbiBoYXMgdG8gYmUgc2hpZnRlZCB1cC4KJiM0MzsgKi8KJiM0MzsjaWYgZGVmaW5lZChDT05GSUdfNjRCSVQpICZhbXA7JmFtcDsgZGVmaW5lZChfX0JJR19FTkRJQU4pCiYjNDM7I2RlZmluZSBaUkFNX0VOVFJZX0xPQ0tfQklUICAoWlJBTV9FTlRSWV9MT0NLICYjNDM7IDMyKQomIzQzOyNlbHNlCiYjNDM7I2RlZmluZSBaUkFNX0VOVFJZX0xPQ0tfQklUICBaUkFNX0VOVFJZX0xPQ0sKJiM0MzsjZW5kaWYKJiM0MzsKIC8qCiAgKiBBbGxvY2F0ZWQgZm9yIGVhY2ggZGlzayBwYWdlLiAgV2UgdXNlIGJpdC1sb2NrIChaUkFNX0VOVFJZX0xPQ0sgYml0CiAgKiBvZiBmbGFncykgdG8gc2F2ZSBtZW1vcnkuICBUaGVyZSBjYW4gYmUgcGxlbnR5IG9mIGVudHJpZXMgYW5kIHN0YW5kYXJkCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAyMzo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzcwCgkJCQkJCQlvdXRwdXQ6IDE0NgoJCQkJCQkJdGhvdWdodHM6IDQ1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFpSQU0gUGF0Y2ggZm9yIEtNU0FOIEltcGxpY2F0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgdHdlYWtpbmcgYHpyYW1fZHJ2LmNgIGFuZCBgenJhbV9kcnYuaGAuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgYXBwZWFycyB0byBiZSBhIGJpdC1sb2NrIGNvcnJlY3Rpb24gc3BlY2lmaWNhbGx5IHRhcmdldGVkIGF0IDY0LWJpdCBiaWctZW5kaWFuIGFyY2hpdGVjdHVyZXMuIFRoZXkmIzM5O3JlIGNoYW5naW5nIGBaUkFNX0VOVFJZX0xPQ0tgIHRvIGBaUkFNX0VOVFJZX0xPQ0tfQklUYCBpbiB0aGUgbG9jayBmdW5jdGlvbnMgKGB0ZXN0X2FuZF9zZXRfYml0X2xvY2tgLCBgd2FpdF9vbl9iaXRfbG9ja2AsIGBjbGVhcl9hbmRfd2FrZV91cF9iaXRgKS4gSXQgc2VlbXMgbGlrZSB0aGUgaXNzdWUgaXMgcmVsYXRlZCB0byBob3cgdGhlIGxvY2sgYml0IG1hcHMgd2hlbiBgX19sb2NrYCBpcyBhbiBgdW5zaWduZWQgbG9uZ2AsIGJ1dCB0aGVuIGBmbGFnc2AgYW5kIGBhY190aW1lYCBhbGlhcyB0aGF0IHNhbWUgd29yZCBhcyB0d28gYHUzMmBzLiBUaGUgbmV3IG1hY3JvIGBaUkFNX0VOVFJZX0xPQ0tfQklUYCB0aGVuIGFjY291bnRzIGZvciBhIGJpdCBwb3NpdGlvbiBzaGlmdCBvbiA2NC1iaXQgYmlnLWVuZGlhbiBzeXN0ZW1zLgoKRXNzZW50aWFsbHksIHRoaXMgaXMgYSBsb2NraW5nIGJ1ZyBmaXgsIHB1cmUgYW5kIHNpbXBsZS4gSXQgaXNuJiMzOTt0IHRvdWNoaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGF0IGFsbCwgd2hpY2ggaXMgd2hhdCBLTVNBTiAoS2VybmVsIE1lbW9yeSBTYW5pdGl6ZXIpIGlzIGRlc2lnbmVkIHRvIGRldGVjdC4gS01TQU4gaXMgZ3JlYXQgZm9yIGZpbmRpbmcgdGhvc2UgdHlwZXMgb2YgYnVncywgYnV0IHRoaXMgcGF0Y2ggZG9lc24mIzM5O3QgdHJpZ2dlciBhbnkgY29uY2VybnMgdGhlcmUuCgpLQVNBTiwgTE9DS0RFUCwgb3IgS0NTQU4gbWlnaHQgYmUgcmVsZXZhbnQgZm9yIGRldGVjdGluZyByYWNlIGNvbmRpdGlvbnMgb3Igb3RoZXIgbG9ja2luZyBpc3N1ZXMsIGJ1dCB0aGF0JiMzOTtzIG5vdCB0aGUgcHJpbWFyeSBmb2N1cyBvZiBLTVNBTi4gTXkgZ29hbCBoZXJlIGlzIHRvIGRldGVybWluZSBpZiBLTVNBTiBpcyAqbmVlZGVkKiBmb3IgdGhpcy4KCkxldCBtZSB0YWtlIGEgcXVpY2sgbG9vayBhdCBgenJhbV9kcnYuaGAgdG8gY29uZmlybSB0aGUgY2hhbmdlOgoKYGBgYwovKgogKiBUaGUgc2xvdCBsb2NrIGlzIGEgYml0LXdhaXQgbG9jayBvbiB0aGUgd2hvbGUgX19sb2NrIHdvcmQsIHdoaWxlCiAqIGZsYWdzIGFuZCBhY190aW1lIGFsaWFzIHRoYXQgd29yZCBhcyB0d28gdTMycy4gIFRoZSBsb2NrIGJpdCBtdXN0CiAqIGxhbmQgaW4gdGhlIHNsb3QgdGhhdCBaUkFNX0VOVFJZX0xPQ0sgcmVzZXJ2ZXMgaW4gYXR0ci5mbGFnczsgb24KICogNjQtYml0IGJpZy1lbmRpYW4gdGhlIGZsYWdzIHdvcmQgbWFwcyB0byB0aGUgdXBwZXIgaGFsZiBvZiBfX2xvY2ssCiAqIHNvIHRoZSBiaXQgcG9zaXRpb24gaGFzIHRvIGJlIHNoaWZ0ZWQgdXAuCiAqLwojaWYgZGVmaW5lZChDT05GSUdfNjRCSVQpICZhbXA7JmFtcDsgZGVmaW5lZChfX0JJR19FTkRJQU4pCiNkZWZpbmUgWlJBTV9FTlRSWV9MT0NLX0JJVCAgKFpSQU1fRU5UUllfTE9DSyAmIzQzOyAzMikKI2Vsc2UKI2RlZmluZSBaUkFNX0VOVFJZX0xPQ0tfQklUICBaUkFNX0VOVFJZX0xPQ0sKI2VuZGlmCmBgYAoKWWVhaCwgdGhhdCBqdXN0IGNvbmZpcm1zIHRoZSBiaXQgbWFuaXB1bGF0aW9uIGZvciB0aGUgbG9jayBvbiBiaWctZW5kaWFuIGFyY2hpdGVjdHVyZXMuIEl0JiMzOTtzIGEgY2xlYW4gYml0LXR3aWRkbGluZyBmaXguIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3Vlcy4gVGhlcmVmb3JlLCBgTmVlZHNLTVNBTmAgaXMgZGVmaW5pdGVseSBmYWxzZSBmb3IgdGhpcyBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMjM6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBiaXQtbG9jayBwb3NpdGlvbiBpc3N1ZSBvbiA2NC1iaXQgYmlnLWVuZGlhbiBhcmNoaXRlY3R1cmVzIGluIHRoZSB6cmFtIGRyaXZlci4gSXQgZW5zdXJlcyB0aGF0IHRoZSBsb2NrIGJpdCBsYW5kcyBpbiB0aGUgY29ycmVjdCBwb3NpdGlvbiB3aXRoaW4gdGhlIGBfX2xvY2tgIHdvcmQsIHdoaWNoIGlzIGFsaWFzZWQgYnkgdHdvIGB1MzJgcy4gVGhpcyBpcyBhIGxvY2tpbmcgYW5kIGJpdCBtYW5pcHVsYXRpb24gZml4LCBub3QgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSwgaW5mby1sZWFrcywgb3IgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgZmllbGRzLiBTdGFuZGFyZCB0b29scyBsaWtlIEtDU0FOIG9yIExPQ0tERVAgYXJlIGJldHRlciBzdWl0ZWQgZm9yIGxvY2tpbmcgYW5kIGNvbmN1cnJlbmN5IGlzc3Vlcywgd2hpbGUgS01TQU4gaXMgc3BlY2lmaWNhbGx5IGZvciBkZXRlY3RpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIHdoaWNoIGlzIG5vdCByZWxldmFudCBoZXJlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBiaXQtbG9jayBwb3NpdGlvbiBpc3N1ZSBvbiA2NC1iaXQgYmlnLWVuZGlhbiBhcmNoaXRlY3R1cmVzIGluIHRoZSB6cmFtIGRyaXZlci4gSXQgZW5zdXJlcyB0aGF0IHRoZSBsb2NrIGJpdCBsYW5kcyBpbiB0aGUgY29ycmVjdCBwb3NpdGlvbiB3aXRoaW4gdGhlIGBfX2xvY2tgIHdvcmQsIHdoaWNoIGlzIGFsaWFzZWQgYnkgdHdvIGB1MzJgcy4gVGhpcyBpcyBhIGxvY2tpbmcgYW5kIGJpdCBtYW5pcHVsYXRpb24gZml4LCBub3QgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSwgaW5mby1sZWFrcywgb3IgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgZmllbGRzLiBTdGFuZGFyZCB0b29scyBsaWtlIEtDU0FOIG9yIExPQ0tERVAgYXJlIGJldHRlciBzdWl0ZWQgZm9yIGxvY2tpbmcgYW5kIGNvbmN1cnJlbmN5IGlzc3Vlcywgd2hpbGUgS01TQU4gaXMgc3BlY2lmaWNhbGx5IGZvciBkZXRlY3RpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIHdoaWNoIGlzIG5vdCByZWxldmFudCBoZXJlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMzo1MDowMS42MzMwMjMzOTNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTc3MzY1NjgzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJaUkFNXCIsXG4gICAgXCJaUkFNX1dSSVRFQkFDS1wiLFxuICAgIFwiWlJBTV9NVUxUSV9DT01QXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwienJhbV9zdWJtaXRfYmlvXCIsXG4gICAgXCJkaXNrc2l6ZV9zdG9yZVwiLFxuICAgIFwicmVzZXRfc3RvcmVcIixcbiAgICBcInJlY29tcHJlc3Nfc3RvcmVcIixcbiAgICBcIndyaXRlYmFja19zdG9yZVwiLFxuICAgIFwiaWRsZV9zdG9yZVwiLFxuICAgIFwiY29tcGFjdF9zdG9yZVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBiaXQtbG9jayBwb3NpdGlvbiBpc3N1ZSBvbiA2NC1iaXQgYmlnLWVuZGlhbiBhcmNoaXRlY3R1cmVzIGluIHRoZSB6cmFtIGRyaXZlci4gSXQgZW5zdXJlcyB0aGF0IHRoZSBsb2NrIGJpdCBsYW5kcyBpbiB0aGUgY29ycmVjdCBwb3NpdGlvbiB3aXRoaW4gdGhlIGBfX2xvY2tgIHdvcmQsIHdoaWNoIGlzIGFsaWFzZWQgYnkgdHdvIGB1MzJgcy4gVGhpcyBpcyBhIGxvY2tpbmcgYW5kIGJpdCBtYW5pcHVsYXRpb24gZml4LCBub3QgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSwgaW5mby1sZWFrcywgb3IgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgZmllbGRzLiBTdGFuZGFyZCB0b29scyBsaWtlIEtDU0FOIG9yIExPQ0tERVAgYXJlIGJldHRlciBzdWl0ZWQgZm9yIGxvY2tpbmcgYW5kIGNvbmN1cnJlbmN5IGlzc3Vlcywgd2hpbGUgS01TQU4gaXMgc3BlY2lmaWNhbGx5IGZvciBkZXRlY3RpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIHdoaWNoIGlzIG5vdCByZWxldmFudCBoZXJlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbG9ja2luZyBidWcgaW4genJhbSBvbiA2NC1iaXQgYmlnLWVuZGlhbiBzeXN0ZW1zIGJ5IGNvcnJlY3RpbmcgdGhlIGJpdCBwb3NpdGlvbiB1c2VkIGZvciBaUkFNX0VOVFJZX0xPQ0suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyBleGVjdXRpb24gZmxvdyBvbiBiaWctZW5kaWFuIGFyY2hpdGVjdHVyZXMgbGlrZSBzMzkweCwgd2hpY2ggYXJlIHN1cHBvcnRlZCBieSBzeXprYWxsZXIuIEZ1enppbmcgenJhbSBibG9jayBkZXZpY2Ugb3BlcmF0aW9ucyBhbmQgc3lzZnMgaW50ZXJmYWNlcyBjYW4gaGVscCB2ZXJpZnkgdGhlIGZpeC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjM6NTA6MDEuNjMzMDI4NDkzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzQyNjMyNTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyYWNlYjRhZWJjNTdlMzNjYjk5NjI0OGM5MWI2YzBiNGNkZDFhNTk1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDEwIDIzOjUwOjAwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jIGIvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmNcXG5pbmRleCBkMDlmZGNhNDljYmRhLi5hOWIzYmIxZDNiZWYzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jXFxuKysrIGIvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmNcXG5AQCAtNzQsNyArNzQsNyBAQCBzdGF0aWMgX19tdXN0X2NoZWNrIGJvb2wgc2xvdF90cnlsb2NrKHN0cnVjdCB6cmFtICp6cmFtLCB1bnNpZ25lZCBsb25nIGluZGV4KVxcbiB7XFxuIFxcdHVuc2lnbmVkIGxvbmcgKmxvY2sgPSBcXHUwMDI2enJhbS1cXHUwMDNldGFibGVbaW5kZXhdLl9fbG9jaztcXG4gXFxuLVxcdGlmICghdGVzdF9hbmRfc2V0X2JpdF9sb2NrKFpSQU1fRU5UUllfTE9DSywgbG9jaykpIHtcXG4rXFx0aWYgKCF0ZXN0X2FuZF9zZXRfYml0X2xvY2soWlJBTV9FTlRSWV9MT0NLX0JJVCwgbG9jaykpIHtcXG4gXFx0XFx0bXV0ZXhfYWNxdWlyZShcXHUwMDI2enJhbS1cXHUwMDNldGFibGVfbG9ja19tYXAsIDAsIDEsIF9SRVRfSVBfKTtcXG4gXFx0XFx0bG9ja19hY3F1aXJlZChcXHUwMDI2enJhbS1cXHUwMDNldGFibGVfbG9ja19tYXAsIF9SRVRfSVBfKTtcXG4gXFx0XFx0cmV0dXJuIHRydWU7XFxuQEAgLTg4LDcgKzg4LDcgQEAgc3RhdGljIHZvaWQgc2xvdF9sb2NrKHN0cnVjdCB6cmFtICp6cmFtLCB1bnNpZ25lZCBsb25nIGluZGV4KVxcbiBcXHR1bnNpZ25lZCBsb25nICpsb2NrID0gXFx1MDAyNnpyYW0tXFx1MDAzZXRhYmxlW2luZGV4XS5fX2xvY2s7XFxuIFxcbiBcXHRtdXRleF9hY3F1aXJlKFxcdTAwMjZ6cmFtLVxcdTAwM2V0YWJsZV9sb2NrX21hcCwgMCwgMCwgX1JFVF9JUF8pO1xcbi1cXHR3YWl0X29uX2JpdF9sb2NrKGxvY2ssIFpSQU1fRU5UUllfTE9DSywgVEFTS19VTklOVEVSUlVQVElCTEUpO1xcbitcXHR3YWl0X29uX2JpdF9sb2NrKGxvY2ssIFpSQU1fRU5UUllfTE9DS19CSVQsIFRBU0tfVU5JTlRFUlJVUFRJQkxFKTtcXG4gXFx0bG9ja19hY3F1aXJlZChcXHUwMDI2enJhbS1cXHUwMDNldGFibGVfbG9ja19tYXAsIF9SRVRfSVBfKTtcXG4gfVxcbiBcXG5AQCAtOTcsNyArOTcsNyBAQCBzdGF0aWMgdm9pZCBzbG90X3VubG9jayhzdHJ1Y3QgenJhbSAqenJhbSwgdW5zaWduZWQgbG9uZyBpbmRleClcXG4gXFx0dW5zaWduZWQgbG9uZyAqbG9jayA9IFxcdTAwMjZ6cmFtLVxcdTAwM2V0YWJsZVtpbmRleF0uX19sb2NrO1xcbiBcXG4gXFx0bXV0ZXhfcmVsZWFzZShcXHUwMDI2enJhbS1cXHUwMDNldGFibGVfbG9ja19tYXAsIF9SRVRfSVBfKTtcXG4tXFx0Y2xlYXJfYW5kX3dha2VfdXBfYml0KFpSQU1fRU5UUllfTE9DSywgbG9jayk7XFxuK1xcdGNsZWFyX2FuZF93YWtlX3VwX2JpdChaUkFNX0VOVFJZX0xPQ0tfQklULCBsb2NrKTtcXG4gfVxcbiBcXG4gc3RhdGljIGlubGluZSBib29sIGluaXRfZG9uZShzdHJ1Y3QgenJhbSAqenJhbSlcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmggYi9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuaFxcbmluZGV4IDRmZGRjNTgyZjNiODIuLjdhNTVkNzUxNDE3ZTIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmhcXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuaFxcbkBAIC0xNSw2ICsxNSw3IEBAXFxuICNpZm5kZWYgX1pSQU1fRFJWX0hfXFxuICNkZWZpbmUgX1pSQU1fRFJWX0hfXFxuIFxcbisjaW5jbHVkZSBcXHUwMDNjYXNtL2J5dGVvcmRlci5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcndzZW0uaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3pzbWFsbG9jLmhcXHUwMDNlXFxuIFxcbkBAIC01Nyw2ICs1OCwxOSBAQCBlbnVtIHpyYW1fcGFnZWZsYWdzIHtcXG4gXFx0X19OUl9aUkFNX1BBR0VGTEFHUyxcXG4gfTtcXG4gXFxuKy8qXFxuKyAqIFRoZSBzbG90IGxvY2sgaXMgYSBiaXQtd2FpdCBsb2NrIG9uIHRoZSB3aG9sZSBfX2xvY2sgd29yZCwgd2hpbGVcXG4rICogZmxhZ3MgYW5kIGFjX3RpbWUgYWxpYXMgdGhhdCB3b3JkIGFzIHR3byB1MzJzLiAgVGhlIGxvY2sgYml0IG11c3RcXG4rICogbGFuZCBpbiB0aGUgc2xvdCB0aGF0IFpSQU1fRU5UUllfTE9DSyByZXNlcnZlcyBpbiBhdHRyLmZsYWdzOyBvblxcbisgKiA2NC1iaXQgYmlnLWVuZGlhbiB0aGUgZmxhZ3Mgd29yZCBtYXBzIHRvIHRoZSB1cHBlciBoYWxmIG9mIF9fbG9jayxcXG4rICogc28gdGhlIGJpdCBwb3NpdGlvbiBoYXMgdG8gYmUgc2hpZnRlZCB1cC5cXG4rICovXFxuKyNpZiBkZWZpbmVkKENPTkZJR182NEJJVCkgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChfX0JJR19FTkRJQU4pXFxuKyNkZWZpbmUgWlJBTV9FTlRSWV9MT0NLX0JJVCAgKFpSQU1fRU5UUllfTE9DSyArIDMyKVxcbisjZWxzZVxcbisjZGVmaW5lIFpSQU1fRU5UUllfTE9DS19CSVQgIFpSQU1fRU5UUllfTE9DS1xcbisjZW5kaWZcXG4rXFxuIC8qXFxuICAqIEFsbG9jYXRlZCBmb3IgZWFjaCBkaXNrIHBhZ2UuICBXZSB1c2UgYml0LWxvY2sgKFpSQU1fRU5UUllfTE9DSyBiaXRcXG4gICogb2YgZmxhZ3MpIHRvIHNhdmUgbWVtb3J5LiAgVGhlcmUgY2FuIGJlIHBsZW50eSBvZiBlbnRyaWVzIGFuZCBzdGFuZGFyZFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMzo1MDowMi4wNjgwMDExOThaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo2MjMzNTQ2MTYzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJaUkFNXCIsXG4gICAgXCJaUkFNX1dSSVRFQkFDS1wiLFxuICAgIFwiWlJBTV9NVUxUSV9DT01QXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwienJhbV9zdWJtaXRfYmlvXCIsXG4gICAgXCJkaXNrc2l6ZV9zdG9yZVwiLFxuICAgIFwicmVzZXRfc3RvcmVcIixcbiAgICBcInJlY29tcHJlc3Nfc3RvcmVcIixcbiAgICBcIndyaXRlYmFja19zdG9yZVwiLFxuICAgIFwiaWRsZV9zdG9yZVwiLFxuICAgIFwiY29tcGFjdF9zdG9yZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbG9ja2luZyBidWcgaW4genJhbSBvbiA2NC1iaXQgYmlnLWVuZGlhbiBzeXN0ZW1zIGJ5IGNvcnJlY3RpbmcgdGhlIGJpdCBwb3NpdGlvbiB1c2VkIGZvciBaUkFNX0VOVFJZX0xPQ0suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyBleGVjdXRpb24gZmxvdyBvbiBiaWctZW5kaWFuIGFyY2hpdGVjdHVyZXMgbGlrZSBzMzkweCwgd2hpY2ggYXJlIHN1cHBvcnRlZCBieSBzeXprYWxsZXIuIEZ1enppbmcgenJhbSBibG9jayBkZXZpY2Ugb3BlcmF0aW9ucyBhbmQgc3lzZnMgaW50ZXJmYWNlcyBjYW4gaGVscCB2ZXJpZnkgdGhlIGZpeC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMmFjZWI0YWViYzU3ZTMzY2I5OTYyNDhjOTFiNmMwYjRjZGQxYTU5NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDEwIDIzOjUwOjAwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMgYi9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuY1xuaW5kZXggZDA5ZmRjYTQ5Y2JkYS4uYTliM2JiMWQzYmVmMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuY1xuQEAgLTc0LDcgKzc0LDcgQEAgc3RhdGljIF9fbXVzdF9jaGVjayBib29sIHNsb3RfdHJ5bG9jayhzdHJ1Y3QgenJhbSAqenJhbSwgdW5zaWduZWQgbG9uZyBpbmRleClcbiB7XG4gXHR1bnNpZ25lZCBsb25nICpsb2NrID0gXHUwMDI2enJhbS1cdTAwM2V0YWJsZVtpbmRleF0uX19sb2NrO1xuIFxuLVx0aWYgKCF0ZXN0X2FuZF9zZXRfYml0X2xvY2soWlJBTV9FTlRSWV9MT0NLLCBsb2NrKSkge1xuK1x0aWYgKCF0ZXN0X2FuZF9zZXRfYml0X2xvY2soWlJBTV9FTlRSWV9MT0NLX0JJVCwgbG9jaykpIHtcbiBcdFx0bXV0ZXhfYWNxdWlyZShcdTAwMjZ6cmFtLVx1MDAzZXRhYmxlX2xvY2tfbWFwLCAwLCAxLCBfUkVUX0lQXyk7XG4gXHRcdGxvY2tfYWNxdWlyZWQoXHUwMDI2enJhbS1cdTAwM2V0YWJsZV9sb2NrX21hcCwgX1JFVF9JUF8pO1xuIFx0XHRyZXR1cm4gdHJ1ZTtcbkBAIC04OCw3ICs4OCw3IEBAIHN0YXRpYyB2b2lkIHNsb3RfbG9jayhzdHJ1Y3QgenJhbSAqenJhbSwgdW5zaWduZWQgbG9uZyBpbmRleClcbiBcdHVuc2lnbmVkIGxvbmcgKmxvY2sgPSBcdTAwMjZ6cmFtLVx1MDAzZXRhYmxlW2luZGV4XS5fX2xvY2s7XG4gXG4gXHRtdXRleF9hY3F1aXJlKFx1MDAyNnpyYW0tXHUwMDNldGFibGVfbG9ja19tYXAsIDAsIDAsIF9SRVRfSVBfKTtcbi1cdHdhaXRfb25fYml0X2xvY2sobG9jaywgWlJBTV9FTlRSWV9MT0NLLCBUQVNLX1VOSU5URVJSVVBUSUJMRSk7XG4rXHR3YWl0X29uX2JpdF9sb2NrKGxvY2ssIFpSQU1fRU5UUllfTE9DS19CSVQsIFRBU0tfVU5JTlRFUlJVUFRJQkxFKTtcbiBcdGxvY2tfYWNxdWlyZWQoXHUwMDI2enJhbS1cdTAwM2V0YWJsZV9sb2NrX21hcCwgX1JFVF9JUF8pO1xuIH1cbiBcbkBAIC05Nyw3ICs5Nyw3IEBAIHN0YXRpYyB2b2lkIHNsb3RfdW5sb2NrKHN0cnVjdCB6cmFtICp6cmFtLCB1bnNpZ25lZCBsb25nIGluZGV4KVxuIFx0dW5zaWduZWQgbG9uZyAqbG9jayA9IFx1MDAyNnpyYW0tXHUwMDNldGFibGVbaW5kZXhdLl9fbG9jaztcbiBcbiBcdG11dGV4X3JlbGVhc2UoXHUwMDI2enJhbS1cdTAwM2V0YWJsZV9sb2NrX21hcCwgX1JFVF9JUF8pO1xuLVx0Y2xlYXJfYW5kX3dha2VfdXBfYml0KFpSQU1fRU5UUllfTE9DSywgbG9jayk7XG4rXHRjbGVhcl9hbmRfd2FrZV91cF9iaXQoWlJBTV9FTlRSWV9MT0NLX0JJVCwgbG9jayk7XG4gfVxuIFxuIHN0YXRpYyBpbmxpbmUgYm9vbCBpbml0X2RvbmUoc3RydWN0IHpyYW0gKnpyYW0pXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmggYi9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuaFxuaW5kZXggNGZkZGM1ODJmM2I4Mi4uN2E1NWQ3NTE0MTdlMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuaFxuQEAgLTE1LDYgKzE1LDcgQEBcbiAjaWZuZGVmIF9aUkFNX0RSVl9IX1xuICNkZWZpbmUgX1pSQU1fRFJWX0hfXG4gXG4rI2luY2x1ZGUgXHUwMDNjYXNtL2J5dGVvcmRlci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcndzZW0uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3pzbWFsbG9jLmhcdTAwM2VcbiBcbkBAIC01Nyw2ICs1OCwxOSBAQCBlbnVtIHpyYW1fcGFnZWZsYWdzIHtcbiBcdF9fTlJfWlJBTV9QQUdFRkxBR1MsXG4gfTtcbiBcbisvKlxuKyAqIFRoZSBzbG90IGxvY2sgaXMgYSBiaXQtd2FpdCBsb2NrIG9uIHRoZSB3aG9sZSBfX2xvY2sgd29yZCwgd2hpbGVcbisgKiBmbGFncyBhbmQgYWNfdGltZSBhbGlhcyB0aGF0IHdvcmQgYXMgdHdvIHUzMnMuICBUaGUgbG9jayBiaXQgbXVzdFxuKyAqIGxhbmQgaW4gdGhlIHNsb3QgdGhhdCBaUkFNX0VOVFJZX0xPQ0sgcmVzZXJ2ZXMgaW4gYXR0ci5mbGFnczsgb25cbisgKiA2NC1iaXQgYmlnLWVuZGlhbiB0aGUgZmxhZ3Mgd29yZCBtYXBzIHRvIHRoZSB1cHBlciBoYWxmIG9mIF9fbG9jayxcbisgKiBzbyB0aGUgYml0IHBvc2l0aW9uIGhhcyB0byBiZSBzaGlmdGVkIHVwLlxuKyAqL1xuKyNpZiBkZWZpbmVkKENPTkZJR182NEJJVCkgXHUwMDI2XHUwMDI2IGRlZmluZWQoX19CSUdfRU5ESUFOKVxuKyNkZWZpbmUgWlJBTV9FTlRSWV9MT0NLX0JJVCAgKFpSQU1fRU5UUllfTE9DSyArIDMyKVxuKyNlbHNlXG4rI2RlZmluZSBaUkFNX0VOVFJZX0xPQ0tfQklUICBaUkFNX0VOVFJZX0xPQ0tcbisjZW5kaWZcbitcbiAvKlxuICAqIEFsbG9jYXRlZCBmb3IgZWFjaCBkaXNrIHBhZ2UuICBXZSB1c2UgYml0LWxvY2sgKFpSQU1fRU5UUllfTE9DSyBiaXRcbiAgKiBvZiBmbGFncykgdG8gc2F2ZSBtZW1vcnkuICBUaGVyZSBjYW4gYmUgcGxlbnR5IG9mIGVudHJpZXMgYW5kIHN0YW5kYXJkXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMzo1MDowMi4wNjgwMDIzNThaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NDcwOTQwOTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFpSQU0gUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQncyB0b3VjaGluZyBgZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmNgIGFuZCBgZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmhgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIHJlbmFtaW5nIGBaUkFNX0VOVFJZX0xPQ0tgIHRvIGBaUkFNX0VOVFJZX0xPQ0tfQklUYCBpbiB0aGUgYHNsb3RfdHJ5bG9ja2AsIGBzbG90X2xvY2tgLCBhbmQgYHNsb3RfdW5sb2NrYCBmdW5jdGlvbnMuIEl0IGxvb2tzIGxpa2UgaXQgZGVmaW5lcyBgWlJBTV9FTlRSWV9MT0NLX0JJVGAgZGlmZmVyZW50bHkgYmFzZWQgb24gdGhlIHN5c3RlbSdzIGVuZGlhbm5lc3MgYW5kIHdoZXRoZXIgaXQncyA2NC1iaXQuIEFoLCB0aGlzIGlzIGEgYnVnIGZpeCDigJMgdGFyZ2V0aW5nIGEgcHJvYmxlbSB3aXRoIGJpdCBsb2NraW5nIG9uIGJpZy1lbmRpYW4gNjQtYml0IHN5c3RlbXMuXG5cbkJ1dCB3YWl0LCBkb2VzIHRoaXMgY2hhbmdlIGFueXRoaW5nIG9uIGxpdHRsZS1lbmRpYW4gb3IgMzItYml0IHN5c3RlbXM/IE5vLCBpdCBsb29rcyBsaWtlIGBaUkFNX0VOVFJZX0xPQ0tfQklUYCBqdXN0IGJlY29tZXMgYFpSQU1fRU5UUllfTE9DS2AgZm9yIHRob3NlLiBTbywgc3RyaWN0bHkgc3BlYWtpbmcsIHRoZSBmdW5jdGlvbmFsIGNoYW5nZSBpcyBzcGVjaWZpYyB0byB0aGF0IG5pY2hlIGFyY2hpdGVjdHVyZS5cblxuVGhlIGJpZyBxdWVzdGlvbjogaXMgdGhpcyB3b3J0aCBmdXp6aW5nPyBUaGUgcGF0Y2ggKmlzKiBhIGJ1ZyBmaXggcmVsYXRlZCB0byB6cmFtJ3MgbG9ja2luZywgd2hpY2gsIGluIHRoZW9yeSwgbWFrZXMgaXQgYW4gYXR0cmFjdGl2ZSB0YXJnZXQuIFpyYW0gaXRzZWxmIGlzIGtub3duIHRvIGJlIGZ1enphYmxlLiBCdXQgdGhlIHByb21wdCBzYXlzIHNvbWV0aGluZyBhYm91dCBub3QgZnV6emluZyBpZiBpdCdzIGp1c3QgY29uc3RhbnRzLCBidXQgdGhpcyBhY3R1YWxseSBhbHRlcnMgdGhlIGV4ZWN1dGlvbiBmbG93LCBqdXN0IG9uIHRoYXQgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlLlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFN5emthbGxlciBzdXBwb3J0cyB4ODZfNjQgKGxpdHRsZS1lbmRpYW4pLCBhcm02NCwgcmlzY3Y2NCwgYW5kIHMzOTB4IChiaWctZW5kaWFuKS4gVGhlIGZpeCBpcyBmb3IgYmlnLWVuZGlhbiA2NC1iaXQsIHNvIGl0ICpjb3VsZCogaW1wYWN0IHMzOTB4LiBUaGlzIG1pZ2h0IGJlIHdvcnRoIGludmVzdGlnYXRpbmcuIFRoZSBwcm9tcHQgc2F5cyB0byByZXR1cm4gZmFsc2UgaWYgaXQgb25seSBjaGFuZ2VzIGNvbnN0YW50cyB0aGF0IGRvbid0IGFsdGVyIGV4ZWN1dGlvbi4gSSBkb24ndCB0aGluayBpdCBjaGFuZ2VzIGV4ZWN1dGlvbiBvbiB0aGUgc3RhbmRhcmQgYXJjaGl0ZWN0dXJlcywgYnV0IEkgZG8gdGhpbmsgaXQgYWx0ZXJzIGV4ZWN1dGlvbiBvbiBzMzkweC4gTGV0IG1lIGNoZWNrIHRoZSBzb3VyY2UgZmlsZXMuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc3MywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzNSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIzOjUwOjA5LjUzODk0NjE0M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODE0MTMyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJaUkFNX0VOVFJZX0xPQ0tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay96cmFtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz03Mz1zdGF0aWMgX19tdXN0X2NoZWNrIGJvb2wgc2xvdF90cnlsb2NrKHN0cnVjdCB6cmFtICp6cmFtLCB1bnNpZ25lZCBsb25nIGluZGV4KVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtNzYtXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Nzc6XFx0aWYgKCF0ZXN0X2FuZF9zZXRfYml0X2xvY2soWlJBTV9FTlRSWV9MT0NLX0JJVCwgbG9jaykpIHtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy03OC1cXHRcXHRtdXRleF9hY3F1aXJlKFxcdTAwMjZ6cmFtLVxcdTAwM2V0YWJsZV9sb2NrX21hcCwgMCwgMSwgX1JFVF9JUF8pO1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9ODY9c3RhdGljIHZvaWQgc2xvdF9sb2NrKHN0cnVjdCB6cmFtICp6cmFtLCB1bnNpZ25lZCBsb25nIGluZGV4KVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtOTAtXFx0bXV0ZXhfYWNxdWlyZShcXHUwMDI2enJhbS1cXHUwMDNldGFibGVfbG9ja19tYXAsIDAsIDAsIF9SRVRfSVBfKTtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzo5MTpcXHR3YWl0X29uX2JpdF9sb2NrKGxvY2ssIFpSQU1fRU5UUllfTE9DS19CSVQsIFRBU0tfVU5JTlRFUlJVUFRJQkxFKTtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy05Mi1cXHRsb2NrX2FjcXVpcmVkKFxcdTAwMjZ6cmFtLVxcdTAwM2V0YWJsZV9sb2NrX21hcCwgX1JFVF9JUF8pO1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9OTU9c3RhdGljIHZvaWQgc2xvdF91bmxvY2soc3RydWN0IHpyYW0gKnpyYW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy05OS1cXHRtdXRleF9yZWxlYXNlKFxcdTAwMjZ6cmFtLVxcdTAwM2V0YWJsZV9sb2NrX21hcCwgX1JFVF9JUF8pO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjEwMDpcXHRjbGVhcl9hbmRfd2FrZV91cF9iaXQoWlJBTV9FTlRSWV9MT0NLX0JJVCwgbG9jayk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTAxLX1cXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oPTQ2PWVudW0genJhbV9wYWdlZmxhZ3Mge1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oLTQ3LVxcdFpSQU1fU0FNRSA9IFpSQU1fRkxBR19TSElGVCxcXHQvKiBQYWdlIGNvbnNpc3RzIHRoZSBzYW1lIGVsZW1lbnQgKi9cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuaDo0ODpcXHRaUkFNX0VOVFJZX0xPQ0ssIC8qIGVudHJ5IGFjY2VzcyBsb2NrIGJpdCAqL1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oLTQ5LVxcdFpSQU1fV0IsXFx0LyogcGFnZSBpcyBzdG9yZWQgb24gYmFja2luZ19kZXZpY2UgKi9cXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oLTYzLSAqIGZsYWdzIGFuZCBhY190aW1lIGFsaWFzIHRoYXQgd29yZCBhcyB0d28gdTMycy4gIFRoZSBsb2NrIGJpdCBtdXN0XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2Lmg6NjQ6ICogbGFuZCBpbiB0aGUgc2xvdCB0aGF0IFpSQU1fRU5UUllfTE9DSyByZXNlcnZlcyBpbiBhdHRyLmZsYWdzOyBvblxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oLTY1LSAqIDY0LWJpdCBiaWctZW5kaWFuIHRoZSBmbGFncyB3b3JkIG1hcHMgdG8gdGhlIHVwcGVyIGhhbGYgb2YgX19sb2NrLFxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmgtNjgtI2lmIGRlZmluZWQoQ09ORklHXzY0QklUKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKF9fQklHX0VORElBTilcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuaDo2OTojZGVmaW5lIFpSQU1fRU5UUllfTE9DS19CSVQgIChaUkFNX0VOVFJZX0xPQ0sgKyAzMilcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuaC03MC0jZWxzZVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oOjcxOiNkZWZpbmUgWlJBTV9FTlRSWV9MT0NLX0JJVCAgWlJBTV9FTlRSWV9MT0NLXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmgtNzItI2VuZGlmXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuaC03NC0vKlxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oOjc1OiAqIEFsbG9jYXRlZCBmb3IgZWFjaCBkaXNrIHBhZ2UuICBXZSB1c2UgYml0LWxvY2sgKFpSQU1fRU5UUllfTE9DSyBiaXRcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuaC03Ni0gKiBvZiBmbGFncykgdG8gc2F2ZSBtZW1vcnkuICBUaGVyZSBjYW4gYmUgcGxlbnR5IG9mIGVudHJpZXMgYW5kIHN0YW5kYXJkXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIzOjUwOjA5LjU4NzA5NDI2OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzODU5MjAwMDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUaGlzIFpSQU0gUGF0Y2ggLSBBIFdvcnRoeSBFbmRlYXZvcioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgbG9ja2luZyBidWcgd2l0aGluIHpyYW0sIHNwZWNpZmljYWxseSBvbiA2NC1iaXQgYmlnLWVuZGlhbiBzeXN0ZW1zLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXb3J0aCBmdXp6aW5nP1wiIEdpdmVuIHRoZSBzY29wZSBvZiB0aGUgY2hhbmdlLCB3aGljaCBpbnZvbHZlcyB0aGUgY29yZSB6cmFtIGxvZ2ljIOKAkyB0aGUgbG9ja2luZyBtZWNoYW5pc20gaXRzZWxmIOKAkyB0aGUgYW5zd2VyIGlzIGEgcmVzb3VuZGluZyBcIlllcy5cIiBUaGlzIGlzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLlxuXG5Ob3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBjb25maXJtIGlmIHpyYW0gaXMgZXZlbiBmdXp6YWJsZS4gTHVja2lseSwgaXQgcHJlc2VudHMgYXMgYSBibG9jayBkZXZpY2UsIGFjY2Vzc2libGUgdGhyb3VnaCBgL2Rldi96cmFtMGAuIFBlcmZlY3QhIFdlIGNhbiBsZXZlcmFnZSBzdGFuZGFyZCBibG9jayBkZXZpY2UgZnV6emluZyB0ZWNobmlxdWVzLlxuXG5Ib3dldmVyLCBhIHF1aWNrIHJldmlldyBvZiB0aGUgaW5zdHJ1Y3Rpb25zIHN0b3BzIG1lLiBUaGUgcHJvbXB0IHN0YXRlcyB0aGF0IGlmIHRoZSBwYXRjaCAqb25seSogaW52b2x2ZXMgY2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkb24ndCBhbHRlciBmdW5jdGlvbmFsIGV4ZWN1dGlvbiwgdGhlIGFuc3dlciBpcyBcIldvcnRoRnV6emluZz1mYWxzZVwiLiBPbiBsaXR0bGUtZW5kaWFuIGFyY2hpdGVjdHVyZXMgbGlrZSB4ODZfNjQsIHRoaXMgcGF0Y2ggbGlrZWx5ICp3b3VsZG4ndCogY2hhbmdlIHRoZSBleGVjdXRpb24gZmxvdy4gSG93ZXZlciwgdGhlIGNhdGNoIGlzIHRoZSBiaWctZW5kaWFuIHN5c3RlbXMuIFNpbmNlIHRoaXMgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgbG9ja2luZyBtZWNoYW5pc20sIGl0IGRvZXMgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93IG9uIGEgYmlnLWVuZGlhbiBhcmNoaXRlY3R1cmUuXG5cblRoZSBnb29kIG5ld3MgaXMgdGhhdCBTeXprYWxsZXIgKmRvZXMqIHN1cHBvcnQgczM5MHgsIHdoaWNoIGlzIGEgYmlnLWVuZGlhbiBhcmNoaXRlY3R1cmUuIFRoZXJlZm9yZSwgZ2l2ZW4gdGhlIHBsYXRmb3JtIHN1cHBvcnQgYW5kIHRoZSBtb2RpZmljYXRpb24gdG8gY29yZSBsb2dpYywgdGhpcyBwYXRjaCAqaXMqIHdvcnRoIGZ1enppbmcuIFRoZSBuZXh0IHN0ZXAgaXMgdG8gZmluZCB0aGUgcmVsZXZhbnQgenJhbSBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjMxLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIzOjUwOjE0Ljk3MzAxNjk2NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzUxNDU5ODIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFpSQU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay96cmFtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoyOmNvbmZpZyBaUkFNXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiQ29tcHJlc3NlZCBSQU0gYmxvY2sgZGV2aWNlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xNi1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxNzpjb25maWcgWlJBTV9CQUNLRU5EX0xaNFxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTE4LVxcdGJvb2wgXFxcImx6NCBjb21wcmVzc2lvbiBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMjItXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MjM6Y29uZmlnIFpSQU1fQkFDS0VORF9MWjRIQ1xcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTI0LVxcdGJvb2wgXFxcImx6NGhjIGNvbXByZXNzaW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0yOC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoyOTpjb25maWcgWlJBTV9CQUNLRU5EX1pTVERcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0zMC1cXHRib29sIFxcXCJ6c3RkIGNvbXByZXNzaW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0zNC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzozNTpjb25maWcgWlJBTV9CQUNLRU5EX0RFRkxBVEVcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0zNi1cXHRib29sIFxcXCJkZWZsYXRlIGNvbXByZXNzaW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy00MC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo0MTpjb25maWcgWlJBTV9CQUNLRU5EXzg0MlxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTQyLVxcdGJvb2wgXFxcIjg0MiBjb21wcmVzc2lvbiBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNDYtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NDc6Y29uZmlnIFpSQU1fQkFDS0VORF9GT1JDRV9MWk9cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy00OC1cXHRkZXBlbmRzIG9uIFpSQU1cXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTUyLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjUzOmNvbmZpZyBaUkFNX0JBQ0tFTkRfTFpPXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNTQtXFx0Ym9vbCBcXFwibHpvIGFuZCBsem8tcmxlIGNvbXByZXNzaW9uIHN1cHBvcnRcXFwiIGlmICFaUkFNX0JBQ0tFTkRfRk9SQ0VfTFpPXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz02MD1jaG9pY2VcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTY0LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjY1OmNvbmZpZyBaUkFNX0RFRl9DT01QX0xaT1JMRVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTY2LVxcdGJvb2wgXFxcImx6by1ybGVcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy02OC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo2OTpjb25maWcgWlJBTV9ERUZfQ09NUF9MWk9cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy03MC1cXHRib29sIFxcXCJsem9cXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy03Mi1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo3Mzpjb25maWcgWlJBTV9ERUZfQ09NUF9MWjRcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy03NC1cXHRib29sIFxcXCJsejRcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy03Ni1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo3Nzpjb25maWcgWlJBTV9ERUZfQ09NUF9MWjRIQ1xcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTc4LVxcdGJvb2wgXFxcImx6NGhjXFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODAtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6ODE6Y29uZmlnIFpSQU1fREVGX0NPTVBfWlNURFxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTgyLVxcdGJvb2wgXFxcInpzdGRcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy04NC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo4NTpjb25maWcgWlJBTV9ERUZfQ09NUF9ERUZMQVRFXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODYtXFx0Ym9vbCBcXFwiZGVmbGF0ZVxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTg4LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjg5OmNvbmZpZyBaUkFNX0RFRl9DT01QXzg0MlxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTkwLVxcdGJvb2wgXFxcIjg0MlxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnPTkzPWVuZGNob2ljZVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTk0LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjk1OmNvbmZpZyBaUkFNX0RFRl9DT01QXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctOTYtXFx0c3RyaW5nXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMDYtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MTA3OmNvbmZpZyBaUkFNX1dSSVRFQkFDS1xcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEwOC0gICAgICAgYm9vbCBcXFwiV3JpdGUgYmFjayBpbmNvbXByZXNzaWJsZSBvciBpZGxlIHBhZ2UgdG8gYmFja2luZyBkZXZpY2VcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMjAtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MTIxOmNvbmZpZyBaUkFNX1RSQUNLX0VOVFJZX0FDVElNRVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEyMi1cXHRib29sIFxcXCJUcmFjayBhY2Nlc3MgdGltZSBvZiB6cmFtIGVudHJpZXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMjgtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MTI5OmNvbmZpZyBaUkFNX01FTU9SWV9UUkFDS0lOR1xcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEzMC1cXHRib29sIFxcXCJUcmFjayB6UmFtIGJsb2NrIHN0YXR1c1xcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEzOS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxNDA6Y29uZmlnIFpSQU1fTVVMVElfQ09NUFxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTE0MS1cXHRib29sIFxcXCJFbmFibGUgbXVsdGlwbGUgY29tcHJlc3Npb24gc3RyZWFtc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjM6NTA6MTUuMzQ4MTY4NDk4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA1MTIyNjg0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgc3RhbmRzOlxuXG4qKlpSQU0gRGVwZW5kZW5jeSBDaGVjayoqXG5cbk9rYXksIHRoZSBjb25maWd1cmF0aW9uIEknbSB3b3JraW5nIHdpdGggaXMgc2V0IHRvIGBaUkFNYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiZG9lcyBgWlJBTWAgaGF2ZSBhbnkgZGVwZW5kZW5jaWVzIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mP1wiLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBzY29wZSBvZiB3aGF0IGFjdGl2YXRpbmcgb3IgbW9kaWZ5aW5nIGBaUkFNYCBtaWdodCBpbnZvbHZlLiBUaGlzIGNvdWxkIGJlIGhhcmR3YXJlLCBrZXJuZWwgbW9kdWxlcywgc3BlY2lmaWMgZHJpdmVycywgb3Igb3RoZXIgc3lzdGVtIHNldHRpbmdzLiBVbmRlcnN0YW5kaW5nIHRoZXNlIGRlcGVuZGVuY2llcyBpcyBjcnVjaWFsIGZvciBhIGNsZWFuIGltcGxlbWVudGF0aW9uLiBJIHNob3VsZCBwcm9iYWJseSBzdGFydCBtYXBwaW5nIG91dCB3aGF0IHRob3NlIGNvdWxkIGJlLiBUaW1lIHRvIGRpZyBkZWVwZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0NDksIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMzo1MDoxOC4zOTkzOTczMzVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzQ0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdGNvbmZpZyBaUkFNXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiQ29tcHJlc3NlZCBSQU0gYmxvY2sgZGV2aWNlIHN1cHBvcnRcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIEJMT0NLIFxcdTAwMjZcXHUwMDI2IFNZU0ZTIFxcdTAwMjZcXHUwMDI2IE1NVVxcbiAgIDU6XFx0XFx0c2VsZWN0IFpTTUFMTE9DXFxuICAgNjpcXHRcXHRoZWxwXFxuICAgNzpcXHRcXHQgIENyZWF0ZXMgdmlydHVhbCBibG9jayBkZXZpY2VzIGNhbGxlZCAvZGV2L3pyYW1YIChYID0gMCwgMSwgLi4uKS5cXG4gICA4OlxcdFxcdCAgUGFnZXMgd3JpdHRlbiB0byB0aGVzZSBkaXNrcyBhcmUgY29tcHJlc3NlZCBhbmQgc3RvcmVkIGluIG1lbW9yeVxcbiAgIDk6XFx0XFx0ICBpdHNlbGYuIFRoZXNlIGRpc2tzIGFsbG93IHZlcnkgZmFzdCBJL08gYW5kIGNvbXByZXNzaW9uIHByb3ZpZGVzXFxuICAxMDpcXHRcXHQgIGdvb2QgYW1vdW50cyBvZiBtZW1vcnkgc2F2aW5ncy5cXG4gIDExOlxcdFxcbiAgMTI6XFx0XFx0ICBJdCBoYXMgc2V2ZXJhbCB1c2UgY2FzZXMsIGZvciBleGFtcGxlOiAvdG1wIHN0b3JhZ2UsIHVzZSBhcyBzd2FwXFxuICAxMzpcXHRcXHQgIGRpc2tzIGFuZCBtYXliZSBtYW55IG1vcmUuXFxuICAxNDpcXHRcXG4gIDE1OlxcdFxcdCAgU2VlIERvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvYmxvY2tkZXYvenJhbS5yc3QgZm9yIG1vcmUgaW5mb3JtYXRpb24uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIzOjUwOjE4LjM5OTQ1NTg2NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2MTUzNjM2NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipNeSBUaGlua2luZyBvbiBaUkFNIGFuZCBLZXJuZWwgTW9kaWZpY2F0aW9ucyoqXG5cblJpZ2h0LCBzbyB0aGlzIGtlcm5lbC1sZXZlbCBvcHRpbWl6YXRpb24gaGluZ2VzIG9uIGEgZmV3IGNvcmUgY29tcG9uZW50czogYEJMT0NLYCwgYFNZU0ZTYCwgYW5kIHRoZSBgTU1VYC4gQmFzZWQgb24gdGhhdCwgYW5kIGNvbnNpZGVyaW5nIHRoZSBwcm9ibGVtIGRvbWFpbiwgaXQgbG9va3MgbGlrZSBgWlNNQUxMT0NgIGlzIHRoZSBwcmVmZXJyZWQgYWxsb2NhdG9yLiBJZiB0aGF0J3MgdGhlIGNhc2UsIHRoZW4gYFpSQU1gIGl0c2VsZiBzaG91bGQgYmUgc3VmZmljaWVudCBmb3IgdGhlIHJlcXVpcmVkIGZ1bmN0aW9uYWxpdHkuIFNlZW1zIGxpa2UgYSBkZWNlbnQgc3RhcnRpbmcgcG9pbnQuXG5cbk5vdywgbGV0J3MgcGlucG9pbnQgdGhlIGNydXggb2YgdGhpcyBtb2RpZmljYXRpb24uIEl0IGxvb2tzIGxpa2UgdGhlIHBhdGNoIEknbSBleGFtaW5pbmcgaXMgZm9jdXNlZCBvbiB0aGVzZSBgc2xvdF90cnlsb2NrYCwgYHNsb3RfbG9ja2AsIGFuZCBgc2xvdF91bmxvY2tgIGZ1bmN0aW9ucy4gQW5kIHRoZXkncmUgKnN0YXRpYyosIHdoaWNoIGlzIGltcG9ydGFudCBjb250ZXh0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGVzZSBmdW5jdGlvbnMgYXJlIHVzZWQuIEtub3dpbmcgdGhlIGNhbGwgc2l0ZXMgd2lsbCBiZSBrZXkgdG8gZ3Jhc3BpbmcgdGhlIGZ1bGwgaW1wYWN0IG9mIHRoZXNlIGNoYW5nZXMuIEknbGwgZm9jdXMgb24gd2hlcmUgdGhvc2UgYXJlIGludm9rZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4NTgsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIzOjUwOjI1LjAxNDgyMjg0N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE0Njk0MTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2xvdF9sb2NrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTczPXN0YXRpYyBfX211c3RfY2hlY2sgYm9vbCBzbG90X3RyeWxvY2soc3RydWN0IHpyYW0gKnpyYW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy04NS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzo4NjpzdGF0aWMgdm9pZCBzbG90X2xvY2soc3RydWN0IHpyYW0gKnpyYW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtODcte1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MjU1PXN0YXRpYyB2b2lkIHJlbGVhc2VfcHBfc2xvdChzdHJ1Y3QgenJhbSAqenJhbSwgc3RydWN0IHpyYW1fcHBfc2xvdCAqcHBzKVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjU4LVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI1OTpcXHRzbG90X2xvY2soenJhbSwgcHBzLVxcdTAwM2VpbmRleCk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjYwLVxcdGNsZWFyX3Nsb3RfZmxhZyh6cmFtLCBwcHMtXFx1MDAzZWluZGV4LCBaUkFNX1BQX1NMT1QpO1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9NDE4PXN0YXRpYyB2b2lkIG1hcmtfaWRsZShzdHJ1Y3QgenJhbSAqenJhbSwga3RpbWVfdCBjdXRvZmYpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy00MzEtXFx0XFx0ICovXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6NDMyOlxcdFxcdHNsb3RfbG9jayh6cmFtLCBpbmRleCk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtNDMzLVxcdFxcdGlmICghc2xvdF9hbGxvY2F0ZWQoenJhbSwgaW5kZXgpIHx8XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz05MTM9c3RhdGljIGludCB6cmFtX3dyaXRlYmFja19jb21wbGV0ZShzdHJ1Y3QgenJhbSAqenJhbSwgc3RydWN0IHpyYW1fd2JfcmVxICpyZXEpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy05MjktXFx0YXRvbWljNjRfaW5jKFxcdTAwMjZ6cmFtLVxcdTAwM2VzdGF0cy5iZF93cml0ZXMpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjkzMDpcXHRzbG90X2xvY2soenJhbSwgaW5kZXgpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTkzMS1cXHQvKlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MTAyOT1zdGF0aWMgaW50IHpyYW1fd3JpdGViYWNrX3Nsb3RzKHN0cnVjdCB6cmFtICp6cmFtLFxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTA3NC1cXHRcXHRpbmRleCA9IHBwcy1cXHUwMDNlaW5kZXg7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTA3NTpcXHRcXHRzbG90X2xvY2soenJhbSwgaW5kZXgpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTEwNzYtXFx0XFx0LypcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTExOTk9c3RhdGljIHZvaWQgc2Nhbl9zbG90c19mb3Jfd3JpdGViYWNrKHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgbW9kZSxcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTEyMDctXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTIwODpcXHRcXHRzbG90X2xvY2soenJhbSwgaW5kZXgpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTEyMDktXFx0XFx0aWYgKCFzbG90X2FsbG9jYXRlZCh6cmFtLCBpbmRleCkpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xMzQxPXN0YXRpYyBpbnQgZGVjb21wcmVzc19iZGV2X3BhZ2Uoc3RydWN0IHpyYW0gKnpyYW0sIHN0cnVjdCBwYWdlICpwYWdlLFxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTM0OC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoxMzQ5OlxcdHNsb3RfbG9jayh6cmFtLCBpbmRleCk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTM1MC1cXHQvKiBTaW5jZSBzbG90IHdhcyB1bmxvY2tlZCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSBpdCdzIHN0aWxsIFpSQU1fV0IgKi9cXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTE1NDU9c3RhdGljIHNzaXplX3QgcmVhZF9ibG9ja19zdGF0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKmJ1ZixcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE1NjgtXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTU2OTpcXHRcXHRzbG90X2xvY2soenJhbSwgaW5kZXgpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE1NzAtXFx0XFx0aWYgKCFzbG90X2FsbG9jYXRlZCh6cmFtLCBpbmRleCkpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0yMTc0PXN0YXRpYyBpbnQgenJhbV9yZWFkX3BhZ2Uoc3RydWN0IHpyYW0gKnpyYW0sIHN0cnVjdCBwYWdlICpwYWdlLFxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjE3OC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoyMTc5OlxcdHNsb3RfbG9jayh6cmFtLCBpbmRleCk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjE4MC1cXHRpZiAoIXRlc3Rfc2xvdF9mbGFnKHpyYW0sIGluZGV4LCBaUkFNX1dCKSkge1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MjIyOT1zdGF0aWMgaW50IHdyaXRlX3NhbWVfZmlsbGVkX3BhZ2Uoc3RydWN0IHpyYW0gKnpyYW0sIHVuc2lnbmVkIGxvbmcgZmlsbCxcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTIyMzEte1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjIyMzI6XFx0c2xvdF9sb2NrKHpyYW0sIGluZGV4KTtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yMjMzLVxcdHNsb3RfZnJlZSh6cmFtLCBpbmRleCk7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0yMjQ0PXN0YXRpYyBpbnQgd3JpdGVfaW5jb21wcmVzc2libGVfcGFnZShzdHJ1Y3QgenJhbSAqenJhbSwgc3RydWN0IHBhZ2UgKnBhZ2UsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yMjY5LVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjIyNzA6XFx0c2xvdF9sb2NrKHpyYW0sIGluZGV4KTtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yMjcxLVxcdHNsb3RfZnJlZSh6cmFtLCBpbmRleCk7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0yMjg1PXN0YXRpYyBpbnQgenJhbV93cml0ZV9wYWdlKHN0cnVjdCB6cmFtICp6cmFtLCBzdHJ1Y3QgcGFnZSAqcGFnZSxcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTIzMzUtXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MjMzNjpcXHRzbG90X2xvY2soenJhbSwgaW5kZXgpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTIzMzctXFx0c2xvdF9mcmVlKHpyYW0sIGluZGV4KTtcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTIzOTQ9c3RhdGljIHZvaWQgc2Nhbl9zbG90c19mb3JfcmVjb21wcmVzcyhzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIG1vZGUsIHUzMiBwcmlvLFxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjQwMi1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoyNDAzOlxcdFxcdHNsb3RfbG9jayh6cmFtLCBpbmRleCk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjQwNC1cXHRcXHRpZiAoIXNsb3RfYWxsb2NhdGVkKHpyYW0sIGluZGV4KSlcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTI1NDY9c3RhdGljIHNzaXplX3QgcmVjb21wcmVzc19zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yNjYzLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI2NjQ6XFx0XFx0c2xvdF9sb2NrKHpyYW0sIHBwcy1cXHUwMDNlaW5kZXgpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI2NjUtXFx0XFx0aWYgKCF0ZXN0X3Nsb3RfZmxhZyh6cmFtLCBwcHMtXFx1MDAzZWluZGV4LCBaUkFNX1BQX1NMT1QpKVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MjY5MD1zdGF0aWMgdm9pZCB6cmFtX2Jpb19kaXNjYXJkKHN0cnVjdCB6cmFtICp6cmFtLCBzdHJ1Y3QgYmlvICpiaW8pXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yNzE1LVxcdHdoaWxlIChuIFxcdTAwM2U9IFBBR0VfU0laRSkge1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI3MTY6XFx0XFx0c2xvdF9sb2NrKHpyYW0sIGluZGV4KTtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yNzE3LVxcdFxcdHNsb3RfZnJlZSh6cmFtLCBpbmRleCk7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0yNzI4PXN0YXRpYyB2b2lkIHpyYW1fYmlvX3JlYWQoc3RydWN0IHpyYW0gKnpyYW0sIHN0cnVjdCBiaW8gKmJpbylcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI3NDctXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjc0ODpcXHRcXHRzbG90X2xvY2soenJhbSwgaW5kZXgpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI3NDktXFx0XFx0bWFya19zbG90X2FjY2Vzc2VkKHpyYW0sIGluZGV4KTtcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTI3NTk9c3RhdGljIHZvaWQgenJhbV9iaW9fd3JpdGUoc3RydWN0IHpyYW0gKnpyYW0sIHN0cnVjdCBiaW8gKmJpbylcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI3NzctXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjc3ODpcXHRcXHRzbG90X2xvY2soenJhbSwgaW5kZXgpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI3NzktXFx0XFx0bWFya19zbG90X2FjY2Vzc2VkKHpyYW0sIGluZGV4KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjM6NTA6MjUuMDY2Mjk4NjEyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyNzEwNTQxNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFpSQU0gQ29uY3VycmVuY3kqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgWlJBTSBjb2RlIGFuZCBpbW1lZGlhdGVseSBJIHNlZSBgc2xvdF9sb2NrYCBiZWluZyB1c2VkIGFjcm9zcyBhIGJ1bmNoIG9mIGtleSBmdW5jdGlvbnM6IGB6cmFtX3JlYWRfcGFnZWAsIGB6cmFtX3dyaXRlX3BhZ2VgLCBgenJhbV9iaW9fZGlzY2FyZGAsIGB6cmFtX2Jpb19yZWFkYCwgYHpyYW1fYmlvX3dyaXRlYCwgYHpyYW1fd3JpdGViYWNrX3Nsb3RzYCwgYHJlY29tcHJlc3Nfc3RvcmVgLCBhbmQgYHJlYWRfYmxvY2tfc3RhdGVgLiBUaGF0J3MgYSBwcmV0dHkgYnJvYWQgc2NvcGUgZm9yIGEgc2luZ2xlIGxvY2ssIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCdzIGJlaW5nIHVzZWQgYW5kIGlmIHRoZXJlIGFyZSBhbnkgcG90ZW50aWFsIGJvdHRsZW5lY2tzIG9yIGNvbnRlbnRpb24gaXNzdWVzLlxuXG5SaWdodCBub3csIEknbSBnb2luZyB0byB6ZXJvIGluIG9uIGB6cmFtX3JlYWRfcGFnZWAsIGB6cmFtX3dyaXRlX3BhZ2VgLCBgenJhbV9iaW9fZGlzY2FyZGAsIGB6cmFtX2Jpb19yZWFkYCwgYW5kIGB6cmFtX2Jpb193cml0ZWAsIGFzIHRob3NlIHNlZW0gbGlrZSB0aGUgY29yZSBJL08gb3BlcmF0aW9ucy4gSG9sZCBvbiBhIHNlY29uZC4uLiBhcmUgYHpyYW1fYmlvX3JlYWRgIGFuZCBgenJhbV9iaW9fd3JpdGVgIHN0YXRpYz8gWWVwLCB0aGV5IGFyZS4gVGhhdCBtZWFucyB0aGV5J3JlIG5vdCBlbnRyeSBwb2ludHMgZnJvbSBvdXRzaWRlIHRoaXMgbW9kdWxlLiBPa2F5LCB0aGF0J3MgYW4gaW1wb3J0YW50IHBpZWNlIG9mIGluZm9ybWF0aW9uLiBJIG5lZWQgdG8gbm93IGZvY3VzIG9uIHRoZSBub24tc3RhdGljIGVudHJ5IHBvaW50cyBzbyBJIGNhbiB1bmRlcnN0YW5kIGhvdyB0aGVzZSBmdW5jdGlvbnMgYXJlIGJlaW5nIGludm9rZWQuIEknbGwgbmVlZCB0byB0cmFjZSB0aG9zZSBmdW5jdGlvbiBjYWxscyBhbmQgc2VlIHdoZXJlIHRoZSBsb2NraW5nIG9jY3Vycy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTM3MCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMzo1MDozMC4zMzczNTU4MDJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyNjQ2NTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInpyYW1fYmlvX3JlYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MjY5MD1zdGF0aWMgdm9pZCB6cmFtX2Jpb19kaXNjYXJkKHN0cnVjdCB6cmFtICp6cmFtLCBzdHJ1Y3QgYmlvICpiaW8pXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yNzI3LVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI3Mjg6c3RhdGljIHZvaWQgenJhbV9iaW9fcmVhZChzdHJ1Y3QgenJhbSAqenJhbSwgc3RydWN0IGJpbyAqYmlvKVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI3Mjkte1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9Mjc5Mj1zdGF0aWMgdm9pZCB6cmFtX3N1Ym1pdF9iaW8oc3RydWN0IGJpbyAqYmlvKVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjc5Ny1cXHRjYXNlIFJFUV9PUF9SRUFEOlxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI3OTg6XFx0XFx0enJhbV9iaW9fcmVhZCh6cmFtLCBiaW8pO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI3OTktXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIzOjUwOjMwLjM5MDAwODE1N1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDQ5MTM4ODY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyB0aG91Z2ggSSB3ZXJlIGNvbnNpZGVyaW5nIGl0IG15c2VsZiwgd2l0aCBhIGZvY3VzIG9uIGEgdXNlciB3aG8ncyBhbiBleHBlcnQ6XG5cbioqVW5kZXJzdGFuZGluZyBgenJhbV9zdWJtaXRfYmlvYCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2UncmUgdGFsa2luZyBhYm91dCBgenJhbV9zdWJtaXRfYmlvYCwgd2hpY2gsIGFzIHRoZSBuYW1lIHN1Z2dlc3RzLCBpcyB0aGUgYHN1Ym1pdF9iaW9gIGZ1bmN0aW9uIHdpdGhpbiB0aGUgenJhbSBibG9jayBkZXZpY2UgZHJpdmVyLiBTdHJhaWdodGZvcndhcmQgZW5vdWdoLCBidXQgbGV0J3MgYmUgYWJzb2x1dGVseSBjbGVhcjogdGhpcyBpcyB0aGUgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yICpoYW5kaW5nIG9mZiogdGhlIEkvTyByZXF1ZXN0IHRvIHRoZSB6cmFtIGxheWVyIGZyb20gdGhlIGJsb2NrIGxheWVyLiBNZWFuaW5nLCBpdCdzIHdoZXJlIHRoZSBkYXRhIGVudGVycyB0aGUgenJhbSBkb21haW4sIGFuZCB3aGVyZSBhbGwgdGhlIG1hZ2ljIG9mIGNvbXByZXNzaW9uLCBhbmQgcG90ZW50aWFsbHkgc3dhcHBpbmcsIGJlZ2lucy4gVGhpcyBpcyBub3QgdGhlIFwic3RhcnRcIiBvZiB0aGUgc3VibWlzc2lvbiBvZiB0aGUgYmxvY2sgb3BlcmF0aW9uLCB0aGUgYmlvIGNvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIHN0YXJ0ZWQsIHdoaWNoIG1lYW5zIHRoaXMgb3BlcmF0aW9uIHdpbGwgaGF2ZSB0byB0YWtlIHBsYWNlIG9uIHRvcC4gV2UgYWxyZWFkeSBrbm93IHRoZSBkYXRhIGlzIGEgQklPIG9wZXJhdGlvbi4gSSBuZWVkIHRvIGJlIGF3YXJlIG9mIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBmdW5jdGlvbiBjYWxsIGluIHRoZSBvdmVyYWxsIEkvTyBwYXRoLiBUaGlzIGZ1bmN0aW9uLCBpZiBub3QgY2FyZWZ1bGx5IHdyaXR0ZW4sIGNvdWxkIGNyZWF0ZSBhIGJvdHRsZW5lY2sgYW5kIGltcGFjdCBwZXJmb3JtYW5jZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAxMTIsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMzo1MDozNC40MzkxNTU0MjJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2OTk3Njg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInpyYW1fc3VibWl0X2Jpb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0yNzU5PXN0YXRpYyB2b2lkIHpyYW1fYmlvX3dyaXRlKHN0cnVjdCB6cmFtICp6cmFtLCBzdHJ1Y3QgYmlvICpiaW8pXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yNzkxLSAqL1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI3OTI6c3RhdGljIHZvaWQgenJhbV9zdWJtaXRfYmlvKHN0cnVjdCBiaW8gKmJpbylcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yNzkzLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTI5ODM9c3RhdGljIGNvbnN0IHN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyB6cmFtX2Rldm9wcyA9IHtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yOTg0LVxcdC5vcGVuID0genJhbV9vcGVuLFxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI5ODU6XFx0LnN1Ym1pdF9iaW8gPSB6cmFtX3N1Ym1pdF9iaW8sXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjk4Ni1cXHQuc3dhcF9zbG90X2ZyZWVfbm90aWZ5ID0genJhbV9zbG90X2ZyZWVfbm90aWZ5LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMzo1MDozNC40ODYxNTgyNzdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU0MDU1NDQwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHNpdHVhdGlvbiwgZmlsdGVyZWQgdGhyb3VnaCBteSBleHBlcnQgbGVuczpcblxuKipacmFtIEJsb2NrIERldmljZSBDb250ZXh0KipcblxuQWxyaWdodCwgc28gd2UncmUgbG9va2luZyBhdCB0aGUgY29yZSBmdW5jdGlvbnMgYW5kIG1lY2hhbmlzbXMgb2YgdGhlIHpyYW0gYmxvY2sgZGV2aWNlIGRyaXZlci4gVGhlIHByaW1hcnkgc3VibWl0IGZ1bmN0aW9uLCBgenJhbV9zdWJtaXRfYmlvYCwgaXMgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCwgc28gdG8gc3BlYWsuIFRoaXMgaXMgdGhlIGhlYXJ0IG9mIEkvTyBoYW5kbGluZyDigJMgdGhlIGNyaXRpY2FsIHBhdGguXG5cbkJleW9uZCB0aGF0IGNvcmUgZnVuY3Rpb24sIEkgc2VlIHRoZSB0eXBpY2FsIGRldmljZSBsaWZlY3ljbGUgZnVuY3Rpb25zIHJlcHJlc2VudGVkOiBgenJhbV9vcGVuYCwgYHpyYW1fc2xvdF9mcmVlX25vdGlmeWAgYW5kIGB6cmFtX3JlbGVhc2VgIC4gYHpyYW1fb3BlbmAgb2J2aW91c2x5IGhhbmRsZXMgZGV2aWNlIGluaXRpYWxpemF0aW9uLCB3aGlsZSBgenJhbV9yZWxlYXNlYCBkZWFscyB3aXRoIGRlY29uc3RydWN0aW9uIGFuZCByZXNvdXJjZSBjbGVhbnVwLiBgenJhbV9zbG90X2ZyZWVfbm90aWZ5YCBsaWtlbHkgcmVsYXRlcyB0byBtZW1vcnkgbWFuYWdlbWVudCB3aXRoaW4gdGhlIGNvbXByZXNzZWQgYmxvY2sgc3RvcmFnZSDigJMgYSBub3RpZmljYXRpb24gdHJpZ2dlcmVkIHdoZW4gYSBjb21wcmVzc2lvbiBzbG90IGlzIGZyZWVkLiBBbmQgZmluYWxseSwgdGhlIHByZXNlbmNlIG9mIHN5c2ZzIGF0dHJpYnV0ZXMgaW5kaWNhdGVzIHVzZXItc3BhY2UgY29udHJvbCBhbmQgbW9uaXRvcmluZyBob29rcywgd2hpY2ggaXMgZXNzZW50aWFsIGZvciBhbnkgbW9kZXJuIGRyaXZlciB0byBiZSB1c2VmdWwgYW5kIGNvbmZpZ3VyYWJsZS4gSSdsbCBuZWVkIHRvIGRyaWxsIGRvd24gdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQgYXR0cmlidXRlcyBhcmUgZXhwb3NlZCwgYnV0IHRoZSBleGlzdGVuY2UgaXMgYXMgZXhwZWN0ZWQuIFRoaXMgc3VnZ2VzdHMgYSB3ZWxsLWRlc2lnbmVkIGRyaXZlciB0aGF0IGFsbG93cyBmb3IgcnVudGltZSB0d2Vha2luZyBhbmQgcGVyZm9ybWFuY2UgbW9uaXRvcmluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA2NzUsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMzo1MDozOS4wMjY3MTYwNzJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MDg3MTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJlY29tcHJlc3Nfc3RvcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MjQzOT1zdGF0aWMgaW50IHJlY29tcHJlc3Nfc2xvdChzdHJ1Y3QgenJhbSAqenJhbSwgdW5zaWduZWQgbG9uZyBpbmRleCxcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI1NDUtXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MjU0NjpzdGF0aWMgc3NpemVfdCByZWNvbXByZXNzX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yNTQ3LVxcdFxcdFxcdFxcdHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMzo1MDozOS4wNzA4MDgyNTdaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc0NTAxNDE0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gc3lzZnMgQXR0cmlidXRlcyoqXG5cbkFscmlnaHQsIHRoZSBvYmplY3RpdmUgaXMgcHJldHR5IGNsZWFyOiBJIG5lZWQgdG8gZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcyBieSBkaWdnaW5nIGludG8gdGhlIHN5c2ZzIGF0dHJpYnV0ZXMuIEkgaW1tZWRpYXRlbHkgbmVlZCB0byB6ZXJvIGluIG9uIHdoYXQgZGF0YSBpcyBhdmFpbGFibGUuIFRoaXMgaXNuJ3QgYSBcImxldCdzIHN0YXJ0IHBva2luZyBhcm91bmQgcmFuZG9tbHlcIiBzY2VuYXJpbzsgSSBuZWVkIHRvIGJlIHN0cmF0ZWdpYy4gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBsaWtlbHkgY2FuZGlkYXRlcywgdGhlIGtlcm5lbCBtb2R1bGVzIG9yIGRldmljZSBkcml2ZXJzIHRoYXQgYXJlIHJlbGV2YW50IHRvIHRoaXMgaXNzdWUuIExldCBtZSBzdGFydCBieSB0aGlua2luZyBhYm91dCB0aGUgZGV2aWNlIG9yIGZlYXR1cmUgdGhpcyByZWxhdGVzIHRvLiBPbmNlIEkgaGF2ZSB0aGUgc3lzdGVtIGNvbXBvbmVudCBJIGFtIGludGVyZXN0ZWQgaW4sIHN5c2ZzIGdpdmVzIHlvdSBhIHdpbmRvdyBpbnRvIHRoZSBpbm5lciB3b3JraW5ncyBvZiB0aGUga2VybmVsLiBXaGF0J3MgZXhwb3NlZCBhbmQgYXZhaWxhYmxlLiBUaGUgZ29hbCwgYXMgYWx3YXlzLCBpcyB0byBwaW5wb2ludCB0aGUgcmVsZXZhbnQgYXR0cmlidXRlcyB0aGF0IHJldmVhbCB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb24gb3Igc3RhdHVzIGluZm9ybWF0aW9uIEknbSBhZnRlci4gSXQncyB0aW1lIHRvIGdldCBhIGJpdCBtb3JlIGZvY3VzZWQgYW5kIG1ldGhvZGljYWwuIEkgaGF2ZSBhIGZlZWxpbmcgdGhlIGluZm9ybWF0aW9uIGlzIGdvaW5nIHRvIGJlIHdpdGhpbiBzeXNmcyAtIHRoYXQncyB3aGVyZSBJIG5lZWQgdG8gbG9vay5cblxuXG4iLCJJbnB1dFRva2VucyI6MTExNDgsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIzOjUwOjQyLjgxNTgyNDg0NFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU5OTQ1MzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiREVWSUNFX0FUVFJfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTI5ODM9c3RhdGljIGNvbnN0IHN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyB6cmFtX2Rldm9wcyA9IHtcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI5ODktXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjk5MDpzdGF0aWMgREVWSUNFX0FUVFJfUk8oaW9fc3RhdCk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjk5MTpzdGF0aWMgREVWSUNFX0FUVFJfUk8obW1fc3RhdCk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjk5MjpzdGF0aWMgREVWSUNFX0FUVFJfUk8oZGVidWdfc3RhdCk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjk5MzpzdGF0aWMgREVWSUNFX0FUVFJfV08oY29tcGFjdCk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjk5NDpzdGF0aWMgREVWSUNFX0FUVFJfUlcoZGlza3NpemUpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI5OTU6c3RhdGljIERFVklDRV9BVFRSX1JPKGluaXRzdGF0ZSk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjk5NjpzdGF0aWMgREVWSUNFX0FUVFJfV08ocmVzZXQpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI5OTc6c3RhdGljIERFVklDRV9BVFRSX1dPKG1lbV9saW1pdCk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjk5ODpzdGF0aWMgREVWSUNFX0FUVFJfV08obWVtX3VzZWRfbWF4KTtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoyOTk5OnN0YXRpYyBERVZJQ0VfQVRUUl9XTyhpZGxlKTtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMDAwOnN0YXRpYyBERVZJQ0VfQVRUUl9SVyhjb21wX2FsZ29yaXRobSk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzAwMS0jaWZkZWYgQ09ORklHX1pSQU1fV1JJVEVCQUNLXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzAwMjpzdGF0aWMgREVWSUNFX0FUVFJfUk8oYmRfc3RhdCk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzAwMzpzdGF0aWMgREVWSUNFX0FUVFJfUlcoYmFja2luZ19kZXYpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjMwMDQ6c3RhdGljIERFVklDRV9BVFRSX1dPKHdyaXRlYmFjayk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzAwNTpzdGF0aWMgREVWSUNFX0FUVFJfUlcod3JpdGViYWNrX2xpbWl0KTtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMDA2OnN0YXRpYyBERVZJQ0VfQVRUUl9SVyh3cml0ZWJhY2tfbGltaXRfZW5hYmxlKTtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMDA3OnN0YXRpYyBERVZJQ0VfQVRUUl9SVyh3cml0ZWJhY2tfYmF0Y2hfc2l6ZSk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzAwODpzdGF0aWMgREVWSUNFX0FUVFJfUlcoY29tcHJlc3NlZF93cml0ZWJhY2spO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTMwMDktI2VuZGlmXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzAxMC0jaWZkZWYgQ09ORklHX1pSQU1fTVVMVElfQ09NUFxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjMwMTE6c3RhdGljIERFVklDRV9BVFRSX1JXKHJlY29tcF9hbGdvcml0aG0pO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjMwMTI6c3RhdGljIERFVklDRV9BVFRSX1dPKHJlY29tcHJlc3MpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTMwMTMtI2VuZGlmXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzAxNDpzdGF0aWMgREVWSUNFX0FUVFJfV08oYWxnb3JpdGhtX3BhcmFtcyk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzAxNS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjM6NTA6NDIuODYxODI3MjQ5WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY3ODMxNzA3MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFpSQU0ncyBBUEkgRXhwb3N1cmUgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdGhlIHpyYW0gZGV2aWNlIGlzIGV4cG9zZWQsIHNwZWNpZmljYWxseSB3aXRoIGFuIGV5ZSB0b3dhcmRzIGZ1enppbmcgd2l0aCBzb21ldGhpbmcgbGlrZSBTeXprYWxsZXIuIEkgc2VlIHRoZSBzeXNmcyBmdW5jdGlvbnMgYXJlIG5hbWVkIGxpa2UgYGRpc2tzaXplX3N0b3JlYCwgYHJlc2V0X3N0b3JlYCwgYW5kIHNvIG9uLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGxpc3QgYHpyYW1fc3VibWl0X2Jpb2AsIGFsb25nIHdpdGggdGhlc2Ugc3lzZnMgZW50cmllcyB0byBmb2N1cyBvbiwgYnV0IHRoZW4gSSByZW1lbWJlciB0aGF0IGB6cmFtX3N1Ym1pdF9iaW9gIGlzIGFjdHVhbGx5IG1hcmtlZCBhcyAqc3RhdGljKi4gSG1tLCB0aGF0IGNvdWxkIGJlIGEgcHJvYmxlbSwgc2luY2UgdGhlIHByb21wdCBJJ20gd29ya2luZyBmcm9tIHN1Z2dlc3RzIHByZWZlcnJpbmcgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLiBMZXQgbWUgc2VlLi4uaXQncyBwYXJ0IG9mIGB6cmFtX2Rldm9wc2AsIHRoYXQncyBob3cgaXQncyBsaW5rZWQgdXAgdG8gdGhlIGJsb2NrIGRldmljZSBvcGVyYXRpb25zLlxuXG5TeXprYWxsZXIgY2FuIGZ1enogYmxvY2sgZGV2aWNlcywgc28gSSAqa25vdyogaXQgd2lsbCBoaXQgYHpyYW1fc3VibWl0X2Jpb2AgdGhyb3VnaCB0aGUgbm9ybWFsIGBzdWJtaXRfYmlvYCBwYXRoLiBCdXQgdGhlIGZhY3QgdGhhdCBpdCdzICpzdGF0aWMqIGdpdmVzIG1lIHBhdXNlLiBJdCBtaWdodCBiZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciwgb3IgYXQgdGhlIHZlcnkgbGVhc3QgaGF2ZSBubyBjbGVhcmx5IGRlZmluZWQgc3ltYm9sIGFkZHJlc3Mgd2hpY2ggbWFrZXMgZnV6emluZyBoYXJkZXIuIFdhaXQsIGl0IGlzICphc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIqLCBzbyBubyBpdCBjYW4ndCBiZSBpbmxpbmVkISBPa2F5LCBzbyBJIHNob3VsZCBiZSBhYmxlIHRvIGdldCBhIHN5bWJvbCBhZGRyZXNzIGZvciBpdCwgZXZlbiBpZiBpdCdzIHN0YXRpYy5cblxuQnV0LCBiYWNrIHRvIHRoZSBsYXJnZXIgcHJvYmxlbSDigJMgdGhlIHByb21wdCBzcGVjaWZpY2FsbHkgZW1waGFzaXplcyAqbm9uLXN0YXRpYyogZW50cnkgcG9pbnRzLiBPa2F5LCBidXQgYWxsIHRoZSBzeXNmcyBmdW5jdGlvbnMsIGxpa2UgYGRpc2tzaXplX3N0b3JlYCwgc2VlbSB0byBiZSAqc3RhdGljKiBhcyB3ZWxsISBUaGV5J3JlIGFzc2lnbmVkIHRvIGBERVZJQ0VfQVRUUmAgc3RydWN0dXJlcywgc28gSSBuZWVkIHRvIGNoZWNrIGlmIHRob3NlIGFzc2lnbm1lbnRzIGFsc28gaW52b2x2ZSB0aGUgc3RhdGljIGtleXdvcmQuIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIGRlZmluaXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjI1MiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMzo1MDo0OS42NDUwMDA3ODRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NDQ5ODM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRpc2tzaXplX3N0b3JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTI4NTk9c3RhdGljIHZvaWQgenJhbV9yZXNldF9kZXZpY2Uoc3RydWN0IHpyYW0gKnpyYW0pXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yODc1LVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI4NzY6c3RhdGljIHNzaXplX3QgZGlza3NpemVfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yODc3LVxcdFxcdFxcdCAgICAgIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbilcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTMxMzM9c3RhdGljIGludCB6cmFtX3JlbW92ZShzdHJ1Y3QgenJhbSAqenJhbSlcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTMxNjktXFx0LypcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMTcwOlxcdCAqIGRpc2tzaXplX3N0b3JlKCkgbWF5IGJlIGNhbGxlZCBpbiBiZXR3ZWVuIHpyYW1fcmVzZXRfZGV2aWNlKClcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0zMTcxLVxcdCAqIGFuZCBkZWxfZ2VuZGlzaygpLCBzbyBydW4gdGhlIGxhc3QgcmVzZXQgdG8gYXZvaWQgbGVha2luZ1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjMxNzI6XFx0ICogYW55dGhpbmcgYWxsb2NhdGVkIHdpdGggZGlza3NpemVfc3RvcmUoKVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTMxNzMtXFx0ICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIzOjUwOjQ5LjY5NDQ1NjE2OVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDQ4ODgwMDQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUuIEhlcmUncyBteSBzdW1tYXJ5LCB0YWtpbmcgdGhlIHBlcnNwZWN0aXZlIHlvdSByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyB0aGUgWnJhbSBEcml2ZXIqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgc3RydWN0dXJlcyBhcmUgc3RhdGljLCB3aGljaCBtYWtlcyBzZW5zZTsgdGhleSBhY3QgYXMgdGhlIGluaXRpYWwgaG9va3MgaW50byB0aGUgc3lzZnMgaW50ZXJmYWNlLiBUaGF0J3MgdGhlIGZpcnN0IHRoaW5nIEkgZXhwZWN0LiBOb3csIG15IG5leHQgbW92ZSBpcyB0byBkaXZlIGRlZXBlciBpbnRvIGB6cmFtX2Rydi5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCwgaWYgYW55dGhpbmcsIGlzIGR5bmFtaWNhbGx5IGhhbmRsZWQgd2l0aGluIHRoZSBkcml2ZXIgaXRzZWxmLiBNeSBpbnR1aXRpb24gdGVsbHMgbWUgdGhhdCB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGtlcm5lbCBpbnRlcmFjdGlvbiBwcm9iYWJseSBsaWVzIGluIGFueSBmdW5jdGlvbnMgd2l0aGluIHRoYXQgZmlsZSB0aGF0IGFyZW4ndCBkZWZpbmVkIGFzIHN0YXRpYy4gTGV0J3Mgc2VlIGlmIHdlIGNhbiBmaW5kIHNvbWUgY2x1ZXMgdGhlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkeW5hbWlzbSBiZWhpbmQgdGhpcyBhYnN0cmFjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMyNDcsIk91dHB1dFRva2VucyI6NzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMzo1MDo1My4xNDMzMzg5MzVaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1Mjk5OTY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aX11bYS16QS1aMC05X10qIFthLXpBLVpfXVthLXpBLVowLTlfXSpcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0zOS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzo0MDpzdGF0aWMgREVGSU5FX0lEUih6cmFtX2luZGV4X2lkcik7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtNDEtLyogaWRyIGluZGV4IG11c3QgYmUgcHJvdGVjdGVkICovXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6NDI6c3RhdGljIERFRklORV9NVVRFWCh6cmFtX2luZGV4X211dGV4KTtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy00My1cXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTI5ODM9c3RhdGljIGNvbnN0IHN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyB6cmFtX2Rldm9wcyA9IHtcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTI5ODktXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjk5MDpzdGF0aWMgREVWSUNFX0FUVFJfUk8oaW9fc3RhdCk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjk5MTpzdGF0aWMgREVWSUNFX0FUVFJfUk8obW1fc3RhdCk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjk5MjpzdGF0aWMgREVWSUNFX0FUVFJfUk8oZGVidWdfc3RhdCk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjk5MzpzdGF0aWMgREVWSUNFX0FUVFJfV08oY29tcGFjdCk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjk5NDpzdGF0aWMgREVWSUNFX0FUVFJfUlcoZGlza3NpemUpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI5OTU6c3RhdGljIERFVklDRV9BVFRSX1JPKGluaXRzdGF0ZSk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjk5NjpzdGF0aWMgREVWSUNFX0FUVFJfV08ocmVzZXQpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjI5OTc6c3RhdGljIERFVklDRV9BVFRSX1dPKG1lbV9saW1pdCk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6Mjk5ODpzdGF0aWMgREVWSUNFX0FUVFJfV08obWVtX3VzZWRfbWF4KTtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoyOTk5OnN0YXRpYyBERVZJQ0VfQVRUUl9XTyhpZGxlKTtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMDAwOnN0YXRpYyBERVZJQ0VfQVRUUl9SVyhjb21wX2FsZ29yaXRobSk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzAwMS0jaWZkZWYgQ09ORklHX1pSQU1fV1JJVEVCQUNLXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzAwMjpzdGF0aWMgREVWSUNFX0FUVFJfUk8oYmRfc3RhdCk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzAwMzpzdGF0aWMgREVWSUNFX0FUVFJfUlcoYmFja2luZ19kZXYpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjMwMDQ6c3RhdGljIERFVklDRV9BVFRSX1dPKHdyaXRlYmFjayk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzAwNTpzdGF0aWMgREVWSUNFX0FUVFJfUlcod3JpdGViYWNrX2xpbWl0KTtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMDA2OnN0YXRpYyBERVZJQ0VfQVRUUl9SVyh3cml0ZWJhY2tfbGltaXRfZW5hYmxlKTtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMDA3OnN0YXRpYyBERVZJQ0VfQVRUUl9SVyh3cml0ZWJhY2tfYmF0Y2hfc2l6ZSk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzAwODpzdGF0aWMgREVWSUNFX0FUVFJfUlcoY29tcHJlc3NlZF93cml0ZWJhY2spO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTMwMDktI2VuZGlmXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzAxMC0jaWZkZWYgQ09ORklHX1pSQU1fTVVMVElfQ09NUFxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjMwMTE6c3RhdGljIERFVklDRV9BVFRSX1JXKHJlY29tcF9hbGdvcml0aG0pO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjMwMTI6c3RhdGljIERFVklDRV9BVFRSX1dPKHJlY29tcHJlc3MpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTMwMTMtI2VuZGlmXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzAxNDpzdGF0aWMgREVWSUNFX0FUVFJfV08oYWxnb3JpdGhtX3BhcmFtcyk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzAxNS1cXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTMyMDc9c3RhdGljIHNzaXplX3QgaG90X3JlbW92ZV9zdG9yZShjb25zdCBzdHJ1Y3QgY2xhc3MgKmNsYXNzLFxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzIzNS19XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzIzNjpzdGF0aWMgQ0xBU1NfQVRUUl9XTyhob3RfcmVtb3ZlKTtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0zMjM3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMzo1MDo1My4xODg2NDMzNDFaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE1NzM1MzMxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIGNvbnNpZGVyaW5nIG15IGV4cGVydGlzZTpcblxuKipNeSBBcHByb2FjaCB0byBBbmFseXppbmcgWnJhbSdzIEVudHJ5IFBvaW50cyoqXG5cbkFscmlnaHQsIEkgY2FuIGRlZmluaXRlbHkgbWFrZSBzb21lIGhlYWR3YXkgaGVyZS4gSW5zdGVhZCBvZiBnZXR0aW5nIGJvZ2dlZCBkb3duIGluIHRoZSBtaW51dGlhZSwgSSdtIGdvaW5nIHRvIGxldmVyYWdlIG15IHVuZGVyc3RhbmRpbmcgb2Yga2VybmVsIHN0cnVjdHVyZXMgYW5kIHBpbnBvaW50IHRoZSBrZXkgZW50cnkgcG9pbnRzLiBUaGlua2luZyBzdHJhdGVnaWNhbGx5LCBJJ2xsIHVzZSB0aG9zZSBmdW5jdGlvbnMg4oCTIGB6cmFtX3N1Ym1pdF9iaW9gLCBgZGlza3NpemVfc3RvcmVgLCBgcmVzZXRfc3RvcmVgLCBgcmVjb21wcmVzc19zdG9yZWAsIGB3cml0ZWJhY2tfc3RvcmVgLCBgaWRsZV9zdG9yZWAsIGFuZCBgY29tcGFjdF9zdG9yZWAg4oCTIGFzIG15IGZvY3VzIHN5bWJvbHMuIFRoZXNlIHNob3VsZCByZXByZXNlbnQgdGhlIHByaW1hcnkgaW50ZXJmYWNlcyBpbnRvIHRoZSB6cmFtIHN1YnN5c3RlbS5cblxuTm93LCBsZXQgbWUganVzdCBjb25maXJtIHRoYXQgYHpyYW1fc3VibWl0X2Jpb2AgaXMgYWN0dWFsbHkgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBjb250ZXh0LiBZZXAsIHRoZXJlIGl0IGlzISBHb29kLiBUaGF0J3MgYSBzb2xpZCBzdGFydGluZyBwb2ludC4gTmV4dCwgSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIGlmIGB6cmFtX2luaXRgIGlzIHByZXNlbnQgdG9vLiBXZSBuZWVkIHRvIGJlIHN1cmUgd2hlcmUgaW5pdGlhbGl6YXRpb24gaGFwcGVucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ1ODQsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMzo1MDo1Ny4zNDU5OTk4ODVaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1OTY3ODE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTMzMTA9c3RhdGljIHZvaWQgX19leGl0IHpyYW1fZXhpdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzMxNC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMzE1Om1vZHVsZV9pbml0KHpyYW1faW5pdCk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzMxNi1tb2R1bGVfZXhpdCh6cmFtX2V4aXQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMzo1MDo1Ny4zOTE5NzI3NVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2OTE0NTI2MDgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFpSQU0gUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGUgZXNzZW50aWFsIGNvbmZpZyBoZXJlIGlzIGBaUkFNYCwgdGhhdCdzIHRoZSBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIGVsc2UgaW4gdGhlIGRlcGVuZGVuY2llcywgYnV0IGl0IGxvb2tzIGxpa2UgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBmb2N1c2VkIGFyb3VuZCB0aGF0LiBMb29raW5nIGRlZXBlciwgaXQgbW9kaWZpZXMgdGhlIGBaUkFNX0VOVFJZX0xPQ0tfQklUYCBsb2dpYywgd2hpY2ggaW1tZWRpYXRlbHkgZmxhZ3MgdGhpcyBhcyBhIHBvdGVudGlhbCBidWcgZml4IGZvciB0aG9zZSB0cmlja3kgYmlnLWVuZGlhbiA2NC1iaXQgYXJjaGl0ZWN0dXJlcyAtIGdvb2QgdG8ga25vdy5cblxuR2l2ZW4gdGhhdCwgSSdtIGRlZmluaXRlbHkgZ29pbmcgdG8gZmxhZyB0aGlzIGFzIGBXb3J0aEZ1enppbmc9dHJ1ZWAuIE15IG1haW4gZm9jdXMgc3ltYm9scyBhcmUgZ29pbmcgdG8gYmUgYHpyYW1fc3VibWl0X2Jpb2AsIGBkaXNrc2l6ZV9zdG9yZWAsIGByZXNldF9zdG9yZWAsIGByZWNvbXByZXNzX3N0b3JlYCwgYHdyaXRlYmFja19zdG9yZWAsIGBpZGxlX3N0b3JlYCwgYW5kIGBjb21wYWN0X3N0b3JlYC4gSG93ZXZlciwgd2FpdCBhIG1pbnV0ZS4uLiBgd3JpdGViYWNrX3N0b3JlYCByZWxpZXMgb24gYENPTkZJR19aUkFNX1dSSVRFQkFDS2AuIEFuZCwgSSBhbHNvIHNlZSB0aGF0IGByZWNvbXByZXNzX3N0b3JlYCBpcyBndWFyZGVkIGJ5IGBDT05GSUdfWlJBTV9NVUxUSV9DT01QYC4gUmlnaHQsIEkgY2FuJ3Qgb3Zlcmxvb2sgdGhvc2UgZGVwZW5kZW5jaWVzLlxuXG5UaGVyZWZvcmUsIEkgbmVlZCB0byBhZGQgYm90aCBgWlJBTV9XUklURUJBQ0tgIGFuZCBgWlJBTV9NVUxUSV9DT01QYCB0byBgRW5hYmxlQ29uZmlnc2AsIHJpZ2h0IGFsb25nc2lkZSBgWlJBTWAuIExldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IHRob3NlIGFyZSBhY3R1YWxseSBkZWZpbmVkIGluIHRoZSBLY29uZmlnLiBZZXAsIHRoZXkncmUgdGhlcmUuIEp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIGFsc28gcXVpY2tseSBjaGVjayBgWlJBTV9UUkFDS19FTlRSWV9BQ1RJTUVgIGFuZCBgWlJBTV9NRU1PUllfVFJBQ0tJTkdgLCBidXQgSSBkb24ndCB0aGluayB0aGV5J3JlIHJlbGV2YW50IHRvIHRoaXMgc3BlY2lmaWMgcGF0Y2guXG5cblNvLCB0aGUgZmluYWwgbGlzdCBmb3IgbXkgY29uZmlndXJhdGlvbiB3aWxsIGJlIGBaUkFNYCwgYFpSQU1fV1JJVEVCQUNLYCwgYW5kIGBaUkFNX01VTFRJX0NPTVBgLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgc29saWQgYmFzZSB0byBzdGFydCB0ZXN0aW5nIHRoaXMgcGF0Y2ggdGhvcm91Z2hseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUwNDEsIk91dHB1dFRva2VucyI6MTc5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIzOjUxOjA0LjMwNjUwMTk3WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTY5NTgzMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlpSQU1cIixcbiAgICBcIlpSQU1fV1JJVEVCQUNLXCIsXG4gICAgXCJaUkFNX01VTFRJX0NPTVBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ6cmFtX3N1Ym1pdF9iaW9cIixcbiAgICBcImRpc2tzaXplX3N0b3JlXCIsXG4gICAgXCJyZXNldF9zdG9yZVwiLFxuICAgIFwicmVjb21wcmVzc19zdG9yZVwiLFxuICAgIFwid3JpdGViYWNrX3N0b3JlXCIsXG4gICAgXCJpZGxlX3N0b3JlXCIsXG4gICAgXCJjb21wYWN0X3N0b3JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBsb2NraW5nIGJ1ZyBpbiB6cmFtIG9uIDY0LWJpdCBiaWctZW5kaWFuIHN5c3RlbXMgYnkgY29ycmVjdGluZyB0aGUgYml0IHBvc2l0aW9uIHVzZWQgZm9yIFpSQU1fRU5UUllfTE9DSy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIGV4ZWN1dGlvbiBmbG93IG9uIGJpZy1lbmRpYW4gYXJjaGl0ZWN0dXJlcyBsaWtlIHMzOTB4LCB3aGljaCBhcmUgc3VwcG9ydGVkIGJ5IHN5emthbGxlci4gRnV6emluZyB6cmFtIGJsb2NrIGRldmljZSBvcGVyYXRpb25zIGFuZCBzeXNmcyBpbnRlcmZhY2VzIGNhbiBoZWxwIHZlcmlmeSB0aGUgZml4LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlpSQU1cIixcbiAgICBcIlpSQU1fV1JJVEVCQUNLXCIsXG4gICAgXCJaUkFNX01VTFRJX0NPTVBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ6cmFtX3N1Ym1pdF9iaW9cIixcbiAgICBcImRpc2tzaXplX3N0b3JlXCIsXG4gICAgXCJyZXNldF9zdG9yZVwiLFxuICAgIFwicmVjb21wcmVzc19zdG9yZVwiLFxuICAgIFwid3JpdGViYWNrX3N0b3JlXCIsXG4gICAgXCJpZGxlX3N0b3JlXCIsXG4gICAgXCJjb21wYWN0X3N0b3JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBsb2NraW5nIGJ1ZyBpbiB6cmFtIG9uIDY0LWJpdCBiaWctZW5kaWFuIHN5c3RlbXMgYnkgY29ycmVjdGluZyB0aGUgYml0IHBvc2l0aW9uIHVzZWQgZm9yIFpSQU1fRU5UUllfTE9DSy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIGV4ZWN1dGlvbiBmbG93IG9uIGJpZy1lbmRpYW4gYXJjaGl0ZWN0dXJlcyBsaWtlIHMzOTB4LCB3aGljaCBhcmUgc3VwcG9ydGVkIGJ5IHN5emthbGxlci4gRnV6emluZyB6cmFtIGJsb2NrIGRldmljZSBvcGVyYXRpb25zIGFuZCBzeXNmcyBpbnRlcmZhY2VzIGNhbiBoZWxwIHZlcmlmeSB0aGUgZml4LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMzo1MTowNC40MDM0NjY5MzFaIiwiU2VxIjoyNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwMDMyMDUwMjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQyMzo1MTowNC40MDQxMDUwNTFaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6OTAwMjU2MjI4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBiaXQtbG9jayBwb3NpdGlvbiBpc3N1ZSBvbiA2NC1iaXQgYmlnLWVuZGlhbiBhcmNoaXRlY3R1cmVzIGluIHRoZSB6cmFtIGRyaXZlci4gSXQgZW5zdXJlcyB0aGF0IHRoZSBsb2NrIGJpdCBsYW5kcyBpbiB0aGUgY29ycmVjdCBwb3NpdGlvbiB3aXRoaW4gdGhlIGBfX2xvY2tgIHdvcmQsIHdoaWNoIGlzIGFsaWFzZWQgYnkgdHdvIGB1MzJgcy4gVGhpcyBpcyBhIGxvY2tpbmcgYW5kIGJpdCBtYW5pcHVsYXRpb24gZml4LCBub3QgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSwgaW5mby1sZWFrcywgb3IgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgZmllbGRzLiBTdGFuZGFyZCB0b29scyBsaWtlIEtDU0FOIG9yIExPQ0tERVAgYXJlIGJldHRlciBzdWl0ZWQgZm9yIGxvY2tpbmcgYW5kIGNvbmN1cnJlbmN5IGlzc3Vlcywgd2hpbGUgS01TQU4gaXMgc3BlY2lmaWNhbGx5IGZvciBkZXRlY3RpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIHdoaWNoIGlzIG5vdCByZWxldmFudCBoZXJlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDJhY2ViNGFlYmM1N2UzM2NiOTk2MjQ4YzkxYjZjMGI0Y2RkMWE1OTVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAxMCAyMzo1MDowMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jIGIvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmNcbmluZGV4IGQwOWZkY2E0OWNiZGEuLmE5YjNiYjFkM2JlZjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuY1xuKysrIGIvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmNcbkBAIC03NCw3ICs3NCw3IEBAIHN0YXRpYyBfX211c3RfY2hlY2sgYm9vbCBzbG90X3RyeWxvY2soc3RydWN0IHpyYW0gKnpyYW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpXG4ge1xuIFx0dW5zaWduZWQgbG9uZyAqbG9jayA9IFx1MDAyNnpyYW0tXHUwMDNldGFibGVbaW5kZXhdLl9fbG9jaztcbiBcbi1cdGlmICghdGVzdF9hbmRfc2V0X2JpdF9sb2NrKFpSQU1fRU5UUllfTE9DSywgbG9jaykpIHtcbitcdGlmICghdGVzdF9hbmRfc2V0X2JpdF9sb2NrKFpSQU1fRU5UUllfTE9DS19CSVQsIGxvY2spKSB7XG4gXHRcdG11dGV4X2FjcXVpcmUoXHUwMDI2enJhbS1cdTAwM2V0YWJsZV9sb2NrX21hcCwgMCwgMSwgX1JFVF9JUF8pO1xuIFx0XHRsb2NrX2FjcXVpcmVkKFx1MDAyNnpyYW0tXHUwMDNldGFibGVfbG9ja19tYXAsIF9SRVRfSVBfKTtcbiBcdFx0cmV0dXJuIHRydWU7XG5AQCAtODgsNyArODgsNyBAQCBzdGF0aWMgdm9pZCBzbG90X2xvY2soc3RydWN0IHpyYW0gKnpyYW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgpXG4gXHR1bnNpZ25lZCBsb25nICpsb2NrID0gXHUwMDI2enJhbS1cdTAwM2V0YWJsZVtpbmRleF0uX19sb2NrO1xuIFxuIFx0bXV0ZXhfYWNxdWlyZShcdTAwMjZ6cmFtLVx1MDAzZXRhYmxlX2xvY2tfbWFwLCAwLCAwLCBfUkVUX0lQXyk7XG4tXHR3YWl0X29uX2JpdF9sb2NrKGxvY2ssIFpSQU1fRU5UUllfTE9DSywgVEFTS19VTklOVEVSUlVQVElCTEUpO1xuK1x0d2FpdF9vbl9iaXRfbG9jayhsb2NrLCBaUkFNX0VOVFJZX0xPQ0tfQklULCBUQVNLX1VOSU5URVJSVVBUSUJMRSk7XG4gXHRsb2NrX2FjcXVpcmVkKFx1MDAyNnpyYW0tXHUwMDNldGFibGVfbG9ja19tYXAsIF9SRVRfSVBfKTtcbiB9XG4gXG5AQCAtOTcsNyArOTcsNyBAQCBzdGF0aWMgdm9pZCBzbG90X3VubG9jayhzdHJ1Y3QgenJhbSAqenJhbSwgdW5zaWduZWQgbG9uZyBpbmRleClcbiBcdHVuc2lnbmVkIGxvbmcgKmxvY2sgPSBcdTAwMjZ6cmFtLVx1MDAzZXRhYmxlW2luZGV4XS5fX2xvY2s7XG4gXG4gXHRtdXRleF9yZWxlYXNlKFx1MDAyNnpyYW0tXHUwMDNldGFibGVfbG9ja19tYXAsIF9SRVRfSVBfKTtcbi1cdGNsZWFyX2FuZF93YWtlX3VwX2JpdChaUkFNX0VOVFJZX0xPQ0ssIGxvY2spO1xuK1x0Y2xlYXJfYW5kX3dha2VfdXBfYml0KFpSQU1fRU5UUllfTE9DS19CSVQsIGxvY2spO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIGJvb2wgaW5pdF9kb25lKHN0cnVjdCB6cmFtICp6cmFtKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5oIGIvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmhcbmluZGV4IDRmZGRjNTgyZjNiODIuLjdhNTVkNzUxNDE3ZTIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuaFxuKysrIGIvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmhcbkBAIC0xNSw2ICsxNSw3IEBAXG4gI2lmbmRlZiBfWlJBTV9EUlZfSF9cbiAjZGVmaW5lIF9aUkFNX0RSVl9IX1xuIFxuKyNpbmNsdWRlIFx1MDAzY2FzbS9ieXRlb3JkZXIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3J3c2VtLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC96c21hbGxvYy5oXHUwMDNlXG4gXG5AQCAtNTcsNiArNTgsMTkgQEAgZW51bSB6cmFtX3BhZ2VmbGFncyB7XG4gXHRfX05SX1pSQU1fUEFHRUZMQUdTLFxuIH07XG4gXG4rLypcbisgKiBUaGUgc2xvdCBsb2NrIGlzIGEgYml0LXdhaXQgbG9jayBvbiB0aGUgd2hvbGUgX19sb2NrIHdvcmQsIHdoaWxlXG4rICogZmxhZ3MgYW5kIGFjX3RpbWUgYWxpYXMgdGhhdCB3b3JkIGFzIHR3byB1MzJzLiAgVGhlIGxvY2sgYml0IG11c3RcbisgKiBsYW5kIGluIHRoZSBzbG90IHRoYXQgWlJBTV9FTlRSWV9MT0NLIHJlc2VydmVzIGluIGF0dHIuZmxhZ3M7IG9uXG4rICogNjQtYml0IGJpZy1lbmRpYW4gdGhlIGZsYWdzIHdvcmQgbWFwcyB0byB0aGUgdXBwZXIgaGFsZiBvZiBfX2xvY2ssXG4rICogc28gdGhlIGJpdCBwb3NpdGlvbiBoYXMgdG8gYmUgc2hpZnRlZCB1cC5cbisgKi9cbisjaWYgZGVmaW5lZChDT05GSUdfNjRCSVQpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKF9fQklHX0VORElBTilcbisjZGVmaW5lIFpSQU1fRU5UUllfTE9DS19CSVQgIChaUkFNX0VOVFJZX0xPQ0sgKyAzMilcbisjZWxzZVxuKyNkZWZpbmUgWlJBTV9FTlRSWV9MT0NLX0JJVCAgWlJBTV9FTlRSWV9MT0NLXG4rI2VuZGlmXG4rXG4gLypcbiAgKiBBbGxvY2F0ZWQgZm9yIGVhY2ggZGlzayBwYWdlLiAgV2UgdXNlIGJpdC1sb2NrIChaUkFNX0VOVFJZX0xPQ0sgYml0XG4gICogb2YgZmxhZ3MpIHRvIHNhdmUgbWVtb3J5LiAgVGhlcmUgY2FuIGJlIHBsZW50eSBvZiBlbnRyaWVzIGFuZCBzdGFuZGFyZFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMjM6NTE6MDQuNDA0MTA3MzcxWiIsIlNlcSI6MjksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkwMDI1MzU2OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBaUkFNIFBhdGNoIGZvciBLTVNBTiBJbXBsaWNhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCdzIHR3ZWFraW5nIGB6cmFtX2Rydi5jYCBhbmQgYHpyYW1fZHJ2LmhgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGFwcGVhcnMgdG8gYmUgYSBiaXQtbG9jayBjb3JyZWN0aW9uIHNwZWNpZmljYWxseSB0YXJnZXRlZCBhdCA2NC1iaXQgYmlnLWVuZGlhbiBhcmNoaXRlY3R1cmVzLiBUaGV5J3JlIGNoYW5naW5nIGBaUkFNX0VOVFJZX0xPQ0tgIHRvIGBaUkFNX0VOVFJZX0xPQ0tfQklUYCBpbiB0aGUgbG9jayBmdW5jdGlvbnMgKGB0ZXN0X2FuZF9zZXRfYml0X2xvY2tgLCBgd2FpdF9vbl9iaXRfbG9ja2AsIGBjbGVhcl9hbmRfd2FrZV91cF9iaXRgKS4gSXQgc2VlbXMgbGlrZSB0aGUgaXNzdWUgaXMgcmVsYXRlZCB0byBob3cgdGhlIGxvY2sgYml0IG1hcHMgd2hlbiBgX19sb2NrYCBpcyBhbiBgdW5zaWduZWQgbG9uZ2AsIGJ1dCB0aGVuIGBmbGFnc2AgYW5kIGBhY190aW1lYCBhbGlhcyB0aGF0IHNhbWUgd29yZCBhcyB0d28gYHUzMmBzLiBUaGUgbmV3IG1hY3JvIGBaUkFNX0VOVFJZX0xPQ0tfQklUYCB0aGVuIGFjY291bnRzIGZvciBhIGJpdCBwb3NpdGlvbiBzaGlmdCBvbiA2NC1iaXQgYmlnLWVuZGlhbiBzeXN0ZW1zLlxuXG5Fc3NlbnRpYWxseSwgdGhpcyBpcyBhIGxvY2tpbmcgYnVnIGZpeCwgcHVyZSBhbmQgc2ltcGxlLiBJdCBpc24ndCB0b3VjaGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSBhdCBhbGwsIHdoaWNoIGlzIHdoYXQgS01TQU4gKEtlcm5lbCBNZW1vcnkgU2FuaXRpemVyKSBpcyBkZXNpZ25lZCB0byBkZXRlY3QuIEtNU0FOIGlzIGdyZWF0IGZvciBmaW5kaW5nIHRob3NlIHR5cGVzIG9mIGJ1Z3MsIGJ1dCB0aGlzIHBhdGNoIGRvZXNuJ3QgdHJpZ2dlciBhbnkgY29uY2VybnMgdGhlcmUuXG5cbktBU0FOLCBMT0NLREVQLCBvciBLQ1NBTiBtaWdodCBiZSByZWxldmFudCBmb3IgZGV0ZWN0aW5nIHJhY2UgY29uZGl0aW9ucyBvciBvdGhlciBsb2NraW5nIGlzc3VlcywgYnV0IHRoYXQncyBub3QgdGhlIHByaW1hcnkgZm9jdXMgb2YgS01TQU4uIE15IGdvYWwgaGVyZSBpcyB0byBkZXRlcm1pbmUgaWYgS01TQU4gaXMgKm5lZWRlZCogZm9yIHRoaXMuXG5cbkxldCBtZSB0YWtlIGEgcXVpY2sgbG9vayBhdCBgenJhbV9kcnYuaGAgdG8gY29uZmlybSB0aGUgY2hhbmdlOlxuXG5gYGBjXG4vKlxuICogVGhlIHNsb3QgbG9jayBpcyBhIGJpdC13YWl0IGxvY2sgb24gdGhlIHdob2xlIF9fbG9jayB3b3JkLCB3aGlsZVxuICogZmxhZ3MgYW5kIGFjX3RpbWUgYWxpYXMgdGhhdCB3b3JkIGFzIHR3byB1MzJzLiAgVGhlIGxvY2sgYml0IG11c3RcbiAqIGxhbmQgaW4gdGhlIHNsb3QgdGhhdCBaUkFNX0VOVFJZX0xPQ0sgcmVzZXJ2ZXMgaW4gYXR0ci5mbGFnczsgb25cbiAqIDY0LWJpdCBiaWctZW5kaWFuIHRoZSBmbGFncyB3b3JkIG1hcHMgdG8gdGhlIHVwcGVyIGhhbGYgb2YgX19sb2NrLFxuICogc28gdGhlIGJpdCBwb3NpdGlvbiBoYXMgdG8gYmUgc2hpZnRlZCB1cC5cbiAqL1xuI2lmIGRlZmluZWQoQ09ORklHXzY0QklUKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChfX0JJR19FTkRJQU4pXG4jZGVmaW5lIFpSQU1fRU5UUllfTE9DS19CSVQgIChaUkFNX0VOVFJZX0xPQ0sgKyAzMilcbiNlbHNlXG4jZGVmaW5lIFpSQU1fRU5UUllfTE9DS19CSVQgIFpSQU1fRU5UUllfTE9DS1xuI2VuZGlmXG5gYGBcblxuWWVhaCwgdGhhdCBqdXN0IGNvbmZpcm1zIHRoZSBiaXQgbWFuaXB1bGF0aW9uIGZvciB0aGUgbG9jayBvbiBiaWctZW5kaWFuIGFyY2hpdGVjdHVyZXMuIEl0J3MgYSBjbGVhbiBiaXQtdHdpZGRsaW5nIGZpeC4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLiBUaGVyZWZvcmUsIGBOZWVkc0tNU0FOYCBpcyBkZWZpbml0ZWx5IGZhbHNlIGZvciB0aGlzIHBhdGNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzcwLCJPdXRwdXRUb2tlbnMiOjE0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDIzOjUxOjEzLjQwNjY0Njc0OFoiLCJTZXEiOjMwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBiaXQtbG9jayBwb3NpdGlvbiBpc3N1ZSBvbiA2NC1iaXQgYmlnLWVuZGlhbiBhcmNoaXRlY3R1cmVzIGluIHRoZSB6cmFtIGRyaXZlci4gSXQgZW5zdXJlcyB0aGF0IHRoZSBsb2NrIGJpdCBsYW5kcyBpbiB0aGUgY29ycmVjdCBwb3NpdGlvbiB3aXRoaW4gdGhlIGBfX2xvY2tgIHdvcmQsIHdoaWNoIGlzIGFsaWFzZWQgYnkgdHdvIGB1MzJgcy4gVGhpcyBpcyBhIGxvY2tpbmcgYW5kIGJpdCBtYW5pcHVsYXRpb24gZml4LCBub3QgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSwgaW5mby1sZWFrcywgb3IgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgZmllbGRzLiBTdGFuZGFyZCB0b29scyBsaWtlIEtDU0FOIG9yIExPQ0tERVAgYXJlIGJldHRlciBzdWl0ZWQgZm9yIGxvY2tpbmcgYW5kIGNvbmN1cnJlbmN5IGlzc3Vlcywgd2hpbGUgS01TQU4gaXMgc3BlY2lmaWNhbGx5IGZvciBkZXRlY3RpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIHdoaWNoIGlzIG5vdCByZWxldmFudCBoZXJlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYml0LWxvY2sgcG9zaXRpb24gaXNzdWUgb24gNjQtYml0IGJpZy1lbmRpYW4gYXJjaGl0ZWN0dXJlcyBpbiB0aGUgenJhbSBkcml2ZXIuIEl0IGVuc3VyZXMgdGhhdCB0aGUgbG9jayBiaXQgbGFuZHMgaW4gdGhlIGNvcnJlY3QgcG9zaXRpb24gd2l0aGluIHRoZSBgX19sb2NrYCB3b3JkLCB3aGljaCBpcyBhbGlhc2VkIGJ5IHR3byBgdTMyYHMuIFRoaXMgaXMgYSBsb2NraW5nIGFuZCBiaXQgbWFuaXB1bGF0aW9uIGZpeCwgbm90IHJlbGF0ZWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnksIGluZm8tbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlIGZpZWxkcy4gU3RhbmRhcmQgdG9vbHMgbGlrZSBLQ1NBTiBvciBMT0NLREVQIGFyZSBiZXR0ZXIgc3VpdGVkIGZvciBsb2NraW5nIGFuZCBjb25jdXJyZW5jeSBpc3N1ZXMsIHdoaWxlIEtNU0FOIGlzIHNwZWNpZmljYWxseSBmb3IgZGV0ZWN0aW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCB3aGljaCBpcyBub3QgcmVsZXZhbnQgaGVyZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowcgsx2[1] Phase: Succeeded StartedAt: 2026-08-10 23:51:39 +0000 UTC FinishedAt: 2026-08-10 23:51:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcgsx2[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-10 23:51:39 +0000 UTC FinishedAt: 2026-08-10 23:51:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcgsx2[2] Phase: Succeeded StartedAt: 2026-08-10 23:51:39 +0000 UTC FinishedAt: 2026-08-11 00:43:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcgsx2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["zram_submit_bio","disksize_store","reset_store","recompress_store","writeback_store","idle_store","compact_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"fec7849c-1ea8-448b-8a1f-a1f8c1603a16","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-10 23:51:39 +0000 UTC FinishedAt: 2026-08-11 00:43:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["zram_submit_bio","disksize_store","reset_store","recompress_store","writeback_store","idle_store","compact_store"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"fec7849c-1ea8-448b-8a1f-a1f8c1603a16","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowcgsx2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["zram_submit_bio","disksize_store","reset_store","recompress_store","writeback_store","idle_store","compact_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"fec7849c-1ea8-448b-8a1f-a1f8c1603a16","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-10 23:51:39 +0000 UTC FinishedAt: 2026-08-10 23:52:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcgsx2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["zram_submit_bio","disksize_store","reset_store","recompress_store","writeback_store","idle_store","compact_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"fec7849c-1ea8-448b-8a1f-a1f8c1603a16","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-10 23:51:39 +0000 UTC FinishedAt: 2026-08-10 23:51:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowcgsx2/series-workflowcgsx2-convert-artifact-1683629523/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcgsx2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["zram_submit_bio","disksize_store","reset_store","recompress_store","writeback_store","idle_store","compact_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"fec7849c-1ea8-448b-8a1f-a1f8c1603a16","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-10 23:52:03 +0000 UTC FinishedAt: 2026-08-11 00:12:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcgsx2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["zram_submit_bio","disksize_store","reset_store","recompress_store","writeback_store","idle_store","compact_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"fec7849c-1ea8-448b-8a1f-a1f8c1603a16","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-10 23:52:03 +0000 UTC FinishedAt: 2026-08-11 00:12:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*482466db-25b5-40fa-a426-2235521fad13,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-workflowcgsx2/series-workflowcgsx2-convert-artifact-1683629523/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": "9ec5fff0-e5fd-486d-938b-f8d1104db53b", "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-workflowcgsx2/series-workflowcgsx2-build-action-877226241/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcgsx2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["zram_submit_bio","disksize_store","reset_store","recompress_store","writeback_store","idle_store","compact_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"fec7849c-1ea8-448b-8a1f-a1f8c1603a16","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-10 23:52:03 +0000 UTC FinishedAt: 2026-08-11 00:12:05 +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:*482466db-25b5-40fa-a426-2235521fad13,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-workflowcgsx2/series-workflowcgsx2-convert-artifact-1683629523/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": "9ec5fff0-e5fd-486d-938b-f8d1104db53b", "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-workflowcgsx2/series-workflowcgsx2-build-action-877226241/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcgsx2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["zram_submit_bio","disksize_store","reset_store","recompress_store","writeback_store","idle_store","compact_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"fec7849c-1ea8-448b-8a1f-a1f8c1603a16","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-11 00:12:55 +0000 UTC FinishedAt: 2026-08-11 00:12:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcgsx2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["zram_submit_bio","disksize_store","reset_store","recompress_store","writeback_store","idle_store","compact_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"fec7849c-1ea8-448b-8a1f-a1f8c1603a16","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-11 00:12:55 +0000 UTC FinishedAt: 2026-08-11 00:12:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcgsx2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["zram_submit_bio","disksize_store","reset_store","recompress_store","writeback_store","idle_store","compact_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"fec7849c-1ea8-448b-8a1f-a1f8c1603a16","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-11 00:12:55 +0000 UTC FinishedAt: 2026-08-11 00:13:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcgsx2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["zram_submit_bio","disksize_store","reset_store","recompress_store","writeback_store","idle_store","compact_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"fec7849c-1ea8-448b-8a1f-a1f8c1603a16","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-11 00:12:55 +0000 UTC FinishedAt: 2026-08-11 00:13:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"fec7849c-1ea8-448b-8a1f-a1f8c1603a16","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowcgsx2/series-workflowcgsx2-convert-artifact-2601818314/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcgsx2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["zram_submit_bio","disksize_store","reset_store","recompress_store","writeback_store","idle_store","compact_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"fec7849c-1ea8-448b-8a1f-a1f8c1603a16","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-11 00:13:05 +0000 UTC FinishedAt: 2026-08-11 00:15:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcgsx2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["zram_submit_bio","disksize_store","reset_store","recompress_store","writeback_store","idle_store","compact_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"fec7849c-1ea8-448b-8a1f-a1f8c1603a16","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-11 00:13:05 +0000 UTC FinishedAt: 2026-08-11 00:15:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9ec5fff0-e5fd-486d-938b-f8d1104db53b,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-workflowcgsx2/series-workflowcgsx2-build-action-877226241/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-workflowcgsx2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["zram_submit_bio","disksize_store","reset_store","recompress_store","writeback_store","idle_store","compact_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"fec7849c-1ea8-448b-8a1f-a1f8c1603a16","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-11 00:15:26 +0000 UTC FinishedAt: 2026-08-11 00:15:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcgsx2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["zram_submit_bio","disksize_store","reset_store","recompress_store","writeback_store","idle_store","compact_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"fec7849c-1ea8-448b-8a1f-a1f8c1603a16","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-11 00:15:26 +0000 UTC FinishedAt: 2026-08-11 00:15:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcgsx2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["zram_submit_bio","disksize_store","reset_store","recompress_store","writeback_store","idle_store","compact_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"fec7849c-1ea8-448b-8a1f-a1f8c1603a16","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-11 00:15:26 +0000 UTC FinishedAt: 2026-08-11 00:32:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcgsx2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["zram_submit_bio","disksize_store","reset_store","recompress_store","writeback_store","idle_store","compact_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"fec7849c-1ea8-448b-8a1f-a1f8c1603a16","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-11 00:15:26 +0000 UTC FinishedAt: 2026-08-11 00:32:09 +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:*482466db-25b5-40fa-a426-2235521fad13,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-workflowcgsx2/series-workflowcgsx2-convert-artifact-2601818314/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": "933f9430-6dff-4822-93dc-dfc2e2224bfe", "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-workflowcgsx2/series-workflowcgsx2-build-action-3429694702/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcgsx2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["zram_submit_bio","disksize_store","reset_store","recompress_store","writeback_store","idle_store","compact_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"fec7849c-1ea8-448b-8a1f-a1f8c1603a16","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-11 00:15:26 +0000 UTC FinishedAt: 2026-08-11 00:31:58 +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:*482466db-25b5-40fa-a426-2235521fad13,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-workflowcgsx2/series-workflowcgsx2-convert-artifact-2601818314/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": "933f9430-6dff-4822-93dc-dfc2e2224bfe", "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-workflowcgsx2/series-workflowcgsx2-build-action-3429694702/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcgsx2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["zram_submit_bio","disksize_store","reset_store","recompress_store","writeback_store","idle_store","compact_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"fec7849c-1ea8-448b-8a1f-a1f8c1603a16","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-11 00:32:09 +0000 UTC FinishedAt: 2026-08-11 00:32:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcgsx2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["zram_submit_bio","disksize_store","reset_store","recompress_store","writeback_store","idle_store","compact_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"fec7849c-1ea8-448b-8a1f-a1f8c1603a16","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-11 00:32:09 +0000 UTC FinishedAt: 2026-08-11 00:32:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcgsx2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["zram_submit_bio","disksize_store","reset_store","recompress_store","writeback_store","idle_store","compact_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"fec7849c-1ea8-448b-8a1f-a1f8c1603a16","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-11 00:32:09 +0000 UTC FinishedAt: 2026-08-11 00:34:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcgsx2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["zram_submit_bio","disksize_store","reset_store","recompress_store","writeback_store","idle_store","compact_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"fec7849c-1ea8-448b-8a1f-a1f8c1603a16","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-11 00:32:09 +0000 UTC FinishedAt: 2026-08-11 00:34:11 +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:*933f9430-6dff-4822-93dc-dfc2e2224bfe,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-workflowcgsx2/series-workflowcgsx2-build-action-3429694702/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-workflowcgsx2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["zram_submit_bio","disksize_store","reset_store","recompress_store","writeback_store","idle_store","compact_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"fec7849c-1ea8-448b-8a1f-a1f8c1603a16","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-11 00:34:48 +0000 UTC FinishedAt: 2026-08-11 00:43:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcgsx2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["zram_submit_bio","disksize_store","reset_store","recompress_store","writeback_store","idle_store","compact_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"fec7849c-1ea8-448b-8a1f-a1f8c1603a16","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-11 00:34:48 +0000 UTC FinishedAt: 2026-08-11 00:43:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["zram_submit_bio","disksize_store","reset_store","recompress_store","writeback_store","idle_store","compact_store"],"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:*9ec5fff0-e5fd-486d-938b-f8d1104db53b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*933f9430-6dff-4822-93dc-dfc2e2224bfe,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-workflowcgsx2/series-workflowcgsx2-build-action-877226241/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-workflowcgsx2/series-workflowcgsx2-build-action-3429694702/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowcgsx2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["zram_submit_bio","disksize_store","reset_store","recompress_store","writeback_store","idle_store","compact_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"fec7849c-1ea8-448b-8a1f-a1f8c1603a16","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-11 00:34:48 +0000 UTC FinishedAt: 2026-08-11 00:35:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcgsx2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["zram_submit_bio","disksize_store","reset_store","recompress_store","writeback_store","idle_store","compact_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"fec7849c-1ea8-448b-8a1f-a1f8c1603a16","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-11 00:34:48 +0000 UTC FinishedAt: 2026-08-11 00:34:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["zram_submit_bio","disksize_store","reset_store","recompress_store","writeback_store","idle_store","compact_store"],"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-workflowcgsx2/series-workflowcgsx2-convert-artifact-3626661215/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcgsx2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["zram_submit_bio","disksize_store","reset_store","recompress_store","writeback_store","idle_store","compact_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"fec7849c-1ea8-448b-8a1f-a1f8c1603a16","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-11 00:34:48 +0000 UTC FinishedAt: 2026-08-11 00:34:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcgsx2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["zram_submit_bio","disksize_store","reset_store","recompress_store","writeback_store","idle_store","compact_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"fec7849c-1ea8-448b-8a1f-a1f8c1603a16","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-11 00:34:48 +0000 UTC FinishedAt: 2026-08-11 00:34:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcgsx2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["zram_submit_bio","disksize_store","reset_store","recompress_store","writeback_store","idle_store","compact_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"fec7849c-1ea8-448b-8a1f-a1f8c1603a16","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-11 00:34:49 +0000 UTC FinishedAt: 2026-08-11 00:34:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcgsx2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["zram_submit_bio","disksize_store","reset_store","recompress_store","writeback_store","idle_store","compact_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"fec7849c-1ea8-448b-8a1f-a1f8c1603a16","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-11 00:35:05 +0000 UTC FinishedAt: 2026-08-11 00:43:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcgsx2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["zram_submit_bio","disksize_store","reset_store","recompress_store","writeback_store","idle_store","compact_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_WRITEBACK","ZRAM_MULTI_COMP"],"series_id":"fec7849c-1ea8-448b-8a1f-a1f8c1603a16","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-11 00:35:05 +0000 UTC FinishedAt: 2026-08-11 00:43:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9ec5fff0-e5fd-486d-938b-f8d1104db53b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*933f9430-6dff-4822-93dc-dfc2e2224bfe,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-workflowcgsx2/series-workflowcgsx2-build-action-877226241/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-workflowcgsx2/series-workflowcgsx2-build-action-3429694702/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-workflowcgsx2/series-workflowcgsx2-convert-artifact-3626661215/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,}