Name: series-workflowl29bz Phase: Succeeded StartedAt: 2026-08-14 19:11:54 +0000 UTC FinishedAt: 2026-08-14 21:26:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl29bz[0] Phase: Succeeded StartedAt: 2026-08-14 19:11:54 +0000 UTC FinishedAt: 2026-08-14 19:46:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl29bz[0].run-triage Phase: Succeeded StartedAt: 2026-08-14 19:11:54 +0000 UTC FinishedAt: 2026-08-14 19:46:13 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "24ef02f934eeb48830cff6b739abc3c62b1d107b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_NET_DRIVERS", "USB_USBNET", "USB_NET_CX82310_ETH" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "24ef02f934eeb48830cff6b739abc3c62b1d107b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_NET_DRIVERS", "USB_USBNET", "USB_NET_CX82310_ETH" ], "series_id": "7eb621f3-0bde-4635-9d60-ac1abb0c458b" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "cx82310_rx_fixup" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE5OjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9ORVRfRFJJVkVSUyYjMzQ7LAogICAgJiMzNDtVU0JfVVNCTkVUJiMzNDssCiAgICAmIzM0O1VTQl9ORVRfQ1g4MjMxMF9FVEgmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjeDgyMzEwX3J4X2ZpeHVwJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGZyb20gYHNrYi1cdTAwM2VkYXRhYCBpbiBgY3g4MjMxMF9yeF9maXh1cGAuIFdoZW4gYGRldi1cdTAwM2VwYXJ0aWFsX3JlbWAgaXMgbGFyZ2VyIHRoYW4gYHNrYi1cdTAwM2VsZW5gLCB0aGUgc3Vic2VxdWVudCBgbWVtY3B5YCBvcGVyYXRpb24gcmVhZHMgcGFzdCB0aGUgZW5kIG9mIHRoZSBgc2tiLVx1MDAzZWRhdGFgIGJ1ZmZlci4gVGhpcyBpcyBhIGNsYXNzaWMgaGVhcCBvdXQtb2YtYm91bmRzIHJlYWQgYnVnLCB3aGljaCBpcyByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlcmUgaXMgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGludm9sdmVkIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBpbiBjeDgyMzEwX3J4X2ZpeHVwIHRvIHByZXZlbnQgcHJvY2Vzc2luZyB3aGVuIGRldi1cdTAwM2VwYXJ0aWFsX3JlbSBcdTAwM2Ugc2tiLVx1MDAzZWxlbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBVU0IgbmV0d29yayBkcml2ZXImIzM5O3MgUlggcGF0aCwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBVU0IgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE5OjQzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZGMyNWI4ODA5MjM3OTFhNzg5NDRiZmJjM2RhZDM0MWM1NzRhYmFiMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDE0IDE5OjQzOjE0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jIGIvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmNcbmluZGV4IDA2OGFjYjA1MmFkYjAuLjhjYTZiNzVmZGQyMGYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmNcbkBAIC0yNTEsNiAmIzQzOzI1MSwxMyBAQCBzdGF0aWMgaW50IGN4ODIzMTBfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0ICogZW5kIG9mIHRoYXQgcGFja2V0IGF0IHRoZSBiZWdpbm5pbmcuXG4gXHQgKi9cbiBcdGlmIChkZXYtXHUwMDNlcGFydGlhbF9yZW0pIHtcbiYjNDM7XHRcdGlmIChkZXYtXHUwMDNlcGFydGlhbF9yZW0gXHUwMDNlIHNrYi1cdTAwM2VsZW4pIHtcbiYjNDM7XHRcdFx0bmV0ZGV2X2VycihkZXYtXHUwMDNlbmV0LFxuJiM0MztcdFx0XHRcdCAgIFwmIzM0O1JYIHBhcnRpYWwgZnJhbWU6IG5lZWQgJWx1LCBnb3QgJXVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0ICAgZGV2LVx1MDAzZXBhcnRpYWxfcmVtLCBza2ItXHUwMDNlbGVuKTtcbiYjNDM7XHRcdFx0ZGV2LVx1MDAzZXBhcnRpYWxfcmVtID0gMDtcbiYjNDM7XHRcdFx0cmV0dXJuIDA7XG4mIzQzO1x0XHR9XG4gXHRcdGxlbiA9IGRldi1cdTAwM2VwYXJ0aWFsX2xlbiAmIzQzOyBkZXYtXHUwMDNlcGFydGlhbF9yZW07XG4gXHRcdHNrYjIgPSBhbGxvY19za2IobGVuLCBHRlBfQVRPTUlDKTtcbiBcdFx0aWYgKCFza2IyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE5OjQzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtVU0JfTkVUX0RSSVZFUlMmIzM0OywKICAgICYjMzQ7VVNCX1VTQk5FVCYjMzQ7LAogICAgJiMzNDtVU0JfTkVUX0NYODIzMTBfRVRIJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y3g4MjMxMF9yeF9maXh1cCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGluIGN4ODIzMTBfcnhfZml4dXAgdG8gcHJldmVudCBwcm9jZXNzaW5nIHdoZW4gZGV2LVx1MDAzZXBhcnRpYWxfcmVtIFx1MDAzZSBza2ItXHUwMDNlbGVuLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIFVTQiBuZXR3b3JrIGRyaXZlciYjMzk7cyBSWCBwYXRoLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIFVTQiBlbXVsYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkYzI1Yjg4MDkyMzc5MWE3ODk0NGJmYmMzZGFkMzQxYzU3NGFiYWIyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgMTQgMTk6NDM6MTQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYyBiL2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jCmluZGV4IDA2OGFjYjA1MmFkYjAuLjhjYTZiNzVmZGQyMGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jCkBAIC0yNTEsNiAmIzQzOzI1MSwxMyBAQCBzdGF0aWMgaW50IGN4ODIzMTBfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCSAqIGVuZCBvZiB0aGF0IHBhY2tldCBhdCB0aGUgYmVnaW5uaW5nLgogCSAqLwogCWlmIChkZXYtJmd0O3BhcnRpYWxfcmVtKSB7CiYjNDM7CQlpZiAoZGV2LSZndDtwYXJ0aWFsX3JlbSAmZ3Q7IHNrYi0mZ3Q7bGVuKSB7CiYjNDM7CQkJbmV0ZGV2X2VycihkZXYtJmd0O25ldCwKJiM0MzsJCQkJICAgJiMzNDtSWCBwYXJ0aWFsIGZyYW1lOiBuZWVkICVsdSwgZ290ICV1XG4mIzM0OywKJiM0MzsJCQkJICAgZGV2LSZndDtwYXJ0aWFsX3JlbSwgc2tiLSZndDtsZW4pOwomIzQzOwkJCWRldi0mZ3Q7cGFydGlhbF9yZW0gPSAwOwomIzQzOwkJCXJldHVybiAwOwomIzQzOwkJfQogCQlsZW4gPSBkZXYtJmd0O3BhcnRpYWxfbGVuICYjNDM7IGRldi0mZ3Q7cGFydGlhbF9yZW07CiAJCXNrYjIgPSBhbGxvY19za2IobGVuLCBHRlBfQVRPTUlDKTsKIAkJaWYgKCFza2IyKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxOTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDkwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFVTQiBFdGhlcm5ldCBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggZm9yIHRoZSBgY3g4MjMxMF9ldGguY2AgZmlsZSB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC91c2IvYCBkaXJlY3RvcnkuIFNlZW1zIGxpa2UgdGhlcmUmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbnRyb2R1Y2VkIGluIGBjeDgyMzEwX3J4X2ZpeHVwYC4gU3BlY2lmaWNhbGx5LCBhIGNoZWNrIGhhcyBiZWVuIGFkZGVkOgoKYGBgYwoJaWYgKGRldi0mZ3Q7cGFydGlhbF9yZW0pIHsKJiM0MzsJCWlmIChkZXYtJmd0O3BhcnRpYWxfcmVtICZndDsgc2tiLSZndDtsZW4pIHsKJiM0MzsJCQluZXRkZXZfZXJyKGRldi0mZ3Q7bmV0LAomIzQzOwkJCQkgICAmIzM0O1JYIHBhcnRpYWwgZnJhbWU6IG5lZWQgJWx1LCBnb3QgJXVcbiYjMzQ7LAomIzQzOwkJCQkgICBkZXYtJmd0O3BhcnRpYWxfcmVtLCBza2ItJmd0O2xlbik7CiYjNDM7CQkJZGV2LSZndDtwYXJ0aWFsX3JlbSA9IDA7CiYjNDM7CQkJcmV0dXJuIDA7CiYjNDM7CQl9CmBgYAoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBsaWtlbHkgYSBnb29kIHRoaW5nLiBUaGUgY29kZSYjMzk7cyBwcmV2ZW50aW5nIGEgcG90ZW50aWFsIGlzc3VlIHdoZXJlIGBkZXYtJmd0O3BhcnRpYWxfcmVtYCAod2hpY2ggSSBhc3N1bWUgcmVsYXRlcyB0byBhIHBhcnRpYWxseSByZWNlaXZlZCBmcmFtZSkgaXMgbGFyZ2VyIHRoYW4gdGhlIGFjdHVhbCBgc2tiLSZndDtsZW5gLiBUaGlzIGNvdWxkIGxlYWQgdG8gYSByZWFkIHBhc3QgdGhlIGVuZCBvZiB0aGUgcGFja2V0IGJ1ZmZlciwgd2hpY2ggaXMgcHJlY2lzZWx5IHRoZSBraW5kIG9mIG1lbW9yeSBzYWZldHkgcHJvYmxlbSB3ZSB3YW50IHRvIGF2b2lkLiBUaGUgYWRkaXRpb24gaXMgY2xlYXJseSBhIHByb2FjdGl2ZSBtZWFzdXJlLCBzYWZlZ3VhcmRpbmcgYWdhaW5zdCBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIG90aGVyIHNpbWlsYXIgdnVsbmVyYWJpbGl0aWVzLiBOb3csIGxldCYjMzk7cyBqdXN0IG1ha2Ugc3VyZSB0aGUgY29uZmlndXJhdGlvbiBpcyBzZXQgZm9yIHRoZSBgY3g4MjMxMF9ldGhgIGRyaXZlci4gV2UgbmVlZCB0byBjb25maXJtIHRoaXMgcGF0Y2ggaXMgZXZlbiBpbiBlZmZlY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTk6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y3g4MjMxMF9ldGgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZT0zNT1vYmotJChDT05GSUdfVVNCX1NJRVJSQV9ORVQpXHQmIzQzOz0gc2llcnJhX25ldC5vXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGU6MzY6b2JqLSQoQ09ORklHX1VTQl9ORVRfQ1g4MjMxMF9FVEgpXHQmIzQzOz0gY3g4MjMxMF9ldGgub1xuZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlLTM3LW9iai0kKENPTkZJR19VU0JfTkVUX0NEQ19OQ00pXHQmIzQzOz0gY2RjX25jbS5vXG4tLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM9MzY4PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBjeDgyMzEwX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjM2OTpcdC5uYW1lXHRcdD0gXCYjMzQ7Y3g4MjMxMF9ldGhcJiMzNDssXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zNzAtXHQuaWRfdGFibGVcdD0gcHJvZHVjdHMsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTk6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg4OQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgVVNCIE5ldHdvcmsgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyB0aGUgY29uZmlndXJhdGlvbiBJJiMzOTttIGxvb2tpbmcgYXQgaXMgYFVTQl9ORVRfQ1g4MjMxMF9FVEhgLiBSaWdodCwgdGhhdCByaW5ncyBhIGJlbGwuIFRpbWUgdG8gZGlnIGludG8gdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZSB0byBzZWUgdGhlIGZpbmUgZGV0YWlscyBvZiB3aGF0IHRoaXMgc3BlY2lmaWNhbGx5IGVuYWJsZXMuIFRoZSBsaWtlbHkgbG9jYXRpb24gaXMgYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYC4gTGV0JiMzOTtzIGNvbmZpcm0gdGhlIGRlZmluaXRpb24gYW5kIGFueSBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24gYW5kIHdoYXQgaXRzIGltcGxpY2F0aW9ucyBhcmUsIHNvIGEgdGhvcm91Z2ggcmV2aWV3IG9mIHRoZSBLY29uZmlnIGlzIGluIG9yZGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE5OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfTkVUX0NYODIzMTBfRVRIJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NDk0PWNvbmZpZyBVU0JfTkVUX1pBVVJVU1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTUxMS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjUxMjpjb25maWcgVVNCX05FVF9DWDgyMzEwX0VUSFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTEzLVx0dHJpc3RhdGUgXCYjMzQ7Q29uZXhhbnQgQ1g4MjMxMCBVU0IgZXRoZXJuZXQgcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE5OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxOTcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSByZWFkaW5nIGFuZCBwcm9jZXNzaW5nIHRoZSBwcm92aWRlZCB0ZXh0OgoKKipEaXZpbmcgaW50byBVU0IgTmV0d29ya2luZyBDb25maWd1cmF0aW9uKioKCk9rYXksIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSYjMzk7bSBnb2luZyB0byBwdWxsIHVwIGBkcml2ZXJzL25ldC91c2IvS2NvbmZpZ2AsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSA1MTIuIE15IGdvYWwgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gVVNCIG5ldHdvcmtpbmcgZGV2aWNlcy4gSSYjMzk7bSBwcm9iYWJseSBsb29raW5nIGF0IHRoZSBkZXBlbmRlbmNpZXMsIGRlc2NyaXB0aW9ucywgYW5kIGRlZmF1bHRzIGZvciBkaWZmZXJlbnQgVVNCIG5ldHdvcmsgZHJpdmVycy4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCYjMzk7cyBjb250cm9sbGVkIHRocm91Z2ggdGhpcyBLY29uZmlnIGZpbGUsIGhvdyBtb2R1bGVzIGFyZSBlbmFibGVkIG9yIGRpc2FibGVkLCBhbmQgd2hhdCBjb25kaXRpb25zIHRyaWdnZXIgdGhvc2UgY2hvaWNlcy4gSSYjMzk7bSBsaWtlbHkgaW50ZXJlc3RlZCBpbiBhIHNwZWNpZmljIGRldmljZSBvciBpbnRlcmZhY2UsIHNvIEkmIzM5O2xsIGJlIGZpbHRlcmluZyBteSBwZXJ1c2FsIHdpdGggYSBwYXJ0aWN1bGFyIG1vZHVsZSBpbiBtaW5kLiBJIG5lZWQgdG8gc2VlIGhvdyB0aGVzZSBzZXR0aW5ncyBhcmUgc3RydWN0dXJlZCB3aXRoaW4gdGhlIGxhcmdlciBuZXR3b3JraW5nIGNvbmZpZ3VyYXRpb24gc3BhY2Ugd2l0aGluIHRoZSBrZXJuZWwuIFRoZSBnb2FsIGlzIHRvIGZ1bGx5IHVuZGVyc3RhbmQgaG93IGRyaXZlcnMgYXJlIGVuYWJsZWQvZGlzYWJsZWQgd2l0aGluIHRoZSBidWlsZCBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE5OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1MDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDUwMDpcdFx0aGVscFxuIDUwMTpcdFx0ICBDaG9vc2UgdGhpcyBvcHRpb24gdG8gc3VwcG9ydCB0aGUgdXNiIG5ldHdvcmtpbmcgbGlua3MgdXNlZCBieVxuIDUwMjpcdFx0ICBaYXVydXMgbW9kZWxzIGxpa2UgdGhlIFNMLTUwMDBELCBTTC01NTAwLCBTTC01NjAwLCBBLTMwMCwgQi01MDAuXG4gNTAzOlx0XHQgIFRoaXMgYWxzbyBzdXBwb3J0cyBzb21lIHJlbGF0ZWQgZGV2aWNlIGZpcm13YXJlLCBhcyB1c2VkIGluIHNvbWVcbiA1MDQ6XHRcdCAgUERBcyBmcm9tIE9seW1wdXMgYW5kIHNvbWUgY2VsbCBwaG9uZXMgZnJvbSBNb3Rvcm9sYS5cbiA1MDU6XHRcbiA1MDY6XHRcdCAgSWYgeW91IGluc3RhbGwgYW4gYWx0ZXJuYXRlIGltYWdlLCBzdWNoIGFzIHRoZSBMaW51eCAyLjYgYmFzZWRcbiA1MDc6XHRcdCAgdmVyc2lvbnMgb2YgT3BlblphdXJ1cywgeW91IHNob3VsZCBubyBsb25nZXIgbmVlZCB0byBzdXBwb3J0IHRoaXNcbiA1MDg6XHRcdCAgcHJvdG9jb2wuICBPbmx5IHRoZSBcJiMzNDtldGgtZmRcJiMzNDsgb3IgXCYjMzQ7bmV0X2ZkXCYjMzQ7IGRyaXZlcnMgaW4gdGhlc2UgZGV2aWNlc1xuIDUwOTpcdFx0ICByZWFsbHkgbmVlZCB0aGlzIG5vbi1jb25mb3JtYW50IHZhcmlhbnQgb2YgQ0RDIEV0aGVybmV0IChvciBpblxuIDUxMDpcdFx0ICBzb21lIGNhc2VzIENEQyBNRExNKSBwcm90b2NvbCwgbm90IFwmIzM0O2dfZXRoZXJcJiMzNDsuXG4gNTExOlx0XG4gNTEyOlx0Y29uZmlnIFVTQl9ORVRfQ1g4MjMxMF9FVEhcbiA1MTM6XHRcdHRyaXN0YXRlIFwmIzM0O0NvbmV4YW50IENYODIzMTAgVVNCIGV0aGVybmV0IHBvcnRcJiMzNDtcbiA1MTQ6XHRcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuIDUxNTpcdFx0aGVscFxuIDUxNjpcdFx0ICBDaG9vc2UgdGhpcyBvcHRpb24gaWYgeW91JiMzOTtyZSB1c2luZyBhIENvbmV4YW50IENYODIzMTAtYmFzZWQgQURTTFxuIDUxNzpcdFx0ICByb3V0ZXIgd2l0aCBVU0IgZXRoZXJuZXQgcG9ydC4gVGhpcyBkcml2ZXIgaXMgZm9yIHJvdXRlcnMgb25seSxcbiA1MTg6XHRcdCAgaXQgd2lsbCBub3Qgd29yayB3aXRoIEFEU0wgbW9kZW1zICh1c2UgY3hhY3J1IGRyaXZlciBpbnN0ZWFkKS5cbiA1MTk6XHRcbiA1MjA6XHRjb25maWcgVVNCX05FVF9LQUxNSUFcbiA1MjE6XHRcdHRyaXN0YXRlIFwmIzM0O1NhbXN1bmcgS2FsbWlhIGJhc2VkIExURSBVU0IgbW9kZW1cJiMzNDtcbiA1MjI6XHRcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuIDUyMzpcdFx0aGVscFxuIDUyNDpcdFx0ICBDaG9vc2UgdGhpcyBvcHRpb24gaWYgeW91IGhhdmUgYSBTYW1zdW5nIEthbG1pYSBiYXNlZCBVU0IgbW9kZW1cbiA1MjU6XHRcdCAgYXMgU2Ftc3VuZyBHVC1CMzczMC5cbiA1MjY6XHRcbiA1Mjc6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gNTI4Olx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBrYWxtaWEuXG4gNTI5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTk6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDAwMQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSBmYW1pbGlhciB3aXRoIGVtYmVkZGVkIHN5c3RlbXMgYW5kIG5ldHdvcmtpbmc6CgoqKkV4YW1pbmluZyB0aGUgVVNCIE5ldHdvcmsgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmN5KioKClJpZ2h0LCBzbyBgVVNCX05FVF9DWDgyMzEwX0VUSGAgaXMgZGVwZW5kZW50IG9uIGBVU0JfVVNCTkVUYC4gT2theSwgdGhhdCBtYWtlcyBzZW5zZS4gSSBuZWVkIHRvIGVuc3VyZSB0aGUgYmFzZSBVU0IgbmV0d29ya2luZyBzdXBwb3J0IGlzIGVuYWJsZWQgYmVmb3JlIEkgZXZlbiBib3RoZXIgbG9va2luZyBhdCB0aGUgc3BlY2lmaWMgZHJpdmVyIGZvciB0aGUgQ1g4MjMxMCBFdGhlcm5ldCBkZXZpY2UuIExldCYjMzk7cyBkaWcgaW50byBgVVNCX1VTQk5FVGAgYW5kIHNlZSB3aGF0IGl0IGVudGFpbHMuIEkga25vdyB3aGF0IHRoZSBDWDgyMzEwIGlzLCBpdCYjMzk7cyBhIHNwZWNpZmljLCB0eXBpY2FsbHkgb2xkZXIsIFVTQiB0byBFdGhlcm5ldCBjaGlwLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBpbmZyYXN0cnVjdHVyZSBmb3IgVVNCIG5ldHdvcmsgaW50ZXJmYWNlcyBpcyBwcmVzZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxOTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX1VTQk5FVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTExMz1jb25maWcgVVNCX0xBTjc4WFhcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMzEtXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoxMzI6Y29uZmlnIFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTEzMy1cdHRyaXN0YXRlIFwmIzM0O011bHRpLXB1cnBvc2UgVVNCIE5ldHdvcmtpbmcgRnJhbWV3b3JrXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE5OjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzMjQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkV4YW1pbmluZyBVU0IgTmV0d29ya2luZyBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbi4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBgZHJpdmVycy9uZXQvdXNiL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAxMzIuIFRoYXQmIzM5O3MgbGlrZWx5IHdoZXJlIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIFVTQiBuZXR3b3JraW5nIGRyaXZlcnMgYXJlIGRlZmluZWQuIEkmIzM5O20gcHJvYmFibHkgbG9va2luZyBmb3Igc29tZXRoaW5nIHNwZWNpZmljLCBhIGZlYXR1cmUgSSB3YW50IHRvIGVuYWJsZSwgZGlzYWJsZSwgb3IgcGVyaGFwcyB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgb2YuIFRoaXMgY291bGQgYmUgcmVsYXRlZCB0byBhIHNwZWNpZmljIFVTQiBuZXR3b3JrIGludGVyZmFjZSBjYXJkIChOSUMpLCBhIHBhcnRpY3VsYXIgZHJpdmVyIGZlYXR1cmUsIG9yIGEgZ2VuZXJhbCBxdWVzdGlvbiBvZiBob3cgdGhlIG1vZHVsZSBzZWxlY3Rpb24gd29ya3Mgd2l0aGluIHRoYXQgYXJlYS4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgdGhhdCBzcGVjaWZpYyBLY29uZmlnIG9wdGlvbiBpcywgd2hhdCBpdCBjb250cm9scywgYW5kIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGl0JiMzOTtzIGF2YWlsYWJsZS4gS25vd2luZyB0aGUgY29udGV4dCB3aXRoaW4gdGhlIEtjb25maWcgZmlsZSB3aWxsIGNsYXJpZnkgdGhlIGJpZ2dlciBwaWN0dXJlLiBJJiMzOTttIGhvcGluZyB0byBnZXQgYSBxdWljayBncmFzcCBvZiB0aGlzIHBhcnRpY3VsYXIgb3B0aW9uIGJ5IHJlYWRpbmcgdGhlIHN1cnJvdW5kaW5nIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE5OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDEyNTpcdFx0ICBMQU43ODAxIDogVVNCIDMgdG8gMTAvMTAwLzEwMDAgRXRoZXJuZXQgYWRhcHRlciAoTUFDIG9ubHkpXG4gMTI2Olx0XG4gMTI3Olx0XHQgIFByb3BlciBQSFkgZHJpdmVyIGlzIHJlcXVpcmVkIGZvciBMQU43ODAxLlxuIDEyODpcdFxuIDEyOTpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiAxMzA6XHRcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGxhbjc4eHguXG4gMTMxOlx0XG4gMTMyOlx0Y29uZmlnIFVTQl9VU0JORVRcbiAxMzM6XHRcdHRyaXN0YXRlIFwmIzM0O011bHRpLXB1cnBvc2UgVVNCIE5ldHdvcmtpbmcgRnJhbWV3b3JrXCYjMzQ7XG4gMTM0Olx0XHRzZWxlY3QgTUlJXG4gMTM1Olx0XHRoZWxwXG4gMTM2Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHNldmVyYWwga2luZHMgb2YgbmV0d29yayBsaW5rcyBvdmVyIFVTQixcbiAxMzc6XHRcdCAgd2l0aCBcJiMzNDttaW5pZHJpdmVyc1wmIzM0OyBidWlsdCBhcm91bmQgYSBjb21tb24gbmV0d29yayBkcml2ZXIgY29yZVxuIDEzODpcdFx0ICB0aGF0IHN1cHBvcnRzIGRlZXAgcXVldWVzIGZvciBlZmZpY2llbnQgdHJhbnNmZXJzLiAgKFRoaXMgZ2l2ZXNcbiAxMzk6XHRcdCAgYmV0dGVyIHBlcmZvcm1hbmNlIHdpdGggc21hbGwgcGFja2V0cyBhbmQgYXQgaGlnaCBzcGVlZHMpLlxuIDE0MDpcdFxuIDE0MTpcdFx0ICBUaGUgVVNCIGhvc3QgcnVucyBcJiMzNDt1c2JuZXRcJiMzNDssIGFuZCB0aGUgb3RoZXIgZW5kIG9mIHRoZSBsaW5rIG1pZ2h0IGJlOlxuIDE0MjpcdFxuIDE0MzpcdFx0ICAtIEFub3RoZXIgVVNCIGhvc3QsIHdoZW4gdXNpbmcgVVNCIFwmIzM0O25ldHdvcmtcJiMzNDsgb3IgXCYjMzQ7ZGF0YSB0cmFuc2ZlclwmIzM0O1xuIDE0NDpcdFx0ICAgIGNhYmxlcy4gIFRoZXNlIGFyZSBvZnRlbiB1c2VkIHRvIG5ldHdvcmsgbGFwdG9wcyB0byBQQ3MsIGxpa2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTk6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDkyNAoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVVNCIE5ldHdvcmsgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpdCBzZWVtcyBgVVNCX1VTQk5FVGAgaXMgdGhlIGNyaXRpY2FsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGhlcmUuIE15IGZvY3VzIGlzIHRoZSBgY3g4MjMxMF9yeF9maXh1cGAgZnVuY3Rpb24uIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2sgd2l0aGluIHRoYXQgZnVuY3Rpb24sIHdoaWNoIG1ha2VzIG1lIHRoaW5rIGl0JiMzOTtzIGltcG9ydGFudC4gTm93LCB0aGUga2V5IHF1ZXN0aW9uIGlzLCBjYW4gdGhpcyBjb2RlIHBhdGggZXZlbiBiZSBoaXQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gQWZ0ZXIgYSBiaXQgb2YgdGhpbmtpbmcsIHRoZSBhbnN3ZXIgaXMgeWVzLCBhYnNvbHV0ZWx5LiBVU0IgZW11bGF0aW9uLCBlc3BlY2lhbGx5IHVzaW5nIHNvbWV0aGluZyBsaWtlIGBkdW1teV9oY2RgIGNvbWJpbmVkIHdpdGggYSBmdXp6ZXIgbGlrZSBzeXprYWxsZXIsIGNhbiBlYXNpbHkgdHJpZ2dlciB0aGlzLiBNeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgZnVuY3Rpb24gYGN4ODIzMTBfcnhfZml4dXBgIGl0c2VsZi4gSSBuZWVkIHRvIGtub3cgaWYgaXQmIzM5O3Mgc3RhdGljLiBUaGF0IGluZm9ybWF0aW9uIHdpbGwgaGVscCBtZSBkZXRlcm1pbmUgaXRzIHNjb3BlIGFuZCBwb3RlbnRpYWwgaW1wYWN0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHRvIHByb3Blcmx5IGFzc2VzcyB0aGlzIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE5OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2N4ODIzMTBfcnhfZml4dXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYz0yMjY9c3RhdGljIHZvaWQgY3g4MjMxMF91bmJpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yNDItICovXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoyNDM6c3RhdGljIGludCBjeDgyMzEwX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTI0NC17XG4tLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM9MzQxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm9cdGN4ODIzMTBfaW5mbyA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zNDUtXHQudW5iaW5kXHRcdD0gY3g4MjMxMF91bmJpbmQsXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzozNDY6XHQucnhfZml4dXBcdD0gY3g4MjMxMF9yeF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM0Ny1cdC50eF9maXh1cFx0PSBjeDgyMzEwX3R4X2ZpeHVwLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxOTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTc1CgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogMjEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IFJlZmluZW1lbnQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYC5yeF9maXh1cGAgZnVuY3Rpb24gaW4gYGN4ODIzMTBfaW5mb2AuIEl0JiMzOTtzIGEgc3RhdGljIGZ1bmN0aW9uLCB3aGljaCBpc24mIzM5O3QgaWRlYWwuIEhvd2V2ZXIsIGl0JiMzOTtzIGFzc2lnbmVkIGFzIGEgY2FsbGJhY2ssIGFuZCB0aGF0IG1ha2VzIGl0IGEgZGVjZW50IGZ1enppbmcgdGFyZ2V0LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbWFrZSBpdCBhIGZvY3VzLgoKQnV0IHdhaXQsIGFyZSB0aGVyZSBvdGhlciBmdW5jdGlvbnMgSSBzaG91bGQgYmUgY29uc2lkZXJpbmc/IFBlcmhhcHMgYGN4ODIzMTBfYmluZGAsIGBjeDgyMzEwX3VuYmluZGAsIG9yIGV2ZW4gYGN4ODIzMTBfdHhfZml4dXBgPyBHaXZlbiB0aGUgbmF0dXJlIG9mIG15IHdvcmssIEkgc2hvdWxkIGJlIGV4aGF1c3RpdmUgaW4gdGhpcyBpbml0aWFsIHNjYW4uIEkmIzM5O2xsIGluY2x1ZGUgYGN4ODIzMTBfcnhfZml4dXBgIGFzIGEgcHJpbWFyeSBmb2N1cyBzeW1ib2wuCgpBaCwgSSBuZWVkIHRvIHBhdXNlIGZvciBhIHNlY29uZC4gVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgaW5zdHJ1Y3RzIG1lIHRvIGZhdm9yIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucywgbm90IGlubGluZWQgaW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9ucy4gSSBzZWUuIFNpbmNlIGBjeDgyMzEwX3J4X2ZpeHVwYCBpcyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIsIGl0IHdvbiYjMzk7dCBiZSBpbmxpbmVkLiBJdCB3aWxsIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcy4gT2theSwgdGhhdCYjMzk7cyBpbXBvcnRhbnQuCgpBbHJpZ2h0LCBsZXQmIzM5O3Mga2VlcCBhbiBleWUgb3V0IGZvciBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUuIFRoYXQmIzM5O3MgdGhlIG5leHQgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTk6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XlthLXpBLVpfXS4qY3g4MjMxMCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTE2LVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MTc6ZW51bSBjeDgyMzEwX2NtZCB7XG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xOC1cdENNRF9TVEFSVFx0XHQ9IDB4ODQsXHQvKiBubyBlZmZlY3Q/ICovXG4tLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjUtXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoyNjplbnVtIGN4ODIzMTBfc3RhdHVzIHtcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTI3LVx0U1RBVFVTX1VOREVGSU5FRCxcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy00Mi1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjQzOnN0cnVjdCBjeDgyMzEwX3ByaXYge1xuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtNDQtXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgcmVlbmFibGVfd29yaztcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy01My0gKi9cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjU0OnN0YXRpYyBpbnQgY3g4MjMxMF9jbWQoc3RydWN0IHVzYm5ldCAqZGV2LCBlbnVtIGN4ODIzMTBfY21kIGNtZCwgYm9vbCByZXBseSxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTU1LVx0XHQgICAgICAgdTggKndkYXRhLCBpbnQgd2xlbiwgdTggKnJkYXRhLCBpbnQgcmxlbilcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xMTktXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoxMjA6c3RhdGljIGludCBjeDgyMzEwX2VuYWJsZV9ldGhlcm5ldChzdHJ1Y3QgdXNibmV0ICpkZXYpXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xMjEte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTEyOS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjEzMDpzdGF0aWMgdm9pZCBjeDgyMzEwX3JlZW5hYmxlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMTMxLXtcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xNDAtXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoxNDE6c3RhdGljIGludCBjeDgyMzEwX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTE0Mi17XG4tLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjI1LVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MjI2OnN0YXRpYyB2b2lkIGN4ODIzMTBfdW5iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yMjcte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTI0Mi0gKi9cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjI0MzpzdGF0aWMgaW50IGN4ODIzMTBfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjQ0LXtcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zMjItLyogVFggaXMgZWFzeSwganVzdCBhZGQgMiBieXRlcyBvZiBsZW5ndGggYXQgdGhlIGJlZ2lubmluZyAqL1xuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MzIzOnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqY3g4MjMxMF90eF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zMjQtXHRcdFx0XHQgICAgICAgZ2ZwX3QgZmxhZ3MpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMzQwLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MzQxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm9cdGN4ODIzMTBfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM0Mi1cdC5kZXNjcmlwdGlvblx0PSBcJiMzNDtDb25leGFudCBDWDgyMzEwIFVTQiBldGhlcm5ldFwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYz0zNjY9TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIHByb2R1Y3RzKTtcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM2Ny1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjM2ODpzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgY3g4MjMxMF9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zNjktXHQubmFtZVx0XHQ9IFwmIzM0O2N4ODIzMTBfZXRoXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM3Ny1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjM3ODptb2R1bGVfdXNiX2RyaXZlcihjeDgyMzEwX2RyaXZlcik7XG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zNzktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE5OjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc0MDUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBjeDgyMzEwIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBgY3g4MjMxMGAgRXRoZXJuZXQgZHJpdmVyIGNvZGUuIEZpcnN0IHRoaW5ncyBmaXJzdCwgYWxsIHRoZSBmdW5jdGlvbnMgYXJlIHN0YXRpYyBoZXJlLCBzbyBJIG5lZWQgdG8gcGljayBhIGdvb2QgZm9jdXMgc3ltYm9sLiBgY3g4MjMxMF9yeF9maXh1cGAgc2VlbXMgbGlrZSBhIHNvbGlkIGNhbmRpZGF0ZSB0byBzdGFydCB3aXRoLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGlzIHRoaW5nIGlzIGNvbmZpZ3VyZWQuIFRoZSBjb25maWcgaXMgYFVTQl9ORVRfQ1g4MjMxMF9FVEhgLCByaWdodD8gUmlnaHQuIE5vdywgaGFuZyBvbiBhIHNlY29uZC4uLkkgbmVlZCB0byBjaGVjayB0aGUgZGVwZW5kZW5jaWVzLiBgVVNCX05FVF9DWDgyMzEwX0VUSGAgZGVwZW5kcyBvbiBgVVNCX1VTQk5FVGAuIE9rYXksIHRoYXQgbWFrZXMgc2Vuc2U7IGl0JiMzOTtzIGEgVVNCIG5ldHdvcmsgZGV2aWNlLiBOb3csIGxldCYjMzk7cyBzZWUgd2hhdCAqZWxzZSogaXMgcmlkaW5nIG9uIGBVU0JfVVNCTkVUYC4gSXQgc2VsZWN0cyBgTUlJYCwgb2theS4gQW5kIG5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb246IGlzIGBVU0JfVVNCTkVUYCBkZXBlbmRlbnQgb24gdGhlIGNvcmUgYFVTQmAgY29uZmlndXJhdGlvbj8gR290dGEgdHJhY2UgdGhvc2UgZGVwZW5kZW5jaWVzLiBUaW1lIHRvIGNyYWNrIG9wZW4gYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYCBhbmQgem9vbSBpbiBvbiB0aGF0IGBjb25maWcgVVNCX1VTQk5FVGAgc2VjdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGF0IGl0JiMzOTtzIGxpbmtlZCB0by4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTk6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTU9Y29tbWVudCBcJiMzNDtIb3N0LXNpZGUgVVNCIHN1cHBvcnQgaXMgbmVlZGVkIGZvciBVU0IgTmV0d29yayBBZGFwdGVyIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjY6XHRkZXBlbmRzIG9uICFVU0IgXHUwMDI2XHUwMDI2IE5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNy1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTg9bWVudWNvbmZpZyBVU0JfTkVUX0RSSVZFUlNcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMC1cdGRlZmF1bHQgVVNCIGlmIFVTQlxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MTE6XHRkZXBlbmRzIG9uIFVTQiBcdTAwMjZcdTAwMjYgTkVUXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMi1cbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0xNjY9Y29uZmlnIFVTQl9ORVRfQVg4ODE3WFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTY3LVx0dHJpc3RhdGUgXCYjMzQ7QVNJWCBBWDg4eHh4IEJhc2VkIFVTQiAyLjAgRXRoZXJuZXQgQWRhcHRlcnNcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjE2ODpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTY5LVx0c2VsZWN0IENSQzMyXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTk0LVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MTk1Olx0ICBUaGlzIGRyaXZlciBjcmVhdGVzIGFuIGludGVyZmFjZSBuYW1lZCBcJiMzNDtldGhYXCYjMzQ7LCB3aGVyZSBYIGRlcGVuZHMgb25cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTE5Ni1cdCAgd2hhdCBvdGhlciBuZXR3b3JraW5nIGRldmljZXMgeW91IGhhdmUgaW4gdXNlLlxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTE5OD1jb25maWcgVVNCX05FVF9BWDg4MTc5XzE3OEFcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTE5OS1cdHRyaXN0YXRlIFwmIzM0O0FTSVggQVg4ODE3OS8xNzhBIFVTQiAzLjAvMi4wIHRvIEdpZ2FiaXQgRXRoZXJuZXRcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjIwMDpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjAxLVx0c2VsZWN0IENSQzMyXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjEyLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MjEzOlx0ICBUaGlzIGRyaXZlciBjcmVhdGVzIGFuIGludGVyZmFjZSBuYW1lZCBcJiMzNDtldGhYXCYjMzQ7LCB3aGVyZSBYIGRlcGVuZHMgb25cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTIxNC1cdCAgd2hhdCBvdGhlciBuZXR3b3JraW5nIGRldmljZXMgeW91IGhhdmUgaW4gdXNlLlxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTIxNj1jb25maWcgVVNCX05FVF9DRENFVEhFUlxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjE3LVx0dHJpc3RhdGUgXCYjMzQ7Q0RDIEV0aGVybmV0IHN1cHBvcnQgKHNtYXJ0IGRldmljZXMgc3VjaCBhcyBjYWJsZSBtb2RlbXMpXCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoyMTg6XHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTIxOS1cdGRlZmF1bHQgeVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTIzOC1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjIzOTpcdCAgVGhpcyBkcml2ZXIgY3JlYXRlcyBhbiBpbnRlcmZhY2UgbmFtZWQgXCYjMzQ7ZXRoWFwmIzM0Oywgd2hlcmUgWCBkZXBlbmRzIG9uXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0yNDAtXHQgIHdoYXQgb3RoZXIgbmV0d29ya2luZyBkZXZpY2VzIHlvdSBoYXZlIGluIHVzZS4gIEhvd2V2ZXIsIGlmIHRoZVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTI0ND1jb25maWcgVVNCX05FVF9DRENfRUVNXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0yNDUtXHR0cmlzdGF0ZSBcJiMzNDtDREMgRUVNIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjI0NjpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjQ3LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTI1Mi1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjI1MzpcdCAgVGhpcyBkcml2ZXIgY3JlYXRlcyBhbiBpbnRlcmZhY2UgbmFtZWQgXCYjMzQ7ZXRoWFwmIzM0Oywgd2hlcmUgWCBkZXBlbmRzIG9uXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0yNTQtXHQgIHdoYXQgb3RoZXIgbmV0d29ya2luZyBkZXZpY2VzIHlvdSBoYXZlIGluIHVzZS4gIEhvd2V2ZXIsIGlmIHRoZVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTI1OD1jb25maWcgVVNCX05FVF9DRENfTkNNXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0yNTktXHR0cmlzdGF0ZSBcJiMzNDtDREMgTkNNIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjI2MDpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjYxLVx0c2VsZWN0IFVTQl9ORVRfQ0RDRVRIRVJcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0yNzg9Y29uZmlnIFVTQl9ORVRfSFVBV0VJX0NEQ19OQ01cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTI3OS1cdHRyaXN0YXRlIFwmIzM0O0h1YXdlaSBOQ00gZW1iZWRkZWQgQVQgY2hhbm5lbCBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoyODA6XHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTI4MS1cdHNlbGVjdCBVU0JfV0RNXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MjkzPWNvbmZpZyBVU0JfTkVUX0NEQ19NQklNXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0yOTQtXHR0cmlzdGF0ZSBcJiMzNDtDREMgTUJJTSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoyOTU6XHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTI5Ni1cdHNlbGVjdCBVU0JfV0RNXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MzExPWNvbmZpZyBVU0JfTkVUX0RNOTYwMVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzEyLVx0dHJpc3RhdGUgXCYjMzQ7RGF2aWNvbSBETTk2eHggYmFzZWQgVVNCIDEwLzEwMCBldGhlcm5ldCBkZXZpY2VzXCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzozMTM6XHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTMxNC1cdHNlbGVjdCBDUkMzMlxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTMxOT1jb25maWcgVVNCX05FVF9TUjk3MDBcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTMyMC1cdHRyaXN0YXRlIFwmIzM0O0NvcmVDaGlwLXN6IFNSOTcwMCBiYXNlZCBVU0IgMS4xIDEwLzEwMCBldGhlcm5ldCBkZXZpY2VzXCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzozMjE6XHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTMyMi1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0zMjY9Y29uZmlnIFVTQl9ORVRfU1I5ODAwXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zMjctXHR0cmlzdGF0ZSBcJiMzNDtDb3JlQ2hpcC1zeiBTUjk4MDAgYmFzZWQgVVNCIDIuMCAxMC8xMDAgZXRoZXJuZXQgZGV2aWNlc1wmIzM0O1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MzI4Olx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zMjktXHRzZWxlY3QgQ1JDMzJcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0zNDE9Y29uZmlnIFVTQl9ORVRfU01TQzc1WFhcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTM0Mi1cdHRyaXN0YXRlIFwmIzM0O1NNU0MgTEFONzVYWCBiYXNlZCBVU0IgMi4wIGdpZ2FiaXQgZXRoZXJuZXQgZGV2aWNlc1wmIzM0O1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MzQzOlx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zNDQtXHRzZWxlY3QgQklUUkVWRVJTRVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTM1MT1jb25maWcgVVNCX05FVF9TTVNDOTVYWFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzUyLVx0dHJpc3RhdGUgXCYjMzQ7U01TQyBMQU45NVhYIGJhc2VkIFVTQiAyLjAgMTAvMTAwIGV0aGVybmV0IGRldmljZXNcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjM1MzpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzU0LVx0c2VsZWN0IFBIWUxJQlxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTM2ND1jb25maWcgVVNCX05FVF9HTDYyMEFcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTM2NS1cdHRyaXN0YXRlIFwmIzM0O0dlbmVTeXMgR0w2MjBVU0ItQSBiYXNlZCBjYWJsZXNcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjM2NjpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzY3LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTM3Mz1jb25maWcgVVNCX05FVF9ORVQxMDgwXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzc1LVx0ZGVmYXVsdCB5XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzozNzY6XHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTM3Ny1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0zODI9Y29uZmlnIFVTQl9ORVRfUExVU0Jcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zODUtXHQjIGFyZSBldmVyIHJlc29sdmVkIC4uLiB0aGVuIHJlbW92ZSBcJiMzNDtleHBlcmltZW50YWxcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjM4NjpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzg3LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTM5MT1jb25maWcgVVNCX05FVF9NQ1M3ODMwXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zOTItXHR0cmlzdGF0ZSBcJiMzNDtNb3NDaGlwIE1DUzc4MzAgYmFzZWQgRXRoZXJuZXQgYWRhcHRlcnNcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjM5MzpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzk0LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTM5OT1jb25maWcgVVNCX05FVF9STkRJU19IT1NUXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00MDAtXHR0cmlzdGF0ZSBcJiMzNDtIb3N0IGZvciBSTkRJUyBhbmQgQWN0aXZlU3luYyBkZXZpY2VzXCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo0MDE6XHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQwMi1cdHNlbGVjdCBVU0JfTkVUX0NEQ0VUSEVSXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NDE0PWNvbmZpZyBVU0JfTkVUX0NEQ19TVUJTRVRfRU5BQkxFXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00MTUtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NDE2Olx0ZGVwZW5kcyBvbiBVU0JfTkVUX0NEQ19TVUJTRVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQxNy1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTQxOD1jb25maWcgVVNCX05FVF9DRENfU1VCU0VUXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00MTktXHR0cmlzdGF0ZSBcJiMzNDtTaW1wbGUgVVNCIE5ldHdvcmsgTGlua3MgKENEQyBFdGhlcm5ldCBzdWJzZXQpXCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo0MjA6XHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQyMS1cdGRlZmF1bHQgeVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTQzMz1jb25maWcgVVNCX0FMSV9NNTYzMlxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDM0LVx0Ym9vbCBcJiMzNDtBTGkgTTU2MzIgYmFzZWQgJiMzOTtVU0IgMi4wIERhdGEgTGluayYjMzk7IGNhYmxlc1wmIzM0O1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NDM1Olx0ZGVwZW5kcyBvbiBVU0JfTkVUX0NEQ19TVUJTRVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQzNi1cdHNlbGVjdCBVU0JfTkVUX0NEQ19TVUJTRVRfRU5BQkxFXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NDQxPWNvbmZpZyBVU0JfQU4yNzIwXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00NDItXHRib29sIFwmIzM0O0FuY2hvckNoaXBzIDI3MjAgYmFzZWQgY2FibGVzIChYaXJjb20gUEdVTkVULCAuLi4pXCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo0NDM6XHRkZXBlbmRzIG9uIFVTQl9ORVRfQ0RDX1NVQlNFVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDQ0LVx0c2VsZWN0IFVTQl9ORVRfQ0RDX1NVQlNFVF9FTkFCTEVcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz00NTA9Y29uZmlnIFVTQl9CRUxLSU5cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQ1MS1cdGJvb2wgXCYjMzQ7ZVRFSyBiYXNlZCBob3N0LXRvLWhvc3QgY2FibGVzIChBZHZhbmNlLCBCZWxraW4sIC4uLilcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjQ1MjpcdGRlcGVuZHMgb24gVVNCX05FVF9DRENfU1VCU0VUXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00NTMtXHRzZWxlY3QgVVNCX05FVF9DRENfU1VCU0VUX0VOQUJMRVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTQ2MD1jb25maWcgVVNCX0FSTUxJTlVYXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00NjEtXHRib29sIFwmIzM0O0VtYmVkZGVkIEFSTSBMaW51eCBsaW5rcyAoaVBhcSwgLi4uKVwmIzM0O1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NDYyOlx0ZGVwZW5kcyBvbiBVU0JfTkVUX0NEQ19TVUJTRVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQ2My1cdHNlbGVjdCBVU0JfTkVUX0NEQ19TVUJTRVRfRU5BQkxFXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NDc4PWNvbmZpZyBVU0JfRVBTT04yODg4XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00NzktXHRib29sIFwmIzM0O0Vwc29uIDI4ODggYmFzZWQgZmlybXdhcmUgKERFVkVMT1BNRU5UKVwmIzM0O1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NDgwOlx0ZGVwZW5kcyBvbiBVU0JfTkVUX0NEQ19TVUJTRVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQ4MS1cdHNlbGVjdCBVU0JfTkVUX0NEQ19TVUJTRVRfRU5BQkxFXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NDg2PWNvbmZpZyBVU0JfS0MyMTkwXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00ODctXHRib29sIFwmIzM0O0tUIFRlY2hub2xvZ3kgS0MyMTkwIGJhc2VkIGNhYmxlcyAoSW5zdGFOZXQpXCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo0ODg6XHRkZXBlbmRzIG9uIFVTQl9ORVRfQ0RDX1NVQlNFVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDg5LVx0c2VsZWN0IFVTQl9ORVRfQ0RDX1NVQlNFVF9FTkFCTEVcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz00OTQ9Y29uZmlnIFVTQl9ORVRfWkFVUlVTXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00OTUtXHR0cmlzdGF0ZSBcJiMzNDtTaGFycCBaYXVydXMgKHN0b2NrIFJPTXMpIGFuZCBjb21wYXRpYmxlXCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo0OTY6XHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQ5Ny1cdHNlbGVjdCBVU0JfTkVUX0NEQ0VUSEVSXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NTEyPWNvbmZpZyBVU0JfTkVUX0NYODIzMTBfRVRIXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy01MTMtXHR0cmlzdGF0ZSBcJiMzNDtDb25leGFudCBDWDgyMzEwIFVTQiBldGhlcm5ldCBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo1MTQ6XHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTUxNS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz01MjA9Y29uZmlnIFVTQl9ORVRfS0FMTUlBXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy01MjEtXHR0cmlzdGF0ZSBcJiMzNDtTYW1zdW5nIEthbG1pYSBiYXNlZCBMVEUgVVNCIG1vZGVtXCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo1MjI6XHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTUyMy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz01MzA9Y29uZmlnIFVTQl9ORVRfUU1JX1dXQU5cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTUzMS1cdHRyaXN0YXRlIFwmIzM0O1FNSSBXV0FOIGRyaXZlciBmb3IgUXVhbGNvbW0gTVNNIGJhc2VkIDNHIGFuZCBMVEUgbW9kZW1zXCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo1MzI6XHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTUzMy1cdHNlbGVjdCBVU0JfV0RNXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NTUyPWNvbmZpZyBVU0JfSFNPXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy01NTMtXHR0cmlzdGF0ZSBcJiMzNDtPcHRpb24gVVNCIEhpZ2ggU3BlZWQgTW9iaWxlIERldmljZXNcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjU1NDpcdGRlcGVuZHMgb24gVVNCIFx1MDAyNlx1MDAyNiBSRktJTEwgXHUwMDI2XHUwMDI2IFRUWVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTU1LVx0ZGVmYXVsdCBuXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NTYzPWNvbmZpZyBVU0JfTkVUX0lOVDUxWDFcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTU2NC1cdHRyaXN0YXRlIFwmIzM0O0ludGVsbG9uIFBMQyBiYXNlZCB1c2IgYWRhcHRlclwmIzM0O1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NTY1Olx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy01NjYtXHRzZWxlY3QgVVNCX05FVF9DRENFVEhFUlxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTU3Mj1jb25maWcgVVNCX0NEQ19QSE9ORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTU3My1cdHRyaXN0YXRlIFwmIzM0O0NEQyBQaG9uZXQgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NTc0Olx0ZGVwZW5kcyBvbiBQSE9ORVQgXHUwMDI2XHUwMDI2IFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTU3NS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz01OTA9Y29uZmlnIFVTQl9TSUVSUkFfTkVUXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy01OTEtXHR0cmlzdGF0ZSBcJiMzNDtVU0ItdG8tV1dBTiBEcml2ZXIgZm9yIFNpZXJyYSBXaXJlbGVzcyBtb2RlbXNcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjU5MjpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTkzLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTU5OT1jb25maWcgVVNCX1ZMNjAwXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy02MDAtXHR0cmlzdGF0ZSBcJiMzNDtMRyBWTDYwMCBtb2RlbSBkb25nbGVcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjYwMTpcdGRlcGVuZHMgb24gVVNCX05FVF9DRENFVEhFUiBcdTAwMjZcdTAwMjYgVFRZXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy02MDItXHRzZWxlY3QgVVNCX0FDTVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTYxND1jb25maWcgVVNCX05FVF9DSDkyMDBcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTYxNS1cdHRyaXN0YXRlIFwmIzM0O1FpbmdIZW5nIENIOTIwMCBVU0IgZXRoZXJuZXQgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NjE2Olx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy02MTctXHRzZWxlY3QgTUlJXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NjI1PWNvbmZpZyBVU0JfTkVUX0FRQzExMVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNjI2LVx0dHJpc3RhdGUgXCYjMzQ7QXF1YW50aWEgQVF0aW9uIFVTQiB0byA1LzIuNUdiRSBDb250cm9sbGVycyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo2Mjc6XHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTYyOC1cdHNlbGVjdCBDUkMzMlxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTYzNj1jb25maWcgVVNCX1JUTDgxNTNfRUNNXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy02MzctXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NjM4Olx0ZGVwZW5kcyBvbiBVU0JfTkVUX0NEQ0VUSEVSIFx1MDAyNlx1MDAyNiAoVVNCX1JUTDgxNTIgfHwgVVNCX1JUTDgxNTI9bilcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTYzOS1cdGRlZmF1bHQgeVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxOTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTkxOQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVVNCIE5ldHdvcmtpbmcgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhpcyBVU0IgbmV0d29ya2luZyBzdHVmZiBpcyBjb25maWd1cmVkLiBJbml0aWFsbHksIEkgdGhvdWdodCB0aGF0IGBVU0JfVVNCTkVUYCBhbG9uZSB3b3VsZCBzdWZmaWNlLiBCdXQgdGhhdCBkZXBlbmRzIG9uIGBVU0JfTkVUX0RSSVZFUlNgLCB3aGljaCwgaW4gdHVybiwgaGluZ2VzIG9uIGJvdGggYFVTQmAgYW5kIGBORVRgIGJlaW5nIGVuYWJsZWQuIExldCBtZSB2ZXJpZnkgaWYgYFVTQl9ORVRfRFJJVkVSU2AgaXMsIGluIGZhY3QsIGVzc2VudGlhbCBoZXJlLgoKUmlnaHQsIGBVU0JfTkVUX0RSSVZFUlNgIGlzIGEgbWVudWNvbmZpZyBvcHRpb24uIEZyb20gd2hhdCBJIGNhbiBzZWUsIGBVU0JfTkVUX0NYODIzMTBfRVRIYCBhbmQgYFVTQl9VU0JORVRgIGFwcGVhciB0byBiZSB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gQnV0IGhvbGQgb24sIGBVU0JfTkVUX0NYODIzMTBfRVRIYCBoYXMgYSBkZXBlbmRlbmN5IG9uIGBVU0JfVVNCTkVUYC4gU28sIGluIGVzc2VuY2UsIEkgbmVlZCBib3RoIGBVU0JfTkVUX0NYODIzMTBfRVRIYCBhbmQgYFVTQl9VU0JORVRgIHRvIGhhdmUgdGhpcyBmdW5jdGlvbmFsaXR5LgoKTm93LCB0aGF0IGJyaW5ncyBtZSBiYWNrIHRvIGBVU0JfTkVUX0RSSVZFUlNgLiBJdCAqaXMqIGEgbWVudWNvbmZpZywgd2hpY2ggbWVhbnMgaXQgcmVwcmVzZW50cyBhbiBhY3R1YWwgY29uZmlndXJhdGlvbiBvcHRpb24uIEkgc2hvdWxkIGNoZWNrIGBkcml2ZXJzL25ldC91c2IvS2NvbmZpZ2AgYXJvdW5kIGBVU0JfTkVUX0RSSVZFUlNgIHRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiBob3cgaXQgZml0cyBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTk6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWVudWNvbmZpZyBVU0JfTkVUX0RSSVZFUlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvS2NvbmZpZz01PWNvbW1lbnQgXCYjMzQ7SG9zdC1zaWRlIFVTQiBzdXBwb3J0IGlzIG5lZWRlZCBmb3IgVVNCIE5ldHdvcmsgQWRhcHRlciBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNy1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjg6bWVudWNvbmZpZyBVU0JfTkVUX0RSSVZFUlNcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTktXHR0cmlzdGF0ZSBcJiMzNDtVU0IgTmV0d29yayBBZGFwdGVyc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxOTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjUxNwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDEyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIExvZ2ljKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvbmZpZ3VyYXRpb24gcHJvYmxlbSwgYW5kIGl0JiMzOTtzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEZpcnN0LCBJIHNlZSB0aGF0IGBVU0JfTkVUX0RSSVZFUlNgIGlzIGluZGVlZCBhIGNvbmZpZyBvcHRpb24g4oCTIGdvb2QsIHRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBHaXZlbiB0aGF0LCBpdCBzZWVtcyBsb2dpY2FsIHRoYXQgd2Ugc2hvdWxkIGF1dG9tYXRpY2FsbHkgaW5jbHVkZSBgVVNCX1VTQk5FVGAgYW5kIGBVU0JfTkVUX0NYODIzMTBfRVRIYCwgYXMgdGhleSYjMzk7cmUgYWxsIHJlbGF0ZWQgdG8gVVNCIG5ldHdvcmsgZHJpdmVycy4KCkhvbGQgb24gYSBzZWNvbmQsIGEgcXVpY2sgcmVhbGl0eSBjaGVjayBpcyBpbiBvcmRlci4gSXQgbG9va3MgbGlrZSBgVVNCX05FVF9EUklWRVJTYCBpcyBhY3R1YWxseSBhIG1lbnVjb25maWcgb3B0aW9uLCBtYWtpbmcgaXQgZWl0aGVyIGEgYm9vbGVhbiBvciB0cmlzdGF0ZSwgd2hpY2ggY2hhbmdlcyBob3cgaXQgYWZmZWN0cyBvdGhlciBvcHRpb25zLiBMZXQmIzM5O3MgbWFrZSBzdXJlIHRoYXQgYFVTQl9VU0JORVRgIGhhcyB0aGUgcmlnaHQgZGVwZW5kZW5jaWVzLgoKQWgsIEkgc2VlIGl0IG5vdy4gVGFraW5nIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGBkcml2ZXJzL25ldC91c2IvS2NvbmZpZ2AgZmlsZSwgSSBjYW4gc2VlIHRoYXQgKmV2ZXJ5dGhpbmcqIHdpdGhpbiBpdCBpcyBuZXN0ZWQgaW5zaWRlIGFuIGBpZiBVU0JfTkVUX0RSSVZFUlNgIGNvbmRpdGlvbmFsLiBUaGF0JiMzOTtzIHRoZSBrZXkuIFNvLCB0aGUgaW5jbHVzaW9uIG9mIGBVU0JfVVNCTkVUYCBhbmQgdGhlIG90aGVycyBoaW5nZXMgZGlyZWN0bHkgb24gYFVTQl9ORVRfRFJJVkVSU2AgYmVpbmcgZW5hYmxlZCwgd2hpY2ggaXMgZXhhY3RseSBob3cgaXQgc2hvdWxkIGJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxOTo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgVVNCIE5ldHdvcmsgZGV2aWNlcyBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdGNvbW1lbnQgXCYjMzQ7SG9zdC1zaWRlIFVTQiBzdXBwb3J0IGlzIG5lZWRlZCBmb3IgVVNCIE5ldHdvcmsgQWRhcHRlciBzdXBwb3J0XCYjMzQ7XG4gICA2Olx0XHRkZXBlbmRzIG9uICFVU0IgXHUwMDI2XHUwMDI2IE5FVFxuICAgNzpcdFxuICAgODpcdG1lbnVjb25maWcgVVNCX05FVF9EUklWRVJTXG4gICA5Olx0XHR0cmlzdGF0ZSBcJiMzNDtVU0IgTmV0d29yayBBZGFwdGVyc1wmIzM0O1xuICAxMDpcdFx0ZGVmYXVsdCBVU0IgaWYgVVNCXG4gIDExOlx0XHRkZXBlbmRzIG9uIFVTQiBcdTAwMjZcdTAwMjYgTkVUXG4gIDEyOlx0XG4gIDEzOlx0aWYgVVNCX05FVF9EUklWRVJTXG4gIDE0Olx0XG4gIDE1Olx0Y29uZmlnIFVTQl9DQVRDXG4gIDE2Olx0XHR0cmlzdGF0ZSBcJiMzNDtVU0IgQ0FUQyBOZXRNYXRlLWJhc2VkIEV0aGVybmV0IGRldmljZSBzdXBwb3J0XCYjMzQ7XG4gIDE3Olx0XHRzZWxlY3QgQ1JDMzJcbiAgMTg6XHRcdGhlbHBcbiAgMTk6XHRcdCAgU2F5IFkgaWYgeW91IHdhbnQgdG8gdXNlIG9uZSBvZiB0aGUgZm9sbG93aW5nIDEwTWJwcyBVU0IgRXRoZXJuZXRcbiAgMjA6XHRcdCAgZGV2aWNlIGJhc2VkIG9uIHRoZSBFTDEyMTBBIGNoaXAuIFN1cHBvcnRlZCBkZXZpY2VzIGFyZTpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTk6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMxOTQKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFVTQiBOZXR3b3JrIERyaXZlciBGaXgqKgoKT2theSwgc28gdGhlIGNvZGUgaW4gcXVlc3Rpb24gaXMgZGVhbGluZyB3aXRoIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkgd2l0aGluIHRoZSBVU0IgbmV0d29yayBkcml2ZXIuIE15IGluaXRpYWwgYXNzZXNzbWVudCBoaW5nZXMgb24gdGhlIGBpZiBVU0JfTkVUX0RSSVZFUlNgIHByZXByb2Nlc3NvciBjaGVjaywgd2hpY2ggdGVsbHMgbWUgdGhlIGZpeCBpcyBjb25kaXRpb25hbGx5IGNvbXBpbGVkLiBXZSBuZWVkIHRvIGJlIHN1cmUgdGhhdCBgVVNCX05FVF9EUklWRVJTYCwgYFVTQl9VU0JORVRgLCBhbmQgYFVTQl9ORVRfQ1g4MjMxMF9FVEhgIGFyZSBhbGwgZW5hYmxlZCBmb3IgdGhpcyB0byBldmVuIGJlIHJlbGV2YW50LgoKVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBzZWVtcyB0byBjZW50ZXIgYXJvdW5kIHRoZSBgY3g4MjMxMF9yeF9maXh1cGAgZnVuY3Rpb24uIFRoZSBrZXkgaXMgdGhhdCB0aGUgZml4IGFkZHJlc3NlcyBhIHBvc3NpYmxlIG91dC1vZi1ib3VuZHMgcmVhZCwgb3IgYSBzaW1pbGFyIHByb2JsZW0sIHdpdGhpbiB0aGF0IHNwZWNpZmljIGZ1bmN0aW9uLiBUaGUgZml4IGludHJvZHVjZXMgYSBjaGVjaywgc3BlY2lmaWNhbGx5IGBkZXYtJmd0O3BhcnRpYWxfcmVtICZndDsgc2tiLSZndDtsZW5gLCB3aGljaCBpbXBsaWVzIHRoZSBvcmlnaW5hbCBjb2RlIHdhcyB2dWxuZXJhYmxlIHRvIGEgc2NlbmFyaW8gd2hlcmUgd2Ugd2VyZSByZWFkaW5nIGJleW9uZCB0aGUgYm91bmRzIG9mIGEgcmVjZWl2ZWQgcGFja2V0LiBUaGUgZmFjdCB0aGF0IHRoaXMgaXMgcmVhY2hhYmxlIHZpYSBVU0IgZW11bGF0aW9uIGlzIGEgY3JpdGljYWwgZGV0YWlsLgoKTGV0IG1lIHF1aWNrbHkgc2NhbiBmb3IgYW55IG90aGVyIHBvdGVudGlhbGx5IGFmZmVjdGVkIGZ1bmN0aW9ucyB3aXRoaW4gdGhpcyBkcml2ZXIuIGBjeDgyMzEwX3R4X2ZpeHVwYCwgYGN4ODIzMTBfYmluZGAsIGFuZCBgY3g4MjMxMF91bmJpbmRgIGFsbCBjb21lIHVwLCBidXQgc2luY2UgYGN4ODIzMTBfcnhfZml4dXBgIGlzIHdoZXJlIHRoZSBtb2RpZmljYXRpb24gaXMgb2NjdXJyaW5nLCB0aGF0JiMzOTtzIGRlZmluaXRlbHkgdGhlIGtleSBmdW5jdGlvbiB0byBhbmFseXplLgoKTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzOiBjYW4gd2UgYWN0dWFsbHkgKnRyaWdnZXIqIGBjeDgyMzEwX3J4X2ZpeHVwYD8gWWVzLCBpdCYjMzk7cyBjYWxsZWQgYnkgdGhlIGB1c2JuZXRgIGNvcmUgd2hlbiBwYWNrZXRzIGFyZSByZWNlaXZlZC4gU28sIHRoZSBhdHRhY2sgdmVjdG9yIGlzIGxpa2VseSB0aHJvdWdoIGEgY3JhZnRlZCBuZXR3b3JrIHBhY2tldCByZWNlaXZlZCBvdmVyIGEgVVNCIG5ldHdvcmsgY29ubmVjdGlvbi4gVGltZSB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGB1c2JuZXRgIGNvcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE5OjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J4X2ZpeHVwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi91c2JuZXQuYz0zMTI9c3RhdGljIHZvaWQgX191c2JuZXRfc3RhdHVzX3N0b3BfZm9yY2Uoc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYy0zMjItLyogUGFzc2VzIHRoaXMgcGFja2V0IHVwIHRoZSBzdGFjaywgdXBkYXRpbmcgaXRzIGFjY291bnRpbmcuXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmM6MzIzOiAqIFNvbWUgbGluayBwcm90b2NvbHMgYmF0Y2ggcGFja2V0cywgc28gdGhlaXIgcnhfZml4dXAgcGF0aHNcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYy0zMjQtICogY2FuIHJldHVybiBjbG9uZXMgYXMgd2VsbCBhcyBqdXN0IG1vZGlmeSB0aGUgb3JpZ2luYWwgc2tiLlxuLS1cbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYz0zMjY9dm9pZCB1c2JuZXRfc2tiX3JldHVybihzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTMzNi1cbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYzozMzc6XHQvKiBvbmx5IHVwZGF0ZSBpZiB1bnNldCB0byBhbGxvdyBtaW5pZHJpdmVyIHJ4X2ZpeHVwIG92ZXJyaWRlICovXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmMtMzM4LVx0aWYgKHNrYi1cdTAwM2Vwcm90b2NvbCA9PSAwKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYz01Njk9c3RhdGljIGlubGluZSBpbnQgcnhfcHJvY2VzcyhzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmMtNTcwLXtcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYzo1NzE6XHRpZiAoZGV2LVx1MDAzZWRyaXZlcl9pbmZvLVx1MDAzZXJ4X2ZpeHVwIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jOjU3MjpcdCAgICAhZGV2LVx1MDAzZWRyaXZlcl9pbmZvLVx1MDAzZXJ4X2ZpeHVwKGRldiwgc2tiKSkge1xuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jOjU3MzpcdFx0LyogV2l0aCBSWF9BU1NFTUJMRSwgcnhfZml4dXAoKSBtdXN0IHVwZGF0ZSBjb3VudGVycyAqL1xuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTU3NC1cdFx0aWYgKCEoZGV2LVx1MDAzZWRyaXZlcl9pbmZvLVx1MDAzZWZsYWdzIFx1MDAyNiBGTEFHX1JYX0FTU0VNQkxFKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTk6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQyOTMKCQkJCQkJCW91dHB1dDogMTMwCgkJCQkJCQl0aG91Z2h0czogMTYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBgY3g4MjMxMF9yeF9maXh1cGAgVnVsbmVyYWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBjb25maXJtZWQgaXQ6IGByeF9wcm9jZXNzYCBkb2VzIGluZGVlZCBjYWxsIGBkZXYtJmd0O2RyaXZlcl9pbmZvLSZndDtyeF9maXh1cChkZXYsIHNrYilgLiBUaGF0JiMzOTtzIHRoZSBlbnRyeSBwb2ludCBJIHdhcyBsb29raW5nIGZvci4gTm93LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MgYW5kIHNldCB1cCB0aGUgZnV6emluZyB0YXJnZXRzLgoKQmFzZWQgb24gdGhlIGNvZGUgY2hhbmdlcyBhbmQgdGhlIHBvdGVudGlhbCBmb3IgYSBuZXcgdnVsbmVyYWJpbGl0eSwgSSYjMzk7bSBtYXJraW5nIHRoaXMgYXMgYFdvcnRoRnV6emluZzogdHJ1ZWAuIFRoaXMgbG9va3MgcHJvbWlzaW5nLiBUaGUgY3JpdGljYWwgc3ltYm9sIHRvIGZvY3VzIG9uIGlzLCBvZiBjb3Vyc2UsIGBjeDgyMzEwX3J4X2ZpeHVwYC4KClRvIGVuc3VyZSB0aGUgZnV6emVyIGNhbiByZWFjaCB0aGlzIGNvZGUsIEkgbmVlZCB0byBlbmFibGUgYSBmZXcgY29uZmlndXJhdGlvbnMuIEkmIzM5O20gZ29pbmcgdG8gc2V0IGBFbmFibGVDb25maWdzYCB0byBpbmNsdWRlIGAmIzM0O1VTQl9ORVRfRFJJVkVSUyYjMzQ7YCwgYCYjMzQ7VVNCX1VTQk5FVCYjMzQ7YCwgYW5kIGAmIzM0O1VTQl9ORVRfQ1g4MjMxMF9FVEgmIzM0O2AuCgpUaGUgcmVhc29uaW5nIGlzIHNvbGlkOiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBhIGJvdW5kcyBjaGVjayB3aXRoaW4gYGN4ODIzMTBfcnhfZml4dXBgIHRvIGhhbmRsZSB0aGUgY2FzZSB3aGVuIGBkZXYtJmd0O3BhcnRpYWxfcmVtICZndDsgc2tiLSZndDtsZW5gLiBUaGlzIGlzIGEgY2xlYXIsIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUgVVNCIG5ldHdvcmsgZHJpdmVyJiMzOTtzIHJlY2VpdmUgcGF0aCwgYW5kIGl0JiMzOTtzIHJlYWNoYWJsZSB0aHJvdWdoIFVTQiBlbXVsYXRpb24uIFRoaXMgaXMgYSBjbGFzc2ljIGNhc2Ugb2YgaW50cm9kdWNpbmcgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eSB0aHJvdWdoIGEgZml4LCBzbyB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggbXkgdGltZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTk6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9ORVRfRFJJVkVSUyYjMzQ7LAogICAgJiMzNDtVU0JfVVNCTkVUJiMzNDssCiAgICAmIzM0O1VTQl9ORVRfQ1g4MjMxMF9FVEgmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjeDgyMzEwX3J4X2ZpeHVwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgaW4gY3g4MjMxMF9yeF9maXh1cCB0byBwcmV2ZW50IHByb2Nlc3Npbmcgd2hlbiBkZXYtXHUwMDNlcGFydGlhbF9yZW0gXHUwMDNlIHNrYi1cdTAwM2VsZW4uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgVVNCIG5ldHdvcmsgZHJpdmVyJiMzOTtzIFJYIHBhdGgsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VVNCX05FVF9EUklWRVJTJiMzNDssCiAgICAmIzM0O1VTQl9VU0JORVQmIzM0OywKICAgICYjMzQ7VVNCX05FVF9DWDgyMzEwX0VUSCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2N4ODIzMTBfcnhfZml4dXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBpbiBjeDgyMzEwX3J4X2ZpeHVwIHRvIHByZXZlbnQgcHJvY2Vzc2luZyB3aGVuIGRldi1cdTAwM2VwYXJ0aWFsX3JlbSBcdTAwM2Ugc2tiLVx1MDAzZWxlbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBVU0IgbmV0d29yayBkcml2ZXImIzM5O3MgUlggcGF0aCwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBVU0IgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxOTo0NTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE5OjQ1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBmcm9tIGBza2ItXHUwMDNlZGF0YWAgaW4gYGN4ODIzMTBfcnhfZml4dXBgLiBXaGVuIGBkZXYtXHUwMDNlcGFydGlhbF9yZW1gIGlzIGxhcmdlciB0aGFuIGBza2ItXHUwMDNlbGVuYCwgdGhlIHN1YnNlcXVlbnQgYG1lbWNweWAgb3BlcmF0aW9uIHJlYWRzIHBhc3QgdGhlIGVuZCBvZiB0aGUgYHNrYi1cdTAwM2VkYXRhYCBidWZmZXIuIFRoaXMgaXMgYSBjbGFzc2ljIGhlYXAgb3V0LW9mLWJvdW5kcyByZWFkIGJ1Zywgd2hpY2ggaXMgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlIGlzIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVhayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBpbnZvbHZlZCB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGRjMjViODgwOTIzNzkxYTc4OTQ0YmZiYzNkYWQzNDFjNTc0YWJhYjIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEF1ZyAxNCAxOTo0MzoxNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jIGIvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMKaW5kZXggMDY4YWNiMDUyYWRiMC4uOGNhNmI3NWZkZDIwZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMKQEAgLTI1MSw2ICYjNDM7MjUxLDEzIEBAIHN0YXRpYyBpbnQgY3g4MjMxMF9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpCiAJICogZW5kIG9mIHRoYXQgcGFja2V0IGF0IHRoZSBiZWdpbm5pbmcuCiAJICovCiAJaWYgKGRldi0mZ3Q7cGFydGlhbF9yZW0pIHsKJiM0MzsJCWlmIChkZXYtJmd0O3BhcnRpYWxfcmVtICZndDsgc2tiLSZndDtsZW4pIHsKJiM0MzsJCQluZXRkZXZfZXJyKGRldi0mZ3Q7bmV0LAomIzQzOwkJCQkgICAmIzM0O1JYIHBhcnRpYWwgZnJhbWU6IG5lZWQgJWx1LCBnb3QgJXVcbiYjMzQ7LAomIzQzOwkJCQkgICBkZXYtJmd0O3BhcnRpYWxfcmVtLCBza2ItJmd0O2xlbik7CiYjNDM7CQkJZGV2LSZndDtwYXJ0aWFsX3JlbSA9IDA7CiYjNDM7CQkJcmV0dXJuIDA7CiYjNDM7CQl9CiAJCWxlbiA9IGRldi0mZ3Q7cGFydGlhbF9sZW4gJiM0MzsgZGV2LSZndDtwYXJ0aWFsX3JlbTsKIAkJc2tiMiA9IGFsbG9jX3NrYihsZW4sIEdGUF9BVE9NSUMpOwogCQlpZiAoIXNrYjIpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxOTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDg3CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogNDA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEJvdW5kcyBDaGVjayBpbiBgY3g4MjMxMF9yeF9maXh1cGAqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguY2AuIEl0JiMzOTtzIGludHJvZHVjaW5nIGEgYm91bmRzIGNoZWNrIGluIHRoZSBgY3g4MjMxMF9yeF9maXh1cGAgZnVuY3Rpb24uIExldCYjMzk7cyBzZWUsIHRoZSBmdW5jdGlvbiBpcyBkZWFsaW5nIHdpdGggcGFydGlhbCBmcmFtZXMgaW4gVVNCIG5ldHdvcmsgcGFja2V0cy4gVGhlIGFkZGVkIGNoZWNrIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZDogYGlmIChkZXYtJmd0O3BhcnRpYWxfcmVtICZndDsgc2tiLSZndDtsZW4pYC4gTXkgZmlyc3QgdGhvdWdodCBpcywgd2h5IGlzIHRoaXMgbmVlZGVkPwoKUmlnaHQsIGBkZXYtJmd0O3BhcnRpYWxfcmVtYCByZXByZXNlbnRzIHRoZSByZW1haW5pbmcgYnl0ZXMgb2YgYSBmcmFnbWVudGVkIGZyYW1lLCBhbmQgYHNrYi0mZ3Q7bGVuYCBpcyB0aGUgbGVuZ3RoIG9mIHRoZSAqY3VycmVudGx5KiByZWNlaXZlZCBgc2tiYC4gSWYgYGRldi0mZ3Q7cGFydGlhbF9yZW1gIGlzIGxhcmdlciB0aGFuIHdoYXQgd2UmIzM5O3ZlICpnb3QqIGluIGBza2JgLCB3ZSYjMzk7dmUgZ290IGEgcHJvYmxlbS4gV2l0aG91dCB0aGlzIGNoZWNrLCB0aGUgY29kZSB3b3VsZCB0cnkgdG8gY29weSBgZGV2LSZndDtwYXJ0aWFsX3JlbWAgYnl0ZXMgZnJvbSB0aGUgYHNrYmAgdG8gYHNrYjJgLiBUaGF0JiMzOTtzIGEgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgcmVhZCwgcGxhaW4gYW5kIHNpbXBsZS4gV2UgYXJlIHRyeWluZyB0byByZWFkIG1vcmUgZGF0YSB0aGFuIGV4aXN0cyBpbiB0aGUgYnVmZmVyLgoKTm93LCB0aGF0JiMzOTtzIGludGVyZXN0aW5nLiBJIGtub3cgS0FTQU4gKnNob3VsZCogY2F0Y2ggb3V0LW9mLWJvdW5kcyByZWFkcyBsaWtlIHRoaXMsIGJ1dCB0aGlzIGNoZWNrIGlzIGEgZ29vZCBpZGVhIG5vbmV0aGVsZXNzLiBJdCBwcmV2ZW50cyB0aGUgY3Jhc2guIFdoYXQgYWJvdXQgdW5pbml0aWFsaXplZCBtZW1vcnk/IE5vLCB0aGF0IGRvZXNuJiMzOTt0IHNlZW0gdG8gYmUgYSBmYWN0b3IgaGVyZS4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgY29kZSBhcm91bmQgYGN4ODIzMTBfcnhfZml4dXBgIHRvIGJlIGFic29sdXRlbHkgc3VyZS4gR290dGEgYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE5OjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2N4ODIzMTBfcnhfZml4dXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYz0yMjY9c3RhdGljIHZvaWQgY3g4MjMxMF91bmJpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yNDItICovXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoyNDM6c3RhdGljIGludCBjeDgyMzEwX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTI0NC17XG4tLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM9MzQxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm9cdGN4ODIzMTBfaW5mbyA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zNDUtXHQudW5iaW5kXHRcdD0gY3g4MjMxMF91bmJpbmQsXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzozNDY6XHQucnhfZml4dXBcdD0gY3g4MjMxMF9yeF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM0Ny1cdC50eF9maXh1cFx0PSBjeDgyMzEwX3R4X2ZpeHVwLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxOTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTk4CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0YWtlIG9uIGBjeDgyMzEwX3J4X2ZpeHVwYDoKCioqQW5hbHl6aW5nIGBjeDgyMzEwX3J4X2ZpeHVwYCoqCgpBbHJpZ2h0LCBJJiMzOTttIGdvaW5nIHRvIHRha2UgYSBsb29rIGF0IGBjeDgyMzEwX3J4X2ZpeHVwYC4gSW1tZWRpYXRlbHksIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7UlggZml4dXAmIzM0OyBpbXBsaWVzIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggcmVjZWl2ZSBwcm9jZXNzaW5nLCBwcm9iYWJseSBvbiBhbiBJbnRlbCBjaGlwc2V0LCBnaXZlbiB0aGUgbmFtaW5nIGNvbnZlbnRpb24uIE15IGltbWVkaWF0ZSBleHBlY3RhdGlvbiBpcyB0aGlzIGZ1bmN0aW9uIGlzIHRhc2tlZCB3aXRoIGhhbmRsaW5nIHNwZWNpZmljLCBwb3RlbnRpYWxseSBhbm9tYWxvdXMsIHJlY2VpdmUgcGFja2V0cyBmcm9tIHRoZSBDWDgyMzEwIGNoaXBzZXQsIGxpa2VseSBzb21lIGtpbmQgb2Ygc2lsaWNvbiBidWcgd29ya2Fyb3VuZCwgb3IgcG9zc2libHkgdG8gYWRqdXN0IGZvciBoYXJkd2FyZSBxdWlya3MuIFRoZSAmIzM0O2ZpeHVwJiMzNDsgc3VnZ2VzdHMgdGhpcyBpcyBub3QgdGhlIG5vcm1hbCBwYXRoLCB0aGVyZSBpcyBzb21ldGhpbmcgdW51c3VhbCwgb3IgYW4gZXJyb3IgY29uZGl0aW9uLCB0aGUgY29kZSBuZWVkcyB0byBhZGRyZXNzLiBXZSB3aWxsIGJlIGxvb2tpbmcgZm9yIHBhY2tldCB2YWxpZGF0aW9uLCBoZWFkZXIgYWRqdXN0bWVudHMsIG9yIG1heWJlIGV2ZW4gcGFja2V0IGRyb3BwaW5nIGlmIHRoZSBoYXJkd2FyZSBnaXZlcyB1cyBiYWQgZGF0YS4gVGhlIGdvYWwgd2lsbCBiZSB0byBlaXRoZXIgY29ycmVjdCB0aGUgZXJyYW50IGRhdGEgZm9yIHRoZSB1cHBlciBsYXllcnMgb2YgdGhlIG5ldHdvcmsgc3RhY2ssIG9yIHNhZmVseSBkaXNjYXJkIGl0IHRvIHByZXZlbnQgY29ycnVwdGlvbiBvciB1bmV4cGVjdGVkIGJlaGF2aW91ciwgYXMgd2VsbCBhcyBoYW5kbGUgYW55IGVycm9ycy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTk6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI0MywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI0MzpcdHN0YXRpYyBpbnQgY3g4MjMxMF9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4gMjQ0Olx0e1xuIDI0NTpcdFx0aW50IGxlbjtcbiAyNDY6XHRcdHN0cnVjdCBza19idWZmICpza2IyO1xuIDI0NzpcdFx0c3RydWN0IGN4ODIzMTBfcHJpdiAqcHJpdiA9IGRldi1cdTAwM2Vkcml2ZXJfcHJpdjtcbiAyNDg6XHRcbiAyNDk6XHRcdC8qXG4gMjUwOlx0XHQgKiBJZiB0aGUgbGFzdCBza2IgZW5kZWQgd2l0aCBhbiBpbmNvbXBsZXRlIHBhY2tldCwgdGhpcyBza2IgY29udGFpbnNcbiAyNTE6XHRcdCAqIGVuZCBvZiB0aGF0IHBhY2tldCBhdCB0aGUgYmVnaW5uaW5nLlxuIDI1MjpcdFx0ICovXG4gMjUzOlx0XHRpZiAoZGV2LVx1MDAzZXBhcnRpYWxfcmVtKSB7XG4gMjU0Olx0XHRcdGlmIChkZXYtXHUwMDNlcGFydGlhbF9yZW0gXHUwMDNlIHNrYi1cdTAwM2VsZW4pIHtcbiAyNTU6XHRcdFx0XHRuZXRkZXZfZXJyKGRldi1cdTAwM2VuZXQsXG4gMjU2Olx0XHRcdFx0XHQgICBcJiMzNDtSWCBwYXJ0aWFsIGZyYW1lOiBuZWVkICVsdSwgZ290ICV1XFxuXCYjMzQ7LFxuIDI1NzpcdFx0XHRcdFx0ICAgZGV2LVx1MDAzZXBhcnRpYWxfcmVtLCBza2ItXHUwMDNlbGVuKTtcbiAyNTg6XHRcdFx0XHRkZXYtXHUwMDNlcGFydGlhbF9yZW0gPSAwO1xuIDI1OTpcdFx0XHRcdHJldHVybiAwO1xuIDI2MDpcdFx0XHR9XG4gMjYxOlx0XHRcdGxlbiA9IGRldi1cdTAwM2VwYXJ0aWFsX2xlbiAmIzQzOyBkZXYtXHUwMDNlcGFydGlhbF9yZW07XG4gMjYyOlx0XHRcdHNrYjIgPSBhbGxvY19za2IobGVuLCBHRlBfQVRPTUlDKTtcbiAyNjM6XHRcdFx0aWYgKCFza2IyKVxuIDI2NDpcdFx0XHRcdHJldHVybiAwO1xuIDI2NTpcdFx0XHRza2JfcHV0KHNrYjIsIGxlbik7XG4gMjY2Olx0XHRcdG1lbWNweShza2IyLVx1MDAzZWRhdGEsICh2b2lkICopZGV2LVx1MDAzZXBhcnRpYWxfZGF0YSxcbiAyNjc6XHRcdFx0ICAgICAgIGRldi1cdTAwM2VwYXJ0aWFsX2xlbik7XG4gMjY4Olx0XHRcdG1lbWNweShza2IyLVx1MDAzZWRhdGEgJiM0MzsgZGV2LVx1MDAzZXBhcnRpYWxfbGVuLCBza2ItXHUwMDNlZGF0YSxcbiAyNjk6XHRcdFx0ICAgICAgIGRldi1cdTAwM2VwYXJ0aWFsX3JlbSk7XG4gMjcwOlx0XHRcdHVzYm5ldF9za2JfcmV0dXJuKGRldiwgc2tiMik7XG4gMjcxOlx0XHRcdHNrYl9wdWxsKHNrYiwgKGRldi1cdTAwM2VwYXJ0aWFsX3JlbSAmIzQzOyAxKSBcdTAwMjYgfjEpO1xuIDI3MjpcdFx0XHRkZXYtXHUwMDNlcGFydGlhbF9yZW0gPSAwO1xuIDI3MzpcdFx0XHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2MgMilcbiAyNzQ6XHRcdFx0XHRyZXR1cm4gMTtcbiAyNzU6XHRcdH1cbiAyNzY6XHRcbiAyNzc6XHRcdC8qIGEgc2tiIGNhbiBjb250YWluIG11bHRpcGxlIHBhY2tldHMgKi9cbiAyNzg6XHRcdHdoaWxlIChza2ItXHUwMDNlbGVuIFx1MDAzZSAxKSB7XG4gMjc5Olx0XHRcdC8qIGZpcnN0IHR3byBieXRlcyBhcmUgcGFja2V0IGxlbmd0aCAqL1xuIDI4MDpcdFx0XHRsZW4gPSBza2ItXHUwMDNlZGF0YVswXSB8IChza2ItXHUwMDNlZGF0YVsxXSBcdTAwM2NcdTAwM2MgOCk7XG4gMjgxOlx0XHRcdHNrYl9wdWxsKHNrYiwgMik7XG4gMjgyOlx0XG4gMjgzOlx0XHRcdC8qIGlmIGxhc3QgcGFja2V0IGluIHRoZSBza2IsIGxldCB1c2JuZXQgdG8gcHJvY2VzcyBpdCAqL1xuIDI4NDpcdFx0XHRpZiAobGVuID09IHNrYi1cdTAwM2VsZW4gfHwgbGVuICYjNDM7IDEgPT0gc2tiLVx1MDAzZWxlbikge1xuIDI4NTpcdFx0XHRcdHNrYl90cmltKHNrYiwgbGVuKTtcbiAyODY6XHRcdFx0XHRicmVhaztcbiAyODc6XHRcdFx0fVxuIDI4ODpcdFxuIDI4OTpcdFx0XHRpZiAobGVuID09IDB4ZmZmZikge1xuIDI5MDpcdFx0XHRcdG5ldGRldl9pbmZvKGRldi1cdTAwM2VuZXQsIFwmIzM0O3JvdXRlciB3YXMgcmVib290ZWQsIHJlLWVuYWJsaW5nIGV0aGVybmV0IG1vZGVcJiMzNDspO1xuIDI5MTpcdFx0XHRcdHNjaGVkdWxlX3dvcmsoXHUwMDI2cHJpdi1cdTAwM2VyZWVuYWJsZV93b3JrKTtcbiAyOTI6XHRcdFx0fSBlbHNlIGlmIChsZW4gXHUwMDNlIENYODIzMTBfTVRVKSB7XG4gMjkzOlx0XHRcdFx0bmV0ZGV2X2VycihkZXYtXHUwMDNlbmV0LCBcJiMzNDtSWCBwYWNrZXQgdG9vIGxvbmc6ICVkIEJcXG5cJiMzNDssIGxlbik7XG4gMjk0Olx0XHRcdFx0cmV0dXJuIDA7XG4gMjk1Olx0XHRcdH1cbiAyOTY6XHRcbiAyOTc6XHRcdFx0LyogaW5jb21wbGV0ZSBwYWNrZXQsIHNhdmUgaXQgZm9yIHRoZSBuZXh0IHNrYiAqL1xuIDI5ODpcdFx0XHRpZiAobGVuIFx1MDAzZSBza2ItXHUwMDNlbGVuKSB7XG4gMjk5Olx0XHRcdFx0ZGV2LVx1MDAzZXBhcnRpYWxfbGVuID0gc2tiLVx1MDAzZWxlbjtcbiAzMDA6XHRcdFx0XHRkZXYtXHUwMDNlcGFydGlhbF9yZW0gPSBsZW4gLSBza2ItXHUwMDNlbGVuO1xuIDMwMTpcdFx0XHRcdG1lbWNweSgodm9pZCAqKWRldi1cdTAwM2VwYXJ0aWFsX2RhdGEsIHNrYi1cdTAwM2VkYXRhLFxuIDMwMjpcdFx0XHRcdCAgICAgICBkZXYtXHUwMDNlcGFydGlhbF9sZW4pO1xuIDMwMzpcdFx0XHRcdHNrYl9wdWxsKHNrYiwgc2tiLVx1MDAzZWxlbik7XG4gMzA0Olx0XHRcdFx0YnJlYWs7XG4gMzA1Olx0XHRcdH1cbiAzMDY6XHRcbiAzMDc6XHRcdFx0c2tiMiA9IGFsbG9jX3NrYihsZW4sIEdGUF9BVE9NSUMpO1xuIDMwODpcdFx0XHRpZiAoIXNrYjIpXG4gMzA5Olx0XHRcdFx0cmV0dXJuIDA7XG4gMzEwOlx0XHRcdHNrYl9wdXQoc2tiMiwgbGVuKTtcbiAzMTE6XHRcdFx0bWVtY3B5KHNrYjItXHUwMDNlZGF0YSwgc2tiLVx1MDAzZWRhdGEsIGxlbik7XG4gMzEyOlx0XHRcdC8qIHByb2Nlc3MgdGhlIHBhY2tldCAqL1xuIDMxMzpcdFx0XHR1c2JuZXRfc2tiX3JldHVybihkZXYsIHNrYjIpO1xuIDMxNDpcdFxuIDMxNTpcdFx0XHRza2JfcHVsbChza2IsIChsZW4gJiM0MzsgMSkgXHUwMDI2IH4xKTtcbiAzMTY6XHRcdH1cbiAzMTc6XHRcbiAzMTg6XHRcdC8qIGxldCB1c2JuZXQgcHJvY2VzcyB0aGUgbGFzdCBwYWNrZXQgKi9cbiAzMTk6XHRcdHJldHVybiAxO1xuIDMyMDpcdH1cbiAzMjE6XHRcbiAzMjI6XHQvKiBUWCBpcyBlYXN5LCBqdXN0IGFkZCAyIGJ5dGVzIG9mIGxlbmd0aCBhdCB0aGUgYmVnaW5uaW5nICovXG4gMzIzOlx0c3RhdGljIHN0cnVjdCBza19idWZmICpjeDgyMzEwX3R4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiAzMjQ6XHRcdFx0XHRcdCAgICAgICBnZnBfdCBmbGFncylcbiAzMjU6XHR7XG4gMzI2Olx0XHRpbnQgbGVuID0gc2tiLVx1MDAzZWxlbjtcbiAzMjc6XHRcbiAzMjg6XHRcdGlmIChza2JfY293X2hlYWQoc2tiLCAyKSkge1xuIDMyOTpcdFx0XHRkZXZfa2ZyZWVfc2tiX2FueShza2IpO1xuIDMzMDpcdFx0XHRyZXR1cm4gTlVMTDtcbiAzMzE6XHRcdH1cbiAzMzI6XHRcdHNrYl9wdXNoKHNrYiwgMik7XG4gMzMzOlx0XG4gMzM0Olx0XHRza2ItXHUwMDNlZGF0YVswXSA9IGxlbjtcbiAzMzU6XHRcdHNrYi1cdTAwM2VkYXRhWzFdID0gbGVuIFx1MDAzZVx1MDAzZSA4O1xuIDMzNjpcdFxuIDMzNzpcdFx0cmV0dXJuIHNrYjtcbiAzMzg6XHR9XG4gMzM5Olx0XG4gMzQwOlx0XG4gMzQxOlx0c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mb1x0Y3g4MjMxMF9pbmZvID0ge1xuIDM0MjpcdFx0LmRlc2NyaXB0aW9uXHQ9IFwmIzM0O0NvbmV4YW50IENYODIzMTAgVVNCIGV0aGVybmV0XCYjMzQ7LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxOTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDg2CgkJCQkJCQlvdXRwdXQ6IDEzOAoJCQkJCQkJdGhvdWdodHM6IDkwNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1lbW9yeSBTYWZldHkgb2YgdGhlIGN4ODIzMTBfcnhfZml4dXAgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhlIHBhdGNoIGludHJvZHVjZXMgYSBjaGVjazogYGlmIChkZXYtJmd0O3BhcnRpYWxfcmVtICZndDsgc2tiLSZndDtsZW4pYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O0FoLCB0aGF0IGxvb2tzIGxpa2UgYSBwb3RlbnRpYWwgYnVmZmVyIG92ZXJmbG93IGZpeC4mIzM0OyBBbmQgaXQgaXMuIEVzc2VudGlhbGx5LCB3aXRob3V0IHRoZSBwYXRjaCwgdGhlIGNvZGUgd291bGQgYmUgYXR0ZW1wdGluZyBhIGBtZW1jcHlgIGZyb20gYHNrYi0mZ3Q7ZGF0YWAgd2hlcmUgdGhlIHNvdXJjZSBzaXplIChgZGV2LSZndDtwYXJ0aWFsX3JlbWApIGV4Y2VlZHMgdGhlIGFsbG9jYXRlZCBzaXplIG9mIHRoZSBzb3VyY2UgYnVmZmVyIChgc2tiLSZndDtsZW5gKS4gVGhhdCYjMzk7cyBhIHRleHRib29rIG91dC1vZi1ib3VuZHMgcmVhZC4KCk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgd2FycmFudHMgS01TQU4gKEtlcm5lbCBNZW1vcnkgU2FuaXRpemVyKS4gTXkgaW1tZWRpYXRlIGludHVpdGlvbiBpcyBuby4gS0FTQU4gKEtlcm5lbCBBZGRyZXNzIFNhbml0aXplcikgaXMgKmRlc2lnbmVkKiB0byBjYXRjaCB0aGVzZSBvdXQtb2YtYm91bmRzIGhlYXAgcmVhZHMuIGBza2ItJmd0O2RhdGFgIGlzIGhlYXAtYWxsb2NhdGVkIHVzaW5nIGBrbWFsbG9jYCBvciBlcXVpdmFsZW50LCBzbyBLQVNBTiB3aWxsIGZsYWcgdGhlIGlsbGVnYWwgcmVhZCBkdXJpbmcgdGhlIGBtZW1jcHlgLiBUaGUga2V5IGlzIHRoYXQgd2UgYXJlIHJlYWRpbmcgKm91dC1vZi1ib3VuZHMgbWVtb3J5Kiwgbm90ICp1bmluaXRpYWxpemVkKiBtZW1vcnkuIFdoaWxlIEtNU0FOICpjYW4qIHNvbWV0aW1lcyBjYXRjaCBPT0IgcmVhZHMsIEtBU0FOIGlzIHRoZSBwcmltYXJ5IGFuZCBzdWZmaWNpZW50IHRvb2wgaGVyZS4KClRoaXMgb3V0LW9mLWJvdW5kcyByZWFkIGlzIHRoZW4gcGFzc2VkIHRvIGB1c2JuZXRfc2tiX3JldHVybmAsIHVsdGltYXRlbHkgc2VuZGluZyB0aGUgcGFja2V0IHVwIHRoZSBzdGFjay4gQ291bGQgdGhpcyBiZSBhbiBpbmZvcm1hdGlvbiBsZWFrPyBQb3RlbnRpYWxseSwgdGhlIG91dC1vZi1ib3VuZHMgZGF0YSBjb3VsZCBiZSBrZXJuZWwgaGVhcCBtZW1vcnkgYW5kIGluY2x1ZGVkIGluIGEgcGFja2V0LiBZZXMsIHRlY2huaWNhbGx5IGl0ICppcyogYW4gaW5mby1sZWFrLCBpZiB0aGUgT09CIHJlYWQgaXMgZnJvbSBzb21lIHNlbnNpdGl2ZSBhcmVhIG9mIG1lbW9yeS4gSG93ZXZlciwgdGhlIEtBU0FOIGNoZWNrIGlzIHdoYXQgbWF0dGVycyBoZXJlLCBhcyBpdCBjYXRjaGVzIHRoZSB2dWxuZXJhYmlsaXR5LgoKTGV0JiMzOTtzIGRvdWJsZS1jaGVjayBhYm91dCB1bmluaXRpYWxpemVkIG1lbW9yeS4gYHNrYjJgIGlzIGFsbG9jYXRlZCBhbmQgYHNrYl9wdXRgIGlzIGNhbGxlZCBiZWZvcmUgYW55IGBtZW1jcHlgLiBUaGVuIHdlJiMzOTt2ZSBnb3QgdGhlIGBtZW1jcHlgIG9wZXJhdGlvbnMuIFRoZSBjcml0aWNhbCBvbmUgaXMgYG1lbWNweShza2IyLSZndDtkYXRhICYjNDM7IGRldi0mZ3Q7cGFydGlhbF9sZW4sIHNrYi0mZ3Q7ZGF0YSwgZGV2LSZndDtwYXJ0aWFsX3JlbSk7YC4gSWYgYGRldi0mZ3Q7cGFydGlhbF9yZW0gJmd0OyBza2ItJmd0O2xlbmAsIHRoaXMgcmVhZHMgb3V0IG9mIGJvdW5kcyBmcm9tIGBza2ItJmd0O2RhdGFgLiBObyB1bmluaXRpYWxpemVkIGRhdGEgaW52b2x2ZWQuIFRoZSBPT0IgaXMgdGhlIHByb2JsZW0sIG5vdCB0aGUgKmluaXRpYWxpemF0aW9uKiBvZiB0aGUgc291cmNlIGRhdGEuCgpUaGVyZWZvcmUsIGJlY2F1c2UgS0FTQU4gcmVsaWFibHkgZGV0ZWN0cyB0aGlzIG91dC1vZi1ib3VuZHMgcmVhZCwgSSYjMzk7bSBjb25maWRlbnQgaW4gc2V0dGluZyBgTmVlZHNLTVNBTj1mYWxzZWAuIFRoZSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiB0aGUgcGF0Y2ggYWRkcmVzc2VzIGFuIG91dC1vZi1ib3VuZHMgaGVhcCByZWFkIGZyb20gYHNrYi0mZ3Q7ZGF0YWAsIGEgYnVnIGNhdWdodCBieSBLQVNBTi4gV2UgYXJlIG5vdCBkZWFsaW5nIHdpdGggYSBsZWFrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCB3aGljaCBpcyB0aGUgZG9tYWluIG9mIEtNU0FOLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxOTo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgZnJvbSBgc2tiLVx1MDAzZWRhdGFgIGluIGBjeDgyMzEwX3J4X2ZpeHVwYC4gV2hlbiBgZGV2LVx1MDAzZXBhcnRpYWxfcmVtYCBpcyBsYXJnZXIgdGhhbiBgc2tiLVx1MDAzZWxlbmAsIHRoZSBzdWJzZXF1ZW50IGBtZW1jcHlgIG9wZXJhdGlvbiByZWFkcyBwYXN0IHRoZSBlbmQgb2YgdGhlIGBza2ItXHUwMDNlZGF0YWAgYnVmZmVyLiBUaGlzIGlzIGEgY2xhc3NpYyBoZWFwIG91dC1vZi1ib3VuZHMgcmVhZCBidWcsIHdoaWNoIGlzIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZSBpcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWsgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgaW52b2x2ZWQgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGZyb20gYHNrYi1cdTAwM2VkYXRhYCBpbiBgY3g4MjMxMF9yeF9maXh1cGAuIFdoZW4gYGRldi1cdTAwM2VwYXJ0aWFsX3JlbWAgaXMgbGFyZ2VyIHRoYW4gYHNrYi1cdTAwM2VsZW5gLCB0aGUgc3Vic2VxdWVudCBgbWVtY3B5YCBvcGVyYXRpb24gcmVhZHMgcGFzdCB0aGUgZW5kIG9mIHRoZSBgc2tiLVx1MDAzZWRhdGFgIGJ1ZmZlci4gVGhpcyBpcyBhIGNsYXNzaWMgaGVhcCBvdXQtb2YtYm91bmRzIHJlYWQgYnVnLCB3aGljaCBpcyByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlcmUgaXMgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGludm9sdmVkIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTk6NDM6MTUuOTUxMTk0MTU1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY2MDk0MTUwNzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVTQl9ORVRfRFJJVkVSU1wiLFxuICAgIFwiVVNCX1VTQk5FVFwiLFxuICAgIFwiVVNCX05FVF9DWDgyMzEwX0VUSFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImN4ODIzMTBfcnhfZml4dXBcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBmcm9tIGBza2ItXFx1MDAzZWRhdGFgIGluIGBjeDgyMzEwX3J4X2ZpeHVwYC4gV2hlbiBgZGV2LVxcdTAwM2VwYXJ0aWFsX3JlbWAgaXMgbGFyZ2VyIHRoYW4gYHNrYi1cXHUwMDNlbGVuYCwgdGhlIHN1YnNlcXVlbnQgYG1lbWNweWAgb3BlcmF0aW9uIHJlYWRzIHBhc3QgdGhlIGVuZCBvZiB0aGUgYHNrYi1cXHUwMDNlZGF0YWAgYnVmZmVyLiBUaGlzIGlzIGEgY2xhc3NpYyBoZWFwIG91dC1vZi1ib3VuZHMgcmVhZCBidWcsIHdoaWNoIGlzIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZSBpcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWsgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgaW52b2x2ZWQgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgaW4gY3g4MjMxMF9yeF9maXh1cCB0byBwcmV2ZW50IHByb2Nlc3Npbmcgd2hlbiBkZXYtXFx1MDAzZXBhcnRpYWxfcmVtIFxcdTAwM2Ugc2tiLVxcdTAwM2VsZW4uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgVVNCIG5ldHdvcmsgZHJpdmVyJ3MgUlggcGF0aCwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBVU0IgZW11bGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxOTo0MzoxNS45NTEyMDAxNzVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NDEzNDE3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGRjMjViODgwOTIzNzkxYTc4OTQ0YmZiYzNkYWQzNDFjNTc0YWJhYjJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBBdWcgMTQgMTk6NDM6MTQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMgYi9kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguY1xcbmluZGV4IDA2OGFjYjA1MmFkYjAuLjhjYTZiNzVmZGQyMGYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmNcXG4rKysgYi9kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguY1xcbkBAIC0yNTEsNiArMjUxLDEzIEBAIHN0YXRpYyBpbnQgY3g4MjMxMF9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdCAqIGVuZCBvZiB0aGF0IHBhY2tldCBhdCB0aGUgYmVnaW5uaW5nLlxcbiBcXHQgKi9cXG4gXFx0aWYgKGRldi1cXHUwMDNlcGFydGlhbF9yZW0pIHtcXG4rXFx0XFx0aWYgKGRldi1cXHUwMDNlcGFydGlhbF9yZW0gXFx1MDAzZSBza2ItXFx1MDAzZWxlbikge1xcbitcXHRcXHRcXHRuZXRkZXZfZXJyKGRldi1cXHUwMDNlbmV0LFxcbitcXHRcXHRcXHRcXHQgICBcXFwiUlggcGFydGlhbCBmcmFtZTogbmVlZCAlbHUsIGdvdCAldVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0ICAgZGV2LVxcdTAwM2VwYXJ0aWFsX3JlbSwgc2tiLVxcdTAwM2VsZW4pO1xcbitcXHRcXHRcXHRkZXYtXFx1MDAzZXBhcnRpYWxfcmVtID0gMDtcXG4rXFx0XFx0XFx0cmV0dXJuIDA7XFxuK1xcdFxcdH1cXG4gXFx0XFx0bGVuID0gZGV2LVxcdTAwM2VwYXJ0aWFsX2xlbiArIGRldi1cXHUwMDNlcGFydGlhbF9yZW07XFxuIFxcdFxcdHNrYjIgPSBhbGxvY19za2IobGVuLCBHRlBfQVRPTUlDKTtcXG4gXFx0XFx0aWYgKCFza2IyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxOTo0MzoxNi40MzU5NTg5NTNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxNDQyMDA3Mjc0MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCX05FVF9EUklWRVJTXCIsXG4gICAgXCJVU0JfVVNCTkVUXCIsXG4gICAgXCJVU0JfTkVUX0NYODIzMTBfRVRIXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY3g4MjMxMF9yeF9maXh1cFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgaW4gY3g4MjMxMF9yeF9maXh1cCB0byBwcmV2ZW50IHByb2Nlc3Npbmcgd2hlbiBkZXYtXFx1MDAzZXBhcnRpYWxfcmVtIFxcdTAwM2Ugc2tiLVxcdTAwM2VsZW4uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgVVNCIG5ldHdvcmsgZHJpdmVyJ3MgUlggcGF0aCwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBVU0IgZW11bGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkYzI1Yjg4MDkyMzc5MWE3ODk0NGJmYmMzZGFkMzQxYzU3NGFiYWIyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMTQgMTk6NDM6MTQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYyBiL2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jXG5pbmRleCAwNjhhY2IwNTJhZGIwLi44Y2E2Yjc1ZmRkMjBmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmNcbisrKyBiL2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jXG5AQCAtMjUxLDYgKzI1MSwxMyBAQCBzdGF0aWMgaW50IGN4ODIzMTBfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0ICogZW5kIG9mIHRoYXQgcGFja2V0IGF0IHRoZSBiZWdpbm5pbmcuXG4gXHQgKi9cbiBcdGlmIChkZXYtXHUwMDNlcGFydGlhbF9yZW0pIHtcbitcdFx0aWYgKGRldi1cdTAwM2VwYXJ0aWFsX3JlbSBcdTAwM2Ugc2tiLVx1MDAzZWxlbikge1xuK1x0XHRcdG5ldGRldl9lcnIoZGV2LVx1MDAzZW5ldCxcbitcdFx0XHRcdCAgIFwiUlggcGFydGlhbCBmcmFtZTogbmVlZCAlbHUsIGdvdCAldVxcblwiLFxuK1x0XHRcdFx0ICAgZGV2LVx1MDAzZXBhcnRpYWxfcmVtLCBza2ItXHUwMDNlbGVuKTtcbitcdFx0XHRkZXYtXHUwMDNlcGFydGlhbF9yZW0gPSAwO1xuK1x0XHRcdHJldHVybiAwO1xuK1x0XHR9XG4gXHRcdGxlbiA9IGRldi1cdTAwM2VwYXJ0aWFsX2xlbiArIGRldi1cdTAwM2VwYXJ0aWFsX3JlbTtcbiBcdFx0c2tiMiA9IGFsbG9jX3NrYihsZW4sIEdGUF9BVE9NSUMpO1xuIFx0XHRpZiAoIXNrYjIpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxOTo0MzoxNi40MzU5NjM3OTNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDgwNjIwOTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFVTQiBFdGhlcm5ldCBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIGZvciB0aGUgYGN4ODIzMTBfZXRoLmNgIGZpbGUgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvdXNiL2AgZGlyZWN0b3J5LiBTZWVtcyBsaWtlIHRoZXJlJ3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbnRyb2R1Y2VkIGluIGBjeDgyMzEwX3J4X2ZpeHVwYC4gU3BlY2lmaWNhbGx5LCBhIGNoZWNrIGhhcyBiZWVuIGFkZGVkOlxuXG5gYGBjXG5cdGlmIChkZXYtXHUwMDNlcGFydGlhbF9yZW0pIHtcbitcdFx0aWYgKGRldi1cdTAwM2VwYXJ0aWFsX3JlbSBcdTAwM2Ugc2tiLVx1MDAzZWxlbikge1xuK1x0XHRcdG5ldGRldl9lcnIoZGV2LVx1MDAzZW5ldCxcbitcdFx0XHRcdCAgIFwiUlggcGFydGlhbCBmcmFtZTogbmVlZCAlbHUsIGdvdCAldVxcblwiLFxuK1x0XHRcdFx0ICAgZGV2LVx1MDAzZXBhcnRpYWxfcmVtLCBza2ItXHUwMDNlbGVuKTtcbitcdFx0XHRkZXYtXHUwMDNlcGFydGlhbF9yZW0gPSAwO1xuK1x0XHRcdHJldHVybiAwO1xuK1x0XHR9XG5gYGBcblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBsaWtlbHkgYSBnb29kIHRoaW5nLiBUaGUgY29kZSdzIHByZXZlbnRpbmcgYSBwb3RlbnRpYWwgaXNzdWUgd2hlcmUgYGRldi1cdTAwM2VwYXJ0aWFsX3JlbWAgKHdoaWNoIEkgYXNzdW1lIHJlbGF0ZXMgdG8gYSBwYXJ0aWFsbHkgcmVjZWl2ZWQgZnJhbWUpIGlzIGxhcmdlciB0aGFuIHRoZSBhY3R1YWwgYHNrYi1cdTAwM2VsZW5gLiBUaGlzIGNvdWxkIGxlYWQgdG8gYSByZWFkIHBhc3QgdGhlIGVuZCBvZiB0aGUgcGFja2V0IGJ1ZmZlciwgd2hpY2ggaXMgcHJlY2lzZWx5IHRoZSBraW5kIG9mIG1lbW9yeSBzYWZldHkgcHJvYmxlbSB3ZSB3YW50IHRvIGF2b2lkLiBUaGUgYWRkaXRpb24gaXMgY2xlYXJseSBhIHByb2FjdGl2ZSBtZWFzdXJlLCBzYWZlZ3VhcmRpbmcgYWdhaW5zdCBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIG90aGVyIHNpbWlsYXIgdnVsbmVyYWJpbGl0aWVzLiBOb3csIGxldCdzIGp1c3QgbWFrZSBzdXJlIHRoZSBjb25maWd1cmF0aW9uIGlzIHNldCBmb3IgdGhlIGBjeDgyMzEwX2V0aGAgZHJpdmVyLiBXZSBuZWVkIHRvIGNvbmZpcm0gdGhpcyBwYXRjaCBpcyBldmVuIGluIGVmZmVjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA5MCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE5OjQzOjIwLjkxNjU4NzQ3M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDg1MjUzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjeDgyMzEwX2V0aFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC91c2IvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZT0zNT1vYmotJChDT05GSUdfVVNCX1NJRVJSQV9ORVQpXFx0Kz0gc2llcnJhX25ldC5vXFxuZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlOjM2Om9iai0kKENPTkZJR19VU0JfTkVUX0NYODIzMTBfRVRIKVxcdCs9IGN4ODIzMTBfZXRoLm9cXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGUtMzctb2JqLSQoQ09ORklHX1VTQl9ORVRfQ0RDX05DTSlcXHQrPSBjZGNfbmNtLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jPTM2OD1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgY3g4MjMxMF9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MzY5OlxcdC5uYW1lXFx0XFx0PSBcXFwiY3g4MjMxMF9ldGhcXFwiLFxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM3MC1cXHQuaWRfdGFibGVcXHQ9IHByb2R1Y3RzLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxOTo0MzoyMC45Njc0NDQ4NjhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDgzODYzMDY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgVVNCIE5ldHdvcmsgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIEknbSBsb29raW5nIGF0IGlzIGBVU0JfTkVUX0NYODIzMTBfRVRIYC4gUmlnaHQsIHRoYXQgcmluZ3MgYSBiZWxsLiBUaW1lIHRvIGRpZyBpbnRvIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGUgdG8gc2VlIHRoZSBmaW5lIGRldGFpbHMgb2Ygd2hhdCB0aGlzIHNwZWNpZmljYWxseSBlbmFibGVzLiBUaGUgbGlrZWx5IGxvY2F0aW9uIGlzIGBkcml2ZXJzL25ldC91c2IvS2NvbmZpZ2AuIExldCdzIGNvbmZpcm0gdGhlIGRlZmluaXRpb24gYW5kIGFueSBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24gYW5kIHdoYXQgaXRzIGltcGxpY2F0aW9ucyBhcmUsIHNvIGEgdGhvcm91Z2ggcmV2aWV3IG9mIHRoZSBLY29uZmlnIGlzIGluIG9yZGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODg5LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTk6NDM6MjQuMDUxMzEwOTI3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0OTk3MTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfTkVUX0NYODIzMTBfRVRIXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTQ5ND1jb25maWcgVVNCX05FVF9aQVVSVVNcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTUxMS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo1MTI6Y29uZmlnIFVTQl9ORVRfQ1g4MjMxMF9FVEhcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy01MTMtXFx0dHJpc3RhdGUgXFxcIkNvbmV4YW50IENYODIzMTAgVVNCIGV0aGVybmV0IHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE5OjQzOjI0LjA5NjMxMjE5MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NjYxOTk3MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHJlYWRpbmcgYW5kIHByb2Nlc3NpbmcgdGhlIHByb3ZpZGVkIHRleHQ6XG5cbioqRGl2aW5nIGludG8gVVNCIE5ldHdvcmtpbmcgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJ20gZ29pbmcgdG8gcHVsbCB1cCBgZHJpdmVycy9uZXQvdXNiL0tjb25maWdgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgNTEyLiBNeSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIFVTQiBuZXR3b3JraW5nIGRldmljZXMuIEknbSBwcm9iYWJseSBsb29raW5nIGF0IHRoZSBkZXBlbmRlbmNpZXMsIGRlc2NyaXB0aW9ucywgYW5kIGRlZmF1bHRzIGZvciBkaWZmZXJlbnQgVVNCIG5ldHdvcmsgZHJpdmVycy4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCdzIGNvbnRyb2xsZWQgdGhyb3VnaCB0aGlzIEtjb25maWcgZmlsZSwgaG93IG1vZHVsZXMgYXJlIGVuYWJsZWQgb3IgZGlzYWJsZWQsIGFuZCB3aGF0IGNvbmRpdGlvbnMgdHJpZ2dlciB0aG9zZSBjaG9pY2VzLiBJJ20gbGlrZWx5IGludGVyZXN0ZWQgaW4gYSBzcGVjaWZpYyBkZXZpY2Ugb3IgaW50ZXJmYWNlLCBzbyBJJ2xsIGJlIGZpbHRlcmluZyBteSBwZXJ1c2FsIHdpdGggYSBwYXJ0aWN1bGFyIG1vZHVsZSBpbiBtaW5kLiBJIG5lZWQgdG8gc2VlIGhvdyB0aGVzZSBzZXR0aW5ncyBhcmUgc3RydWN0dXJlZCB3aXRoaW4gdGhlIGxhcmdlciBuZXR3b3JraW5nIGNvbmZpZ3VyYXRpb24gc3BhY2Ugd2l0aGluIHRoZSBrZXJuZWwuIFRoZSBnb2FsIGlzIHRvIGZ1bGx5IHVuZGVyc3RhbmQgaG93IGRyaXZlcnMgYXJlIGVuYWJsZWQvZGlzYWJsZWQgd2l0aGluIHRoZSBidWlsZCBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTk3LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTk6NDM6MjcuNzYyNTE0MzU5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI1NjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUwMCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDUwMDpcXHRcXHRoZWxwXFxuIDUwMTpcXHRcXHQgIENob29zZSB0aGlzIG9wdGlvbiB0byBzdXBwb3J0IHRoZSB1c2IgbmV0d29ya2luZyBsaW5rcyB1c2VkIGJ5XFxuIDUwMjpcXHRcXHQgIFphdXJ1cyBtb2RlbHMgbGlrZSB0aGUgU0wtNTAwMEQsIFNMLTU1MDAsIFNMLTU2MDAsIEEtMzAwLCBCLTUwMC5cXG4gNTAzOlxcdFxcdCAgVGhpcyBhbHNvIHN1cHBvcnRzIHNvbWUgcmVsYXRlZCBkZXZpY2UgZmlybXdhcmUsIGFzIHVzZWQgaW4gc29tZVxcbiA1MDQ6XFx0XFx0ICBQREFzIGZyb20gT2x5bXB1cyBhbmQgc29tZSBjZWxsIHBob25lcyBmcm9tIE1vdG9yb2xhLlxcbiA1MDU6XFx0XFxuIDUwNjpcXHRcXHQgIElmIHlvdSBpbnN0YWxsIGFuIGFsdGVybmF0ZSBpbWFnZSwgc3VjaCBhcyB0aGUgTGludXggMi42IGJhc2VkXFxuIDUwNzpcXHRcXHQgIHZlcnNpb25zIG9mIE9wZW5aYXVydXMsIHlvdSBzaG91bGQgbm8gbG9uZ2VyIG5lZWQgdG8gc3VwcG9ydCB0aGlzXFxuIDUwODpcXHRcXHQgIHByb3RvY29sLiAgT25seSB0aGUgXFxcImV0aC1mZFxcXCIgb3IgXFxcIm5ldF9mZFxcXCIgZHJpdmVycyBpbiB0aGVzZSBkZXZpY2VzXFxuIDUwOTpcXHRcXHQgIHJlYWxseSBuZWVkIHRoaXMgbm9uLWNvbmZvcm1hbnQgdmFyaWFudCBvZiBDREMgRXRoZXJuZXQgKG9yIGluXFxuIDUxMDpcXHRcXHQgIHNvbWUgY2FzZXMgQ0RDIE1ETE0pIHByb3RvY29sLCBub3QgXFxcImdfZXRoZXJcXFwiLlxcbiA1MTE6XFx0XFxuIDUxMjpcXHRjb25maWcgVVNCX05FVF9DWDgyMzEwX0VUSFxcbiA1MTM6XFx0XFx0dHJpc3RhdGUgXFxcIkNvbmV4YW50IENYODIzMTAgVVNCIGV0aGVybmV0IHBvcnRcXFwiXFxuIDUxNDpcXHRcXHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcXG4gNTE1OlxcdFxcdGhlbHBcXG4gNTE2OlxcdFxcdCAgQ2hvb3NlIHRoaXMgb3B0aW9uIGlmIHlvdSdyZSB1c2luZyBhIENvbmV4YW50IENYODIzMTAtYmFzZWQgQURTTFxcbiA1MTc6XFx0XFx0ICByb3V0ZXIgd2l0aCBVU0IgZXRoZXJuZXQgcG9ydC4gVGhpcyBkcml2ZXIgaXMgZm9yIHJvdXRlcnMgb25seSxcXG4gNTE4OlxcdFxcdCAgaXQgd2lsbCBub3Qgd29yayB3aXRoIEFEU0wgbW9kZW1zICh1c2UgY3hhY3J1IGRyaXZlciBpbnN0ZWFkKS5cXG4gNTE5OlxcdFxcbiA1MjA6XFx0Y29uZmlnIFVTQl9ORVRfS0FMTUlBXFxuIDUyMTpcXHRcXHR0cmlzdGF0ZSBcXFwiU2Ftc3VuZyBLYWxtaWEgYmFzZWQgTFRFIFVTQiBtb2RlbVxcXCJcXG4gNTIyOlxcdFxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbiA1MjM6XFx0XFx0aGVscFxcbiA1MjQ6XFx0XFx0ICBDaG9vc2UgdGhpcyBvcHRpb24gaWYgeW91IGhhdmUgYSBTYW1zdW5nIEthbG1pYSBiYXNlZCBVU0IgbW9kZW1cXG4gNTI1OlxcdFxcdCAgYXMgU2Ftc3VuZyBHVC1CMzczMC5cXG4gNTI2OlxcdFxcbiA1Mjc6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4gNTI4OlxcdFxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGthbG1pYS5cXG4gNTI5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxOTo0MzoyNy43NjI2NDE1NDlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Njc2MTY1Mjc5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSBmYW1pbGlhciB3aXRoIGVtYmVkZGVkIHN5c3RlbXMgYW5kIG5ldHdvcmtpbmc6XG5cbioqRXhhbWluaW5nIHRoZSBVU0IgTmV0d29yayBDb25maWd1cmF0aW9uIERlcGVuZGVuY3kqKlxuXG5SaWdodCwgc28gYFVTQl9ORVRfQ1g4MjMxMF9FVEhgIGlzIGRlcGVuZGVudCBvbiBgVVNCX1VTQk5FVGAuIE9rYXksIHRoYXQgbWFrZXMgc2Vuc2UuIEkgbmVlZCB0byBlbnN1cmUgdGhlIGJhc2UgVVNCIG5ldHdvcmtpbmcgc3VwcG9ydCBpcyBlbmFibGVkIGJlZm9yZSBJIGV2ZW4gYm90aGVyIGxvb2tpbmcgYXQgdGhlIHNwZWNpZmljIGRyaXZlciBmb3IgdGhlIENYODIzMTAgRXRoZXJuZXQgZGV2aWNlLiBMZXQncyBkaWcgaW50byBgVVNCX1VTQk5FVGAgYW5kIHNlZSB3aGF0IGl0IGVudGFpbHMuIEkga25vdyB3aGF0IHRoZSBDWDgyMzEwIGlzLCBpdCdzIGEgc3BlY2lmaWMsIHR5cGljYWxseSBvbGRlciwgVVNCIHRvIEV0aGVybmV0IGNoaXAuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGluZnJhc3RydWN0dXJlIGZvciBVU0IgbmV0d29yayBpbnRlcmZhY2VzIGlzIHByZXNlbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMDEsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE5OjQ0OjE0LjUyNDI5Njc5NFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzc0MzMzMTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfVVNCTkVUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTExMz1jb25maWcgVVNCX0xBTjc4WFhcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTEzMS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoxMzI6Y29uZmlnIFVTQl9VU0JORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMzMtXFx0dHJpc3RhdGUgXFxcIk11bHRpLXB1cnBvc2UgVVNCIE5ldHdvcmtpbmcgRnJhbWV3b3JrXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxOTo0NDoxNC44OTg2MzY0NTRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI2NjQ4NTEzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipFeGFtaW5pbmcgVVNCIE5ldHdvcmtpbmcgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGluLiBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGBkcml2ZXJzL25ldC91c2IvS2NvbmZpZ2AgZmlsZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDEzMi4gVGhhdCdzIGxpa2VseSB3aGVyZSB0aGUgY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBVU0IgbmV0d29ya2luZyBkcml2ZXJzIGFyZSBkZWZpbmVkLiBJJ20gcHJvYmFibHkgbG9va2luZyBmb3Igc29tZXRoaW5nIHNwZWNpZmljLCBhIGZlYXR1cmUgSSB3YW50IHRvIGVuYWJsZSwgZGlzYWJsZSwgb3IgcGVyaGFwcyB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgb2YuIFRoaXMgY291bGQgYmUgcmVsYXRlZCB0byBhIHNwZWNpZmljIFVTQiBuZXR3b3JrIGludGVyZmFjZSBjYXJkIChOSUMpLCBhIHBhcnRpY3VsYXIgZHJpdmVyIGZlYXR1cmUsIG9yIGEgZ2VuZXJhbCBxdWVzdGlvbiBvZiBob3cgdGhlIG1vZHVsZSBzZWxlY3Rpb24gd29ya3Mgd2l0aGluIHRoYXQgYXJlYS4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCB0aGF0IHNwZWNpZmljIEtjb25maWcgb3B0aW9uIGlzLCB3aGF0IGl0IGNvbnRyb2xzLCBhbmQgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggaXQncyBhdmFpbGFibGUuIEtub3dpbmcgdGhlIGNvbnRleHQgd2l0aGluIHRoZSBLY29uZmlnIGZpbGUgd2lsbCBjbGFyaWZ5IHRoZSBiaWdnZXIgcGljdHVyZS4gSSdtIGhvcGluZyB0byBnZXQgYSBxdWljayBncmFzcCBvZiB0aGlzIHBhcnRpY3VsYXIgb3B0aW9uIGJ5IHJlYWRpbmcgdGhlIHN1cnJvdW5kaW5nIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzMjQsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxOTo0NDoxOC4xNjUxMjM3MzRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvdXNiL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTI1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTI1OlxcdFxcdCAgTEFONzgwMSA6IFVTQiAzIHRvIDEwLzEwMC8xMDAwIEV0aGVybmV0IGFkYXB0ZXIgKE1BQyBvbmx5KVxcbiAxMjY6XFx0XFxuIDEyNzpcXHRcXHQgIFByb3BlciBQSFkgZHJpdmVyIGlzIHJlcXVpcmVkIGZvciBMQU43ODAxLlxcbiAxMjg6XFx0XFxuIDEyOTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAxMzA6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgbGFuNzh4eC5cXG4gMTMxOlxcdFxcbiAxMzI6XFx0Y29uZmlnIFVTQl9VU0JORVRcXG4gMTMzOlxcdFxcdHRyaXN0YXRlIFxcXCJNdWx0aS1wdXJwb3NlIFVTQiBOZXR3b3JraW5nIEZyYW1ld29ya1xcXCJcXG4gMTM0OlxcdFxcdHNlbGVjdCBNSUlcXG4gMTM1OlxcdFxcdGhlbHBcXG4gMTM2OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgc2V2ZXJhbCBraW5kcyBvZiBuZXR3b3JrIGxpbmtzIG92ZXIgVVNCLFxcbiAxMzc6XFx0XFx0ICB3aXRoIFxcXCJtaW5pZHJpdmVyc1xcXCIgYnVpbHQgYXJvdW5kIGEgY29tbW9uIG5ldHdvcmsgZHJpdmVyIGNvcmVcXG4gMTM4OlxcdFxcdCAgdGhhdCBzdXBwb3J0cyBkZWVwIHF1ZXVlcyBmb3IgZWZmaWNpZW50IHRyYW5zZmVycy4gIChUaGlzIGdpdmVzXFxuIDEzOTpcXHRcXHQgIGJldHRlciBwZXJmb3JtYW5jZSB3aXRoIHNtYWxsIHBhY2tldHMgYW5kIGF0IGhpZ2ggc3BlZWRzKS5cXG4gMTQwOlxcdFxcbiAxNDE6XFx0XFx0ICBUaGUgVVNCIGhvc3QgcnVucyBcXFwidXNibmV0XFxcIiwgYW5kIHRoZSBvdGhlciBlbmQgb2YgdGhlIGxpbmsgbWlnaHQgYmU6XFxuIDE0MjpcXHRcXG4gMTQzOlxcdFxcdCAgLSBBbm90aGVyIFVTQiBob3N0LCB3aGVuIHVzaW5nIFVTQiBcXFwibmV0d29ya1xcXCIgb3IgXFxcImRhdGEgdHJhbnNmZXJcXFwiXFxuIDE0NDpcXHRcXHQgICAgY2FibGVzLiAgVGhlc2UgYXJlIG9mdGVuIHVzZWQgdG8gbmV0d29yayBsYXB0b3BzIHRvIFBDcywgbGlrZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxOTo0NDoxOC4xNjUyMDg4MjRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTM1MzUzNzkyNzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBVU0IgTmV0d29yayBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpdCBzZWVtcyBgVVNCX1VTQk5FVGAgaXMgdGhlIGNyaXRpY2FsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGhlcmUuIE15IGZvY3VzIGlzIHRoZSBgY3g4MjMxMF9yeF9maXh1cGAgZnVuY3Rpb24uIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2sgd2l0aGluIHRoYXQgZnVuY3Rpb24sIHdoaWNoIG1ha2VzIG1lIHRoaW5rIGl0J3MgaW1wb3J0YW50LiBOb3csIHRoZSBrZXkgcXVlc3Rpb24gaXMsIGNhbiB0aGlzIGNvZGUgcGF0aCBldmVuIGJlIGhpdCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBBZnRlciBhIGJpdCBvZiB0aGlua2luZywgdGhlIGFuc3dlciBpcyB5ZXMsIGFic29sdXRlbHkuIFVTQiBlbXVsYXRpb24sIGVzcGVjaWFsbHkgdXNpbmcgc29tZXRoaW5nIGxpa2UgYGR1bW15X2hjZGAgY29tYmluZWQgd2l0aCBhIGZ1enplciBsaWtlIHN5emthbGxlciwgY2FuIGVhc2lseSB0cmlnZ2VyIHRoaXMuIE15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBmdW5jdGlvbiBgY3g4MjMxMF9yeF9maXh1cGAgaXRzZWxmLiBJIG5lZWQgdG8ga25vdyBpZiBpdCdzIHN0YXRpYy4gVGhhdCBpbmZvcm1hdGlvbiB3aWxsIGhlbHAgbWUgZGV0ZXJtaW5lIGl0cyBzY29wZSBhbmQgcG90ZW50aWFsIGltcGFjdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyB0byBwcm9wZXJseSBhc3Nlc3MgdGhpcyBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTI0LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxOTo0NDozMS43MDA1OTEwNjJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzOTgwNDc0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImN4ODIzMTBfcnhfZml4dXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM9MjI2PXN0YXRpYyB2b2lkIGN4ODIzMTBfdW5iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yNDItICovXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MjQzOnN0YXRpYyBpbnQgY3g4MjMxMF9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjQ0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jPTM0MT1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvXFx0Y3g4MjMxMF9pbmZvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMzQ1LVxcdC51bmJpbmRcXHRcXHQ9IGN4ODIzMTBfdW5iaW5kLFxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjM0NjpcXHQucnhfZml4dXBcXHQ9IGN4ODIzMTBfcnhfZml4dXAsXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMzQ3LVxcdC50eF9maXh1cFxcdD0gY3g4MjMxMF90eF9maXh1cCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTk6NDQ6MzEuNzU0NTc1OTU2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE3ODk0NDY4NDgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0IFJlZmluZW1lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGAucnhfZml4dXBgIGZ1bmN0aW9uIGluIGBjeDgyMzEwX2luZm9gLiBJdCdzIGEgc3RhdGljIGZ1bmN0aW9uLCB3aGljaCBpc24ndCBpZGVhbC4gSG93ZXZlciwgaXQncyBhc3NpZ25lZCBhcyBhIGNhbGxiYWNrLCBhbmQgdGhhdCBtYWtlcyBpdCBhIGRlY2VudCBmdXp6aW5nIHRhcmdldC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIG1ha2UgaXQgYSBmb2N1cy5cblxuQnV0IHdhaXQsIGFyZSB0aGVyZSBvdGhlciBmdW5jdGlvbnMgSSBzaG91bGQgYmUgY29uc2lkZXJpbmc/IFBlcmhhcHMgYGN4ODIzMTBfYmluZGAsIGBjeDgyMzEwX3VuYmluZGAsIG9yIGV2ZW4gYGN4ODIzMTBfdHhfZml4dXBgPyBHaXZlbiB0aGUgbmF0dXJlIG9mIG15IHdvcmssIEkgc2hvdWxkIGJlIGV4aGF1c3RpdmUgaW4gdGhpcyBpbml0aWFsIHNjYW4uIEknbGwgaW5jbHVkZSBgY3g4MjMxMF9yeF9maXh1cGAgYXMgYSBwcmltYXJ5IGZvY3VzIHN5bWJvbC5cblxuQWgsIEkgbmVlZCB0byBwYXVzZSBmb3IgYSBzZWNvbmQuIFRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IGluc3RydWN0cyBtZSB0byBmYXZvciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMsIG5vdCBpbmxpbmVkIGludGVybmFsIGhlbHBlciBmdW5jdGlvbnMuIEkgc2VlLiBTaW5jZSBgY3g4MjMxMF9yeF9maXh1cGAgaXMgYXNzaWduZWQgdG8gYSBmdW5jdGlvbiBwb2ludGVyLCBpdCB3b24ndCBiZSBpbmxpbmVkLiBJdCB3aWxsIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcy4gT2theSwgdGhhdCdzIGltcG9ydGFudC5cblxuQWxyaWdodCwgbGV0J3Mga2VlcCBhbiBleWUgb3V0IGZvciBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUuIFRoYXQncyB0aGUgbmV4dCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTc1LCJPdXRwdXRUb2tlbnMiOjUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE5OjQ0OjQ5LjY0OTA0NjY4OFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU5MTE4NTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlthLXpBLVpfXS4qY3g4MjMxMFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xNi1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoxNzplbnVtIGN4ODIzMTBfY21kIHtcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xOC1cXHRDTURfU1RBUlRcXHRcXHQ9IDB4ODQsXFx0Lyogbm8gZWZmZWN0PyAqL1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjUtXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MjY6ZW51bSBjeDgyMzEwX3N0YXR1cyB7XFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjctXFx0U1RBVFVTX1VOREVGSU5FRCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTQyLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjQzOnN0cnVjdCBjeDgyMzEwX3ByaXYge1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTQ0LVxcdHN0cnVjdCB3b3JrX3N0cnVjdCByZWVuYWJsZV93b3JrO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtNTMtICovXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6NTQ6c3RhdGljIGludCBjeDgyMzEwX2NtZChzdHJ1Y3QgdXNibmV0ICpkZXYsIGVudW0gY3g4MjMxMF9jbWQgY21kLCBib29sIHJlcGx5LFxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTU1LVxcdFxcdCAgICAgICB1OCAqd2RhdGEsIGludCB3bGVuLCB1OCAqcmRhdGEsIGludCBybGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMTE5LVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjEyMDpzdGF0aWMgaW50IGN4ODIzMTBfZW5hYmxlX2V0aGVybmV0KHN0cnVjdCB1c2JuZXQgKmRldilcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xMjEte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMTI5LVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjEzMDpzdGF0aWMgdm9pZCBjeDgyMzEwX3JlZW5hYmxlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTEzMS17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xNDAtXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MTQxOnN0YXRpYyBpbnQgY3g4MjMxMF9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMTQyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTIyNS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoyMjY6c3RhdGljIHZvaWQgY3g4MjMxMF91bmJpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yMjcte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjQyLSAqL1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjI0MzpzdGF0aWMgaW50IGN4ODIzMTBfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTI0NC17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zMjItLyogVFggaXMgZWFzeSwganVzdCBhZGQgMiBieXRlcyBvZiBsZW5ndGggYXQgdGhlIGJlZ2lubmluZyAqL1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjMyMzpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmN4ODIzMTBfdHhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTMyNC1cXHRcXHRcXHRcXHQgICAgICAgZ2ZwX3QgZmxhZ3MpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zNDAtXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MzQxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm9cXHRjeDgyMzEwX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMzQyLVxcdC5kZXNjcmlwdGlvblxcdD0gXFxcIkNvbmV4YW50IENYODIzMTAgVVNCIGV0aGVybmV0XFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jPTM2Nj1NT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgcHJvZHVjdHMpO1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM2Ny1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzozNjg6c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGN4ODIzMTBfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM2OS1cXHQubmFtZVxcdFxcdD0gXFxcImN4ODIzMTBfZXRoXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM3Ny1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzozNzg6bW9kdWxlX3VzYl9kcml2ZXIoY3g4MjMxMF9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM3OS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTk6NDQ6NDkuNjk0OTY0OTEzWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMTQwMzMwODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBjeDgyMzEwIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgYGN4ODIzMTBgIEV0aGVybmV0IGRyaXZlciBjb2RlLiBGaXJzdCB0aGluZ3MgZmlyc3QsIGFsbCB0aGUgZnVuY3Rpb25zIGFyZSBzdGF0aWMgaGVyZSwgc28gSSBuZWVkIHRvIHBpY2sgYSBnb29kIGZvY3VzIHN5bWJvbC4gYGN4ODIzMTBfcnhfZml4dXBgIHNlZW1zIGxpa2UgYSBzb2xpZCBjYW5kaWRhdGUgdG8gc3RhcnQgd2l0aC4gTGV0J3Mgc2VlIGhvdyB0aGlzIHRoaW5nIGlzIGNvbmZpZ3VyZWQuIFRoZSBjb25maWcgaXMgYFVTQl9ORVRfQ1g4MjMxMF9FVEhgLCByaWdodD8gUmlnaHQuIE5vdywgaGFuZyBvbiBhIHNlY29uZC4uLkkgbmVlZCB0byBjaGVjayB0aGUgZGVwZW5kZW5jaWVzLiBgVVNCX05FVF9DWDgyMzEwX0VUSGAgZGVwZW5kcyBvbiBgVVNCX1VTQk5FVGAuIE9rYXksIHRoYXQgbWFrZXMgc2Vuc2U7IGl0J3MgYSBVU0IgbmV0d29yayBkZXZpY2UuIE5vdywgbGV0J3Mgc2VlIHdoYXQgKmVsc2UqIGlzIHJpZGluZyBvbiBgVVNCX1VTQk5FVGAuIEl0IHNlbGVjdHMgYE1JSWAsIG9rYXkuIEFuZCBub3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBpcyBgVVNCX1VTQk5FVGAgZGVwZW5kZW50IG9uIHRoZSBjb3JlIGBVU0JgIGNvbmZpZ3VyYXRpb24/IEdvdHRhIHRyYWNlIHRob3NlIGRlcGVuZGVuY2llcy4gVGltZSB0byBjcmFjayBvcGVuIGBkcml2ZXJzL25ldC91c2IvS2NvbmZpZ2AgYW5kIHpvb20gaW4gb24gdGhhdCBgY29uZmlnIFVTQl9VU0JORVRgIHNlY3Rpb24uIExldCdzIHNlZSB3aGF0IGl0J3MgbGlua2VkIHRvLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NDA1LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE5OjQ0OjUzLjcwOTAwMDY5MloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ5MjM0NzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC91c2IvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC91c2IvS2NvbmZpZz01PWNvbW1lbnQgXFxcIkhvc3Qtc2lkZSBVU0Igc3VwcG9ydCBpcyBuZWVkZWQgZm9yIFVTQiBOZXR3b3JrIEFkYXB0ZXIgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo2OlxcdGRlcGVuZHMgb24gIVVTQiBcXHUwMDI2XFx1MDAyNiBORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy03LVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTg9bWVudWNvbmZpZyBVU0JfTkVUX0RSSVZFUlNcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTEwLVxcdGRlZmF1bHQgVVNCIGlmIFVTQlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjExOlxcdGRlcGVuZHMgb24gVVNCIFxcdTAwMjZcXHUwMDI2IE5FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTEyLVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MTY2PWNvbmZpZyBVU0JfTkVUX0FYODgxN1hcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xNjctXFx0dHJpc3RhdGUgXFxcIkFTSVggQVg4OHh4eCBCYXNlZCBVU0IgMi4wIEV0aGVybmV0IEFkYXB0ZXJzXFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjE2ODpcXHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xNjktXFx0c2VsZWN0IENSQzMyXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xOTQtXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MTk1OlxcdCAgVGhpcyBkcml2ZXIgY3JlYXRlcyBhbiBpbnRlcmZhY2UgbmFtZWQgXFxcImV0aFhcXFwiLCB3aGVyZSBYIGRlcGVuZHMgb25cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xOTYtXFx0ICB3aGF0IG90aGVyIG5ldHdvcmtpbmcgZGV2aWNlcyB5b3UgaGF2ZSBpbiB1c2UuXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0xOTg9Y29uZmlnIFVTQl9ORVRfQVg4ODE3OV8xNzhBXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTk5LVxcdHRyaXN0YXRlIFxcXCJBU0lYIEFYODgxNzkvMTc4QSBVU0IgMy4wLzIuMCB0byBHaWdhYml0IEV0aGVybmV0XFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjIwMDpcXHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0yMDEtXFx0c2VsZWN0IENSQzMyXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0yMTItXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MjEzOlxcdCAgVGhpcyBkcml2ZXIgY3JlYXRlcyBhbiBpbnRlcmZhY2UgbmFtZWQgXFxcImV0aFhcXFwiLCB3aGVyZSBYIGRlcGVuZHMgb25cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0yMTQtXFx0ICB3aGF0IG90aGVyIG5ldHdvcmtpbmcgZGV2aWNlcyB5b3UgaGF2ZSBpbiB1c2UuXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0yMTY9Y29uZmlnIFVTQl9ORVRfQ0RDRVRIRVJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0yMTctXFx0dHJpc3RhdGUgXFxcIkNEQyBFdGhlcm5ldCBzdXBwb3J0IChzbWFydCBkZXZpY2VzIHN1Y2ggYXMgY2FibGUgbW9kZW1zKVxcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoyMTg6XFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjE5LVxcdGRlZmF1bHQgeVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjM4LVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjIzOTpcXHQgIFRoaXMgZHJpdmVyIGNyZWF0ZXMgYW4gaW50ZXJmYWNlIG5hbWVkIFxcXCJldGhYXFxcIiwgd2hlcmUgWCBkZXBlbmRzIG9uXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjQwLVxcdCAgd2hhdCBvdGhlciBuZXR3b3JraW5nIGRldmljZXMgeW91IGhhdmUgaW4gdXNlLiAgSG93ZXZlciwgaWYgdGhlXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0yNDQ9Y29uZmlnIFVTQl9ORVRfQ0RDX0VFTVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTI0NS1cXHR0cmlzdGF0ZSBcXFwiQ0RDIEVFTSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjI0NjpcXHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0yNDctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjUyLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjI1MzpcXHQgIFRoaXMgZHJpdmVyIGNyZWF0ZXMgYW4gaW50ZXJmYWNlIG5hbWVkIFxcXCJldGhYXFxcIiwgd2hlcmUgWCBkZXBlbmRzIG9uXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjU0LVxcdCAgd2hhdCBvdGhlciBuZXR3b3JraW5nIGRldmljZXMgeW91IGhhdmUgaW4gdXNlLiAgSG93ZXZlciwgaWYgdGhlXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0yNTg9Y29uZmlnIFVTQl9ORVRfQ0RDX05DTVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTI1OS1cXHR0cmlzdGF0ZSBcXFwiQ0RDIE5DTSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjI2MDpcXHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0yNjEtXFx0c2VsZWN0IFVTQl9ORVRfQ0RDRVRIRVJcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTI3OD1jb25maWcgVVNCX05FVF9IVUFXRUlfQ0RDX05DTVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTI3OS1cXHR0cmlzdGF0ZSBcXFwiSHVhd2VpIE5DTSBlbWJlZGRlZCBBVCBjaGFubmVsIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MjgwOlxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTI4MS1cXHRzZWxlY3QgVVNCX1dETVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MjkzPWNvbmZpZyBVU0JfTkVUX0NEQ19NQklNXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjk0LVxcdHRyaXN0YXRlIFxcXCJDREMgTUJJTSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjI5NTpcXHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0yOTYtXFx0c2VsZWN0IFVTQl9XRE1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTMxMT1jb25maWcgVVNCX05FVF9ETTk2MDFcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zMTItXFx0dHJpc3RhdGUgXFxcIkRhdmljb20gRE05Nnh4IGJhc2VkIFVTQiAxMC8xMDAgZXRoZXJuZXQgZGV2aWNlc1xcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzozMTM6XFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzE0LVxcdHNlbGVjdCBDUkMzMlxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MzE5PWNvbmZpZyBVU0JfTkVUX1NSOTcwMFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTMyMC1cXHR0cmlzdGF0ZSBcXFwiQ29yZUNoaXAtc3ogU1I5NzAwIGJhc2VkIFVTQiAxLjEgMTAvMTAwIGV0aGVybmV0IGRldmljZXNcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MzIxOlxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTMyMi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0zMjY9Y29uZmlnIFVTQl9ORVRfU1I5ODAwXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzI3LVxcdHRyaXN0YXRlIFxcXCJDb3JlQ2hpcC1zeiBTUjk4MDAgYmFzZWQgVVNCIDIuMCAxMC8xMDAgZXRoZXJuZXQgZGV2aWNlc1xcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzozMjg6XFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzI5LVxcdHNlbGVjdCBDUkMzMlxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MzQxPWNvbmZpZyBVU0JfTkVUX1NNU0M3NVhYXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzQyLVxcdHRyaXN0YXRlIFxcXCJTTVNDIExBTjc1WFggYmFzZWQgVVNCIDIuMCBnaWdhYml0IGV0aGVybmV0IGRldmljZXNcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MzQzOlxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTM0NC1cXHRzZWxlY3QgQklUUkVWRVJTRVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MzUxPWNvbmZpZyBVU0JfTkVUX1NNU0M5NVhYXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzUyLVxcdHRyaXN0YXRlIFxcXCJTTVNDIExBTjk1WFggYmFzZWQgVVNCIDIuMCAxMC8xMDAgZXRoZXJuZXQgZGV2aWNlc1xcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzozNTM6XFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzU0LVxcdHNlbGVjdCBQSFlMSUJcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTM2ND1jb25maWcgVVNCX05FVF9HTDYyMEFcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zNjUtXFx0dHJpc3RhdGUgXFxcIkdlbmVTeXMgR0w2MjBVU0ItQSBiYXNlZCBjYWJsZXNcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MzY2OlxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTM2Ny1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0zNzM9Y29uZmlnIFVTQl9ORVRfTkVUMTA4MFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzc1LVxcdGRlZmF1bHQgeVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjM3NjpcXHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zNzctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MzgyPWNvbmZpZyBVU0JfTkVUX1BMVVNCXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zODUtXFx0IyBhcmUgZXZlciByZXNvbHZlZCAuLi4gdGhlbiByZW1vdmUgXFxcImV4cGVyaW1lbnRhbFxcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzozODY6XFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzg3LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTM5MT1jb25maWcgVVNCX05FVF9NQ1M3ODMwXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzkyLVxcdHRyaXN0YXRlIFxcXCJNb3NDaGlwIE1DUzc4MzAgYmFzZWQgRXRoZXJuZXQgYWRhcHRlcnNcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MzkzOlxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTM5NC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0zOTk9Y29uZmlnIFVTQl9ORVRfUk5ESVNfSE9TVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQwMC1cXHR0cmlzdGF0ZSBcXFwiSG9zdCBmb3IgUk5ESVMgYW5kIEFjdGl2ZVN5bmMgZGV2aWNlc1xcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo0MDE6XFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDAyLVxcdHNlbGVjdCBVU0JfTkVUX0NEQ0VUSEVSXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz00MTQ9Y29uZmlnIFVTQl9ORVRfQ0RDX1NVQlNFVF9FTkFCTEVcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00MTUtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo0MTY6XFx0ZGVwZW5kcyBvbiBVU0JfTkVUX0NEQ19TVUJTRVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00MTctXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NDE4PWNvbmZpZyBVU0JfTkVUX0NEQ19TVUJTRVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00MTktXFx0dHJpc3RhdGUgXFxcIlNpbXBsZSBVU0IgTmV0d29yayBMaW5rcyAoQ0RDIEV0aGVybmV0IHN1YnNldClcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NDIwOlxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQyMS1cXHRkZWZhdWx0IHlcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTQzMz1jb25maWcgVVNCX0FMSV9NNTYzMlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQzNC1cXHRib29sIFxcXCJBTGkgTTU2MzIgYmFzZWQgJ1VTQiAyLjAgRGF0YSBMaW5rJyBjYWJsZXNcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NDM1OlxcdGRlcGVuZHMgb24gVVNCX05FVF9DRENfU1VCU0VUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDM2LVxcdHNlbGVjdCBVU0JfTkVUX0NEQ19TVUJTRVRfRU5BQkxFXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz00NDE9Y29uZmlnIFVTQl9BTjI3MjBcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00NDItXFx0Ym9vbCBcXFwiQW5jaG9yQ2hpcHMgMjcyMCBiYXNlZCBjYWJsZXMgKFhpcmNvbSBQR1VORVQsIC4uLilcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NDQzOlxcdGRlcGVuZHMgb24gVVNCX05FVF9DRENfU1VCU0VUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDQ0LVxcdHNlbGVjdCBVU0JfTkVUX0NEQ19TVUJTRVRfRU5BQkxFXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz00NTA9Y29uZmlnIFVTQl9CRUxLSU5cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00NTEtXFx0Ym9vbCBcXFwiZVRFSyBiYXNlZCBob3N0LXRvLWhvc3QgY2FibGVzIChBZHZhbmNlLCBCZWxraW4sIC4uLilcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NDUyOlxcdGRlcGVuZHMgb24gVVNCX05FVF9DRENfU1VCU0VUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDUzLVxcdHNlbGVjdCBVU0JfTkVUX0NEQ19TVUJTRVRfRU5BQkxFXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz00NjA9Y29uZmlnIFVTQl9BUk1MSU5VWFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQ2MS1cXHRib29sIFxcXCJFbWJlZGRlZCBBUk0gTGludXggbGlua3MgKGlQYXEsIC4uLilcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NDYyOlxcdGRlcGVuZHMgb24gVVNCX05FVF9DRENfU1VCU0VUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDYzLVxcdHNlbGVjdCBVU0JfTkVUX0NEQ19TVUJTRVRfRU5BQkxFXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz00Nzg9Y29uZmlnIFVTQl9FUFNPTjI4ODhcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00NzktXFx0Ym9vbCBcXFwiRXBzb24gMjg4OCBiYXNlZCBmaXJtd2FyZSAoREVWRUxPUE1FTlQpXFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjQ4MDpcXHRkZXBlbmRzIG9uIFVTQl9ORVRfQ0RDX1NVQlNFVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQ4MS1cXHRzZWxlY3QgVVNCX05FVF9DRENfU1VCU0VUX0VOQUJMRVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NDg2PWNvbmZpZyBVU0JfS0MyMTkwXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDg3LVxcdGJvb2wgXFxcIktUIFRlY2hub2xvZ3kgS0MyMTkwIGJhc2VkIGNhYmxlcyAoSW5zdGFOZXQpXFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjQ4ODpcXHRkZXBlbmRzIG9uIFVTQl9ORVRfQ0RDX1NVQlNFVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQ4OS1cXHRzZWxlY3QgVVNCX05FVF9DRENfU1VCU0VUX0VOQUJMRVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NDk0PWNvbmZpZyBVU0JfTkVUX1pBVVJVU1xcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQ5NS1cXHR0cmlzdGF0ZSBcXFwiU2hhcnAgWmF1cnVzIChzdG9jayBST01zKSBhbmQgY29tcGF0aWJsZVxcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo0OTY6XFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDk3LVxcdHNlbGVjdCBVU0JfTkVUX0NEQ0VUSEVSXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz01MTI9Y29uZmlnIFVTQl9ORVRfQ1g4MjMxMF9FVEhcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy01MTMtXFx0dHJpc3RhdGUgXFxcIkNvbmV4YW50IENYODIzMTAgVVNCIGV0aGVybmV0IHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NTE0OlxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTUxNS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz01MjA9Y29uZmlnIFVTQl9ORVRfS0FMTUlBXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTIxLVxcdHRyaXN0YXRlIFxcXCJTYW1zdW5nIEthbG1pYSBiYXNlZCBMVEUgVVNCIG1vZGVtXFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjUyMjpcXHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy01MjMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NTMwPWNvbmZpZyBVU0JfTkVUX1FNSV9XV0FOXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTMxLVxcdHRyaXN0YXRlIFxcXCJRTUkgV1dBTiBkcml2ZXIgZm9yIFF1YWxjb21tIE1TTSBiYXNlZCAzRyBhbmQgTFRFIG1vZGVtc1xcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo1MzI6XFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTMzLVxcdHNlbGVjdCBVU0JfV0RNXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz01NTI9Y29uZmlnIFVTQl9IU09cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy01NTMtXFx0dHJpc3RhdGUgXFxcIk9wdGlvbiBVU0IgSGlnaCBTcGVlZCBNb2JpbGUgRGV2aWNlc1xcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo1NTQ6XFx0ZGVwZW5kcyBvbiBVU0IgXFx1MDAyNlxcdTAwMjYgUkZLSUxMIFxcdTAwMjZcXHUwMDI2IFRUWVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTU1NS1cXHRkZWZhdWx0IG5cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTU2Mz1jb25maWcgVVNCX05FVF9JTlQ1MVgxXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTY0LVxcdHRyaXN0YXRlIFxcXCJJbnRlbGxvbiBQTEMgYmFzZWQgdXNiIGFkYXB0ZXJcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NTY1OlxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTU2Ni1cXHRzZWxlY3QgVVNCX05FVF9DRENFVEhFUlxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NTcyPWNvbmZpZyBVU0JfQ0RDX1BIT05FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTU3My1cXHR0cmlzdGF0ZSBcXFwiQ0RDIFBob25ldCBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjU3NDpcXHRkZXBlbmRzIG9uIFBIT05FVCBcXHUwMDI2XFx1MDAyNiBVU0JfVVNCTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTc1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTU5MD1jb25maWcgVVNCX1NJRVJSQV9ORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy01OTEtXFx0dHJpc3RhdGUgXFxcIlVTQi10by1XV0FOIERyaXZlciBmb3IgU2llcnJhIFdpcmVsZXNzIG1vZGVtc1xcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo1OTI6XFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTkzLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTU5OT1jb25maWcgVVNCX1ZMNjAwXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNjAwLVxcdHRyaXN0YXRlIFxcXCJMRyBWTDYwMCBtb2RlbSBkb25nbGVcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NjAxOlxcdGRlcGVuZHMgb24gVVNCX05FVF9DRENFVEhFUiBcXHUwMDI2XFx1MDAyNiBUVFlcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy02MDItXFx0c2VsZWN0IFVTQl9BQ01cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTYxND1jb25maWcgVVNCX05FVF9DSDkyMDBcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy02MTUtXFx0dHJpc3RhdGUgXFxcIlFpbmdIZW5nIENIOTIwMCBVU0IgZXRoZXJuZXQgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo2MTY6XFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNjE3LVxcdHNlbGVjdCBNSUlcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTYyNT1jb25maWcgVVNCX05FVF9BUUMxMTFcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy02MjYtXFx0dHJpc3RhdGUgXFxcIkFxdWFudGlhIEFRdGlvbiBVU0IgdG8gNS8yLjVHYkUgQ29udHJvbGxlcnMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo2Mjc6XFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNjI4LVxcdHNlbGVjdCBDUkMzMlxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NjM2PWNvbmZpZyBVU0JfUlRMODE1M19FQ01cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy02MzctXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo2Mzg6XFx0ZGVwZW5kcyBvbiBVU0JfTkVUX0NEQ0VUSEVSIFxcdTAwMjZcXHUwMDI2IChVU0JfUlRMODE1MiB8fCBVU0JfUlRMODE1Mj1uKVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTYzOS1cXHRkZWZhdWx0IHlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTk6NDQ6NTMuNzUzOTMyMjg4WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxODgyOTEyMjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBVU0IgTmV0d29ya2luZyBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdGhpcyBVU0IgbmV0d29ya2luZyBzdHVmZiBpcyBjb25maWd1cmVkLiBJbml0aWFsbHksIEkgdGhvdWdodCB0aGF0IGBVU0JfVVNCTkVUYCBhbG9uZSB3b3VsZCBzdWZmaWNlLiBCdXQgdGhhdCBkZXBlbmRzIG9uIGBVU0JfTkVUX0RSSVZFUlNgLCB3aGljaCwgaW4gdHVybiwgaGluZ2VzIG9uIGJvdGggYFVTQmAgYW5kIGBORVRgIGJlaW5nIGVuYWJsZWQuIExldCBtZSB2ZXJpZnkgaWYgYFVTQl9ORVRfRFJJVkVSU2AgaXMsIGluIGZhY3QsIGVzc2VudGlhbCBoZXJlLlxuXG5SaWdodCwgYFVTQl9ORVRfRFJJVkVSU2AgaXMgYSBtZW51Y29uZmlnIG9wdGlvbi4gRnJvbSB3aGF0IEkgY2FuIHNlZSwgYFVTQl9ORVRfQ1g4MjMxMF9FVEhgIGFuZCBgVVNCX1VTQk5FVGAgYXBwZWFyIHRvIGJlIHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb25zLiBCdXQgaG9sZCBvbiwgYFVTQl9ORVRfQ1g4MjMxMF9FVEhgIGhhcyBhIGRlcGVuZGVuY3kgb24gYFVTQl9VU0JORVRgLiBTbywgaW4gZXNzZW5jZSwgSSBuZWVkIGJvdGggYFVTQl9ORVRfQ1g4MjMxMF9FVEhgIGFuZCBgVVNCX1VTQk5FVGAgdG8gaGF2ZSB0aGlzIGZ1bmN0aW9uYWxpdHkuXG5cbk5vdywgdGhhdCBicmluZ3MgbWUgYmFjayB0byBgVVNCX05FVF9EUklWRVJTYC4gSXQgKmlzKiBhIG1lbnVjb25maWcsIHdoaWNoIG1lYW5zIGl0IHJlcHJlc2VudHMgYW4gYWN0dWFsIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBJIHNob3VsZCBjaGVjayBgZHJpdmVycy9uZXQvdXNiL0tjb25maWdgIGFyb3VuZCBgVVNCX05FVF9EUklWRVJTYCB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaG93IGl0IGZpdHMgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExOTE5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE5OjQ1OjI1LjYzNjg0Nzc2OFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzg2MDg2NjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1lbnVjb25maWcgVVNCX05FVF9EUklWRVJTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTU9Y29tbWVudCBcXFwiSG9zdC1zaWRlIFVTQiBzdXBwb3J0IGlzIG5lZWRlZCBmb3IgVVNCIE5ldHdvcmsgQWRhcHRlciBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNy1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo4Om1lbnVjb25maWcgVVNCX05FVF9EUklWRVJTXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctOS1cXHR0cmlzdGF0ZSBcXFwiVVNCIE5ldHdvcmsgQWRhcHRlcnNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE5OjQ1OjI2LjAyMjk0MDQ0N1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDEwNTA0ODgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IENvbmZpZ3VyYXRpb24gTG9naWMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvbmZpZ3VyYXRpb24gcHJvYmxlbSwgYW5kIGl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gRmlyc3QsIEkgc2VlIHRoYXQgYFVTQl9ORVRfRFJJVkVSU2AgaXMgaW5kZWVkIGEgY29uZmlnIG9wdGlvbiDigJMgZ29vZCwgdGhhdCdzIHRoZSBzdGFydGluZyBwb2ludC4gR2l2ZW4gdGhhdCwgaXQgc2VlbXMgbG9naWNhbCB0aGF0IHdlIHNob3VsZCBhdXRvbWF0aWNhbGx5IGluY2x1ZGUgYFVTQl9VU0JORVRgIGFuZCBgVVNCX05FVF9DWDgyMzEwX0VUSGAsIGFzIHRoZXkncmUgYWxsIHJlbGF0ZWQgdG8gVVNCIG5ldHdvcmsgZHJpdmVycy5cblxuSG9sZCBvbiBhIHNlY29uZCwgYSBxdWljayByZWFsaXR5IGNoZWNrIGlzIGluIG9yZGVyLiBJdCBsb29rcyBsaWtlIGBVU0JfTkVUX0RSSVZFUlNgIGlzIGFjdHVhbGx5IGEgbWVudWNvbmZpZyBvcHRpb24sIG1ha2luZyBpdCBlaXRoZXIgYSBib29sZWFuIG9yIHRyaXN0YXRlLCB3aGljaCBjaGFuZ2VzIGhvdyBpdCBhZmZlY3RzIG90aGVyIG9wdGlvbnMuIExldCdzIG1ha2Ugc3VyZSB0aGF0IGBVU0JfVVNCTkVUYCBoYXMgdGhlIHJpZ2h0IGRlcGVuZGVuY2llcy5cblxuQWgsIEkgc2VlIGl0IG5vdy4gVGFraW5nIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGBkcml2ZXJzL25ldC91c2IvS2NvbmZpZ2AgZmlsZSwgSSBjYW4gc2VlIHRoYXQgKmV2ZXJ5dGhpbmcqIHdpdGhpbiBpdCBpcyBuZXN0ZWQgaW5zaWRlIGFuIGBpZiBVU0JfTkVUX0RSSVZFUlNgIGNvbmRpdGlvbmFsLiBUaGF0J3MgdGhlIGtleS4gU28sIHRoZSBpbmNsdXNpb24gb2YgYFVTQl9VU0JORVRgIGFuZCB0aGUgb3RoZXJzIGhpbmdlcyBkaXJlY3RseSBvbiBgVVNCX05FVF9EUklWRVJTYCBiZWluZyBlbmFibGVkLCB3aGljaCBpcyBleGFjdGx5IGhvdyBpdCBzaG91bGQgYmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNTE3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE5OjQ1OjMwLjAzMzQ0OTc1N1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MzUzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC91c2IvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBVU0IgTmV0d29yayBkZXZpY2VzIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdGNvbW1lbnQgXFxcIkhvc3Qtc2lkZSBVU0Igc3VwcG9ydCBpcyBuZWVkZWQgZm9yIFVTQiBOZXR3b3JrIEFkYXB0ZXIgc3VwcG9ydFxcXCJcXG4gICA2OlxcdFxcdGRlcGVuZHMgb24gIVVTQiBcXHUwMDI2XFx1MDAyNiBORVRcXG4gICA3OlxcdFxcbiAgIDg6XFx0bWVudWNvbmZpZyBVU0JfTkVUX0RSSVZFUlNcXG4gICA5OlxcdFxcdHRyaXN0YXRlIFxcXCJVU0IgTmV0d29yayBBZGFwdGVyc1xcXCJcXG4gIDEwOlxcdFxcdGRlZmF1bHQgVVNCIGlmIFVTQlxcbiAgMTE6XFx0XFx0ZGVwZW5kcyBvbiBVU0IgXFx1MDAyNlxcdTAwMjYgTkVUXFxuICAxMjpcXHRcXG4gIDEzOlxcdGlmIFVTQl9ORVRfRFJJVkVSU1xcbiAgMTQ6XFx0XFxuICAxNTpcXHRjb25maWcgVVNCX0NBVENcXG4gIDE2OlxcdFxcdHRyaXN0YXRlIFxcXCJVU0IgQ0FUQyBOZXRNYXRlLWJhc2VkIEV0aGVybmV0IGRldmljZSBzdXBwb3J0XFxcIlxcbiAgMTc6XFx0XFx0c2VsZWN0IENSQzMyXFxuICAxODpcXHRcXHRoZWxwXFxuICAxOTpcXHRcXHQgIFNheSBZIGlmIHlvdSB3YW50IHRvIHVzZSBvbmUgb2YgdGhlIGZvbGxvd2luZyAxME1icHMgVVNCIEV0aGVybmV0XFxuICAyMDpcXHRcXHQgIGRldmljZSBiYXNlZCBvbiB0aGUgRUwxMjEwQSBjaGlwLiBTdXBwb3J0ZWQgZGV2aWNlcyBhcmU6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE5OjQ1OjMwLjAzMzU0NDUxN1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDI0NjgyNjU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBVU0IgTmV0d29yayBEcml2ZXIgRml4KipcblxuT2theSwgc28gdGhlIGNvZGUgaW4gcXVlc3Rpb24gaXMgZGVhbGluZyB3aXRoIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkgd2l0aGluIHRoZSBVU0IgbmV0d29yayBkcml2ZXIuIE15IGluaXRpYWwgYXNzZXNzbWVudCBoaW5nZXMgb24gdGhlIGBpZiBVU0JfTkVUX0RSSVZFUlNgIHByZXByb2Nlc3NvciBjaGVjaywgd2hpY2ggdGVsbHMgbWUgdGhlIGZpeCBpcyBjb25kaXRpb25hbGx5IGNvbXBpbGVkLiBXZSBuZWVkIHRvIGJlIHN1cmUgdGhhdCBgVVNCX05FVF9EUklWRVJTYCwgYFVTQl9VU0JORVRgLCBhbmQgYFVTQl9ORVRfQ1g4MjMxMF9FVEhgIGFyZSBhbGwgZW5hYmxlZCBmb3IgdGhpcyB0byBldmVuIGJlIHJlbGV2YW50LlxuXG5UaGUgY29yZSBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGNlbnRlciBhcm91bmQgdGhlIGBjeDgyMzEwX3J4X2ZpeHVwYCBmdW5jdGlvbi4gVGhlIGtleSBpcyB0aGF0IHRoZSBmaXggYWRkcmVzc2VzIGEgcG9zc2libGUgb3V0LW9mLWJvdW5kcyByZWFkLCBvciBhIHNpbWlsYXIgcHJvYmxlbSwgd2l0aGluIHRoYXQgc3BlY2lmaWMgZnVuY3Rpb24uIFRoZSBmaXggaW50cm9kdWNlcyBhIGNoZWNrLCBzcGVjaWZpY2FsbHkgYGRldi1cdTAwM2VwYXJ0aWFsX3JlbSBcdTAwM2Ugc2tiLVx1MDAzZWxlbmAsIHdoaWNoIGltcGxpZXMgdGhlIG9yaWdpbmFsIGNvZGUgd2FzIHZ1bG5lcmFibGUgdG8gYSBzY2VuYXJpbyB3aGVyZSB3ZSB3ZXJlIHJlYWRpbmcgYmV5b25kIHRoZSBib3VuZHMgb2YgYSByZWNlaXZlZCBwYWNrZXQuIFRoZSBmYWN0IHRoYXQgdGhpcyBpcyByZWFjaGFibGUgdmlhIFVTQiBlbXVsYXRpb24gaXMgYSBjcml0aWNhbCBkZXRhaWwuXG5cbkxldCBtZSBxdWlja2x5IHNjYW4gZm9yIGFueSBvdGhlciBwb3RlbnRpYWxseSBhZmZlY3RlZCBmdW5jdGlvbnMgd2l0aGluIHRoaXMgZHJpdmVyLiBgY3g4MjMxMF90eF9maXh1cGAsIGBjeDgyMzEwX2JpbmRgLCBhbmQgYGN4ODIzMTBfdW5iaW5kYCBhbGwgY29tZSB1cCwgYnV0IHNpbmNlIGBjeDgyMzEwX3J4X2ZpeHVwYCBpcyB3aGVyZSB0aGUgbW9kaWZpY2F0aW9uIGlzIG9jY3VycmluZywgdGhhdCdzIGRlZmluaXRlbHkgdGhlIGtleSBmdW5jdGlvbiB0byBhbmFseXplLlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gaXM6IGNhbiB3ZSBhY3R1YWxseSAqdHJpZ2dlciogYGN4ODIzMTBfcnhfZml4dXBgPyBZZXMsIGl0J3MgY2FsbGVkIGJ5IHRoZSBgdXNibmV0YCBjb3JlIHdoZW4gcGFja2V0cyBhcmUgcmVjZWl2ZWQuIFNvLCB0aGUgYXR0YWNrIHZlY3RvciBpcyBsaWtlbHkgdGhyb3VnaCBhIGNyYWZ0ZWQgbmV0d29yayBwYWNrZXQgcmVjZWl2ZWQgb3ZlciBhIFVTQiBuZXR3b3JrIGNvbm5lY3Rpb24uIFRpbWUgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBgdXNibmV0YCBjb3JlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzE5NCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE5OjQ1OjM1LjQ1ODIyOTY1NVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ2NjE1NDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnhfZml4dXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYz0zMTI9c3RhdGljIHZvaWQgX191c2JuZXRfc3RhdHVzX3N0b3BfZm9yY2Uoc3RydWN0IHVzYm5ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTMyMi0vKiBQYXNzZXMgdGhpcyBwYWNrZXQgdXAgdGhlIHN0YWNrLCB1cGRhdGluZyBpdHMgYWNjb3VudGluZy5cXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmM6MzIzOiAqIFNvbWUgbGluayBwcm90b2NvbHMgYmF0Y2ggcGFja2V0cywgc28gdGhlaXIgcnhfZml4dXAgcGF0aHNcXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmMtMzI0LSAqIGNhbiByZXR1cm4gY2xvbmVzIGFzIHdlbGwgYXMganVzdCBtb2RpZnkgdGhlIG9yaWdpbmFsIHNrYi5cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYz0zMjY9dm9pZCB1c2JuZXRfc2tiX3JldHVybihzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmMtMzM2LVxcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYzozMzc6XFx0Lyogb25seSB1cGRhdGUgaWYgdW5zZXQgdG8gYWxsb3cgbWluaWRyaXZlciByeF9maXh1cCBvdmVycmlkZSAqL1xcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYy0zMzgtXFx0aWYgKHNrYi1cXHUwMDNlcHJvdG9jb2wgPT0gMClcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYz01Njk9c3RhdGljIGlubGluZSBpbnQgcnhfcHJvY2VzcyhzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTU3MC17XFxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jOjU3MTpcXHRpZiAoZGV2LVxcdTAwM2Vkcml2ZXJfaW5mby1cXHUwMDNlcnhfZml4dXAgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmM6NTcyOlxcdCAgICAhZGV2LVxcdTAwM2Vkcml2ZXJfaW5mby1cXHUwMDNlcnhfZml4dXAoZGV2LCBza2IpKSB7XFxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jOjU3MzpcXHRcXHQvKiBXaXRoIFJYX0FTU0VNQkxFLCByeF9maXh1cCgpIG11c3QgdXBkYXRlIGNvdW50ZXJzICovXFxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTU3NC1cXHRcXHRpZiAoIShkZXYtXFx1MDAzZWRyaXZlcl9pbmZvLVxcdTAwM2VmbGFncyBcXHUwMDI2IEZMQUdfUlhfQVNTRU1CTEUpKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxOTo0NTozNS41MTI4OTY4WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwMzc2NDg5NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIGBjeDgyMzEwX3J4X2ZpeHVwYCBWdWxuZXJhYmlsaXR5KipcblxuT2theSwgc28gSSd2ZSBjb25maXJtZWQgaXQ6IGByeF9wcm9jZXNzYCBkb2VzIGluZGVlZCBjYWxsIGBkZXYtXHUwMDNlZHJpdmVyX2luZm8tXHUwMDNlcnhfZml4dXAoZGV2LCBza2IpYC4gVGhhdCdzIHRoZSBlbnRyeSBwb2ludCBJIHdhcyBsb29raW5nIGZvci4gTm93LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcyBhbmQgc2V0IHVwIHRoZSBmdXp6aW5nIHRhcmdldHMuXG5cbkJhc2VkIG9uIHRoZSBjb2RlIGNoYW5nZXMgYW5kIHRoZSBwb3RlbnRpYWwgZm9yIGEgbmV3IHZ1bG5lcmFiaWxpdHksIEknbSBtYXJraW5nIHRoaXMgYXMgYFdvcnRoRnV6emluZzogdHJ1ZWAuIFRoaXMgbG9va3MgcHJvbWlzaW5nLiBUaGUgY3JpdGljYWwgc3ltYm9sIHRvIGZvY3VzIG9uIGlzLCBvZiBjb3Vyc2UsIGBjeDgyMzEwX3J4X2ZpeHVwYC5cblxuVG8gZW5zdXJlIHRoZSBmdXp6ZXIgY2FuIHJlYWNoIHRoaXMgY29kZSwgSSBuZWVkIHRvIGVuYWJsZSBhIGZldyBjb25maWd1cmF0aW9ucy4gSSdtIGdvaW5nIHRvIHNldCBgRW5hYmxlQ29uZmlnc2AgdG8gaW5jbHVkZSBgXCJVU0JfTkVUX0RSSVZFUlNcImAsIGBcIlVTQl9VU0JORVRcImAsIGFuZCBgXCJVU0JfTkVUX0NYODIzMTBfRVRIXCJgLlxuXG5UaGUgcmVhc29uaW5nIGlzIHNvbGlkOiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBhIGJvdW5kcyBjaGVjayB3aXRoaW4gYGN4ODIzMTBfcnhfZml4dXBgIHRvIGhhbmRsZSB0aGUgY2FzZSB3aGVuIGBkZXYtXHUwMDNlcGFydGlhbF9yZW0gXHUwMDNlIHNrYi1cdTAwM2VsZW5gLiBUaGlzIGlzIGEgY2xlYXIsIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUgVVNCIG5ldHdvcmsgZHJpdmVyJ3MgcmVjZWl2ZSBwYXRoLCBhbmQgaXQncyByZWFjaGFibGUgdGhyb3VnaCBVU0IgZW11bGF0aW9uLiBUaGlzIGlzIGEgY2xhc3NpYyBjYXNlIG9mIGludHJvZHVjaW5nIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkgdGhyb3VnaCBhIGZpeCwgc28gdGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIG15IHRpbWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MjkzLCJPdXRwdXRUb2tlbnMiOjEzMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxOTo0NTo0MC41NTA1NTA0NzlaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NjEzMzU5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCX05FVF9EUklWRVJTXCIsXG4gICAgXCJVU0JfVVNCTkVUXCIsXG4gICAgXCJVU0JfTkVUX0NYODIzMTBfRVRIXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY3g4MjMxMF9yeF9maXh1cFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgaW4gY3g4MjMxMF9yeF9maXh1cCB0byBwcmV2ZW50IHByb2Nlc3Npbmcgd2hlbiBkZXYtXFx1MDAzZXBhcnRpYWxfcmVtIFxcdTAwM2Ugc2tiLVxcdTAwM2VsZW4uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgVVNCIG5ldHdvcmsgZHJpdmVyJ3MgUlggcGF0aCwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBVU0IgZW11bGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVTQl9ORVRfRFJJVkVSU1wiLFxuICAgIFwiVVNCX1VTQk5FVFwiLFxuICAgIFwiVVNCX05FVF9DWDgyMzEwX0VUSFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImN4ODIzMTBfcnhfZml4dXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGluIGN4ODIzMTBfcnhfZml4dXAgdG8gcHJldmVudCBwcm9jZXNzaW5nIHdoZW4gZGV2LVxcdTAwM2VwYXJ0aWFsX3JlbSBcXHUwMDNlIHNrYi1cXHUwMDNlbGVuLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIFVTQiBuZXR3b3JrIGRyaXZlcidzIFJYIHBhdGgsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGVtdWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTk6NDU6NDAuNjM2NjkwMTNaIiwiU2VxIjoyNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNDA4NjQyNjY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTk6NDU6NDAuNjM3MjA4OFoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyMTQwODExOTY2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGZyb20gYHNrYi1cXHUwMDNlZGF0YWAgaW4gYGN4ODIzMTBfcnhfZml4dXBgLiBXaGVuIGBkZXYtXFx1MDAzZXBhcnRpYWxfcmVtYCBpcyBsYXJnZXIgdGhhbiBgc2tiLVxcdTAwM2VsZW5gLCB0aGUgc3Vic2VxdWVudCBgbWVtY3B5YCBvcGVyYXRpb24gcmVhZHMgcGFzdCB0aGUgZW5kIG9mIHRoZSBgc2tiLVxcdTAwM2VkYXRhYCBidWZmZXIuIFRoaXMgaXMgYSBjbGFzc2ljIGhlYXAgb3V0LW9mLWJvdW5kcyByZWFkIGJ1Zywgd2hpY2ggaXMgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlIGlzIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVhayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBpbnZvbHZlZCB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZGMyNWI4ODA5MjM3OTFhNzg5NDRiZmJjM2RhZDM0MWM1NzRhYmFiMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDE0IDE5OjQzOjE0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMgYi9kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguY1xuaW5kZXggMDY4YWNiMDUyYWRiMC4uOGNhNmI3NWZkZDIwZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jXG4rKysgYi9kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguY1xuQEAgLTI1MSw2ICsyNTEsMTMgQEAgc3RhdGljIGludCBjeDgyMzEwX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdCAqIGVuZCBvZiB0aGF0IHBhY2tldCBhdCB0aGUgYmVnaW5uaW5nLlxuIFx0ICovXG4gXHRpZiAoZGV2LVx1MDAzZXBhcnRpYWxfcmVtKSB7XG4rXHRcdGlmIChkZXYtXHUwMDNlcGFydGlhbF9yZW0gXHUwMDNlIHNrYi1cdTAwM2VsZW4pIHtcbitcdFx0XHRuZXRkZXZfZXJyKGRldi1cdTAwM2VuZXQsXG4rXHRcdFx0XHQgICBcIlJYIHBhcnRpYWwgZnJhbWU6IG5lZWQgJWx1LCBnb3QgJXVcXG5cIixcbitcdFx0XHRcdCAgIGRldi1cdTAwM2VwYXJ0aWFsX3JlbSwgc2tiLVx1MDAzZWxlbik7XG4rXHRcdFx0ZGV2LVx1MDAzZXBhcnRpYWxfcmVtID0gMDtcbitcdFx0XHRyZXR1cm4gMDtcbitcdFx0fVxuIFx0XHRsZW4gPSBkZXYtXHUwMDNlcGFydGlhbF9sZW4gKyBkZXYtXHUwMDNlcGFydGlhbF9yZW07XG4gXHRcdHNrYjIgPSBhbGxvY19za2IobGVuLCBHRlBfQVRPTUlDKTtcbiBcdFx0aWYgKCFza2IyKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTk6NDU6NDAuNjM3MjExOTZaIiwiU2VxIjoyOSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjAwOTcyMTUwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBCb3VuZHMgQ2hlY2sgaW4gYGN4ODIzMTBfcnhfZml4dXBgKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jYC4gSXQncyBpbnRyb2R1Y2luZyBhIGJvdW5kcyBjaGVjayBpbiB0aGUgYGN4ODIzMTBfcnhfZml4dXBgIGZ1bmN0aW9uLiBMZXQncyBzZWUsIHRoZSBmdW5jdGlvbiBpcyBkZWFsaW5nIHdpdGggcGFydGlhbCBmcmFtZXMgaW4gVVNCIG5ldHdvcmsgcGFja2V0cy4gVGhlIGFkZGVkIGNoZWNrIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZDogYGlmIChkZXYtXHUwMDNlcGFydGlhbF9yZW0gXHUwMDNlIHNrYi1cdTAwM2VsZW4pYC4gTXkgZmlyc3QgdGhvdWdodCBpcywgd2h5IGlzIHRoaXMgbmVlZGVkP1xuXG5SaWdodCwgYGRldi1cdTAwM2VwYXJ0aWFsX3JlbWAgcmVwcmVzZW50cyB0aGUgcmVtYWluaW5nIGJ5dGVzIG9mIGEgZnJhZ21lbnRlZCBmcmFtZSwgYW5kIGBza2ItXHUwMDNlbGVuYCBpcyB0aGUgbGVuZ3RoIG9mIHRoZSAqY3VycmVudGx5KiByZWNlaXZlZCBgc2tiYC4gSWYgYGRldi1cdTAwM2VwYXJ0aWFsX3JlbWAgaXMgbGFyZ2VyIHRoYW4gd2hhdCB3ZSd2ZSAqZ290KiBpbiBgc2tiYCwgd2UndmUgZ290IGEgcHJvYmxlbS4gV2l0aG91dCB0aGlzIGNoZWNrLCB0aGUgY29kZSB3b3VsZCB0cnkgdG8gY29weSBgZGV2LVx1MDAzZXBhcnRpYWxfcmVtYCBieXRlcyBmcm9tIHRoZSBgc2tiYCB0byBgc2tiMmAuIFRoYXQncyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQsIHBsYWluIGFuZCBzaW1wbGUuIFdlIGFyZSB0cnlpbmcgdG8gcmVhZCBtb3JlIGRhdGEgdGhhbiBleGlzdHMgaW4gdGhlIGJ1ZmZlci5cblxuTm93LCB0aGF0J3MgaW50ZXJlc3RpbmcuIEkga25vdyBLQVNBTiAqc2hvdWxkKiBjYXRjaCBvdXQtb2YtYm91bmRzIHJlYWRzIGxpa2UgdGhpcywgYnV0IHRoaXMgY2hlY2sgaXMgYSBnb29kIGlkZWEgbm9uZXRoZWxlc3MuIEl0IHByZXZlbnRzIHRoZSBjcmFzaC4gV2hhdCBhYm91dCB1bmluaXRpYWxpemVkIG1lbW9yeT8gTm8sIHRoYXQgZG9lc24ndCBzZWVtIHRvIGJlIGEgZmFjdG9yIGhlcmUuIExldCBtZSBkb3VibGUtY2hlY2sgdGhlIGNvZGUgYXJvdW5kIGBjeDgyMzEwX3J4X2ZpeHVwYCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuIEdvdHRhIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDg3LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDA1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTk6NDU6NDYuNjQ2OTM3Njk2WiIsIlNlcSI6MzAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjkwMDA3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjeDgyMzEwX3J4X2ZpeHVwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jPTIyNj1zdGF0aWMgdm9pZCBjeDgyMzEwX3VuYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjQyLSAqL1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjI0MzpzdGF0aWMgaW50IGN4ODIzMTBfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTI0NC17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYz0zNDE9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mb1xcdGN4ODIzMTBfaW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM0NS1cXHQudW5iaW5kXFx0XFx0PSBjeDgyMzEwX3VuYmluZCxcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzozNDY6XFx0LnJ4X2ZpeHVwXFx0PSBjeDgyMzEwX3J4X2ZpeHVwLFxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM0Ny1cXHQudHhfZml4dXBcXHQ9IGN4ODIzMTBfdHhfZml4dXAsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE5OjQ1OjQ2LjY5Mzg0NjMyMVoiLCJTZXEiOjMxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTI1MjUwOTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRha2Ugb24gYGN4ODIzMTBfcnhfZml4dXBgOlxuXG4qKkFuYWx5emluZyBgY3g4MjMxMF9yeF9maXh1cGAqKlxuXG5BbHJpZ2h0LCBJJ20gZ29pbmcgdG8gdGFrZSBhIGxvb2sgYXQgYGN4ODIzMTBfcnhfZml4dXBgLiBJbW1lZGlhdGVseSwgSSdtIHRoaW5raW5nLCBcIlJYIGZpeHVwXCIgaW1wbGllcyB3ZSdyZSBkZWFsaW5nIHdpdGggcmVjZWl2ZSBwcm9jZXNzaW5nLCBwcm9iYWJseSBvbiBhbiBJbnRlbCBjaGlwc2V0LCBnaXZlbiB0aGUgbmFtaW5nIGNvbnZlbnRpb24uIE15IGltbWVkaWF0ZSBleHBlY3RhdGlvbiBpcyB0aGlzIGZ1bmN0aW9uIGlzIHRhc2tlZCB3aXRoIGhhbmRsaW5nIHNwZWNpZmljLCBwb3RlbnRpYWxseSBhbm9tYWxvdXMsIHJlY2VpdmUgcGFja2V0cyBmcm9tIHRoZSBDWDgyMzEwIGNoaXBzZXQsIGxpa2VseSBzb21lIGtpbmQgb2Ygc2lsaWNvbiBidWcgd29ya2Fyb3VuZCwgb3IgcG9zc2libHkgdG8gYWRqdXN0IGZvciBoYXJkd2FyZSBxdWlya3MuIFRoZSBcImZpeHVwXCIgc3VnZ2VzdHMgdGhpcyBpcyBub3QgdGhlIG5vcm1hbCBwYXRoLCB0aGVyZSBpcyBzb21ldGhpbmcgdW51c3VhbCwgb3IgYW4gZXJyb3IgY29uZGl0aW9uLCB0aGUgY29kZSBuZWVkcyB0byBhZGRyZXNzLiBXZSB3aWxsIGJlIGxvb2tpbmcgZm9yIHBhY2tldCB2YWxpZGF0aW9uLCBoZWFkZXIgYWRqdXN0bWVudHMsIG9yIG1heWJlIGV2ZW4gcGFja2V0IGRyb3BwaW5nIGlmIHRoZSBoYXJkd2FyZSBnaXZlcyB1cyBiYWQgZGF0YS4gVGhlIGdvYWwgd2lsbCBiZSB0byBlaXRoZXIgY29ycmVjdCB0aGUgZXJyYW50IGRhdGEgZm9yIHRoZSB1cHBlciBsYXllcnMgb2YgdGhlIG5ldHdvcmsgc3RhY2ssIG9yIHNhZmVseSBkaXNjYXJkIGl0IHRvIHByZXZlbnQgY29ycnVwdGlvbiBvciB1bmV4cGVjdGVkIGJlaGF2aW91ciwgYXMgd2VsbCBhcyBoYW5kbGUgYW55IGVycm9ycy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE5OCwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE5OjQ1OjUwLjgxOTA5OTkxWiIsIlNlcSI6MzIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwOTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI0MyxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyNDM6XFx0c3RhdGljIGludCBjeDgyMzEwX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gMjQ0OlxcdHtcXG4gMjQ1OlxcdFxcdGludCBsZW47XFxuIDI0NjpcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiMjtcXG4gMjQ3OlxcdFxcdHN0cnVjdCBjeDgyMzEwX3ByaXYgKnByaXYgPSBkZXYtXFx1MDAzZWRyaXZlcl9wcml2O1xcbiAyNDg6XFx0XFxuIDI0OTpcXHRcXHQvKlxcbiAyNTA6XFx0XFx0ICogSWYgdGhlIGxhc3Qgc2tiIGVuZGVkIHdpdGggYW4gaW5jb21wbGV0ZSBwYWNrZXQsIHRoaXMgc2tiIGNvbnRhaW5zXFxuIDI1MTpcXHRcXHQgKiBlbmQgb2YgdGhhdCBwYWNrZXQgYXQgdGhlIGJlZ2lubmluZy5cXG4gMjUyOlxcdFxcdCAqL1xcbiAyNTM6XFx0XFx0aWYgKGRldi1cXHUwMDNlcGFydGlhbF9yZW0pIHtcXG4gMjU0OlxcdFxcdFxcdGlmIChkZXYtXFx1MDAzZXBhcnRpYWxfcmVtIFxcdTAwM2Ugc2tiLVxcdTAwM2VsZW4pIHtcXG4gMjU1OlxcdFxcdFxcdFxcdG5ldGRldl9lcnIoZGV2LVxcdTAwM2VuZXQsXFxuIDI1NjpcXHRcXHRcXHRcXHRcXHQgICBcXFwiUlggcGFydGlhbCBmcmFtZTogbmVlZCAlbHUsIGdvdCAldVxcXFxuXFxcIixcXG4gMjU3OlxcdFxcdFxcdFxcdFxcdCAgIGRldi1cXHUwMDNlcGFydGlhbF9yZW0sIHNrYi1cXHUwMDNlbGVuKTtcXG4gMjU4OlxcdFxcdFxcdFxcdGRldi1cXHUwMDNlcGFydGlhbF9yZW0gPSAwO1xcbiAyNTk6XFx0XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDI2MDpcXHRcXHRcXHR9XFxuIDI2MTpcXHRcXHRcXHRsZW4gPSBkZXYtXFx1MDAzZXBhcnRpYWxfbGVuICsgZGV2LVxcdTAwM2VwYXJ0aWFsX3JlbTtcXG4gMjYyOlxcdFxcdFxcdHNrYjIgPSBhbGxvY19za2IobGVuLCBHRlBfQVRPTUlDKTtcXG4gMjYzOlxcdFxcdFxcdGlmICghc2tiMilcXG4gMjY0OlxcdFxcdFxcdFxcdHJldHVybiAwO1xcbiAyNjU6XFx0XFx0XFx0c2tiX3B1dChza2IyLCBsZW4pO1xcbiAyNjY6XFx0XFx0XFx0bWVtY3B5KHNrYjItXFx1MDAzZWRhdGEsICh2b2lkICopZGV2LVxcdTAwM2VwYXJ0aWFsX2RhdGEsXFxuIDI2NzpcXHRcXHRcXHQgICAgICAgZGV2LVxcdTAwM2VwYXJ0aWFsX2xlbik7XFxuIDI2ODpcXHRcXHRcXHRtZW1jcHkoc2tiMi1cXHUwMDNlZGF0YSArIGRldi1cXHUwMDNlcGFydGlhbF9sZW4sIHNrYi1cXHUwMDNlZGF0YSxcXG4gMjY5OlxcdFxcdFxcdCAgICAgICBkZXYtXFx1MDAzZXBhcnRpYWxfcmVtKTtcXG4gMjcwOlxcdFxcdFxcdHVzYm5ldF9za2JfcmV0dXJuKGRldiwgc2tiMik7XFxuIDI3MTpcXHRcXHRcXHRza2JfcHVsbChza2IsIChkZXYtXFx1MDAzZXBhcnRpYWxfcmVtICsgMSkgXFx1MDAyNiB+MSk7XFxuIDI3MjpcXHRcXHRcXHRkZXYtXFx1MDAzZXBhcnRpYWxfcmVtID0gMDtcXG4gMjczOlxcdFxcdFxcdGlmIChza2ItXFx1MDAzZWxlbiBcXHUwMDNjIDIpXFxuIDI3NDpcXHRcXHRcXHRcXHRyZXR1cm4gMTtcXG4gMjc1OlxcdFxcdH1cXG4gMjc2OlxcdFxcbiAyNzc6XFx0XFx0LyogYSBza2IgY2FuIGNvbnRhaW4gbXVsdGlwbGUgcGFja2V0cyAqL1xcbiAyNzg6XFx0XFx0d2hpbGUgKHNrYi1cXHUwMDNlbGVuIFxcdTAwM2UgMSkge1xcbiAyNzk6XFx0XFx0XFx0LyogZmlyc3QgdHdvIGJ5dGVzIGFyZSBwYWNrZXQgbGVuZ3RoICovXFxuIDI4MDpcXHRcXHRcXHRsZW4gPSBza2ItXFx1MDAzZWRhdGFbMF0gfCAoc2tiLVxcdTAwM2VkYXRhWzFdIFxcdTAwM2NcXHUwMDNjIDgpO1xcbiAyODE6XFx0XFx0XFx0c2tiX3B1bGwoc2tiLCAyKTtcXG4gMjgyOlxcdFxcbiAyODM6XFx0XFx0XFx0LyogaWYgbGFzdCBwYWNrZXQgaW4gdGhlIHNrYiwgbGV0IHVzYm5ldCB0byBwcm9jZXNzIGl0ICovXFxuIDI4NDpcXHRcXHRcXHRpZiAobGVuID09IHNrYi1cXHUwMDNlbGVuIHx8IGxlbiArIDEgPT0gc2tiLVxcdTAwM2VsZW4pIHtcXG4gMjg1OlxcdFxcdFxcdFxcdHNrYl90cmltKHNrYiwgbGVuKTtcXG4gMjg2OlxcdFxcdFxcdFxcdGJyZWFrO1xcbiAyODc6XFx0XFx0XFx0fVxcbiAyODg6XFx0XFxuIDI4OTpcXHRcXHRcXHRpZiAobGVuID09IDB4ZmZmZikge1xcbiAyOTA6XFx0XFx0XFx0XFx0bmV0ZGV2X2luZm8oZGV2LVxcdTAwM2VuZXQsIFxcXCJyb3V0ZXIgd2FzIHJlYm9vdGVkLCByZS1lbmFibGluZyBldGhlcm5ldCBtb2RlXFxcIik7XFxuIDI5MTpcXHRcXHRcXHRcXHRzY2hlZHVsZV93b3JrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWVuYWJsZV93b3JrKTtcXG4gMjkyOlxcdFxcdFxcdH0gZWxzZSBpZiAobGVuIFxcdTAwM2UgQ1g4MjMxMF9NVFUpIHtcXG4gMjkzOlxcdFxcdFxcdFxcdG5ldGRldl9lcnIoZGV2LVxcdTAwM2VuZXQsIFxcXCJSWCBwYWNrZXQgdG9vIGxvbmc6ICVkIEJcXFxcblxcXCIsIGxlbik7XFxuIDI5NDpcXHRcXHRcXHRcXHRyZXR1cm4gMDtcXG4gMjk1OlxcdFxcdFxcdH1cXG4gMjk2OlxcdFxcbiAyOTc6XFx0XFx0XFx0LyogaW5jb21wbGV0ZSBwYWNrZXQsIHNhdmUgaXQgZm9yIHRoZSBuZXh0IHNrYiAqL1xcbiAyOTg6XFx0XFx0XFx0aWYgKGxlbiBcXHUwMDNlIHNrYi1cXHUwMDNlbGVuKSB7XFxuIDI5OTpcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZXBhcnRpYWxfbGVuID0gc2tiLVxcdTAwM2VsZW47XFxuIDMwMDpcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZXBhcnRpYWxfcmVtID0gbGVuIC0gc2tiLVxcdTAwM2VsZW47XFxuIDMwMTpcXHRcXHRcXHRcXHRtZW1jcHkoKHZvaWQgKilkZXYtXFx1MDAzZXBhcnRpYWxfZGF0YSwgc2tiLVxcdTAwM2VkYXRhLFxcbiAzMDI6XFx0XFx0XFx0XFx0ICAgICAgIGRldi1cXHUwMDNlcGFydGlhbF9sZW4pO1xcbiAzMDM6XFx0XFx0XFx0XFx0c2tiX3B1bGwoc2tiLCBza2ItXFx1MDAzZWxlbik7XFxuIDMwNDpcXHRcXHRcXHRcXHRicmVhaztcXG4gMzA1OlxcdFxcdFxcdH1cXG4gMzA2OlxcdFxcbiAzMDc6XFx0XFx0XFx0c2tiMiA9IGFsbG9jX3NrYihsZW4sIEdGUF9BVE9NSUMpO1xcbiAzMDg6XFx0XFx0XFx0aWYgKCFza2IyKVxcbiAzMDk6XFx0XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDMxMDpcXHRcXHRcXHRza2JfcHV0KHNrYjIsIGxlbik7XFxuIDMxMTpcXHRcXHRcXHRtZW1jcHkoc2tiMi1cXHUwMDNlZGF0YSwgc2tiLVxcdTAwM2VkYXRhLCBsZW4pO1xcbiAzMTI6XFx0XFx0XFx0LyogcHJvY2VzcyB0aGUgcGFja2V0ICovXFxuIDMxMzpcXHRcXHRcXHR1c2JuZXRfc2tiX3JldHVybihkZXYsIHNrYjIpO1xcbiAzMTQ6XFx0XFxuIDMxNTpcXHRcXHRcXHRza2JfcHVsbChza2IsIChsZW4gKyAxKSBcXHUwMDI2IH4xKTtcXG4gMzE2OlxcdFxcdH1cXG4gMzE3OlxcdFxcbiAzMTg6XFx0XFx0LyogbGV0IHVzYm5ldCBwcm9jZXNzIHRoZSBsYXN0IHBhY2tldCAqL1xcbiAzMTk6XFx0XFx0cmV0dXJuIDE7XFxuIDMyMDpcXHR9XFxuIDMyMTpcXHRcXG4gMzIyOlxcdC8qIFRYIGlzIGVhc3ksIGp1c3QgYWRkIDIgYnl0ZXMgb2YgbGVuZ3RoIGF0IHRoZSBiZWdpbm5pbmcgKi9cXG4gMzIzOlxcdHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqY3g4MjMxMF90eF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuIDMyNDpcXHRcXHRcXHRcXHRcXHQgICAgICAgZ2ZwX3QgZmxhZ3MpXFxuIDMyNTpcXHR7XFxuIDMyNjpcXHRcXHRpbnQgbGVuID0gc2tiLVxcdTAwM2VsZW47XFxuIDMyNzpcXHRcXG4gMzI4OlxcdFxcdGlmIChza2JfY293X2hlYWQoc2tiLCAyKSkge1xcbiAzMjk6XFx0XFx0XFx0ZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTtcXG4gMzMwOlxcdFxcdFxcdHJldHVybiBOVUxMO1xcbiAzMzE6XFx0XFx0fVxcbiAzMzI6XFx0XFx0c2tiX3B1c2goc2tiLCAyKTtcXG4gMzMzOlxcdFxcbiAzMzQ6XFx0XFx0c2tiLVxcdTAwM2VkYXRhWzBdID0gbGVuO1xcbiAzMzU6XFx0XFx0c2tiLVxcdTAwM2VkYXRhWzFdID0gbGVuIFxcdTAwM2VcXHUwMDNlIDg7XFxuIDMzNjpcXHRcXG4gMzM3OlxcdFxcdHJldHVybiBza2I7XFxuIDMzODpcXHR9XFxuIDMzOTpcXHRcXG4gMzQwOlxcdFxcbiAzNDE6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mb1xcdGN4ODIzMTBfaW5mbyA9IHtcXG4gMzQyOlxcdFxcdC5kZXNjcmlwdGlvblxcdD0gXFxcIkNvbmV4YW50IENYODIzMTAgVVNCIGV0aGVybmV0XFxcIixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTk6NDU6NTAuODE5MTkyNjdaIiwiU2VxIjozMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEyMjYxMTQ1OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNZW1vcnkgU2FmZXR5IG9mIHRoZSBjeDgyMzEwX3J4X2ZpeHVwIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNoZWNrOiBgaWYgKGRldi1cdTAwM2VwYXJ0aWFsX3JlbSBcdTAwM2Ugc2tiLVx1MDAzZWxlbilgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIFwiQWgsIHRoYXQgbG9va3MgbGlrZSBhIHBvdGVudGlhbCBidWZmZXIgb3ZlcmZsb3cgZml4LlwiIEFuZCBpdCBpcy4gRXNzZW50aWFsbHksIHdpdGhvdXQgdGhlIHBhdGNoLCB0aGUgY29kZSB3b3VsZCBiZSBhdHRlbXB0aW5nIGEgYG1lbWNweWAgZnJvbSBgc2tiLVx1MDAzZWRhdGFgIHdoZXJlIHRoZSBzb3VyY2Ugc2l6ZSAoYGRldi1cdTAwM2VwYXJ0aWFsX3JlbWApIGV4Y2VlZHMgdGhlIGFsbG9jYXRlZCBzaXplIG9mIHRoZSBzb3VyY2UgYnVmZmVyIChgc2tiLVx1MDAzZWxlbmApLiBUaGF0J3MgYSB0ZXh0Ym9vayBvdXQtb2YtYm91bmRzIHJlYWQuXG5cbk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgd2FycmFudHMgS01TQU4gKEtlcm5lbCBNZW1vcnkgU2FuaXRpemVyKS4gTXkgaW1tZWRpYXRlIGludHVpdGlvbiBpcyBuby4gS0FTQU4gKEtlcm5lbCBBZGRyZXNzIFNhbml0aXplcikgaXMgKmRlc2lnbmVkKiB0byBjYXRjaCB0aGVzZSBvdXQtb2YtYm91bmRzIGhlYXAgcmVhZHMuIGBza2ItXHUwMDNlZGF0YWAgaXMgaGVhcC1hbGxvY2F0ZWQgdXNpbmcgYGttYWxsb2NgIG9yIGVxdWl2YWxlbnQsIHNvIEtBU0FOIHdpbGwgZmxhZyB0aGUgaWxsZWdhbCByZWFkIGR1cmluZyB0aGUgYG1lbWNweWAuIFRoZSBrZXkgaXMgdGhhdCB3ZSBhcmUgcmVhZGluZyAqb3V0LW9mLWJvdW5kcyBtZW1vcnkqLCBub3QgKnVuaW5pdGlhbGl6ZWQqIG1lbW9yeS4gV2hpbGUgS01TQU4gKmNhbiogc29tZXRpbWVzIGNhdGNoIE9PQiByZWFkcywgS0FTQU4gaXMgdGhlIHByaW1hcnkgYW5kIHN1ZmZpY2llbnQgdG9vbCBoZXJlLlxuXG5UaGlzIG91dC1vZi1ib3VuZHMgcmVhZCBpcyB0aGVuIHBhc3NlZCB0byBgdXNibmV0X3NrYl9yZXR1cm5gLCB1bHRpbWF0ZWx5IHNlbmRpbmcgdGhlIHBhY2tldCB1cCB0aGUgc3RhY2suIENvdWxkIHRoaXMgYmUgYW4gaW5mb3JtYXRpb24gbGVhaz8gUG90ZW50aWFsbHksIHRoZSBvdXQtb2YtYm91bmRzIGRhdGEgY291bGQgYmUga2VybmVsIGhlYXAgbWVtb3J5IGFuZCBpbmNsdWRlZCBpbiBhIHBhY2tldC4gWWVzLCB0ZWNobmljYWxseSBpdCAqaXMqIGFuIGluZm8tbGVhaywgaWYgdGhlIE9PQiByZWFkIGlzIGZyb20gc29tZSBzZW5zaXRpdmUgYXJlYSBvZiBtZW1vcnkuIEhvd2V2ZXIsIHRoZSBLQVNBTiBjaGVjayBpcyB3aGF0IG1hdHRlcnMgaGVyZSwgYXMgaXQgY2F0Y2hlcyB0aGUgdnVsbmVyYWJpbGl0eS5cblxuTGV0J3MgZG91YmxlLWNoZWNrIGFib3V0IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBgc2tiMmAgaXMgYWxsb2NhdGVkIGFuZCBgc2tiX3B1dGAgaXMgY2FsbGVkIGJlZm9yZSBhbnkgYG1lbWNweWAuIFRoZW4gd2UndmUgZ290IHRoZSBgbWVtY3B5YCBvcGVyYXRpb25zLiBUaGUgY3JpdGljYWwgb25lIGlzIGBtZW1jcHkoc2tiMi1cdTAwM2VkYXRhICsgZGV2LVx1MDAzZXBhcnRpYWxfbGVuLCBza2ItXHUwMDNlZGF0YSwgZGV2LVx1MDAzZXBhcnRpYWxfcmVtKTtgLiBJZiBgZGV2LVx1MDAzZXBhcnRpYWxfcmVtIFx1MDAzZSBza2ItXHUwMDNlbGVuYCwgdGhpcyByZWFkcyBvdXQgb2YgYm91bmRzIGZyb20gYHNrYi1cdTAwM2VkYXRhYC4gTm8gdW5pbml0aWFsaXplZCBkYXRhIGludm9sdmVkLiBUaGUgT09CIGlzIHRoZSBwcm9ibGVtLCBub3QgdGhlICppbml0aWFsaXphdGlvbiogb2YgdGhlIHNvdXJjZSBkYXRhLlxuXG5UaGVyZWZvcmUsIGJlY2F1c2UgS0FTQU4gcmVsaWFibHkgZGV0ZWN0cyB0aGlzIG91dC1vZi1ib3VuZHMgcmVhZCwgSSdtIGNvbmZpZGVudCBpbiBzZXR0aW5nIGBOZWVkc0tNU0FOPWZhbHNlYC4gVGhlIHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IHRoZSBwYXRjaCBhZGRyZXNzZXMgYW4gb3V0LW9mLWJvdW5kcyBoZWFwIHJlYWQgZnJvbSBgc2tiLVx1MDAzZWRhdGFgLCBhIGJ1ZyBjYXVnaHQgYnkgS0FTQU4uIFdlIGFyZSBub3QgZGVhbGluZyB3aXRoIGEgbGVhayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSwgd2hpY2ggaXMgdGhlIGRvbWFpbiBvZiBLTVNBTi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTA4NiwiT3V0cHV0VG9rZW5zIjoxMzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MDQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxOTo0NjowMi4wNDUzMTAxMTVaIiwiU2VxIjozNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzE0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBmcm9tIGBza2ItXFx1MDAzZWRhdGFgIGluIGBjeDgyMzEwX3J4X2ZpeHVwYC4gV2hlbiBgZGV2LVxcdTAwM2VwYXJ0aWFsX3JlbWAgaXMgbGFyZ2VyIHRoYW4gYHNrYi1cXHUwMDNlbGVuYCwgdGhlIHN1YnNlcXVlbnQgYG1lbWNweWAgb3BlcmF0aW9uIHJlYWRzIHBhc3QgdGhlIGVuZCBvZiB0aGUgYHNrYi1cXHUwMDNlZGF0YWAgYnVmZmVyLiBUaGlzIGlzIGEgY2xhc3NpYyBoZWFwIG91dC1vZi1ib3VuZHMgcmVhZCBidWcsIHdoaWNoIGlzIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZSBpcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWsgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgaW52b2x2ZWQgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBmcm9tIGBza2ItXFx1MDAzZWRhdGFgIGluIGBjeDgyMzEwX3J4X2ZpeHVwYC4gV2hlbiBgZGV2LVxcdTAwM2VwYXJ0aWFsX3JlbWAgaXMgbGFyZ2VyIHRoYW4gYHNrYi1cXHUwMDNlbGVuYCwgdGhlIHN1YnNlcXVlbnQgYG1lbWNweWAgb3BlcmF0aW9uIHJlYWRzIHBhc3QgdGhlIGVuZCBvZiB0aGUgYHNrYi1cXHUwMDNlZGF0YWAgYnVmZmVyLiBUaGlzIGlzIGEgY2xhc3NpYyBoZWFwIG91dC1vZi1ib3VuZHMgcmVhZCBidWcsIHdoaWNoIGlzIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZSBpcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWsgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgaW52b2x2ZWQgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowl29bz[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-14 19:11:54 +0000 UTC FinishedAt: 2026-08-14 19:46:03 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "24ef02f934eeb48830cff6b739abc3c62b1d107b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_NET_DRIVERS", "USB_USBNET", "USB_NET_CX82310_ETH" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "24ef02f934eeb48830cff6b739abc3c62b1d107b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_NET_DRIVERS", "USB_USBNET", "USB_NET_CX82310_ETH" ], "series_id": "7eb621f3-0bde-4635-9d60-ac1abb0c458b" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "cx82310_rx_fixup" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE5OjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9ORVRfRFJJVkVSUyYjMzQ7LAogICAgJiMzNDtVU0JfVVNCTkVUJiMzNDssCiAgICAmIzM0O1VTQl9ORVRfQ1g4MjMxMF9FVEgmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjeDgyMzEwX3J4X2ZpeHVwJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGZyb20gYHNrYi1cdTAwM2VkYXRhYCBpbiBgY3g4MjMxMF9yeF9maXh1cGAuIFdoZW4gYGRldi1cdTAwM2VwYXJ0aWFsX3JlbWAgaXMgbGFyZ2VyIHRoYW4gYHNrYi1cdTAwM2VsZW5gLCB0aGUgc3Vic2VxdWVudCBgbWVtY3B5YCBvcGVyYXRpb24gcmVhZHMgcGFzdCB0aGUgZW5kIG9mIHRoZSBgc2tiLVx1MDAzZWRhdGFgIGJ1ZmZlci4gVGhpcyBpcyBhIGNsYXNzaWMgaGVhcCBvdXQtb2YtYm91bmRzIHJlYWQgYnVnLCB3aGljaCBpcyByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlcmUgaXMgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGludm9sdmVkIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBpbiBjeDgyMzEwX3J4X2ZpeHVwIHRvIHByZXZlbnQgcHJvY2Vzc2luZyB3aGVuIGRldi1cdTAwM2VwYXJ0aWFsX3JlbSBcdTAwM2Ugc2tiLVx1MDAzZWxlbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBVU0IgbmV0d29yayBkcml2ZXImIzM5O3MgUlggcGF0aCwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBVU0IgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE5OjQzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZGMyNWI4ODA5MjM3OTFhNzg5NDRiZmJjM2RhZDM0MWM1NzRhYmFiMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDE0IDE5OjQzOjE0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jIGIvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmNcbmluZGV4IDA2OGFjYjA1MmFkYjAuLjhjYTZiNzVmZGQyMGYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmNcbkBAIC0yNTEsNiAmIzQzOzI1MSwxMyBAQCBzdGF0aWMgaW50IGN4ODIzMTBfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0ICogZW5kIG9mIHRoYXQgcGFja2V0IGF0IHRoZSBiZWdpbm5pbmcuXG4gXHQgKi9cbiBcdGlmIChkZXYtXHUwMDNlcGFydGlhbF9yZW0pIHtcbiYjNDM7XHRcdGlmIChkZXYtXHUwMDNlcGFydGlhbF9yZW0gXHUwMDNlIHNrYi1cdTAwM2VsZW4pIHtcbiYjNDM7XHRcdFx0bmV0ZGV2X2VycihkZXYtXHUwMDNlbmV0LFxuJiM0MztcdFx0XHRcdCAgIFwmIzM0O1JYIHBhcnRpYWwgZnJhbWU6IG5lZWQgJWx1LCBnb3QgJXVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0ICAgZGV2LVx1MDAzZXBhcnRpYWxfcmVtLCBza2ItXHUwMDNlbGVuKTtcbiYjNDM7XHRcdFx0ZGV2LVx1MDAzZXBhcnRpYWxfcmVtID0gMDtcbiYjNDM7XHRcdFx0cmV0dXJuIDA7XG4mIzQzO1x0XHR9XG4gXHRcdGxlbiA9IGRldi1cdTAwM2VwYXJ0aWFsX2xlbiAmIzQzOyBkZXYtXHUwMDNlcGFydGlhbF9yZW07XG4gXHRcdHNrYjIgPSBhbGxvY19za2IobGVuLCBHRlBfQVRPTUlDKTtcbiBcdFx0aWYgKCFza2IyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE5OjQzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtVU0JfTkVUX0RSSVZFUlMmIzM0OywKICAgICYjMzQ7VVNCX1VTQk5FVCYjMzQ7LAogICAgJiMzNDtVU0JfTkVUX0NYODIzMTBfRVRIJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y3g4MjMxMF9yeF9maXh1cCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGluIGN4ODIzMTBfcnhfZml4dXAgdG8gcHJldmVudCBwcm9jZXNzaW5nIHdoZW4gZGV2LVx1MDAzZXBhcnRpYWxfcmVtIFx1MDAzZSBza2ItXHUwMDNlbGVuLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIFVTQiBuZXR3b3JrIGRyaXZlciYjMzk7cyBSWCBwYXRoLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIFVTQiBlbXVsYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkYzI1Yjg4MDkyMzc5MWE3ODk0NGJmYmMzZGFkMzQxYzU3NGFiYWIyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgMTQgMTk6NDM6MTQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYyBiL2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jCmluZGV4IDA2OGFjYjA1MmFkYjAuLjhjYTZiNzVmZGQyMGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jCkBAIC0yNTEsNiAmIzQzOzI1MSwxMyBAQCBzdGF0aWMgaW50IGN4ODIzMTBfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCSAqIGVuZCBvZiB0aGF0IHBhY2tldCBhdCB0aGUgYmVnaW5uaW5nLgogCSAqLwogCWlmIChkZXYtJmd0O3BhcnRpYWxfcmVtKSB7CiYjNDM7CQlpZiAoZGV2LSZndDtwYXJ0aWFsX3JlbSAmZ3Q7IHNrYi0mZ3Q7bGVuKSB7CiYjNDM7CQkJbmV0ZGV2X2VycihkZXYtJmd0O25ldCwKJiM0MzsJCQkJICAgJiMzNDtSWCBwYXJ0aWFsIGZyYW1lOiBuZWVkICVsdSwgZ290ICV1XG4mIzM0OywKJiM0MzsJCQkJICAgZGV2LSZndDtwYXJ0aWFsX3JlbSwgc2tiLSZndDtsZW4pOwomIzQzOwkJCWRldi0mZ3Q7cGFydGlhbF9yZW0gPSAwOwomIzQzOwkJCXJldHVybiAwOwomIzQzOwkJfQogCQlsZW4gPSBkZXYtJmd0O3BhcnRpYWxfbGVuICYjNDM7IGRldi0mZ3Q7cGFydGlhbF9yZW07CiAJCXNrYjIgPSBhbGxvY19za2IobGVuLCBHRlBfQVRPTUlDKTsKIAkJaWYgKCFza2IyKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxOTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDkwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFVTQiBFdGhlcm5ldCBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggZm9yIHRoZSBgY3g4MjMxMF9ldGguY2AgZmlsZSB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC91c2IvYCBkaXJlY3RvcnkuIFNlZW1zIGxpa2UgdGhlcmUmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbnRyb2R1Y2VkIGluIGBjeDgyMzEwX3J4X2ZpeHVwYC4gU3BlY2lmaWNhbGx5LCBhIGNoZWNrIGhhcyBiZWVuIGFkZGVkOgoKYGBgYwoJaWYgKGRldi0mZ3Q7cGFydGlhbF9yZW0pIHsKJiM0MzsJCWlmIChkZXYtJmd0O3BhcnRpYWxfcmVtICZndDsgc2tiLSZndDtsZW4pIHsKJiM0MzsJCQluZXRkZXZfZXJyKGRldi0mZ3Q7bmV0LAomIzQzOwkJCQkgICAmIzM0O1JYIHBhcnRpYWwgZnJhbWU6IG5lZWQgJWx1LCBnb3QgJXVcbiYjMzQ7LAomIzQzOwkJCQkgICBkZXYtJmd0O3BhcnRpYWxfcmVtLCBza2ItJmd0O2xlbik7CiYjNDM7CQkJZGV2LSZndDtwYXJ0aWFsX3JlbSA9IDA7CiYjNDM7CQkJcmV0dXJuIDA7CiYjNDM7CQl9CmBgYAoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBsaWtlbHkgYSBnb29kIHRoaW5nLiBUaGUgY29kZSYjMzk7cyBwcmV2ZW50aW5nIGEgcG90ZW50aWFsIGlzc3VlIHdoZXJlIGBkZXYtJmd0O3BhcnRpYWxfcmVtYCAod2hpY2ggSSBhc3N1bWUgcmVsYXRlcyB0byBhIHBhcnRpYWxseSByZWNlaXZlZCBmcmFtZSkgaXMgbGFyZ2VyIHRoYW4gdGhlIGFjdHVhbCBgc2tiLSZndDtsZW5gLiBUaGlzIGNvdWxkIGxlYWQgdG8gYSByZWFkIHBhc3QgdGhlIGVuZCBvZiB0aGUgcGFja2V0IGJ1ZmZlciwgd2hpY2ggaXMgcHJlY2lzZWx5IHRoZSBraW5kIG9mIG1lbW9yeSBzYWZldHkgcHJvYmxlbSB3ZSB3YW50IHRvIGF2b2lkLiBUaGUgYWRkaXRpb24gaXMgY2xlYXJseSBhIHByb2FjdGl2ZSBtZWFzdXJlLCBzYWZlZ3VhcmRpbmcgYWdhaW5zdCBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIG90aGVyIHNpbWlsYXIgdnVsbmVyYWJpbGl0aWVzLiBOb3csIGxldCYjMzk7cyBqdXN0IG1ha2Ugc3VyZSB0aGUgY29uZmlndXJhdGlvbiBpcyBzZXQgZm9yIHRoZSBgY3g4MjMxMF9ldGhgIGRyaXZlci4gV2UgbmVlZCB0byBjb25maXJtIHRoaXMgcGF0Y2ggaXMgZXZlbiBpbiBlZmZlY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTk6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y3g4MjMxMF9ldGgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZT0zNT1vYmotJChDT05GSUdfVVNCX1NJRVJSQV9ORVQpXHQmIzQzOz0gc2llcnJhX25ldC5vXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGU6MzY6b2JqLSQoQ09ORklHX1VTQl9ORVRfQ1g4MjMxMF9FVEgpXHQmIzQzOz0gY3g4MjMxMF9ldGgub1xuZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlLTM3LW9iai0kKENPTkZJR19VU0JfTkVUX0NEQ19OQ00pXHQmIzQzOz0gY2RjX25jbS5vXG4tLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM9MzY4PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBjeDgyMzEwX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjM2OTpcdC5uYW1lXHRcdD0gXCYjMzQ7Y3g4MjMxMF9ldGhcJiMzNDssXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zNzAtXHQuaWRfdGFibGVcdD0gcHJvZHVjdHMsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTk6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg4OQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgVVNCIE5ldHdvcmsgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyB0aGUgY29uZmlndXJhdGlvbiBJJiMzOTttIGxvb2tpbmcgYXQgaXMgYFVTQl9ORVRfQ1g4MjMxMF9FVEhgLiBSaWdodCwgdGhhdCByaW5ncyBhIGJlbGwuIFRpbWUgdG8gZGlnIGludG8gdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZSB0byBzZWUgdGhlIGZpbmUgZGV0YWlscyBvZiB3aGF0IHRoaXMgc3BlY2lmaWNhbGx5IGVuYWJsZXMuIFRoZSBsaWtlbHkgbG9jYXRpb24gaXMgYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYC4gTGV0JiMzOTtzIGNvbmZpcm0gdGhlIGRlZmluaXRpb24gYW5kIGFueSBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24gYW5kIHdoYXQgaXRzIGltcGxpY2F0aW9ucyBhcmUsIHNvIGEgdGhvcm91Z2ggcmV2aWV3IG9mIHRoZSBLY29uZmlnIGlzIGluIG9yZGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE5OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfTkVUX0NYODIzMTBfRVRIJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NDk0PWNvbmZpZyBVU0JfTkVUX1pBVVJVU1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTUxMS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjUxMjpjb25maWcgVVNCX05FVF9DWDgyMzEwX0VUSFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTEzLVx0dHJpc3RhdGUgXCYjMzQ7Q29uZXhhbnQgQ1g4MjMxMCBVU0IgZXRoZXJuZXQgcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE5OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxOTcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSByZWFkaW5nIGFuZCBwcm9jZXNzaW5nIHRoZSBwcm92aWRlZCB0ZXh0OgoKKipEaXZpbmcgaW50byBVU0IgTmV0d29ya2luZyBDb25maWd1cmF0aW9uKioKCk9rYXksIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSYjMzk7bSBnb2luZyB0byBwdWxsIHVwIGBkcml2ZXJzL25ldC91c2IvS2NvbmZpZ2AsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSA1MTIuIE15IGdvYWwgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gVVNCIG5ldHdvcmtpbmcgZGV2aWNlcy4gSSYjMzk7bSBwcm9iYWJseSBsb29raW5nIGF0IHRoZSBkZXBlbmRlbmNpZXMsIGRlc2NyaXB0aW9ucywgYW5kIGRlZmF1bHRzIGZvciBkaWZmZXJlbnQgVVNCIG5ldHdvcmsgZHJpdmVycy4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCYjMzk7cyBjb250cm9sbGVkIHRocm91Z2ggdGhpcyBLY29uZmlnIGZpbGUsIGhvdyBtb2R1bGVzIGFyZSBlbmFibGVkIG9yIGRpc2FibGVkLCBhbmQgd2hhdCBjb25kaXRpb25zIHRyaWdnZXIgdGhvc2UgY2hvaWNlcy4gSSYjMzk7bSBsaWtlbHkgaW50ZXJlc3RlZCBpbiBhIHNwZWNpZmljIGRldmljZSBvciBpbnRlcmZhY2UsIHNvIEkmIzM5O2xsIGJlIGZpbHRlcmluZyBteSBwZXJ1c2FsIHdpdGggYSBwYXJ0aWN1bGFyIG1vZHVsZSBpbiBtaW5kLiBJIG5lZWQgdG8gc2VlIGhvdyB0aGVzZSBzZXR0aW5ncyBhcmUgc3RydWN0dXJlZCB3aXRoaW4gdGhlIGxhcmdlciBuZXR3b3JraW5nIGNvbmZpZ3VyYXRpb24gc3BhY2Ugd2l0aGluIHRoZSBrZXJuZWwuIFRoZSBnb2FsIGlzIHRvIGZ1bGx5IHVuZGVyc3RhbmQgaG93IGRyaXZlcnMgYXJlIGVuYWJsZWQvZGlzYWJsZWQgd2l0aGluIHRoZSBidWlsZCBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE5OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1MDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDUwMDpcdFx0aGVscFxuIDUwMTpcdFx0ICBDaG9vc2UgdGhpcyBvcHRpb24gdG8gc3VwcG9ydCB0aGUgdXNiIG5ldHdvcmtpbmcgbGlua3MgdXNlZCBieVxuIDUwMjpcdFx0ICBaYXVydXMgbW9kZWxzIGxpa2UgdGhlIFNMLTUwMDBELCBTTC01NTAwLCBTTC01NjAwLCBBLTMwMCwgQi01MDAuXG4gNTAzOlx0XHQgIFRoaXMgYWxzbyBzdXBwb3J0cyBzb21lIHJlbGF0ZWQgZGV2aWNlIGZpcm13YXJlLCBhcyB1c2VkIGluIHNvbWVcbiA1MDQ6XHRcdCAgUERBcyBmcm9tIE9seW1wdXMgYW5kIHNvbWUgY2VsbCBwaG9uZXMgZnJvbSBNb3Rvcm9sYS5cbiA1MDU6XHRcbiA1MDY6XHRcdCAgSWYgeW91IGluc3RhbGwgYW4gYWx0ZXJuYXRlIGltYWdlLCBzdWNoIGFzIHRoZSBMaW51eCAyLjYgYmFzZWRcbiA1MDc6XHRcdCAgdmVyc2lvbnMgb2YgT3BlblphdXJ1cywgeW91IHNob3VsZCBubyBsb25nZXIgbmVlZCB0byBzdXBwb3J0IHRoaXNcbiA1MDg6XHRcdCAgcHJvdG9jb2wuICBPbmx5IHRoZSBcJiMzNDtldGgtZmRcJiMzNDsgb3IgXCYjMzQ7bmV0X2ZkXCYjMzQ7IGRyaXZlcnMgaW4gdGhlc2UgZGV2aWNlc1xuIDUwOTpcdFx0ICByZWFsbHkgbmVlZCB0aGlzIG5vbi1jb25mb3JtYW50IHZhcmlhbnQgb2YgQ0RDIEV0aGVybmV0IChvciBpblxuIDUxMDpcdFx0ICBzb21lIGNhc2VzIENEQyBNRExNKSBwcm90b2NvbCwgbm90IFwmIzM0O2dfZXRoZXJcJiMzNDsuXG4gNTExOlx0XG4gNTEyOlx0Y29uZmlnIFVTQl9ORVRfQ1g4MjMxMF9FVEhcbiA1MTM6XHRcdHRyaXN0YXRlIFwmIzM0O0NvbmV4YW50IENYODIzMTAgVVNCIGV0aGVybmV0IHBvcnRcJiMzNDtcbiA1MTQ6XHRcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuIDUxNTpcdFx0aGVscFxuIDUxNjpcdFx0ICBDaG9vc2UgdGhpcyBvcHRpb24gaWYgeW91JiMzOTtyZSB1c2luZyBhIENvbmV4YW50IENYODIzMTAtYmFzZWQgQURTTFxuIDUxNzpcdFx0ICByb3V0ZXIgd2l0aCBVU0IgZXRoZXJuZXQgcG9ydC4gVGhpcyBkcml2ZXIgaXMgZm9yIHJvdXRlcnMgb25seSxcbiA1MTg6XHRcdCAgaXQgd2lsbCBub3Qgd29yayB3aXRoIEFEU0wgbW9kZW1zICh1c2UgY3hhY3J1IGRyaXZlciBpbnN0ZWFkKS5cbiA1MTk6XHRcbiA1MjA6XHRjb25maWcgVVNCX05FVF9LQUxNSUFcbiA1MjE6XHRcdHRyaXN0YXRlIFwmIzM0O1NhbXN1bmcgS2FsbWlhIGJhc2VkIExURSBVU0IgbW9kZW1cJiMzNDtcbiA1MjI6XHRcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuIDUyMzpcdFx0aGVscFxuIDUyNDpcdFx0ICBDaG9vc2UgdGhpcyBvcHRpb24gaWYgeW91IGhhdmUgYSBTYW1zdW5nIEthbG1pYSBiYXNlZCBVU0IgbW9kZW1cbiA1MjU6XHRcdCAgYXMgU2Ftc3VuZyBHVC1CMzczMC5cbiA1MjY6XHRcbiA1Mjc6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gNTI4Olx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBrYWxtaWEuXG4gNTI5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTk6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDAwMQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSBmYW1pbGlhciB3aXRoIGVtYmVkZGVkIHN5c3RlbXMgYW5kIG5ldHdvcmtpbmc6CgoqKkV4YW1pbmluZyB0aGUgVVNCIE5ldHdvcmsgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmN5KioKClJpZ2h0LCBzbyBgVVNCX05FVF9DWDgyMzEwX0VUSGAgaXMgZGVwZW5kZW50IG9uIGBVU0JfVVNCTkVUYC4gT2theSwgdGhhdCBtYWtlcyBzZW5zZS4gSSBuZWVkIHRvIGVuc3VyZSB0aGUgYmFzZSBVU0IgbmV0d29ya2luZyBzdXBwb3J0IGlzIGVuYWJsZWQgYmVmb3JlIEkgZXZlbiBib3RoZXIgbG9va2luZyBhdCB0aGUgc3BlY2lmaWMgZHJpdmVyIGZvciB0aGUgQ1g4MjMxMCBFdGhlcm5ldCBkZXZpY2UuIExldCYjMzk7cyBkaWcgaW50byBgVVNCX1VTQk5FVGAgYW5kIHNlZSB3aGF0IGl0IGVudGFpbHMuIEkga25vdyB3aGF0IHRoZSBDWDgyMzEwIGlzLCBpdCYjMzk7cyBhIHNwZWNpZmljLCB0eXBpY2FsbHkgb2xkZXIsIFVTQiB0byBFdGhlcm5ldCBjaGlwLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBpbmZyYXN0cnVjdHVyZSBmb3IgVVNCIG5ldHdvcmsgaW50ZXJmYWNlcyBpcyBwcmVzZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxOTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX1VTQk5FVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTExMz1jb25maWcgVVNCX0xBTjc4WFhcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMzEtXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoxMzI6Y29uZmlnIFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTEzMy1cdHRyaXN0YXRlIFwmIzM0O011bHRpLXB1cnBvc2UgVVNCIE5ldHdvcmtpbmcgRnJhbWV3b3JrXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE5OjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzMjQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkV4YW1pbmluZyBVU0IgTmV0d29ya2luZyBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbi4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBgZHJpdmVycy9uZXQvdXNiL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAxMzIuIFRoYXQmIzM5O3MgbGlrZWx5IHdoZXJlIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIFVTQiBuZXR3b3JraW5nIGRyaXZlcnMgYXJlIGRlZmluZWQuIEkmIzM5O20gcHJvYmFibHkgbG9va2luZyBmb3Igc29tZXRoaW5nIHNwZWNpZmljLCBhIGZlYXR1cmUgSSB3YW50IHRvIGVuYWJsZSwgZGlzYWJsZSwgb3IgcGVyaGFwcyB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgb2YuIFRoaXMgY291bGQgYmUgcmVsYXRlZCB0byBhIHNwZWNpZmljIFVTQiBuZXR3b3JrIGludGVyZmFjZSBjYXJkIChOSUMpLCBhIHBhcnRpY3VsYXIgZHJpdmVyIGZlYXR1cmUsIG9yIGEgZ2VuZXJhbCBxdWVzdGlvbiBvZiBob3cgdGhlIG1vZHVsZSBzZWxlY3Rpb24gd29ya3Mgd2l0aGluIHRoYXQgYXJlYS4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgdGhhdCBzcGVjaWZpYyBLY29uZmlnIG9wdGlvbiBpcywgd2hhdCBpdCBjb250cm9scywgYW5kIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGl0JiMzOTtzIGF2YWlsYWJsZS4gS25vd2luZyB0aGUgY29udGV4dCB3aXRoaW4gdGhlIEtjb25maWcgZmlsZSB3aWxsIGNsYXJpZnkgdGhlIGJpZ2dlciBwaWN0dXJlLiBJJiMzOTttIGhvcGluZyB0byBnZXQgYSBxdWljayBncmFzcCBvZiB0aGlzIHBhcnRpY3VsYXIgb3B0aW9uIGJ5IHJlYWRpbmcgdGhlIHN1cnJvdW5kaW5nIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE5OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDEyNTpcdFx0ICBMQU43ODAxIDogVVNCIDMgdG8gMTAvMTAwLzEwMDAgRXRoZXJuZXQgYWRhcHRlciAoTUFDIG9ubHkpXG4gMTI2Olx0XG4gMTI3Olx0XHQgIFByb3BlciBQSFkgZHJpdmVyIGlzIHJlcXVpcmVkIGZvciBMQU43ODAxLlxuIDEyODpcdFxuIDEyOTpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiAxMzA6XHRcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGxhbjc4eHguXG4gMTMxOlx0XG4gMTMyOlx0Y29uZmlnIFVTQl9VU0JORVRcbiAxMzM6XHRcdHRyaXN0YXRlIFwmIzM0O011bHRpLXB1cnBvc2UgVVNCIE5ldHdvcmtpbmcgRnJhbWV3b3JrXCYjMzQ7XG4gMTM0Olx0XHRzZWxlY3QgTUlJXG4gMTM1Olx0XHRoZWxwXG4gMTM2Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHNldmVyYWwga2luZHMgb2YgbmV0d29yayBsaW5rcyBvdmVyIFVTQixcbiAxMzc6XHRcdCAgd2l0aCBcJiMzNDttaW5pZHJpdmVyc1wmIzM0OyBidWlsdCBhcm91bmQgYSBjb21tb24gbmV0d29yayBkcml2ZXIgY29yZVxuIDEzODpcdFx0ICB0aGF0IHN1cHBvcnRzIGRlZXAgcXVldWVzIGZvciBlZmZpY2llbnQgdHJhbnNmZXJzLiAgKFRoaXMgZ2l2ZXNcbiAxMzk6XHRcdCAgYmV0dGVyIHBlcmZvcm1hbmNlIHdpdGggc21hbGwgcGFja2V0cyBhbmQgYXQgaGlnaCBzcGVlZHMpLlxuIDE0MDpcdFxuIDE0MTpcdFx0ICBUaGUgVVNCIGhvc3QgcnVucyBcJiMzNDt1c2JuZXRcJiMzNDssIGFuZCB0aGUgb3RoZXIgZW5kIG9mIHRoZSBsaW5rIG1pZ2h0IGJlOlxuIDE0MjpcdFxuIDE0MzpcdFx0ICAtIEFub3RoZXIgVVNCIGhvc3QsIHdoZW4gdXNpbmcgVVNCIFwmIzM0O25ldHdvcmtcJiMzNDsgb3IgXCYjMzQ7ZGF0YSB0cmFuc2ZlclwmIzM0O1xuIDE0NDpcdFx0ICAgIGNhYmxlcy4gIFRoZXNlIGFyZSBvZnRlbiB1c2VkIHRvIG5ldHdvcmsgbGFwdG9wcyB0byBQQ3MsIGxpa2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTk6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDkyNAoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVVNCIE5ldHdvcmsgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpdCBzZWVtcyBgVVNCX1VTQk5FVGAgaXMgdGhlIGNyaXRpY2FsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGhlcmUuIE15IGZvY3VzIGlzIHRoZSBgY3g4MjMxMF9yeF9maXh1cGAgZnVuY3Rpb24uIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2sgd2l0aGluIHRoYXQgZnVuY3Rpb24sIHdoaWNoIG1ha2VzIG1lIHRoaW5rIGl0JiMzOTtzIGltcG9ydGFudC4gTm93LCB0aGUga2V5IHF1ZXN0aW9uIGlzLCBjYW4gdGhpcyBjb2RlIHBhdGggZXZlbiBiZSBoaXQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gQWZ0ZXIgYSBiaXQgb2YgdGhpbmtpbmcsIHRoZSBhbnN3ZXIgaXMgeWVzLCBhYnNvbHV0ZWx5LiBVU0IgZW11bGF0aW9uLCBlc3BlY2lhbGx5IHVzaW5nIHNvbWV0aGluZyBsaWtlIGBkdW1teV9oY2RgIGNvbWJpbmVkIHdpdGggYSBmdXp6ZXIgbGlrZSBzeXprYWxsZXIsIGNhbiBlYXNpbHkgdHJpZ2dlciB0aGlzLiBNeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgZnVuY3Rpb24gYGN4ODIzMTBfcnhfZml4dXBgIGl0c2VsZi4gSSBuZWVkIHRvIGtub3cgaWYgaXQmIzM5O3Mgc3RhdGljLiBUaGF0IGluZm9ybWF0aW9uIHdpbGwgaGVscCBtZSBkZXRlcm1pbmUgaXRzIHNjb3BlIGFuZCBwb3RlbnRpYWwgaW1wYWN0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHRvIHByb3Blcmx5IGFzc2VzcyB0aGlzIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE5OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2N4ODIzMTBfcnhfZml4dXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYz0yMjY9c3RhdGljIHZvaWQgY3g4MjMxMF91bmJpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yNDItICovXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoyNDM6c3RhdGljIGludCBjeDgyMzEwX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTI0NC17XG4tLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM9MzQxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm9cdGN4ODIzMTBfaW5mbyA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zNDUtXHQudW5iaW5kXHRcdD0gY3g4MjMxMF91bmJpbmQsXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzozNDY6XHQucnhfZml4dXBcdD0gY3g4MjMxMF9yeF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM0Ny1cdC50eF9maXh1cFx0PSBjeDgyMzEwX3R4X2ZpeHVwLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxOTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTc1CgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogMjEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IFJlZmluZW1lbnQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYC5yeF9maXh1cGAgZnVuY3Rpb24gaW4gYGN4ODIzMTBfaW5mb2AuIEl0JiMzOTtzIGEgc3RhdGljIGZ1bmN0aW9uLCB3aGljaCBpc24mIzM5O3QgaWRlYWwuIEhvd2V2ZXIsIGl0JiMzOTtzIGFzc2lnbmVkIGFzIGEgY2FsbGJhY2ssIGFuZCB0aGF0IG1ha2VzIGl0IGEgZGVjZW50IGZ1enppbmcgdGFyZ2V0LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbWFrZSBpdCBhIGZvY3VzLgoKQnV0IHdhaXQsIGFyZSB0aGVyZSBvdGhlciBmdW5jdGlvbnMgSSBzaG91bGQgYmUgY29uc2lkZXJpbmc/IFBlcmhhcHMgYGN4ODIzMTBfYmluZGAsIGBjeDgyMzEwX3VuYmluZGAsIG9yIGV2ZW4gYGN4ODIzMTBfdHhfZml4dXBgPyBHaXZlbiB0aGUgbmF0dXJlIG9mIG15IHdvcmssIEkgc2hvdWxkIGJlIGV4aGF1c3RpdmUgaW4gdGhpcyBpbml0aWFsIHNjYW4uIEkmIzM5O2xsIGluY2x1ZGUgYGN4ODIzMTBfcnhfZml4dXBgIGFzIGEgcHJpbWFyeSBmb2N1cyBzeW1ib2wuCgpBaCwgSSBuZWVkIHRvIHBhdXNlIGZvciBhIHNlY29uZC4gVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgaW5zdHJ1Y3RzIG1lIHRvIGZhdm9yIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucywgbm90IGlubGluZWQgaW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9ucy4gSSBzZWUuIFNpbmNlIGBjeDgyMzEwX3J4X2ZpeHVwYCBpcyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIsIGl0IHdvbiYjMzk7dCBiZSBpbmxpbmVkLiBJdCB3aWxsIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcy4gT2theSwgdGhhdCYjMzk7cyBpbXBvcnRhbnQuCgpBbHJpZ2h0LCBsZXQmIzM5O3Mga2VlcCBhbiBleWUgb3V0IGZvciBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUuIFRoYXQmIzM5O3MgdGhlIG5leHQgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTk6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XlthLXpBLVpfXS4qY3g4MjMxMCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTE2LVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MTc6ZW51bSBjeDgyMzEwX2NtZCB7XG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xOC1cdENNRF9TVEFSVFx0XHQ9IDB4ODQsXHQvKiBubyBlZmZlY3Q/ICovXG4tLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjUtXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoyNjplbnVtIGN4ODIzMTBfc3RhdHVzIHtcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTI3LVx0U1RBVFVTX1VOREVGSU5FRCxcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy00Mi1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjQzOnN0cnVjdCBjeDgyMzEwX3ByaXYge1xuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtNDQtXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgcmVlbmFibGVfd29yaztcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy01My0gKi9cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjU0OnN0YXRpYyBpbnQgY3g4MjMxMF9jbWQoc3RydWN0IHVzYm5ldCAqZGV2LCBlbnVtIGN4ODIzMTBfY21kIGNtZCwgYm9vbCByZXBseSxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTU1LVx0XHQgICAgICAgdTggKndkYXRhLCBpbnQgd2xlbiwgdTggKnJkYXRhLCBpbnQgcmxlbilcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xMTktXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoxMjA6c3RhdGljIGludCBjeDgyMzEwX2VuYWJsZV9ldGhlcm5ldChzdHJ1Y3QgdXNibmV0ICpkZXYpXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xMjEte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTEyOS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjEzMDpzdGF0aWMgdm9pZCBjeDgyMzEwX3JlZW5hYmxlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMTMxLXtcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xNDAtXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoxNDE6c3RhdGljIGludCBjeDgyMzEwX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTE0Mi17XG4tLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjI1LVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MjI2OnN0YXRpYyB2b2lkIGN4ODIzMTBfdW5iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yMjcte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTI0Mi0gKi9cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjI0MzpzdGF0aWMgaW50IGN4ODIzMTBfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjQ0LXtcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zMjItLyogVFggaXMgZWFzeSwganVzdCBhZGQgMiBieXRlcyBvZiBsZW5ndGggYXQgdGhlIGJlZ2lubmluZyAqL1xuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MzIzOnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqY3g4MjMxMF90eF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zMjQtXHRcdFx0XHQgICAgICAgZ2ZwX3QgZmxhZ3MpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMzQwLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MzQxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm9cdGN4ODIzMTBfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM0Mi1cdC5kZXNjcmlwdGlvblx0PSBcJiMzNDtDb25leGFudCBDWDgyMzEwIFVTQiBldGhlcm5ldFwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYz0zNjY9TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIHByb2R1Y3RzKTtcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM2Ny1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjM2ODpzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgY3g4MjMxMF9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zNjktXHQubmFtZVx0XHQ9IFwmIzM0O2N4ODIzMTBfZXRoXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM3Ny1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjM3ODptb2R1bGVfdXNiX2RyaXZlcihjeDgyMzEwX2RyaXZlcik7XG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zNzktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE5OjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc0MDUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBjeDgyMzEwIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBgY3g4MjMxMGAgRXRoZXJuZXQgZHJpdmVyIGNvZGUuIEZpcnN0IHRoaW5ncyBmaXJzdCwgYWxsIHRoZSBmdW5jdGlvbnMgYXJlIHN0YXRpYyBoZXJlLCBzbyBJIG5lZWQgdG8gcGljayBhIGdvb2QgZm9jdXMgc3ltYm9sLiBgY3g4MjMxMF9yeF9maXh1cGAgc2VlbXMgbGlrZSBhIHNvbGlkIGNhbmRpZGF0ZSB0byBzdGFydCB3aXRoLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGlzIHRoaW5nIGlzIGNvbmZpZ3VyZWQuIFRoZSBjb25maWcgaXMgYFVTQl9ORVRfQ1g4MjMxMF9FVEhgLCByaWdodD8gUmlnaHQuIE5vdywgaGFuZyBvbiBhIHNlY29uZC4uLkkgbmVlZCB0byBjaGVjayB0aGUgZGVwZW5kZW5jaWVzLiBgVVNCX05FVF9DWDgyMzEwX0VUSGAgZGVwZW5kcyBvbiBgVVNCX1VTQk5FVGAuIE9rYXksIHRoYXQgbWFrZXMgc2Vuc2U7IGl0JiMzOTtzIGEgVVNCIG5ldHdvcmsgZGV2aWNlLiBOb3csIGxldCYjMzk7cyBzZWUgd2hhdCAqZWxzZSogaXMgcmlkaW5nIG9uIGBVU0JfVVNCTkVUYC4gSXQgc2VsZWN0cyBgTUlJYCwgb2theS4gQW5kIG5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb246IGlzIGBVU0JfVVNCTkVUYCBkZXBlbmRlbnQgb24gdGhlIGNvcmUgYFVTQmAgY29uZmlndXJhdGlvbj8gR290dGEgdHJhY2UgdGhvc2UgZGVwZW5kZW5jaWVzLiBUaW1lIHRvIGNyYWNrIG9wZW4gYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYCBhbmQgem9vbSBpbiBvbiB0aGF0IGBjb25maWcgVVNCX1VTQk5FVGAgc2VjdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGF0IGl0JiMzOTtzIGxpbmtlZCB0by4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTk6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTU9Y29tbWVudCBcJiMzNDtIb3N0LXNpZGUgVVNCIHN1cHBvcnQgaXMgbmVlZGVkIGZvciBVU0IgTmV0d29yayBBZGFwdGVyIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjY6XHRkZXBlbmRzIG9uICFVU0IgXHUwMDI2XHUwMDI2IE5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNy1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTg9bWVudWNvbmZpZyBVU0JfTkVUX0RSSVZFUlNcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMC1cdGRlZmF1bHQgVVNCIGlmIFVTQlxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MTE6XHRkZXBlbmRzIG9uIFVTQiBcdTAwMjZcdTAwMjYgTkVUXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMi1cbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0xNjY9Y29uZmlnIFVTQl9ORVRfQVg4ODE3WFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTY3LVx0dHJpc3RhdGUgXCYjMzQ7QVNJWCBBWDg4eHh4IEJhc2VkIFVTQiAyLjAgRXRoZXJuZXQgQWRhcHRlcnNcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjE2ODpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTY5LVx0c2VsZWN0IENSQzMyXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTk0LVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MTk1Olx0ICBUaGlzIGRyaXZlciBjcmVhdGVzIGFuIGludGVyZmFjZSBuYW1lZCBcJiMzNDtldGhYXCYjMzQ7LCB3aGVyZSBYIGRlcGVuZHMgb25cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTE5Ni1cdCAgd2hhdCBvdGhlciBuZXR3b3JraW5nIGRldmljZXMgeW91IGhhdmUgaW4gdXNlLlxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTE5OD1jb25maWcgVVNCX05FVF9BWDg4MTc5XzE3OEFcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTE5OS1cdHRyaXN0YXRlIFwmIzM0O0FTSVggQVg4ODE3OS8xNzhBIFVTQiAzLjAvMi4wIHRvIEdpZ2FiaXQgRXRoZXJuZXRcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjIwMDpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjAxLVx0c2VsZWN0IENSQzMyXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjEyLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MjEzOlx0ICBUaGlzIGRyaXZlciBjcmVhdGVzIGFuIGludGVyZmFjZSBuYW1lZCBcJiMzNDtldGhYXCYjMzQ7LCB3aGVyZSBYIGRlcGVuZHMgb25cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTIxNC1cdCAgd2hhdCBvdGhlciBuZXR3b3JraW5nIGRldmljZXMgeW91IGhhdmUgaW4gdXNlLlxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTIxNj1jb25maWcgVVNCX05FVF9DRENFVEhFUlxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjE3LVx0dHJpc3RhdGUgXCYjMzQ7Q0RDIEV0aGVybmV0IHN1cHBvcnQgKHNtYXJ0IGRldmljZXMgc3VjaCBhcyBjYWJsZSBtb2RlbXMpXCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoyMTg6XHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTIxOS1cdGRlZmF1bHQgeVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTIzOC1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjIzOTpcdCAgVGhpcyBkcml2ZXIgY3JlYXRlcyBhbiBpbnRlcmZhY2UgbmFtZWQgXCYjMzQ7ZXRoWFwmIzM0Oywgd2hlcmUgWCBkZXBlbmRzIG9uXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0yNDAtXHQgIHdoYXQgb3RoZXIgbmV0d29ya2luZyBkZXZpY2VzIHlvdSBoYXZlIGluIHVzZS4gIEhvd2V2ZXIsIGlmIHRoZVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTI0ND1jb25maWcgVVNCX05FVF9DRENfRUVNXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0yNDUtXHR0cmlzdGF0ZSBcJiMzNDtDREMgRUVNIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjI0NjpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjQ3LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTI1Mi1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjI1MzpcdCAgVGhpcyBkcml2ZXIgY3JlYXRlcyBhbiBpbnRlcmZhY2UgbmFtZWQgXCYjMzQ7ZXRoWFwmIzM0Oywgd2hlcmUgWCBkZXBlbmRzIG9uXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0yNTQtXHQgIHdoYXQgb3RoZXIgbmV0d29ya2luZyBkZXZpY2VzIHlvdSBoYXZlIGluIHVzZS4gIEhvd2V2ZXIsIGlmIHRoZVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTI1OD1jb25maWcgVVNCX05FVF9DRENfTkNNXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0yNTktXHR0cmlzdGF0ZSBcJiMzNDtDREMgTkNNIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjI2MDpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjYxLVx0c2VsZWN0IFVTQl9ORVRfQ0RDRVRIRVJcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0yNzg9Y29uZmlnIFVTQl9ORVRfSFVBV0VJX0NEQ19OQ01cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTI3OS1cdHRyaXN0YXRlIFwmIzM0O0h1YXdlaSBOQ00gZW1iZWRkZWQgQVQgY2hhbm5lbCBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoyODA6XHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTI4MS1cdHNlbGVjdCBVU0JfV0RNXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MjkzPWNvbmZpZyBVU0JfTkVUX0NEQ19NQklNXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0yOTQtXHR0cmlzdGF0ZSBcJiMzNDtDREMgTUJJTSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoyOTU6XHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTI5Ni1cdHNlbGVjdCBVU0JfV0RNXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MzExPWNvbmZpZyBVU0JfTkVUX0RNOTYwMVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzEyLVx0dHJpc3RhdGUgXCYjMzQ7RGF2aWNvbSBETTk2eHggYmFzZWQgVVNCIDEwLzEwMCBldGhlcm5ldCBkZXZpY2VzXCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzozMTM6XHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTMxNC1cdHNlbGVjdCBDUkMzMlxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTMxOT1jb25maWcgVVNCX05FVF9TUjk3MDBcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTMyMC1cdHRyaXN0YXRlIFwmIzM0O0NvcmVDaGlwLXN6IFNSOTcwMCBiYXNlZCBVU0IgMS4xIDEwLzEwMCBldGhlcm5ldCBkZXZpY2VzXCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzozMjE6XHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTMyMi1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0zMjY9Y29uZmlnIFVTQl9ORVRfU1I5ODAwXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zMjctXHR0cmlzdGF0ZSBcJiMzNDtDb3JlQ2hpcC1zeiBTUjk4MDAgYmFzZWQgVVNCIDIuMCAxMC8xMDAgZXRoZXJuZXQgZGV2aWNlc1wmIzM0O1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MzI4Olx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zMjktXHRzZWxlY3QgQ1JDMzJcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0zNDE9Y29uZmlnIFVTQl9ORVRfU01TQzc1WFhcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTM0Mi1cdHRyaXN0YXRlIFwmIzM0O1NNU0MgTEFONzVYWCBiYXNlZCBVU0IgMi4wIGdpZ2FiaXQgZXRoZXJuZXQgZGV2aWNlc1wmIzM0O1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MzQzOlx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zNDQtXHRzZWxlY3QgQklUUkVWRVJTRVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTM1MT1jb25maWcgVVNCX05FVF9TTVNDOTVYWFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzUyLVx0dHJpc3RhdGUgXCYjMzQ7U01TQyBMQU45NVhYIGJhc2VkIFVTQiAyLjAgMTAvMTAwIGV0aGVybmV0IGRldmljZXNcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjM1MzpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzU0LVx0c2VsZWN0IFBIWUxJQlxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTM2ND1jb25maWcgVVNCX05FVF9HTDYyMEFcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTM2NS1cdHRyaXN0YXRlIFwmIzM0O0dlbmVTeXMgR0w2MjBVU0ItQSBiYXNlZCBjYWJsZXNcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjM2NjpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzY3LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTM3Mz1jb25maWcgVVNCX05FVF9ORVQxMDgwXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzc1LVx0ZGVmYXVsdCB5XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzozNzY6XHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTM3Ny1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0zODI9Y29uZmlnIFVTQl9ORVRfUExVU0Jcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zODUtXHQjIGFyZSBldmVyIHJlc29sdmVkIC4uLiB0aGVuIHJlbW92ZSBcJiMzNDtleHBlcmltZW50YWxcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjM4NjpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzg3LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTM5MT1jb25maWcgVVNCX05FVF9NQ1M3ODMwXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zOTItXHR0cmlzdGF0ZSBcJiMzNDtNb3NDaGlwIE1DUzc4MzAgYmFzZWQgRXRoZXJuZXQgYWRhcHRlcnNcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjM5MzpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzk0LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTM5OT1jb25maWcgVVNCX05FVF9STkRJU19IT1NUXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00MDAtXHR0cmlzdGF0ZSBcJiMzNDtIb3N0IGZvciBSTkRJUyBhbmQgQWN0aXZlU3luYyBkZXZpY2VzXCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo0MDE6XHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQwMi1cdHNlbGVjdCBVU0JfTkVUX0NEQ0VUSEVSXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NDE0PWNvbmZpZyBVU0JfTkVUX0NEQ19TVUJTRVRfRU5BQkxFXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00MTUtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NDE2Olx0ZGVwZW5kcyBvbiBVU0JfTkVUX0NEQ19TVUJTRVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQxNy1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTQxOD1jb25maWcgVVNCX05FVF9DRENfU1VCU0VUXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00MTktXHR0cmlzdGF0ZSBcJiMzNDtTaW1wbGUgVVNCIE5ldHdvcmsgTGlua3MgKENEQyBFdGhlcm5ldCBzdWJzZXQpXCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo0MjA6XHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQyMS1cdGRlZmF1bHQgeVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTQzMz1jb25maWcgVVNCX0FMSV9NNTYzMlxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDM0LVx0Ym9vbCBcJiMzNDtBTGkgTTU2MzIgYmFzZWQgJiMzOTtVU0IgMi4wIERhdGEgTGluayYjMzk7IGNhYmxlc1wmIzM0O1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NDM1Olx0ZGVwZW5kcyBvbiBVU0JfTkVUX0NEQ19TVUJTRVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQzNi1cdHNlbGVjdCBVU0JfTkVUX0NEQ19TVUJTRVRfRU5BQkxFXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NDQxPWNvbmZpZyBVU0JfQU4yNzIwXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00NDItXHRib29sIFwmIzM0O0FuY2hvckNoaXBzIDI3MjAgYmFzZWQgY2FibGVzIChYaXJjb20gUEdVTkVULCAuLi4pXCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo0NDM6XHRkZXBlbmRzIG9uIFVTQl9ORVRfQ0RDX1NVQlNFVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDQ0LVx0c2VsZWN0IFVTQl9ORVRfQ0RDX1NVQlNFVF9FTkFCTEVcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz00NTA9Y29uZmlnIFVTQl9CRUxLSU5cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQ1MS1cdGJvb2wgXCYjMzQ7ZVRFSyBiYXNlZCBob3N0LXRvLWhvc3QgY2FibGVzIChBZHZhbmNlLCBCZWxraW4sIC4uLilcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjQ1MjpcdGRlcGVuZHMgb24gVVNCX05FVF9DRENfU1VCU0VUXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00NTMtXHRzZWxlY3QgVVNCX05FVF9DRENfU1VCU0VUX0VOQUJMRVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTQ2MD1jb25maWcgVVNCX0FSTUxJTlVYXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00NjEtXHRib29sIFwmIzM0O0VtYmVkZGVkIEFSTSBMaW51eCBsaW5rcyAoaVBhcSwgLi4uKVwmIzM0O1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NDYyOlx0ZGVwZW5kcyBvbiBVU0JfTkVUX0NEQ19TVUJTRVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQ2My1cdHNlbGVjdCBVU0JfTkVUX0NEQ19TVUJTRVRfRU5BQkxFXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NDc4PWNvbmZpZyBVU0JfRVBTT04yODg4XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00NzktXHRib29sIFwmIzM0O0Vwc29uIDI4ODggYmFzZWQgZmlybXdhcmUgKERFVkVMT1BNRU5UKVwmIzM0O1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NDgwOlx0ZGVwZW5kcyBvbiBVU0JfTkVUX0NEQ19TVUJTRVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQ4MS1cdHNlbGVjdCBVU0JfTkVUX0NEQ19TVUJTRVRfRU5BQkxFXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NDg2PWNvbmZpZyBVU0JfS0MyMTkwXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00ODctXHRib29sIFwmIzM0O0tUIFRlY2hub2xvZ3kgS0MyMTkwIGJhc2VkIGNhYmxlcyAoSW5zdGFOZXQpXCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo0ODg6XHRkZXBlbmRzIG9uIFVTQl9ORVRfQ0RDX1NVQlNFVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDg5LVx0c2VsZWN0IFVTQl9ORVRfQ0RDX1NVQlNFVF9FTkFCTEVcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz00OTQ9Y29uZmlnIFVTQl9ORVRfWkFVUlVTXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00OTUtXHR0cmlzdGF0ZSBcJiMzNDtTaGFycCBaYXVydXMgKHN0b2NrIFJPTXMpIGFuZCBjb21wYXRpYmxlXCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo0OTY6XHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQ5Ny1cdHNlbGVjdCBVU0JfTkVUX0NEQ0VUSEVSXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NTEyPWNvbmZpZyBVU0JfTkVUX0NYODIzMTBfRVRIXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy01MTMtXHR0cmlzdGF0ZSBcJiMzNDtDb25leGFudCBDWDgyMzEwIFVTQiBldGhlcm5ldCBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo1MTQ6XHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTUxNS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz01MjA9Y29uZmlnIFVTQl9ORVRfS0FMTUlBXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy01MjEtXHR0cmlzdGF0ZSBcJiMzNDtTYW1zdW5nIEthbG1pYSBiYXNlZCBMVEUgVVNCIG1vZGVtXCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo1MjI6XHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTUyMy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz01MzA9Y29uZmlnIFVTQl9ORVRfUU1JX1dXQU5cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTUzMS1cdHRyaXN0YXRlIFwmIzM0O1FNSSBXV0FOIGRyaXZlciBmb3IgUXVhbGNvbW0gTVNNIGJhc2VkIDNHIGFuZCBMVEUgbW9kZW1zXCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo1MzI6XHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTUzMy1cdHNlbGVjdCBVU0JfV0RNXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NTUyPWNvbmZpZyBVU0JfSFNPXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy01NTMtXHR0cmlzdGF0ZSBcJiMzNDtPcHRpb24gVVNCIEhpZ2ggU3BlZWQgTW9iaWxlIERldmljZXNcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjU1NDpcdGRlcGVuZHMgb24gVVNCIFx1MDAyNlx1MDAyNiBSRktJTEwgXHUwMDI2XHUwMDI2IFRUWVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTU1LVx0ZGVmYXVsdCBuXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NTYzPWNvbmZpZyBVU0JfTkVUX0lOVDUxWDFcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTU2NC1cdHRyaXN0YXRlIFwmIzM0O0ludGVsbG9uIFBMQyBiYXNlZCB1c2IgYWRhcHRlclwmIzM0O1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NTY1Olx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy01NjYtXHRzZWxlY3QgVVNCX05FVF9DRENFVEhFUlxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTU3Mj1jb25maWcgVVNCX0NEQ19QSE9ORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTU3My1cdHRyaXN0YXRlIFwmIzM0O0NEQyBQaG9uZXQgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NTc0Olx0ZGVwZW5kcyBvbiBQSE9ORVQgXHUwMDI2XHUwMDI2IFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTU3NS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz01OTA9Y29uZmlnIFVTQl9TSUVSUkFfTkVUXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy01OTEtXHR0cmlzdGF0ZSBcJiMzNDtVU0ItdG8tV1dBTiBEcml2ZXIgZm9yIFNpZXJyYSBXaXJlbGVzcyBtb2RlbXNcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjU5MjpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTkzLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTU5OT1jb25maWcgVVNCX1ZMNjAwXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy02MDAtXHR0cmlzdGF0ZSBcJiMzNDtMRyBWTDYwMCBtb2RlbSBkb25nbGVcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjYwMTpcdGRlcGVuZHMgb24gVVNCX05FVF9DRENFVEhFUiBcdTAwMjZcdTAwMjYgVFRZXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy02MDItXHRzZWxlY3QgVVNCX0FDTVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTYxND1jb25maWcgVVNCX05FVF9DSDkyMDBcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTYxNS1cdHRyaXN0YXRlIFwmIzM0O1FpbmdIZW5nIENIOTIwMCBVU0IgZXRoZXJuZXQgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NjE2Olx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy02MTctXHRzZWxlY3QgTUlJXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NjI1PWNvbmZpZyBVU0JfTkVUX0FRQzExMVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNjI2LVx0dHJpc3RhdGUgXCYjMzQ7QXF1YW50aWEgQVF0aW9uIFVTQiB0byA1LzIuNUdiRSBDb250cm9sbGVycyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo2Mjc6XHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTYyOC1cdHNlbGVjdCBDUkMzMlxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTYzNj1jb25maWcgVVNCX1JUTDgxNTNfRUNNXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy02MzctXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NjM4Olx0ZGVwZW5kcyBvbiBVU0JfTkVUX0NEQ0VUSEVSIFx1MDAyNlx1MDAyNiAoVVNCX1JUTDgxNTIgfHwgVVNCX1JUTDgxNTI9bilcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTYzOS1cdGRlZmF1bHQgeVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxOTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTkxOQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVVNCIE5ldHdvcmtpbmcgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhpcyBVU0IgbmV0d29ya2luZyBzdHVmZiBpcyBjb25maWd1cmVkLiBJbml0aWFsbHksIEkgdGhvdWdodCB0aGF0IGBVU0JfVVNCTkVUYCBhbG9uZSB3b3VsZCBzdWZmaWNlLiBCdXQgdGhhdCBkZXBlbmRzIG9uIGBVU0JfTkVUX0RSSVZFUlNgLCB3aGljaCwgaW4gdHVybiwgaGluZ2VzIG9uIGJvdGggYFVTQmAgYW5kIGBORVRgIGJlaW5nIGVuYWJsZWQuIExldCBtZSB2ZXJpZnkgaWYgYFVTQl9ORVRfRFJJVkVSU2AgaXMsIGluIGZhY3QsIGVzc2VudGlhbCBoZXJlLgoKUmlnaHQsIGBVU0JfTkVUX0RSSVZFUlNgIGlzIGEgbWVudWNvbmZpZyBvcHRpb24uIEZyb20gd2hhdCBJIGNhbiBzZWUsIGBVU0JfTkVUX0NYODIzMTBfRVRIYCBhbmQgYFVTQl9VU0JORVRgIGFwcGVhciB0byBiZSB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gQnV0IGhvbGQgb24sIGBVU0JfTkVUX0NYODIzMTBfRVRIYCBoYXMgYSBkZXBlbmRlbmN5IG9uIGBVU0JfVVNCTkVUYC4gU28sIGluIGVzc2VuY2UsIEkgbmVlZCBib3RoIGBVU0JfTkVUX0NYODIzMTBfRVRIYCBhbmQgYFVTQl9VU0JORVRgIHRvIGhhdmUgdGhpcyBmdW5jdGlvbmFsaXR5LgoKTm93LCB0aGF0IGJyaW5ncyBtZSBiYWNrIHRvIGBVU0JfTkVUX0RSSVZFUlNgLiBJdCAqaXMqIGEgbWVudWNvbmZpZywgd2hpY2ggbWVhbnMgaXQgcmVwcmVzZW50cyBhbiBhY3R1YWwgY29uZmlndXJhdGlvbiBvcHRpb24uIEkgc2hvdWxkIGNoZWNrIGBkcml2ZXJzL25ldC91c2IvS2NvbmZpZ2AgYXJvdW5kIGBVU0JfTkVUX0RSSVZFUlNgIHRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiBob3cgaXQgZml0cyBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTk6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWVudWNvbmZpZyBVU0JfTkVUX0RSSVZFUlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvS2NvbmZpZz01PWNvbW1lbnQgXCYjMzQ7SG9zdC1zaWRlIFVTQiBzdXBwb3J0IGlzIG5lZWRlZCBmb3IgVVNCIE5ldHdvcmsgQWRhcHRlciBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNy1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjg6bWVudWNvbmZpZyBVU0JfTkVUX0RSSVZFUlNcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTktXHR0cmlzdGF0ZSBcJiMzNDtVU0IgTmV0d29yayBBZGFwdGVyc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxOTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjUxNwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDEyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIExvZ2ljKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvbmZpZ3VyYXRpb24gcHJvYmxlbSwgYW5kIGl0JiMzOTtzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEZpcnN0LCBJIHNlZSB0aGF0IGBVU0JfTkVUX0RSSVZFUlNgIGlzIGluZGVlZCBhIGNvbmZpZyBvcHRpb24g4oCTIGdvb2QsIHRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBHaXZlbiB0aGF0LCBpdCBzZWVtcyBsb2dpY2FsIHRoYXQgd2Ugc2hvdWxkIGF1dG9tYXRpY2FsbHkgaW5jbHVkZSBgVVNCX1VTQk5FVGAgYW5kIGBVU0JfTkVUX0NYODIzMTBfRVRIYCwgYXMgdGhleSYjMzk7cmUgYWxsIHJlbGF0ZWQgdG8gVVNCIG5ldHdvcmsgZHJpdmVycy4KCkhvbGQgb24gYSBzZWNvbmQsIGEgcXVpY2sgcmVhbGl0eSBjaGVjayBpcyBpbiBvcmRlci4gSXQgbG9va3MgbGlrZSBgVVNCX05FVF9EUklWRVJTYCBpcyBhY3R1YWxseSBhIG1lbnVjb25maWcgb3B0aW9uLCBtYWtpbmcgaXQgZWl0aGVyIGEgYm9vbGVhbiBvciB0cmlzdGF0ZSwgd2hpY2ggY2hhbmdlcyBob3cgaXQgYWZmZWN0cyBvdGhlciBvcHRpb25zLiBMZXQmIzM5O3MgbWFrZSBzdXJlIHRoYXQgYFVTQl9VU0JORVRgIGhhcyB0aGUgcmlnaHQgZGVwZW5kZW5jaWVzLgoKQWgsIEkgc2VlIGl0IG5vdy4gVGFraW5nIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGBkcml2ZXJzL25ldC91c2IvS2NvbmZpZ2AgZmlsZSwgSSBjYW4gc2VlIHRoYXQgKmV2ZXJ5dGhpbmcqIHdpdGhpbiBpdCBpcyBuZXN0ZWQgaW5zaWRlIGFuIGBpZiBVU0JfTkVUX0RSSVZFUlNgIGNvbmRpdGlvbmFsLiBUaGF0JiMzOTtzIHRoZSBrZXkuIFNvLCB0aGUgaW5jbHVzaW9uIG9mIGBVU0JfVVNCTkVUYCBhbmQgdGhlIG90aGVycyBoaW5nZXMgZGlyZWN0bHkgb24gYFVTQl9ORVRfRFJJVkVSU2AgYmVpbmcgZW5hYmxlZCwgd2hpY2ggaXMgZXhhY3RseSBob3cgaXQgc2hvdWxkIGJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxOTo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgVVNCIE5ldHdvcmsgZGV2aWNlcyBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdGNvbW1lbnQgXCYjMzQ7SG9zdC1zaWRlIFVTQiBzdXBwb3J0IGlzIG5lZWRlZCBmb3IgVVNCIE5ldHdvcmsgQWRhcHRlciBzdXBwb3J0XCYjMzQ7XG4gICA2Olx0XHRkZXBlbmRzIG9uICFVU0IgXHUwMDI2XHUwMDI2IE5FVFxuICAgNzpcdFxuICAgODpcdG1lbnVjb25maWcgVVNCX05FVF9EUklWRVJTXG4gICA5Olx0XHR0cmlzdGF0ZSBcJiMzNDtVU0IgTmV0d29yayBBZGFwdGVyc1wmIzM0O1xuICAxMDpcdFx0ZGVmYXVsdCBVU0IgaWYgVVNCXG4gIDExOlx0XHRkZXBlbmRzIG9uIFVTQiBcdTAwMjZcdTAwMjYgTkVUXG4gIDEyOlx0XG4gIDEzOlx0aWYgVVNCX05FVF9EUklWRVJTXG4gIDE0Olx0XG4gIDE1Olx0Y29uZmlnIFVTQl9DQVRDXG4gIDE2Olx0XHR0cmlzdGF0ZSBcJiMzNDtVU0IgQ0FUQyBOZXRNYXRlLWJhc2VkIEV0aGVybmV0IGRldmljZSBzdXBwb3J0XCYjMzQ7XG4gIDE3Olx0XHRzZWxlY3QgQ1JDMzJcbiAgMTg6XHRcdGhlbHBcbiAgMTk6XHRcdCAgU2F5IFkgaWYgeW91IHdhbnQgdG8gdXNlIG9uZSBvZiB0aGUgZm9sbG93aW5nIDEwTWJwcyBVU0IgRXRoZXJuZXRcbiAgMjA6XHRcdCAgZGV2aWNlIGJhc2VkIG9uIHRoZSBFTDEyMTBBIGNoaXAuIFN1cHBvcnRlZCBkZXZpY2VzIGFyZTpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTk6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMxOTQKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFVTQiBOZXR3b3JrIERyaXZlciBGaXgqKgoKT2theSwgc28gdGhlIGNvZGUgaW4gcXVlc3Rpb24gaXMgZGVhbGluZyB3aXRoIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkgd2l0aGluIHRoZSBVU0IgbmV0d29yayBkcml2ZXIuIE15IGluaXRpYWwgYXNzZXNzbWVudCBoaW5nZXMgb24gdGhlIGBpZiBVU0JfTkVUX0RSSVZFUlNgIHByZXByb2Nlc3NvciBjaGVjaywgd2hpY2ggdGVsbHMgbWUgdGhlIGZpeCBpcyBjb25kaXRpb25hbGx5IGNvbXBpbGVkLiBXZSBuZWVkIHRvIGJlIHN1cmUgdGhhdCBgVVNCX05FVF9EUklWRVJTYCwgYFVTQl9VU0JORVRgLCBhbmQgYFVTQl9ORVRfQ1g4MjMxMF9FVEhgIGFyZSBhbGwgZW5hYmxlZCBmb3IgdGhpcyB0byBldmVuIGJlIHJlbGV2YW50LgoKVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBzZWVtcyB0byBjZW50ZXIgYXJvdW5kIHRoZSBgY3g4MjMxMF9yeF9maXh1cGAgZnVuY3Rpb24uIFRoZSBrZXkgaXMgdGhhdCB0aGUgZml4IGFkZHJlc3NlcyBhIHBvc3NpYmxlIG91dC1vZi1ib3VuZHMgcmVhZCwgb3IgYSBzaW1pbGFyIHByb2JsZW0sIHdpdGhpbiB0aGF0IHNwZWNpZmljIGZ1bmN0aW9uLiBUaGUgZml4IGludHJvZHVjZXMgYSBjaGVjaywgc3BlY2lmaWNhbGx5IGBkZXYtJmd0O3BhcnRpYWxfcmVtICZndDsgc2tiLSZndDtsZW5gLCB3aGljaCBpbXBsaWVzIHRoZSBvcmlnaW5hbCBjb2RlIHdhcyB2dWxuZXJhYmxlIHRvIGEgc2NlbmFyaW8gd2hlcmUgd2Ugd2VyZSByZWFkaW5nIGJleW9uZCB0aGUgYm91bmRzIG9mIGEgcmVjZWl2ZWQgcGFja2V0LiBUaGUgZmFjdCB0aGF0IHRoaXMgaXMgcmVhY2hhYmxlIHZpYSBVU0IgZW11bGF0aW9uIGlzIGEgY3JpdGljYWwgZGV0YWlsLgoKTGV0IG1lIHF1aWNrbHkgc2NhbiBmb3IgYW55IG90aGVyIHBvdGVudGlhbGx5IGFmZmVjdGVkIGZ1bmN0aW9ucyB3aXRoaW4gdGhpcyBkcml2ZXIuIGBjeDgyMzEwX3R4X2ZpeHVwYCwgYGN4ODIzMTBfYmluZGAsIGFuZCBgY3g4MjMxMF91bmJpbmRgIGFsbCBjb21lIHVwLCBidXQgc2luY2UgYGN4ODIzMTBfcnhfZml4dXBgIGlzIHdoZXJlIHRoZSBtb2RpZmljYXRpb24gaXMgb2NjdXJyaW5nLCB0aGF0JiMzOTtzIGRlZmluaXRlbHkgdGhlIGtleSBmdW5jdGlvbiB0byBhbmFseXplLgoKTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzOiBjYW4gd2UgYWN0dWFsbHkgKnRyaWdnZXIqIGBjeDgyMzEwX3J4X2ZpeHVwYD8gWWVzLCBpdCYjMzk7cyBjYWxsZWQgYnkgdGhlIGB1c2JuZXRgIGNvcmUgd2hlbiBwYWNrZXRzIGFyZSByZWNlaXZlZC4gU28sIHRoZSBhdHRhY2sgdmVjdG9yIGlzIGxpa2VseSB0aHJvdWdoIGEgY3JhZnRlZCBuZXR3b3JrIHBhY2tldCByZWNlaXZlZCBvdmVyIGEgVVNCIG5ldHdvcmsgY29ubmVjdGlvbi4gVGltZSB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGB1c2JuZXRgIGNvcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE5OjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J4X2ZpeHVwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi91c2JuZXQuYz0zMTI9c3RhdGljIHZvaWQgX191c2JuZXRfc3RhdHVzX3N0b3BfZm9yY2Uoc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYy0zMjItLyogUGFzc2VzIHRoaXMgcGFja2V0IHVwIHRoZSBzdGFjaywgdXBkYXRpbmcgaXRzIGFjY291bnRpbmcuXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmM6MzIzOiAqIFNvbWUgbGluayBwcm90b2NvbHMgYmF0Y2ggcGFja2V0cywgc28gdGhlaXIgcnhfZml4dXAgcGF0aHNcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYy0zMjQtICogY2FuIHJldHVybiBjbG9uZXMgYXMgd2VsbCBhcyBqdXN0IG1vZGlmeSB0aGUgb3JpZ2luYWwgc2tiLlxuLS1cbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYz0zMjY9dm9pZCB1c2JuZXRfc2tiX3JldHVybihzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTMzNi1cbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYzozMzc6XHQvKiBvbmx5IHVwZGF0ZSBpZiB1bnNldCB0byBhbGxvdyBtaW5pZHJpdmVyIHJ4X2ZpeHVwIG92ZXJyaWRlICovXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmMtMzM4LVx0aWYgKHNrYi1cdTAwM2Vwcm90b2NvbCA9PSAwKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYz01Njk9c3RhdGljIGlubGluZSBpbnQgcnhfcHJvY2VzcyhzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmMtNTcwLXtcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYzo1NzE6XHRpZiAoZGV2LVx1MDAzZWRyaXZlcl9pbmZvLVx1MDAzZXJ4X2ZpeHVwIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jOjU3MjpcdCAgICAhZGV2LVx1MDAzZWRyaXZlcl9pbmZvLVx1MDAzZXJ4X2ZpeHVwKGRldiwgc2tiKSkge1xuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jOjU3MzpcdFx0LyogV2l0aCBSWF9BU1NFTUJMRSwgcnhfZml4dXAoKSBtdXN0IHVwZGF0ZSBjb3VudGVycyAqL1xuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTU3NC1cdFx0aWYgKCEoZGV2LVx1MDAzZWRyaXZlcl9pbmZvLVx1MDAzZWZsYWdzIFx1MDAyNiBGTEFHX1JYX0FTU0VNQkxFKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTk6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQyOTMKCQkJCQkJCW91dHB1dDogMTMwCgkJCQkJCQl0aG91Z2h0czogMTYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBgY3g4MjMxMF9yeF9maXh1cGAgVnVsbmVyYWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBjb25maXJtZWQgaXQ6IGByeF9wcm9jZXNzYCBkb2VzIGluZGVlZCBjYWxsIGBkZXYtJmd0O2RyaXZlcl9pbmZvLSZndDtyeF9maXh1cChkZXYsIHNrYilgLiBUaGF0JiMzOTtzIHRoZSBlbnRyeSBwb2ludCBJIHdhcyBsb29raW5nIGZvci4gTm93LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MgYW5kIHNldCB1cCB0aGUgZnV6emluZyB0YXJnZXRzLgoKQmFzZWQgb24gdGhlIGNvZGUgY2hhbmdlcyBhbmQgdGhlIHBvdGVudGlhbCBmb3IgYSBuZXcgdnVsbmVyYWJpbGl0eSwgSSYjMzk7bSBtYXJraW5nIHRoaXMgYXMgYFdvcnRoRnV6emluZzogdHJ1ZWAuIFRoaXMgbG9va3MgcHJvbWlzaW5nLiBUaGUgY3JpdGljYWwgc3ltYm9sIHRvIGZvY3VzIG9uIGlzLCBvZiBjb3Vyc2UsIGBjeDgyMzEwX3J4X2ZpeHVwYC4KClRvIGVuc3VyZSB0aGUgZnV6emVyIGNhbiByZWFjaCB0aGlzIGNvZGUsIEkgbmVlZCB0byBlbmFibGUgYSBmZXcgY29uZmlndXJhdGlvbnMuIEkmIzM5O20gZ29pbmcgdG8gc2V0IGBFbmFibGVDb25maWdzYCB0byBpbmNsdWRlIGAmIzM0O1VTQl9ORVRfRFJJVkVSUyYjMzQ7YCwgYCYjMzQ7VVNCX1VTQk5FVCYjMzQ7YCwgYW5kIGAmIzM0O1VTQl9ORVRfQ1g4MjMxMF9FVEgmIzM0O2AuCgpUaGUgcmVhc29uaW5nIGlzIHNvbGlkOiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBhIGJvdW5kcyBjaGVjayB3aXRoaW4gYGN4ODIzMTBfcnhfZml4dXBgIHRvIGhhbmRsZSB0aGUgY2FzZSB3aGVuIGBkZXYtJmd0O3BhcnRpYWxfcmVtICZndDsgc2tiLSZndDtsZW5gLiBUaGlzIGlzIGEgY2xlYXIsIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUgVVNCIG5ldHdvcmsgZHJpdmVyJiMzOTtzIHJlY2VpdmUgcGF0aCwgYW5kIGl0JiMzOTtzIHJlYWNoYWJsZSB0aHJvdWdoIFVTQiBlbXVsYXRpb24uIFRoaXMgaXMgYSBjbGFzc2ljIGNhc2Ugb2YgaW50cm9kdWNpbmcgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eSB0aHJvdWdoIGEgZml4LCBzbyB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggbXkgdGltZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTk6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9ORVRfRFJJVkVSUyYjMzQ7LAogICAgJiMzNDtVU0JfVVNCTkVUJiMzNDssCiAgICAmIzM0O1VTQl9ORVRfQ1g4MjMxMF9FVEgmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjeDgyMzEwX3J4X2ZpeHVwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgaW4gY3g4MjMxMF9yeF9maXh1cCB0byBwcmV2ZW50IHByb2Nlc3Npbmcgd2hlbiBkZXYtXHUwMDNlcGFydGlhbF9yZW0gXHUwMDNlIHNrYi1cdTAwM2VsZW4uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgVVNCIG5ldHdvcmsgZHJpdmVyJiMzOTtzIFJYIHBhdGgsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VVNCX05FVF9EUklWRVJTJiMzNDssCiAgICAmIzM0O1VTQl9VU0JORVQmIzM0OywKICAgICYjMzQ7VVNCX05FVF9DWDgyMzEwX0VUSCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2N4ODIzMTBfcnhfZml4dXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBpbiBjeDgyMzEwX3J4X2ZpeHVwIHRvIHByZXZlbnQgcHJvY2Vzc2luZyB3aGVuIGRldi1cdTAwM2VwYXJ0aWFsX3JlbSBcdTAwM2Ugc2tiLVx1MDAzZWxlbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBVU0IgbmV0d29yayBkcml2ZXImIzM5O3MgUlggcGF0aCwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBVU0IgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxOTo0NTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE5OjQ1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBmcm9tIGBza2ItXHUwMDNlZGF0YWAgaW4gYGN4ODIzMTBfcnhfZml4dXBgLiBXaGVuIGBkZXYtXHUwMDNlcGFydGlhbF9yZW1gIGlzIGxhcmdlciB0aGFuIGBza2ItXHUwMDNlbGVuYCwgdGhlIHN1YnNlcXVlbnQgYG1lbWNweWAgb3BlcmF0aW9uIHJlYWRzIHBhc3QgdGhlIGVuZCBvZiB0aGUgYHNrYi1cdTAwM2VkYXRhYCBidWZmZXIuIFRoaXMgaXMgYSBjbGFzc2ljIGhlYXAgb3V0LW9mLWJvdW5kcyByZWFkIGJ1Zywgd2hpY2ggaXMgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlIGlzIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVhayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBpbnZvbHZlZCB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGRjMjViODgwOTIzNzkxYTc4OTQ0YmZiYzNkYWQzNDFjNTc0YWJhYjIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEF1ZyAxNCAxOTo0MzoxNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jIGIvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMKaW5kZXggMDY4YWNiMDUyYWRiMC4uOGNhNmI3NWZkZDIwZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMKQEAgLTI1MSw2ICYjNDM7MjUxLDEzIEBAIHN0YXRpYyBpbnQgY3g4MjMxMF9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpCiAJICogZW5kIG9mIHRoYXQgcGFja2V0IGF0IHRoZSBiZWdpbm5pbmcuCiAJICovCiAJaWYgKGRldi0mZ3Q7cGFydGlhbF9yZW0pIHsKJiM0MzsJCWlmIChkZXYtJmd0O3BhcnRpYWxfcmVtICZndDsgc2tiLSZndDtsZW4pIHsKJiM0MzsJCQluZXRkZXZfZXJyKGRldi0mZ3Q7bmV0LAomIzQzOwkJCQkgICAmIzM0O1JYIHBhcnRpYWwgZnJhbWU6IG5lZWQgJWx1LCBnb3QgJXVcbiYjMzQ7LAomIzQzOwkJCQkgICBkZXYtJmd0O3BhcnRpYWxfcmVtLCBza2ItJmd0O2xlbik7CiYjNDM7CQkJZGV2LSZndDtwYXJ0aWFsX3JlbSA9IDA7CiYjNDM7CQkJcmV0dXJuIDA7CiYjNDM7CQl9CiAJCWxlbiA9IGRldi0mZ3Q7cGFydGlhbF9sZW4gJiM0MzsgZGV2LSZndDtwYXJ0aWFsX3JlbTsKIAkJc2tiMiA9IGFsbG9jX3NrYihsZW4sIEdGUF9BVE9NSUMpOwogCQlpZiAoIXNrYjIpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxOTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDg3CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogNDA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEJvdW5kcyBDaGVjayBpbiBgY3g4MjMxMF9yeF9maXh1cGAqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguY2AuIEl0JiMzOTtzIGludHJvZHVjaW5nIGEgYm91bmRzIGNoZWNrIGluIHRoZSBgY3g4MjMxMF9yeF9maXh1cGAgZnVuY3Rpb24uIExldCYjMzk7cyBzZWUsIHRoZSBmdW5jdGlvbiBpcyBkZWFsaW5nIHdpdGggcGFydGlhbCBmcmFtZXMgaW4gVVNCIG5ldHdvcmsgcGFja2V0cy4gVGhlIGFkZGVkIGNoZWNrIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZDogYGlmIChkZXYtJmd0O3BhcnRpYWxfcmVtICZndDsgc2tiLSZndDtsZW4pYC4gTXkgZmlyc3QgdGhvdWdodCBpcywgd2h5IGlzIHRoaXMgbmVlZGVkPwoKUmlnaHQsIGBkZXYtJmd0O3BhcnRpYWxfcmVtYCByZXByZXNlbnRzIHRoZSByZW1haW5pbmcgYnl0ZXMgb2YgYSBmcmFnbWVudGVkIGZyYW1lLCBhbmQgYHNrYi0mZ3Q7bGVuYCBpcyB0aGUgbGVuZ3RoIG9mIHRoZSAqY3VycmVudGx5KiByZWNlaXZlZCBgc2tiYC4gSWYgYGRldi0mZ3Q7cGFydGlhbF9yZW1gIGlzIGxhcmdlciB0aGFuIHdoYXQgd2UmIzM5O3ZlICpnb3QqIGluIGBza2JgLCB3ZSYjMzk7dmUgZ290IGEgcHJvYmxlbS4gV2l0aG91dCB0aGlzIGNoZWNrLCB0aGUgY29kZSB3b3VsZCB0cnkgdG8gY29weSBgZGV2LSZndDtwYXJ0aWFsX3JlbWAgYnl0ZXMgZnJvbSB0aGUgYHNrYmAgdG8gYHNrYjJgLiBUaGF0JiMzOTtzIGEgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgcmVhZCwgcGxhaW4gYW5kIHNpbXBsZS4gV2UgYXJlIHRyeWluZyB0byByZWFkIG1vcmUgZGF0YSB0aGFuIGV4aXN0cyBpbiB0aGUgYnVmZmVyLgoKTm93LCB0aGF0JiMzOTtzIGludGVyZXN0aW5nLiBJIGtub3cgS0FTQU4gKnNob3VsZCogY2F0Y2ggb3V0LW9mLWJvdW5kcyByZWFkcyBsaWtlIHRoaXMsIGJ1dCB0aGlzIGNoZWNrIGlzIGEgZ29vZCBpZGVhIG5vbmV0aGVsZXNzLiBJdCBwcmV2ZW50cyB0aGUgY3Jhc2guIFdoYXQgYWJvdXQgdW5pbml0aWFsaXplZCBtZW1vcnk/IE5vLCB0aGF0IGRvZXNuJiMzOTt0IHNlZW0gdG8gYmUgYSBmYWN0b3IgaGVyZS4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgY29kZSBhcm91bmQgYGN4ODIzMTBfcnhfZml4dXBgIHRvIGJlIGFic29sdXRlbHkgc3VyZS4gR290dGEgYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE5OjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2N4ODIzMTBfcnhfZml4dXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYz0yMjY9c3RhdGljIHZvaWQgY3g4MjMxMF91bmJpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yNDItICovXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoyNDM6c3RhdGljIGludCBjeDgyMzEwX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTI0NC17XG4tLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM9MzQxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm9cdGN4ODIzMTBfaW5mbyA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zNDUtXHQudW5iaW5kXHRcdD0gY3g4MjMxMF91bmJpbmQsXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzozNDY6XHQucnhfZml4dXBcdD0gY3g4MjMxMF9yeF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM0Ny1cdC50eF9maXh1cFx0PSBjeDgyMzEwX3R4X2ZpeHVwLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxOTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTk4CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0YWtlIG9uIGBjeDgyMzEwX3J4X2ZpeHVwYDoKCioqQW5hbHl6aW5nIGBjeDgyMzEwX3J4X2ZpeHVwYCoqCgpBbHJpZ2h0LCBJJiMzOTttIGdvaW5nIHRvIHRha2UgYSBsb29rIGF0IGBjeDgyMzEwX3J4X2ZpeHVwYC4gSW1tZWRpYXRlbHksIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7UlggZml4dXAmIzM0OyBpbXBsaWVzIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggcmVjZWl2ZSBwcm9jZXNzaW5nLCBwcm9iYWJseSBvbiBhbiBJbnRlbCBjaGlwc2V0LCBnaXZlbiB0aGUgbmFtaW5nIGNvbnZlbnRpb24uIE15IGltbWVkaWF0ZSBleHBlY3RhdGlvbiBpcyB0aGlzIGZ1bmN0aW9uIGlzIHRhc2tlZCB3aXRoIGhhbmRsaW5nIHNwZWNpZmljLCBwb3RlbnRpYWxseSBhbm9tYWxvdXMsIHJlY2VpdmUgcGFja2V0cyBmcm9tIHRoZSBDWDgyMzEwIGNoaXBzZXQsIGxpa2VseSBzb21lIGtpbmQgb2Ygc2lsaWNvbiBidWcgd29ya2Fyb3VuZCwgb3IgcG9zc2libHkgdG8gYWRqdXN0IGZvciBoYXJkd2FyZSBxdWlya3MuIFRoZSAmIzM0O2ZpeHVwJiMzNDsgc3VnZ2VzdHMgdGhpcyBpcyBub3QgdGhlIG5vcm1hbCBwYXRoLCB0aGVyZSBpcyBzb21ldGhpbmcgdW51c3VhbCwgb3IgYW4gZXJyb3IgY29uZGl0aW9uLCB0aGUgY29kZSBuZWVkcyB0byBhZGRyZXNzLiBXZSB3aWxsIGJlIGxvb2tpbmcgZm9yIHBhY2tldCB2YWxpZGF0aW9uLCBoZWFkZXIgYWRqdXN0bWVudHMsIG9yIG1heWJlIGV2ZW4gcGFja2V0IGRyb3BwaW5nIGlmIHRoZSBoYXJkd2FyZSBnaXZlcyB1cyBiYWQgZGF0YS4gVGhlIGdvYWwgd2lsbCBiZSB0byBlaXRoZXIgY29ycmVjdCB0aGUgZXJyYW50IGRhdGEgZm9yIHRoZSB1cHBlciBsYXllcnMgb2YgdGhlIG5ldHdvcmsgc3RhY2ssIG9yIHNhZmVseSBkaXNjYXJkIGl0IHRvIHByZXZlbnQgY29ycnVwdGlvbiBvciB1bmV4cGVjdGVkIGJlaGF2aW91ciwgYXMgd2VsbCBhcyBoYW5kbGUgYW55IGVycm9ycy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTk6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI0MywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI0MzpcdHN0YXRpYyBpbnQgY3g4MjMxMF9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4gMjQ0Olx0e1xuIDI0NTpcdFx0aW50IGxlbjtcbiAyNDY6XHRcdHN0cnVjdCBza19idWZmICpza2IyO1xuIDI0NzpcdFx0c3RydWN0IGN4ODIzMTBfcHJpdiAqcHJpdiA9IGRldi1cdTAwM2Vkcml2ZXJfcHJpdjtcbiAyNDg6XHRcbiAyNDk6XHRcdC8qXG4gMjUwOlx0XHQgKiBJZiB0aGUgbGFzdCBza2IgZW5kZWQgd2l0aCBhbiBpbmNvbXBsZXRlIHBhY2tldCwgdGhpcyBza2IgY29udGFpbnNcbiAyNTE6XHRcdCAqIGVuZCBvZiB0aGF0IHBhY2tldCBhdCB0aGUgYmVnaW5uaW5nLlxuIDI1MjpcdFx0ICovXG4gMjUzOlx0XHRpZiAoZGV2LVx1MDAzZXBhcnRpYWxfcmVtKSB7XG4gMjU0Olx0XHRcdGlmIChkZXYtXHUwMDNlcGFydGlhbF9yZW0gXHUwMDNlIHNrYi1cdTAwM2VsZW4pIHtcbiAyNTU6XHRcdFx0XHRuZXRkZXZfZXJyKGRldi1cdTAwM2VuZXQsXG4gMjU2Olx0XHRcdFx0XHQgICBcJiMzNDtSWCBwYXJ0aWFsIGZyYW1lOiBuZWVkICVsdSwgZ290ICV1XFxuXCYjMzQ7LFxuIDI1NzpcdFx0XHRcdFx0ICAgZGV2LVx1MDAzZXBhcnRpYWxfcmVtLCBza2ItXHUwMDNlbGVuKTtcbiAyNTg6XHRcdFx0XHRkZXYtXHUwMDNlcGFydGlhbF9yZW0gPSAwO1xuIDI1OTpcdFx0XHRcdHJldHVybiAwO1xuIDI2MDpcdFx0XHR9XG4gMjYxOlx0XHRcdGxlbiA9IGRldi1cdTAwM2VwYXJ0aWFsX2xlbiAmIzQzOyBkZXYtXHUwMDNlcGFydGlhbF9yZW07XG4gMjYyOlx0XHRcdHNrYjIgPSBhbGxvY19za2IobGVuLCBHRlBfQVRPTUlDKTtcbiAyNjM6XHRcdFx0aWYgKCFza2IyKVxuIDI2NDpcdFx0XHRcdHJldHVybiAwO1xuIDI2NTpcdFx0XHRza2JfcHV0KHNrYjIsIGxlbik7XG4gMjY2Olx0XHRcdG1lbWNweShza2IyLVx1MDAzZWRhdGEsICh2b2lkICopZGV2LVx1MDAzZXBhcnRpYWxfZGF0YSxcbiAyNjc6XHRcdFx0ICAgICAgIGRldi1cdTAwM2VwYXJ0aWFsX2xlbik7XG4gMjY4Olx0XHRcdG1lbWNweShza2IyLVx1MDAzZWRhdGEgJiM0MzsgZGV2LVx1MDAzZXBhcnRpYWxfbGVuLCBza2ItXHUwMDNlZGF0YSxcbiAyNjk6XHRcdFx0ICAgICAgIGRldi1cdTAwM2VwYXJ0aWFsX3JlbSk7XG4gMjcwOlx0XHRcdHVzYm5ldF9za2JfcmV0dXJuKGRldiwgc2tiMik7XG4gMjcxOlx0XHRcdHNrYl9wdWxsKHNrYiwgKGRldi1cdTAwM2VwYXJ0aWFsX3JlbSAmIzQzOyAxKSBcdTAwMjYgfjEpO1xuIDI3MjpcdFx0XHRkZXYtXHUwMDNlcGFydGlhbF9yZW0gPSAwO1xuIDI3MzpcdFx0XHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2MgMilcbiAyNzQ6XHRcdFx0XHRyZXR1cm4gMTtcbiAyNzU6XHRcdH1cbiAyNzY6XHRcbiAyNzc6XHRcdC8qIGEgc2tiIGNhbiBjb250YWluIG11bHRpcGxlIHBhY2tldHMgKi9cbiAyNzg6XHRcdHdoaWxlIChza2ItXHUwMDNlbGVuIFx1MDAzZSAxKSB7XG4gMjc5Olx0XHRcdC8qIGZpcnN0IHR3byBieXRlcyBhcmUgcGFja2V0IGxlbmd0aCAqL1xuIDI4MDpcdFx0XHRsZW4gPSBza2ItXHUwMDNlZGF0YVswXSB8IChza2ItXHUwMDNlZGF0YVsxXSBcdTAwM2NcdTAwM2MgOCk7XG4gMjgxOlx0XHRcdHNrYl9wdWxsKHNrYiwgMik7XG4gMjgyOlx0XG4gMjgzOlx0XHRcdC8qIGlmIGxhc3QgcGFja2V0IGluIHRoZSBza2IsIGxldCB1c2JuZXQgdG8gcHJvY2VzcyBpdCAqL1xuIDI4NDpcdFx0XHRpZiAobGVuID09IHNrYi1cdTAwM2VsZW4gfHwgbGVuICYjNDM7IDEgPT0gc2tiLVx1MDAzZWxlbikge1xuIDI4NTpcdFx0XHRcdHNrYl90cmltKHNrYiwgbGVuKTtcbiAyODY6XHRcdFx0XHRicmVhaztcbiAyODc6XHRcdFx0fVxuIDI4ODpcdFxuIDI4OTpcdFx0XHRpZiAobGVuID09IDB4ZmZmZikge1xuIDI5MDpcdFx0XHRcdG5ldGRldl9pbmZvKGRldi1cdTAwM2VuZXQsIFwmIzM0O3JvdXRlciB3YXMgcmVib290ZWQsIHJlLWVuYWJsaW5nIGV0aGVybmV0IG1vZGVcJiMzNDspO1xuIDI5MTpcdFx0XHRcdHNjaGVkdWxlX3dvcmsoXHUwMDI2cHJpdi1cdTAwM2VyZWVuYWJsZV93b3JrKTtcbiAyOTI6XHRcdFx0fSBlbHNlIGlmIChsZW4gXHUwMDNlIENYODIzMTBfTVRVKSB7XG4gMjkzOlx0XHRcdFx0bmV0ZGV2X2VycihkZXYtXHUwMDNlbmV0LCBcJiMzNDtSWCBwYWNrZXQgdG9vIGxvbmc6ICVkIEJcXG5cJiMzNDssIGxlbik7XG4gMjk0Olx0XHRcdFx0cmV0dXJuIDA7XG4gMjk1Olx0XHRcdH1cbiAyOTY6XHRcbiAyOTc6XHRcdFx0LyogaW5jb21wbGV0ZSBwYWNrZXQsIHNhdmUgaXQgZm9yIHRoZSBuZXh0IHNrYiAqL1xuIDI5ODpcdFx0XHRpZiAobGVuIFx1MDAzZSBza2ItXHUwMDNlbGVuKSB7XG4gMjk5Olx0XHRcdFx0ZGV2LVx1MDAzZXBhcnRpYWxfbGVuID0gc2tiLVx1MDAzZWxlbjtcbiAzMDA6XHRcdFx0XHRkZXYtXHUwMDNlcGFydGlhbF9yZW0gPSBsZW4gLSBza2ItXHUwMDNlbGVuO1xuIDMwMTpcdFx0XHRcdG1lbWNweSgodm9pZCAqKWRldi1cdTAwM2VwYXJ0aWFsX2RhdGEsIHNrYi1cdTAwM2VkYXRhLFxuIDMwMjpcdFx0XHRcdCAgICAgICBkZXYtXHUwMDNlcGFydGlhbF9sZW4pO1xuIDMwMzpcdFx0XHRcdHNrYl9wdWxsKHNrYiwgc2tiLVx1MDAzZWxlbik7XG4gMzA0Olx0XHRcdFx0YnJlYWs7XG4gMzA1Olx0XHRcdH1cbiAzMDY6XHRcbiAzMDc6XHRcdFx0c2tiMiA9IGFsbG9jX3NrYihsZW4sIEdGUF9BVE9NSUMpO1xuIDMwODpcdFx0XHRpZiAoIXNrYjIpXG4gMzA5Olx0XHRcdFx0cmV0dXJuIDA7XG4gMzEwOlx0XHRcdHNrYl9wdXQoc2tiMiwgbGVuKTtcbiAzMTE6XHRcdFx0bWVtY3B5KHNrYjItXHUwMDNlZGF0YSwgc2tiLVx1MDAzZWRhdGEsIGxlbik7XG4gMzEyOlx0XHRcdC8qIHByb2Nlc3MgdGhlIHBhY2tldCAqL1xuIDMxMzpcdFx0XHR1c2JuZXRfc2tiX3JldHVybihkZXYsIHNrYjIpO1xuIDMxNDpcdFxuIDMxNTpcdFx0XHRza2JfcHVsbChza2IsIChsZW4gJiM0MzsgMSkgXHUwMDI2IH4xKTtcbiAzMTY6XHRcdH1cbiAzMTc6XHRcbiAzMTg6XHRcdC8qIGxldCB1c2JuZXQgcHJvY2VzcyB0aGUgbGFzdCBwYWNrZXQgKi9cbiAzMTk6XHRcdHJldHVybiAxO1xuIDMyMDpcdH1cbiAzMjE6XHRcbiAzMjI6XHQvKiBUWCBpcyBlYXN5LCBqdXN0IGFkZCAyIGJ5dGVzIG9mIGxlbmd0aCBhdCB0aGUgYmVnaW5uaW5nICovXG4gMzIzOlx0c3RhdGljIHN0cnVjdCBza19idWZmICpjeDgyMzEwX3R4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiAzMjQ6XHRcdFx0XHRcdCAgICAgICBnZnBfdCBmbGFncylcbiAzMjU6XHR7XG4gMzI2Olx0XHRpbnQgbGVuID0gc2tiLVx1MDAzZWxlbjtcbiAzMjc6XHRcbiAzMjg6XHRcdGlmIChza2JfY293X2hlYWQoc2tiLCAyKSkge1xuIDMyOTpcdFx0XHRkZXZfa2ZyZWVfc2tiX2FueShza2IpO1xuIDMzMDpcdFx0XHRyZXR1cm4gTlVMTDtcbiAzMzE6XHRcdH1cbiAzMzI6XHRcdHNrYl9wdXNoKHNrYiwgMik7XG4gMzMzOlx0XG4gMzM0Olx0XHRza2ItXHUwMDNlZGF0YVswXSA9IGxlbjtcbiAzMzU6XHRcdHNrYi1cdTAwM2VkYXRhWzFdID0gbGVuIFx1MDAzZVx1MDAzZSA4O1xuIDMzNjpcdFxuIDMzNzpcdFx0cmV0dXJuIHNrYjtcbiAzMzg6XHR9XG4gMzM5Olx0XG4gMzQwOlx0XG4gMzQxOlx0c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mb1x0Y3g4MjMxMF9pbmZvID0ge1xuIDM0MjpcdFx0LmRlc2NyaXB0aW9uXHQ9IFwmIzM0O0NvbmV4YW50IENYODIzMTAgVVNCIGV0aGVybmV0XCYjMzQ7LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxOTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDg2CgkJCQkJCQlvdXRwdXQ6IDEzOAoJCQkJCQkJdGhvdWdodHM6IDkwNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1lbW9yeSBTYWZldHkgb2YgdGhlIGN4ODIzMTBfcnhfZml4dXAgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhlIHBhdGNoIGludHJvZHVjZXMgYSBjaGVjazogYGlmIChkZXYtJmd0O3BhcnRpYWxfcmVtICZndDsgc2tiLSZndDtsZW4pYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O0FoLCB0aGF0IGxvb2tzIGxpa2UgYSBwb3RlbnRpYWwgYnVmZmVyIG92ZXJmbG93IGZpeC4mIzM0OyBBbmQgaXQgaXMuIEVzc2VudGlhbGx5LCB3aXRob3V0IHRoZSBwYXRjaCwgdGhlIGNvZGUgd291bGQgYmUgYXR0ZW1wdGluZyBhIGBtZW1jcHlgIGZyb20gYHNrYi0mZ3Q7ZGF0YWAgd2hlcmUgdGhlIHNvdXJjZSBzaXplIChgZGV2LSZndDtwYXJ0aWFsX3JlbWApIGV4Y2VlZHMgdGhlIGFsbG9jYXRlZCBzaXplIG9mIHRoZSBzb3VyY2UgYnVmZmVyIChgc2tiLSZndDtsZW5gKS4gVGhhdCYjMzk7cyBhIHRleHRib29rIG91dC1vZi1ib3VuZHMgcmVhZC4KCk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgd2FycmFudHMgS01TQU4gKEtlcm5lbCBNZW1vcnkgU2FuaXRpemVyKS4gTXkgaW1tZWRpYXRlIGludHVpdGlvbiBpcyBuby4gS0FTQU4gKEtlcm5lbCBBZGRyZXNzIFNhbml0aXplcikgaXMgKmRlc2lnbmVkKiB0byBjYXRjaCB0aGVzZSBvdXQtb2YtYm91bmRzIGhlYXAgcmVhZHMuIGBza2ItJmd0O2RhdGFgIGlzIGhlYXAtYWxsb2NhdGVkIHVzaW5nIGBrbWFsbG9jYCBvciBlcXVpdmFsZW50LCBzbyBLQVNBTiB3aWxsIGZsYWcgdGhlIGlsbGVnYWwgcmVhZCBkdXJpbmcgdGhlIGBtZW1jcHlgLiBUaGUga2V5IGlzIHRoYXQgd2UgYXJlIHJlYWRpbmcgKm91dC1vZi1ib3VuZHMgbWVtb3J5Kiwgbm90ICp1bmluaXRpYWxpemVkKiBtZW1vcnkuIFdoaWxlIEtNU0FOICpjYW4qIHNvbWV0aW1lcyBjYXRjaCBPT0IgcmVhZHMsIEtBU0FOIGlzIHRoZSBwcmltYXJ5IGFuZCBzdWZmaWNpZW50IHRvb2wgaGVyZS4KClRoaXMgb3V0LW9mLWJvdW5kcyByZWFkIGlzIHRoZW4gcGFzc2VkIHRvIGB1c2JuZXRfc2tiX3JldHVybmAsIHVsdGltYXRlbHkgc2VuZGluZyB0aGUgcGFja2V0IHVwIHRoZSBzdGFjay4gQ291bGQgdGhpcyBiZSBhbiBpbmZvcm1hdGlvbiBsZWFrPyBQb3RlbnRpYWxseSwgdGhlIG91dC1vZi1ib3VuZHMgZGF0YSBjb3VsZCBiZSBrZXJuZWwgaGVhcCBtZW1vcnkgYW5kIGluY2x1ZGVkIGluIGEgcGFja2V0LiBZZXMsIHRlY2huaWNhbGx5IGl0ICppcyogYW4gaW5mby1sZWFrLCBpZiB0aGUgT09CIHJlYWQgaXMgZnJvbSBzb21lIHNlbnNpdGl2ZSBhcmVhIG9mIG1lbW9yeS4gSG93ZXZlciwgdGhlIEtBU0FOIGNoZWNrIGlzIHdoYXQgbWF0dGVycyBoZXJlLCBhcyBpdCBjYXRjaGVzIHRoZSB2dWxuZXJhYmlsaXR5LgoKTGV0JiMzOTtzIGRvdWJsZS1jaGVjayBhYm91dCB1bmluaXRpYWxpemVkIG1lbW9yeS4gYHNrYjJgIGlzIGFsbG9jYXRlZCBhbmQgYHNrYl9wdXRgIGlzIGNhbGxlZCBiZWZvcmUgYW55IGBtZW1jcHlgLiBUaGVuIHdlJiMzOTt2ZSBnb3QgdGhlIGBtZW1jcHlgIG9wZXJhdGlvbnMuIFRoZSBjcml0aWNhbCBvbmUgaXMgYG1lbWNweShza2IyLSZndDtkYXRhICYjNDM7IGRldi0mZ3Q7cGFydGlhbF9sZW4sIHNrYi0mZ3Q7ZGF0YSwgZGV2LSZndDtwYXJ0aWFsX3JlbSk7YC4gSWYgYGRldi0mZ3Q7cGFydGlhbF9yZW0gJmd0OyBza2ItJmd0O2xlbmAsIHRoaXMgcmVhZHMgb3V0IG9mIGJvdW5kcyBmcm9tIGBza2ItJmd0O2RhdGFgLiBObyB1bmluaXRpYWxpemVkIGRhdGEgaW52b2x2ZWQuIFRoZSBPT0IgaXMgdGhlIHByb2JsZW0sIG5vdCB0aGUgKmluaXRpYWxpemF0aW9uKiBvZiB0aGUgc291cmNlIGRhdGEuCgpUaGVyZWZvcmUsIGJlY2F1c2UgS0FTQU4gcmVsaWFibHkgZGV0ZWN0cyB0aGlzIG91dC1vZi1ib3VuZHMgcmVhZCwgSSYjMzk7bSBjb25maWRlbnQgaW4gc2V0dGluZyBgTmVlZHNLTVNBTj1mYWxzZWAuIFRoZSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiB0aGUgcGF0Y2ggYWRkcmVzc2VzIGFuIG91dC1vZi1ib3VuZHMgaGVhcCByZWFkIGZyb20gYHNrYi0mZ3Q7ZGF0YWAsIGEgYnVnIGNhdWdodCBieSBLQVNBTi4gV2UgYXJlIG5vdCBkZWFsaW5nIHdpdGggYSBsZWFrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCB3aGljaCBpcyB0aGUgZG9tYWluIG9mIEtNU0FOLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxOTo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgZnJvbSBgc2tiLVx1MDAzZWRhdGFgIGluIGBjeDgyMzEwX3J4X2ZpeHVwYC4gV2hlbiBgZGV2LVx1MDAzZXBhcnRpYWxfcmVtYCBpcyBsYXJnZXIgdGhhbiBgc2tiLVx1MDAzZWxlbmAsIHRoZSBzdWJzZXF1ZW50IGBtZW1jcHlgIG9wZXJhdGlvbiByZWFkcyBwYXN0IHRoZSBlbmQgb2YgdGhlIGBza2ItXHUwMDNlZGF0YWAgYnVmZmVyLiBUaGlzIGlzIGEgY2xhc3NpYyBoZWFwIG91dC1vZi1ib3VuZHMgcmVhZCBidWcsIHdoaWNoIGlzIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZSBpcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWsgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgaW52b2x2ZWQgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGZyb20gYHNrYi1cdTAwM2VkYXRhYCBpbiBgY3g4MjMxMF9yeF9maXh1cGAuIFdoZW4gYGRldi1cdTAwM2VwYXJ0aWFsX3JlbWAgaXMgbGFyZ2VyIHRoYW4gYHNrYi1cdTAwM2VsZW5gLCB0aGUgc3Vic2VxdWVudCBgbWVtY3B5YCBvcGVyYXRpb24gcmVhZHMgcGFzdCB0aGUgZW5kIG9mIHRoZSBgc2tiLVx1MDAzZWRhdGFgIGJ1ZmZlci4gVGhpcyBpcyBhIGNsYXNzaWMgaGVhcCBvdXQtb2YtYm91bmRzIHJlYWQgYnVnLCB3aGljaCBpcyByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlcmUgaXMgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGludm9sdmVkIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTk6NDM6MTUuOTUxMTk0MTU1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY2MDk0MTUwNzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVTQl9ORVRfRFJJVkVSU1wiLFxuICAgIFwiVVNCX1VTQk5FVFwiLFxuICAgIFwiVVNCX05FVF9DWDgyMzEwX0VUSFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImN4ODIzMTBfcnhfZml4dXBcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBmcm9tIGBza2ItXFx1MDAzZWRhdGFgIGluIGBjeDgyMzEwX3J4X2ZpeHVwYC4gV2hlbiBgZGV2LVxcdTAwM2VwYXJ0aWFsX3JlbWAgaXMgbGFyZ2VyIHRoYW4gYHNrYi1cXHUwMDNlbGVuYCwgdGhlIHN1YnNlcXVlbnQgYG1lbWNweWAgb3BlcmF0aW9uIHJlYWRzIHBhc3QgdGhlIGVuZCBvZiB0aGUgYHNrYi1cXHUwMDNlZGF0YWAgYnVmZmVyLiBUaGlzIGlzIGEgY2xhc3NpYyBoZWFwIG91dC1vZi1ib3VuZHMgcmVhZCBidWcsIHdoaWNoIGlzIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZSBpcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWsgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgaW52b2x2ZWQgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgaW4gY3g4MjMxMF9yeF9maXh1cCB0byBwcmV2ZW50IHByb2Nlc3Npbmcgd2hlbiBkZXYtXFx1MDAzZXBhcnRpYWxfcmVtIFxcdTAwM2Ugc2tiLVxcdTAwM2VsZW4uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgVVNCIG5ldHdvcmsgZHJpdmVyJ3MgUlggcGF0aCwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBVU0IgZW11bGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxOTo0MzoxNS45NTEyMDAxNzVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NDEzNDE3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGRjMjViODgwOTIzNzkxYTc4OTQ0YmZiYzNkYWQzNDFjNTc0YWJhYjJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBBdWcgMTQgMTk6NDM6MTQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMgYi9kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguY1xcbmluZGV4IDA2OGFjYjA1MmFkYjAuLjhjYTZiNzVmZGQyMGYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmNcXG4rKysgYi9kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguY1xcbkBAIC0yNTEsNiArMjUxLDEzIEBAIHN0YXRpYyBpbnQgY3g4MjMxMF9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdCAqIGVuZCBvZiB0aGF0IHBhY2tldCBhdCB0aGUgYmVnaW5uaW5nLlxcbiBcXHQgKi9cXG4gXFx0aWYgKGRldi1cXHUwMDNlcGFydGlhbF9yZW0pIHtcXG4rXFx0XFx0aWYgKGRldi1cXHUwMDNlcGFydGlhbF9yZW0gXFx1MDAzZSBza2ItXFx1MDAzZWxlbikge1xcbitcXHRcXHRcXHRuZXRkZXZfZXJyKGRldi1cXHUwMDNlbmV0LFxcbitcXHRcXHRcXHRcXHQgICBcXFwiUlggcGFydGlhbCBmcmFtZTogbmVlZCAlbHUsIGdvdCAldVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0ICAgZGV2LVxcdTAwM2VwYXJ0aWFsX3JlbSwgc2tiLVxcdTAwM2VsZW4pO1xcbitcXHRcXHRcXHRkZXYtXFx1MDAzZXBhcnRpYWxfcmVtID0gMDtcXG4rXFx0XFx0XFx0cmV0dXJuIDA7XFxuK1xcdFxcdH1cXG4gXFx0XFx0bGVuID0gZGV2LVxcdTAwM2VwYXJ0aWFsX2xlbiArIGRldi1cXHUwMDNlcGFydGlhbF9yZW07XFxuIFxcdFxcdHNrYjIgPSBhbGxvY19za2IobGVuLCBHRlBfQVRPTUlDKTtcXG4gXFx0XFx0aWYgKCFza2IyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxOTo0MzoxNi40MzU5NTg5NTNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxNDQyMDA3Mjc0MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCX05FVF9EUklWRVJTXCIsXG4gICAgXCJVU0JfVVNCTkVUXCIsXG4gICAgXCJVU0JfTkVUX0NYODIzMTBfRVRIXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY3g4MjMxMF9yeF9maXh1cFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgaW4gY3g4MjMxMF9yeF9maXh1cCB0byBwcmV2ZW50IHByb2Nlc3Npbmcgd2hlbiBkZXYtXFx1MDAzZXBhcnRpYWxfcmVtIFxcdTAwM2Ugc2tiLVxcdTAwM2VsZW4uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgVVNCIG5ldHdvcmsgZHJpdmVyJ3MgUlggcGF0aCwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBVU0IgZW11bGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkYzI1Yjg4MDkyMzc5MWE3ODk0NGJmYmMzZGFkMzQxYzU3NGFiYWIyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMTQgMTk6NDM6MTQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYyBiL2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jXG5pbmRleCAwNjhhY2IwNTJhZGIwLi44Y2E2Yjc1ZmRkMjBmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmNcbisrKyBiL2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jXG5AQCAtMjUxLDYgKzI1MSwxMyBAQCBzdGF0aWMgaW50IGN4ODIzMTBfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0ICogZW5kIG9mIHRoYXQgcGFja2V0IGF0IHRoZSBiZWdpbm5pbmcuXG4gXHQgKi9cbiBcdGlmIChkZXYtXHUwMDNlcGFydGlhbF9yZW0pIHtcbitcdFx0aWYgKGRldi1cdTAwM2VwYXJ0aWFsX3JlbSBcdTAwM2Ugc2tiLVx1MDAzZWxlbikge1xuK1x0XHRcdG5ldGRldl9lcnIoZGV2LVx1MDAzZW5ldCxcbitcdFx0XHRcdCAgIFwiUlggcGFydGlhbCBmcmFtZTogbmVlZCAlbHUsIGdvdCAldVxcblwiLFxuK1x0XHRcdFx0ICAgZGV2LVx1MDAzZXBhcnRpYWxfcmVtLCBza2ItXHUwMDNlbGVuKTtcbitcdFx0XHRkZXYtXHUwMDNlcGFydGlhbF9yZW0gPSAwO1xuK1x0XHRcdHJldHVybiAwO1xuK1x0XHR9XG4gXHRcdGxlbiA9IGRldi1cdTAwM2VwYXJ0aWFsX2xlbiArIGRldi1cdTAwM2VwYXJ0aWFsX3JlbTtcbiBcdFx0c2tiMiA9IGFsbG9jX3NrYihsZW4sIEdGUF9BVE9NSUMpO1xuIFx0XHRpZiAoIXNrYjIpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxOTo0MzoxNi40MzU5NjM3OTNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDgwNjIwOTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFVTQiBFdGhlcm5ldCBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIGZvciB0aGUgYGN4ODIzMTBfZXRoLmNgIGZpbGUgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvdXNiL2AgZGlyZWN0b3J5LiBTZWVtcyBsaWtlIHRoZXJlJ3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbnRyb2R1Y2VkIGluIGBjeDgyMzEwX3J4X2ZpeHVwYC4gU3BlY2lmaWNhbGx5LCBhIGNoZWNrIGhhcyBiZWVuIGFkZGVkOlxuXG5gYGBjXG5cdGlmIChkZXYtXHUwMDNlcGFydGlhbF9yZW0pIHtcbitcdFx0aWYgKGRldi1cdTAwM2VwYXJ0aWFsX3JlbSBcdTAwM2Ugc2tiLVx1MDAzZWxlbikge1xuK1x0XHRcdG5ldGRldl9lcnIoZGV2LVx1MDAzZW5ldCxcbitcdFx0XHRcdCAgIFwiUlggcGFydGlhbCBmcmFtZTogbmVlZCAlbHUsIGdvdCAldVxcblwiLFxuK1x0XHRcdFx0ICAgZGV2LVx1MDAzZXBhcnRpYWxfcmVtLCBza2ItXHUwMDNlbGVuKTtcbitcdFx0XHRkZXYtXHUwMDNlcGFydGlhbF9yZW0gPSAwO1xuK1x0XHRcdHJldHVybiAwO1xuK1x0XHR9XG5gYGBcblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBsaWtlbHkgYSBnb29kIHRoaW5nLiBUaGUgY29kZSdzIHByZXZlbnRpbmcgYSBwb3RlbnRpYWwgaXNzdWUgd2hlcmUgYGRldi1cdTAwM2VwYXJ0aWFsX3JlbWAgKHdoaWNoIEkgYXNzdW1lIHJlbGF0ZXMgdG8gYSBwYXJ0aWFsbHkgcmVjZWl2ZWQgZnJhbWUpIGlzIGxhcmdlciB0aGFuIHRoZSBhY3R1YWwgYHNrYi1cdTAwM2VsZW5gLiBUaGlzIGNvdWxkIGxlYWQgdG8gYSByZWFkIHBhc3QgdGhlIGVuZCBvZiB0aGUgcGFja2V0IGJ1ZmZlciwgd2hpY2ggaXMgcHJlY2lzZWx5IHRoZSBraW5kIG9mIG1lbW9yeSBzYWZldHkgcHJvYmxlbSB3ZSB3YW50IHRvIGF2b2lkLiBUaGUgYWRkaXRpb24gaXMgY2xlYXJseSBhIHByb2FjdGl2ZSBtZWFzdXJlLCBzYWZlZ3VhcmRpbmcgYWdhaW5zdCBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIG90aGVyIHNpbWlsYXIgdnVsbmVyYWJpbGl0aWVzLiBOb3csIGxldCdzIGp1c3QgbWFrZSBzdXJlIHRoZSBjb25maWd1cmF0aW9uIGlzIHNldCBmb3IgdGhlIGBjeDgyMzEwX2V0aGAgZHJpdmVyLiBXZSBuZWVkIHRvIGNvbmZpcm0gdGhpcyBwYXRjaCBpcyBldmVuIGluIGVmZmVjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA5MCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE5OjQzOjIwLjkxNjU4NzQ3M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDg1MjUzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjeDgyMzEwX2V0aFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC91c2IvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZT0zNT1vYmotJChDT05GSUdfVVNCX1NJRVJSQV9ORVQpXFx0Kz0gc2llcnJhX25ldC5vXFxuZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlOjM2Om9iai0kKENPTkZJR19VU0JfTkVUX0NYODIzMTBfRVRIKVxcdCs9IGN4ODIzMTBfZXRoLm9cXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGUtMzctb2JqLSQoQ09ORklHX1VTQl9ORVRfQ0RDX05DTSlcXHQrPSBjZGNfbmNtLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jPTM2OD1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgY3g4MjMxMF9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MzY5OlxcdC5uYW1lXFx0XFx0PSBcXFwiY3g4MjMxMF9ldGhcXFwiLFxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM3MC1cXHQuaWRfdGFibGVcXHQ9IHByb2R1Y3RzLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxOTo0MzoyMC45Njc0NDQ4NjhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDgzODYzMDY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgVVNCIE5ldHdvcmsgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIEknbSBsb29raW5nIGF0IGlzIGBVU0JfTkVUX0NYODIzMTBfRVRIYC4gUmlnaHQsIHRoYXQgcmluZ3MgYSBiZWxsLiBUaW1lIHRvIGRpZyBpbnRvIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGUgdG8gc2VlIHRoZSBmaW5lIGRldGFpbHMgb2Ygd2hhdCB0aGlzIHNwZWNpZmljYWxseSBlbmFibGVzLiBUaGUgbGlrZWx5IGxvY2F0aW9uIGlzIGBkcml2ZXJzL25ldC91c2IvS2NvbmZpZ2AuIExldCdzIGNvbmZpcm0gdGhlIGRlZmluaXRpb24gYW5kIGFueSBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24gYW5kIHdoYXQgaXRzIGltcGxpY2F0aW9ucyBhcmUsIHNvIGEgdGhvcm91Z2ggcmV2aWV3IG9mIHRoZSBLY29uZmlnIGlzIGluIG9yZGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODg5LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTk6NDM6MjQuMDUxMzEwOTI3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0OTk3MTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfTkVUX0NYODIzMTBfRVRIXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTQ5ND1jb25maWcgVVNCX05FVF9aQVVSVVNcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTUxMS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo1MTI6Y29uZmlnIFVTQl9ORVRfQ1g4MjMxMF9FVEhcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy01MTMtXFx0dHJpc3RhdGUgXFxcIkNvbmV4YW50IENYODIzMTAgVVNCIGV0aGVybmV0IHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE5OjQzOjI0LjA5NjMxMjE5MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NjYxOTk3MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHJlYWRpbmcgYW5kIHByb2Nlc3NpbmcgdGhlIHByb3ZpZGVkIHRleHQ6XG5cbioqRGl2aW5nIGludG8gVVNCIE5ldHdvcmtpbmcgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJ20gZ29pbmcgdG8gcHVsbCB1cCBgZHJpdmVycy9uZXQvdXNiL0tjb25maWdgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgNTEyLiBNeSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIFVTQiBuZXR3b3JraW5nIGRldmljZXMuIEknbSBwcm9iYWJseSBsb29raW5nIGF0IHRoZSBkZXBlbmRlbmNpZXMsIGRlc2NyaXB0aW9ucywgYW5kIGRlZmF1bHRzIGZvciBkaWZmZXJlbnQgVVNCIG5ldHdvcmsgZHJpdmVycy4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCdzIGNvbnRyb2xsZWQgdGhyb3VnaCB0aGlzIEtjb25maWcgZmlsZSwgaG93IG1vZHVsZXMgYXJlIGVuYWJsZWQgb3IgZGlzYWJsZWQsIGFuZCB3aGF0IGNvbmRpdGlvbnMgdHJpZ2dlciB0aG9zZSBjaG9pY2VzLiBJJ20gbGlrZWx5IGludGVyZXN0ZWQgaW4gYSBzcGVjaWZpYyBkZXZpY2Ugb3IgaW50ZXJmYWNlLCBzbyBJJ2xsIGJlIGZpbHRlcmluZyBteSBwZXJ1c2FsIHdpdGggYSBwYXJ0aWN1bGFyIG1vZHVsZSBpbiBtaW5kLiBJIG5lZWQgdG8gc2VlIGhvdyB0aGVzZSBzZXR0aW5ncyBhcmUgc3RydWN0dXJlZCB3aXRoaW4gdGhlIGxhcmdlciBuZXR3b3JraW5nIGNvbmZpZ3VyYXRpb24gc3BhY2Ugd2l0aGluIHRoZSBrZXJuZWwuIFRoZSBnb2FsIGlzIHRvIGZ1bGx5IHVuZGVyc3RhbmQgaG93IGRyaXZlcnMgYXJlIGVuYWJsZWQvZGlzYWJsZWQgd2l0aGluIHRoZSBidWlsZCBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTk3LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTk6NDM6MjcuNzYyNTE0MzU5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI1NjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUwMCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDUwMDpcXHRcXHRoZWxwXFxuIDUwMTpcXHRcXHQgIENob29zZSB0aGlzIG9wdGlvbiB0byBzdXBwb3J0IHRoZSB1c2IgbmV0d29ya2luZyBsaW5rcyB1c2VkIGJ5XFxuIDUwMjpcXHRcXHQgIFphdXJ1cyBtb2RlbHMgbGlrZSB0aGUgU0wtNTAwMEQsIFNMLTU1MDAsIFNMLTU2MDAsIEEtMzAwLCBCLTUwMC5cXG4gNTAzOlxcdFxcdCAgVGhpcyBhbHNvIHN1cHBvcnRzIHNvbWUgcmVsYXRlZCBkZXZpY2UgZmlybXdhcmUsIGFzIHVzZWQgaW4gc29tZVxcbiA1MDQ6XFx0XFx0ICBQREFzIGZyb20gT2x5bXB1cyBhbmQgc29tZSBjZWxsIHBob25lcyBmcm9tIE1vdG9yb2xhLlxcbiA1MDU6XFx0XFxuIDUwNjpcXHRcXHQgIElmIHlvdSBpbnN0YWxsIGFuIGFsdGVybmF0ZSBpbWFnZSwgc3VjaCBhcyB0aGUgTGludXggMi42IGJhc2VkXFxuIDUwNzpcXHRcXHQgIHZlcnNpb25zIG9mIE9wZW5aYXVydXMsIHlvdSBzaG91bGQgbm8gbG9uZ2VyIG5lZWQgdG8gc3VwcG9ydCB0aGlzXFxuIDUwODpcXHRcXHQgIHByb3RvY29sLiAgT25seSB0aGUgXFxcImV0aC1mZFxcXCIgb3IgXFxcIm5ldF9mZFxcXCIgZHJpdmVycyBpbiB0aGVzZSBkZXZpY2VzXFxuIDUwOTpcXHRcXHQgIHJlYWxseSBuZWVkIHRoaXMgbm9uLWNvbmZvcm1hbnQgdmFyaWFudCBvZiBDREMgRXRoZXJuZXQgKG9yIGluXFxuIDUxMDpcXHRcXHQgIHNvbWUgY2FzZXMgQ0RDIE1ETE0pIHByb3RvY29sLCBub3QgXFxcImdfZXRoZXJcXFwiLlxcbiA1MTE6XFx0XFxuIDUxMjpcXHRjb25maWcgVVNCX05FVF9DWDgyMzEwX0VUSFxcbiA1MTM6XFx0XFx0dHJpc3RhdGUgXFxcIkNvbmV4YW50IENYODIzMTAgVVNCIGV0aGVybmV0IHBvcnRcXFwiXFxuIDUxNDpcXHRcXHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcXG4gNTE1OlxcdFxcdGhlbHBcXG4gNTE2OlxcdFxcdCAgQ2hvb3NlIHRoaXMgb3B0aW9uIGlmIHlvdSdyZSB1c2luZyBhIENvbmV4YW50IENYODIzMTAtYmFzZWQgQURTTFxcbiA1MTc6XFx0XFx0ICByb3V0ZXIgd2l0aCBVU0IgZXRoZXJuZXQgcG9ydC4gVGhpcyBkcml2ZXIgaXMgZm9yIHJvdXRlcnMgb25seSxcXG4gNTE4OlxcdFxcdCAgaXQgd2lsbCBub3Qgd29yayB3aXRoIEFEU0wgbW9kZW1zICh1c2UgY3hhY3J1IGRyaXZlciBpbnN0ZWFkKS5cXG4gNTE5OlxcdFxcbiA1MjA6XFx0Y29uZmlnIFVTQl9ORVRfS0FMTUlBXFxuIDUyMTpcXHRcXHR0cmlzdGF0ZSBcXFwiU2Ftc3VuZyBLYWxtaWEgYmFzZWQgTFRFIFVTQiBtb2RlbVxcXCJcXG4gNTIyOlxcdFxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbiA1MjM6XFx0XFx0aGVscFxcbiA1MjQ6XFx0XFx0ICBDaG9vc2UgdGhpcyBvcHRpb24gaWYgeW91IGhhdmUgYSBTYW1zdW5nIEthbG1pYSBiYXNlZCBVU0IgbW9kZW1cXG4gNTI1OlxcdFxcdCAgYXMgU2Ftc3VuZyBHVC1CMzczMC5cXG4gNTI2OlxcdFxcbiA1Mjc6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4gNTI4OlxcdFxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGthbG1pYS5cXG4gNTI5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxOTo0MzoyNy43NjI2NDE1NDlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Njc2MTY1Mjc5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSBmYW1pbGlhciB3aXRoIGVtYmVkZGVkIHN5c3RlbXMgYW5kIG5ldHdvcmtpbmc6XG5cbioqRXhhbWluaW5nIHRoZSBVU0IgTmV0d29yayBDb25maWd1cmF0aW9uIERlcGVuZGVuY3kqKlxuXG5SaWdodCwgc28gYFVTQl9ORVRfQ1g4MjMxMF9FVEhgIGlzIGRlcGVuZGVudCBvbiBgVVNCX1VTQk5FVGAuIE9rYXksIHRoYXQgbWFrZXMgc2Vuc2UuIEkgbmVlZCB0byBlbnN1cmUgdGhlIGJhc2UgVVNCIG5ldHdvcmtpbmcgc3VwcG9ydCBpcyBlbmFibGVkIGJlZm9yZSBJIGV2ZW4gYm90aGVyIGxvb2tpbmcgYXQgdGhlIHNwZWNpZmljIGRyaXZlciBmb3IgdGhlIENYODIzMTAgRXRoZXJuZXQgZGV2aWNlLiBMZXQncyBkaWcgaW50byBgVVNCX1VTQk5FVGAgYW5kIHNlZSB3aGF0IGl0IGVudGFpbHMuIEkga25vdyB3aGF0IHRoZSBDWDgyMzEwIGlzLCBpdCdzIGEgc3BlY2lmaWMsIHR5cGljYWxseSBvbGRlciwgVVNCIHRvIEV0aGVybmV0IGNoaXAuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGluZnJhc3RydWN0dXJlIGZvciBVU0IgbmV0d29yayBpbnRlcmZhY2VzIGlzIHByZXNlbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMDEsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE5OjQ0OjE0LjUyNDI5Njc5NFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzc0MzMzMTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfVVNCTkVUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTExMz1jb25maWcgVVNCX0xBTjc4WFhcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTEzMS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoxMzI6Y29uZmlnIFVTQl9VU0JORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMzMtXFx0dHJpc3RhdGUgXFxcIk11bHRpLXB1cnBvc2UgVVNCIE5ldHdvcmtpbmcgRnJhbWV3b3JrXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxOTo0NDoxNC44OTg2MzY0NTRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI2NjQ4NTEzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipFeGFtaW5pbmcgVVNCIE5ldHdvcmtpbmcgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGluLiBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGBkcml2ZXJzL25ldC91c2IvS2NvbmZpZ2AgZmlsZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDEzMi4gVGhhdCdzIGxpa2VseSB3aGVyZSB0aGUgY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBVU0IgbmV0d29ya2luZyBkcml2ZXJzIGFyZSBkZWZpbmVkLiBJJ20gcHJvYmFibHkgbG9va2luZyBmb3Igc29tZXRoaW5nIHNwZWNpZmljLCBhIGZlYXR1cmUgSSB3YW50IHRvIGVuYWJsZSwgZGlzYWJsZSwgb3IgcGVyaGFwcyB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgb2YuIFRoaXMgY291bGQgYmUgcmVsYXRlZCB0byBhIHNwZWNpZmljIFVTQiBuZXR3b3JrIGludGVyZmFjZSBjYXJkIChOSUMpLCBhIHBhcnRpY3VsYXIgZHJpdmVyIGZlYXR1cmUsIG9yIGEgZ2VuZXJhbCBxdWVzdGlvbiBvZiBob3cgdGhlIG1vZHVsZSBzZWxlY3Rpb24gd29ya3Mgd2l0aGluIHRoYXQgYXJlYS4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCB0aGF0IHNwZWNpZmljIEtjb25maWcgb3B0aW9uIGlzLCB3aGF0IGl0IGNvbnRyb2xzLCBhbmQgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggaXQncyBhdmFpbGFibGUuIEtub3dpbmcgdGhlIGNvbnRleHQgd2l0aGluIHRoZSBLY29uZmlnIGZpbGUgd2lsbCBjbGFyaWZ5IHRoZSBiaWdnZXIgcGljdHVyZS4gSSdtIGhvcGluZyB0byBnZXQgYSBxdWljayBncmFzcCBvZiB0aGlzIHBhcnRpY3VsYXIgb3B0aW9uIGJ5IHJlYWRpbmcgdGhlIHN1cnJvdW5kaW5nIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzMjQsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxOTo0NDoxOC4xNjUxMjM3MzRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvdXNiL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTI1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTI1OlxcdFxcdCAgTEFONzgwMSA6IFVTQiAzIHRvIDEwLzEwMC8xMDAwIEV0aGVybmV0IGFkYXB0ZXIgKE1BQyBvbmx5KVxcbiAxMjY6XFx0XFxuIDEyNzpcXHRcXHQgIFByb3BlciBQSFkgZHJpdmVyIGlzIHJlcXVpcmVkIGZvciBMQU43ODAxLlxcbiAxMjg6XFx0XFxuIDEyOTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAxMzA6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgbGFuNzh4eC5cXG4gMTMxOlxcdFxcbiAxMzI6XFx0Y29uZmlnIFVTQl9VU0JORVRcXG4gMTMzOlxcdFxcdHRyaXN0YXRlIFxcXCJNdWx0aS1wdXJwb3NlIFVTQiBOZXR3b3JraW5nIEZyYW1ld29ya1xcXCJcXG4gMTM0OlxcdFxcdHNlbGVjdCBNSUlcXG4gMTM1OlxcdFxcdGhlbHBcXG4gMTM2OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgc2V2ZXJhbCBraW5kcyBvZiBuZXR3b3JrIGxpbmtzIG92ZXIgVVNCLFxcbiAxMzc6XFx0XFx0ICB3aXRoIFxcXCJtaW5pZHJpdmVyc1xcXCIgYnVpbHQgYXJvdW5kIGEgY29tbW9uIG5ldHdvcmsgZHJpdmVyIGNvcmVcXG4gMTM4OlxcdFxcdCAgdGhhdCBzdXBwb3J0cyBkZWVwIHF1ZXVlcyBmb3IgZWZmaWNpZW50IHRyYW5zZmVycy4gIChUaGlzIGdpdmVzXFxuIDEzOTpcXHRcXHQgIGJldHRlciBwZXJmb3JtYW5jZSB3aXRoIHNtYWxsIHBhY2tldHMgYW5kIGF0IGhpZ2ggc3BlZWRzKS5cXG4gMTQwOlxcdFxcbiAxNDE6XFx0XFx0ICBUaGUgVVNCIGhvc3QgcnVucyBcXFwidXNibmV0XFxcIiwgYW5kIHRoZSBvdGhlciBlbmQgb2YgdGhlIGxpbmsgbWlnaHQgYmU6XFxuIDE0MjpcXHRcXG4gMTQzOlxcdFxcdCAgLSBBbm90aGVyIFVTQiBob3N0LCB3aGVuIHVzaW5nIFVTQiBcXFwibmV0d29ya1xcXCIgb3IgXFxcImRhdGEgdHJhbnNmZXJcXFwiXFxuIDE0NDpcXHRcXHQgICAgY2FibGVzLiAgVGhlc2UgYXJlIG9mdGVuIHVzZWQgdG8gbmV0d29yayBsYXB0b3BzIHRvIFBDcywgbGlrZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxOTo0NDoxOC4xNjUyMDg4MjRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTM1MzUzNzkyNzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBVU0IgTmV0d29yayBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpdCBzZWVtcyBgVVNCX1VTQk5FVGAgaXMgdGhlIGNyaXRpY2FsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGhlcmUuIE15IGZvY3VzIGlzIHRoZSBgY3g4MjMxMF9yeF9maXh1cGAgZnVuY3Rpb24uIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2sgd2l0aGluIHRoYXQgZnVuY3Rpb24sIHdoaWNoIG1ha2VzIG1lIHRoaW5rIGl0J3MgaW1wb3J0YW50LiBOb3csIHRoZSBrZXkgcXVlc3Rpb24gaXMsIGNhbiB0aGlzIGNvZGUgcGF0aCBldmVuIGJlIGhpdCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBBZnRlciBhIGJpdCBvZiB0aGlua2luZywgdGhlIGFuc3dlciBpcyB5ZXMsIGFic29sdXRlbHkuIFVTQiBlbXVsYXRpb24sIGVzcGVjaWFsbHkgdXNpbmcgc29tZXRoaW5nIGxpa2UgYGR1bW15X2hjZGAgY29tYmluZWQgd2l0aCBhIGZ1enplciBsaWtlIHN5emthbGxlciwgY2FuIGVhc2lseSB0cmlnZ2VyIHRoaXMuIE15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBmdW5jdGlvbiBgY3g4MjMxMF9yeF9maXh1cGAgaXRzZWxmLiBJIG5lZWQgdG8ga25vdyBpZiBpdCdzIHN0YXRpYy4gVGhhdCBpbmZvcm1hdGlvbiB3aWxsIGhlbHAgbWUgZGV0ZXJtaW5lIGl0cyBzY29wZSBhbmQgcG90ZW50aWFsIGltcGFjdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyB0byBwcm9wZXJseSBhc3Nlc3MgdGhpcyBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTI0LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxOTo0NDozMS43MDA1OTEwNjJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzOTgwNDc0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImN4ODIzMTBfcnhfZml4dXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM9MjI2PXN0YXRpYyB2b2lkIGN4ODIzMTBfdW5iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yNDItICovXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MjQzOnN0YXRpYyBpbnQgY3g4MjMxMF9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjQ0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jPTM0MT1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvXFx0Y3g4MjMxMF9pbmZvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMzQ1LVxcdC51bmJpbmRcXHRcXHQ9IGN4ODIzMTBfdW5iaW5kLFxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjM0NjpcXHQucnhfZml4dXBcXHQ9IGN4ODIzMTBfcnhfZml4dXAsXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMzQ3LVxcdC50eF9maXh1cFxcdD0gY3g4MjMxMF90eF9maXh1cCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTk6NDQ6MzEuNzU0NTc1OTU2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE3ODk0NDY4NDgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0IFJlZmluZW1lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGAucnhfZml4dXBgIGZ1bmN0aW9uIGluIGBjeDgyMzEwX2luZm9gLiBJdCdzIGEgc3RhdGljIGZ1bmN0aW9uLCB3aGljaCBpc24ndCBpZGVhbC4gSG93ZXZlciwgaXQncyBhc3NpZ25lZCBhcyBhIGNhbGxiYWNrLCBhbmQgdGhhdCBtYWtlcyBpdCBhIGRlY2VudCBmdXp6aW5nIHRhcmdldC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIG1ha2UgaXQgYSBmb2N1cy5cblxuQnV0IHdhaXQsIGFyZSB0aGVyZSBvdGhlciBmdW5jdGlvbnMgSSBzaG91bGQgYmUgY29uc2lkZXJpbmc/IFBlcmhhcHMgYGN4ODIzMTBfYmluZGAsIGBjeDgyMzEwX3VuYmluZGAsIG9yIGV2ZW4gYGN4ODIzMTBfdHhfZml4dXBgPyBHaXZlbiB0aGUgbmF0dXJlIG9mIG15IHdvcmssIEkgc2hvdWxkIGJlIGV4aGF1c3RpdmUgaW4gdGhpcyBpbml0aWFsIHNjYW4uIEknbGwgaW5jbHVkZSBgY3g4MjMxMF9yeF9maXh1cGAgYXMgYSBwcmltYXJ5IGZvY3VzIHN5bWJvbC5cblxuQWgsIEkgbmVlZCB0byBwYXVzZSBmb3IgYSBzZWNvbmQuIFRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IGluc3RydWN0cyBtZSB0byBmYXZvciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMsIG5vdCBpbmxpbmVkIGludGVybmFsIGhlbHBlciBmdW5jdGlvbnMuIEkgc2VlLiBTaW5jZSBgY3g4MjMxMF9yeF9maXh1cGAgaXMgYXNzaWduZWQgdG8gYSBmdW5jdGlvbiBwb2ludGVyLCBpdCB3b24ndCBiZSBpbmxpbmVkLiBJdCB3aWxsIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcy4gT2theSwgdGhhdCdzIGltcG9ydGFudC5cblxuQWxyaWdodCwgbGV0J3Mga2VlcCBhbiBleWUgb3V0IGZvciBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUuIFRoYXQncyB0aGUgbmV4dCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTc1LCJPdXRwdXRUb2tlbnMiOjUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE5OjQ0OjQ5LjY0OTA0NjY4OFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU5MTE4NTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlthLXpBLVpfXS4qY3g4MjMxMFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xNi1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoxNzplbnVtIGN4ODIzMTBfY21kIHtcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xOC1cXHRDTURfU1RBUlRcXHRcXHQ9IDB4ODQsXFx0Lyogbm8gZWZmZWN0PyAqL1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjUtXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MjY6ZW51bSBjeDgyMzEwX3N0YXR1cyB7XFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjctXFx0U1RBVFVTX1VOREVGSU5FRCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTQyLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjQzOnN0cnVjdCBjeDgyMzEwX3ByaXYge1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTQ0LVxcdHN0cnVjdCB3b3JrX3N0cnVjdCByZWVuYWJsZV93b3JrO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtNTMtICovXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6NTQ6c3RhdGljIGludCBjeDgyMzEwX2NtZChzdHJ1Y3QgdXNibmV0ICpkZXYsIGVudW0gY3g4MjMxMF9jbWQgY21kLCBib29sIHJlcGx5LFxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTU1LVxcdFxcdCAgICAgICB1OCAqd2RhdGEsIGludCB3bGVuLCB1OCAqcmRhdGEsIGludCBybGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMTE5LVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjEyMDpzdGF0aWMgaW50IGN4ODIzMTBfZW5hYmxlX2V0aGVybmV0KHN0cnVjdCB1c2JuZXQgKmRldilcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xMjEte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMTI5LVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjEzMDpzdGF0aWMgdm9pZCBjeDgyMzEwX3JlZW5hYmxlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTEzMS17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xNDAtXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MTQxOnN0YXRpYyBpbnQgY3g4MjMxMF9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMTQyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTIyNS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoyMjY6c3RhdGljIHZvaWQgY3g4MjMxMF91bmJpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yMjcte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjQyLSAqL1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjI0MzpzdGF0aWMgaW50IGN4ODIzMTBfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTI0NC17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zMjItLyogVFggaXMgZWFzeSwganVzdCBhZGQgMiBieXRlcyBvZiBsZW5ndGggYXQgdGhlIGJlZ2lubmluZyAqL1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjMyMzpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmN4ODIzMTBfdHhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTMyNC1cXHRcXHRcXHRcXHQgICAgICAgZ2ZwX3QgZmxhZ3MpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zNDAtXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MzQxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm9cXHRjeDgyMzEwX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMzQyLVxcdC5kZXNjcmlwdGlvblxcdD0gXFxcIkNvbmV4YW50IENYODIzMTAgVVNCIGV0aGVybmV0XFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jPTM2Nj1NT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgcHJvZHVjdHMpO1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM2Ny1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzozNjg6c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGN4ODIzMTBfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM2OS1cXHQubmFtZVxcdFxcdD0gXFxcImN4ODIzMTBfZXRoXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM3Ny1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzozNzg6bW9kdWxlX3VzYl9kcml2ZXIoY3g4MjMxMF9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM3OS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTk6NDQ6NDkuNjk0OTY0OTEzWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMTQwMzMwODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBjeDgyMzEwIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgYGN4ODIzMTBgIEV0aGVybmV0IGRyaXZlciBjb2RlLiBGaXJzdCB0aGluZ3MgZmlyc3QsIGFsbCB0aGUgZnVuY3Rpb25zIGFyZSBzdGF0aWMgaGVyZSwgc28gSSBuZWVkIHRvIHBpY2sgYSBnb29kIGZvY3VzIHN5bWJvbC4gYGN4ODIzMTBfcnhfZml4dXBgIHNlZW1zIGxpa2UgYSBzb2xpZCBjYW5kaWRhdGUgdG8gc3RhcnQgd2l0aC4gTGV0J3Mgc2VlIGhvdyB0aGlzIHRoaW5nIGlzIGNvbmZpZ3VyZWQuIFRoZSBjb25maWcgaXMgYFVTQl9ORVRfQ1g4MjMxMF9FVEhgLCByaWdodD8gUmlnaHQuIE5vdywgaGFuZyBvbiBhIHNlY29uZC4uLkkgbmVlZCB0byBjaGVjayB0aGUgZGVwZW5kZW5jaWVzLiBgVVNCX05FVF9DWDgyMzEwX0VUSGAgZGVwZW5kcyBvbiBgVVNCX1VTQk5FVGAuIE9rYXksIHRoYXQgbWFrZXMgc2Vuc2U7IGl0J3MgYSBVU0IgbmV0d29yayBkZXZpY2UuIE5vdywgbGV0J3Mgc2VlIHdoYXQgKmVsc2UqIGlzIHJpZGluZyBvbiBgVVNCX1VTQk5FVGAuIEl0IHNlbGVjdHMgYE1JSWAsIG9rYXkuIEFuZCBub3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBpcyBgVVNCX1VTQk5FVGAgZGVwZW5kZW50IG9uIHRoZSBjb3JlIGBVU0JgIGNvbmZpZ3VyYXRpb24/IEdvdHRhIHRyYWNlIHRob3NlIGRlcGVuZGVuY2llcy4gVGltZSB0byBjcmFjayBvcGVuIGBkcml2ZXJzL25ldC91c2IvS2NvbmZpZ2AgYW5kIHpvb20gaW4gb24gdGhhdCBgY29uZmlnIFVTQl9VU0JORVRgIHNlY3Rpb24uIExldCdzIHNlZSB3aGF0IGl0J3MgbGlua2VkIHRvLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NDA1LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE5OjQ0OjUzLjcwOTAwMDY5MloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ5MjM0NzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC91c2IvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC91c2IvS2NvbmZpZz01PWNvbW1lbnQgXFxcIkhvc3Qtc2lkZSBVU0Igc3VwcG9ydCBpcyBuZWVkZWQgZm9yIFVTQiBOZXR3b3JrIEFkYXB0ZXIgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo2OlxcdGRlcGVuZHMgb24gIVVTQiBcXHUwMDI2XFx1MDAyNiBORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy03LVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTg9bWVudWNvbmZpZyBVU0JfTkVUX0RSSVZFUlNcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTEwLVxcdGRlZmF1bHQgVVNCIGlmIFVTQlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjExOlxcdGRlcGVuZHMgb24gVVNCIFxcdTAwMjZcXHUwMDI2IE5FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTEyLVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MTY2PWNvbmZpZyBVU0JfTkVUX0FYODgxN1hcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xNjctXFx0dHJpc3RhdGUgXFxcIkFTSVggQVg4OHh4eCBCYXNlZCBVU0IgMi4wIEV0aGVybmV0IEFkYXB0ZXJzXFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjE2ODpcXHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xNjktXFx0c2VsZWN0IENSQzMyXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xOTQtXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MTk1OlxcdCAgVGhpcyBkcml2ZXIgY3JlYXRlcyBhbiBpbnRlcmZhY2UgbmFtZWQgXFxcImV0aFhcXFwiLCB3aGVyZSBYIGRlcGVuZHMgb25cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xOTYtXFx0ICB3aGF0IG90aGVyIG5ldHdvcmtpbmcgZGV2aWNlcyB5b3UgaGF2ZSBpbiB1c2UuXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0xOTg9Y29uZmlnIFVTQl9ORVRfQVg4ODE3OV8xNzhBXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTk5LVxcdHRyaXN0YXRlIFxcXCJBU0lYIEFYODgxNzkvMTc4QSBVU0IgMy4wLzIuMCB0byBHaWdhYml0IEV0aGVybmV0XFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjIwMDpcXHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0yMDEtXFx0c2VsZWN0IENSQzMyXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0yMTItXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MjEzOlxcdCAgVGhpcyBkcml2ZXIgY3JlYXRlcyBhbiBpbnRlcmZhY2UgbmFtZWQgXFxcImV0aFhcXFwiLCB3aGVyZSBYIGRlcGVuZHMgb25cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0yMTQtXFx0ICB3aGF0IG90aGVyIG5ldHdvcmtpbmcgZGV2aWNlcyB5b3UgaGF2ZSBpbiB1c2UuXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0yMTY9Y29uZmlnIFVTQl9ORVRfQ0RDRVRIRVJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0yMTctXFx0dHJpc3RhdGUgXFxcIkNEQyBFdGhlcm5ldCBzdXBwb3J0IChzbWFydCBkZXZpY2VzIHN1Y2ggYXMgY2FibGUgbW9kZW1zKVxcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoyMTg6XFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjE5LVxcdGRlZmF1bHQgeVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjM4LVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjIzOTpcXHQgIFRoaXMgZHJpdmVyIGNyZWF0ZXMgYW4gaW50ZXJmYWNlIG5hbWVkIFxcXCJldGhYXFxcIiwgd2hlcmUgWCBkZXBlbmRzIG9uXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjQwLVxcdCAgd2hhdCBvdGhlciBuZXR3b3JraW5nIGRldmljZXMgeW91IGhhdmUgaW4gdXNlLiAgSG93ZXZlciwgaWYgdGhlXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0yNDQ9Y29uZmlnIFVTQl9ORVRfQ0RDX0VFTVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTI0NS1cXHR0cmlzdGF0ZSBcXFwiQ0RDIEVFTSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjI0NjpcXHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0yNDctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjUyLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjI1MzpcXHQgIFRoaXMgZHJpdmVyIGNyZWF0ZXMgYW4gaW50ZXJmYWNlIG5hbWVkIFxcXCJldGhYXFxcIiwgd2hlcmUgWCBkZXBlbmRzIG9uXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjU0LVxcdCAgd2hhdCBvdGhlciBuZXR3b3JraW5nIGRldmljZXMgeW91IGhhdmUgaW4gdXNlLiAgSG93ZXZlciwgaWYgdGhlXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0yNTg9Y29uZmlnIFVTQl9ORVRfQ0RDX05DTVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTI1OS1cXHR0cmlzdGF0ZSBcXFwiQ0RDIE5DTSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjI2MDpcXHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0yNjEtXFx0c2VsZWN0IFVTQl9ORVRfQ0RDRVRIRVJcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTI3OD1jb25maWcgVVNCX05FVF9IVUFXRUlfQ0RDX05DTVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTI3OS1cXHR0cmlzdGF0ZSBcXFwiSHVhd2VpIE5DTSBlbWJlZGRlZCBBVCBjaGFubmVsIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MjgwOlxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTI4MS1cXHRzZWxlY3QgVVNCX1dETVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MjkzPWNvbmZpZyBVU0JfTkVUX0NEQ19NQklNXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjk0LVxcdHRyaXN0YXRlIFxcXCJDREMgTUJJTSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjI5NTpcXHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0yOTYtXFx0c2VsZWN0IFVTQl9XRE1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTMxMT1jb25maWcgVVNCX05FVF9ETTk2MDFcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zMTItXFx0dHJpc3RhdGUgXFxcIkRhdmljb20gRE05Nnh4IGJhc2VkIFVTQiAxMC8xMDAgZXRoZXJuZXQgZGV2aWNlc1xcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzozMTM6XFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzE0LVxcdHNlbGVjdCBDUkMzMlxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MzE5PWNvbmZpZyBVU0JfTkVUX1NSOTcwMFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTMyMC1cXHR0cmlzdGF0ZSBcXFwiQ29yZUNoaXAtc3ogU1I5NzAwIGJhc2VkIFVTQiAxLjEgMTAvMTAwIGV0aGVybmV0IGRldmljZXNcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MzIxOlxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTMyMi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0zMjY9Y29uZmlnIFVTQl9ORVRfU1I5ODAwXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzI3LVxcdHRyaXN0YXRlIFxcXCJDb3JlQ2hpcC1zeiBTUjk4MDAgYmFzZWQgVVNCIDIuMCAxMC8xMDAgZXRoZXJuZXQgZGV2aWNlc1xcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzozMjg6XFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzI5LVxcdHNlbGVjdCBDUkMzMlxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MzQxPWNvbmZpZyBVU0JfTkVUX1NNU0M3NVhYXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzQyLVxcdHRyaXN0YXRlIFxcXCJTTVNDIExBTjc1WFggYmFzZWQgVVNCIDIuMCBnaWdhYml0IGV0aGVybmV0IGRldmljZXNcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MzQzOlxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTM0NC1cXHRzZWxlY3QgQklUUkVWRVJTRVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MzUxPWNvbmZpZyBVU0JfTkVUX1NNU0M5NVhYXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzUyLVxcdHRyaXN0YXRlIFxcXCJTTVNDIExBTjk1WFggYmFzZWQgVVNCIDIuMCAxMC8xMDAgZXRoZXJuZXQgZGV2aWNlc1xcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzozNTM6XFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzU0LVxcdHNlbGVjdCBQSFlMSUJcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTM2ND1jb25maWcgVVNCX05FVF9HTDYyMEFcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zNjUtXFx0dHJpc3RhdGUgXFxcIkdlbmVTeXMgR0w2MjBVU0ItQSBiYXNlZCBjYWJsZXNcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MzY2OlxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTM2Ny1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0zNzM9Y29uZmlnIFVTQl9ORVRfTkVUMTA4MFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzc1LVxcdGRlZmF1bHQgeVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjM3NjpcXHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zNzctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MzgyPWNvbmZpZyBVU0JfTkVUX1BMVVNCXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zODUtXFx0IyBhcmUgZXZlciByZXNvbHZlZCAuLi4gdGhlbiByZW1vdmUgXFxcImV4cGVyaW1lbnRhbFxcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzozODY6XFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzg3LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTM5MT1jb25maWcgVVNCX05FVF9NQ1M3ODMwXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzkyLVxcdHRyaXN0YXRlIFxcXCJNb3NDaGlwIE1DUzc4MzAgYmFzZWQgRXRoZXJuZXQgYWRhcHRlcnNcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MzkzOlxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTM5NC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0zOTk9Y29uZmlnIFVTQl9ORVRfUk5ESVNfSE9TVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQwMC1cXHR0cmlzdGF0ZSBcXFwiSG9zdCBmb3IgUk5ESVMgYW5kIEFjdGl2ZVN5bmMgZGV2aWNlc1xcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo0MDE6XFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDAyLVxcdHNlbGVjdCBVU0JfTkVUX0NEQ0VUSEVSXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz00MTQ9Y29uZmlnIFVTQl9ORVRfQ0RDX1NVQlNFVF9FTkFCTEVcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00MTUtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo0MTY6XFx0ZGVwZW5kcyBvbiBVU0JfTkVUX0NEQ19TVUJTRVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00MTctXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NDE4PWNvbmZpZyBVU0JfTkVUX0NEQ19TVUJTRVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00MTktXFx0dHJpc3RhdGUgXFxcIlNpbXBsZSBVU0IgTmV0d29yayBMaW5rcyAoQ0RDIEV0aGVybmV0IHN1YnNldClcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NDIwOlxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQyMS1cXHRkZWZhdWx0IHlcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTQzMz1jb25maWcgVVNCX0FMSV9NNTYzMlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQzNC1cXHRib29sIFxcXCJBTGkgTTU2MzIgYmFzZWQgJ1VTQiAyLjAgRGF0YSBMaW5rJyBjYWJsZXNcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NDM1OlxcdGRlcGVuZHMgb24gVVNCX05FVF9DRENfU1VCU0VUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDM2LVxcdHNlbGVjdCBVU0JfTkVUX0NEQ19TVUJTRVRfRU5BQkxFXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz00NDE9Y29uZmlnIFVTQl9BTjI3MjBcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00NDItXFx0Ym9vbCBcXFwiQW5jaG9yQ2hpcHMgMjcyMCBiYXNlZCBjYWJsZXMgKFhpcmNvbSBQR1VORVQsIC4uLilcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NDQzOlxcdGRlcGVuZHMgb24gVVNCX05FVF9DRENfU1VCU0VUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDQ0LVxcdHNlbGVjdCBVU0JfTkVUX0NEQ19TVUJTRVRfRU5BQkxFXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz00NTA9Y29uZmlnIFVTQl9CRUxLSU5cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00NTEtXFx0Ym9vbCBcXFwiZVRFSyBiYXNlZCBob3N0LXRvLWhvc3QgY2FibGVzIChBZHZhbmNlLCBCZWxraW4sIC4uLilcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NDUyOlxcdGRlcGVuZHMgb24gVVNCX05FVF9DRENfU1VCU0VUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDUzLVxcdHNlbGVjdCBVU0JfTkVUX0NEQ19TVUJTRVRfRU5BQkxFXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz00NjA9Y29uZmlnIFVTQl9BUk1MSU5VWFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQ2MS1cXHRib29sIFxcXCJFbWJlZGRlZCBBUk0gTGludXggbGlua3MgKGlQYXEsIC4uLilcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NDYyOlxcdGRlcGVuZHMgb24gVVNCX05FVF9DRENfU1VCU0VUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDYzLVxcdHNlbGVjdCBVU0JfTkVUX0NEQ19TVUJTRVRfRU5BQkxFXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz00Nzg9Y29uZmlnIFVTQl9FUFNPTjI4ODhcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00NzktXFx0Ym9vbCBcXFwiRXBzb24gMjg4OCBiYXNlZCBmaXJtd2FyZSAoREVWRUxPUE1FTlQpXFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjQ4MDpcXHRkZXBlbmRzIG9uIFVTQl9ORVRfQ0RDX1NVQlNFVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQ4MS1cXHRzZWxlY3QgVVNCX05FVF9DRENfU1VCU0VUX0VOQUJMRVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NDg2PWNvbmZpZyBVU0JfS0MyMTkwXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDg3LVxcdGJvb2wgXFxcIktUIFRlY2hub2xvZ3kgS0MyMTkwIGJhc2VkIGNhYmxlcyAoSW5zdGFOZXQpXFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjQ4ODpcXHRkZXBlbmRzIG9uIFVTQl9ORVRfQ0RDX1NVQlNFVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQ4OS1cXHRzZWxlY3QgVVNCX05FVF9DRENfU1VCU0VUX0VOQUJMRVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NDk0PWNvbmZpZyBVU0JfTkVUX1pBVVJVU1xcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQ5NS1cXHR0cmlzdGF0ZSBcXFwiU2hhcnAgWmF1cnVzIChzdG9jayBST01zKSBhbmQgY29tcGF0aWJsZVxcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo0OTY6XFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDk3LVxcdHNlbGVjdCBVU0JfTkVUX0NEQ0VUSEVSXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz01MTI9Y29uZmlnIFVTQl9ORVRfQ1g4MjMxMF9FVEhcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy01MTMtXFx0dHJpc3RhdGUgXFxcIkNvbmV4YW50IENYODIzMTAgVVNCIGV0aGVybmV0IHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NTE0OlxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTUxNS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz01MjA9Y29uZmlnIFVTQl9ORVRfS0FMTUlBXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTIxLVxcdHRyaXN0YXRlIFxcXCJTYW1zdW5nIEthbG1pYSBiYXNlZCBMVEUgVVNCIG1vZGVtXFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjUyMjpcXHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy01MjMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NTMwPWNvbmZpZyBVU0JfTkVUX1FNSV9XV0FOXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTMxLVxcdHRyaXN0YXRlIFxcXCJRTUkgV1dBTiBkcml2ZXIgZm9yIFF1YWxjb21tIE1TTSBiYXNlZCAzRyBhbmQgTFRFIG1vZGVtc1xcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo1MzI6XFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTMzLVxcdHNlbGVjdCBVU0JfV0RNXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz01NTI9Y29uZmlnIFVTQl9IU09cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy01NTMtXFx0dHJpc3RhdGUgXFxcIk9wdGlvbiBVU0IgSGlnaCBTcGVlZCBNb2JpbGUgRGV2aWNlc1xcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo1NTQ6XFx0ZGVwZW5kcyBvbiBVU0IgXFx1MDAyNlxcdTAwMjYgUkZLSUxMIFxcdTAwMjZcXHUwMDI2IFRUWVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTU1NS1cXHRkZWZhdWx0IG5cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTU2Mz1jb25maWcgVVNCX05FVF9JTlQ1MVgxXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTY0LVxcdHRyaXN0YXRlIFxcXCJJbnRlbGxvbiBQTEMgYmFzZWQgdXNiIGFkYXB0ZXJcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NTY1OlxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTU2Ni1cXHRzZWxlY3QgVVNCX05FVF9DRENFVEhFUlxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NTcyPWNvbmZpZyBVU0JfQ0RDX1BIT05FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTU3My1cXHR0cmlzdGF0ZSBcXFwiQ0RDIFBob25ldCBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjU3NDpcXHRkZXBlbmRzIG9uIFBIT05FVCBcXHUwMDI2XFx1MDAyNiBVU0JfVVNCTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTc1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTU5MD1jb25maWcgVVNCX1NJRVJSQV9ORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy01OTEtXFx0dHJpc3RhdGUgXFxcIlVTQi10by1XV0FOIERyaXZlciBmb3IgU2llcnJhIFdpcmVsZXNzIG1vZGVtc1xcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo1OTI6XFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTkzLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTU5OT1jb25maWcgVVNCX1ZMNjAwXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNjAwLVxcdHRyaXN0YXRlIFxcXCJMRyBWTDYwMCBtb2RlbSBkb25nbGVcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NjAxOlxcdGRlcGVuZHMgb24gVVNCX05FVF9DRENFVEhFUiBcXHUwMDI2XFx1MDAyNiBUVFlcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy02MDItXFx0c2VsZWN0IFVTQl9BQ01cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTYxND1jb25maWcgVVNCX05FVF9DSDkyMDBcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy02MTUtXFx0dHJpc3RhdGUgXFxcIlFpbmdIZW5nIENIOTIwMCBVU0IgZXRoZXJuZXQgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo2MTY6XFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNjE3LVxcdHNlbGVjdCBNSUlcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTYyNT1jb25maWcgVVNCX05FVF9BUUMxMTFcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy02MjYtXFx0dHJpc3RhdGUgXFxcIkFxdWFudGlhIEFRdGlvbiBVU0IgdG8gNS8yLjVHYkUgQ29udHJvbGxlcnMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo2Mjc6XFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNjI4LVxcdHNlbGVjdCBDUkMzMlxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NjM2PWNvbmZpZyBVU0JfUlRMODE1M19FQ01cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy02MzctXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo2Mzg6XFx0ZGVwZW5kcyBvbiBVU0JfTkVUX0NEQ0VUSEVSIFxcdTAwMjZcXHUwMDI2IChVU0JfUlRMODE1MiB8fCBVU0JfUlRMODE1Mj1uKVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTYzOS1cXHRkZWZhdWx0IHlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTk6NDQ6NTMuNzUzOTMyMjg4WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxODgyOTEyMjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBVU0IgTmV0d29ya2luZyBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdGhpcyBVU0IgbmV0d29ya2luZyBzdHVmZiBpcyBjb25maWd1cmVkLiBJbml0aWFsbHksIEkgdGhvdWdodCB0aGF0IGBVU0JfVVNCTkVUYCBhbG9uZSB3b3VsZCBzdWZmaWNlLiBCdXQgdGhhdCBkZXBlbmRzIG9uIGBVU0JfTkVUX0RSSVZFUlNgLCB3aGljaCwgaW4gdHVybiwgaGluZ2VzIG9uIGJvdGggYFVTQmAgYW5kIGBORVRgIGJlaW5nIGVuYWJsZWQuIExldCBtZSB2ZXJpZnkgaWYgYFVTQl9ORVRfRFJJVkVSU2AgaXMsIGluIGZhY3QsIGVzc2VudGlhbCBoZXJlLlxuXG5SaWdodCwgYFVTQl9ORVRfRFJJVkVSU2AgaXMgYSBtZW51Y29uZmlnIG9wdGlvbi4gRnJvbSB3aGF0IEkgY2FuIHNlZSwgYFVTQl9ORVRfQ1g4MjMxMF9FVEhgIGFuZCBgVVNCX1VTQk5FVGAgYXBwZWFyIHRvIGJlIHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb25zLiBCdXQgaG9sZCBvbiwgYFVTQl9ORVRfQ1g4MjMxMF9FVEhgIGhhcyBhIGRlcGVuZGVuY3kgb24gYFVTQl9VU0JORVRgLiBTbywgaW4gZXNzZW5jZSwgSSBuZWVkIGJvdGggYFVTQl9ORVRfQ1g4MjMxMF9FVEhgIGFuZCBgVVNCX1VTQk5FVGAgdG8gaGF2ZSB0aGlzIGZ1bmN0aW9uYWxpdHkuXG5cbk5vdywgdGhhdCBicmluZ3MgbWUgYmFjayB0byBgVVNCX05FVF9EUklWRVJTYC4gSXQgKmlzKiBhIG1lbnVjb25maWcsIHdoaWNoIG1lYW5zIGl0IHJlcHJlc2VudHMgYW4gYWN0dWFsIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBJIHNob3VsZCBjaGVjayBgZHJpdmVycy9uZXQvdXNiL0tjb25maWdgIGFyb3VuZCBgVVNCX05FVF9EUklWRVJTYCB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaG93IGl0IGZpdHMgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExOTE5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE5OjQ1OjI1LjYzNjg0Nzc2OFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzg2MDg2NjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1lbnVjb25maWcgVVNCX05FVF9EUklWRVJTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTU9Y29tbWVudCBcXFwiSG9zdC1zaWRlIFVTQiBzdXBwb3J0IGlzIG5lZWRlZCBmb3IgVVNCIE5ldHdvcmsgQWRhcHRlciBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNy1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo4Om1lbnVjb25maWcgVVNCX05FVF9EUklWRVJTXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctOS1cXHR0cmlzdGF0ZSBcXFwiVVNCIE5ldHdvcmsgQWRhcHRlcnNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE5OjQ1OjI2LjAyMjk0MDQ0N1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDEwNTA0ODgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IENvbmZpZ3VyYXRpb24gTG9naWMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvbmZpZ3VyYXRpb24gcHJvYmxlbSwgYW5kIGl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gRmlyc3QsIEkgc2VlIHRoYXQgYFVTQl9ORVRfRFJJVkVSU2AgaXMgaW5kZWVkIGEgY29uZmlnIG9wdGlvbiDigJMgZ29vZCwgdGhhdCdzIHRoZSBzdGFydGluZyBwb2ludC4gR2l2ZW4gdGhhdCwgaXQgc2VlbXMgbG9naWNhbCB0aGF0IHdlIHNob3VsZCBhdXRvbWF0aWNhbGx5IGluY2x1ZGUgYFVTQl9VU0JORVRgIGFuZCBgVVNCX05FVF9DWDgyMzEwX0VUSGAsIGFzIHRoZXkncmUgYWxsIHJlbGF0ZWQgdG8gVVNCIG5ldHdvcmsgZHJpdmVycy5cblxuSG9sZCBvbiBhIHNlY29uZCwgYSBxdWljayByZWFsaXR5IGNoZWNrIGlzIGluIG9yZGVyLiBJdCBsb29rcyBsaWtlIGBVU0JfTkVUX0RSSVZFUlNgIGlzIGFjdHVhbGx5IGEgbWVudWNvbmZpZyBvcHRpb24sIG1ha2luZyBpdCBlaXRoZXIgYSBib29sZWFuIG9yIHRyaXN0YXRlLCB3aGljaCBjaGFuZ2VzIGhvdyBpdCBhZmZlY3RzIG90aGVyIG9wdGlvbnMuIExldCdzIG1ha2Ugc3VyZSB0aGF0IGBVU0JfVVNCTkVUYCBoYXMgdGhlIHJpZ2h0IGRlcGVuZGVuY2llcy5cblxuQWgsIEkgc2VlIGl0IG5vdy4gVGFraW5nIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGBkcml2ZXJzL25ldC91c2IvS2NvbmZpZ2AgZmlsZSwgSSBjYW4gc2VlIHRoYXQgKmV2ZXJ5dGhpbmcqIHdpdGhpbiBpdCBpcyBuZXN0ZWQgaW5zaWRlIGFuIGBpZiBVU0JfTkVUX0RSSVZFUlNgIGNvbmRpdGlvbmFsLiBUaGF0J3MgdGhlIGtleS4gU28sIHRoZSBpbmNsdXNpb24gb2YgYFVTQl9VU0JORVRgIGFuZCB0aGUgb3RoZXJzIGhpbmdlcyBkaXJlY3RseSBvbiBgVVNCX05FVF9EUklWRVJTYCBiZWluZyBlbmFibGVkLCB3aGljaCBpcyBleGFjdGx5IGhvdyBpdCBzaG91bGQgYmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNTE3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE5OjQ1OjMwLjAzMzQ0OTc1N1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MzUzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC91c2IvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBVU0IgTmV0d29yayBkZXZpY2VzIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdGNvbW1lbnQgXFxcIkhvc3Qtc2lkZSBVU0Igc3VwcG9ydCBpcyBuZWVkZWQgZm9yIFVTQiBOZXR3b3JrIEFkYXB0ZXIgc3VwcG9ydFxcXCJcXG4gICA2OlxcdFxcdGRlcGVuZHMgb24gIVVTQiBcXHUwMDI2XFx1MDAyNiBORVRcXG4gICA3OlxcdFxcbiAgIDg6XFx0bWVudWNvbmZpZyBVU0JfTkVUX0RSSVZFUlNcXG4gICA5OlxcdFxcdHRyaXN0YXRlIFxcXCJVU0IgTmV0d29yayBBZGFwdGVyc1xcXCJcXG4gIDEwOlxcdFxcdGRlZmF1bHQgVVNCIGlmIFVTQlxcbiAgMTE6XFx0XFx0ZGVwZW5kcyBvbiBVU0IgXFx1MDAyNlxcdTAwMjYgTkVUXFxuICAxMjpcXHRcXG4gIDEzOlxcdGlmIFVTQl9ORVRfRFJJVkVSU1xcbiAgMTQ6XFx0XFxuICAxNTpcXHRjb25maWcgVVNCX0NBVENcXG4gIDE2OlxcdFxcdHRyaXN0YXRlIFxcXCJVU0IgQ0FUQyBOZXRNYXRlLWJhc2VkIEV0aGVybmV0IGRldmljZSBzdXBwb3J0XFxcIlxcbiAgMTc6XFx0XFx0c2VsZWN0IENSQzMyXFxuICAxODpcXHRcXHRoZWxwXFxuICAxOTpcXHRcXHQgIFNheSBZIGlmIHlvdSB3YW50IHRvIHVzZSBvbmUgb2YgdGhlIGZvbGxvd2luZyAxME1icHMgVVNCIEV0aGVybmV0XFxuICAyMDpcXHRcXHQgIGRldmljZSBiYXNlZCBvbiB0aGUgRUwxMjEwQSBjaGlwLiBTdXBwb3J0ZWQgZGV2aWNlcyBhcmU6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE5OjQ1OjMwLjAzMzU0NDUxN1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDI0NjgyNjU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBVU0IgTmV0d29yayBEcml2ZXIgRml4KipcblxuT2theSwgc28gdGhlIGNvZGUgaW4gcXVlc3Rpb24gaXMgZGVhbGluZyB3aXRoIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkgd2l0aGluIHRoZSBVU0IgbmV0d29yayBkcml2ZXIuIE15IGluaXRpYWwgYXNzZXNzbWVudCBoaW5nZXMgb24gdGhlIGBpZiBVU0JfTkVUX0RSSVZFUlNgIHByZXByb2Nlc3NvciBjaGVjaywgd2hpY2ggdGVsbHMgbWUgdGhlIGZpeCBpcyBjb25kaXRpb25hbGx5IGNvbXBpbGVkLiBXZSBuZWVkIHRvIGJlIHN1cmUgdGhhdCBgVVNCX05FVF9EUklWRVJTYCwgYFVTQl9VU0JORVRgLCBhbmQgYFVTQl9ORVRfQ1g4MjMxMF9FVEhgIGFyZSBhbGwgZW5hYmxlZCBmb3IgdGhpcyB0byBldmVuIGJlIHJlbGV2YW50LlxuXG5UaGUgY29yZSBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGNlbnRlciBhcm91bmQgdGhlIGBjeDgyMzEwX3J4X2ZpeHVwYCBmdW5jdGlvbi4gVGhlIGtleSBpcyB0aGF0IHRoZSBmaXggYWRkcmVzc2VzIGEgcG9zc2libGUgb3V0LW9mLWJvdW5kcyByZWFkLCBvciBhIHNpbWlsYXIgcHJvYmxlbSwgd2l0aGluIHRoYXQgc3BlY2lmaWMgZnVuY3Rpb24uIFRoZSBmaXggaW50cm9kdWNlcyBhIGNoZWNrLCBzcGVjaWZpY2FsbHkgYGRldi1cdTAwM2VwYXJ0aWFsX3JlbSBcdTAwM2Ugc2tiLVx1MDAzZWxlbmAsIHdoaWNoIGltcGxpZXMgdGhlIG9yaWdpbmFsIGNvZGUgd2FzIHZ1bG5lcmFibGUgdG8gYSBzY2VuYXJpbyB3aGVyZSB3ZSB3ZXJlIHJlYWRpbmcgYmV5b25kIHRoZSBib3VuZHMgb2YgYSByZWNlaXZlZCBwYWNrZXQuIFRoZSBmYWN0IHRoYXQgdGhpcyBpcyByZWFjaGFibGUgdmlhIFVTQiBlbXVsYXRpb24gaXMgYSBjcml0aWNhbCBkZXRhaWwuXG5cbkxldCBtZSBxdWlja2x5IHNjYW4gZm9yIGFueSBvdGhlciBwb3RlbnRpYWxseSBhZmZlY3RlZCBmdW5jdGlvbnMgd2l0aGluIHRoaXMgZHJpdmVyLiBgY3g4MjMxMF90eF9maXh1cGAsIGBjeDgyMzEwX2JpbmRgLCBhbmQgYGN4ODIzMTBfdW5iaW5kYCBhbGwgY29tZSB1cCwgYnV0IHNpbmNlIGBjeDgyMzEwX3J4X2ZpeHVwYCBpcyB3aGVyZSB0aGUgbW9kaWZpY2F0aW9uIGlzIG9jY3VycmluZywgdGhhdCdzIGRlZmluaXRlbHkgdGhlIGtleSBmdW5jdGlvbiB0byBhbmFseXplLlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gaXM6IGNhbiB3ZSBhY3R1YWxseSAqdHJpZ2dlciogYGN4ODIzMTBfcnhfZml4dXBgPyBZZXMsIGl0J3MgY2FsbGVkIGJ5IHRoZSBgdXNibmV0YCBjb3JlIHdoZW4gcGFja2V0cyBhcmUgcmVjZWl2ZWQuIFNvLCB0aGUgYXR0YWNrIHZlY3RvciBpcyBsaWtlbHkgdGhyb3VnaCBhIGNyYWZ0ZWQgbmV0d29yayBwYWNrZXQgcmVjZWl2ZWQgb3ZlciBhIFVTQiBuZXR3b3JrIGNvbm5lY3Rpb24uIFRpbWUgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBgdXNibmV0YCBjb3JlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzE5NCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE5OjQ1OjM1LjQ1ODIyOTY1NVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ2NjE1NDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnhfZml4dXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYz0zMTI9c3RhdGljIHZvaWQgX191c2JuZXRfc3RhdHVzX3N0b3BfZm9yY2Uoc3RydWN0IHVzYm5ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTMyMi0vKiBQYXNzZXMgdGhpcyBwYWNrZXQgdXAgdGhlIHN0YWNrLCB1cGRhdGluZyBpdHMgYWNjb3VudGluZy5cXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmM6MzIzOiAqIFNvbWUgbGluayBwcm90b2NvbHMgYmF0Y2ggcGFja2V0cywgc28gdGhlaXIgcnhfZml4dXAgcGF0aHNcXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmMtMzI0LSAqIGNhbiByZXR1cm4gY2xvbmVzIGFzIHdlbGwgYXMganVzdCBtb2RpZnkgdGhlIG9yaWdpbmFsIHNrYi5cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYz0zMjY9dm9pZCB1c2JuZXRfc2tiX3JldHVybihzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmMtMzM2LVxcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYzozMzc6XFx0Lyogb25seSB1cGRhdGUgaWYgdW5zZXQgdG8gYWxsb3cgbWluaWRyaXZlciByeF9maXh1cCBvdmVycmlkZSAqL1xcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYy0zMzgtXFx0aWYgKHNrYi1cXHUwMDNlcHJvdG9jb2wgPT0gMClcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYz01Njk9c3RhdGljIGlubGluZSBpbnQgcnhfcHJvY2VzcyhzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTU3MC17XFxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jOjU3MTpcXHRpZiAoZGV2LVxcdTAwM2Vkcml2ZXJfaW5mby1cXHUwMDNlcnhfZml4dXAgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmM6NTcyOlxcdCAgICAhZGV2LVxcdTAwM2Vkcml2ZXJfaW5mby1cXHUwMDNlcnhfZml4dXAoZGV2LCBza2IpKSB7XFxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jOjU3MzpcXHRcXHQvKiBXaXRoIFJYX0FTU0VNQkxFLCByeF9maXh1cCgpIG11c3QgdXBkYXRlIGNvdW50ZXJzICovXFxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTU3NC1cXHRcXHRpZiAoIShkZXYtXFx1MDAzZWRyaXZlcl9pbmZvLVxcdTAwM2VmbGFncyBcXHUwMDI2IEZMQUdfUlhfQVNTRU1CTEUpKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxOTo0NTozNS41MTI4OTY4WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwMzc2NDg5NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIGBjeDgyMzEwX3J4X2ZpeHVwYCBWdWxuZXJhYmlsaXR5KipcblxuT2theSwgc28gSSd2ZSBjb25maXJtZWQgaXQ6IGByeF9wcm9jZXNzYCBkb2VzIGluZGVlZCBjYWxsIGBkZXYtXHUwMDNlZHJpdmVyX2luZm8tXHUwMDNlcnhfZml4dXAoZGV2LCBza2IpYC4gVGhhdCdzIHRoZSBlbnRyeSBwb2ludCBJIHdhcyBsb29raW5nIGZvci4gTm93LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcyBhbmQgc2V0IHVwIHRoZSBmdXp6aW5nIHRhcmdldHMuXG5cbkJhc2VkIG9uIHRoZSBjb2RlIGNoYW5nZXMgYW5kIHRoZSBwb3RlbnRpYWwgZm9yIGEgbmV3IHZ1bG5lcmFiaWxpdHksIEknbSBtYXJraW5nIHRoaXMgYXMgYFdvcnRoRnV6emluZzogdHJ1ZWAuIFRoaXMgbG9va3MgcHJvbWlzaW5nLiBUaGUgY3JpdGljYWwgc3ltYm9sIHRvIGZvY3VzIG9uIGlzLCBvZiBjb3Vyc2UsIGBjeDgyMzEwX3J4X2ZpeHVwYC5cblxuVG8gZW5zdXJlIHRoZSBmdXp6ZXIgY2FuIHJlYWNoIHRoaXMgY29kZSwgSSBuZWVkIHRvIGVuYWJsZSBhIGZldyBjb25maWd1cmF0aW9ucy4gSSdtIGdvaW5nIHRvIHNldCBgRW5hYmxlQ29uZmlnc2AgdG8gaW5jbHVkZSBgXCJVU0JfTkVUX0RSSVZFUlNcImAsIGBcIlVTQl9VU0JORVRcImAsIGFuZCBgXCJVU0JfTkVUX0NYODIzMTBfRVRIXCJgLlxuXG5UaGUgcmVhc29uaW5nIGlzIHNvbGlkOiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBhIGJvdW5kcyBjaGVjayB3aXRoaW4gYGN4ODIzMTBfcnhfZml4dXBgIHRvIGhhbmRsZSB0aGUgY2FzZSB3aGVuIGBkZXYtXHUwMDNlcGFydGlhbF9yZW0gXHUwMDNlIHNrYi1cdTAwM2VsZW5gLiBUaGlzIGlzIGEgY2xlYXIsIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUgVVNCIG5ldHdvcmsgZHJpdmVyJ3MgcmVjZWl2ZSBwYXRoLCBhbmQgaXQncyByZWFjaGFibGUgdGhyb3VnaCBVU0IgZW11bGF0aW9uLiBUaGlzIGlzIGEgY2xhc3NpYyBjYXNlIG9mIGludHJvZHVjaW5nIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkgdGhyb3VnaCBhIGZpeCwgc28gdGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIG15IHRpbWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MjkzLCJPdXRwdXRUb2tlbnMiOjEzMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxOTo0NTo0MC41NTA1NTA0NzlaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NjEzMzU5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCX05FVF9EUklWRVJTXCIsXG4gICAgXCJVU0JfVVNCTkVUXCIsXG4gICAgXCJVU0JfTkVUX0NYODIzMTBfRVRIXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY3g4MjMxMF9yeF9maXh1cFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgaW4gY3g4MjMxMF9yeF9maXh1cCB0byBwcmV2ZW50IHByb2Nlc3Npbmcgd2hlbiBkZXYtXFx1MDAzZXBhcnRpYWxfcmVtIFxcdTAwM2Ugc2tiLVxcdTAwM2VsZW4uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgVVNCIG5ldHdvcmsgZHJpdmVyJ3MgUlggcGF0aCwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBVU0IgZW11bGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVTQl9ORVRfRFJJVkVSU1wiLFxuICAgIFwiVVNCX1VTQk5FVFwiLFxuICAgIFwiVVNCX05FVF9DWDgyMzEwX0VUSFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImN4ODIzMTBfcnhfZml4dXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGluIGN4ODIzMTBfcnhfZml4dXAgdG8gcHJldmVudCBwcm9jZXNzaW5nIHdoZW4gZGV2LVxcdTAwM2VwYXJ0aWFsX3JlbSBcXHUwMDNlIHNrYi1cXHUwMDNlbGVuLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIFVTQiBuZXR3b3JrIGRyaXZlcidzIFJYIHBhdGgsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGVtdWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTk6NDU6NDAuNjM2NjkwMTNaIiwiU2VxIjoyNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNDA4NjQyNjY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTk6NDU6NDAuNjM3MjA4OFoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyMTQwODExOTY2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGZyb20gYHNrYi1cXHUwMDNlZGF0YWAgaW4gYGN4ODIzMTBfcnhfZml4dXBgLiBXaGVuIGBkZXYtXFx1MDAzZXBhcnRpYWxfcmVtYCBpcyBsYXJnZXIgdGhhbiBgc2tiLVxcdTAwM2VsZW5gLCB0aGUgc3Vic2VxdWVudCBgbWVtY3B5YCBvcGVyYXRpb24gcmVhZHMgcGFzdCB0aGUgZW5kIG9mIHRoZSBgc2tiLVxcdTAwM2VkYXRhYCBidWZmZXIuIFRoaXMgaXMgYSBjbGFzc2ljIGhlYXAgb3V0LW9mLWJvdW5kcyByZWFkIGJ1Zywgd2hpY2ggaXMgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlIGlzIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVhayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBpbnZvbHZlZCB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZGMyNWI4ODA5MjM3OTFhNzg5NDRiZmJjM2RhZDM0MWM1NzRhYmFiMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDE0IDE5OjQzOjE0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMgYi9kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguY1xuaW5kZXggMDY4YWNiMDUyYWRiMC4uOGNhNmI3NWZkZDIwZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jXG4rKysgYi9kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguY1xuQEAgLTI1MSw2ICsyNTEsMTMgQEAgc3RhdGljIGludCBjeDgyMzEwX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdCAqIGVuZCBvZiB0aGF0IHBhY2tldCBhdCB0aGUgYmVnaW5uaW5nLlxuIFx0ICovXG4gXHRpZiAoZGV2LVx1MDAzZXBhcnRpYWxfcmVtKSB7XG4rXHRcdGlmIChkZXYtXHUwMDNlcGFydGlhbF9yZW0gXHUwMDNlIHNrYi1cdTAwM2VsZW4pIHtcbitcdFx0XHRuZXRkZXZfZXJyKGRldi1cdTAwM2VuZXQsXG4rXHRcdFx0XHQgICBcIlJYIHBhcnRpYWwgZnJhbWU6IG5lZWQgJWx1LCBnb3QgJXVcXG5cIixcbitcdFx0XHRcdCAgIGRldi1cdTAwM2VwYXJ0aWFsX3JlbSwgc2tiLVx1MDAzZWxlbik7XG4rXHRcdFx0ZGV2LVx1MDAzZXBhcnRpYWxfcmVtID0gMDtcbitcdFx0XHRyZXR1cm4gMDtcbitcdFx0fVxuIFx0XHRsZW4gPSBkZXYtXHUwMDNlcGFydGlhbF9sZW4gKyBkZXYtXHUwMDNlcGFydGlhbF9yZW07XG4gXHRcdHNrYjIgPSBhbGxvY19za2IobGVuLCBHRlBfQVRPTUlDKTtcbiBcdFx0aWYgKCFza2IyKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTk6NDU6NDAuNjM3MjExOTZaIiwiU2VxIjoyOSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjAwOTcyMTUwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBCb3VuZHMgQ2hlY2sgaW4gYGN4ODIzMTBfcnhfZml4dXBgKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jYC4gSXQncyBpbnRyb2R1Y2luZyBhIGJvdW5kcyBjaGVjayBpbiB0aGUgYGN4ODIzMTBfcnhfZml4dXBgIGZ1bmN0aW9uLiBMZXQncyBzZWUsIHRoZSBmdW5jdGlvbiBpcyBkZWFsaW5nIHdpdGggcGFydGlhbCBmcmFtZXMgaW4gVVNCIG5ldHdvcmsgcGFja2V0cy4gVGhlIGFkZGVkIGNoZWNrIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZDogYGlmIChkZXYtXHUwMDNlcGFydGlhbF9yZW0gXHUwMDNlIHNrYi1cdTAwM2VsZW4pYC4gTXkgZmlyc3QgdGhvdWdodCBpcywgd2h5IGlzIHRoaXMgbmVlZGVkP1xuXG5SaWdodCwgYGRldi1cdTAwM2VwYXJ0aWFsX3JlbWAgcmVwcmVzZW50cyB0aGUgcmVtYWluaW5nIGJ5dGVzIG9mIGEgZnJhZ21lbnRlZCBmcmFtZSwgYW5kIGBza2ItXHUwMDNlbGVuYCBpcyB0aGUgbGVuZ3RoIG9mIHRoZSAqY3VycmVudGx5KiByZWNlaXZlZCBgc2tiYC4gSWYgYGRldi1cdTAwM2VwYXJ0aWFsX3JlbWAgaXMgbGFyZ2VyIHRoYW4gd2hhdCB3ZSd2ZSAqZ290KiBpbiBgc2tiYCwgd2UndmUgZ290IGEgcHJvYmxlbS4gV2l0aG91dCB0aGlzIGNoZWNrLCB0aGUgY29kZSB3b3VsZCB0cnkgdG8gY29weSBgZGV2LVx1MDAzZXBhcnRpYWxfcmVtYCBieXRlcyBmcm9tIHRoZSBgc2tiYCB0byBgc2tiMmAuIFRoYXQncyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQsIHBsYWluIGFuZCBzaW1wbGUuIFdlIGFyZSB0cnlpbmcgdG8gcmVhZCBtb3JlIGRhdGEgdGhhbiBleGlzdHMgaW4gdGhlIGJ1ZmZlci5cblxuTm93LCB0aGF0J3MgaW50ZXJlc3RpbmcuIEkga25vdyBLQVNBTiAqc2hvdWxkKiBjYXRjaCBvdXQtb2YtYm91bmRzIHJlYWRzIGxpa2UgdGhpcywgYnV0IHRoaXMgY2hlY2sgaXMgYSBnb29kIGlkZWEgbm9uZXRoZWxlc3MuIEl0IHByZXZlbnRzIHRoZSBjcmFzaC4gV2hhdCBhYm91dCB1bmluaXRpYWxpemVkIG1lbW9yeT8gTm8sIHRoYXQgZG9lc24ndCBzZWVtIHRvIGJlIGEgZmFjdG9yIGhlcmUuIExldCBtZSBkb3VibGUtY2hlY2sgdGhlIGNvZGUgYXJvdW5kIGBjeDgyMzEwX3J4X2ZpeHVwYCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuIEdvdHRhIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDg3LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDA1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTk6NDU6NDYuNjQ2OTM3Njk2WiIsIlNlcSI6MzAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjkwMDA3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjeDgyMzEwX3J4X2ZpeHVwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jPTIyNj1zdGF0aWMgdm9pZCBjeDgyMzEwX3VuYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjQyLSAqL1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjI0MzpzdGF0aWMgaW50IGN4ODIzMTBfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTI0NC17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYz0zNDE9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mb1xcdGN4ODIzMTBfaW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM0NS1cXHQudW5iaW5kXFx0XFx0PSBjeDgyMzEwX3VuYmluZCxcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzozNDY6XFx0LnJ4X2ZpeHVwXFx0PSBjeDgyMzEwX3J4X2ZpeHVwLFxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM0Ny1cXHQudHhfZml4dXBcXHQ9IGN4ODIzMTBfdHhfZml4dXAsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE5OjQ1OjQ2LjY5Mzg0NjMyMVoiLCJTZXEiOjMxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTI1MjUwOTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRha2Ugb24gYGN4ODIzMTBfcnhfZml4dXBgOlxuXG4qKkFuYWx5emluZyBgY3g4MjMxMF9yeF9maXh1cGAqKlxuXG5BbHJpZ2h0LCBJJ20gZ29pbmcgdG8gdGFrZSBhIGxvb2sgYXQgYGN4ODIzMTBfcnhfZml4dXBgLiBJbW1lZGlhdGVseSwgSSdtIHRoaW5raW5nLCBcIlJYIGZpeHVwXCIgaW1wbGllcyB3ZSdyZSBkZWFsaW5nIHdpdGggcmVjZWl2ZSBwcm9jZXNzaW5nLCBwcm9iYWJseSBvbiBhbiBJbnRlbCBjaGlwc2V0LCBnaXZlbiB0aGUgbmFtaW5nIGNvbnZlbnRpb24uIE15IGltbWVkaWF0ZSBleHBlY3RhdGlvbiBpcyB0aGlzIGZ1bmN0aW9uIGlzIHRhc2tlZCB3aXRoIGhhbmRsaW5nIHNwZWNpZmljLCBwb3RlbnRpYWxseSBhbm9tYWxvdXMsIHJlY2VpdmUgcGFja2V0cyBmcm9tIHRoZSBDWDgyMzEwIGNoaXBzZXQsIGxpa2VseSBzb21lIGtpbmQgb2Ygc2lsaWNvbiBidWcgd29ya2Fyb3VuZCwgb3IgcG9zc2libHkgdG8gYWRqdXN0IGZvciBoYXJkd2FyZSBxdWlya3MuIFRoZSBcImZpeHVwXCIgc3VnZ2VzdHMgdGhpcyBpcyBub3QgdGhlIG5vcm1hbCBwYXRoLCB0aGVyZSBpcyBzb21ldGhpbmcgdW51c3VhbCwgb3IgYW4gZXJyb3IgY29uZGl0aW9uLCB0aGUgY29kZSBuZWVkcyB0byBhZGRyZXNzLiBXZSB3aWxsIGJlIGxvb2tpbmcgZm9yIHBhY2tldCB2YWxpZGF0aW9uLCBoZWFkZXIgYWRqdXN0bWVudHMsIG9yIG1heWJlIGV2ZW4gcGFja2V0IGRyb3BwaW5nIGlmIHRoZSBoYXJkd2FyZSBnaXZlcyB1cyBiYWQgZGF0YS4gVGhlIGdvYWwgd2lsbCBiZSB0byBlaXRoZXIgY29ycmVjdCB0aGUgZXJyYW50IGRhdGEgZm9yIHRoZSB1cHBlciBsYXllcnMgb2YgdGhlIG5ldHdvcmsgc3RhY2ssIG9yIHNhZmVseSBkaXNjYXJkIGl0IHRvIHByZXZlbnQgY29ycnVwdGlvbiBvciB1bmV4cGVjdGVkIGJlaGF2aW91ciwgYXMgd2VsbCBhcyBoYW5kbGUgYW55IGVycm9ycy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE5OCwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE5OjQ1OjUwLjgxOTA5OTkxWiIsIlNlcSI6MzIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwOTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI0MyxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyNDM6XFx0c3RhdGljIGludCBjeDgyMzEwX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gMjQ0OlxcdHtcXG4gMjQ1OlxcdFxcdGludCBsZW47XFxuIDI0NjpcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiMjtcXG4gMjQ3OlxcdFxcdHN0cnVjdCBjeDgyMzEwX3ByaXYgKnByaXYgPSBkZXYtXFx1MDAzZWRyaXZlcl9wcml2O1xcbiAyNDg6XFx0XFxuIDI0OTpcXHRcXHQvKlxcbiAyNTA6XFx0XFx0ICogSWYgdGhlIGxhc3Qgc2tiIGVuZGVkIHdpdGggYW4gaW5jb21wbGV0ZSBwYWNrZXQsIHRoaXMgc2tiIGNvbnRhaW5zXFxuIDI1MTpcXHRcXHQgKiBlbmQgb2YgdGhhdCBwYWNrZXQgYXQgdGhlIGJlZ2lubmluZy5cXG4gMjUyOlxcdFxcdCAqL1xcbiAyNTM6XFx0XFx0aWYgKGRldi1cXHUwMDNlcGFydGlhbF9yZW0pIHtcXG4gMjU0OlxcdFxcdFxcdGlmIChkZXYtXFx1MDAzZXBhcnRpYWxfcmVtIFxcdTAwM2Ugc2tiLVxcdTAwM2VsZW4pIHtcXG4gMjU1OlxcdFxcdFxcdFxcdG5ldGRldl9lcnIoZGV2LVxcdTAwM2VuZXQsXFxuIDI1NjpcXHRcXHRcXHRcXHRcXHQgICBcXFwiUlggcGFydGlhbCBmcmFtZTogbmVlZCAlbHUsIGdvdCAldVxcXFxuXFxcIixcXG4gMjU3OlxcdFxcdFxcdFxcdFxcdCAgIGRldi1cXHUwMDNlcGFydGlhbF9yZW0sIHNrYi1cXHUwMDNlbGVuKTtcXG4gMjU4OlxcdFxcdFxcdFxcdGRldi1cXHUwMDNlcGFydGlhbF9yZW0gPSAwO1xcbiAyNTk6XFx0XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDI2MDpcXHRcXHRcXHR9XFxuIDI2MTpcXHRcXHRcXHRsZW4gPSBkZXYtXFx1MDAzZXBhcnRpYWxfbGVuICsgZGV2LVxcdTAwM2VwYXJ0aWFsX3JlbTtcXG4gMjYyOlxcdFxcdFxcdHNrYjIgPSBhbGxvY19za2IobGVuLCBHRlBfQVRPTUlDKTtcXG4gMjYzOlxcdFxcdFxcdGlmICghc2tiMilcXG4gMjY0OlxcdFxcdFxcdFxcdHJldHVybiAwO1xcbiAyNjU6XFx0XFx0XFx0c2tiX3B1dChza2IyLCBsZW4pO1xcbiAyNjY6XFx0XFx0XFx0bWVtY3B5KHNrYjItXFx1MDAzZWRhdGEsICh2b2lkICopZGV2LVxcdTAwM2VwYXJ0aWFsX2RhdGEsXFxuIDI2NzpcXHRcXHRcXHQgICAgICAgZGV2LVxcdTAwM2VwYXJ0aWFsX2xlbik7XFxuIDI2ODpcXHRcXHRcXHRtZW1jcHkoc2tiMi1cXHUwMDNlZGF0YSArIGRldi1cXHUwMDNlcGFydGlhbF9sZW4sIHNrYi1cXHUwMDNlZGF0YSxcXG4gMjY5OlxcdFxcdFxcdCAgICAgICBkZXYtXFx1MDAzZXBhcnRpYWxfcmVtKTtcXG4gMjcwOlxcdFxcdFxcdHVzYm5ldF9za2JfcmV0dXJuKGRldiwgc2tiMik7XFxuIDI3MTpcXHRcXHRcXHRza2JfcHVsbChza2IsIChkZXYtXFx1MDAzZXBhcnRpYWxfcmVtICsgMSkgXFx1MDAyNiB+MSk7XFxuIDI3MjpcXHRcXHRcXHRkZXYtXFx1MDAzZXBhcnRpYWxfcmVtID0gMDtcXG4gMjczOlxcdFxcdFxcdGlmIChza2ItXFx1MDAzZWxlbiBcXHUwMDNjIDIpXFxuIDI3NDpcXHRcXHRcXHRcXHRyZXR1cm4gMTtcXG4gMjc1OlxcdFxcdH1cXG4gMjc2OlxcdFxcbiAyNzc6XFx0XFx0LyogYSBza2IgY2FuIGNvbnRhaW4gbXVsdGlwbGUgcGFja2V0cyAqL1xcbiAyNzg6XFx0XFx0d2hpbGUgKHNrYi1cXHUwMDNlbGVuIFxcdTAwM2UgMSkge1xcbiAyNzk6XFx0XFx0XFx0LyogZmlyc3QgdHdvIGJ5dGVzIGFyZSBwYWNrZXQgbGVuZ3RoICovXFxuIDI4MDpcXHRcXHRcXHRsZW4gPSBza2ItXFx1MDAzZWRhdGFbMF0gfCAoc2tiLVxcdTAwM2VkYXRhWzFdIFxcdTAwM2NcXHUwMDNjIDgpO1xcbiAyODE6XFx0XFx0XFx0c2tiX3B1bGwoc2tiLCAyKTtcXG4gMjgyOlxcdFxcbiAyODM6XFx0XFx0XFx0LyogaWYgbGFzdCBwYWNrZXQgaW4gdGhlIHNrYiwgbGV0IHVzYm5ldCB0byBwcm9jZXNzIGl0ICovXFxuIDI4NDpcXHRcXHRcXHRpZiAobGVuID09IHNrYi1cXHUwMDNlbGVuIHx8IGxlbiArIDEgPT0gc2tiLVxcdTAwM2VsZW4pIHtcXG4gMjg1OlxcdFxcdFxcdFxcdHNrYl90cmltKHNrYiwgbGVuKTtcXG4gMjg2OlxcdFxcdFxcdFxcdGJyZWFrO1xcbiAyODc6XFx0XFx0XFx0fVxcbiAyODg6XFx0XFxuIDI4OTpcXHRcXHRcXHRpZiAobGVuID09IDB4ZmZmZikge1xcbiAyOTA6XFx0XFx0XFx0XFx0bmV0ZGV2X2luZm8oZGV2LVxcdTAwM2VuZXQsIFxcXCJyb3V0ZXIgd2FzIHJlYm9vdGVkLCByZS1lbmFibGluZyBldGhlcm5ldCBtb2RlXFxcIik7XFxuIDI5MTpcXHRcXHRcXHRcXHRzY2hlZHVsZV93b3JrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWVuYWJsZV93b3JrKTtcXG4gMjkyOlxcdFxcdFxcdH0gZWxzZSBpZiAobGVuIFxcdTAwM2UgQ1g4MjMxMF9NVFUpIHtcXG4gMjkzOlxcdFxcdFxcdFxcdG5ldGRldl9lcnIoZGV2LVxcdTAwM2VuZXQsIFxcXCJSWCBwYWNrZXQgdG9vIGxvbmc6ICVkIEJcXFxcblxcXCIsIGxlbik7XFxuIDI5NDpcXHRcXHRcXHRcXHRyZXR1cm4gMDtcXG4gMjk1OlxcdFxcdFxcdH1cXG4gMjk2OlxcdFxcbiAyOTc6XFx0XFx0XFx0LyogaW5jb21wbGV0ZSBwYWNrZXQsIHNhdmUgaXQgZm9yIHRoZSBuZXh0IHNrYiAqL1xcbiAyOTg6XFx0XFx0XFx0aWYgKGxlbiBcXHUwMDNlIHNrYi1cXHUwMDNlbGVuKSB7XFxuIDI5OTpcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZXBhcnRpYWxfbGVuID0gc2tiLVxcdTAwM2VsZW47XFxuIDMwMDpcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZXBhcnRpYWxfcmVtID0gbGVuIC0gc2tiLVxcdTAwM2VsZW47XFxuIDMwMTpcXHRcXHRcXHRcXHRtZW1jcHkoKHZvaWQgKilkZXYtXFx1MDAzZXBhcnRpYWxfZGF0YSwgc2tiLVxcdTAwM2VkYXRhLFxcbiAzMDI6XFx0XFx0XFx0XFx0ICAgICAgIGRldi1cXHUwMDNlcGFydGlhbF9sZW4pO1xcbiAzMDM6XFx0XFx0XFx0XFx0c2tiX3B1bGwoc2tiLCBza2ItXFx1MDAzZWxlbik7XFxuIDMwNDpcXHRcXHRcXHRcXHRicmVhaztcXG4gMzA1OlxcdFxcdFxcdH1cXG4gMzA2OlxcdFxcbiAzMDc6XFx0XFx0XFx0c2tiMiA9IGFsbG9jX3NrYihsZW4sIEdGUF9BVE9NSUMpO1xcbiAzMDg6XFx0XFx0XFx0aWYgKCFza2IyKVxcbiAzMDk6XFx0XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDMxMDpcXHRcXHRcXHRza2JfcHV0KHNrYjIsIGxlbik7XFxuIDMxMTpcXHRcXHRcXHRtZW1jcHkoc2tiMi1cXHUwMDNlZGF0YSwgc2tiLVxcdTAwM2VkYXRhLCBsZW4pO1xcbiAzMTI6XFx0XFx0XFx0LyogcHJvY2VzcyB0aGUgcGFja2V0ICovXFxuIDMxMzpcXHRcXHRcXHR1c2JuZXRfc2tiX3JldHVybihkZXYsIHNrYjIpO1xcbiAzMTQ6XFx0XFxuIDMxNTpcXHRcXHRcXHRza2JfcHVsbChza2IsIChsZW4gKyAxKSBcXHUwMDI2IH4xKTtcXG4gMzE2OlxcdFxcdH1cXG4gMzE3OlxcdFxcbiAzMTg6XFx0XFx0LyogbGV0IHVzYm5ldCBwcm9jZXNzIHRoZSBsYXN0IHBhY2tldCAqL1xcbiAzMTk6XFx0XFx0cmV0dXJuIDE7XFxuIDMyMDpcXHR9XFxuIDMyMTpcXHRcXG4gMzIyOlxcdC8qIFRYIGlzIGVhc3ksIGp1c3QgYWRkIDIgYnl0ZXMgb2YgbGVuZ3RoIGF0IHRoZSBiZWdpbm5pbmcgKi9cXG4gMzIzOlxcdHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqY3g4MjMxMF90eF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuIDMyNDpcXHRcXHRcXHRcXHRcXHQgICAgICAgZ2ZwX3QgZmxhZ3MpXFxuIDMyNTpcXHR7XFxuIDMyNjpcXHRcXHRpbnQgbGVuID0gc2tiLVxcdTAwM2VsZW47XFxuIDMyNzpcXHRcXG4gMzI4OlxcdFxcdGlmIChza2JfY293X2hlYWQoc2tiLCAyKSkge1xcbiAzMjk6XFx0XFx0XFx0ZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTtcXG4gMzMwOlxcdFxcdFxcdHJldHVybiBOVUxMO1xcbiAzMzE6XFx0XFx0fVxcbiAzMzI6XFx0XFx0c2tiX3B1c2goc2tiLCAyKTtcXG4gMzMzOlxcdFxcbiAzMzQ6XFx0XFx0c2tiLVxcdTAwM2VkYXRhWzBdID0gbGVuO1xcbiAzMzU6XFx0XFx0c2tiLVxcdTAwM2VkYXRhWzFdID0gbGVuIFxcdTAwM2VcXHUwMDNlIDg7XFxuIDMzNjpcXHRcXG4gMzM3OlxcdFxcdHJldHVybiBza2I7XFxuIDMzODpcXHR9XFxuIDMzOTpcXHRcXG4gMzQwOlxcdFxcbiAzNDE6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mb1xcdGN4ODIzMTBfaW5mbyA9IHtcXG4gMzQyOlxcdFxcdC5kZXNjcmlwdGlvblxcdD0gXFxcIkNvbmV4YW50IENYODIzMTAgVVNCIGV0aGVybmV0XFxcIixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTk6NDU6NTAuODE5MTkyNjdaIiwiU2VxIjozMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEyMjYxMTQ1OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNZW1vcnkgU2FmZXR5IG9mIHRoZSBjeDgyMzEwX3J4X2ZpeHVwIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNoZWNrOiBgaWYgKGRldi1cdTAwM2VwYXJ0aWFsX3JlbSBcdTAwM2Ugc2tiLVx1MDAzZWxlbilgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIFwiQWgsIHRoYXQgbG9va3MgbGlrZSBhIHBvdGVudGlhbCBidWZmZXIgb3ZlcmZsb3cgZml4LlwiIEFuZCBpdCBpcy4gRXNzZW50aWFsbHksIHdpdGhvdXQgdGhlIHBhdGNoLCB0aGUgY29kZSB3b3VsZCBiZSBhdHRlbXB0aW5nIGEgYG1lbWNweWAgZnJvbSBgc2tiLVx1MDAzZWRhdGFgIHdoZXJlIHRoZSBzb3VyY2Ugc2l6ZSAoYGRldi1cdTAwM2VwYXJ0aWFsX3JlbWApIGV4Y2VlZHMgdGhlIGFsbG9jYXRlZCBzaXplIG9mIHRoZSBzb3VyY2UgYnVmZmVyIChgc2tiLVx1MDAzZWxlbmApLiBUaGF0J3MgYSB0ZXh0Ym9vayBvdXQtb2YtYm91bmRzIHJlYWQuXG5cbk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgd2FycmFudHMgS01TQU4gKEtlcm5lbCBNZW1vcnkgU2FuaXRpemVyKS4gTXkgaW1tZWRpYXRlIGludHVpdGlvbiBpcyBuby4gS0FTQU4gKEtlcm5lbCBBZGRyZXNzIFNhbml0aXplcikgaXMgKmRlc2lnbmVkKiB0byBjYXRjaCB0aGVzZSBvdXQtb2YtYm91bmRzIGhlYXAgcmVhZHMuIGBza2ItXHUwMDNlZGF0YWAgaXMgaGVhcC1hbGxvY2F0ZWQgdXNpbmcgYGttYWxsb2NgIG9yIGVxdWl2YWxlbnQsIHNvIEtBU0FOIHdpbGwgZmxhZyB0aGUgaWxsZWdhbCByZWFkIGR1cmluZyB0aGUgYG1lbWNweWAuIFRoZSBrZXkgaXMgdGhhdCB3ZSBhcmUgcmVhZGluZyAqb3V0LW9mLWJvdW5kcyBtZW1vcnkqLCBub3QgKnVuaW5pdGlhbGl6ZWQqIG1lbW9yeS4gV2hpbGUgS01TQU4gKmNhbiogc29tZXRpbWVzIGNhdGNoIE9PQiByZWFkcywgS0FTQU4gaXMgdGhlIHByaW1hcnkgYW5kIHN1ZmZpY2llbnQgdG9vbCBoZXJlLlxuXG5UaGlzIG91dC1vZi1ib3VuZHMgcmVhZCBpcyB0aGVuIHBhc3NlZCB0byBgdXNibmV0X3NrYl9yZXR1cm5gLCB1bHRpbWF0ZWx5IHNlbmRpbmcgdGhlIHBhY2tldCB1cCB0aGUgc3RhY2suIENvdWxkIHRoaXMgYmUgYW4gaW5mb3JtYXRpb24gbGVhaz8gUG90ZW50aWFsbHksIHRoZSBvdXQtb2YtYm91bmRzIGRhdGEgY291bGQgYmUga2VybmVsIGhlYXAgbWVtb3J5IGFuZCBpbmNsdWRlZCBpbiBhIHBhY2tldC4gWWVzLCB0ZWNobmljYWxseSBpdCAqaXMqIGFuIGluZm8tbGVhaywgaWYgdGhlIE9PQiByZWFkIGlzIGZyb20gc29tZSBzZW5zaXRpdmUgYXJlYSBvZiBtZW1vcnkuIEhvd2V2ZXIsIHRoZSBLQVNBTiBjaGVjayBpcyB3aGF0IG1hdHRlcnMgaGVyZSwgYXMgaXQgY2F0Y2hlcyB0aGUgdnVsbmVyYWJpbGl0eS5cblxuTGV0J3MgZG91YmxlLWNoZWNrIGFib3V0IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBgc2tiMmAgaXMgYWxsb2NhdGVkIGFuZCBgc2tiX3B1dGAgaXMgY2FsbGVkIGJlZm9yZSBhbnkgYG1lbWNweWAuIFRoZW4gd2UndmUgZ290IHRoZSBgbWVtY3B5YCBvcGVyYXRpb25zLiBUaGUgY3JpdGljYWwgb25lIGlzIGBtZW1jcHkoc2tiMi1cdTAwM2VkYXRhICsgZGV2LVx1MDAzZXBhcnRpYWxfbGVuLCBza2ItXHUwMDNlZGF0YSwgZGV2LVx1MDAzZXBhcnRpYWxfcmVtKTtgLiBJZiBgZGV2LVx1MDAzZXBhcnRpYWxfcmVtIFx1MDAzZSBza2ItXHUwMDNlbGVuYCwgdGhpcyByZWFkcyBvdXQgb2YgYm91bmRzIGZyb20gYHNrYi1cdTAwM2VkYXRhYC4gTm8gdW5pbml0aWFsaXplZCBkYXRhIGludm9sdmVkLiBUaGUgT09CIGlzIHRoZSBwcm9ibGVtLCBub3QgdGhlICppbml0aWFsaXphdGlvbiogb2YgdGhlIHNvdXJjZSBkYXRhLlxuXG5UaGVyZWZvcmUsIGJlY2F1c2UgS0FTQU4gcmVsaWFibHkgZGV0ZWN0cyB0aGlzIG91dC1vZi1ib3VuZHMgcmVhZCwgSSdtIGNvbmZpZGVudCBpbiBzZXR0aW5nIGBOZWVkc0tNU0FOPWZhbHNlYC4gVGhlIHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IHRoZSBwYXRjaCBhZGRyZXNzZXMgYW4gb3V0LW9mLWJvdW5kcyBoZWFwIHJlYWQgZnJvbSBgc2tiLVx1MDAzZWRhdGFgLCBhIGJ1ZyBjYXVnaHQgYnkgS0FTQU4uIFdlIGFyZSBub3QgZGVhbGluZyB3aXRoIGEgbGVhayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSwgd2hpY2ggaXMgdGhlIGRvbWFpbiBvZiBLTVNBTi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTA4NiwiT3V0cHV0VG9rZW5zIjoxMzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MDQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxOTo0NjowMi4wNDUzMTAxMTVaIiwiU2VxIjozNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzE0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBmcm9tIGBza2ItXFx1MDAzZWRhdGFgIGluIGBjeDgyMzEwX3J4X2ZpeHVwYC4gV2hlbiBgZGV2LVxcdTAwM2VwYXJ0aWFsX3JlbWAgaXMgbGFyZ2VyIHRoYW4gYHNrYi1cXHUwMDNlbGVuYCwgdGhlIHN1YnNlcXVlbnQgYG1lbWNweWAgb3BlcmF0aW9uIHJlYWRzIHBhc3QgdGhlIGVuZCBvZiB0aGUgYHNrYi1cXHUwMDNlZGF0YWAgYnVmZmVyLiBUaGlzIGlzIGEgY2xhc3NpYyBoZWFwIG91dC1vZi1ib3VuZHMgcmVhZCBidWcsIHdoaWNoIGlzIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZSBpcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWsgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgaW52b2x2ZWQgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBmcm9tIGBza2ItXFx1MDAzZWRhdGFgIGluIGBjeDgyMzEwX3J4X2ZpeHVwYC4gV2hlbiBgZGV2LVxcdTAwM2VwYXJ0aWFsX3JlbWAgaXMgbGFyZ2VyIHRoYW4gYHNrYi1cXHUwMDNlbGVuYCwgdGhlIHN1YnNlcXVlbnQgYG1lbWNweWAgb3BlcmF0aW9uIHJlYWRzIHBhc3QgdGhlIGVuZCBvZiB0aGUgYHNrYi1cXHUwMDNlZGF0YWAgYnVmZmVyLiBUaGlzIGlzIGEgY2xhc3NpYyBoZWFwIG91dC1vZi1ib3VuZHMgcmVhZCBidWcsIHdoaWNoIGlzIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZSBpcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWsgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgaW52b2x2ZWQgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowl29bz[1] Phase: Succeeded StartedAt: 2026-08-14 19:46:13 +0000 UTC FinishedAt: 2026-08-14 19:46:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl29bz[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-14 19:46:13 +0000 UTC FinishedAt: 2026-08-14 19:46:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl29bz[2] Phase: Succeeded StartedAt: 2026-08-14 19:46:13 +0000 UTC FinishedAt: 2026-08-14 21:26:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl29bz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"7eb621f3-0bde-4635-9d60-ac1abb0c458b","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-14 19:46:13 +0000 UTC FinishedAt: 2026-08-14 21:26:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"7eb621f3-0bde-4635-9d60-ac1abb0c458b","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowl29bz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"7eb621f3-0bde-4635-9d60-ac1abb0c458b","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-14 19:46:13 +0000 UTC FinishedAt: 2026-08-14 19:46:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl29bz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"7eb621f3-0bde-4635-9d60-ac1abb0c458b","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-14 19:46:13 +0000 UTC FinishedAt: 2026-08-14 19:46:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowl29bz/series-workflowl29bz-convert-artifact-896582587/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl29bz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"7eb621f3-0bde-4635-9d60-ac1abb0c458b","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-14 19:46:23 +0000 UTC FinishedAt: 2026-08-14 20:06:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl29bz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"7eb621f3-0bde-4635-9d60-ac1abb0c458b","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-14 19:46:23 +0000 UTC FinishedAt: 2026-08-14 20:06:22 +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:*74f1cf52-9775-4887-bfcb-2a9bd3807226,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-workflowl29bz/series-workflowl29bz-convert-artifact-896582587/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": "828b6ed4-84e5-4f9b-8315-b130fe954681", "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-workflowl29bz/series-workflowl29bz-build-action-88461817/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl29bz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"7eb621f3-0bde-4635-9d60-ac1abb0c458b","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-14 19:46:23 +0000 UTC FinishedAt: 2026-08-14 20:06:12 +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:*74f1cf52-9775-4887-bfcb-2a9bd3807226,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-workflowl29bz/series-workflowl29bz-convert-artifact-896582587/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": "828b6ed4-84e5-4f9b-8315-b130fe954681", "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-workflowl29bz/series-workflowl29bz-build-action-88461817/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl29bz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"7eb621f3-0bde-4635-9d60-ac1abb0c458b","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-14 20:06:22 +0000 UTC FinishedAt: 2026-08-14 20:06:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl29bz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"7eb621f3-0bde-4635-9d60-ac1abb0c458b","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-14 20:06:22 +0000 UTC FinishedAt: 2026-08-14 20:06:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl29bz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"7eb621f3-0bde-4635-9d60-ac1abb0c458b","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-14 20:06:22 +0000 UTC FinishedAt: 2026-08-14 20:06:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl29bz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"7eb621f3-0bde-4635-9d60-ac1abb0c458b","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-14 20:06:22 +0000 UTC FinishedAt: 2026-08-14 20:06:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"7eb621f3-0bde-4635-9d60-ac1abb0c458b","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowl29bz/series-workflowl29bz-convert-artifact-3254072082/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl29bz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"7eb621f3-0bde-4635-9d60-ac1abb0c458b","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-14 20:06:32 +0000 UTC FinishedAt: 2026-08-14 20:08:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl29bz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"7eb621f3-0bde-4635-9d60-ac1abb0c458b","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-14 20:06:32 +0000 UTC FinishedAt: 2026-08-14 20:08:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*828b6ed4-84e5-4f9b-8315-b130fe954681,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-workflowl29bz/series-workflowl29bz-build-action-88461817/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-workflowl29bz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"7eb621f3-0bde-4635-9d60-ac1abb0c458b","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-14 20:08:44 +0000 UTC FinishedAt: 2026-08-14 20:08:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl29bz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"7eb621f3-0bde-4635-9d60-ac1abb0c458b","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-14 20:08:44 +0000 UTC FinishedAt: 2026-08-14 20:08:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl29bz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"7eb621f3-0bde-4635-9d60-ac1abb0c458b","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-14 20:08:44 +0000 UTC FinishedAt: 2026-08-14 20:26:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl29bz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"7eb621f3-0bde-4635-9d60-ac1abb0c458b","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-14 20:08:44 +0000 UTC FinishedAt: 2026-08-14 20:26:50 +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:*74f1cf52-9775-4887-bfcb-2a9bd3807226,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-workflowl29bz/series-workflowl29bz-convert-artifact-3254072082/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": "5d6ddc28-38e9-4a03-8fdd-b6a261251d8d", "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-workflowl29bz/series-workflowl29bz-build-action-1431154598/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl29bz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"7eb621f3-0bde-4635-9d60-ac1abb0c458b","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-14 20:08:44 +0000 UTC FinishedAt: 2026-08-14 20:26:40 +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:*74f1cf52-9775-4887-bfcb-2a9bd3807226,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-workflowl29bz/series-workflowl29bz-convert-artifact-3254072082/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": "5d6ddc28-38e9-4a03-8fdd-b6a261251d8d", "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-workflowl29bz/series-workflowl29bz-build-action-1431154598/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl29bz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"7eb621f3-0bde-4635-9d60-ac1abb0c458b","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-14 20:26:50 +0000 UTC FinishedAt: 2026-08-14 20:26:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl29bz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"7eb621f3-0bde-4635-9d60-ac1abb0c458b","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-14 20:26:50 +0000 UTC FinishedAt: 2026-08-14 20:26:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl29bz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"7eb621f3-0bde-4635-9d60-ac1abb0c458b","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-14 20:26:50 +0000 UTC FinishedAt: 2026-08-14 20:28:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl29bz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"7eb621f3-0bde-4635-9d60-ac1abb0c458b","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-14 20:26:50 +0000 UTC FinishedAt: 2026-08-14 20:28:33 +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:*5d6ddc28-38e9-4a03-8fdd-b6a261251d8d,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-workflowl29bz/series-workflowl29bz-build-action-1431154598/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-workflowl29bz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"7eb621f3-0bde-4635-9d60-ac1abb0c458b","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-14 20:28:43 +0000 UTC FinishedAt: 2026-08-14 21:26:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl29bz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"7eb621f3-0bde-4635-9d60-ac1abb0c458b","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-14 20:28:43 +0000 UTC FinishedAt: 2026-08-14 21:26:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"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:*828b6ed4-84e5-4f9b-8315-b130fe954681,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5d6ddc28-38e9-4a03-8fdd-b6a261251d8d,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-workflowl29bz/series-workflowl29bz-build-action-88461817/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-workflowl29bz/series-workflowl29bz-build-action-1431154598/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowl29bz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"7eb621f3-0bde-4635-9d60-ac1abb0c458b","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-14 20:28:43 +0000 UTC FinishedAt: 2026-08-14 20:28:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl29bz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"7eb621f3-0bde-4635-9d60-ac1abb0c458b","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-14 20:28:43 +0000 UTC FinishedAt: 2026-08-14 20:28:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"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-workflowl29bz/series-workflowl29bz-convert-artifact-1846791783/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl29bz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"7eb621f3-0bde-4635-9d60-ac1abb0c458b","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-14 20:28:43 +0000 UTC FinishedAt: 2026-08-14 20:28:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl29bz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"7eb621f3-0bde-4635-9d60-ac1abb0c458b","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-14 20:28:43 +0000 UTC FinishedAt: 2026-08-14 20:28:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl29bz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"7eb621f3-0bde-4635-9d60-ac1abb0c458b","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-14 20:28:43 +0000 UTC FinishedAt: 2026-08-14 20:28:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl29bz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"7eb621f3-0bde-4635-9d60-ac1abb0c458b","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-14 20:28:53 +0000 UTC FinishedAt: 2026-08-14 21:26:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl29bz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_DRIVERS","USB_USBNET","USB_NET_CX82310_ETH"],"series_id":"7eb621f3-0bde-4635-9d60-ac1abb0c458b","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-14 20:28:53 +0000 UTC FinishedAt: 2026-08-14 21:26:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*828b6ed4-84e5-4f9b-8315-b130fe954681,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5d6ddc28-38e9-4a03-8fdd-b6a261251d8d,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-workflowl29bz/series-workflowl29bz-build-action-88461817/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-workflowl29bz/series-workflowl29bz-build-action-1431154598/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-workflowl29bz/series-workflowl29bz-convert-artifact-1846791783/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,}