Name: series-workflowwbfnd Phase: Succeeded StartedAt: 2026-08-04 10:15:47 +0000 UTC FinishedAt: 2026-08-04 12:00:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwbfnd[0] Phase: Succeeded StartedAt: 2026-08-04 10:15:47 +0000 UTC FinishedAt: 2026-08-04 10:39:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwbfnd[0].run-triage Phase: Succeeded StartedAt: 2026-08-04 10:15:47 +0000 UTC FinishedAt: 2026-08-04 10:39:42 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "2195424c3da2ef1829a63b807e3a900a90e57d85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_TABLES", "NF_TABLES_INET", "NFT_REJECT", "NFT_REJECT_INET", "NF_REJECT_IPV4" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "2195424c3da2ef1829a63b807e3a900a90e57d85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_TABLES", "NF_TABLES_INET", "NFT_REJECT", "NFT_REJECT_INET", "NF_REJECT_IPV4" ], "series_id": "6aba401a-0490-432d-b040-1bcb78b1673d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nf_send_unreach" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX1RBQkxFUyYjMzQ7LAogICAgJiMzNDtORl9UQUJMRVNfSU5FVCYjMzQ7LAogICAgJiMzNDtORlRfUkVKRUNUJiMzNDssCiAgICAmIzM0O05GVF9SRUpFQ1RfSU5FVCYjMzQ7LAogICAgJiMzNDtORl9SRUpFQ1RfSVBWNCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25mX3NlbmRfdW5yZWFjaCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgbmZfc2VuZF91bnJlYWNoYCB0byBpbml0aWFsaXplIHRoZSBJUHY0IGNvbnRyb2wgYmxvY2sgKElQQ0IpIHdoZW4gY2FsbGVkIGZyb20gdGhlIGBORl9JTkVUX0lOR1JFU1NgIGhvb2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXRmaWx0ZXIgSVB2NCByZWplY3QgaGFuZGxpbmcgbG9naWMsIGZpeGluZyBhIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSBhY2Nlc3MuIEl0IGlzIHJlYWNoYWJsZSB2aWEgdGhlIG5mdGFibGVzIGBpbmV0YCBmYW1pbHkgaW5ncmVzcyBob29rLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMGVmZjFhMTExNWExNmQyMDJlOTYyMzQ4NDAzOTljMGE1ZWU2Mjc0N1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDQgMTA6MzY6MDYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMgYi9uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuY1xuaW5kZXggNDYyNmRjNDY4MDhmMy4uNDkzM2Y2NTEzOGQ2YiAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuY1xuQEAgLTM1NSw2ICYjNDM7MzU1LDEyIEBAIHZvaWQgbmZfc2VuZF91bnJlYWNoKHN0cnVjdCBza19idWZmICpza2JfaW4sIGludCBjb2RlLCBpbnQgaG9vaylcbiBcdGlmICghc2tiX2RzdChza2JfaW4pIFx1MDAyNlx1MDAyNiBuZl9yZWplY3RfZmlsbF9za2JfZHN0KHNrYl9pbikgXHUwMDNjIDApXG4gXHRcdHJldHVybjtcbiBcbiYjNDM7XHQvKiBJbmV0IGluZ3Jlc3MgcnVucyBiZWZvcmUgSVB2NCBpbml0aWFsaXplcyBJUENCLiAqL1xuJiM0MztcdGlmIChob29rID09IE5GX0lORVRfSU5HUkVTUykge1xuJiM0MztcdFx0bWVtc2V0KElQQ0Ioc2tiX2luKSwgMCwgc2l6ZW9mKCpJUENCKHNrYl9pbikpKTtcbiYjNDM7XHRcdElQQ0Ioc2tiX2luKS1cdTAwM2VpaWYgPSBza2JfaW4tXHUwMDNlc2tiX2lpZjtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0aWYgKHNrYl9jc3VtX3VubmVjZXNzYXJ5KHNrYl9pbikgfHxcbiBcdCAgICAhbmZfcmVqZWN0X3ZlcmlmeV9jc3VtKHNrYl9pbiwgZGF0YW9mZiwgcHJvdG8pKSB7XG4gXHRcdGljbXBfc2VuZChza2JfaW4sIElDTVBfREVTVF9VTlJFQUNILCBjb2RlLCAwKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4zbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZfVEFCTEVTJiMzNDssCiAgICAmIzM0O05GX1RBQkxFU19JTkVUJiMzNDssCiAgICAmIzM0O05GVF9SRUpFQ1QmIzM0OywKICAgICYjMzQ7TkZUX1JFSkVDVF9JTkVUJiMzNDssCiAgICAmIzM0O05GX1JFSkVDVF9JUFY0JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZfc2VuZF91bnJlYWNoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBuZl9zZW5kX3VucmVhY2hgIHRvIGluaXRpYWxpemUgdGhlIElQdjQgY29udHJvbCBibG9jayAoSVBDQikgd2hlbiBjYWxsZWQgZnJvbSB0aGUgYE5GX0lORVRfSU5HUkVTU2AgaG9vay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldGZpbHRlciBJUHY0IHJlamVjdCBoYW5kbGluZyBsb2dpYywgZml4aW5nIGEgcG90ZW50aWFsIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFjY2Vzcy4gSXQgaXMgcmVhY2hhYmxlIHZpYSB0aGUgbmZ0YWJsZXMgYGluZXRgIGZhbWlseSBpbmdyZXNzIGhvb2suJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwZWZmMWExMTE1YTE2ZDIwMmU5NjIzNDg0MDM5OWMwYTVlZTYyNzQ3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBBdWcgNCAxMDozNjowNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jIGIvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMKaW5kZXggNDYyNmRjNDY4MDhmMy4uNDkzM2Y2NTEzOGQ2YiAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMKQEAgLTM1NSw2ICYjNDM7MzU1LDEyIEBAIHZvaWQgbmZfc2VuZF91bnJlYWNoKHN0cnVjdCBza19idWZmICpza2JfaW4sIGludCBjb2RlLCBpbnQgaG9vaykKIAlpZiAoIXNrYl9kc3Qoc2tiX2luKSAmYW1wOyZhbXA7IG5mX3JlamVjdF9maWxsX3NrYl9kc3Qoc2tiX2luKSAmbHQ7IDApCiAJCXJldHVybjsKIAomIzQzOwkvKiBJbmV0IGluZ3Jlc3MgcnVucyBiZWZvcmUgSVB2NCBpbml0aWFsaXplcyBJUENCLiAqLwomIzQzOwlpZiAoaG9vayA9PSBORl9JTkVUX0lOR1JFU1MpIHsKJiM0MzsJCW1lbXNldChJUENCKHNrYl9pbiksIDAsIHNpemVvZigqSVBDQihza2JfaW4pKSk7CiYjNDM7CQlJUENCKHNrYl9pbiktJmd0O2lpZiA9IHNrYl9pbi0mZ3Q7c2tiX2lpZjsKJiM0MzsJfQomIzQzOwogCWlmIChza2JfY3N1bV91bm5lY2Vzc2FyeShza2JfaW4pIHx8CiAJICAgICFuZl9yZWplY3RfdmVyaWZ5X2NzdW0oc2tiX2luLCBkYXRhb2ZmLCBwcm90bykpIHsKIAkJaWNtcF9zZW5kKHNrYl9pbiwgSUNNUF9ERVNUX1VOUkVBQ0gsIGNvZGUsIDApOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjAzCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTmV0ZmlsdGVyIElQdjQgUmVqZWN0IEhhbmRsaW5nIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGluIGBuZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuY2AuIEl0JiMzOTtzIGZvY3VzZWQgb24gdGhlIGBuZl9zZW5kX3VucmVhY2hgIGZ1bmN0aW9uLCB3aGljaCBpcyB0aGUgaGVhcnQgb2YgaG93IElQdjQgcGFja2V0cyBhcmUgcmVqZWN0ZWQgYnkgTmV0ZmlsdGVyLiBGcm9tIHdoYXQgSSBzZWUsIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY29uZGl0aW9uYWwgY2hlY2s6IGl0IHRlc3RzIGlmIHRoZSBgaG9va2AgdmFyaWFibGUgaXMgZXF1YWwgdG8gYE5GX0lORVRfSU5HUkVTU2AuIElmIHRoYXQgY2hlY2sgcGFzc2VzLCBpdCB0aGVuIGdvZXMgb24gdG8gaW5pdGlhbGl6ZSBgSVBDQihza2JfaW4pYC4KCkVzc2VudGlhbGx5LCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24gdG8gdGhlIG5ldGZpbHRlciBJUHY0IHJlamVjdCBiZWhhdmlvci4gSSBuZWVkIHRvIGRpZyBpbiBmdXJ0aGVyIHRvIGZpZ3VyZSBvdXQgKndoeSogdGhpcyBpbml0aWFsaXphdGlvbiBpcyBoYXBwZW5pbmcgd2hlbiBpbmdyZXNzIHBhY2tldHMgYXJlIGJlaW5nIHJlamVjdGVkLiBNeSBpbnN0aW5jdCBpcyB0aGF0IHRoaXMgaW5pdGlhbGl6YXRpb24gaXMgY3J1Y2lhbCB3aGVuIGluZ3Jlc3MgcGFja2V0cyBhcmUgYmVpbmcgcmVqZWN0ZWQsIGJ1dCB0aGlzIGlzIHNvbWV0aGluZyB0aGF0IG5lZWRzIGEgZGVlcGVyIGxvb2suIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYElQQ0Ioc2tiX2luKWAgcmVwcmVzZW50cyBhbmQgaG93IGl0cyBpbml0aWFsaXphdGlvbiBhdCB0aGlzIHBvaW50IGltcGFjdHMgdGhlIG92ZXJhbGwgZmxvdyBvZiB0aGUgcGFja2V0LiBMZXQmIzM5O3MgZGVsdmUgaW50byB0aGUgZnVuY3Rpb24gdG8gYmUgY2VydGFpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl9zZW5kX3VucmVhY2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYz0zNDQ9RVhQT1JUX1NZTUJPTF9HUEwobmZfc2VuZF9yZXNldCk7XG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYy0zNDUtXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYzozNDY6dm9pZCBuZl9zZW5kX3VucmVhY2goc3RydWN0IHNrX2J1ZmYgKnNrYl9pbiwgaW50IGNvZGUsIGludCBob29rKVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMtMzQ3LXtcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYy0zNzItfVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmM6MzczOkVYUE9SVF9TWU1CT0xfR1BMKG5mX3NlbmRfdW5yZWFjaCk7XG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYy0zNzQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgwOAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgZm9jdXNpbmcgb24gZmlndXJpbmcgb3V0IHRob3NlIGBuZl9zZW5kX3VucmVhY2hgIGNvbmZpZ3VyYXRpb25zOgoKKipBbmFseXppbmcgYG5mX3NlbmRfdW5yZWFjaGAgQ29uZmlndXJhdGlvbiBSZXF1aXJlbWVudHMqKgoKT2theSwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0IGNvbmZpZ3VyYXRpb25zIGFyZSBlc3NlbnRpYWwgZm9yIGBuZl9zZW5kX3VucmVhY2hgIHRvIGZ1bmN0aW9uIHByb3Blcmx5LiBNeSBpbW1lZGlhdGUgdGhpbmtpbmcgZ29lcyB0byB0aGUgbmV0d29ya2luZyBzdGFjaywgbmF0dXJhbGx5LiBJ4oCZbSBzdGFydGluZyB3aXRoIHRoZSBhc3N1bXB0aW9uIHRoYXQgdGhpcyBsaWtlbHkgdG91Y2hlcyB1cG9uIHRoZSBOZXRmaWx0ZXIgZnJhbWV3b3JrLCBzbyB0aGUgc3RhbmRhcmQgTmV0ZmlsdGVyIG1vZHVsZSBsb2FkaW5nIGNvbnNpZGVyYXRpb25zIGFyZSBkZWZpbml0ZWx5IG9uIHRoZSByYWRhci4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoYXQgYGlwdGFibGVzYCBvciBgbmZ0YWJsZXNgIChkZXBlbmRpbmcgb24gdGhlIHN5c3RlbSwgb2YgY291cnNlKSBhcmUgY29uZmlndXJlZCBjb3JyZWN0bHkgYW5kIHRoYXQgdGhlIG5lY2Vzc2FyeSBOZXRmaWx0ZXIgbW9kdWxlcyBhcmUgbG9hZGVkLiBBbnkgcHJlLXJlcXVpc2l0ZXMgZm9yIHRoZSB0YXJnZXQgY29uZmlndXJhdGlvbiAoZS5nLiwgc3BlY2lmaWMga2VybmVsIHZlcnNpb25zLCBmZWF0dXJlcyBlbmFibGVkIGR1cmluZyBjb21waWxhdGlvbikgYXJlIGtleSBjb25zaWRlcmF0aW9ucywgb2YgY291cnNlLCBhcyB3ZWxsLgoKSeKAmW0gYWxzbyBhc3N1bWluZyB0aGF0IHRoZSBzcGVjaWZpYyAqYmVoYXZpb3IqIG9mIGBuZl9zZW5kX3VucmVhY2hgIGlzIGNvbnRleHQtZGVwZW5kZW50LiBXaGF0IHRyaWdnZXJzIGl0cyB1c2U/IFdoYXQga2luZCBvZiBJQ01QIG1lc3NhZ2UgZ2V0cyBzZW50IGJhY2s/IEtub3dpbmcgaG93IHRoZSBhcHBsaWNhdGlvbiwgb3IgdGhlIHN5c3RlbSwgKnVzZXMqIGBuZl9zZW5kX3VucmVhY2hgIGlzIGdvaW5nIHRvIGJlIHZpdGFsIHRvIHVuZGVyc3RhbmRpbmcgaXRzIGRlcGVuZGVuY2llcy4gQXJlIHRoZXJlIHNwZWNpZmljIHJvdXRpbmcgdGFibGVzIGl0IGludGVyYWN0cyB3aXRoPyBBbnkgaW50ZXJhY3Rpb25zIHdpdGggY29ubmVjdGlvbiB0cmFja2luZyAoY29ubnRyYWNrKT8gVGhpcyB3aWxsIHJlcXVpcmUgYSBkZWVwIGRpdmUgdG8gaWRlbnRpZnkgYWxsIHRoZSBwb3NzaWJpbGl0aWVzLCBvZiBjb3Vyc2UuCgpCZXlvbmQgdGhlIGltbWVkaWF0ZSBjb25maWd1cmF0aW9uLCBJIG5lZWQgdG8gdGhpbmsgYWJvdXQgcG90ZW50aWFsIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIGtlcm5lbCBtb2R1bGVzLiBBcmUgdGhlcmUgYW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBuZXR3b3JrIGludGVyZmFjZXMgb3Igc3Vic3lzdGVtcz8gQXJlIHRoZXJlIGFueSBrbm93biBjb21wYXRpYmlsaXR5IGlzc3VlcyB3aXRoIG90aGVyIGZlYXR1cmVzLCBsaWtlIE5BVCBvciBWUE5zPyBUaGUgYnJvYWRlciBjb250ZXh0IG1hdHRlcnMuIEkgbmVlZCB0byB0cmVhdCB0aGlzIGFzIG1vcmUgdGhhbiBqdXN0IGEgc3BlY2lmaWMgbW9kdWxlIGNvbmZpZ3VyYXRpb247IGl0JiMzOTtzIGEgcGFydCBvZiB0aGUgb3ZlcmFsbCBuZXR3b3JrIGFyY2hpdGVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl9zZW5kX3VucmVhY2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmM9MzE9cmVqZWN0X3RnKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jLTM3LVx0Y2FzZSBJUFRfSUNNUF9ORVRfVU5SRUFDSEFCTEU6XG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jOjM4Olx0XHRuZl9zZW5kX3VucmVhY2goc2tiLCBJQ01QX05FVF9VTlJFQUNILCBob29rKTtcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtMzktXHRcdGJyZWFrO1xubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYy00MC1cdGNhc2UgSVBUX0lDTVBfSE9TVF9VTlJFQUNIQUJMRTpcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmM6NDE6XHRcdG5mX3NlbmRfdW5yZWFjaChza2IsIElDTVBfSE9TVF9VTlJFQUNILCBob29rKTtcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtNDItXHRcdGJyZWFrO1xubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYy00My1cdGNhc2UgSVBUX0lDTVBfUFJPVF9VTlJFQUNIQUJMRTpcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmM6NDQ6XHRcdG5mX3NlbmRfdW5yZWFjaChza2IsIElDTVBfUFJPVF9VTlJFQUNILCBob29rKTtcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtNDUtXHRcdGJyZWFrO1xubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYy00Ni1cdGNhc2UgSVBUX0lDTVBfUE9SVF9VTlJFQUNIQUJMRTpcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmM6NDc6XHRcdG5mX3NlbmRfdW5yZWFjaChza2IsIElDTVBfUE9SVF9VTlJFQUNILCBob29rKTtcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtNDgtXHRcdGJyZWFrO1xubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYy00OS1cdGNhc2UgSVBUX0lDTVBfTkVUX1BST0hJQklURUQ6XG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jOjUwOlx0XHRuZl9zZW5kX3VucmVhY2goc2tiLCBJQ01QX05FVF9BTk8sIGhvb2spO1xubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYy01MS1cdFx0YnJlYWs7XG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jLTUyLVx0Y2FzZSBJUFRfSUNNUF9IT1NUX1BST0hJQklURUQ6XG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jOjUzOlx0XHRuZl9zZW5kX3VucmVhY2goc2tiLCBJQ01QX0hPU1RfQU5PLCBob29rKTtcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtNTQtXHRcdGJyZWFrO1xubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYy01NS1cdGNhc2UgSVBUX0lDTVBfQURNSU5fUFJPSElCSVRFRDpcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmM6NTY6XHRcdG5mX3NlbmRfdW5yZWFjaChza2IsIElDTVBfUEtUX0ZJTFRFUkVELCBob29rKTtcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtNTctXHRcdGJyZWFrO1xuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jPTM0ND1FWFBPUlRfU1lNQk9MX0dQTChuZl9zZW5kX3Jlc2V0KTtcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jLTM0NS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jOjM0Njp2b2lkIG5mX3NlbmRfdW5yZWFjaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luLCBpbnQgY29kZSwgaW50IGhvb2spXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYy0zNDcte1xuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jLTM3Mi19XG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYzozNzM6RVhQT1JUX1NZTUJPTF9HUEwobmZfc2VuZF91bnJlYWNoKTtcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jLTM3NC1cbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pcHY0LmM9MTk9c3RhdGljIHZvaWQgbmZ0X3JlamVjdF9pcHY0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZnRfcmVqZWN0X2lwdjQuYy0yNi1cdGNhc2UgTkZUX1JFSkVDVF9JQ01QX1VOUkVBQ0g6XG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pcHY0LmM6Mjc6XHRcdG5mX3NlbmRfdW5yZWFjaChwa3QtXHUwMDNlc2tiLCBwcml2LVx1MDAzZWljbXBfY29kZSwgbmZ0X2hvb2socGt0KSk7XG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pcHY0LmMtMjgtXHRcdGJyZWFrO1xuLS1cbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jPTM1PXJlamVjdF90ZzYoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuLS1cbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jLTQxLVx0Y2FzZSBJUDZUX0lDTVA2X05PX1JPVVRFOlxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmM6NDI6XHRcdG5mX3NlbmRfdW5yZWFjaDYobmV0LCBza2IsIElDTVBWNl9OT1JPVVRFLCB4dF9ob29rbnVtKHBhcikpO1xubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNDMtXHRcdGJyZWFrO1xubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNDQtXHRjYXNlIElQNlRfSUNNUDZfQURNX1BST0hJQklURUQ6XG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYzo0NTpcdFx0bmZfc2VuZF91bnJlYWNoNihuZXQsIHNrYiwgSUNNUFY2X0FETV9QUk9ISUJJVEVELFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNDYtXHRcdFx0XHQgeHRfaG9va251bShwYXIpKTtcbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYy00OC1cdGNhc2UgSVA2VF9JQ01QNl9OT1RfTkVJR0hCT1VSOlxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmM6NDk6XHRcdG5mX3NlbmRfdW5yZWFjaDYobmV0LCBza2IsIElDTVBWNl9OT1RfTkVJR0hCT1VSLFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNTAtXHRcdFx0XHQgeHRfaG9va251bShwYXIpKTtcbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYy01Mi1cdGNhc2UgSVA2VF9JQ01QNl9BRERSX1VOUkVBQ0g6XG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYzo1MzpcdFx0bmZfc2VuZF91bnJlYWNoNihuZXQsIHNrYiwgSUNNUFY2X0FERFJfVU5SRUFDSCxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jLTU0LVx0XHRcdFx0IHh0X2hvb2tudW0ocGFyKSk7XG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNTYtXHRjYXNlIElQNlRfSUNNUDZfUE9SVF9VTlJFQUNIOlxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmM6NTc6XHRcdG5mX3NlbmRfdW5yZWFjaDYobmV0LCBza2IsIElDTVBWNl9QT1JUX1VOUkVBQ0gsXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYy01OC1cdFx0XHRcdCB4dF9ob29rbnVtKHBhcikpO1xuLS1cbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jLTY2LVx0Y2FzZSBJUDZUX0lDTVA2X1BPTElDWV9GQUlMOlxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmM6Njc6XHRcdG5mX3NlbmRfdW5yZWFjaDYobmV0LCBza2IsIElDTVBWNl9QT0xJQ1lfRkFJTCwgeHRfaG9va251bShwYXIpKTtcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jLTY4LVx0XHRicmVhaztcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jLTY5LVx0Y2FzZSBJUDZUX0lDTVA2X1JFSkVDVF9ST1VURTpcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jOjcwOlx0XHRuZl9zZW5kX3VucmVhY2g2KG5ldCwgc2tiLCBJQ01QVjZfUkVKRUNUX1JPVVRFLFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNzEtXHRcdFx0XHQgeHRfaG9va251bShwYXIpKTtcbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjYuYz00MTI9c3RhdGljIGJvb2wgcmVqZWN0Nl9jc3VtX29rKHN0cnVjdCBza19idWZmICpza2IsIGludCBob29rKVxuLS1cbm5ldC9pcHY2L25ldGZpbHRlci9uZl9yZWplY3RfaXB2Ni5jLTQzMy1cbm5ldC9pcHY2L25ldGZpbHRlci9uZl9yZWplY3RfaXB2Ni5jOjQzNDp2b2lkIG5mX3NlbmRfdW5yZWFjaDYoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luLFxubmV0L2lwdjYvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY2LmMtNDM1LVx0XHQgICAgICB1bnNpZ25lZCBjaGFyIGNvZGUsIHVuc2lnbmVkIGludCBob29rbnVtKVxuLS1cbm5ldC9pcHY2L25ldGZpbHRlci9uZl9yZWplY3RfaXB2Ni5jLTQ0Ny19XG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjYuYzo0NDg6RVhQT1JUX1NZTUJPTF9HUEwobmZfc2VuZF91bnJlYWNoNik7XG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjYuYy00NDktXG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyL25mdF9yZWplY3RfaXB2Ni5jPTE5PXN0YXRpYyB2b2lkIG5mdF9yZWplY3RfaXB2Nl9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pcHY2LmMtMjYtXHRjYXNlIE5GVF9SRUpFQ1RfSUNNUF9VTlJFQUNIOlxubmV0L2lwdjYvbmV0ZmlsdGVyL25mdF9yZWplY3RfaXB2Ni5jOjI3Olx0XHRuZl9zZW5kX3VucmVhY2g2KG5mdF9uZXQocGt0KSwgcGt0LVx1MDAzZXNrYiwgcHJpdi1cdTAwM2VpY21wX2NvZGUsXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pcHY2LmMtMjgtXHRcdFx0XHQgbmZ0X2hvb2socGt0KSk7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYz0xNz1zdGF0aWMgdm9pZCBuZnRfcmVqZWN0X2luZXRfZXZhbChjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsXG4tLVxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy0yNi1cdFx0Y2FzZSBORlRfUkVKRUNUX0lDTVBfVU5SRUFDSDpcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmM6Mjc6XHRcdFx0bmZfc2VuZF91bnJlYWNoKHBrdC1cdTAwM2Vza2IsIHByaXYtXHUwMDNlaWNtcF9jb2RlLFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy0yOC1cdFx0XHRcdFx0bmZ0X2hvb2socGt0KSk7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy0zNC1cdFx0Y2FzZSBORlRfUkVKRUNUX0lDTVBYX1VOUkVBQ0g6XG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jOjM1Olx0XHRcdG5mX3NlbmRfdW5yZWFjaChwa3QtXHUwMDNlc2tiLFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy0zNi1cdFx0XHRcdFx0bmZ0X3JlamVjdF9pY21wX2NvZGUocHJpdi1cdTAwM2VpY21wX2NvZGUpLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmMtNDMtXHRcdGNhc2UgTkZUX1JFSkVDVF9JQ01QX1VOUkVBQ0g6XG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jOjQ0Olx0XHRcdG5mX3NlbmRfdW5yZWFjaDYobmZ0X25ldChwa3QpLCBwa3QtXHUwMDNlc2tiLFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy00NS1cdFx0XHRcdFx0IHByaXYtXHUwMDNlaWNtcF9jb2RlLCBuZnRfaG9vayhwa3QpKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jLTUxLVx0XHRjYXNlIE5GVF9SRUpFQ1RfSUNNUFhfVU5SRUFDSDpcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmM6NTI6XHRcdFx0bmZfc2VuZF91bnJlYWNoNihuZnRfbmV0KHBrdCksIHBrdC1cdTAwM2Vza2IsXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jLTUzLVx0XHRcdFx0XHQgbmZ0X3JlamVjdF9pY21wdjZfY29kZShwcml2LVx1MDAzZWljbXBfY29kZSksXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTk0MQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3Mgb24gbXkgbWluZCByZWdhcmRpbmcgdGhpcyBgbmZfc2VuZF91bnJlYWNoYCBmdW5jdGlvbi4KCioqQW5hbHl6aW5nIGBuZl9zZW5kX3VucmVhY2hgIFVzYWdlKioKClJpZ2h0LCBzbyB0aGlzIGBuZl9zZW5kX3VucmVhY2hgIGZ1bmN0aW9uIGhhcyBiZWVuIGV4cG9ydGVkIGFuZCwgaW1wb3J0YW50bHksIGl0JiMzOTtzIGJlaW5nICp1c2VkKiBpbiBgaXB0X1JFSkVDVC5jYCwgYG5mdF9yZWplY3RfaXB2NC5jYCwgYW5kIGBuZnRfcmVqZWN0X2luZXQuY2AuIFRoYXQmIzM5O3MgdGhlIGtleS4gS25vd2luZyB3aGVyZSBpdCYjMzk7cyAqdXNlZCogZ2l2ZXMgYSBzaWduaWZpY2FudCBpbnNpZ2h0LiBUaGlzIG1lYW5zIGl0JiMzOTtzIHByZXR0eSBjb3JlIHRvIHNlbmRpbmcgJiMzNDt1bnJlYWNoYWJsZSYjMzQ7IElDTVAvVENQIHJlc3BvbnNlcyBpbiB0aG9zZSBuZXR3b3JrIGZpbHRlcmluZyBjb250ZXh0cy4gTm93LCBzaW5jZSBJJiMzOTttIHRyeWluZyB0byB3cmFwIG15IGhlYWQgYXJvdW5kIHRoaXMsIHRoZSBsb2dpY2FsIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIGBuZl9yZWplY3RfaXB2NC5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBmdW5jdGlvbiYjMzk7cyBwYXJhbWV0ZXJzIGFyZSBzZXQsIG9yIG1heWJlIGhvdyBpdCBpbnRlZ3JhdGVzIHdpdGggdGhlIHVuZGVybHlpbmcgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mX3JlamVjdF9pcHY0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L25ldGZpbHRlci9NYWtlZmlsZT0xMD1vYmotJChDT05GSUdfTkZfVFBST1hZX0lQVjQpICYjNDM7PSBuZl90cHJveHlfaXB2NC5vXG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlLTEyLSMgcmVqZWN0XG5uZXQvaXB2NC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTM6b2JqLSQoQ09ORklHX05GX1JFSkVDVF9JUFY0KSAmIzQzOz0gbmZfcmVqZWN0X2lwdjQub1xubmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlLTE0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYzNDkKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGEgTmV0d29yayBGaWx0ZXJpbmcgQ29uZmlndXJhdGlvbiBSZXF1aXJlbWVudCoqCgpSaWdodCwgc28gSSBzZWUgdGhpcyBgQ09ORklHX05GX1JFSkVDVF9JUFY0YCBmbGFnIGlzIHNob3dpbmcgdXAuIE9idmlvdXNseSwgdGhhdCBzdWdnZXN0cyB3ZSBuZWVkIHRoZSBJUHY0IG5ldGZpbHRlciByZWplY3QgZnVuY3Rpb25hbGl0eSBlbmFibGVkLiBCZWZvcmUgSSBnbyB0b28gZGVlcCwgSSBzaG91bGQgY29uZmlybSBleGFjdGx5IHdoZXJlIHRoaXMgb3B0aW9uIGlzIGRlZmluZWQgYW5kIGhvdyBpdCByZWxhdGVzIHRvIHRoZSByZXN0IG9mIHRoZSBuZXRmaWx0ZXIgY29uZmlndXJhdGlvbi4gTGV0JiMzOTtzIGRpdmUgc3RyYWlnaHQgaW50byBgbmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWdgLiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIGNoZWNrIGZvciBgTkZfUkVKRUNUX0lQVjRgIGFuZCBpdHMgZGVwZW5kZW5jaWVzLiBUaGlzIEtjb25maWcgZmlsZSB3aWxsIGdpdmUgbWUgdGhlIGNsZWFyZXN0IHBpY3R1cmUgb2Ygd2hhdCB0aGlzIGZsYWcgYWN0dWFsbHkgY29udHJvbHMgYW5kIHdoYXQgb3RoZXIgb3B0aW9ucyBtaWdodCBuZWVkIHRvIGJlIGNvbnNpZGVyZWQgb3IgYWRqdXN0ZWQgYWxvbmdzaWRlIGl0LiBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgaW1wbGljYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZfUkVKRUNUX0lQVjQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZz04Nz1jb25maWcgTkZfTE9HX0lQVjRcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy05NC1cbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnOjk1OmNvbmZpZyBORl9SRUpFQ1RfSVBWNFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctOTYtXHR0cmlzdGF0ZSBcJiMzNDtJUHY0IHBhY2tldCByZWplY3Rpb25cJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjcwMAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBEZWNpcGhlcmluZyBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgSSYjMzk7bSBkaXZpbmcgaW4uIFRoZSBwcmltYXJ5IHF1ZXN0aW9uIGhlcmUgaXM6IHdoYXQgZmFjdG9ycyBhcmUgZHJpdmluZyB0aGlzIHNlbGVjdGlvbj8gV2hhdCBtZWNoYW5pc21zLCBwcm9jZXNzZXMsIG9yIGNvbmRpdGlvbnMgYXJlIGF0IHBsYXk/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMuIElzIHRoaXMgYSBtYXR0ZXIgb2YgaW5pdGlhbCBjb25kaXRpb25zLCBvciBpcyB0aGVyZSBzb21lIGZlZWRiYWNrIGxvb3AgYXQgcGxheT8gUGVyaGFwcyB0aGVyZSYjMzk7cyBhIHNwZWNpZmljIHRyaWdnZXIgb3IgYSBjYXNjYWRlIG9mIGV2ZW50cyBsZWFkaW5nIHRvIHRoaXMgJiMzNDtzZWxlY3Rpb24mIzM0OyB0aGF0IEkgbmVlZCB0byBpZGVudGlmeS4gTXkgYXBwcm9hY2ggaGVyZSBoYXMgdG8gc3RhcnQgd2l0aCB0cmFjaW5nIHRoZSBjYXVzZS1lZmZlY3QgcmVsYXRpb25zaGlwcy4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBsb29raW5nIGZvciBhbnkgaW1tZWRpYXRlIGNvcnJlbGF0aW9ucyBhbmQgZ28gZnJvbSB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IE5GX1JFSkVDVF9JUFY0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZz00Mj1jb25maWcgTkZUX1JFSkVDVF9JUFY0XG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZzo0MzpcdHNlbGVjdCBORl9SRUpFQ1RfSVBWNFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctNDQtXHRkZWZhdWx0IE5GVF9SRUpFQ1Rcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZz0xOTU9Y29uZmlnIElQX05GX1RBUkdFVF9SRUpFQ1Rcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy0xOTctXHRkZXBlbmRzIG9uIElQX05GX0ZJTFRFUiB8fCBORlRfQ09NUEFUXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZzoxOTg6XHRzZWxlY3QgTkZfUkVKRUNUX0lQVjRcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTE5OS1cdGRlZmF1bHQgbSBpZiBORVRGSUxURVJfQURWQU5DRUQ9blxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MDgyCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyBSZWplY3QgVGFyZ2V0IENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIHNvIEkgc2VlIHRoYXQgYENPTkZJR19JUF9ORl9UQVJHRVRfUkVKRUNUYCBhbmQgYENPTkZJR19ORlRfUkVKRUNUX0lQVjRgIGFyZSB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIHRoYXQgZW5hYmxlIHRoaXMgJiMzNDtyZWplY3QmIzM0OyBmdW5jdGlvbmFsaXR5LiBNeSBuZXh0IHN0ZXAsIGFzIGFsd2F5cywgaXMgdG8gZGlnIGludG8gdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZXMuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBgbmV0L25ldGZpbHRlci9LY29uZmlnYCBmaWxlLiBJJiMzOTttIGxvb2tpbmcgZm9yIGVpdGhlciBgTkZUX1JFSkVDVF9JTkVUYCBvciBzb21ldGhpbmcgc2ltaWxhciwgYXMgdGhhdCYjMzk7cyBwcm9iYWJseSB0aGUgdG9wLWxldmVsIG9wdGlvbiByZWxhdGVkIHRvIHRoZSBtb3JlIG1vZGVybiBuZnRhYmxlcy1iYXNlZCByZWplY3QgbW9kdWxlLiBJdCYjMzk7cyB0aW1lIHRvIGNvbmZpcm0gaG93IHRoZXNlIGNvbmZpZ3VyYXRpb25zIGFsbCBmaXQgdG9nZXRoZXIsIGFuZCBob3cgdGhlIGtlcm5lbCBoYW5kbGVzIHRoZSByZWplY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IE5GX1JFSkVDVF9JUFY0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzM0OQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipOYXZpZ2F0aW5nIHRoZSBLY29uZmlnIExhYnlyaW50aCoqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIHdhcyBnb2luZyBkb3duIGEgcGF0aCwgYnV0IEkgbmVlZCB0byBwYXVzZSBhbmQgZG91YmxlLWNoZWNrIHNvbWV0aGluZy4gVGhlIHBvdGVudGlhbCBwcm9ibGVtIGxpa2VseSByZXN0cyBzb21ld2hlcmUgZWxzZS4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY29uc2lkZXIgYE5GVF9SRUpFQ1RfSU5FVGAgaW4gYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AuIEl0JiMzOTtzIGEga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGluIHRoZSBuZXRmaWx0ZXIgc3Vic3lzdGVtLCBhbmQgaXQgaGFzIHRoZSBwb3RlbnRpYWwgdG8gaW5mbHVlbmNlIHRoZSBiZWhhdmlvciBJJiMzOTttIHNlZWluZy4gQ291bGQgaXQgYmUgc3VidGx5IGVuYWJsaW5nIG9yIHNlbGVjdGluZyBzb21ldGhpbmcgdGhhdCYjMzk7cyBjYXVzaW5nIHRoZSBpc3N1ZT8gSSBuZWVkIHRvIGdvIGJhY2sgYW5kIHRyYWNlIHRoZSBkZXBlbmRlbmNpZXMsIGVuc3VyZSBpdCYjMzk7cyBub3QgcHVsbGluZyBpbiBzb21ldGhpbmcgdW5leHBlY3RlZCB0aGF0IGV4cGxhaW5zIHRoZSBvdXRjb21lLiBJIG5lZWQgdG8gYmUgc3VyZSB0aGF0IEkgZGlkbiYjMzk7dCBnbG9zcyBvdmVyIHRoaXMgaW4gbXkgaW5pdGlhbCBzY2FuLiBCZXR0ZXIgdG8gYmUgY2VydGFpbiwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCB0aGUgaW50cmljYWNpZXMgb2YgbmV0ZmlsdGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZUX1JFSkVDVF9JTkVUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz01Nzg9Y29uZmlnIE5GVF9SRUpFQ1Rcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNTg1LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjU4Njpjb25maWcgTkZUX1JFSkVDVF9JTkVUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNTg3LVx0ZGVwZW5kcyBvbiBORl9UQUJMRVNfSU5FVFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3Njg1CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5JiMzOTtyZSBteSBvd246CgoqKkFuYWx5emluZyB0aGUgU2VsZWN0aW9uIENyaXRlcmlhIGZvciBgTkZUX1JFSkVDVF9JTkVUYCoqCgpBbHJpZ2h0LCBteSBicmFpbiYjMzk7cyBraWNraW5nIGluIOKAkyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGV4YWN0bHkgdGhlIHNlbGVjdGlvbiBwcm9jZXNzIGlzIGZvciBgTkZUX1JFSkVDVF9JTkVUYC4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBkaWdnaW5nIGludG8gdGhhdCBkZWZpbml0aW9uLCBmaWd1cmluZyBvdXQgd2hhdCBjb25kaXRpb25zIG9yIGNyaXRlcmlhIGFyZSBiZWluZyB1c2VkLiBXaGF0JiMzOTtzIGl0IGZpbHRlcmluZyBvbj8gSXMgaXQgcHJvdG9jb2wtc3BlY2lmaWM/IERvZXMgaXQgbG9vayBhdCBzb3VyY2UvZGVzdGluYXRpb24gSVAgYWRkcmVzc2VzLCBwb3J0cywgb3RoZXIgbWV0YWRhdGE/IEkgbmVlZCBhIGNsZWFyIG1lbnRhbCBtb2RlbCBvZiBob3cgdGhpcyByZWplY3Rpb24gZnVuY3Rpb24gbWFrZXMgaXRzIGRlY2lzaW9ucy4gVW5kZXJzdGFuZGluZyB0aGUgc2VsZWN0aW9uIGxvZ2ljIGlzIGtleSB0byBlZmZlY3RpdmVseSB0cm91Ymxlc2hvb3Rpbmcgb3IgY29uZmlndXJpbmcgbmV0d29yayBwb2xpY2llcyByZWxhdGVkIHRvIHRoaXMgcGFydGljdWxhciBmZWF0dXJlLiBUaW1lIHRvIGdldCBpbnRvIHRoZSBkZXRhaWxzLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05GVF9SRUpFQ1RfSU5FVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9NTc4PWNvbmZpZyBORlRfUkVKRUNUXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTU4NS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo1ODY6Y29uZmlnIE5GVF9SRUpFQ1RfSU5FVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTU4Ny1cdGRlcGVuZHMgb24gTkZfVEFCTEVTX0lORVRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzk4MgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHByb2Nlc3NpbmcgdGhlIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgYE5GVF9SRUpFQ1RfSU5FVGA6CgoqKkRpdmluZyBpbnRvIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIGFuZCBgTkZUX1JFSkVDVF9JTkVUYCoqCgpPa2F5LCB0aW1lIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIG5ldGZpbHRlciBpbmZyYXN0cnVjdHVyZSwgc3BlY2lmaWNhbGx5IHRoZSByZWplY3Rpb24gbWVjaGFuaXNtIHdpdGhpbiB0aGUgbmV3IGZpbHRlcmluZyBmcmFtZXdvcmssIG5mdGFibGVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHJlamVjdCBmdW5jdGlvbmFsaXR5IGlzIGV4cG9zZWQgdG8gdGhlIHVzZXIsIGFuZCB3aGF0IGRlcGVuZGVuY2llcyBpdCBoYXMuIExldCYjMzk7cyBzZWUuLi4gSSYjMzk7bGwgc3RhcnQgd2l0aCB0aGUgZmlsZSBwYXRoIHlvdSYjMzk7dmUgZ2l2ZW4gbWU6IGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgLiBSaWdodCwgdGhlIEtjb25maWcgZmlsZSBzaG91bGQgZGVmaW5lIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHRoaXMgaXMgZ29vZC4KCkkmIzM5O20gemVyb2luZyBpbiBvbiBgTkZUX1JFSkVDVF9JTkVUYCwgYW5kIHRoYXQgcHJvYmFibHkgbWVhbnMgdGhpcyBpcyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gZm9yIHRoZSByZWplY3QgdGFyZ2V0IHRoYXQmIzM5O3MgZGVzaWduZWQgdG8gd29yayB3aXRoIGFsbCBpbnRlcm5ldCBwcm90b2NvbCBmYW1pbGllcywgSVB2NCBhbmQgSVB2Ni4gVGhpcyBpcyBrZXksIEkgbmVlZCB0byBjaGVjayB0aGUgZGVwZW5kZW5jaWVzLiBBcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIG9wdGlvbnM/IERvZXMgdGhpcyB0aWUgaW50byB0aGUgY29yZSBuZnRhYmxlcyBjb21wb25lbnRzIGxpa2UgYE5FVEZJTFRFUl9YVF9UQVJHRVRfTkZRVUVVRWAgb3IgaXMgaXQgaW5kZXBlbmRlbnQ/IEkgZXhwZWN0IGl0JiMzOTtsbCBkZXBlbmQgb24gdGhlIGJhc2ljIG5mdGFibGVzIGZlYXR1cmVzIGJlaW5nIGVuYWJsZWQuIEkgbmVlZCB0byB0cmFjZSB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgb3B0aW9uLiBJcyBpdCBlbmFibGVkIGJ5IGRlZmF1bHQsIG9yIGlzIGl0IGEgbW9kdWxhciBmZWF0dXJlPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIG9yIGRpc2FibGluZyBpdCBhdCBjb21waWxlIHRpbWU/IERvZXMgaXQgcmVxdWlyZSBhbnkgb3RoZXIga2VybmVsIHN1YnN5c3RlbXMgdG8gYmUgYnVpbHQ/IFRoaXMgd291bGQgYWZmZWN0IHN5c3RlbSBwZXJmb3JtYW5jZSBzbyB0aGlzIGlzIGltcG9ydGFudC4KCkkgbmVlZCB0byBzZWUgaWYgaXQgbWFrZXMgYSBkaWZmZXJlbmNlIHRvIGFueSBrZXJuZWwgYmVoYXZpb3Igb3IgaWYgaXQgc2ltcGx5IHRvZ2dsZXMgY29tcGlsYXRpb24uIElzIHRoaXMgdGllZCB0byBhbnkgc3BlY2lmaWMgZGV2aWNlIGNvbmZpZ3VyYXRpb24/CgpTbyBmYXIgc28gZ29vZC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgcGljdHVyZSBvZiBob3cgdGhlIHJlamVjdCB0YXJnZXQgaW4gbmZ0YWJsZXMgaXMgY29uZmlndXJlZCBhbmQgaXRzIHJvbGUgaW4gdGhlIGtlcm5lbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1ODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDU4MDpcdFx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIG5mX3RhYmxlcyByZWplY3Qgc3VwcG9ydFwmIzM0O1xuIDU4MTpcdFx0aGVscFxuIDU4MjpcdFx0ICBUaGlzIG9wdGlvbiBhZGRzIHRoZSBcJiMzNDtyZWplY3RcJiMzNDsgZXhwcmVzc2lvbiB0aGF0IHlvdSBjYW4gdXNlIHRvXG4gNTgzOlx0XHQgIGV4cGxpY2l0bHkgZGVueSBhbmQgbm90aWZ5IHZpYSBUQ1AgcmVzZXQvSUNNUCBpbmZvcm1hdGlvbmFsIGVycm9yc1xuIDU4NDpcdFx0ICB1bmFsbG93ZWQgdHJhZmZpYy5cbiA1ODU6XHRcbiA1ODY6XHRjb25maWcgTkZUX1JFSkVDVF9JTkVUXG4gNTg3Olx0XHRkZXBlbmRzIG9uIE5GX1RBQkxFU19JTkVUXG4gNTg4Olx0XHRkZWZhdWx0IE5GVF9SRUpFQ1RcbiA1ODk6XHRcdHRyaXN0YXRlXG4gNTkwOlx0XG4gNTkxOlx0Y29uZmlnIE5GVF9DT01QQVRcbiA1OTI6XHRcdGRlcGVuZHMgb24gTkVURklMVEVSX1hUQUJMRVNcbiA1OTM6XHRcdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciB4X3RhYmxlcyBvdmVyIG5mX3RhYmxlcyBtb2R1bGVcJiMzNDtcbiA1OTQ6XHRcdGhlbHBcbiA1OTU6XHRcdCAgVGhpcyBpcyByZXF1aXJlZCBpZiB5b3UgaW50ZW5kIHRvIHVzZSBhbnkgb2YgZXhpc3RpbmdcbiA1OTY6XHRcdCAgeF90YWJsZXMgbWF0Y2gvdGFyZ2V0IGV4dGVuc2lvbnMgb3ZlciB0aGUgbmZfdGFibGVzXG4gNTk3Olx0XHQgIGZyYW1ld29yay5cbiA1OTg6XHRcbiA1OTk6XHRjb25maWcgTkZUX0hBU0hcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODcwNAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgTkZUYWJsZXMgYW5kIElQIFJlamVjdCBCZWhhdmlvcioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBORlRfUkVKRUNUX0lORVRgIHRoaW5nLCBhbmQgc29tZXRoaW5nIGlzbiYjMzk7dCBxdWl0ZSBjbGlja2luZy4gSSB3YXMgdW5kZXIgdGhlIGltcHJlc3Npb24gdGhhdCBpdCB3b3VsZCBhdXRvbWF0aWNhbGx5IGhhbmRsZSBgTkZfUkVKRUNUX0lQVjRgLCBidXQgaXQgc2VlbXMgdGhhdCYjMzk7cyBub3QgdGhlIGNhc2UuIExldCBtZSBkb3VibGUtY2hlY2sgbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhpcyBhbGwgaW50ZWdyYXRlcy4gUmlnaHQsIHNvIGBORlRfUkVKRUNUX0lORVRgIGxldmVyYWdlcyBgbmZfc2VuZF91bnJlYWNoYCwgd2hpY2gsIGFzIEkgcmVjYWxsLCBpcyBpbXBsZW1lbnRlZCB3aXRoaW4gYG5mX3JlamVjdF9pcHY0LmNgLiBUaGF0IG1ha2VzIG1vcmUgc2Vuc2Ugbm93LiBUbyBiZSBhYnNvbHV0ZWx5IHN1cmUgSSYjMzk7dmUgZ290IHRoZSBidWlsZCBjb25maWd1cmF0aW9uIHJpZ2h0LCBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgdGhlIE5ldGZpbHRlciBNYWtlZmlsZS4gVGltZSB0byB2ZXJpZnkgd2hhdCBnZXRzIGJ1aWx0IGFuZCBob3cgdGhlc2UgbW9kdWxlcyBhcmUgbGlua2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZnRfcmVqZWN0X2luZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9MTE4PW9iai0kKENPTkZJR19ORlRfUkVKRUNUKSBcdCYjNDM7PSBuZnRfcmVqZWN0Lm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTE5Om9iai0kKENPTkZJR19ORlRfUkVKRUNUX0lORVQpXHQmIzQzOz0gbmZ0X3JlamVjdF9pbmV0Lm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTIwLW9iai0kKENPTkZJR19ORlRfUkVKRUNUX05FVERFVilcdCYjNDM7PSBuZnRfcmVqZWN0X25ldGRldi5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkwNzgKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4KCioqSW52ZXN0aWdhdGluZyBhIFBvdGVudGlhbCBMaW5rYWdlIElzc3VlIGluIHRoZSBuZnRfcmVqZWN0X2luZXQgTW9kdWxlKioKCkhtbSwgc28gYG5mdF9yZWplY3RfaW5ldC5jYCByZWxpZXMgb24gYG5mX3NlbmRfdW5yZWFjaGAuIFRoYXQmIzM5O3MgYSBrZXkgZnVuY3Rpb24uIEJ1dCBpZiBgTkZfUkVKRUNUX0lQVjRgIGlzbiYjMzk7dCBlbmFibGVkLCBob3cgZG9lcyB0aGF0IGxpbmthZ2UgZXZlbiB3b3JrPyBXaGVyZSBkb2VzIHRoYXQgY29ubmVjdGlvbiBjb21lIGZyb20/IFRoaXMgc2VlbXMgbGlrZSBhIHBvdGVudGlhbCBwb2ludCBvZiBmYWlsdXJlLgoKQWxyaWdodCwgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGNoZWNrIHRoZSBpbmNsdWRlcyBmb3IgYG5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmNgLiBHb3R0YSBzZWUgd2hhdCBvdGhlciBtb2R1bGVzLCBhbmQgdGhlcmVmb3JlIHdoYXQgcG90ZW50aWFsIGRlcGVuZGVuY2llcywgYXJlIGluIHBsYXkgaGVyZSB0byB1bmRlcnN0YW5kIHRoaXMgYnVpbGQgcmVsYXRpb25zaGlwLiBJIG5lZWQgdG8gdHJhY2UgdGhlIHJlZmVyZW5jZXMuIFRoaXMgaXMgd2hlcmUgSSYjMzk7bGwgZmluZCBteSBhbnN3ZXJzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl9zZW5kX3VucmVhY2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmM9MTc9c3RhdGljIHZvaWQgbmZ0X3JlamVjdF9pbmV0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmMtMjYtXHRcdGNhc2UgTkZUX1JFSkVDVF9JQ01QX1VOUkVBQ0g6XG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jOjI3Olx0XHRcdG5mX3NlbmRfdW5yZWFjaChwa3QtXHUwMDNlc2tiLCBwcml2LVx1MDAzZWljbXBfY29kZSxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmMtMjgtXHRcdFx0XHRcdG5mdF9ob29rKHBrdCkpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmMtMzQtXHRcdGNhc2UgTkZUX1JFSkVDVF9JQ01QWF9VTlJFQUNIOlxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYzozNTpcdFx0XHRuZl9zZW5kX3VucmVhY2gocGt0LVx1MDAzZXNrYixcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmMtMzYtXHRcdFx0XHRcdG5mdF9yZWplY3RfaWNtcF9jb2RlKHByaXYtXHUwMDNlaWNtcF9jb2RlKSxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jLTQzLVx0XHRjYXNlIE5GVF9SRUpFQ1RfSUNNUF9VTlJFQUNIOlxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYzo0NDpcdFx0XHRuZl9zZW5kX3VucmVhY2g2KG5mdF9uZXQocGt0KSwgcGt0LVx1MDAzZXNrYixcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmMtNDUtXHRcdFx0XHRcdCBwcml2LVx1MDAzZWljbXBfY29kZSwgbmZ0X2hvb2socGt0KSk7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy01MS1cdFx0Y2FzZSBORlRfUkVKRUNUX0lDTVBYX1VOUkVBQ0g6XG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jOjUyOlx0XHRcdG5mX3NlbmRfdW5yZWFjaDYobmZ0X25ldChwa3QpLCBwa3QtXHUwMDNlc2tiLFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy01My1cdFx0XHRcdFx0IG5mdF9yZWplY3RfaWNtcHY2X2NvZGUocHJpdi1cdTAwM2VpY21wX2NvZGUpLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5Nzc5CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6CgoqKkRpdmluZyBpbnRvIHRoZSBJUHY0IE5GX1JFSkVDVCBIZWFkZXIqKgoKT2theSwgdGltZSB0byBnZXQgaW50byB0aGUgbml0dHktZ3JpdHR5IG9mIHRoZSBJUHY0IG5ldGZpbHRlciByZWplY3Rpb24gbW9kdWxlLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgZGVmaW5lZCBpbiBgaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL2lwdjQvbmZfcmVqZWN0LmhgLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIHRoZSBjb3JlIGRhdGEgc3RydWN0dXJlcyBhbmQgY29uc3RhbnRzIHJlbGF0ZWQgdG8gaG93IHdlIGhhbmRsZSBhbmQgY29uc3RydWN0IElDTVAgZXJyb3IgbWVzc2FnZXMgZm9yIGRyb3BwZWQgSVB2NCBwYWNrZXRzIHdpdGhpbiB0aGUgbmV0ZmlsdGVyIGZyYW1ld29yay4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2UgdGhlIGRpZmZlcmVudCBJQ01QIGVycm9yIGNvZGUgdHlwZXMgKGUuZy4sIGhvc3QgdW5yZWFjaGFibGUsIG5ldHdvcmsgdW5yZWFjaGFibGUsIGV0Yy4pIHRoYXQgdGhlIG1vZHVsZSBjYW4gZ2VuZXJhdGUsIHRoZSBzdHJ1Y3R1cmUgdGhhdCBob2xkcyB0aGUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIHJlbGF0ZWQgdG8gdGhlIG1vZHVsZSwgYW5kIGFueSBpbnRlcm5hbCBmdW5jdGlvbiBwcm90b3R5cGVzIHRoZSBtb2R1bGUgZXhwb3J0cy4gSG9wZWZ1bGx5LCB0aGUgaGVhZGVyIGZpbGUgaXMgd2VsbC1kb2N1bWVudGVkLCBtYWtpbmcgaXQgZWFzeSB0byBzZWUgaG93IHRoZSByZWplY3Rpb24gbWVjaGFuaXNtIGludGVyYWN0cyB3aXRoIG90aGVyIG5ldGZpbHRlciBjb21wb25lbnRzIGxpa2UgY29ubmVjdGlvbiB0cmFja2luZy4gSSYjMzk7bSBrZWVuIHRvIHVuZGVyc3RhbmQgdGhlIGZsZXhpYmlsaXR5IG9mZmVyZWQgaW4gY3JhZnRpbmcgcmVzcG9uc2VzLCBhbmQgaWYgdGhlcmUgYXJlIGFueSBvcHRpb25zIGZvciBjdXN0b21pemluZyB0aGUgSUNNUCBlcnJvciBtZXNzYWdlcyBiZXlvbmQgdGhlIGRlZmF1bHRzLiBMb29raW5nIGF0IHRoZSBpbmNsdWRlIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgZXZhbHVhdGluZyBjdXJyZW50IGRlc2lnbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfc2VuZF91bnJlYWNoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvbmV0ZmlsdGVyL2lwdjQvbmZfcmVqZWN0LmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvbmV0ZmlsdGVyL2lwdjQvbmZfcmVqZWN0LmgtOS1cbmluY2x1ZGUvbmV0L25ldGZpbHRlci9pcHY0L25mX3JlamVjdC5oOjEwOnZvaWQgbmZfc2VuZF91bnJlYWNoKHN0cnVjdCBza19idWZmICpza2JfaW4sIGludCBjb2RlLCBpbnQgaG9vayk7XG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvaXB2NC9uZl9yZWplY3QuaC0xMS12b2lkIG5mX3NlbmRfcmVzZXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqLCBzdHJ1Y3Qgc2tfYnVmZiAqb2xkc2tiLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDIwMAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBjb3JyZWN0bHkuIEl0IGxvb2tzIGxpa2UgYG5mdF9yZWplY3RfaW5ldGAgcmVsaWVzIG9uIGBORl9UQUJMRVNfSU5FVGAsIGJ1dCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlbSBpcyBjcml0aWNhbC4gRG9lcyBlbmFibGluZyBgTkZfVEFCTEVTX0lORVRgIGF1dG9tYXRpY2FsbHkgYnJpbmcgaW4gYE5GX1JFSkVDVF9JUFY0YD8gT3IgaXMgaXQgdGhlIG90aGVyIHdheSBhcm91bmQg4oCTIGRvZXMgYE5GVF9SRUpFQ1RfSU5FVGAgcHVsbCBpdCBpbiBpbnN0ZWFkPyBJIG5lZWQgdG8gYmUgcHJlY2lzZSBoZXJlLCBzaW5jZSBpbmNvcnJlY3RseSBjb25maWd1cmVkIG1vZHVsZXMgYW5kIGRlcGVuZGVuY2llcyBjYW4gbGVhZCB0byBtYWpvciBuZXR3b3JraW5nIGlzc3Vlcy4gSSYjMzk7ZCBiZXR0ZXIgZ28gYmFjayB0byB0aGUgc291cmNlLiBMZXQgbWUganVzdCBvcGVuIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIGFnYWluIGFuZCBkb3VibGUtY2hlY2sgdGhvc2UgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBvZiB0aGUgc2VsZWN0aW9uIGhpZXJhcmNoeS4gSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCBJIGFtIHVuZGVyc3RhbmRpbmcgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORl9SRUpFQ1RfSVBWNCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNDg5CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUsIG15IG1lbnRhbCBnZWFycyBhcmUgdHVybmluZy4uLgoKKipDaGVja2luZyB0aGUgS2NvbmZpZyBmb3IgUmVqZWN0aW9uIFJ1bGVzKioKClJpZ2h0LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGVzZSByZWplY3Rpb24gbWVjaGFuaXNtcyBhcmUgY29uZmlndXJlZC4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGBuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZ2Ag4oCTIHRoYXQmIzM5O3MgdGhlIHVzdWFsIHBsYWNlIHRvIGZpbmQgdGhlc2Ugc29ydHMgb2Ygb3B0aW9ucyBmb3IgSVB2NCBOZXRmaWx0ZXIsIGlzbiYjMzk7dCBpdD8gSSYjMzk7bSBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3IgYE5GVF9SRUpFQ1RfSU5FVGAgb3IgYE5GX1RBQkxFU19JTkVUYC4gVGhlc2Ugd291bGQgZ2l2ZSBtZSBhIGdvb2QgaW5kaWNhdGlvbiBvZiB3aGV0aGVyIHdlIGFyZSBldmVuIHVzaW5nIG9yIGhhdmUgc3VwcG9ydCBmb3IgdGhlIG5ldyByZWplY3Qgc3lzdGVtIG9yIHRoZSBvbGRlciBuZnRhYmxlcyBmcmFtZXdvcmsgdGhhdCBwcm92aWRlcyB0aGlzLiBLbm93aW5nIHRoaXMgd2lsbCBpbW1lZGlhdGVseSBmb2N1cyBteSBhdHRlbnRpb24gYW5kIGFuYWx5c2lzIGdvaW5nIGZvcndhcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkZUX1JFSkVDVF9JTkVUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDcyNAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipLY29uZmlnIERpdmUgZm9yIE5GVF9SRUpFQ1RfSU5FVCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gYE5GVF9SRUpFQ1RfSU5FVGAuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBrZXJuZWwmIzM5O3MgS2NvbmZpZyBmaWxlcy4gSSYjMzk7bSBoZWFkaW5nIHN0cmFpZ2h0IGZvciBgbmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWdgLiBUaGlzIGlzIHdoZXJlIEkmIzM5O2QgZXhwZWN0IHRvIGZpbmQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGZvciBJUHY2IG5ldGZpbHRlciBmdW5jdGlvbmFsaXR5LCBpbmNsdWRpbmcgYW55dGhpbmcgcmVsYXRlZCB0byByZWplY3QgYWN0aW9ucywgZXNwZWNpYWxseSB0aGUgSU5FVC1zcGVjaWZpYyBvbmVzLiBJJiMzOTttIGFudGljaXBhdGluZyB0aGF0IGBORlRfUkVKRUNUX0lORVRgIHdpbGwgYmUgZGVmaW5lZCB0aGVyZSwgb3IgYXQgdGhlIHZlcnkgbGVhc3QsIHRoYXQgdGhlIGRlcGVuZGVuY2llcyBhbmQgcmVsYXRpb25zaGlwcyB3aXRoIG90aGVyIHJlbGF0ZWQgb3B0aW9ucyB3aWxsIGJlIGNsZWFybHkgc3BlbGxlZCBvdXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBleGFjdCBwdXJwb3NlIGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIG5ldGZpbHRlciBmcmFtZXdvcmsuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiB0aGVyZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05GVF9SRUpFQ1RfSU5FVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA5NzgKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBgTkZUX1JFSkVDVF9JTkVUYCBDb25maWd1cmF0aW9uKioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEl0IHNlZW1zIGEgYml0IG9kZCB0aGF0IGBORlRfUkVKRUNUX0lORVRgIHdvdWxkIGRpcmVjdGx5IHNlbGVjdCBgTkZfUkVKRUNUX0lQVjRgLiBUaGF0IGRvZXNuJiMzOTt0IHNlZW0gcXVpdGUgcmlnaHQgaW4gbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlc2UgdGhpbmdzIHVzdWFsbHkgd29yay4gUGVyaGFwcyBJIG1pc3NlZCBzb21ldGhpbmcgaW4gYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2A/IEkgbmVlZCB0byBkb3VibGUtY2hlY2suIEJlc3Qgd2F5IHRvIGNsZWFyIHRoaXMgdXAgaXMgdG8gc2VhcmNoIHRoZSBlbnRpcmUgc291cmNlIHRyZWUgZm9yIG9jY3VycmVuY2VzIG9mIGBORl9SRUpFQ1RfSVBWNGAgdG8gdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jaWVzIGFuZCByZWxhdGlvbnNoaXBzLiBMZXQmIzM5O3MgZ2V0IHRvIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORl9SRUpFQ1RfSVBWNCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL25ldGZpbHRlci9LY29uZmlnPTE4PWNvbmZpZyBORlRfQlJJREdFX1JFSkVDVFxuLS1cbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL0tjb25maWctMjAtXHRkZXBlbmRzIG9uIE5GVF9SRUpFQ1Rcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL0tjb25maWc6MjE6XHRkZXBlbmRzIG9uIE5GX1JFSkVDVF9JUFY0XG5uZXQvYnJpZGdlL25ldGZpbHRlci9LY29uZmlnLTIyLVx0ZGVwZW5kcyBvbiBORl9SRUpFQ1RfSVBWNlxuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnPTQyPWNvbmZpZyBORlRfUkVKRUNUX0lQVjRcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnOjQzOlx0c2VsZWN0IE5GX1JFSkVDVF9JUFY0XG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy00NC1cdGRlZmF1bHQgTkZUX1JFSkVDVFxuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnPTg3PWNvbmZpZyBORl9MT0dfSVBWNFxuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTk0LVxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc6OTU6Y29uZmlnIE5GX1JFSkVDVF9JUFY0XG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy05Ni1cdHRyaXN0YXRlIFwmIzM0O0lQdjQgcGFja2V0IHJlamVjdGlvblwmIzM0O1xuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnPTE5NT1jb25maWcgSVBfTkZfVEFSR0VUX1JFSkVDVFxuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTE5Ny1cdGRlcGVuZHMgb24gSVBfTkZfRklMVEVSIHx8IE5GVF9DT01QQVRcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnOjE5ODpcdHNlbGVjdCBORl9SRUpFQ1RfSVBWNFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctMTk5LVx0ZGVmYXVsdCBtIGlmIE5FVEZJTFRFUl9BRFZBTkNFRD1uXG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlPTEwPW9iai0kKENPTkZJR19ORl9UUFJPWFlfSVBWNCkgJiM0Mzs9IG5mX3Rwcm94eV9pcHY0Lm9cbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTItIyByZWplY3Rcbm5ldC9pcHY0L25ldGZpbHRlci9NYWtlZmlsZToxMzpvYmotJChDT05GSUdfTkZfUkVKRUNUX0lQVjQpICYjNDM7PSBuZl9yZWplY3RfaXB2NC5vXG5uZXQvaXB2NC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNjc0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyBORlQgUmVqZWN0IE1vZHVsZSBCZWhhdmlvcioqCgpSaWdodCwgc28gYE5GVF9SRUpFQ1RfSU5FVGAgaXNuJiMzOTt0IG1hZ2ljYWxseSBwdWxsaW5nIGluIGBORl9SRUpFQ1RfSVBWNGAgYXMgSSYjMzk7ZCBpbml0aWFsbHkgYXNzdW1lZC4gU2VlbXMgSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgY29uZmlndXJhdGlvbi4gVGltZSB0byByZXZpc2l0IGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgLiBJJiMzOTtsbCB3YW50IHRvIHZlcmlmeSB0aGUgZGVwZW5kZW5jaWVzIGFuZCBzZWUgZXhhY3RseSBob3cgdGhvc2UgbW9kdWxlcyBhcmUgbGlua2VkLCBvciBtb3JlIGxpa2VseSwgKm5vdCogbGlua2VkLiBJdOKAmXMgcHJvYmFibHkgYSBzdWJ0bGUgcmVsYXRpb25zaGlwLCBvciBsYWNrIHRoZXJlb2YsIHdpdGhpbiB0aGUgS2NvbmZpZyBoaWVyYXJjaHkuIEkmIzM5O20gZ3Vlc3NpbmcgYSBjb25kaXRpb25hbCBkZXBlbmRlbmN5IG9yIGFuIGlzc3VlIHdpdGggdGhlIGludGVuZGVkIHNjb3BlIG9mIGBORlRfUkVKRUNUX0lORVRgIGl0c2VsZi4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBLY29uZmlnIGZpbGUgcmV2ZWFscy4uLiBJJiMzOTtsbCBuZWVkIHRvIGFzc2VzcyB0aGUgaW1wbGljYXRpb25zIGZvciBhIGNvbWJpbmVkIElQdjQvSVB2NiByZWplY3QgcnVsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1ODUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDU4NTpcdFxuIDU4NjpcdGNvbmZpZyBORlRfUkVKRUNUX0lORVRcbiA1ODc6XHRcdGRlcGVuZHMgb24gTkZfVEFCTEVTX0lORVRcbiA1ODg6XHRcdGRlZmF1bHQgTkZUX1JFSkVDVFxuIDU4OTpcdFx0dHJpc3RhdGVcbiA1OTA6XHRcbiA1OTE6XHRjb25maWcgTkZUX0NPTVBBVFxuIDU5MjpcdFx0ZGVwZW5kcyBvbiBORVRGSUxURVJfWFRBQkxFU1xuIDU5MzpcdFx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIHhfdGFibGVzIG92ZXIgbmZfdGFibGVzIG1vZHVsZVwmIzM0O1xuIDU5NDpcdFx0aGVscFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjA3NQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipDaGVja2luZyBEZXBlbmRlbmN5IExvZ2ljIGZvciBORlQgUmVqZWN0IEltcGxlbWVudGF0aW9uKioKCkFscmlnaHQsIGhhbmcgb24gYSBzZWNvbmQuIGBORlRfUkVKRUNUX0lORVRgLi4uIHRoYXQgcmVsaWVzIG9uIGBORl9UQUJMRVNfSU5FVGAsIGRvZXNuJiMzOTt0IGl0PyBJIG5lZWQgdG8gcXVpY2tseSByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGF0LiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBpbXBsZW1lbnRhdGlvbiwgc3BlY2lmaWNhbGx5IHRoZSBgbmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuY2Agc291cmNlIGZpbGUuIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gSSB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmN5IGZsb3csIGVzcGVjaWFsbHkgZ2l2ZW4gaG93IHRpZ2h0bHkga25pdCBOZXRmaWx0ZXImIzM5O3MgY29tcG9uZW50cyBjYW4gYmUuIEdvdHRhIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nIGNydWNpYWwgaW4gdGhlIGNvbmZpZ3VyYXRpb24gb3IgcG90ZW50aWFsIGlzc3VlcyBhcmlzaW5nIGZyb20gdGhhdCByZWxhdGlvbnNoaXAuIEdvdHRhIGdvIGJhY2sgYW5kIHZlcmlmeSBleGFjdGx5IHdoYXQmIzM5O3MgZ29pbmcgb24gaW4gdGhhdCBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl9zZW5kX3VucmVhY2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmM9MTc9c3RhdGljIHZvaWQgbmZ0X3JlamVjdF9pbmV0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmMtMjYtXHRcdGNhc2UgTkZUX1JFSkVDVF9JQ01QX1VOUkVBQ0g6XG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jOjI3Olx0XHRcdG5mX3NlbmRfdW5yZWFjaChwa3QtXHUwMDNlc2tiLCBwcml2LVx1MDAzZWljbXBfY29kZSxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmMtMjgtXHRcdFx0XHRcdG5mdF9ob29rKHBrdCkpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmMtMzQtXHRcdGNhc2UgTkZUX1JFSkVDVF9JQ01QWF9VTlJFQUNIOlxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYzozNTpcdFx0XHRuZl9zZW5kX3VucmVhY2gocGt0LVx1MDAzZXNrYixcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmMtMzYtXHRcdFx0XHRcdG5mdF9yZWplY3RfaWNtcF9jb2RlKHByaXYtXHUwMDNlaWNtcF9jb2RlKSxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jLTQzLVx0XHRjYXNlIE5GVF9SRUpFQ1RfSUNNUF9VTlJFQUNIOlxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYzo0NDpcdFx0XHRuZl9zZW5kX3VucmVhY2g2KG5mdF9uZXQocGt0KSwgcGt0LVx1MDAzZXNrYixcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmMtNDUtXHRcdFx0XHRcdCBwcml2LVx1MDAzZWljbXBfY29kZSwgbmZ0X2hvb2socGt0KSk7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy01MS1cdFx0Y2FzZSBORlRfUkVKRUNUX0lDTVBYX1VOUkVBQ0g6XG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jOjUyOlx0XHRcdG5mX3NlbmRfdW5yZWFjaDYobmZ0X25ldChwa3QpLCBwa3QtXHUwMDNlc2tiLFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy01My1cdFx0XHRcdFx0IG5mdF9yZWplY3RfaWNtcHY2X2NvZGUocHJpdi1cdTAwM2VpY21wX2NvZGUpLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjc1NwoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIENvbXBpbGF0aW9uIFBhdGggb2YgYG5mdF9yZWplY3RfaW5ldC5jYCoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBuZnRfcmVqZWN0X2luZXQuY2AgZmlsZSBhbmQgc29tZXRoaW5nJiMzOTtzIGJ1Z2dpbmcgbWUuIEl0JiMzOTtzIHVzaW5nIGBuZl9zZW5kX3VucmVhY2hgLCBhbmQgdGhhdCYjMzk7cyBhIGtleSBmdW5jdGlvbiBpbiBoYW5kbGluZyBuZXR3b3JrIHVucmVhY2hhYmlsaXR5LiBCdXQgaWYgSSByZWNhbGwgY29ycmVjdGx5LCBgTkZfUkVKRUNUX0lQVjRgIHVzdWFsbHkgbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgdGhhdCB0byB3b3JrIHByb3Blcmx5LiBTbywgaG93IGlzIHRoaXMgdGhpbmcgZXZlbiBjb21waWxpbmcgd2l0aG91dCB0aGF0IGZsYWcgc2VlbWluZ2x5IGFjdGl2ZT8KCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB0aGVyZSYjMzk7cyBnb3QgdG8gYmUgc29tZSBvdGhlciBtZWNoYW5pc20gYXQgcGxheS4gUGVyaGFwcyBgbmZfc2VuZF91bnJlYWNoYCBpcyBjYWxsZWQgdW5kZXIgYSBkaWZmZXJlbnQgbWFjcm8gY29uZGl0aW9uPyBPciBtYXliZSBpdCYjMzk7cyBpbmNsdWRlZCB3aXRoaW4gYSBkaWZmZXJlbnQgaGVhZGVyLCB0aGF0IHB1bGxzIGluIHRoZSBgbmZfcmVqZWN0YCBjb21wb25lbnRzIGluIGEgZGlmZmVyZW50IHdheT8gSSBuZWVkIHRvIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuIFRpbWUgdG8gZGVsdmUgaW50byBgaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL2lwdjQvbmZfcmVqZWN0LmhgIGFuZCBzZWUgd2hhdCYjMzk7cyByZWFsbHkgZ29pbmcgb24gdW5kZXIgdGhlIGhvb2Qgb2YgdGhvc2UgcmVqZWN0IGNvZGUgbWFjcm9zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGNvbXBpbGF0aW9uIHBhdGghCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvbmV0ZmlsdGVyL2lwdjQvbmZfcmVqZWN0LmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xuICAgMjpcdCNpZm5kZWYgX0lQVjRfTkZfUkVKRUNUX0hcbiAgIDM6XHQjZGVmaW5lIF9JUFY0X05GX1JFSkVDVF9IXG4gICA0Olx0XG4gICA1Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvc2tidWZmLmhcdTAwM2VcbiAgIDY6XHQjaW5jbHVkZSBcdTAwM2NuZXQvaXAuaFx1MDAzZVxuICAgNzpcdCNpbmNsdWRlIFx1MDAzY25ldC9pY21wLmhcdTAwM2VcbiAgIDg6XHQjaW5jbHVkZSBcdTAwM2NuZXQvbmV0ZmlsdGVyL25mX3JlamVjdC5oXHUwMDNlXG4gICA5Olx0XG4gIDEwOlx0dm9pZCBuZl9zZW5kX3VucmVhY2goc3RydWN0IHNrX2J1ZmYgKnNrYl9pbiwgaW50IGNvZGUsIGludCBob29rKTtcbiAgMTE6XHR2b2lkIG5mX3NlbmRfcmVzZXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqLCBzdHJ1Y3Qgc2tfYnVmZiAqb2xkc2tiLFxuICAxMjpcdFx0XHQgICBpbnQgaG9vayk7XG4gIDEzOlx0c3RydWN0IHNrX2J1ZmYgKm5mX3JlamVjdF9za2JfdjRfdW5yZWFjaChzdHJ1Y3QgbmV0ICpuZXQsXG4gIDE0Olx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqb2xkc2tiLFxuICAxNTpcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiAgMTY6XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBob29rLCB1OCBjb2RlKTtcbiAgMTc6XHRzdHJ1Y3Qgc2tfYnVmZiAqbmZfcmVqZWN0X3NrYl92NF90Y3BfcmVzZXQoc3RydWN0IG5ldCAqbmV0LFxuICAxODpcdFx0XHRcdFx0XHQgICBzdHJ1Y3Qgc2tfYnVmZiAqb2xkc2tiLFxuICAxOTpcdFx0XHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuICAyMDpcdFx0XHRcdFx0XHQgICBpbnQgaG9vayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNDQyCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyBLZXJuZWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gYG5mdF9yZWplY3RfaW5ldGAg4oCTIHRoYXQmIzM5O3MgdGhlIG1vZHVsZSBJJiMzOTttIGludGVyZXN0ZWQgaW4gcmlnaHQgbm93IOKAkyBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIHB1bGxpbmcgaW4gYE5GX1RBQkxFU19JTkVUYCBhcyBhIGRlcGVuZGVuY3kuIEhtbSwgdGhhdCYjMzk7cyBub3QgaW1tZWRpYXRlbHkgb2J2aW91cyB3aHksIGFuZCBJIHZhZ3VlbHkgcmVjYWxsIHRoYXQgYE5GX1RBQkxFU19JTkVUYCAqbWlnaHQqIGhhdmUgc29tZSBjb25uZWN0aW9uIHRvIHRoZSBvbGRlciBgTkZUX1JFSkVDVF9JUFY0YCBvcHRpb24sIHdoaWNoIEkmIzM5O20gbm90IHVzaW5nIGRpcmVjdGx5LiBHb3R0YSBiZSBjZXJ0YWluIEkmIzM5O20gbm90IHB1bGxpbmcgaW4gdW53YW50ZWQgc3R1ZmYuCgpMZXQmIzM5O3MgcXVpY2tseSB2ZXJpZnkgdGhhdCB0aGUgcmVsYXRpb25zaGlwIG1ha2VzIHNlbnNlIGFuZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgYE5GX1RBQkxFU19JTkVUYC4gVGhlIHF1aWNrZXN0IHdheSB0byBkbyB0aGlzIGlzIHRvIGp1bXAgcmlnaHQgaW50byB0aGUgc291cmNlIGNvZGUsIHNwZWNpZmljYWxseSBgbmV0L25ldGZpbHRlci9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSBhbGwgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIHRoZWlyIGRlcGVuZGVuY2llcyBhcmUgZGVmaW5lZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgTkZfVEFCTEVTX0lORVRgIGFjdHVhbGx5ICpkb2VzKiBpbiByZWxhdGlvbiB0byB0aGUgYnJvYWRlciBuZXRmaWx0ZXIgZnJhbWV3b3JrIGFuZCBzcGVjaWZpY2FsbHkgYG5mdF9yZWplY3RfaW5ldGAuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgd2hhdCB0aGUgS2NvbmZpZyBmaWxlcyByZXZlYWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORl9UQUJMRVNfSU5FVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9NDcxPWlmIE5GX1RBQkxFU1xubmV0L25ldGZpbHRlci9LY29uZmlnOjQ3Mjpjb25maWcgTkZfVEFCTEVTX0lORVRcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NzMtXHRkZXBlbmRzIG9uIElQVjZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM4NDIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgY29udGV4dCwgcHJlc2VudGVkIGFzIGEgcGVyc29uYWwgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGFscmVhZHkgd2VsbC12ZXJzZWQgaW4ga2VybmVsIGNvbmZpZ3VyYXRpb24gYW5kIG5ldGZpbHRlcjoKCioqQW5hbHl6aW5nIHRoZSBLY29uZmlnIGZvciBORl9UQUJMRVNfSU5FVCoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgZGl2aW5nIGludG8gYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AgYW5kIGhvbWluZyBpbiBvbiBgTkZfVEFCTEVTX0lORVRgLiBUaGlzIGlzIGtleS4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIE5ldGZpbHRlciBpbmZyYXN0cnVjdHVyZSwgc3BlY2lmaWNhbGx5IGFzIGl0IHJlbGF0ZXMgdG8gdGhlIEludGVybmV0IHByb3RvY29sIGZhbWlseS4gTXkgaW1tZWRpYXRlIGFzc3VtcHRpb24gaXMgd2UmIzM5O3JlIGxvb2tpbmcgYXQgdGhlIGNvcmUgZW5hYmxpbmcgb3B0aW9ucyBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5LiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGRlcGVuZGVuY2llcyB0aGVyZSBhcmUsIHdoYXQgdGhpcyBtb2R1bGUgaW1wYWN0cywgYW5kIGhvdyBpdCBpcyBtZWFudCB0byBiZSB1c2VkLCBpbiBzaG9ydCwgaG93IGRvIEkgY29uZmlndXJlIG15IGVudmlyb25tZW50IHRvIHV0aWxpemUgdGhpcyBmdW5jdGlvbmFsaXR5PyBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIHRoZSBzdGFuZGFyZCBgYm9vbGAsIGB0cmlzdGF0ZWAsIG9yIGBpbnRgIG9wdGlvbnMgaGVyZSwgY29udHJvbGxpbmcgd2hldGhlciBzdXBwb3J0IGlzIGJ1aWx0IGluLCBhcyBhIG1vZHVsZSwgb3IgZGlzYWJsZWQuIEkgbmVlZCB0byBwYXJzZSB0aGUgaGVscCB0ZXh0IHRob3JvdWdobHkgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIG9yIGRpc2FibGluZyB0aGlzLiBJIHdpbGwgbG9vayBmb3IgYW55IGNvbmRpdGlvbmFsIGxvZ2ljIHdpdGhpbiB0aGUgS2NvbmZpZywgdG8gc2VlIGlmIHRoZXJlIGFyZSBkZXBlbmRlbmNpZXMgb24gb3RoZXIgTmV0ZmlsdGVyIGNvbXBvbmVudHMuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGxvb2tpbmcgYXQgdGhlIGRlcGVuZGVuY2llcyB0aGF0IG1pZ2h0IGV4aXN0IGJldHdlZW4gYE5GX1RBQkxFU19JTkVUYCwgYE5GX1RBQkxFU19JUFY0YCwgYW5kIGBORl9UQUJMRVNfSVBWNmAuIElmIHRoZXJlIGFyZSBhbnksIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0NzA6XHRcbiA0NzE6XHRpZiBORl9UQUJMRVNcbiA0NzI6XHRjb25maWcgTkZfVEFCTEVTX0lORVRcbiA0NzM6XHRcdGRlcGVuZHMgb24gSVBWNlxuIDQ3NDpcdFx0c2VsZWN0IE5GX1RBQkxFU19JUFY0XG4gNDc1Olx0XHRzZWxlY3QgTkZfVEFCTEVTX0lQVjZcbiA0NzY6XHRcdGJvb2wgXCYjMzQ7TmV0ZmlsdGVyIG5mX3RhYmxlcyBtaXhlZCBJUHY0L0lQdjYgdGFibGVzIHN1cHBvcnRcJiMzNDtcbiA0Nzc6XHRcdGhlbHBcbiA0Nzg6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBzdXBwb3J0IGZvciBhIG1peGVkIElQdjQvSVB2NiBcJiMzNDtpbmV0XCYjMzQ7IHRhYmxlLlxuIDQ3OTpcdFxuIDQ4MDpcdGNvbmZpZyBORl9UQUJMRVNfTkVUREVWXG4gNDgxOlx0XHRib29sIFwmIzM0O05ldGZpbHRlciBuZl90YWJsZXMgbmV0ZGV2IHRhYmxlcyBzdXBwb3J0XCYjMzQ7XG4gNDgyOlx0XHRoZWxwXG4gNDgzOlx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgdGhlIFwmIzM0O25ldGRldlwmIzM0OyB0YWJsZS5cbiA0ODQ6XHRcbiA0ODU6XHRjb25maWcgTkZUX05VTUdFTlxuIDQ4NjpcdFx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIG5mX3RhYmxlcyBudW1iZXIgZ2VuZXJhdG9yIG1vZHVsZVwmIzM0O1xuIDQ4NzpcdFx0aGVscFxuIDQ4ODpcdFx0ICBUaGlzIG9wdGlvbiBhZGRzIHRoZSBudW1iZXIgZ2VuZXJhdG9yIGV4cHJlc3Npb24gdXNlZCB0byBwZXJmb3JtXG4gNDg5Olx0XHQgIGluY3JlbWVudGFsIGNvdW50aW5nIGFuZCByYW5kb20gbnVtYmVycyBib3VuZCB0byBhIHVwcGVyIGxpbWl0LlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDQ4OAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkRpZ2dpbmcgaW50byB0aGUgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIHNvIGBORl9UQUJMRVNfSU5FVGAgaXMgY2hvc2VuLCBhbmQgSSBrbm93IHRoYXQgdXN1YWxseSBtZWFucyBpdCYjMzk7cyBwdWxsaW5nIGluIHRoZSBJUHY0IGNvbXBvbmVudCDigJMgbG9va2luZyBhdCB0aGUgZGVwZW5kZW5jeS4gTGV0IG1lIHF1aWNrbHkgY29uZmlybSB0aGF0IGJ5IGNoZWNraW5nIHRoZSBLY29uZmlnIGZpbGUgZm9yIGBORl9UQUJMRVNfSVBWNGAuIEkmIzM5O2xsIGdvIHN0cmFpZ2h0IHRvIGBuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZ2AgdG8gc2VlIGlmIG15IGh1bmNoIGlzIGNvcnJlY3QuIEdvdHRhIG1ha2Ugc3VyZSB0aG9zZSBkZXBlbmRlbmNpZXMgYXJlIGFsbCB3aXJlZCB1cCB0aGUgd2F5IEkgZXhwZWN0IHRoZW0gdG8gYmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORl9UQUJMRVNfSVBWNCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnPTMzPWlmIE5GX1RBQkxFU1xubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctMzQtXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZzozNTpjb25maWcgTkZfVEFCTEVTX0lQVjRcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTM2LVx0Ym9vbCBcJiMzNDtJUHY0IG5mX3RhYmxlcyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0Nzk1CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqRGl2aW5nIGludG8gdGhlIElQdjQgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgdGltZSB0byBnZXQgaW50byB0aGUgbml0dHktZ3JpdHR5IG9mIHRoZSBOZXRmaWx0ZXIgY29uZmlndXJhdGlvbiBmb3IgSVB2NC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGBORl9UQUJMRVNfSVBWNGAgaXMgc2V0IHVwLiBMZXQmIzM5O3Mgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIGBuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZ2AuIFRoaXMgaXMgdGhlIGZpbGUgdGhhdCBkZWZpbmVzIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHNvIGl0JiMzOTtzIHRoZSByaWdodCBwbGFjZSB0byBnZXQgYSBmb3VuZGF0aW9uYWwgdW5kZXJzdGFuZGluZy4gSSYjMzk7bSBnb2luZyB0byBzY2FuIHRoYXQgZmlsZSB0byBzZWUgaG93IGBORl9UQUJMRVNfSVBWNGAgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUgb2YgTmV0ZmlsdGVyIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIGtlcm5lbCYjMzk7cyBuZXR3b3JraW5nIHN0YWNrLCBwYXJ0aWN1bGFybHkgYXJvdW5kIHRoZSBJUHY0IHByb3RvY29sLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIGl0cyBkZXBlbmRlbmNpZXMgYW5kIHdoYXQgY29uZGl0aW9ucyB0cmlnZ2VyIGl0cyBpbmNsdXNpb24uIFRoaXMgc2hvdWxkIGFsbG93IG1lIHRvIGZvcm11bGF0ZSBhIHBsYW4gdG8gdW5kZXJzdGFuZCBpdHMgZnVuY3Rpb25hbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMzLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMzM6XHRpZiBORl9UQUJMRVNcbiAgMzQ6XHRcbiAgMzU6XHRjb25maWcgTkZfVEFCTEVTX0lQVjRcbiAgMzY6XHRcdGJvb2wgXCYjMzQ7SVB2NCBuZl90YWJsZXMgc3VwcG9ydFwmIzM0O1xuICAzNzpcdFx0aGVscFxuICAzODpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBJUHY0IHN1cHBvcnQgZm9yIG5mX3RhYmxlcy5cbiAgMzk6XHRcbiAgNDA6XHRpZiBORl9UQUJMRVNfSVBWNFxuICA0MTpcdFxuICA0MjpcdGNvbmZpZyBORlRfUkVKRUNUX0lQVjRcbiAgNDM6XHRcdHNlbGVjdCBORl9SRUpFQ1RfSVBWNFxuICA0NDpcdFx0ZGVmYXVsdCBORlRfUkVKRUNUXG4gIDQ1Olx0XHR0cmlzdGF0ZVxuICA0NjpcdFxuICA0NzpcdGNvbmZpZyBORlRfRFVQX0lQVjRcbiAgNDg6XHRcdHRyaXN0YXRlIFwmIzM0O0lQdjQgbmZfdGFibGVzIHBhY2tldCBkdXBsaWNhdGlvbiBzdXBwb3J0XCYjMzQ7XG4gIDQ5Olx0XHRkZXBlbmRzIG9uICFORl9DT05OVFJBQ0sgfHwgTkZfQ09OTlRSQUNLXG4gIDUwOlx0XHRzZWxlY3QgTkZfRFVQX0lQVjRcbiAgNTE6XHRcdGhlbHBcbiAgNTI6XHRcdCAgVGhpcyBtb2R1bGUgZW5hYmxlcyBJUHY0IHBhY2tldCBkdXBsaWNhdGlvbiBzdXBwb3J0IGZvciBuZl90YWJsZXMuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1MzA1CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk5hdmlnYXRpbmcgdGhlIE5ldGZpbHRlciBDb25maWd1cmF0aW9uIExhYnlyaW50aCoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGVzZSBOZXRmaWx0ZXIgY29uZmlndXJhdGlvbnMuIEl0IHNlZW1zIGxpa2UgaWYgYE5GX1RBQkxFU19JUFY0YCBpcyBvbiwgdGhlIGRlZmF1bHQgZm9yIGBORlRfUkVKRUNUX0lQVjRgIGlzIGdvaW5nIHRvIGJlIGBORlRfUkVKRUNUYC4gVGhhdCBtYWtlcyBzZW5zZS4gQW5kIGlmIGBORlRfUkVKRUNUX0lQVjRgIGlzIHNlbGVjdGVkLCB0aGVuIGBORl9SRUpFQ1RfSVBWNGAgZ2V0cyBjaG9zZW4uIEkmIzM5O20gdHJ5aW5nIHRvIGdldCBgTkZfUkVKRUNUX0lQVjRgIGVuYWJsZWQuIE15IGZpcnN0IHRob3VnaHQgd2FzIHRvIGp1c3QgZW5hYmxlIGBORlRfUkVKRUNUX0lQVjRgLCBvciBldmVuIGBJUF9ORl9UQVJHRVRfUkVKRUNUYCBiZWNhdXNlIHRoYXQgc291bmRzIHJlbGV2YW50LgoKQnV0IGhhbmcgb24uLi4gZW5hYmxpbmcgYE5GX1JFSkVDVF9JUFY0YCBkaXJlY3RseSBtaWdodCBiZSBhIGNsZWFuZXIgYXBwcm9hY2gsIHJpZ2h0PyBPaCwgYnV0IHdhaXQuLi4gSSB3YXMgdGhpbmtpbmcgaXQgd2FzIGEgdHJpc3RhdGUgd2l0aG91dCBhIHByb21wdC4gSSBuZWVkIGEgcHJvbXB0ISBMZXQgbWUgZG91YmxlIGNoZWNrLi4uIFllcyEgVGhlIGBjb25maWcgTkZfUkVKRUNUX0lQVjRgICpkb2VzKiBoYXZlIGEgYHRyaXN0YXRlICYjMzQ7SVB2NCBwYWNrZXQgcmVqZWN0aW9uJiMzNDtgIG9wdGlvbi4gRXhjZWxsZW50LiBTbyBpdCYjMzk7cyBwcm9tcHRpbmchIE9rYXksIGxldCBtZSBnbyBiYWNrIGFuZCByZS1leGFtaW5lIHRoZSBgbmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWdgIGZpbGUgYWdhaW4gdG8gY29uZmlybSB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDk1Olx0Y29uZmlnIE5GX1JFSkVDVF9JUFY0XG4gIDk2Olx0XHR0cmlzdGF0ZSBcJiMzNDtJUHY0IHBhY2tldCByZWplY3Rpb25cJiMzNDtcbiAgOTc6XHRcdGRlZmF1bHQgbSBpZiBORVRGSUxURVJfQURWQU5DRUQ9blxuICA5ODpcdFxuICA5OTpcdGlmIE5GX05BVFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTg0NAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDI5OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5ldHdvcmsgRmlsdGVyIFJlamVjdCBQYXRjaCoqCgpPa2F5LCBzbyB0aGUgYE5GX1JFSkVDVF9JUFY0YCBvcHRpb24gaGFzIGEgcHJvbXB0LCB3aGljaCBtZWFucyB3ZSBjYW4ganVzdCBlbmFibGUgdGhhdC4gQnV0IGhhbmcgb24sIGxldCBtZSBjaGVjayB3aGVyZSBgbmZfc2VuZF91bnJlYWNoYCBsaXZlcywgdGhhdCYjMzk7cyBpbiBgbmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmNgLiAgVGhlIHBhdGNoIGlzIG1vZGlmeWluZyBgbmZfc2VuZF91bnJlYWNoYCwgYW5kIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoYXQgY29kZSBwYXRoIGlzIGFjdHVhbGx5IHJlYWNoYWJsZS4KCkFscmlnaHQsIGBuZl9zZW5kX3VucmVhY2hgICppcyogcmVhY2hhYmxlIOKAkyB0aHJvdWdoIGBpcHRfUkVKRUNUYCwgYG5mdF9yZWplY3RfaXB2NGAsIGFuZCBgbmZ0X3JlamVjdF9pbmV0YC4gVGhlIHBhdGNoIGludHJvZHVjZXMgYSBjaGVjayBmb3IgYGhvb2sgPT0gTkZfSU5FVF9JTkdSRVNTYC4gSSBuZWVkIHRvIGNvbmZpcm0gaWYgYE5GX0lORVRfSU5HUkVTU2AgaXMgYWN0dWFsbHkgdXNlZCBpbiBgbmZfc2VuZF91bnJlYWNoYC4KCkxldCYjMzk7cyBzZWUuIGBuZl9zZW5kX3VucmVhY2hgIGlzIGNhbGxlZCBmcm9tIGByZWplY3RfdGdgIChpcHRhYmxlcyksIGBuZnRfcmVqZWN0X2lwdjRfZXZhbGAgKG5mdGFibGVzKSwgYW5kIGBuZnRfcmVqZWN0X2luZXRfZXZhbGAgKGFsc28gbmZ0YWJsZXMpLiBJbiBgbmZ0X3JlamVjdF9pcHY0X2V2YWxgLCBgbmZ0X2hvb2socGt0KWAgaXMgcGFzc2VkIGFzIHRoZSBgaG9va2AgYXJndW1lbnQuIEJpbmdvISBgbmZ0X2hvb2socGt0KWAgKmNhbiogYmUgYE5GX0lORVRfSU5HUkVTU2AgaWYgdGhlIHJ1bGUgaXMgYXR0YWNoZWQgdG8gdGhlIGluZ3Jlc3MgaG9vay4gU28gdGhlIGNvZGUgaXMgcmVhY2hhYmxlLCBubyBwcm9ibGVtIHRoZXJlLgoKTm93IEkga25vdyB3aGF0IHRvIGZvY3VzIG9uOiBgbmZfc2VuZF91bnJlYWNoYCBpcyB0aGUgbW9kaWZpZWQgZnVuY3Rpb24uIFRoZSBwYXRjaCYjMzk7cyBpbXBhY3QgaXMgY2VudGVyZWQgdGhlcmUuIEkgZG9uJiMzOTt0IHNlZSBhbnkgb3RoZXIgZnVuY3Rpb25zIGJlaW5nIHRvdWNoZWQgYnkgdGhlIHBhdGNoLCBzbyB0aGUgYW5hbHlzaXMgaXMgc3RyYWlnaHQgZm9yd2FyZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfc2VuZF91bnJlYWNoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmM9MzQ0PUVYUE9SVF9TWU1CT0xfR1BMKG5mX3NlbmRfcmVzZXQpO1xubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMtMzQ1LVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmM6MzQ2OnZvaWQgbmZfc2VuZF91bnJlYWNoKHN0cnVjdCBza19idWZmICpza2JfaW4sIGludCBjb2RlLCBpbnQgaG9vaylcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jLTM0Ny17XG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMtMzcyLX1cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jOjM3MzpFWFBPUlRfU1lNQk9MX0dQTChuZl9zZW5kX3VucmVhY2gpO1xubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMtMzc0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjc2MgoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkV2YWx1YXRpbmcgSVB2NCBhbmQgSW5ldCBSZWplY3Rpb24gaW4gbmZ0YWJsZXMqKgoKT2theSwgdGltZSB0byBkaXZlIGludG8gdGhpcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gYG5mdF9yZWplY3RfaXB2NF9ldmFsYCBhbmQgYG5mdF9yZWplY3RfaW5ldF9ldmFsYC4gVGhleSYjMzk7cmUgdGhlIGNyaXRpY2FsIGZ1bmN0aW9ucyBoZXJlLCByaWdodD8gV2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBwYWNrZXQgcmVqZWN0aW9uLCBhbmQgdGhlc2UgZnVuY3Rpb25zIGFyZSBsaWtlbHkgYXQgdGhlIGhlYXJ0IG9mIHRoZSBsb2dpYy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhleSYjMzk7cmUgaGFuZGxpbmcgSVB2NCBhbmQgZ2VuZXJhbCBpbmV0ICh3aGljaCBvZnRlbiBpbmNsdWRlcyBJUHY0IGFuZCBJUHY2LCByaWdodD8pIHRyYWZmaWMuIEkgd2FudCB0byBzZWUgdGhlIG5pdHR5LWdyaXR0eSBvZiB0aGVpciBldmFsdWF0aW9uIHByb2Nlc3Nlcy4gV2hhdCBhcmUgdGhlIHNwZWNpZmljIGNyaXRlcmlhPyBXaGF0JiMzOTtzIHRoZSBzaG9ydC1jaXJjdWl0aW5nIGxvZ2ljPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBvciBzdWJ0bGUgZGlmZmVyZW5jZXMgaW4gdGhlIHdheSB0aGV5IGhhbmRsZSBlZGdlIGNhc2VzPyBJJiMzOTttIGFudGljaXBhdGluZyB0aGF0IGV4YW1pbmluZyB0aGVzZSB0d28gZnVuY3Rpb25zIHdpbGwgZ2l2ZSBtZSBhIHNvbGlkIGZvdW5kYXRpb24gZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGJyb2FkZXIgcmVqZWN0aW9uIHN0cmF0ZWd5IGluIHRoZSBuZnRhYmxlcyBjb250ZXh0LiBJdOKAmXMgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gYmVnaW4gbXkgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZ0X3JlamVjdF9pcHY0X2V2YWwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pcHY0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaXB2NC5jLTE4LVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaXB2NC5jOjE5OnN0YXRpYyB2b2lkIG5mdF9yZWplY3RfaXB2NF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcbm5ldC9pcHY0L25ldGZpbHRlci9uZnRfcmVqZWN0X2lwdjQuYy0yMC1cdFx0XHRcdCBzdHJ1Y3QgbmZ0X3JlZ3MgKnJlZ3MsXG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaXB2NC5jPTQxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZ0X2V4cHJfb3BzIG5mdF9yZWplY3RfaXB2NF9vcHMgPSB7XG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaXB2NC5jLTQzLVx0LnNpemVcdFx0PSBORlRfRVhQUl9TSVpFKHNpemVvZihzdHJ1Y3QgbmZ0X3JlamVjdCkpLFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaXB2NC5jOjQ0Olx0LmV2YWxcdFx0PSBuZnRfcmVqZWN0X2lwdjRfZXZhbCxcbm5ldC9pcHY0L25ldGZpbHRlci9uZnRfcmVqZWN0X2lwdjQuYy00NS1cdC5pbml0XHRcdD0gbmZ0X3JlamVjdF9pbml0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzI4NwoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBjb2RlLCBmcmFtZWQgYXMgbXkgb3duIHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIFBhY2tldCBSZWplY3Rpb24gTG9naWMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGFja2V0IHJlamVjdGlvbiBjb2RlLiBJIHNlZSB0aGF0IGBuZnRfcmVqZWN0X2lwdjRfZXZhbGAsIGBuZnRfcmVqZWN0X2luZXRfZXZhbGAsIGFuZCBgcmVqZWN0X3RnYCBhcmUgYWxsIHN0YXRpYyBmdW5jdGlvbnMuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhleSYjMzk7cmUgbGlrZWx5IGhlbHBlciBmdW5jdGlvbnMgb3IgaW50ZXJuYWwgaW1wbGVtZW50YXRpb25zLCBub3QgdGhlIHByaW1hcnkgZW50cnkgcG9pbnRzLiBTbywgdGhlIGtleSBmdW5jdGlvbiBoZXJlLCB0aGUgb25lIGRyaXZpbmcgdGhlIGNvcmUgbG9naWMsIHNlZW1zIHRvIGJlIGBuZl9zZW5kX3VucmVhY2hgLgoKTm93LCBiZWZvcmUgSSBkaWcgaW50byBgbmZfc2VuZF91bnJlYWNoYCwgSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIHN0YXRlIG9mIHRoZSBwYWNrZXQgaW1tZWRpYXRlbHkgcHJpb3IgdG8gdGhlIHBhdGNoLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBmdW5jdGlvbiB0aGF0IGNvbWVzIGp1c3QgYmVmb3JlIGl0IHRvIGdldCBteSBiZWFyaW5ncy4gTGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IGBuZl9yZWplY3RfZmlsbF9za2JfZHN0YCBhbmQgc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHRoZXJlLiBUaGF0IHNob3VsZCBzZXQgdGhlIHN0YWdlIG5pY2VseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfcmVqZWN0X2ZpbGxfc2tiX2RzdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jPTIyNj1zdGF0aWMgdm9pZCBuZl9yZWplY3RfaXBfdGNwaGRyX3B1dChzdHJ1Y3Qgc2tfYnVmZiAqbnNrYiwgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKm9sZHNrYixcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYy0yNTQtXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYzoyNTU6c3RhdGljIGludCBuZl9yZWplY3RfZmlsbF9za2JfZHN0KHN0cnVjdCBza19idWZmICpza2JfaW4pXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYy0yNTYte1xuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jPTI3MT12b2lkIG5mX3NlbmRfcmVzZXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpvbGRza2IsXG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMtMjgxLVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmM6MjgyOlx0aWYgKCFza2JfZHN0KG9sZHNrYikgXHUwMDI2XHUwMDI2IG5mX3JlamVjdF9maWxsX3NrYl9kc3Qob2xkc2tiKSBcdTAwM2MgMClcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jLTI4My1cdFx0cmV0dXJuO1xuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jPTM0Nj12b2lkIG5mX3NlbmRfdW5yZWFjaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luLCBpbnQgY29kZSwgaW50IGhvb2spXG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMtMzU0LVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmM6MzU1Olx0aWYgKCFza2JfZHN0KHNrYl9pbikgXHUwMDI2XHUwMDI2IG5mX3JlamVjdF9maWxsX3NrYl9kc3Qoc2tiX2luKSBcdTAwM2MgMClcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jLTM1Ni1cdFx0cmV0dXJuO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODA3NQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5ldGZpbHRlciBSZWplY3Rpb24gTG9naWMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgTmV0ZmlsdGVyIGNvZGUsIHNwZWNpZmljYWxseSB0aGUgcmVqZWN0aW9uIGxvZ2ljLiBgbmZfcmVqZWN0X2ZpbGxfc2tiX2RzdGAgaXMgc3RhdGljLCB3aGljaCBpc24mIzM5O3QgZ29pbmcgdG8gYmUgaGVscGZ1bCBmb3IgbXkgYW5hbHlzaXMuIFRoYXQgbWVhbnMgYG5mX3NlbmRfdW5yZWFjaGAgaXMgdGhlIG1vcmUgcmVsZXZhbnQgZnVuY3Rpb24gdG8gZm9jdXMgb24uIEhtbSwgd2hhdCBhYm91dCBgbmZfc2VuZF9yZXNldGAgdGhvdWdoPyBUaGUgcGF0Y2ggZG9lc24mIzM5O3QgdG91Y2ggaXQsIGJ1dCBpdCBsaXZlcyBpbiB0aGUgc2FtZSBmaWxlLiBJIHNob3VsZCBrZWVwIGl0IGluIG1pbmQgYXMgYSBwb3RlbnRpYWwgcG9pbnQgb2YgY29ubmVjdGlvbiwgZXZlbiBpZiBpdCYjMzk7cyBub3QgZGlyZWN0bHkgbW9kaWZpZWQgaGVyZS4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBvZiB0aGlzIGNvZGUgdG8gdGhlIGJyb2FkZXIgTmV0ZmlsdGVyIGVjb3N5c3RlbS4gSXMgYE5GX1JFSkVDVF9JUFY0YCBzdWZmaWNpZW50IHRvIGNvdmVyIHdoYXQgdGhpcyBwYXRjaCBhZGRyZXNzZXM/IFllcywgYE5GX1JFSkVDVF9JUFY0YCBjb21waWxlcyBgbmZfcmVqZWN0X2lwdjQuY2AsIHNvIHRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUbyB0cmlnZ2VyIGl0IHZpYSBuZnRhYmxlcywgSSBuZWVkIHRvIGxvb2sgYXQgd2hldGhlciBgTkZUX1JFSkVDVF9JUFY0YCwgYE5GVF9SRUpFQ1RfSU5FVGAsIG9yIGBORlRfUkVKRUNUX05FVERFVmAgYXJlIGludm9sdmVkLiBXYWl0IGEgbWludXRlLCB0aGUgcGF0Y2ggc3BlY2lmaWNhbGx5IHRhcmdldHMgdGhlIGBob29rID09IE5GX0lORVRfSU5HUkVTU2AuIFJpZ2h0LCBgTkZfSU5FVF9JTkdSRVNTYCBpcyB1c2VkIHdpdGhpbiB0aGUgbmV0ZGV2IGZhbWlseSBpbiBuZnRhYmxlcy4gT2theSwgc28gdGhhdCBtZWFucyBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIGlmIGBORlRfUkVKRUNUX05FVERFVmAgaXMgcHJlc2VudCBhbmQgcmVsZXZhbnQuIFRoYXQgc2VlbXMgdGhlIGtleSBsaW5rIHRvIHB1cnN1ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkZUX1JFSkVDVF9ORVRERVYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTY4MD1jb25maWcgTkZUX0ZJQl9ORVRERVZcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNjg4LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjY4OTpjb25maWcgTkZUX1JFSkVDVF9ORVRERVZcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy02OTAtXHRkZXBlbmRzIG9uIE5GVF9SRUpFQ1RfSVBWNFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODcxOAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCB0ZXh0LCByZW5kZXJlZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyBJJiMzOTttIGFuIGV4cGVydCBpbiB0aGlzIGZpZWxkOgoKKipEaXZpbmcgaW50byBuZXRmaWx0ZXImIzM5O3MgS2NvbmZpZzogRm9jdXNpbmcgb24gTkZUX1JFSkVDVF9ORVRERVYqKgoKT2theSwgbGV0JiMzOTtzIHB1bGwgdXAgYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AuIFdlJiMzOTtyZSBnb2luZyB0byB6ZXJvIGluIG9uIHRoZSBgTkZUX1JFSkVDVF9ORVRERVZgIG9wdGlvbi4gSSB3YW50IHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhpcyBmZWF0dXJlIGlzIGNvbmZpZ3VyZWQgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIGl0IGhhcy4gVGhpcyBwcm9iYWJseSB0aWVzIGludG8gaG93IHdlIGhhbmRsZSByZWplY3RlZCBwYWNrZXRzIHdpdGhpbiB0aGUgbmV0ZGV2IGNvbnRleHQgdXNpbmcgbmZ0YWJsZXMuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyBpdCBpbnRlcmZhY2VzIHdpdGggdGhlIG90aGVyIHJlamVjdCBtZWNoYW5pc21zLiBJcyB0aGlzIGEgcmVwbGFjZW1lbnQsIGFuIGVuaGFuY2VtZW50LCBvciBhIGNvbXBsZXRlbHkgb3J0aG9nb25hbCBmZWF0dXJlPyBXaGF0IG90aGVyIG9wdGlvbnMgbmVlZCB0byBiZSBlbmFibGVkIGZvciBgTkZUX1JFSkVDVF9ORVRERVZgIHRvIGZ1bmN0aW9uIGNvcnJlY3RseT8gQXJlIHRoZXJlIGFueSBzcGVjaWZpYyBrZXJuZWwgdmVyc2lvbnMgd2hlcmUgdGhpcyBmdW5jdGlvbmFsaXR5IHdhcyBpbnRyb2R1Y2VkIG9yIHN1YnN0YW50aWFsbHkgY2hhbmdlZD8gQXJlIHRoZXJlIGFueSB1bnVzdWFsIGNvbmZpZ3VyYXRpb24gZ290Y2hhcyBJIHNob3VsZCBiZSBhd2FyZSBvZiwgbGlrZSBkZXBlbmRlbmNpZXMgb24gc3BlY2lmaWMgaGFyZHdhcmUgb3Igb3RoZXIga2VybmVsIG1vZHVsZXM/IExvb2tpbmcgYXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgd2lsbCB0ZWxsIHRoZSBzdG9yeS4gTGV0JiMzOTtzIHNlZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDY4NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNjg1Olx0XHQgIFRoaXMgb3B0aW9uIGFsbG93cyB1c2luZyB0aGUgRklCIGV4cHJlc3Npb24gZnJvbSB0aGUgbmV0ZGV2IHRhYmxlLlxuIDY4NjpcdFx0ICBUaGUgbG9va3VwIHdpbGwgYmUgZGVsZWdhdGVkIHRvIHRoZSBJUHY0IG9yIElQdjYgRklCIGRlcGVuZGluZ1xuIDY4NzpcdFx0ICBvbiB0aGUgcHJvdG9jb2wgb2YgdGhlIHBhY2tldC5cbiA2ODg6XHRcbiA2ODk6XHRjb25maWcgTkZUX1JFSkVDVF9ORVRERVZcbiA2OTA6XHRcdGRlcGVuZHMgb24gTkZUX1JFSkVDVF9JUFY0XG4gNjkxOlx0XHRkZXBlbmRzIG9uIE5GVF9SRUpFQ1RfSVBWNlxuIDY5MjpcdFx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIG5mX3RhYmxlcyBuZXRkZXYgUkVKRUNUIHN1cHBvcnRcJiMzNDtcbiA2OTM6XHRcdGhlbHBcbiA2OTQ6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgUkVKRUNUIHN1cHBvcnQgZnJvbSB0aGUgbmV0ZGV2IHRhYmxlLlxuIDY5NTpcdFx0ICBUaGUgcmV0dXJuIHBhY2tldCBnZW5lcmF0aW9uIHdpbGwgYmUgZGVsZWdhdGVkIHRvIHRoZSBJUHY0XG4gNjk2Olx0XHQgIG9yIElQdjYgSUNNUCBvciBUQ1AgUlNUIGltcGxlbWVudGF0aW9uIGRlcGVuZGluZyBvbiB0aGVcbiA2OTc6XHRcdCAgcHJvdG9jb2wgb2YgdGhlIHBhY2tldC5cbiA2OTg6XHRcbiA2OTk6XHRlbmRpZiAjIE5GX1RBQkxFU19ORVRERVZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkyNTAKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLZXJuZWwgQ29uZmlndXJhdGlvbiBDb251bmRydW0qKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGtlcm5lbCBjb25maWd1cmF0aW9uIGFuZCBJIHNlZSB0aGF0IGBORlRfUkVKRUNUX05FVERFVmAgaXMgcmVsaWFudCBvbiBib3RoIGBORlRfUkVKRUNUX0lQVjRgIGFuZCBgTkZUX1JFSkVDVF9JUFY2YC4gTWFrZXMgcGVyZmVjdCBzZW5zZS4gQW5kLCBhcyBpZiB0aGF0IHdlcmVuJiMzOTt0IGVub3VnaCwgaXQmIzM5O3MgYWxzbyBuZXN0ZWQgd2l0aGluIGFuIGBpZiBORl9UQUJMRVNfTkVUREVWYCBjb25kaXRpb24uIE9rYXksIHNvIHRvIGdldCB0aGlzIGZ1bmN0aW9uYWxpdHkgZW5hYmxlZCwgaXQmIzM5O3MgY2xlYXI6IEkgbmVlZCB0byBleHBsaWNpdGx5IGVuYWJsZSBib3RoIGBORl9UQUJMRVNfTkVUREVWYCAqYW5kKiBgTkZUX1JFSkVDVF9ORVRERVZgLiBTZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBOb3csIGJlZm9yZSBJIGNvbW1pdCB0byB0aGF0LCBJJiMzOTtkIGJldHRlciBkb3VibGUtY2hlY2sgYE5GX1RBQkxFU19ORVRERVZgIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb3RoZXIgaW1wbGljYXRpb25zIEkmIzM5O20gbWlzc2luZy4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGF0JiMzOTtzIGV4YWN0bHkgd2hhdCBJIGV4cGVjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX1RBQkxFU19ORVRERVYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTQ3Mj1jb25maWcgTkZfVEFCTEVTX0lORVRcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDc5LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ4MDpjb25maWcgTkZfVEFCTEVTX05FVERFVlxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ4MS1cdGJvb2wgXCYjMzQ7TmV0ZmlsdGVyIG5mX3RhYmxlcyBuZXRkZXYgdGFibGVzIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk2NDkKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIGluc3RydWN0aW9ucywgdGhpbmtpbmcgdGhyb3VnaCB0aGVtIGFzIEkgd291bGQgYXBwcm9hY2ggYSBzaW1pbGFyIHRhc2s6CgoqKkVuYWJsaW5nIE5ldGRldiBGZWF0dXJlcyBmb3IgbmZ0YWJsZXMqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIHRvIGVuYWJsZSBzb21lIG5ldGRldi1zcGVjaWZpYyBmZWF0dXJlcyBmb3IgbmZ0YWJsZXMsIHNwZWNpZmljYWxseSBgTkZfVEFCTEVTX05FVERFVmAgYW5kIGBORlRfUkVKRUNUX05FVERFVmAuIFRoYXQgc291bmRzIGxpa2UgYSBnb29kIGRpcmVjdGlvbiwgcGFydGljdWxhcmx5IGlmIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdHJhZmZpYyBmaWx0ZXJpbmcgYXQgdGhlIG5ldHdvcmsgZGV2aWNlIGxldmVsLiBXZSB3YW50IHRoYXQgZmluZS1ncmFpbmVkIGNvbnRyb2wgZm9yIG1vcmUgcGVyZm9ybWFudCBwYWNrZXQgcHJvY2Vzc2luZy4gTm93LCBiZWZvcmUgd2UgZmxpcCB0aGUgc3dpdGNoIG9uIGBORlRfUkVKRUNUX05FVERFVmAsIHRob3VnaCwgaXQmIzM5O3MgYWx3YXlzIHdpc2UgdG8gY2hlY2sgZm9yIGFueSBkZXBlbmRlbmNpZXMsIGVzcGVjaWFsbHkgd2l0aCBuZnRhYmxlcy4gSXQmIzM5O3Mgc21hcnQgdG8gZG91YmxlIGNoZWNrLCBzbyBsZXQmIzM5O3MgdGFrZSBhIHF1aWNrIGxvb2sgYXQgdGhlIGRlcGVuZGVuY2llcyBmb3IgYE5GVF9SRUpFQ1RfSVBWNGAgc2luY2UgYE5GVF9SRUpFQ1RfTkVUREVWYCB3aWxsIHByb2JhYmx5IHRvdWNoIGlwdjQgYXMgd2VsbC4gTWFraW5nIHN1cmUgd2UgZG9uJiMzOTt0IGludHJvZHVjZSBhbnkgdW5leHBlY3RlZCBjb25mbGljdHMgb3IgYnJlYWsgZXhpc3RpbmcgY29uZmlndXJhdGlvbnMgaXMga2V5IHRvIGEgc3RhYmxlIGRlcGxveW1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORlRfUkVKRUNUX0lQVjQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZz00MD1pZiBORl9UQUJMRVNfSVBWNFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctNDEtXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZzo0Mjpjb25maWcgTkZUX1JFSkVDVF9JUFY0XG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy00My1cdHNlbGVjdCBORl9SRUpFQ1RfSVBWNFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDAzNgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipEZXBlbmRlbmN5IERlZXAgRGl2ZTogSVB2NCBhbmQgSVB2NiBpbiB0aGUgRmlyZXdhbGwgQ29udGV4dCoqCgpSaWdodCwgbGV0JiMzOTtzIHN0YXJ0IHdpdGggdGhpcyBmaXJld2FsbCBjb25maWd1cmF0aW9uLCBJJiMzOTttIHRoaW5raW5nLCBJIGtub3cgYE5GX1RBQkxFU19JUFY0YCBpcyBlc3NlbnRpYWwsIGFuZCBubyBzdXJwcmlzZXMgdGhlcmUsIHRoYXQmIzM5O3MgZXhwZWN0ZWQuIE15IG5leHQgdGhvdWdodCBpcyB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBmdWxsIHBpY3R1cmUsIHNvIEkmIzM5O20gc2hpZnRpbmcgbXkgZm9jdXMgbm93IGFuZCBpbW1lZGlhdGVseSBkaWdnaW5nIGludG8gdGhlIGRlcGVuZGVuY2llcyBvZiBgTkZfVEFCTEVTX0lQVjZgLiBJIG5lZWQgdG8gZW5zdXJlIGEgY29tcGxldGUgYW5kIGNvbXBhdGlibGUgc2V0dXAuIEkgaGF2ZSB0byB0aGluayBhYm91dCBwb3RlbnRpYWwgaW50ZXJkZXBlbmRlbmNpZXMsIG9mIGNvdXJzZS4gSSB3YW50IHRvIGF2b2lkIGFueSBjb25maWd1cmF0aW9uIHN1cnByaXNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX1RBQkxFU19JUFY2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc9Mjk9aWYgTkZfVEFCTEVTXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy0zMC1cbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnOjMxOmNvbmZpZyBORl9UQUJMRVNfSVBWNlxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMzItXHRib29sIFwmIzM0O0lQdjYgbmZfdGFibGVzIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAzNDMKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqTXkgSW1tZWRpYXRlIEFzc2Vzc21lbnQqKgoKQWxyaWdodCwgc28gdGhlIHBocmFzZSAmIzM0O05GVF9SRUpFQ1RfSVBWNiYjMzQ7IGp1c3QgcG9wcGVkIGludG8gbXkgaGVhZC4gTXkgaW5pdGlhbCByZWFjdGlvbiBpcywgdGhpcyBpcyBsaWtlbHkgcmVsYXRlZCB0byBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gYW5kIHNwZWNpZmljYWxseSwgaG93IGEgc3lzdGVtIG9yIGFwcGxpY2F0aW9uIGlzIGhhbmRsaW5nIElQdjYgdHJhZmZpYyBpbiB0aGUgY29udGV4dCBvZiBOb24tRnVuZ2libGUgVG9rZW5zIChORlRzKS4gR2l2ZW4gdGhlIHNwZWNpZmljaXR5IG9mIHRoZSB0ZXJtaW5vbG9neSwgSSYjMzk7bSBhbHJlYWR5IGZvcm11bGF0aW5nIGEgZmV3IGtleSBwb3NzaWJpbGl0aWVzLgoKRmlyc3QsIEkgaW1tZWRpYXRlbHkgY29uc2lkZXIgdGhlIHNlY3VyaXR5IGltcGxpY2F0aW9ucy4gSXMgdGhpcyBhIHJ1bGUgZGVzaWduZWQgdG8gKnJlamVjdCogSVB2NiBjb25uZWN0aW9ucyBvciB0cmFmZmljPyBJZiBzbywgd2h5PyBJcyB0aGlzIHRvIG1pdGlnYXRlIHBvdGVudGlhbCBhdHRhY2sgdmVjdG9ycyBvciB2dWxuZXJhYmlsaXRpZXMgYXNzb2NpYXRlZCB3aXRoIElQdjYgaW1wbGVtZW50YXRpb25zLCBwZXJoYXBzIHRob3NlIGxlc3Mgd2VsbC10ZXN0ZWQgb3IgbW9yZSByZWNlbnRseSBwYXRjaGVkIHRoYW4gdGhlaXIgSVB2NCBjb3VudGVycGFydHMgd2l0aGluIHRoZSBzeXN0ZW0/IEFyZSB0aGVyZSBrbm93biBpc3N1ZXMgdGhhdCBtYWtlIElQdjYgbGVzcyBzZWN1cmUsIG9yIG1vcmUgc3VzY2VwdGlibGUgdG8gY2VydGFpbiB0eXBlcyBvZiBhdHRhY2tzLCB3aXRoaW4gdGhlIHNwZWNpZmljIGFyY2hpdGVjdHVyZSBvciBlbnZpcm9ubWVudCB0aGUgTkZUcyBhcmUgb3BlcmF0aW5nIGluPyBUaGUgaW1wbGljYXRpb25zIGFyZSB3aWRlLgoKU2Vjb25kLCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgY29uc2lkZXJhdGlvbnMuIElzIHJlamVjdGluZyBJUHY2IGEgZGVsaWJlcmF0ZSBvcHRpbWl6YXRpb24/IFBlcmhhcHMgdGhlcmUmIzM5O3MgYSBzcGVjaWZpYyByZWFzb24gSVB2NiBpc24mIzM5O3Qgc3VwcG9ydGVkLCBsaWtlIGRlcGVuZGVuY2llcyBvbiBJUHY0LW9ubHkgaW5mcmFzdHJ1Y3R1cmUgd2l0aGluIHRoZSBORlQmIzM5O3Mgc3lzdGVtLCBvciB0aGF0IHJlamVjdGluZyBJUHY2IGluY3JlYXNlcyB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhlIHN5c3RlbSBpbiBzb21lIHJlZ2FyZC4gSXQgY291bGQgYmUgdGhhdCB0aGUgY3VycmVudCBpbmZyYXN0cnVjdHVyZSBvciBjb2RlYmFzZSByZWxpZXMgbW9yZSBoZWF2aWx5IG9uIElQdjQgZm9yIGludGVybmFsIGNvbW11bmljYXRpb24gb3IgZXh0ZXJuYWwgcXVlcmllcy4KCkZpbmFsbHksIEkmIzM5O20gbWVudGFsbHkgcGFyc2luZyB0aGUgbGFyZ2VyIGNvbnRleHQuIElzIHRoaXMgYSBjb25maWd1cmF0aW9uIGRpcmVjdGl2ZSB3aXRoaW4gYSBmaXJld2FsbCwgYSBsb2FkIGJhbGFuY2VyLCBhIGNvbnRhaW5lciBvcmNoZXN0cmF0aW9uIHN5c3RlbSwgb3Igc29tZSBvdGhlciBuZXR3b3JrIGRldmljZSBvciBhcHBsaWNhdGlvbiBjb250cm9sbGluZyBhY2Nlc3MgdG8gTkZULXJlbGF0ZWQgc2VydmljZXM/IFdoYXQmIzM5O3MgdGhlICpyZWFzb24qIGZvciB0aGlzIHJlamVjdGlvbj8gSXMgaXQgYSBkZWZhdWx0LCBvciBoYXMgaXQgYmVlbiBleHBsaWNpdGx5IGNvbmZpZ3VyZWQ/IElmIGl0JiMzOTtzIGEgc2VjdXJpdHkgbWVhc3VyZSwgaGFzIHRoZSBzeXN0ZW0gcmVjZWl2ZWQgcmVndWxhciBzZWN1cml0eSBhdWRpdHMgdG8gY29uZmlybSBpdHMgZWZmZWN0aXZlbmVzcz8gSWYgaXQmIzM5O3MgZm9yIHBlcmZvcm1hbmNlLCB3aGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9uIHVzZXJzIHRoYXQgZGVwZW5kIG9uIElQdjYgY29ubmVjdGlvbnM/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORlRfUkVKRUNUX0lQVjYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZz0zNj1pZiBORl9UQUJMRVNfSVBWNlxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMzctXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZzozODpjb25maWcgTkZUX1JFSkVDVF9JUFY2XG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy0zOS1cdHNlbGVjdCBORl9SRUpFQ1RfSVBWNlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDg5MwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDIxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFbmFibGluZyBOZXRmaWx0ZXIgUmVqZWN0IEZ1bmN0aW9uYWxpdHkqKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCB0aGlzIE5ldGZpbHRlciByZWplY3QgZnVuY3Rpb25hbGl0eSB3b3JraW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZW5hYmxlIGEgc3VpdGUgb2Ygb3B0aW9uczogYE5GX1RBQkxFU2AsIGBORl9UQUJMRVNfSVBWNGAsIGBORlRfUkVKRUNUX0lQVjRgLCBgTkZfVEFCTEVTX0lQVjZgLCBgTkZUX1JFSkVDVF9JUFY2YCwgYE5GX1RBQkxFU19ORVRERVZgLCBhbmQgYE5GVF9SRUpFQ1RfTkVUREVWYC4gV2FpdCBhIG1pbnV0ZSwgSSBzaG91bGQgYWxzbyBjb25zaWRlciBgTkZfVEFCTEVTX0lORVRgIOKAkyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50IHRvbywgY29uc2lkZXJpbmcgdGhlIGNvbnRleHQuCgpGaXJzdCB0aGluZ3MgZmlyc3QsIEkmIzM5O2xsIGNvbmZpcm0gdGhhdCBgTkZfVEFCTEVTYCBpdHNlbGYgaXMgdGhlIGNvcmUgcmVxdWlyZW1lbnQuIFllcCwgdGhhdCYjMzk7cyB0aGUgYmlnIG9uZS4gSXQgbG9va3MgbGlrZSBpdC4KCk5leHQsIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGNvZGUgY29tcGlsZXMuIFdpbGwgYE5GX1JFSkVDVF9JUFY0YCBhbG9uZSBiZSBzdWZmaWNpZW50PyBZZXMsIGl0IGFwcGVhcnMgc287IHRoYXQgdGFrZXMgY2FyZSBvZiB0aGUgY29tcGlsYXRpb24gb2YgYG5mX3JlamVjdF9pcHY0LmNgLiBIb3dldmVyLCBqdXN0IGNvbXBpbGluZyBpc24mIzM5O3QgZW5vdWdoOyB0aGUgY29kZSBuZWVkcyB0byAqZnVuY3Rpb24qLiBUbyBwcm9wZXJseSByZWFjaCB0aGUgYE5GX0lORVRfSU5HUkVTU2AgaG9vaywgSSBiZWxpZXZlIEkgbmVlZCBgTkZUX1JFSkVDVF9ORVRERVZgLiBJIHNob3VsZCB0YWtlIGEgbG9vayBhdCB0aGUgY29kZSBpbiBgbmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X25ldGRldi5jYCB0byBjb25maXJtIG15IHRoaW5raW5nIGFuZCB1bmRlcnN0YW5kIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mX3NlbmRfdW5yZWFjaCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9uZXRkZXYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNDQ4CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuLi4KCioqRGVlcGVyIERpdmUgaW50byBuZnRfcmVqZWN0X25ldGRldi5jKioKCkhvbGQgb24gYSBtaW51dGUsIHRoaXMgaXMgdGhyb3dpbmcgbWUgb2ZmLiBJIHdhcyB1bmRlciB0aGUgaW1wcmVzc2lvbiB0aGF0IGBuZnRfcmVqZWN0X25ldGRldi5jYCBtYWRlIHVzZSBvZiBgbmZfc2VuZF91bnJlYWNoYCwgYnV0IGxvb2tpbmcgYXQgdGhlIGNvZGUgZGlyZWN0bHksIGl0IGRvZXNuJiMzOTt0IHNlZW0gdG8gY2FsbCBpdC4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGFzc3VtcHRpb24uIExldCBtZSBpbW1lZGlhdGVseSBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcsIGFuZCBjaGVjayB0aGUgc291cmNlIGNvZGUgZm9yIGBuZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfbmV0ZGV2LmNgLiBJIG5lZWQgdG8gZW5zdXJlIEkgaGF2ZSBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIGNvbnRyb2wgZmxvdyB3aXRoaW4gdGhpcyBtb2R1bGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X25ldGRldi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdC8qXG4gICAzOlx0ICogQ29weXJpZ2h0IChjKSAyMDIwIExhdXJhIEdhcmNpYSBMaWViYW5hIFx1MDAzY25ldm9sYUBnbWFpbC5jb21cdTAwM2VcbiAgIDQ6XHQgKiBDb3B5cmlnaHQgKGMpIDIwMjAgSm9zZSBNLiBHdWlzYWRvIFx1MDAzY2d1aWdvbUByaXNldXAubmV0XHUwMDNlXG4gICA1Olx0ICovXG4gICA2Olx0XG4gICA3Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvZXRoZXJkZXZpY2UuaFx1MDAzZVxuICAgODpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4gICA5Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvaW5pdC5oXHUwMDNlXG4gIDEwOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAgMTE6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9uZXRsaW5rLmhcdTAwM2VcbiAgMTI6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9uZXRmaWx0ZXIuaFx1MDAzZVxuICAxMzpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGZpbHRlci9uZl90YWJsZXMuaFx1MDAzZVxuICAxNDpcdCNpbmNsdWRlIFx1MDAzY25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzLmhcdTAwM2VcbiAgMTU6XHQjaW5jbHVkZSBcdTAwM2NuZXQvbmV0ZmlsdGVyL25mdF9yZWplY3QuaFx1MDAzZVxuICAxNjpcdCNpbmNsdWRlIFx1MDAzY25ldC9uZXRmaWx0ZXIvaXB2NC9uZl9yZWplY3QuaFx1MDAzZVxuICAxNzpcdCNpbmNsdWRlIFx1MDAzY25ldC9uZXRmaWx0ZXIvaXB2Ni9uZl9yZWplY3QuaFx1MDAzZVxuICAxODpcdFxuICAxOTpcdHN0YXRpYyB2b2lkIG5mdF9yZWplY3RfcXVldWVfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqbnNrYiwgc3RydWN0IHNrX2J1ZmYgKm9sZHNrYilcbiAgMjA6XHR7XG4gIDIxOlx0XHRkZXZfaGFyZF9oZWFkZXIobnNrYiwgbnNrYi1cdTAwM2VkZXYsIG50b2hzKG9sZHNrYi1cdTAwM2Vwcm90b2NvbCksXG4gIDIyOlx0XHRcdFx0ZXRoX2hkcihvbGRza2IpLVx1MDAzZWhfc291cmNlLCBldGhfaGRyKG9sZHNrYiktXHUwMDNlaF9kZXN0LFxuICAyMzpcdFx0XHRcdG5za2ItXHUwMDNlbGVuKTtcbiAgMjQ6XHRcdGRldl9xdWV1ZV94bWl0KG5za2IpO1xuICAyNTpcdH1cbiAgMjY6XHRcbiAgMjc6XHRzdGF0aWMgdm9pZCBuZnRfcmVqZWN0X25ldGRldl9zZW5kX3Y0X3RjcF9yZXNldChzdHJ1Y3QgbmV0ICpuZXQsXG4gIDI4Olx0XHRcdFx0XHRcdFx0c3RydWN0IHNrX2J1ZmYgKm9sZHNrYixcbiAgMjk6XHRcdFx0XHRcdFx0XHRjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuICAzMDpcdFx0XHRcdFx0XHRcdGludCBob29rKVxuICAzMTpcdHtcbiAgMzI6XHRcdHN0cnVjdCBza19idWZmICpuc2tiO1xuICAzMzpcdFxuICAzNDpcdFx0bnNrYiA9IG5mX3JlamVjdF9za2JfdjRfdGNwX3Jlc2V0KG5ldCwgb2xkc2tiLCBkZXYsIGhvb2spO1xuICAzNTpcdFx0aWYgKCFuc2tiKVxuICAzNjpcdFx0XHRyZXR1cm47XG4gIDM3Olx0XG4gIDM4Olx0XHRuZnRfcmVqZWN0X3F1ZXVlX3htaXQobnNrYiwgb2xkc2tiKTtcbiAgMzk6XHR9XG4gIDQwOlx0XG4gIDQxOlx0c3RhdGljIHZvaWQgbmZ0X3JlamVjdF9uZXRkZXZfc2VuZF92NF91bnJlYWNoKHN0cnVjdCBuZXQgKm5ldCxcbiAgNDI6XHRcdFx0XHRcdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKm9sZHNrYixcbiAgNDM6XHRcdFx0XHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiAgNDQ6XHRcdFx0XHRcdFx0ICAgICAgaW50IGhvb2ssIHU4IGNvZGUpXG4gIDQ1Olx0e1xuICA0NjpcdFx0c3RydWN0IHNrX2J1ZmYgKm5za2I7XG4gIDQ3Olx0XG4gIDQ4Olx0XHRuc2tiID0gbmZfcmVqZWN0X3NrYl92NF91bnJlYWNoKG5ldCwgb2xkc2tiLCBkZXYsIGhvb2ssIGNvZGUpO1xuICA0OTpcdFx0aWYgKCFuc2tiKVxuICA1MDpcdFx0XHRyZXR1cm47XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNDUyCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGl2aW5nIGludG8gdGhlIE5ldHdvcmsgRmlsdGVyaW5nIExvZ2ljKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBuZnRfcmVqZWN0X25ldGRldi5jYCBmaWxlIGFuZCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIGNhbGxpbmcgYG5mX3JlamVjdF9za2JfdjRfdW5yZWFjaGAuIEludGVyZXN0aW5nLiBXYWl0IGEgc2Vjb25kLCB0aGUgcGF0Y2ggbm90ZXMgYXJlIHBvaW50aW5nIG1lIHRvd2FyZHMgYG5mX3NlbmRfdW5yZWFjaGAsIG5vdCB0aGF0IGZ1bmN0aW9uIEkgaW5pdGlhbGx5IHNwb3R0ZWQuIFRoaXMgaXMgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIGZvbGxvd2luZyB0aGUgY29ycmVjdCB0cmFpbCwgc28gbGV0JiMzOTtzIGRvdWJsZS1jaGVjayBgbmZfc2VuZF91bnJlYWNoYCBhbmQgZW5zdXJlIHRoYXQmIzM5O3MgdHJ1bHkgdGhlIGtleSBhcmVhIGltcGFjdGVkIGJ5IHRoZSBwYXRjaC4gSSYjMzk7bGwgbmVlZCB0byByZXRyYWNlIG15IHN0ZXBzIGEgYml0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjc0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl9zZW5kX3VucmVhY2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYz0zNDQ9RVhQT1JUX1NZTUJPTF9HUEwobmZfc2VuZF9yZXNldCk7XG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYy0zNDUtXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYzozNDY6dm9pZCBuZl9zZW5kX3VucmVhY2goc3RydWN0IHNrX2J1ZmYgKnNrYl9pbiwgaW50IGNvZGUsIGludCBob29rKVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMtMzQ3LXtcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYy0zNzItfVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmM6MzczOkVYUE9SVF9TWU1CT0xfR1BMKG5mX3NlbmRfdW5yZWFjaCk7XG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYy0zNzQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyOTI2CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgYG5mX3NlbmRfdW5yZWFjaGAgQ2FsbCBDaGFpbioqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBUaGlzIGRvZXNuJiMzOTt0IG1ha2Ugc2Vuc2UuIElmIGBuZnRfcmVqZWN0X25ldGRldmAgKmRvZXNuJiMzOTt0KiBjYWxsIGBuZl9zZW5kX3VucmVhY2hgLCB0aGVuIGhvdyBvbiBlYXJ0aCBjYW4gYGhvb2sgPT0gTkZfSU5FVF9JTkdSRVNTYCBldmVyIGJlIHRydWUgd2l0aGluIGBuZl9zZW5kX3VucmVhY2hgPyBUaGF0IGNvbmRpdGlvbiBmZWVscyBmdW5kYW1lbnRhbGx5IGJyb2tlbi4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgY2FsbCBjaGFpbiBhbmQgZmlndXJlIG91dCB3aGF0JiMzOTtzIGdvaW5nIG9uLiBMZXQgbWUgc3RhcnQgYnkgbWV0aWN1bG91c2x5IGV4YW1pbmluZyBhbGwgdGhlIHBsYWNlcyBpbiB0aGUgY29kZSB3aGVyZSBgbmZfc2VuZF91bnJlYWNoYCBpcyBhY3R1YWxseSBpbnZva2VkLiBUaGlzIHNob3VsZCBpbGx1bWluYXRlIHRoZSBwYXRoIGFuZCBjbGFyaWZ5IHRoaXMgYXBwYXJlbnQgY29udHJhZGljdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdyBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjc2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl9zZW5kX3VucmVhY2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmM9MzE9cmVqZWN0X3RnKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jLTM3LVx0Y2FzZSBJUFRfSUNNUF9ORVRfVU5SRUFDSEFCTEU6XG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jOjM4Olx0XHRuZl9zZW5kX3VucmVhY2goc2tiLCBJQ01QX05FVF9VTlJFQUNILCBob29rKTtcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtMzktXHRcdGJyZWFrO1xubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYy00MC1cdGNhc2UgSVBUX0lDTVBfSE9TVF9VTlJFQUNIQUJMRTpcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmM6NDE6XHRcdG5mX3NlbmRfdW5yZWFjaChza2IsIElDTVBfSE9TVF9VTlJFQUNILCBob29rKTtcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtNDItXHRcdGJyZWFrO1xubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYy00My1cdGNhc2UgSVBUX0lDTVBfUFJPVF9VTlJFQUNIQUJMRTpcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmM6NDQ6XHRcdG5mX3NlbmRfdW5yZWFjaChza2IsIElDTVBfUFJPVF9VTlJFQUNILCBob29rKTtcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtNDUtXHRcdGJyZWFrO1xubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYy00Ni1cdGNhc2UgSVBUX0lDTVBfUE9SVF9VTlJFQUNIQUJMRTpcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmM6NDc6XHRcdG5mX3NlbmRfdW5yZWFjaChza2IsIElDTVBfUE9SVF9VTlJFQUNILCBob29rKTtcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtNDgtXHRcdGJyZWFrO1xubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYy00OS1cdGNhc2UgSVBUX0lDTVBfTkVUX1BST0hJQklURUQ6XG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jOjUwOlx0XHRuZl9zZW5kX3VucmVhY2goc2tiLCBJQ01QX05FVF9BTk8sIGhvb2spO1xubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYy01MS1cdFx0YnJlYWs7XG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jLTUyLVx0Y2FzZSBJUFRfSUNNUF9IT1NUX1BST0hJQklURUQ6XG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jOjUzOlx0XHRuZl9zZW5kX3VucmVhY2goc2tiLCBJQ01QX0hPU1RfQU5PLCBob29rKTtcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtNTQtXHRcdGJyZWFrO1xubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYy01NS1cdGNhc2UgSVBUX0lDTVBfQURNSU5fUFJPSElCSVRFRDpcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmM6NTY6XHRcdG5mX3NlbmRfdW5yZWFjaChza2IsIElDTVBfUEtUX0ZJTFRFUkVELCBob29rKTtcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtNTctXHRcdGJyZWFrO1xuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jPTM0ND1FWFBPUlRfU1lNQk9MX0dQTChuZl9zZW5kX3Jlc2V0KTtcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jLTM0NS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jOjM0Njp2b2lkIG5mX3NlbmRfdW5yZWFjaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luLCBpbnQgY29kZSwgaW50IGhvb2spXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYy0zNDcte1xuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jLTM3Mi19XG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYzozNzM6RVhQT1JUX1NZTUJPTF9HUEwobmZfc2VuZF91bnJlYWNoKTtcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jLTM3NC1cbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pcHY0LmM9MTk9c3RhdGljIHZvaWQgbmZ0X3JlamVjdF9pcHY0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZnRfcmVqZWN0X2lwdjQuYy0yNi1cdGNhc2UgTkZUX1JFSkVDVF9JQ01QX1VOUkVBQ0g6XG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pcHY0LmM6Mjc6XHRcdG5mX3NlbmRfdW5yZWFjaChwa3QtXHUwMDNlc2tiLCBwcml2LVx1MDAzZWljbXBfY29kZSwgbmZ0X2hvb2socGt0KSk7XG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pcHY0LmMtMjgtXHRcdGJyZWFrO1xuLS1cbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jPTM1PXJlamVjdF90ZzYoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuLS1cbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jLTQxLVx0Y2FzZSBJUDZUX0lDTVA2X05PX1JPVVRFOlxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmM6NDI6XHRcdG5mX3NlbmRfdW5yZWFjaDYobmV0LCBza2IsIElDTVBWNl9OT1JPVVRFLCB4dF9ob29rbnVtKHBhcikpO1xubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNDMtXHRcdGJyZWFrO1xubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNDQtXHRjYXNlIElQNlRfSUNNUDZfQURNX1BST0hJQklURUQ6XG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYzo0NTpcdFx0bmZfc2VuZF91bnJlYWNoNihuZXQsIHNrYiwgSUNNUFY2X0FETV9QUk9ISUJJVEVELFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNDYtXHRcdFx0XHQgeHRfaG9va251bShwYXIpKTtcbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYy00OC1cdGNhc2UgSVA2VF9JQ01QNl9OT1RfTkVJR0hCT1VSOlxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmM6NDk6XHRcdG5mX3NlbmRfdW5yZWFjaDYobmV0LCBza2IsIElDTVBWNl9OT1RfTkVJR0hCT1VSLFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNTAtXHRcdFx0XHQgeHRfaG9va251bShwYXIpKTtcbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYy01Mi1cdGNhc2UgSVA2VF9JQ01QNl9BRERSX1VOUkVBQ0g6XG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYzo1MzpcdFx0bmZfc2VuZF91bnJlYWNoNihuZXQsIHNrYiwgSUNNUFY2X0FERFJfVU5SRUFDSCxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jLTU0LVx0XHRcdFx0IHh0X2hvb2tudW0ocGFyKSk7XG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNTYtXHRjYXNlIElQNlRfSUNNUDZfUE9SVF9VTlJFQUNIOlxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmM6NTc6XHRcdG5mX3NlbmRfdW5yZWFjaDYobmV0LCBza2IsIElDTVBWNl9QT1JUX1VOUkVBQ0gsXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYy01OC1cdFx0XHRcdCB4dF9ob29rbnVtKHBhcikpO1xuLS1cbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jLTY2LVx0Y2FzZSBJUDZUX0lDTVA2X1BPTElDWV9GQUlMOlxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmM6Njc6XHRcdG5mX3NlbmRfdW5yZWFjaDYobmV0LCBza2IsIElDTVBWNl9QT0xJQ1lfRkFJTCwgeHRfaG9va251bShwYXIpKTtcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jLTY4LVx0XHRicmVhaztcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jLTY5LVx0Y2FzZSBJUDZUX0lDTVA2X1JFSkVDVF9ST1VURTpcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jOjcwOlx0XHRuZl9zZW5kX3VucmVhY2g2KG5ldCwgc2tiLCBJQ01QVjZfUkVKRUNUX1JPVVRFLFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNzEtXHRcdFx0XHQgeHRfaG9va251bShwYXIpKTtcbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjYuYz00MTI9c3RhdGljIGJvb2wgcmVqZWN0Nl9jc3VtX29rKHN0cnVjdCBza19idWZmICpza2IsIGludCBob29rKVxuLS1cbm5ldC9pcHY2L25ldGZpbHRlci9uZl9yZWplY3RfaXB2Ni5jLTQzMy1cbm5ldC9pcHY2L25ldGZpbHRlci9uZl9yZWplY3RfaXB2Ni5jOjQzNDp2b2lkIG5mX3NlbmRfdW5yZWFjaDYoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luLFxubmV0L2lwdjYvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY2LmMtNDM1LVx0XHQgICAgICB1bnNpZ25lZCBjaGFyIGNvZGUsIHVuc2lnbmVkIGludCBob29rbnVtKVxuLS1cbm5ldC9pcHY2L25ldGZpbHRlci9uZl9yZWplY3RfaXB2Ni5jLTQ0Ny19XG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjYuYzo0NDg6RVhQT1JUX1NZTUJPTF9HUEwobmZfc2VuZF91bnJlYWNoNik7XG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjYuYy00NDktXG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyL25mdF9yZWplY3RfaXB2Ni5jPTE5PXN0YXRpYyB2b2lkIG5mdF9yZWplY3RfaXB2Nl9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pcHY2LmMtMjYtXHRjYXNlIE5GVF9SRUpFQ1RfSUNNUF9VTlJFQUNIOlxubmV0L2lwdjYvbmV0ZmlsdGVyL25mdF9yZWplY3RfaXB2Ni5jOjI3Olx0XHRuZl9zZW5kX3VucmVhY2g2KG5mdF9uZXQocGt0KSwgcGt0LVx1MDAzZXNrYiwgcHJpdi1cdTAwM2VpY21wX2NvZGUsXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pcHY2LmMtMjgtXHRcdFx0XHQgbmZ0X2hvb2socGt0KSk7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYz0xNz1zdGF0aWMgdm9pZCBuZnRfcmVqZWN0X2luZXRfZXZhbChjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsXG4tLVxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy0yNi1cdFx0Y2FzZSBORlRfUkVKRUNUX0lDTVBfVU5SRUFDSDpcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmM6Mjc6XHRcdFx0bmZfc2VuZF91bnJlYWNoKHBrdC1cdTAwM2Vza2IsIHByaXYtXHUwMDNlaWNtcF9jb2RlLFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy0yOC1cdFx0XHRcdFx0bmZ0X2hvb2socGt0KSk7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy0zNC1cdFx0Y2FzZSBORlRfUkVKRUNUX0lDTVBYX1VOUkVBQ0g6XG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jOjM1Olx0XHRcdG5mX3NlbmRfdW5yZWFjaChwa3QtXHUwMDNlc2tiLFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy0zNi1cdFx0XHRcdFx0bmZ0X3JlamVjdF9pY21wX2NvZGUocHJpdi1cdTAwM2VpY21wX2NvZGUpLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmMtNDMtXHRcdGNhc2UgTkZUX1JFSkVDVF9JQ01QX1VOUkVBQ0g6XG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jOjQ0Olx0XHRcdG5mX3NlbmRfdW5yZWFjaDYobmZ0X25ldChwa3QpLCBwa3QtXHUwMDNlc2tiLFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy00NS1cdFx0XHRcdFx0IHByaXYtXHUwMDNlaWNtcF9jb2RlLCBuZnRfaG9vayhwa3QpKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jLTUxLVx0XHRjYXNlIE5GVF9SRUpFQ1RfSUNNUFhfVU5SRUFDSDpcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmM6NTI6XHRcdFx0bmZfc2VuZF91bnJlYWNoNihuZnRfbmV0KHBrdCksIHBrdC1cdTAwM2Vza2IsXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jLTUzLVx0XHRcdFx0XHQgbmZ0X3JlamVjdF9pY21wdjZfY29kZShwcml2LVx1MDAzZWljbXBfY29kZSksXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1ODk3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogOTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIE5ldGZpbHRlciBSZWplY3Rpb24gTWVjaGFuaXNtKioKCk9rYXksIHNvIEkmIzM5O20gdHJhY2luZyB0aHJvdWdoIHRoaXMgbmV0ZmlsdGVyIHNldHVwIGFuZCBpdCBsb29rcyBsaWtlIGBuZnRfcmVqZWN0X2luZXRgIGlzIHRoZSBrZXkgZnVuY3Rpb24gaGVyZSwgYW5kIHRoYXQmIzM5O3MgY2FsbGluZyBgbmZfc2VuZF91bnJlYWNoYC4gR290IGl0LiBOb3csIHNpbmNlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIGBpbmV0YCBmYW1pbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoaXMgcmVqZWN0aW9uIGlzIGFjdHVhbGx5IGhhcHBlbmluZyBpbiB0aGUgcGFja2V0IGZsb3cuIERvZXMgdGhlIGBpbmV0YCBmYW1pbHkgZXZlbiBoYXZlIGFuIGluZ3Jlc3MgaG9vaz8gQSBxdWljayBtZW50YWwgY2hlY2suLi4geWVzLCBvZiBjb3Vyc2UsIGBORl9JTkVUX0lOR1JFU1NgLiBBbHJpZ2h0LCBsZXQgbWUganVzdCBjb25maXJtIHRoYXQgd2l0aCBhIGdsYW5jZSBhdCBgaW5jbHVkZS91YXBpL2xpbnV4L25ldGZpbHRlci5oYCB0byByZWZyZXNoIG15IG1lbW9yeSBhbmQgbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcgY3J1Y2lhbCBhYm91dCB0aGUgaW5ncmVzcyBwb2ludC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkZfSU5FVF9JTkdSRVNTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS91YXBpL2xpbnV4L25ldGZpbHRlci5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvdWFwaS9saW51eC9uZXRmaWx0ZXIuaD00Mj1lbnVtIG5mX2luZXRfaG9va3Mge1xuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9uZXRmaWx0ZXIuaC00OC1cdE5GX0lORVRfTlVNSE9PS1MsXG5pbmNsdWRlL3VhcGkvbGludXgvbmV0ZmlsdGVyLmg6NDk6XHRORl9JTkVUX0lOR1JFU1MgPSBORl9JTkVUX05VTUhPT0tTLFxuaW5jbHVkZS91YXBpL2xpbnV4L25ldGZpbHRlci5oLTUwLX07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2Mjk3CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIE5ldHdvcmsgVHJhZmZpYyBSZWplY3Rpb24gaW4gdGhlIGluZXQgRmFtaWx5KioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIG5ldHdvcmsgZmlsdGVyaW5nIHNpdHVhdGlvbi4gSXQgc2VlbXMgcHJldHR5IGNsZWFyIHRoYXQgYE5GX0lORVRfSU5HUkVTU2AgaXMgYSBsZWdpdGltYXRlIGhvb2sgZm9yIHRoZSBgaW5ldGAgZmFtaWx5LCB3aGljaCBpcyB3aGF0IEkmIzM5O20gaW50ZXJlc3RlZCBpbiBoZXJlLiBUaGF0IG1ha2VzIHNlbnNlLCBhbmQgSSBjYW4gY29uZmlybSB0aGF0IGBuZnRfcmVqZWN0X2luZXRgIGlzIHRoZSBhcHByb3ByaWF0ZSBmdW5jdGlvbiB0byBhdHRhY2ggdG8gdGhlIGluZ3Jlc3MgaG9vaywgd2hpY2ggaXMgZ29vZC4gVGhhdCBjb25maXJtcyB0aGF0IGBORlRfUkVKRUNUX0lORVRgIGlzIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiBJIG5lZWQgdG8gbGV2ZXJhZ2UgdGhpcyB3aXRoaW4gdGhlIGBpbmV0YCBmYW1pbHkuIE5vdywgSSBzaG91bGQgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgcGljdHVyZSwgc28gbmV4dCBJJiMzOTttIGdvaW5nIHRvIGRvdWJsZSBjaGVjayBhbmQgZXhhbWluZSBgTkZUX1JFSkVDVF9JTkVUYCYjMzk7cyBkZXBlbmRlbmNpZXMgdG8gbWFrZSBjZXJ0YWluIHRoYXQgSSBoYXZlIGV2ZXJ5dGhpbmcgcHJvcGVybHkgY29uc2lkZXJlZCBmb3IgYSBnb29kIGltcGxlbWVudGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZUX1JFSkVDVF9JTkVUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz01Nzg9Y29uZmlnIE5GVF9SRUpFQ1Rcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNTg1LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjU4Njpjb25maWcgTkZUX1JFSkVDVF9JTkVUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNTg3LVx0ZGVwZW5kcyBvbiBORl9UQUJMRVNfSU5FVFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjY2MAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDEwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgdGhlIE5ldGZpbHRlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gc2V0dGluZyB1cCBhIG5ldGZpbHRlciBjb25maWd1cmF0aW9uIGhlcmUsIGFuZCBpdCBsb29rcyBsaWtlIEkmIzM5O2xsIG5lZWQgYm90aCBgTkZfVEFCTEVTX0lORVRgIGFuZCBgTkZUX1JFSkVDVF9JTkVUYC4gTm93LCBJIHJlY2FsbCB0aGF0IGBORl9UQUJMRVNfSU5FVGAgbmF0dXJhbGx5IHB1bGxzIGluIGBORl9UQUJMRVNfSVBWNGAsIHRoYXQgbWFrZXMgc2Vuc2UuIEFuZCBJJiMzOTttIHByZXR0eSBzdXJlIHRoYXQgYE5GVF9SRUpFQ1RfSU5FVGAgcmVsaWVzIG9uIGBuZl9zZW5kX3VucmVhY2hgLiBUaGUgcmVhbCBxdWVzdGlvbiBpczogZG9lcyBgTkZUX1JFSkVDVF9JTkVUYCBpbXBsaWNpdGx5IHNlbGVjdCBgTkZfUkVKRUNUX0lQVjRgPyBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGRlcGVuZGVuY3kgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBCZXN0IHRvIGRpdmUgYmFjayBpbnRvIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIGFuZCB2ZXJpZnkgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRob3NlIG9wdGlvbnMgZm9yIGBORlRfUkVKRUNUX0lORVRgIGFnYWluLiBHb3R0YSBnZXQgdGhlIGNvbmZpZyByaWdodCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1ODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDU4MDpcdFx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIG5mX3RhYmxlcyByZWplY3Qgc3VwcG9ydFwmIzM0O1xuIDU4MTpcdFx0aGVscFxuIDU4MjpcdFx0ICBUaGlzIG9wdGlvbiBhZGRzIHRoZSBcJiMzNDtyZWplY3RcJiMzNDsgZXhwcmVzc2lvbiB0aGF0IHlvdSBjYW4gdXNlIHRvXG4gNTgzOlx0XHQgIGV4cGxpY2l0bHkgZGVueSBhbmQgbm90aWZ5IHZpYSBUQ1AgcmVzZXQvSUNNUCBpbmZvcm1hdGlvbmFsIGVycm9yc1xuIDU4NDpcdFx0ICB1bmFsbG93ZWQgdHJhZmZpYy5cbiA1ODU6XHRcbiA1ODY6XHRjb25maWcgTkZUX1JFSkVDVF9JTkVUXG4gNTg3Olx0XHRkZXBlbmRzIG9uIE5GX1RBQkxFU19JTkVUXG4gNTg4Olx0XHRkZWZhdWx0IE5GVF9SRUpFQ1RcbiA1ODk6XHRcdHRyaXN0YXRlXG4gNTkwOlx0XG4gNTkxOlx0Y29uZmlnIE5GVF9DT01QQVRcbiA1OTI6XHRcdGRlcGVuZHMgb24gTkVURklMVEVSX1hUQUJMRVNcbiA1OTM6XHRcdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciB4X3RhYmxlcyBvdmVyIG5mX3RhYmxlcyBtb2R1bGVcJiMzNDtcbiA1OTQ6XHRcdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcyMDAKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA0NTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTmF2aWdhdGluZyB0aGUgQ29uZmlndXJhdGlvbiBDb251bmRydW06IEEgRGVlcCBEaXZlIGludG8gTmV0ZmlsdGVyJiMzOTtzIFJlamVjdCBNZWNoYW5pc21zKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzdW1wdGlvbiB3YXMgdGhhdCBgTkZUX1JFSkVDVF9JTkVUYCBkaXJlY3RseSBpbXBsaWVzIHRoZSBzZWxlY3Rpb24gb2YgYE5GX1JFSkVDVF9JUFY0YCwgYnV0IHRoYXQmIzM5O3Mgbm90IGV4cGxpY2l0bHkgdGhlIGNhc2UuIEluc3RlYWQsIGl0IHNlZW1zIGBORlRfUkVKRUNUX0lQVjRgICppdHNlbGYqIGlzIGNob3NlbiB2aWEgYE5GVF9SRUpFQ1RfSVBWNGAsIGFuZCB0aGF0ICpkZWZhdWx0cyogdG8gYE5GVF9SRUpFQ1RgIGlmIHRoZSBJUHY0IHRhYmxlIHN1cHBvcnQgKGBORl9UQUJMRVNfSVBWNGApIGlzIGVuYWJsZWQuCgpTaW5jZSBgTkZfVEFCTEVTX0lORVRgIGluY2x1ZGVzIGBORl9UQUJMRVNfSVBWNGAsIGFuZCBgTkZUX1JFSkVDVF9JTkVUYCBkZWZhdWx0cyB0byBgTkZUX1JFSkVDVGAsIGl0IGxvb2tzIGxpa2UgaWYgd2UgZW5hYmxlIGBORlRfUkVKRUNUYCwgdGhlbiBgTkZUX1JFSkVDVF9JUFY0YCB3aWxsIGJlIGVuYWJsZWQgYnkgZGVmYXVsdC4gR2l2ZW4gdGhpcywgYE5GVF9SRUpFQ1RfSVBWNGAgd2lsbCBzZWxlY3QgYE5GX1JFSkVDVF9JUFY0YC4KClRoZXJlZm9yZSwgdG8gZW5zdXJlIGV2ZXJ5dGhpbmcmIzM5O3MgcHJvcGVybHkgY29uZmlndXJlZCwgSSB0aGluayB3ZSBuZWVkIHRoZSBmb2xsb3dpbmc6CgoqICAgYE5GX1RBQkxFU2AKKiAgIGBORl9UQUJMRVNfSU5FVGAKKiAgIGBORlRfUkVKRUNUYAoqICAgYE5GVF9SRUpFQ1RfSU5FVGAKKiAgIGBORlRfUkVKRUNUX0lQVjRgCiogICBgTkZfUkVKRUNUX0lQVjRgCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc2FmZSwgbGV0JiMzOTtzIGVudW1lcmF0ZSB0aGVzZSBhZ2FpbjogYE5GX1RBQkxFU2AsIGBORl9UQUJMRVNfSU5FVGAsIGBORlRfUkVKRUNUYCwgYE5GVF9SRUpFQ1RfSU5FVGAsIGBORlRfUkVKRUNUX0lQVjRgLCBhbmQgYE5GX1JFSkVDVF9JUFY0YC4KCk5vdywgYSBxdWljayBjaGVjayBvbiBgTkZfVEFCTEVTX05FVERFVmAuLi4gbGV0JiMzOTtzIGtlZXAgdGhhdCBpbiBtaW5kLCBqdXN0IGluIGNhc2UuIFRoZSBwYXRjaCBpbnZvbHZlcyBgaG9vayA9PSBORl9JTkVUX0lOR1JFU1NgLiBgTkZfSU5FVF9JTkdSRVNTYCBpcyB1c2VkIGluIHRoZSBgaW5ldGAgZmFtaWx5IGluZ3Jlc3MgaG9vaywgYW5kIHRoZSBgbmV0ZGV2YCBmYW1pbHkgaW5ncmVzcyBob29rLCB0aGF0JiMzOTtzIHdoeSBpdCBpcyByZWxldmFudCBoZXJlLiBCdXQgYG5mdF9yZWplY3RfbmV0ZGV2YCBkb2VzbiYjMzk7dCB1c2UgYG5mX3NlbmRfdW5yZWFjaGAuIEl0IHVzZXMgYG5mX3JlamVjdF9za2JfdjRfdW5yZWFjaGAuIFNvLCBgbmZfc2VuZF91bnJlYWNoYCBpcyBvbmx5IGNhbGxlZCBieSBgbmZ0X3JlamVjdF9pbmV0YCwgYG5mdF9yZWplY3RfaXB2NGAsIGFuZCBgaXB0X1JFSkVDVGAuCgpIYW5nIG9uIGEgc2Vjb25kLiBDYW4gYG5mdF9yZWplY3RfaXB2NGAgZXZlbiBhdHRhY2ggdG8gYE5GX0lORVRfSU5HUkVTU2A/IFRoZSBJUHY0IGZhbWlseSAqZG9lc24mIzM5O3QqIGhhdmUgYW4gaW5ncmVzcyBob29rLCByaWdodD8gT3IgZG9lcyBpdD8gVGltZSB0byB2ZXJpZnkgaWYgdGhlIElQdjQgZmFtaWx5ICphY3R1YWxseSogaGFzIGFuIGluZ3Jlc3MgaG9vay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkZfSU5FVF9JTkdSRVNTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV0ZmlsdGVyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYz0zNDY9dm9pZCBuZl9zZW5kX3VucmVhY2goc3RydWN0IHNrX2J1ZmYgKnNrYl9pbiwgaW50IGNvZGUsIGludCBob29rKVxuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jLTM1OC1cdC8qIEluZXQgaW5ncmVzcyBydW5zIGJlZm9yZSBJUHY0IGluaXRpYWxpemVzIElQQ0IuICovXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYzozNTk6XHRpZiAoaG9vayA9PSBORl9JTkVUX0lOR1JFU1MpIHtcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jLTM2MC1cdFx0bWVtc2V0KElQQ0Ioc2tiX2luKSwgMCwgc2l6ZW9mKCpJUENCKHNrYl9pbikpKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg0MzUKCQkJCQkJCW91dHB1dDogMTU0CgkJCQkJCQl0aG91Z2h0czogMTMzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipDb25maWd1cmF0aW9uIGFuZCBDb2RlIEFuYWx5c2lzIGZvciBOZXRmaWx0ZXIgSVB2NCBSZWplY3QgSGFuZGxpbmcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhlIHJlbGV2YW50IGNvZGUgZm9yIHRoaXMgcGF0Y2ggcmVzaWRlcyBzb2xlbHkgd2l0aGluIGBuZl9yZWplY3RfaXB2NC5jYC4gSSYjMzk7dmUgdHJhY2VkIHRoZSBwYXRoOiBgTkZfSU5FVF9JTkdSRVNTYCBpcyB0cmlnZ2VyZWQgdmlhIGBuZnRfcmVqZWN0X2luZXRgLCB3aGljaCwgYXMgd2Uga25vdywgbGl2ZXMgaW4gYG5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmNgLiBUaHVzLCBgTkZUX1JFSkVDVF9JTkVUYCBzZWVtcyBsaWtlIHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24gdG8gZW5hYmxlIGhlcmUsIHJpZ2h0PwoKTGV0JiMzOTtzIHF1aWNrbHkgY29uZmlybS4gWWVzLCBlbmFibGluZyBgTkZUX1JFSkVDVF9JTkVUYCBkb2VzIGluZGVlZCBicmluZyBpbiBgbmZ0X3JlamVjdF9pbmV0LmNgLCB3aGljaCwgaW4gdHVybiwgY2FsbHMgYG5mX3NlbmRfdW5yZWFjaGAuCgpTbywgaGVyZSYjMzk7cyB0aGUgY29uZmlnIGxpc3QgSSYjMzk7dmUgY29tZSB1cCB3aXRoIHNvIGZhcjogYE5GX1RBQkxFU2AsIGBORl9UQUJMRVNfSU5FVGAsIGBORlRfUkVKRUNUYCwgYE5GVF9SRUpFQ1RfSU5FVGAsIGFuZCBgTkZfUkVKRUNUX0lQVjRgLgoKTGV0JiMzOTtzIHNlZSBpZiBgTkZfUkVKRUNUX0lQVjRgIGlzIGEgdmlzaWJsZSBjb25maWcgLSB5ZXAsIGl0JiMzOTtzIGEgdHJpc3RhdGUgb3B0aW9uIGZvciAmIzM0O0lQdjQgcGFja2V0IHJlamVjdGlvbi4mIzM0OwoKTm93LCB3aGF0IGFib3V0IGBORlRfUkVKRUNUX0lORVRgPyBBaCwgaXQgaGFzIG5vIHByb21wdC4gVGhhdCYjMzk7cyBmaW5lOyBpdCYjMzk7cyBkZWZhdWx0ZWQgaWYgd2UgaGF2ZSBgTkZUX1JFSkVDVGAgZW5hYmxlZCwgYW5kIGRlcGVuZHMgb24gYE5GX1RBQkxFU19JTkVUYC4gVGhhdCYjMzk7cyBpbXBvcnRhbnQuIFNvLCB3ZSBkZWZpbml0aXZlbHkgbmVlZCBgTkZUX1JFSkVDVGAgYW5kIGBORl9UQUJMRVNfSU5FVGAuCgpMZXQmIzM5O3MgZG91YmxlLWNoZWNrIGBORl9UQUJMRVNfSU5FVGAuIEl0JiMzOTtzIGEgYm9vbGVhbiBvcHRpb24gbGFiZWxlZCAmIzM0O05ldGZpbHRlciBuZl90YWJsZXMgbWl4ZWQgSVB2NC9JUHY2IHRhYmxlcyBzdXBwb3J0LiYjMzQ7IEdvb2QsIHdlIGVuYWJsZSB0aGF0LgoKQW5kIGBORl9UQUJMRVNgIGl0c2VsZj8gWWVwLCBhIHRyaXN0YXRlICYjMzQ7TmV0ZmlsdGVyIG5mX3RhYmxlcyBzdXBwb3J0JiMzNDsuIFNvIHRoYXQgZ29lcyBpbiBhcyB3ZWxsLgoKU28gd2UgYXJlIGNvbmZpZGVudDogdGhlIHJlcXVpcmVkIGNvbmZpZ3MgYXJlIGBORl9UQUJMRVNgLCBgTkZfVEFCTEVTX0lORVRgLCBgTkZUX1JFSkVDVGAsIGFuZCBgTkZfUkVKRUNUX0lQVjRgLiBCdXQgaW4gY2FzZSB0aGUgY29uZmlnIHN5c3RlbSBuZWVkcyBpdCBleHBsaWNpdGx5LCBsZXQmIzM5O3MgaW5jbHVkZSBgTkZUX1JFSkVDVF9JTkVUYC4KCk5vdywgYXJlIHRoZXJlIGFueSBvdGhlciByZWxldmFudCBjb25maWdzPyBUaGUgb25lcyBmb3IgaXB0YWJsZXMsIGBJUF9ORl9UQVJHRVRfUkVKRUNUYCwgYElQX05GX0lQVEFCTEVTYCwgYW5kIGBJUF9ORl9GSUxURVJgIG1pZ2h0IGJlIHJlbGV2YW50IGZvciBpcHRhYmxlcyBidXQgZm9yIG5mdGFibGVzIHRoaXMgaXMgZW5vdWdoLiBUaGUgcGF0aCB0byB0aGUgcmVsZXZhbnQgY29kZSBpcyB2aWEgbmZ0YWJsZXMuCgpUaGUgZnVuY3Rpb24gd2UmIzM5O3JlIGZvY3VzaW5nIG9uIGlzIGBuZl9zZW5kX3VucmVhY2hgLiBJcyB0aGVyZSBhbnkgb3RoZXIgZnVuY3Rpb24/IE5vcGUsIHRoZSBwYXRjaCAqb25seSogbW9kaWZpZXMgYG5mX3NlbmRfdW5yZWFjaGAuIFNvIHRoYXQmIzM5O3MgdGhlIG9ubHkgc3ltYm9sLgoKT2theSwgbGV0JiMzOTtzIHJldmlldyB0aGUgcGF0Y2ggb25lIG1vcmUgdGltZSwganVzdCB0byBjb25maXJtOgpgYGBjCiAJaWYgKCFza2JfZHN0KHNrYl9pbikgJmFtcDsmYW1wOyBuZl9yZWplY3RfZmlsbF9za2JfZHN0KHNrYl9pbikgJmx0OyAwKQogCQlyZXR1cm47CiAKJiM0MzsJLyogSW5ldCBpbmdyZXNzIHJ1bnMgYmVmb3JlIElQdjQgaW5pdGlhbGl6ZXMgSVBDQi4gKi8KJiM0MzsJaWYgKGhvb2sgPT0gTkZfSU5FVF9JTkdSRVNTKSB7CiYjNDM7CQltZW1zZXQoSVBDQihza2JfaW4pLCAwLCBzaXplb2YoKklQQ0Ioc2tiX2luKSkpOwomIzQzOwkJSVBDQihza2JfaW4pLSZndDtpaWYgPSBza2JfaW4tJmd0O3NrYl9paWY7CiYjNDM7CX0KJiM0MzsKIAlpZiAoc2tiX2NzdW1fdW5uZWNlc3Nhcnkoc2tiX2luKSB8fAogCSAgICAhbmZfcmVqZWN0X3ZlcmlmeV9jc3VtKHNrYl9pbiwgZGF0YW9mZiwgcHJvdG8pKSB7CmBgYAoKUmlnaHQsIGl0IGluaXRpYWxpemVzIHRoZSBJUHY0IGNvbnRyb2wgYmxvY2sgKGBJUENCYCkgd2hlbiBgaG9vayA9PSBORl9JTkVUX0lOR1JFU1NgLiBUaGlzIGFkZHJlc3NlcyBhIHBvdGVudGlhbCB1c2Ugb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgbGF0ZXIgaW4gdGhlIGZ1bmN0aW9uLCB1c2VkIGluIGBpY21wX3NlbmRgIG9yIGBpcF9yb3V0ZV9vdXRwdXRfa2V5YCwgYW5kIGlzIGEgY2xlYXIgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCB3ZSBuZWVkIHRvIGZ1enouCgpUaGlzIGZpeCBpcyByZWFjaGFibGUgdXNpbmcgdGhlIG5mdGFibGVzIGBpbmV0YCBmYW1pbHkgaW5ncmVzcyBob29rLgoKU28sIHRoZSBmb2N1cyBpcyBkZWZpbml0aXZlbHkgYG5mX3NlbmRfdW5yZWFjaGAuCgpDb25maWctd2lzZSwgbGV0JiMzOTtzIGFsc28gYmUgZXhwbGljaXQgYWJvdXQgYE5GVF9SRUpFQ1RfSU5FVGAuCgpgTkZfUkVKRUNUX0lQVjRgIGlzIGEgdHJpc3RhdGUsIHNvIHRoYXQmIzM5O3MgZ29vZC4KClJlZ2FyZGluZyBzeXprYWxsZXIsIGFsdGhvdWdoIGBORlRfUkVKRUNUX0lORVRgIGhhcyBubyBwcm9tcHQsIGVuYWJsaW5nIHRoZSBwYXJlbnQgY29uZmlnLCBgTkZUX1JFSkVDVGAgYW5kIGl0cyBkZXBlbmRlbmN5IGBORl9UQUJMRVNfSU5FVGAgc2hvdWxkIGJlIGVub3VnaCwgYnV0LCBJJiMzOTtsbCBwcm92aWRlIGBORl9UQUJMRVNgLCBgTkZfVEFCTEVTX0lORVRgLCBgTkZUX1JFSkVDVGAsIGBORl9SRUpFQ1RfSVBWNGAsIGBORlRfUkVKRUNUX0lORVRgIGp1c3QgaW4gY2FzZS4KCk9uZSBsYXN0IGNoZWNrOiBgbmZfc2VuZF91bnJlYWNoYCYjMzk7cyBzaWduYXR1cmUKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjg2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZfVEFCTEVTJiMzNDssCiAgICAmIzM0O05GX1RBQkxFU19JTkVUJiMzNDssCiAgICAmIzM0O05GVF9SRUpFQ1QmIzM0OywKICAgICYjMzQ7TkZUX1JFSkVDVF9JTkVUJiMzNDssCiAgICAmIzM0O05GX1JFSkVDVF9JUFY0JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZfc2VuZF91bnJlYWNoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBuZl9zZW5kX3VucmVhY2hgIHRvIGluaXRpYWxpemUgdGhlIElQdjQgY29udHJvbCBibG9jayAoSVBDQikgd2hlbiBjYWxsZWQgZnJvbSB0aGUgYE5GX0lORVRfSU5HUkVTU2AgaG9vay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldGZpbHRlciBJUHY0IHJlamVjdCBoYW5kbGluZyBsb2dpYywgZml4aW5nIGEgcG90ZW50aWFsIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFjY2Vzcy4gSXQgaXMgcmVhY2hhYmxlIHZpYSB0aGUgbmZ0YWJsZXMgYGluZXRgIGZhbWlseSBpbmdyZXNzIGhvb2suJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX1RBQkxFUyYjMzQ7LAogICAgJiMzNDtORl9UQUJMRVNfSU5FVCYjMzQ7LAogICAgJiMzNDtORlRfUkVKRUNUJiMzNDssCiAgICAmIzM0O05GVF9SRUpFQ1RfSU5FVCYjMzQ7LAogICAgJiMzNDtORl9SRUpFQ1RfSVBWNCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25mX3NlbmRfdW5yZWFjaCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgbmZfc2VuZF91bnJlYWNoYCB0byBpbml0aWFsaXplIHRoZSBJUHY0IGNvbnRyb2wgYmxvY2sgKElQQ0IpIHdoZW4gY2FsbGVkIGZyb20gdGhlIGBORl9JTkVUX0lOR1JFU1NgIGhvb2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXRmaWx0ZXIgSVB2NCByZWplY3QgaGFuZGxpbmcgbG9naWMsIGZpeGluZyBhIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSBhY2Nlc3MuIEl0IGlzIHJlYWNoYWJsZSB2aWEgdGhlIG5mdGFibGVzIGBpbmV0YCBmYW1pbHkgaW5ncmVzcyBob29rLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6MzY6MDcuNjUxNjY5OTgxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA0MzE1MTIwNzE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX1RBQkxFU1wiLFxuICAgIFwiTkZfVEFCTEVTX0lORVRcIixcbiAgICBcIk5GVF9SRUpFQ1RcIixcbiAgICBcIk5GVF9SRUpFQ1RfSU5FVFwiLFxuICAgIFwiTkZfUkVKRUNUX0lQVjRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZl9zZW5kX3VucmVhY2hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgbmZfc2VuZF91bnJlYWNoYCB0byBpbml0aWFsaXplIHRoZSBJUHY0IGNvbnRyb2wgYmxvY2sgKElQQ0IpIHdoZW4gY2FsbGVkIGZyb20gdGhlIGBORl9JTkVUX0lOR1JFU1NgIGhvb2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXRmaWx0ZXIgSVB2NCByZWplY3QgaGFuZGxpbmcgbG9naWMsIGZpeGluZyBhIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSBhY2Nlc3MuIEl0IGlzIHJlYWNoYWJsZSB2aWEgdGhlIG5mdGFibGVzIGBpbmV0YCBmYW1pbHkgaW5ncmVzcyBob29rLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNjowNy42NTE2NzY3OTFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2ODY2Njk4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDBlZmYxYTExMTVhMTZkMjAyZTk2MjM0ODQwMzk5YzBhNWVlNjI3NDdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgNCAxMDozNjowNiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYyBiL25ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jXFxuaW5kZXggNDYyNmRjNDY4MDhmMy4uNDkzM2Y2NTEzOGQ2YiAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuY1xcbisrKyBiL25ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jXFxuQEAgLTM1NSw2ICszNTUsMTIgQEAgdm9pZCBuZl9zZW5kX3VucmVhY2goc3RydWN0IHNrX2J1ZmYgKnNrYl9pbiwgaW50IGNvZGUsIGludCBob29rKVxcbiBcXHRpZiAoIXNrYl9kc3Qoc2tiX2luKSBcXHUwMDI2XFx1MDAyNiBuZl9yZWplY3RfZmlsbF9za2JfZHN0KHNrYl9pbikgXFx1MDAzYyAwKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbitcXHQvKiBJbmV0IGluZ3Jlc3MgcnVucyBiZWZvcmUgSVB2NCBpbml0aWFsaXplcyBJUENCLiAqL1xcbitcXHRpZiAoaG9vayA9PSBORl9JTkVUX0lOR1JFU1MpIHtcXG4rXFx0XFx0bWVtc2V0KElQQ0Ioc2tiX2luKSwgMCwgc2l6ZW9mKCpJUENCKHNrYl9pbikpKTtcXG4rXFx0XFx0SVBDQihza2JfaW4pLVxcdTAwM2VpaWYgPSBza2JfaW4tXFx1MDAzZXNrYl9paWY7XFxuK1xcdH1cXG4rXFxuIFxcdGlmIChza2JfY3N1bV91bm5lY2Vzc2FyeShza2JfaW4pIHx8XFxuIFxcdCAgICAhbmZfcmVqZWN0X3ZlcmlmeV9jc3VtKHNrYl9pbiwgZGF0YW9mZiwgcHJvdG8pKSB7XFxuIFxcdFxcdGljbXBfc2VuZChza2JfaW4sIElDTVBfREVTVF9VTlJFQUNILCBjb2RlLCAwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6MzY6MDguMTIxMzg4ODc3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MjAzODQ1Mzg3MTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX1RBQkxFU1wiLFxuICAgIFwiTkZfVEFCTEVTX0lORVRcIixcbiAgICBcIk5GVF9SRUpFQ1RcIixcbiAgICBcIk5GVF9SRUpFQ1RfSU5FVFwiLFxuICAgIFwiTkZfUkVKRUNUX0lQVjRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZl9zZW5kX3VucmVhY2hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgbmZfc2VuZF91bnJlYWNoYCB0byBpbml0aWFsaXplIHRoZSBJUHY0IGNvbnRyb2wgYmxvY2sgKElQQ0IpIHdoZW4gY2FsbGVkIGZyb20gdGhlIGBORl9JTkVUX0lOR1JFU1NgIGhvb2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXRmaWx0ZXIgSVB2NCByZWplY3QgaGFuZGxpbmcgbG9naWMsIGZpeGluZyBhIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSBhY2Nlc3MuIEl0IGlzIHJlYWNoYWJsZSB2aWEgdGhlIG5mdGFibGVzIGBpbmV0YCBmYW1pbHkgaW5ncmVzcyBob29rLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwZWZmMWExMTE1YTE2ZDIwMmU5NjIzNDg0MDM5OWMwYTVlZTYyNzQ3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgNCAxMDozNjowNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jIGIvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmNcbmluZGV4IDQ2MjZkYzQ2ODA4ZjMuLjQ5MzNmNjUxMzhkNmIgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuY1xuKysrIGIvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmNcbkBAIC0zNTUsNiArMzU1LDEyIEBAIHZvaWQgbmZfc2VuZF91bnJlYWNoKHN0cnVjdCBza19idWZmICpza2JfaW4sIGludCBjb2RlLCBpbnQgaG9vaylcbiBcdGlmICghc2tiX2RzdChza2JfaW4pIFx1MDAyNlx1MDAyNiBuZl9yZWplY3RfZmlsbF9za2JfZHN0KHNrYl9pbikgXHUwMDNjIDApXG4gXHRcdHJldHVybjtcbiBcbitcdC8qIEluZXQgaW5ncmVzcyBydW5zIGJlZm9yZSBJUHY0IGluaXRpYWxpemVzIElQQ0IuICovXG4rXHRpZiAoaG9vayA9PSBORl9JTkVUX0lOR1JFU1MpIHtcbitcdFx0bWVtc2V0KElQQ0Ioc2tiX2luKSwgMCwgc2l6ZW9mKCpJUENCKHNrYl9pbikpKTtcbitcdFx0SVBDQihza2JfaW4pLVx1MDAzZWlpZiA9IHNrYl9pbi1cdTAwM2Vza2JfaWlmO1xuK1x0fVxuK1xuIFx0aWYgKHNrYl9jc3VtX3VubmVjZXNzYXJ5KHNrYl9pbikgfHxcbiBcdCAgICAhbmZfcmVqZWN0X3ZlcmlmeV9jc3VtKHNrYl9pbiwgZGF0YW9mZiwgcHJvdG8pKSB7XG4gXHRcdGljbXBfc2VuZChza2JfaW4sIElDTVBfREVTVF9VTlJFQUNILCBjb2RlLCAwKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM2OjA4LjEyMTM5MTI1N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MTAxODQ5MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOZXRmaWx0ZXIgSVB2NCBSZWplY3QgSGFuZGxpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGluIGBuZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuY2AuIEl0J3MgZm9jdXNlZCBvbiB0aGUgYG5mX3NlbmRfdW5yZWFjaGAgZnVuY3Rpb24sIHdoaWNoIGlzIHRoZSBoZWFydCBvZiBob3cgSVB2NCBwYWNrZXRzIGFyZSByZWplY3RlZCBieSBOZXRmaWx0ZXIuIEZyb20gd2hhdCBJIHNlZSwgdGhlIHBhdGNoIGludHJvZHVjZXMgYSBjb25kaXRpb25hbCBjaGVjazogaXQgdGVzdHMgaWYgdGhlIGBob29rYCB2YXJpYWJsZSBpcyBlcXVhbCB0byBgTkZfSU5FVF9JTkdSRVNTYC4gSWYgdGhhdCBjaGVjayBwYXNzZXMsIGl0IHRoZW4gZ29lcyBvbiB0byBpbml0aWFsaXplIGBJUENCKHNrYl9pbilgLlxuXG5Fc3NlbnRpYWxseSwgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uIHRvIHRoZSBuZXRmaWx0ZXIgSVB2NCByZWplY3QgYmVoYXZpb3IuIEkgbmVlZCB0byBkaWcgaW4gZnVydGhlciB0byBmaWd1cmUgb3V0ICp3aHkqIHRoaXMgaW5pdGlhbGl6YXRpb24gaXMgaGFwcGVuaW5nIHdoZW4gaW5ncmVzcyBwYWNrZXRzIGFyZSBiZWluZyByZWplY3RlZC4gTXkgaW5zdGluY3QgaXMgdGhhdCB0aGlzIGluaXRpYWxpemF0aW9uIGlzIGNydWNpYWwgd2hlbiBpbmdyZXNzIHBhY2tldHMgYXJlIGJlaW5nIHJlamVjdGVkLCBidXQgdGhpcyBpcyBzb21ldGhpbmcgdGhhdCBuZWVkcyBhIGRlZXBlciBsb29rLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGBJUENCKHNrYl9pbilgIHJlcHJlc2VudHMgYW5kIGhvdyBpdHMgaW5pdGlhbGl6YXRpb24gYXQgdGhpcyBwb2ludCBpbXBhY3RzIHRoZSBvdmVyYWxsIGZsb3cgb2YgdGhlIHBhY2tldC4gTGV0J3MgZGVsdmUgaW50byB0aGUgZnVuY3Rpb24gdG8gYmUgY2VydGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIwMywiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM2OjEyLjAzMTU4MDYxN1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDUxMjM1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl9zZW5kX3VucmVhY2hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmM9MzQ0PUVYUE9SVF9TWU1CT0xfR1BMKG5mX3NlbmRfcmVzZXQpO1xcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jLTM0NS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYzozNDY6dm9pZCBuZl9zZW5kX3VucmVhY2goc3RydWN0IHNrX2J1ZmYgKnNrYl9pbiwgaW50IGNvZGUsIGludCBob29rKVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jLTM0Ny17XFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYy0zNzItfVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jOjM3MzpFWFBPUlRfU1lNQk9MX0dQTChuZl9zZW5kX3VucmVhY2gpO1xcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jLTM3NC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6MzY6MTIuMDg2MDk4ODI1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ3MjkwNjczMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgZm9jdXNpbmcgb24gZmlndXJpbmcgb3V0IHRob3NlIGBuZl9zZW5kX3VucmVhY2hgIGNvbmZpZ3VyYXRpb25zOlxuXG4qKkFuYWx5emluZyBgbmZfc2VuZF91bnJlYWNoYCBDb25maWd1cmF0aW9uIFJlcXVpcmVtZW50cyoqXG5cbk9rYXksIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCBjb25maWd1cmF0aW9ucyBhcmUgZXNzZW50aWFsIGZvciBgbmZfc2VuZF91bnJlYWNoYCB0byBmdW5jdGlvbiBwcm9wZXJseS4gTXkgaW1tZWRpYXRlIHRoaW5raW5nIGdvZXMgdG8gdGhlIG5ldHdvcmtpbmcgc3RhY2ssIG5hdHVyYWxseS4gSeKAmW0gc3RhcnRpbmcgd2l0aCB0aGUgYXNzdW1wdGlvbiB0aGF0IHRoaXMgbGlrZWx5IHRvdWNoZXMgdXBvbiB0aGUgTmV0ZmlsdGVyIGZyYW1ld29yaywgc28gdGhlIHN0YW5kYXJkIE5ldGZpbHRlciBtb2R1bGUgbG9hZGluZyBjb25zaWRlcmF0aW9ucyBhcmUgZGVmaW5pdGVseSBvbiB0aGUgcmFkYXIuIEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQgYGlwdGFibGVzYCBvciBgbmZ0YWJsZXNgIChkZXBlbmRpbmcgb24gdGhlIHN5c3RlbSwgb2YgY291cnNlKSBhcmUgY29uZmlndXJlZCBjb3JyZWN0bHkgYW5kIHRoYXQgdGhlIG5lY2Vzc2FyeSBOZXRmaWx0ZXIgbW9kdWxlcyBhcmUgbG9hZGVkLiBBbnkgcHJlLXJlcXVpc2l0ZXMgZm9yIHRoZSB0YXJnZXQgY29uZmlndXJhdGlvbiAoZS5nLiwgc3BlY2lmaWMga2VybmVsIHZlcnNpb25zLCBmZWF0dXJlcyBlbmFibGVkIGR1cmluZyBjb21waWxhdGlvbikgYXJlIGtleSBjb25zaWRlcmF0aW9ucywgb2YgY291cnNlLCBhcyB3ZWxsLlxuXG5J4oCZbSBhbHNvIGFzc3VtaW5nIHRoYXQgdGhlIHNwZWNpZmljICpiZWhhdmlvciogb2YgYG5mX3NlbmRfdW5yZWFjaGAgaXMgY29udGV4dC1kZXBlbmRlbnQuIFdoYXQgdHJpZ2dlcnMgaXRzIHVzZT8gV2hhdCBraW5kIG9mIElDTVAgbWVzc2FnZSBnZXRzIHNlbnQgYmFjaz8gS25vd2luZyBob3cgdGhlIGFwcGxpY2F0aW9uLCBvciB0aGUgc3lzdGVtLCAqdXNlcyogYG5mX3NlbmRfdW5yZWFjaGAgaXMgZ29pbmcgdG8gYmUgdml0YWwgdG8gdW5kZXJzdGFuZGluZyBpdHMgZGVwZW5kZW5jaWVzLiBBcmUgdGhlcmUgc3BlY2lmaWMgcm91dGluZyB0YWJsZXMgaXQgaW50ZXJhY3RzIHdpdGg/IEFueSBpbnRlcmFjdGlvbnMgd2l0aCBjb25uZWN0aW9uIHRyYWNraW5nIChjb25udHJhY2spPyBUaGlzIHdpbGwgcmVxdWlyZSBhIGRlZXAgZGl2ZSB0byBpZGVudGlmeSBhbGwgdGhlIHBvc3NpYmlsaXRpZXMsIG9mIGNvdXJzZS5cblxuQmV5b25kIHRoZSBpbW1lZGlhdGUgY29uZmlndXJhdGlvbiwgSSBuZWVkIHRvIHRoaW5rIGFib3V0IHBvdGVudGlhbCBpbnRlcmFjdGlvbnMgd2l0aCBvdGhlciBrZXJuZWwgbW9kdWxlcy4gQXJlIHRoZXJlIGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIgbmV0d29yayBpbnRlcmZhY2VzIG9yIHN1YnN5c3RlbXM/IEFyZSB0aGVyZSBhbnkga25vd24gY29tcGF0aWJpbGl0eSBpc3N1ZXMgd2l0aCBvdGhlciBmZWF0dXJlcywgbGlrZSBOQVQgb3IgVlBOcz8gVGhlIGJyb2FkZXIgY29udGV4dCBtYXR0ZXJzLiBJIG5lZWQgdG8gdHJlYXQgdGhpcyBhcyBtb3JlIHRoYW4ganVzdCBhIHNwZWNpZmljIG1vZHVsZSBjb25maWd1cmF0aW9uOyBpdCdzIGEgcGFydCBvZiB0aGUgb3ZlcmFsbCBuZXR3b3JrIGFyY2hpdGVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjgwOCwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM2OjE2LjU1OTAwODc2N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTA5MzQzNDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfc2VuZF91bnJlYWNoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYz0zMT1yZWplY3RfdGcoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYy0zNy1cXHRjYXNlIElQVF9JQ01QX05FVF9VTlJFQUNIQUJMRTpcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jOjM4OlxcdFxcdG5mX3NlbmRfdW5yZWFjaChza2IsIElDTVBfTkVUX1VOUkVBQ0gsIGhvb2spO1xcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtMzktXFx0XFx0YnJlYWs7XFxubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYy00MC1cXHRjYXNlIElQVF9JQ01QX0hPU1RfVU5SRUFDSEFCTEU6XFxubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYzo0MTpcXHRcXHRuZl9zZW5kX3VucmVhY2goc2tiLCBJQ01QX0hPU1RfVU5SRUFDSCwgaG9vayk7XFxubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYy00Mi1cXHRcXHRicmVhaztcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jLTQzLVxcdGNhc2UgSVBUX0lDTVBfUFJPVF9VTlJFQUNIQUJMRTpcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jOjQ0OlxcdFxcdG5mX3NlbmRfdW5yZWFjaChza2IsIElDTVBfUFJPVF9VTlJFQUNILCBob29rKTtcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jLTQ1LVxcdFxcdGJyZWFrO1xcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtNDYtXFx0Y2FzZSBJUFRfSUNNUF9QT1JUX1VOUkVBQ0hBQkxFOlxcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmM6NDc6XFx0XFx0bmZfc2VuZF91bnJlYWNoKHNrYiwgSUNNUF9QT1JUX1VOUkVBQ0gsIGhvb2spO1xcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtNDgtXFx0XFx0YnJlYWs7XFxubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYy00OS1cXHRjYXNlIElQVF9JQ01QX05FVF9QUk9ISUJJVEVEOlxcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmM6NTA6XFx0XFx0bmZfc2VuZF91bnJlYWNoKHNrYiwgSUNNUF9ORVRfQU5PLCBob29rKTtcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jLTUxLVxcdFxcdGJyZWFrO1xcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtNTItXFx0Y2FzZSBJUFRfSUNNUF9IT1NUX1BST0hJQklURUQ6XFxubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYzo1MzpcXHRcXHRuZl9zZW5kX3VucmVhY2goc2tiLCBJQ01QX0hPU1RfQU5PLCBob29rKTtcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jLTU0LVxcdFxcdGJyZWFrO1xcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtNTUtXFx0Y2FzZSBJUFRfSUNNUF9BRE1JTl9QUk9ISUJJVEVEOlxcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmM6NTY6XFx0XFx0bmZfc2VuZF91bnJlYWNoKHNrYiwgSUNNUF9QS1RfRklMVEVSRUQsIGhvb2spO1xcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtNTctXFx0XFx0YnJlYWs7XFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYz0zNDQ9RVhQT1JUX1NZTUJPTF9HUEwobmZfc2VuZF9yZXNldCk7XFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMtMzQ1LVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jOjM0Njp2b2lkIG5mX3NlbmRfdW5yZWFjaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luLCBpbnQgY29kZSwgaW50IGhvb2spXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMtMzQ3LXtcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jLTM3Mi19XFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmM6MzczOkVYUE9SVF9TWU1CT0xfR1BMKG5mX3NlbmRfdW5yZWFjaCk7XFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMtMzc0LVxcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaXB2NC5jPTE5PXN0YXRpYyB2b2lkIG5mdF9yZWplY3RfaXB2NF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZnRfcmVqZWN0X2lwdjQuYy0yNi1cXHRjYXNlIE5GVF9SRUpFQ1RfSUNNUF9VTlJFQUNIOlxcbm5ldC9pcHY0L25ldGZpbHRlci9uZnRfcmVqZWN0X2lwdjQuYzoyNzpcXHRcXHRuZl9zZW5kX3VucmVhY2gocGt0LVxcdTAwM2Vza2IsIHByaXYtXFx1MDAzZWljbXBfY29kZSwgbmZ0X2hvb2socGt0KSk7XFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaXB2NC5jLTI4LVxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmM9MzU9cmVqZWN0X3RnNihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXFxuLS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYy00MS1cXHRjYXNlIElQNlRfSUNNUDZfTk9fUk9VVEU6XFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmM6NDI6XFx0XFx0bmZfc2VuZF91bnJlYWNoNihuZXQsIHNrYiwgSUNNUFY2X05PUk9VVEUsIHh0X2hvb2tudW0ocGFyKSk7XFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNDMtXFx0XFx0YnJlYWs7XFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNDQtXFx0Y2FzZSBJUDZUX0lDTVA2X0FETV9QUk9ISUJJVEVEOlxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jOjQ1OlxcdFxcdG5mX3NlbmRfdW5yZWFjaDYobmV0LCBza2IsIElDTVBWNl9BRE1fUFJPSElCSVRFRCxcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYy00Ni1cXHRcXHRcXHRcXHQgeHRfaG9va251bShwYXIpKTtcXG4tLVxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jLTQ4LVxcdGNhc2UgSVA2VF9JQ01QNl9OT1RfTkVJR0hCT1VSOlxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jOjQ5OlxcdFxcdG5mX3NlbmRfdW5yZWFjaDYobmV0LCBza2IsIElDTVBWNl9OT1RfTkVJR0hCT1VSLFxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jLTUwLVxcdFxcdFxcdFxcdCB4dF9ob29rbnVtKHBhcikpO1xcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNTItXFx0Y2FzZSBJUDZUX0lDTVA2X0FERFJfVU5SRUFDSDpcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYzo1MzpcXHRcXHRuZl9zZW5kX3VucmVhY2g2KG5ldCwgc2tiLCBJQ01QVjZfQUREUl9VTlJFQUNILFxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jLTU0LVxcdFxcdFxcdFxcdCB4dF9ob29rbnVtKHBhcikpO1xcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNTYtXFx0Y2FzZSBJUDZUX0lDTVA2X1BPUlRfVU5SRUFDSDpcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYzo1NzpcXHRcXHRuZl9zZW5kX3VucmVhY2g2KG5ldCwgc2tiLCBJQ01QVjZfUE9SVF9VTlJFQUNILFxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jLTU4LVxcdFxcdFxcdFxcdCB4dF9ob29rbnVtKHBhcikpO1xcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNjYtXFx0Y2FzZSBJUDZUX0lDTVA2X1BPTElDWV9GQUlMOlxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jOjY3OlxcdFxcdG5mX3NlbmRfdW5yZWFjaDYobmV0LCBza2IsIElDTVBWNl9QT0xJQ1lfRkFJTCwgeHRfaG9va251bShwYXIpKTtcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYy02OC1cXHRcXHRicmVhaztcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYy02OS1cXHRjYXNlIElQNlRfSUNNUDZfUkVKRUNUX1JPVVRFOlxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jOjcwOlxcdFxcdG5mX3NlbmRfdW5yZWFjaDYobmV0LCBza2IsIElDTVBWNl9SRUpFQ1RfUk9VVEUsXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNzEtXFx0XFx0XFx0XFx0IHh0X2hvb2tudW0ocGFyKSk7XFxuLS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjYuYz00MTI9c3RhdGljIGJvb2wgcmVqZWN0Nl9jc3VtX29rKHN0cnVjdCBza19idWZmICpza2IsIGludCBob29rKVxcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY2LmMtNDMzLVxcbm5ldC9pcHY2L25ldGZpbHRlci9uZl9yZWplY3RfaXB2Ni5jOjQzNDp2b2lkIG5mX3NlbmRfdW5yZWFjaDYoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luLFxcbm5ldC9pcHY2L25ldGZpbHRlci9uZl9yZWplY3RfaXB2Ni5jLTQzNS1cXHRcXHQgICAgICB1bnNpZ25lZCBjaGFyIGNvZGUsIHVuc2lnbmVkIGludCBob29rbnVtKVxcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY2LmMtNDQ3LX1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjYuYzo0NDg6RVhQT1JUX1NZTUJPTF9HUEwobmZfc2VuZF91bnJlYWNoNik7XFxubmV0L2lwdjYvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY2LmMtNDQ5LVxcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL25mdF9yZWplY3RfaXB2Ni5jPTE5PXN0YXRpYyB2b2lkIG5mdF9yZWplY3RfaXB2Nl9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcXG4tLVxcbm5ldC9pcHY2L25ldGZpbHRlci9uZnRfcmVqZWN0X2lwdjYuYy0yNi1cXHRjYXNlIE5GVF9SRUpFQ1RfSUNNUF9VTlJFQUNIOlxcbm5ldC9pcHY2L25ldGZpbHRlci9uZnRfcmVqZWN0X2lwdjYuYzoyNzpcXHRcXHRuZl9zZW5kX3VucmVhY2g2KG5mdF9uZXQocGt0KSwgcGt0LVxcdTAwM2Vza2IsIHByaXYtXFx1MDAzZWljbXBfY29kZSxcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pcHY2LmMtMjgtXFx0XFx0XFx0XFx0IG5mdF9ob29rKHBrdCkpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYz0xNz1zdGF0aWMgdm9pZCBuZnRfcmVqZWN0X2luZXRfZXZhbChjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jLTI2LVxcdFxcdGNhc2UgTkZUX1JFSkVDVF9JQ01QX1VOUkVBQ0g6XFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYzoyNzpcXHRcXHRcXHRuZl9zZW5kX3VucmVhY2gocGt0LVxcdTAwM2Vza2IsIHByaXYtXFx1MDAzZWljbXBfY29kZSxcXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jLTI4LVxcdFxcdFxcdFxcdFxcdG5mdF9ob29rKHBrdCkpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy0zNC1cXHRcXHRjYXNlIE5GVF9SRUpFQ1RfSUNNUFhfVU5SRUFDSDpcXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jOjM1OlxcdFxcdFxcdG5mX3NlbmRfdW5yZWFjaChwa3QtXFx1MDAzZXNrYixcXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jLTM2LVxcdFxcdFxcdFxcdFxcdG5mdF9yZWplY3RfaWNtcF9jb2RlKHByaXYtXFx1MDAzZWljbXBfY29kZSksXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jLTQzLVxcdFxcdGNhc2UgTkZUX1JFSkVDVF9JQ01QX1VOUkVBQ0g6XFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYzo0NDpcXHRcXHRcXHRuZl9zZW5kX3VucmVhY2g2KG5mdF9uZXQocGt0KSwgcGt0LVxcdTAwM2Vza2IsXFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy00NS1cXHRcXHRcXHRcXHRcXHQgcHJpdi1cXHUwMDNlaWNtcF9jb2RlLCBuZnRfaG9vayhwa3QpKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmMtNTEtXFx0XFx0Y2FzZSBORlRfUkVKRUNUX0lDTVBYX1VOUkVBQ0g6XFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYzo1MjpcXHRcXHRcXHRuZl9zZW5kX3VucmVhY2g2KG5mdF9uZXQocGt0KSwgcGt0LVxcdTAwM2Vza2IsXFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy01My1cXHRcXHRcXHRcXHRcXHQgbmZ0X3JlamVjdF9pY21wdjZfY29kZShwcml2LVxcdTAwM2VpY21wX2NvZGUpLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNjoxNi42Njk5NDgwMTRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTEyNzU1MzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUgd2hhdCdzIG9uIG15IG1pbmQgcmVnYXJkaW5nIHRoaXMgYG5mX3NlbmRfdW5yZWFjaGAgZnVuY3Rpb24uXG5cbioqQW5hbHl6aW5nIGBuZl9zZW5kX3VucmVhY2hgIFVzYWdlKipcblxuUmlnaHQsIHNvIHRoaXMgYG5mX3NlbmRfdW5yZWFjaGAgZnVuY3Rpb24gaGFzIGJlZW4gZXhwb3J0ZWQgYW5kLCBpbXBvcnRhbnRseSwgaXQncyBiZWluZyAqdXNlZCogaW4gYGlwdF9SRUpFQ1QuY2AsIGBuZnRfcmVqZWN0X2lwdjQuY2AsIGFuZCBgbmZ0X3JlamVjdF9pbmV0LmNgLiBUaGF0J3MgdGhlIGtleS4gS25vd2luZyB3aGVyZSBpdCdzICp1c2VkKiBnaXZlcyBhIHNpZ25pZmljYW50IGluc2lnaHQuIFRoaXMgbWVhbnMgaXQncyBwcmV0dHkgY29yZSB0byBzZW5kaW5nIFwidW5yZWFjaGFibGVcIiBJQ01QL1RDUCByZXNwb25zZXMgaW4gdGhvc2UgbmV0d29yayBmaWx0ZXJpbmcgY29udGV4dHMuIE5vdywgc2luY2UgSSdtIHRyeWluZyB0byB3cmFwIG15IGhlYWQgYXJvdW5kIHRoaXMsIHRoZSBsb2dpY2FsIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIGBuZl9yZWplY3RfaXB2NC5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBmdW5jdGlvbidzIHBhcmFtZXRlcnMgYXJlIHNldCwgb3IgbWF5YmUgaG93IGl0IGludGVncmF0ZXMgd2l0aCB0aGUgdW5kZXJseWluZyBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5NDEsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNjoyMS41ODI3MDcyMDNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUyNTgwNjMzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mX3JlamVjdF9pcHY0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L25ldGZpbHRlci9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9uZXRmaWx0ZXIvTWFrZWZpbGU9MTA9b2JqLSQoQ09ORklHX05GX1RQUk9YWV9JUFY0KSArPSBuZl90cHJveHlfaXB2NC5vXFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTItIyByZWplY3RcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTM6b2JqLSQoQ09ORklHX05GX1JFSkVDVF9JUFY0KSArPSBuZl9yZWplY3RfaXB2NC5vXFxubmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlLTE0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNjoyMS44MzUyOTM2OTZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjMwNzg3MDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIGEgTmV0d29yayBGaWx0ZXJpbmcgQ29uZmlndXJhdGlvbiBSZXF1aXJlbWVudCoqXG5cblJpZ2h0LCBzbyBJIHNlZSB0aGlzIGBDT05GSUdfTkZfUkVKRUNUX0lQVjRgIGZsYWcgaXMgc2hvd2luZyB1cC4gT2J2aW91c2x5LCB0aGF0IHN1Z2dlc3RzIHdlIG5lZWQgdGhlIElQdjQgbmV0ZmlsdGVyIHJlamVjdCBmdW5jdGlvbmFsaXR5IGVuYWJsZWQuIEJlZm9yZSBJIGdvIHRvbyBkZWVwLCBJIHNob3VsZCBjb25maXJtIGV4YWN0bHkgd2hlcmUgdGhpcyBvcHRpb24gaXMgZGVmaW5lZCBhbmQgaG93IGl0IHJlbGF0ZXMgdG8gdGhlIHJlc3Qgb2YgdGhlIG5ldGZpbHRlciBjb25maWd1cmF0aW9uLiBMZXQncyBkaXZlIHN0cmFpZ2h0IGludG8gYG5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnYC4gVGhhdCdzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIGNoZWNrIGZvciBgTkZfUkVKRUNUX0lQVjRgIGFuZCBpdHMgZGVwZW5kZW5jaWVzLiBUaGlzIEtjb25maWcgZmlsZSB3aWxsIGdpdmUgbWUgdGhlIGNsZWFyZXN0IHBpY3R1cmUgb2Ygd2hhdCB0aGlzIGZsYWcgYWN0dWFsbHkgY29udHJvbHMgYW5kIHdoYXQgb3RoZXIgb3B0aW9ucyBtaWdodCBuZWVkIHRvIGJlIGNvbnNpZGVyZWQgb3IgYWRqdXN0ZWQgYWxvbmdzaWRlIGl0LiBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgaW1wbGljYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MzQ5LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6MzY6MjUuMDY2MDgyNjc3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NzY1MTM1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZfUkVKRUNUX0lQVjRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc9ODc9Y29uZmlnIE5GX0xPR19JUFY0XFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy05NC1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZzo5NTpjb25maWcgTkZfUkVKRUNUX0lQVjRcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy05Ni1cXHR0cmlzdGF0ZSBcXFwiSVB2NCBwYWNrZXQgcmVqZWN0aW9uXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNjoyNS4xNTM3Mzk0ODRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE1NDI1OTgwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IERlY2lwaGVyaW5nIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIEknbSBkaXZpbmcgaW4uIFRoZSBwcmltYXJ5IHF1ZXN0aW9uIGhlcmUgaXM6IHdoYXQgZmFjdG9ycyBhcmUgZHJpdmluZyB0aGlzIHNlbGVjdGlvbj8gV2hhdCBtZWNoYW5pc21zLCBwcm9jZXNzZXMsIG9yIGNvbmRpdGlvbnMgYXJlIGF0IHBsYXk/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMuIElzIHRoaXMgYSBtYXR0ZXIgb2YgaW5pdGlhbCBjb25kaXRpb25zLCBvciBpcyB0aGVyZSBzb21lIGZlZWRiYWNrIGxvb3AgYXQgcGxheT8gUGVyaGFwcyB0aGVyZSdzIGEgc3BlY2lmaWMgdHJpZ2dlciBvciBhIGNhc2NhZGUgb2YgZXZlbnRzIGxlYWRpbmcgdG8gdGhpcyBcInNlbGVjdGlvblwiIHRoYXQgSSBuZWVkIHRvIGlkZW50aWZ5LiBNeSBhcHByb2FjaCBoZXJlIGhhcyB0byBzdGFydCB3aXRoIHRyYWNpbmcgdGhlIGNhdXNlLWVmZmVjdCByZWxhdGlvbnNoaXBzLiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgbG9va2luZyBmb3IgYW55IGltbWVkaWF0ZSBjb3JyZWxhdGlvbnMgYW5kIGdvIGZyb20gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3MDAsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNjoyOC4zMDgwMDIyMjdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzODU2NzkyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgTkZfUkVKRUNUX0lQVjRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZz00Mj1jb25maWcgTkZUX1JFSkVDVF9JUFY0XFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc6NDM6XFx0c2VsZWN0IE5GX1JFSkVDVF9JUFY0XFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctNDQtXFx0ZGVmYXVsdCBORlRfUkVKRUNUXFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZz0xOTU9Y29uZmlnIElQX05GX1RBUkdFVF9SRUpFQ1RcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTE5Ny1cXHRkZXBlbmRzIG9uIElQX05GX0ZJTFRFUiB8fCBORlRfQ09NUEFUXFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc6MTk4OlxcdHNlbGVjdCBORl9SRUpFQ1RfSVBWNFxcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTE5OS1cXHRkZWZhdWx0IG0gaWYgTkVURklMVEVSX0FEVkFOQ0VEPW5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6MzY6MjguNDQ2NTc1MTczWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwOTQwODY2NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgUmVqZWN0IFRhcmdldCBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIEkgc2VlIHRoYXQgYENPTkZJR19JUF9ORl9UQVJHRVRfUkVKRUNUYCBhbmQgYENPTkZJR19ORlRfUkVKRUNUX0lQVjRgIGFyZSB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIHRoYXQgZW5hYmxlIHRoaXMgXCJyZWplY3RcIiBmdW5jdGlvbmFsaXR5LiBNeSBuZXh0IHN0ZXAsIGFzIGFsd2F5cywgaXMgdG8gZGlnIGludG8gdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZXMuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBgbmV0L25ldGZpbHRlci9LY29uZmlnYCBmaWxlLiBJJ20gbG9va2luZyBmb3IgZWl0aGVyIGBORlRfUkVKRUNUX0lORVRgIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBhcyB0aGF0J3MgcHJvYmFibHkgdGhlIHRvcC1sZXZlbCBvcHRpb24gcmVsYXRlZCB0byB0aGUgbW9yZSBtb2Rlcm4gbmZ0YWJsZXMtYmFzZWQgcmVqZWN0IG1vZHVsZS4gSXQncyB0aW1lIHRvIGNvbmZpcm0gaG93IHRoZXNlIGNvbmZpZ3VyYXRpb25zIGFsbCBmaXQgdG9nZXRoZXIsIGFuZCBob3cgdGhlIGtlcm5lbCBoYW5kbGVzIHRoZSByZWplY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwODIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNjozMS41NDA2NjQ3ODhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNTQ4MDg2NywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IE5GX1JFSkVDVF9JUFY0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6MzY6MzEuNjU2MTUyNDU1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxODcyNzYxNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipOYXZpZ2F0aW5nIHRoZSBLY29uZmlnIExhYnlyaW50aCoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgd2FzIGdvaW5nIGRvd24gYSBwYXRoLCBidXQgSSBuZWVkIHRvIHBhdXNlIGFuZCBkb3VibGUtY2hlY2sgc29tZXRoaW5nLiBUaGUgcG90ZW50aWFsIHByb2JsZW0gbGlrZWx5IHJlc3RzIHNvbWV3aGVyZSBlbHNlLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBjb25zaWRlciBgTkZUX1JFSkVDVF9JTkVUYCBpbiBgbmV0L25ldGZpbHRlci9LY29uZmlnYC4gSXQncyBhIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbiBpbiB0aGUgbmV0ZmlsdGVyIHN1YnN5c3RlbSwgYW5kIGl0IGhhcyB0aGUgcG90ZW50aWFsIHRvIGluZmx1ZW5jZSB0aGUgYmVoYXZpb3IgSSdtIHNlZWluZy4gQ291bGQgaXQgYmUgc3VidGx5IGVuYWJsaW5nIG9yIHNlbGVjdGluZyBzb21ldGhpbmcgdGhhdCdzIGNhdXNpbmcgdGhlIGlzc3VlPyBJIG5lZWQgdG8gZ28gYmFjayBhbmQgdHJhY2UgdGhlIGRlcGVuZGVuY2llcywgZW5zdXJlIGl0J3Mgbm90IHB1bGxpbmcgaW4gc29tZXRoaW5nIHVuZXhwZWN0ZWQgdGhhdCBleHBsYWlucyB0aGUgb3V0Y29tZS4gSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCBJIGRpZG4ndCBnbG9zcyBvdmVyIHRoaXMgaW4gbXkgaW5pdGlhbCBzY2FuLiBCZXR0ZXIgdG8gYmUgY2VydGFpbiwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCB0aGUgaW50cmljYWNpZXMgb2YgbmV0ZmlsdGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MzQ5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6MzY6MzQuODQzNDMxNTc3WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDUwNzEzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZUX1JFSkVDVF9JTkVUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9NTc4PWNvbmZpZyBORlRfUkVKRUNUXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNTg1LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo1ODY6Y29uZmlnIE5GVF9SRUpFQ1RfSU5FVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy01ODctXFx0ZGVwZW5kcyBvbiBORl9UQUJMRVNfSU5FVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNjozNC44OTM5NDQ4MzVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEzNjYyMjc0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5J3JlIG15IG93bjpcblxuKipBbmFseXppbmcgdGhlIFNlbGVjdGlvbiBDcml0ZXJpYSBmb3IgYE5GVF9SRUpFQ1RfSU5FVGAqKlxuXG5BbHJpZ2h0LCBteSBicmFpbidzIGtpY2tpbmcgaW4g4oCTIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgZXhhY3RseSB0aGUgc2VsZWN0aW9uIHByb2Nlc3MgaXMgZm9yIGBORlRfUkVKRUNUX0lORVRgLiBJJ20gZ29pbmcgdG8gc3RhcnQgZGlnZ2luZyBpbnRvIHRoYXQgZGVmaW5pdGlvbiwgZmlndXJpbmcgb3V0IHdoYXQgY29uZGl0aW9ucyBvciBjcml0ZXJpYSBhcmUgYmVpbmcgdXNlZC4gV2hhdCdzIGl0IGZpbHRlcmluZyBvbj8gSXMgaXQgcHJvdG9jb2wtc3BlY2lmaWM/IERvZXMgaXQgbG9vayBhdCBzb3VyY2UvZGVzdGluYXRpb24gSVAgYWRkcmVzc2VzLCBwb3J0cywgb3RoZXIgbWV0YWRhdGE/IEkgbmVlZCBhIGNsZWFyIG1lbnRhbCBtb2RlbCBvZiBob3cgdGhpcyByZWplY3Rpb24gZnVuY3Rpb24gbWFrZXMgaXRzIGRlY2lzaW9ucy4gVW5kZXJzdGFuZGluZyB0aGUgc2VsZWN0aW9uIGxvZ2ljIGlzIGtleSB0byBlZmZlY3RpdmVseSB0cm91Ymxlc2hvb3Rpbmcgb3IgY29uZmlndXJpbmcgbmV0d29yayBwb2xpY2llcyByZWxhdGVkIHRvIHRoaXMgcGFydGljdWxhciBmZWF0dXJlLiBUaW1lIHRvIGdldCBpbnRvIHRoZSBkZXRhaWxzLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2ODUsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNjozOC4wMzA1NzA2NDlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5Mzc2OTI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5GVF9SRUpFQ1RfSU5FVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTU3OD1jb25maWcgTkZUX1JFSkVDVFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTU4NS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NTg2OmNvbmZpZyBORlRfUkVKRUNUX0lORVRcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNTg3LVxcdGRlcGVuZHMgb24gTkZfVEFCTEVTX0lORVRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6MzY6MzguMDc5OTU2NzQ3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2MTA3MjI0NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHByb2Nlc3NpbmcgdGhlIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgYE5GVF9SRUpFQ1RfSU5FVGA6XG5cbioqRGl2aW5nIGludG8gYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AgYW5kIGBORlRfUkVKRUNUX0lORVRgKipcblxuT2theSwgdGltZSB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBuZXRmaWx0ZXIgaW5mcmFzdHJ1Y3R1cmUsIHNwZWNpZmljYWxseSB0aGUgcmVqZWN0aW9uIG1lY2hhbmlzbSB3aXRoaW4gdGhlIG5ldyBmaWx0ZXJpbmcgZnJhbWV3b3JrLCBuZnRhYmxlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSByZWplY3QgZnVuY3Rpb25hbGl0eSBpcyBleHBvc2VkIHRvIHRoZSB1c2VyLCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgaXQgaGFzLiBMZXQncyBzZWUuLi4gSSdsbCBzdGFydCB3aXRoIHRoZSBmaWxlIHBhdGggeW91J3ZlIGdpdmVuIG1lOiBgbmV0L25ldGZpbHRlci9LY29uZmlnYC4gUmlnaHQsIHRoZSBLY29uZmlnIGZpbGUgc2hvdWxkIGRlZmluZSB0aGUgZGVwZW5kZW5jaWVzIGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLCB0aGlzIGlzIGdvb2QuXG5cbkknbSB6ZXJvaW5nIGluIG9uIGBORlRfUkVKRUNUX0lORVRgLCBhbmQgdGhhdCBwcm9iYWJseSBtZWFucyB0aGlzIGlzIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiBmb3IgdGhlIHJlamVjdCB0YXJnZXQgdGhhdCdzIGRlc2lnbmVkIHRvIHdvcmsgd2l0aCBhbGwgaW50ZXJuZXQgcHJvdG9jb2wgZmFtaWxpZXMsIElQdjQgYW5kIElQdjYuIFRoaXMgaXMga2V5LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGRlcGVuZGVuY2llcy4gQXJlIHRoZXJlIGFueSBvdGhlciByZXF1aXJlZCBvcHRpb25zPyBEb2VzIHRoaXMgdGllIGludG8gdGhlIGNvcmUgbmZ0YWJsZXMgY29tcG9uZW50cyBsaWtlIGBORVRGSUxURVJfWFRfVEFSR0VUX05GUVVFVUVgIG9yIGlzIGl0IGluZGVwZW5kZW50PyBJIGV4cGVjdCBpdCdsbCBkZXBlbmQgb24gdGhlIGJhc2ljIG5mdGFibGVzIGZlYXR1cmVzIGJlaW5nIGVuYWJsZWQuIEkgbmVlZCB0byB0cmFjZSB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgb3B0aW9uLiBJcyBpdCBlbmFibGVkIGJ5IGRlZmF1bHQsIG9yIGlzIGl0IGEgbW9kdWxhciBmZWF0dXJlPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIG9yIGRpc2FibGluZyBpdCBhdCBjb21waWxlIHRpbWU/IERvZXMgaXQgcmVxdWlyZSBhbnkgb3RoZXIga2VybmVsIHN1YnN5c3RlbXMgdG8gYmUgYnVpbHQ/IFRoaXMgd291bGQgYWZmZWN0IHN5c3RlbSBwZXJmb3JtYW5jZSBzbyB0aGlzIGlzIGltcG9ydGFudC5cblxuSSBuZWVkIHRvIHNlZSBpZiBpdCBtYWtlcyBhIGRpZmZlcmVuY2UgdG8gYW55IGtlcm5lbCBiZWhhdmlvciBvciBpZiBpdCBzaW1wbHkgdG9nZ2xlcyBjb21waWxhdGlvbi4gSXMgdGhpcyB0aWVkIHRvIGFueSBzcGVjaWZpYyBkZXZpY2UgY29uZmlndXJhdGlvbj9cblxuU28gZmFyIHNvIGdvb2QuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIHBpY3R1cmUgb2YgaG93IHRoZSByZWplY3QgdGFyZ2V0IGluIG5mdGFibGVzIGlzIGNvbmZpZ3VyZWQgYW5kIGl0cyByb2xlIGluIHRoZSBrZXJuZWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc5ODIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNjo0Mi42OTA2ODkxMDZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYxMDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA1ODAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1ODA6XFx0XFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBuZl90YWJsZXMgcmVqZWN0IHN1cHBvcnRcXFwiXFxuIDU4MTpcXHRcXHRoZWxwXFxuIDU4MjpcXHRcXHQgIFRoaXMgb3B0aW9uIGFkZHMgdGhlIFxcXCJyZWplY3RcXFwiIGV4cHJlc3Npb24gdGhhdCB5b3UgY2FuIHVzZSB0b1xcbiA1ODM6XFx0XFx0ICBleHBsaWNpdGx5IGRlbnkgYW5kIG5vdGlmeSB2aWEgVENQIHJlc2V0L0lDTVAgaW5mb3JtYXRpb25hbCBlcnJvcnNcXG4gNTg0OlxcdFxcdCAgdW5hbGxvd2VkIHRyYWZmaWMuXFxuIDU4NTpcXHRcXG4gNTg2OlxcdGNvbmZpZyBORlRfUkVKRUNUX0lORVRcXG4gNTg3OlxcdFxcdGRlcGVuZHMgb24gTkZfVEFCTEVTX0lORVRcXG4gNTg4OlxcdFxcdGRlZmF1bHQgTkZUX1JFSkVDVFxcbiA1ODk6XFx0XFx0dHJpc3RhdGVcXG4gNTkwOlxcdFxcbiA1OTE6XFx0Y29uZmlnIE5GVF9DT01QQVRcXG4gNTkyOlxcdFxcdGRlcGVuZHMgb24gTkVURklMVEVSX1hUQUJMRVNcXG4gNTkzOlxcdFxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgeF90YWJsZXMgb3ZlciBuZl90YWJsZXMgbW9kdWxlXFxcIlxcbiA1OTQ6XFx0XFx0aGVscFxcbiA1OTU6XFx0XFx0ICBUaGlzIGlzIHJlcXVpcmVkIGlmIHlvdSBpbnRlbmQgdG8gdXNlIGFueSBvZiBleGlzdGluZ1xcbiA1OTY6XFx0XFx0ICB4X3RhYmxlcyBtYXRjaC90YXJnZXQgZXh0ZW5zaW9ucyBvdmVyIHRoZSBuZl90YWJsZXNcXG4gNTk3OlxcdFxcdCAgZnJhbWV3b3JrLlxcbiA1OTg6XFx0XFxuIDU5OTpcXHRjb25maWcgTkZUX0hBU0hcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6MzY6NDIuNjkwODUyOTY2WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMjg0Nzk3MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBORlRhYmxlcyBhbmQgSVAgUmVqZWN0IEJlaGF2aW9yKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBORlRfUkVKRUNUX0lORVRgIHRoaW5nLCBhbmQgc29tZXRoaW5nIGlzbid0IHF1aXRlIGNsaWNraW5nLiBJIHdhcyB1bmRlciB0aGUgaW1wcmVzc2lvbiB0aGF0IGl0IHdvdWxkIGF1dG9tYXRpY2FsbHkgaGFuZGxlIGBORl9SRUpFQ1RfSVBWNGAsIGJ1dCBpdCBzZWVtcyB0aGF0J3Mgbm90IHRoZSBjYXNlLiBMZXQgbWUgZG91YmxlLWNoZWNrIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgYWxsIGludGVncmF0ZXMuIFJpZ2h0LCBzbyBgTkZUX1JFSkVDVF9JTkVUYCBsZXZlcmFnZXMgYG5mX3NlbmRfdW5yZWFjaGAsIHdoaWNoLCBhcyBJIHJlY2FsbCwgaXMgaW1wbGVtZW50ZWQgd2l0aGluIGBuZl9yZWplY3RfaXB2NC5jYC4gVGhhdCBtYWtlcyBtb3JlIHNlbnNlIG5vdy4gVG8gYmUgYWJzb2x1dGVseSBzdXJlIEkndmUgZ290IHRoZSBidWlsZCBjb25maWd1cmF0aW9uIHJpZ2h0LCBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgdGhlIE5ldGZpbHRlciBNYWtlZmlsZS4gVGltZSB0byB2ZXJpZnkgd2hhdCBnZXRzIGJ1aWx0IGFuZCBob3cgdGhlc2UgbW9kdWxlcyBhcmUgbGlua2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NzA0LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNjo0Ni45MTkzMzU0MjdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNDU4MjI5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZnRfcmVqZWN0X2luZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTExOD1vYmotJChDT05GSUdfTkZUX1JFSkVDVCkgXFx0Kz0gbmZ0X3JlamVjdC5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZToxMTk6b2JqLSQoQ09ORklHX05GVF9SRUpFQ1RfSU5FVClcXHQrPSBuZnRfcmVqZWN0X2luZXQub1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTIwLW9iai0kKENPTkZJR19ORlRfUkVKRUNUX05FVERFVilcXHQrPSBuZnRfcmVqZWN0X25ldGRldi5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM2OjQ3LjAyMzkyNTMwNFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTEyNTY5NzczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLlxuXG4qKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWwgTGlua2FnZSBJc3N1ZSBpbiB0aGUgbmZ0X3JlamVjdF9pbmV0IE1vZHVsZSoqXG5cbkhtbSwgc28gYG5mdF9yZWplY3RfaW5ldC5jYCByZWxpZXMgb24gYG5mX3NlbmRfdW5yZWFjaGAuIFRoYXQncyBhIGtleSBmdW5jdGlvbi4gQnV0IGlmIGBORl9SRUpFQ1RfSVBWNGAgaXNuJ3QgZW5hYmxlZCwgaG93IGRvZXMgdGhhdCBsaW5rYWdlIGV2ZW4gd29yaz8gV2hlcmUgZG9lcyB0aGF0IGNvbm5lY3Rpb24gY29tZSBmcm9tPyBUaGlzIHNlZW1zIGxpa2UgYSBwb3RlbnRpYWwgcG9pbnQgb2YgZmFpbHVyZS5cblxuQWxyaWdodCwgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGNoZWNrIHRoZSBpbmNsdWRlcyBmb3IgYG5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmNgLiBHb3R0YSBzZWUgd2hhdCBvdGhlciBtb2R1bGVzLCBhbmQgdGhlcmVmb3JlIHdoYXQgcG90ZW50aWFsIGRlcGVuZGVuY2llcywgYXJlIGluIHBsYXkgaGVyZSB0byB1bmRlcnN0YW5kIHRoaXMgYnVpbGQgcmVsYXRpb25zaGlwLiBJIG5lZWQgdG8gdHJhY2UgdGhlIHJlZmVyZW5jZXMuIFRoaXMgaXMgd2hlcmUgSSdsbCBmaW5kIG15IGFuc3dlcnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkwNzgsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNjo1MS4xMzY0OTgzOTdaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5ODY5NjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mX3NlbmRfdW5yZWFjaFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmM9MTc9c3RhdGljIHZvaWQgbmZ0X3JlamVjdF9pbmV0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy0yNi1cXHRcXHRjYXNlIE5GVF9SRUpFQ1RfSUNNUF9VTlJFQUNIOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmM6Mjc6XFx0XFx0XFx0bmZfc2VuZF91bnJlYWNoKHBrdC1cXHUwMDNlc2tiLCBwcml2LVxcdTAwM2VpY21wX2NvZGUsXFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy0yOC1cXHRcXHRcXHRcXHRcXHRuZnRfaG9vayhwa3QpKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmMtMzQtXFx0XFx0Y2FzZSBORlRfUkVKRUNUX0lDTVBYX1VOUkVBQ0g6XFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYzozNTpcXHRcXHRcXHRuZl9zZW5kX3VucmVhY2gocGt0LVxcdTAwM2Vza2IsXFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy0zNi1cXHRcXHRcXHRcXHRcXHRuZnRfcmVqZWN0X2ljbXBfY29kZShwcml2LVxcdTAwM2VpY21wX2NvZGUpLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy00My1cXHRcXHRjYXNlIE5GVF9SRUpFQ1RfSUNNUF9VTlJFQUNIOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmM6NDQ6XFx0XFx0XFx0bmZfc2VuZF91bnJlYWNoNihuZnRfbmV0KHBrdCksIHBrdC1cXHUwMDNlc2tiLFxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmMtNDUtXFx0XFx0XFx0XFx0XFx0IHByaXYtXFx1MDAzZWljbXBfY29kZSwgbmZ0X2hvb2socGt0KSk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jLTUxLVxcdFxcdGNhc2UgTkZUX1JFSkVDVF9JQ01QWF9VTlJFQUNIOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmM6NTI6XFx0XFx0XFx0bmZfc2VuZF91bnJlYWNoNihuZnRfbmV0KHBrdCksIHBrdC1cXHUwMDNlc2tiLFxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmMtNTMtXFx0XFx0XFx0XFx0XFx0IG5mdF9yZWplY3RfaWNtcHY2X2NvZGUocHJpdi1cXHUwMDNlaWNtcF9jb2RlKSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6MzY6NTEuMTk2Mzc0MzA1WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4Njc3NzQzMTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjpcblxuKipEaXZpbmcgaW50byB0aGUgSVB2NCBORl9SRUpFQ1QgSGVhZGVyKipcblxuT2theSwgdGltZSB0byBnZXQgaW50byB0aGUgbml0dHktZ3JpdHR5IG9mIHRoZSBJUHY0IG5ldGZpbHRlciByZWplY3Rpb24gbW9kdWxlLiBMZXQncyBzZWUgd2hhdCdzIGRlZmluZWQgaW4gYGluY2x1ZGUvbmV0L25ldGZpbHRlci9pcHY0L25mX3JlamVjdC5oYC4gSSdtIGV4cGVjdGluZyB0byBmaW5kIHRoZSBjb3JlIGRhdGEgc3RydWN0dXJlcyBhbmQgY29uc3RhbnRzIHJlbGF0ZWQgdG8gaG93IHdlIGhhbmRsZSBhbmQgY29uc3RydWN0IElDTVAgZXJyb3IgbWVzc2FnZXMgZm9yIGRyb3BwZWQgSVB2NCBwYWNrZXRzIHdpdGhpbiB0aGUgbmV0ZmlsdGVyIGZyYW1ld29yay4gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZSB0aGUgZGlmZmVyZW50IElDTVAgZXJyb3IgY29kZSB0eXBlcyAoZS5nLiwgaG9zdCB1bnJlYWNoYWJsZSwgbmV0d29yayB1bnJlYWNoYWJsZSwgZXRjLikgdGhhdCB0aGUgbW9kdWxlIGNhbiBnZW5lcmF0ZSwgdGhlIHN0cnVjdHVyZSB0aGF0IGhvbGRzIHRoZSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgcmVsYXRlZCB0byB0aGUgbW9kdWxlLCBhbmQgYW55IGludGVybmFsIGZ1bmN0aW9uIHByb3RvdHlwZXMgdGhlIG1vZHVsZSBleHBvcnRzLiBIb3BlZnVsbHksIHRoZSBoZWFkZXIgZmlsZSBpcyB3ZWxsLWRvY3VtZW50ZWQsIG1ha2luZyBpdCBlYXN5IHRvIHNlZSBob3cgdGhlIHJlamVjdGlvbiBtZWNoYW5pc20gaW50ZXJhY3RzIHdpdGggb3RoZXIgbmV0ZmlsdGVyIGNvbXBvbmVudHMgbGlrZSBjb25uZWN0aW9uIHRyYWNraW5nLiBJJ20ga2VlbiB0byB1bmRlcnN0YW5kIHRoZSBmbGV4aWJpbGl0eSBvZmZlcmVkIGluIGNyYWZ0aW5nIHJlc3BvbnNlcywgYW5kIGlmIHRoZXJlIGFyZSBhbnkgb3B0aW9ucyBmb3IgY3VzdG9taXppbmcgdGhlIElDTVAgZXJyb3IgbWVzc2FnZXMgYmV5b25kIHRoZSBkZWZhdWx0cy4gTG9va2luZyBhdCB0aGUgaW5jbHVkZSBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGV2YWx1YXRpbmcgY3VycmVudCBkZXNpZ24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk3NzksIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNjo1Ni4wNjQxNTEyNzZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyNzkyMjg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mX3NlbmRfdW5yZWFjaFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL25ldC9uZXRmaWx0ZXIvaXB2NC9uZl9yZWplY3QuaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC9uZXRmaWx0ZXIvaXB2NC9uZl9yZWplY3QuaC05LVxcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9pcHY0L25mX3JlamVjdC5oOjEwOnZvaWQgbmZfc2VuZF91bnJlYWNoKHN0cnVjdCBza19idWZmICpza2JfaW4sIGludCBjb2RlLCBpbnQgaG9vayk7XFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL2lwdjQvbmZfcmVqZWN0LmgtMTEtdm9pZCBuZl9zZW5kX3Jlc2V0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKiwgc3RydWN0IHNrX2J1ZmYgKm9sZHNrYixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6MzY6NTYuMTM2OTQ5MDQ0WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NTU1NzM3OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgY29ycmVjdGx5LiBJdCBsb29rcyBsaWtlIGBuZnRfcmVqZWN0X2luZXRgIHJlbGllcyBvbiBgTkZfVEFCTEVTX0lORVRgLCBidXQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZW0gaXMgY3JpdGljYWwuIERvZXMgZW5hYmxpbmcgYE5GX1RBQkxFU19JTkVUYCBhdXRvbWF0aWNhbGx5IGJyaW5nIGluIGBORl9SRUpFQ1RfSVBWNGA/IE9yIGlzIGl0IHRoZSBvdGhlciB3YXkgYXJvdW5kIOKAkyBkb2VzIGBORlRfUkVKRUNUX0lORVRgIHB1bGwgaXQgaW4gaW5zdGVhZD8gSSBuZWVkIHRvIGJlIHByZWNpc2UgaGVyZSwgc2luY2UgaW5jb3JyZWN0bHkgY29uZmlndXJlZCBtb2R1bGVzIGFuZCBkZXBlbmRlbmNpZXMgY2FuIGxlYWQgdG8gbWFqb3IgbmV0d29ya2luZyBpc3N1ZXMuIEknZCBiZXR0ZXIgZ28gYmFjayB0byB0aGUgc291cmNlLiBMZXQgbWUganVzdCBvcGVuIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIGFnYWluIGFuZCBkb3VibGUtY2hlY2sgdGhvc2UgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBvZiB0aGUgc2VsZWN0aW9uIGhpZXJhcmNoeS4gSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCBJIGFtIHVuZGVyc3RhbmRpbmcgdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyMDAsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNjo1OS45OTI1MjY0NTZaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczNzMzNDQ4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORl9SRUpFQ1RfSVBWNFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM3OjAwLjA2NjI2NjE0NFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTgyNjE3Mjg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUsIG15IG1lbnRhbCBnZWFycyBhcmUgdHVybmluZy4uLlxuXG4qKkNoZWNraW5nIHRoZSBLY29uZmlnIGZvciBSZWplY3Rpb24gUnVsZXMqKlxuXG5SaWdodCwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhlc2UgcmVqZWN0aW9uIG1lY2hhbmlzbXMgYXJlIGNvbmZpZ3VyZWQuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGBuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZ2Ag4oCTIHRoYXQncyB0aGUgdXN1YWwgcGxhY2UgdG8gZmluZCB0aGVzZSBzb3J0cyBvZiBvcHRpb25zIGZvciBJUHY0IE5ldGZpbHRlciwgaXNuJ3QgaXQ/IEknbSBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3IgYE5GVF9SRUpFQ1RfSU5FVGAgb3IgYE5GX1RBQkxFU19JTkVUYC4gVGhlc2Ugd291bGQgZ2l2ZSBtZSBhIGdvb2QgaW5kaWNhdGlvbiBvZiB3aGV0aGVyIHdlIGFyZSBldmVuIHVzaW5nIG9yIGhhdmUgc3VwcG9ydCBmb3IgdGhlIG5ldyByZWplY3Qgc3lzdGVtIG9yIHRoZSBvbGRlciBuZnRhYmxlcyBmcmFtZXdvcmsgdGhhdCBwcm92aWRlcyB0aGlzLiBLbm93aW5nIHRoaXMgd2lsbCBpbW1lZGlhdGVseSBmb2N1cyBteSBhdHRlbnRpb24gYW5kIGFuYWx5c2lzIGdvaW5nIGZvcndhcmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNDg5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6Mzc6MDMuMDQ4ODg2MzgyWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDUwNTE4NzcsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5GVF9SRUpFQ1RfSU5FVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6Mzc6MDMuMTUzOTQ2NDE5WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4ODMyMTE3NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipLY29uZmlnIERpdmUgZm9yIE5GVF9SRUpFQ1RfSU5FVCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBgTkZUX1JFSkVDVF9JTkVUYC4gVGltZSB0byBkaXZlIGludG8gdGhlIGtlcm5lbCdzIEtjb25maWcgZmlsZXMuIEknbSBoZWFkaW5nIHN0cmFpZ2h0IGZvciBgbmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWdgLiBUaGlzIGlzIHdoZXJlIEknZCBleHBlY3QgdG8gZmluZCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgZm9yIElQdjYgbmV0ZmlsdGVyIGZ1bmN0aW9uYWxpdHksIGluY2x1ZGluZyBhbnl0aGluZyByZWxhdGVkIHRvIHJlamVjdCBhY3Rpb25zLCBlc3BlY2lhbGx5IHRoZSBJTkVULXNwZWNpZmljIG9uZXMuIEknbSBhbnRpY2lwYXRpbmcgdGhhdCBgTkZUX1JFSkVDVF9JTkVUYCB3aWxsIGJlIGRlZmluZWQgdGhlcmUsIG9yIGF0IHRoZSB2ZXJ5IGxlYXN0LCB0aGF0IHRoZSBkZXBlbmRlbmNpZXMgYW5kIHJlbGF0aW9uc2hpcHMgd2l0aCBvdGhlciByZWxhdGVkIG9wdGlvbnMgd2lsbCBiZSBjbGVhcmx5IHNwZWxsZWQgb3V0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgZXhhY3QgcHVycG9zZSBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBuZXRmaWx0ZXIgZnJhbWV3b3JrLiBMZXQncyBzZWUgd2hhdCdzIGluIHRoZXJlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNzI0LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6Mzc6MDcuMDM3MTYxMDlaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzMDczMjAyMCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTkZUX1JFSkVDVF9JTkVUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNzowNy4zNjc5MDAyOVoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzM1NDM3NzM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIGBORlRfUkVKRUNUX0lORVRgIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJdCBzZWVtcyBhIGJpdCBvZGQgdGhhdCBgTkZUX1JFSkVDVF9JTkVUYCB3b3VsZCBkaXJlY3RseSBzZWxlY3QgYE5GX1JFSkVDVF9JUFY0YC4gVGhhdCBkb2Vzbid0IHNlZW0gcXVpdGUgcmlnaHQgaW4gbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlc2UgdGhpbmdzIHVzdWFsbHkgd29yay4gUGVyaGFwcyBJIG1pc3NlZCBzb21ldGhpbmcgaW4gYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2A/IEkgbmVlZCB0byBkb3VibGUtY2hlY2suIEJlc3Qgd2F5IHRvIGNsZWFyIHRoaXMgdXAgaXMgdG8gc2VhcmNoIHRoZSBlbnRpcmUgc291cmNlIHRyZWUgZm9yIG9jY3VycmVuY2VzIG9mIGBORl9SRUpFQ1RfSVBWNGAgdG8gdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jaWVzIGFuZCByZWxhdGlvbnNoaXBzLiBMZXQncyBnZXQgdG8gaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwOTc4LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6Mzc6MTAuNzAzMzQxMjE3WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjQ0ODUwODYyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5GX1JFSkVDVF9JUFY0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYnJpZGdlL25ldGZpbHRlci9LY29uZmlnPTE4PWNvbmZpZyBORlRfQlJJREdFX1JFSkVDVFxcbi0tXFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvS2NvbmZpZy0yMC1cXHRkZXBlbmRzIG9uIE5GVF9SRUpFQ1RcXG5uZXQvYnJpZGdlL25ldGZpbHRlci9LY29uZmlnOjIxOlxcdGRlcGVuZHMgb24gTkZfUkVKRUNUX0lQVjRcXG5uZXQvYnJpZGdlL25ldGZpbHRlci9LY29uZmlnLTIyLVxcdGRlcGVuZHMgb24gTkZfUkVKRUNUX0lQVjZcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnPTQyPWNvbmZpZyBORlRfUkVKRUNUX0lQVjRcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZzo0MzpcXHRzZWxlY3QgTkZfUkVKRUNUX0lQVjRcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy00NC1cXHRkZWZhdWx0IE5GVF9SRUpFQ1RcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnPTg3PWNvbmZpZyBORl9MT0dfSVBWNFxcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctOTQtXFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc6OTU6Y29uZmlnIE5GX1JFSkVDVF9JUFY0XFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctOTYtXFx0dHJpc3RhdGUgXFxcIklQdjQgcGFja2V0IHJlamVjdGlvblxcXCJcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnPTE5NT1jb25maWcgSVBfTkZfVEFSR0VUX1JFSkVDVFxcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctMTk3LVxcdGRlcGVuZHMgb24gSVBfTkZfRklMVEVSIHx8IE5GVF9DT01QQVRcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZzoxOTg6XFx0c2VsZWN0IE5GX1JFSkVDVF9JUFY0XFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctMTk5LVxcdGRlZmF1bHQgbSBpZiBORVRGSUxURVJfQURWQU5DRUQ9blxcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlPTEwPW9iai0kKENPTkZJR19ORl9UUFJPWFlfSVBWNCkgKz0gbmZfdHByb3h5X2lwdjQub1xcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlLTEyLSMgcmVqZWN0XFxubmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlOjEzOm9iai0kKENPTkZJR19ORl9SRUpFQ1RfSVBWNCkgKz0gbmZfcmVqZWN0X2lwdjQub1xcbm5ldC9pcHY0L25ldGZpbHRlci9NYWtlZmlsZS0xNC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6Mzc6MTIuOTQ4MjAwNzc4WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2ODMwMTE2MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgTkZUIFJlamVjdCBNb2R1bGUgQmVoYXZpb3IqKlxuXG5SaWdodCwgc28gYE5GVF9SRUpFQ1RfSU5FVGAgaXNuJ3QgbWFnaWNhbGx5IHB1bGxpbmcgaW4gYE5GX1JFSkVDVF9JUFY0YCBhcyBJJ2QgaW5pdGlhbGx5IGFzc3VtZWQuIFNlZW1zIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvbmZpZ3VyYXRpb24uIFRpbWUgdG8gcmV2aXNpdCBgbmV0L25ldGZpbHRlci9LY29uZmlnYC4gSSdsbCB3YW50IHRvIHZlcmlmeSB0aGUgZGVwZW5kZW5jaWVzIGFuZCBzZWUgZXhhY3RseSBob3cgdGhvc2UgbW9kdWxlcyBhcmUgbGlua2VkLCBvciBtb3JlIGxpa2VseSwgKm5vdCogbGlua2VkLiBJdOKAmXMgcHJvYmFibHkgYSBzdWJ0bGUgcmVsYXRpb25zaGlwLCBvciBsYWNrIHRoZXJlb2YsIHdpdGhpbiB0aGUgS2NvbmZpZyBoaWVyYXJjaHkuIEknbSBndWVzc2luZyBhIGNvbmRpdGlvbmFsIGRlcGVuZGVuY3kgb3IgYW4gaXNzdWUgd2l0aCB0aGUgaW50ZW5kZWQgc2NvcGUgb2YgYE5GVF9SRUpFQ1RfSU5FVGAgaXRzZWxmLiBMZXQncyBzZWUgd2hhdCB0aGUgS2NvbmZpZyBmaWxlIHJldmVhbHMuLi4gSSdsbCBuZWVkIHRvIGFzc2VzcyB0aGUgaW1wbGljYXRpb25zIGZvciBhIGNvbWJpbmVkIElQdjQvSVB2NiByZWplY3QgcnVsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE2NzQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNzoxNi42MzEyMTYxNjVaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ5MjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA1ODUsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1ODU6XFx0XFxuIDU4NjpcXHRjb25maWcgTkZUX1JFSkVDVF9JTkVUXFxuIDU4NzpcXHRcXHRkZXBlbmRzIG9uIE5GX1RBQkxFU19JTkVUXFxuIDU4ODpcXHRcXHRkZWZhdWx0IE5GVF9SRUpFQ1RcXG4gNTg5OlxcdFxcdHRyaXN0YXRlXFxuIDU5MDpcXHRcXG4gNTkxOlxcdGNvbmZpZyBORlRfQ09NUEFUXFxuIDU5MjpcXHRcXHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9YVEFCTEVTXFxuIDU5MzpcXHRcXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIHhfdGFibGVzIG92ZXIgbmZfdGFibGVzIG1vZHVsZVxcXCJcXG4gNTk0OlxcdFxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6Mzc6MTYuNjMxMzY3OTU2WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMzEzODg4NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkNoZWNraW5nIERlcGVuZGVuY3kgTG9naWMgZm9yIE5GVCBSZWplY3QgSW1wbGVtZW50YXRpb24qKlxuXG5BbHJpZ2h0LCBoYW5nIG9uIGEgc2Vjb25kLiBgTkZUX1JFSkVDVF9JTkVUYC4uLiB0aGF0IHJlbGllcyBvbiBgTkZfVEFCTEVTX0lORVRgLCBkb2Vzbid0IGl0PyBJIG5lZWQgdG8gcXVpY2tseSByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGF0LiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBpbXBsZW1lbnRhdGlvbiwgc3BlY2lmaWNhbGx5IHRoZSBgbmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuY2Agc291cmNlIGZpbGUuIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gSSB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmN5IGZsb3csIGVzcGVjaWFsbHkgZ2l2ZW4gaG93IHRpZ2h0bHkga25pdCBOZXRmaWx0ZXIncyBjb21wb25lbnRzIGNhbiBiZS4gR290dGEgbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZyBjcnVjaWFsIGluIHRoZSBjb25maWd1cmF0aW9uIG9yIHBvdGVudGlhbCBpc3N1ZXMgYXJpc2luZyBmcm9tIHRoYXQgcmVsYXRpb25zaGlwLiBHb3R0YSBnbyBiYWNrIGFuZCB2ZXJpZnkgZXhhY3RseSB3aGF0J3MgZ29pbmcgb24gaW4gdGhhdCBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjA3NSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6Mzc6MTkuOTYyNzU4OTMzWiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NzQwNDg3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl9zZW5kX3VucmVhY2hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jPTE3PXN0YXRpYyB2b2lkIG5mdF9yZWplY3RfaW5ldF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmMtMjYtXFx0XFx0Y2FzZSBORlRfUkVKRUNUX0lDTVBfVU5SRUFDSDpcXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jOjI3OlxcdFxcdFxcdG5mX3NlbmRfdW5yZWFjaChwa3QtXFx1MDAzZXNrYiwgcHJpdi1cXHUwMDNlaWNtcF9jb2RlLFxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmMtMjgtXFx0XFx0XFx0XFx0XFx0bmZ0X2hvb2socGt0KSk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jLTM0LVxcdFxcdGNhc2UgTkZUX1JFSkVDVF9JQ01QWF9VTlJFQUNIOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmM6MzU6XFx0XFx0XFx0bmZfc2VuZF91bnJlYWNoKHBrdC1cXHUwMDNlc2tiLFxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmMtMzYtXFx0XFx0XFx0XFx0XFx0bmZ0X3JlamVjdF9pY21wX2NvZGUocHJpdi1cXHUwMDNlaWNtcF9jb2RlKSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmMtNDMtXFx0XFx0Y2FzZSBORlRfUkVKRUNUX0lDTVBfVU5SRUFDSDpcXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jOjQ0OlxcdFxcdFxcdG5mX3NlbmRfdW5yZWFjaDYobmZ0X25ldChwa3QpLCBwa3QtXFx1MDAzZXNrYixcXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jLTQ1LVxcdFxcdFxcdFxcdFxcdCBwcml2LVxcdTAwM2VpY21wX2NvZGUsIG5mdF9ob29rKHBrdCkpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy01MS1cXHRcXHRjYXNlIE5GVF9SRUpFQ1RfSUNNUFhfVU5SRUFDSDpcXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jOjUyOlxcdFxcdFxcdG5mX3NlbmRfdW5yZWFjaDYobmZ0X25ldChwa3QpLCBwa3QtXFx1MDAzZXNrYixcXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jLTUzLVxcdFxcdFxcdFxcdFxcdCBuZnRfcmVqZWN0X2ljbXB2Nl9jb2RlKHByaXYtXFx1MDAzZWljbXBfY29kZSksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM3OjIwLjA1MDE2OTY4WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNDA2NzkyMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgQ29tcGlsYXRpb24gUGF0aCBvZiBgbmZ0X3JlamVjdF9pbmV0LmNgKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBuZnRfcmVqZWN0X2luZXQuY2AgZmlsZSBhbmQgc29tZXRoaW5nJ3MgYnVnZ2luZyBtZS4gSXQncyB1c2luZyBgbmZfc2VuZF91bnJlYWNoYCwgYW5kIHRoYXQncyBhIGtleSBmdW5jdGlvbiBpbiBoYW5kbGluZyBuZXR3b3JrIHVucmVhY2hhYmlsaXR5LiBCdXQgaWYgSSByZWNhbGwgY29ycmVjdGx5LCBgTkZfUkVKRUNUX0lQVjRgIHVzdWFsbHkgbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgdGhhdCB0byB3b3JrIHByb3Blcmx5LiBTbywgaG93IGlzIHRoaXMgdGhpbmcgZXZlbiBjb21waWxpbmcgd2l0aG91dCB0aGF0IGZsYWcgc2VlbWluZ2x5IGFjdGl2ZT9cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHRoZXJlJ3MgZ290IHRvIGJlIHNvbWUgb3RoZXIgbWVjaGFuaXNtIGF0IHBsYXkuIFBlcmhhcHMgYG5mX3NlbmRfdW5yZWFjaGAgaXMgY2FsbGVkIHVuZGVyIGEgZGlmZmVyZW50IG1hY3JvIGNvbmRpdGlvbj8gT3IgbWF5YmUgaXQncyBpbmNsdWRlZCB3aXRoaW4gYSBkaWZmZXJlbnQgaGVhZGVyLCB0aGF0IHB1bGxzIGluIHRoZSBgbmZfcmVqZWN0YCBjb21wb25lbnRzIGluIGEgZGlmZmVyZW50IHdheT8gSSBuZWVkIHRvIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuIFRpbWUgdG8gZGVsdmUgaW50byBgaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL2lwdjQvbmZfcmVqZWN0LmhgIGFuZCBzZWUgd2hhdCdzIHJlYWxseSBnb2luZyBvbiB1bmRlciB0aGUgaG9vZCBvZiB0aG9zZSByZWplY3QgY29kZSBtYWNyb3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgY29tcGlsYXRpb24gcGF0aCFcblxuXG4iLCJJbnB1dFRva2VucyI6MTI3NTcsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNzoyNC4yOTA4NTM2NDFaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTUzMTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL2lwdjQvbmZfcmVqZWN0LmhcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xcbiAgIDI6XFx0I2lmbmRlZiBfSVBWNF9ORl9SRUpFQ1RfSFxcbiAgIDM6XFx0I2RlZmluZSBfSVBWNF9ORl9SRUpFQ1RfSFxcbiAgIDQ6XFx0XFxuICAgNTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvc2tidWZmLmhcXHUwMDNlXFxuICAgNjpcXHQjaW5jbHVkZSBcXHUwMDNjbmV0L2lwLmhcXHUwMDNlXFxuICAgNzpcXHQjaW5jbHVkZSBcXHUwMDNjbmV0L2ljbXAuaFxcdTAwM2VcXG4gICA4OlxcdCNpbmNsdWRlIFxcdTAwM2NuZXQvbmV0ZmlsdGVyL25mX3JlamVjdC5oXFx1MDAzZVxcbiAgIDk6XFx0XFxuICAxMDpcXHR2b2lkIG5mX3NlbmRfdW5yZWFjaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luLCBpbnQgY29kZSwgaW50IGhvb2spO1xcbiAgMTE6XFx0dm9pZCBuZl9zZW5kX3Jlc2V0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKiwgc3RydWN0IHNrX2J1ZmYgKm9sZHNrYixcXG4gIDEyOlxcdFxcdFxcdCAgIGludCBob29rKTtcXG4gIDEzOlxcdHN0cnVjdCBza19idWZmICpuZl9yZWplY3Rfc2tiX3Y0X3VucmVhY2goc3RydWN0IG5ldCAqbmV0LFxcbiAgMTQ6XFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqb2xkc2tiLFxcbiAgMTU6XFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiAgMTY6XFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaG9vaywgdTggY29kZSk7XFxuICAxNzpcXHRzdHJ1Y3Qgc2tfYnVmZiAqbmZfcmVqZWN0X3NrYl92NF90Y3BfcmVzZXQoc3RydWN0IG5ldCAqbmV0LFxcbiAgMTg6XFx0XFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IHNrX2J1ZmYgKm9sZHNrYixcXG4gIDE5OlxcdFxcdFxcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuICAyMDpcXHRcXHRcXHRcXHRcXHRcXHQgICBpbnQgaG9vayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM3OjI0LjI5MDk1MzQ5WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MzkzOTkyMjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gYG5mdF9yZWplY3RfaW5ldGAg4oCTIHRoYXQncyB0aGUgbW9kdWxlIEknbSBpbnRlcmVzdGVkIGluIHJpZ2h0IG5vdyDigJMgaXQgbG9va3MgbGlrZSBpdCdzIHB1bGxpbmcgaW4gYE5GX1RBQkxFU19JTkVUYCBhcyBhIGRlcGVuZGVuY3kuIEhtbSwgdGhhdCdzIG5vdCBpbW1lZGlhdGVseSBvYnZpb3VzIHdoeSwgYW5kIEkgdmFndWVseSByZWNhbGwgdGhhdCBgTkZfVEFCTEVTX0lORVRgICptaWdodCogaGF2ZSBzb21lIGNvbm5lY3Rpb24gdG8gdGhlIG9sZGVyIGBORlRfUkVKRUNUX0lQVjRgIG9wdGlvbiwgd2hpY2ggSSdtIG5vdCB1c2luZyBkaXJlY3RseS4gR290dGEgYmUgY2VydGFpbiBJJ20gbm90IHB1bGxpbmcgaW4gdW53YW50ZWQgc3R1ZmYuXG5cbkxldCdzIHF1aWNrbHkgdmVyaWZ5IHRoYXQgdGhlIHJlbGF0aW9uc2hpcCBtYWtlcyBzZW5zZSBhbmQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGBORl9UQUJMRVNfSU5FVGAuIFRoZSBxdWlja2VzdCB3YXkgdG8gZG8gdGhpcyBpcyB0byBqdW1wIHJpZ2h0IGludG8gdGhlIHNvdXJjZSBjb2RlLCBzcGVjaWZpY2FsbHkgYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AuIFRoYXQncyB3aGVyZSBhbGwgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIHRoZWlyIGRlcGVuZGVuY2llcyBhcmUgZGVmaW5lZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgTkZfVEFCTEVTX0lORVRgIGFjdHVhbGx5ICpkb2VzKiBpbiByZWxhdGlvbiB0byB0aGUgYnJvYWRlciBuZXRmaWx0ZXIgZnJhbWV3b3JrIGFuZCBzcGVjaWZpY2FsbHkgYG5mdF9yZWplY3RfaW5ldGAuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgd2hhdCB0aGUgS2NvbmZpZyBmaWxlcyByZXZlYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNDQyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNzoyOC4yMzAzNTU0WiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzQxNDA1MDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GX1RBQkxFU19JTkVUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9NDcxPWlmIE5GX1RBQkxFU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NzI6Y29uZmlnIE5GX1RBQkxFU19JTkVUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ3My1cXHRkZXBlbmRzIG9uIElQVjZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6Mzc6MjguNDY0NDk5NjUyWiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNTMyMTY0OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgY29udGV4dCwgcHJlc2VudGVkIGFzIGEgcGVyc29uYWwgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYWxyZWFkeSB3ZWxsLXZlcnNlZCBpbiBrZXJuZWwgY29uZmlndXJhdGlvbiBhbmQgbmV0ZmlsdGVyOlxuXG4qKkFuYWx5emluZyB0aGUgS2NvbmZpZyBmb3IgTkZfVEFCTEVTX0lORVQqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBkaXZpbmcgaW50byBgbmV0L25ldGZpbHRlci9LY29uZmlnYCBhbmQgaG9taW5nIGluIG9uIGBORl9UQUJMRVNfSU5FVGAuIFRoaXMgaXMga2V5LiBXZSdyZSB0YWxraW5nIGFib3V0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBOZXRmaWx0ZXIgaW5mcmFzdHJ1Y3R1cmUsIHNwZWNpZmljYWxseSBhcyBpdCByZWxhdGVzIHRvIHRoZSBJbnRlcm5ldCBwcm90b2NvbCBmYW1pbHkuIE15IGltbWVkaWF0ZSBhc3N1bXB0aW9uIGlzIHdlJ3JlIGxvb2tpbmcgYXQgdGhlIGNvcmUgZW5hYmxpbmcgb3B0aW9ucyBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5LiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGRlcGVuZGVuY2llcyB0aGVyZSBhcmUsIHdoYXQgdGhpcyBtb2R1bGUgaW1wYWN0cywgYW5kIGhvdyBpdCBpcyBtZWFudCB0byBiZSB1c2VkLCBpbiBzaG9ydCwgaG93IGRvIEkgY29uZmlndXJlIG15IGVudmlyb25tZW50IHRvIHV0aWxpemUgdGhpcyBmdW5jdGlvbmFsaXR5PyBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIHN0YW5kYXJkIGBib29sYCwgYHRyaXN0YXRlYCwgb3IgYGludGAgb3B0aW9ucyBoZXJlLCBjb250cm9sbGluZyB3aGV0aGVyIHN1cHBvcnQgaXMgYnVpbHQgaW4sIGFzIGEgbW9kdWxlLCBvciBkaXNhYmxlZC4gSSBuZWVkIHRvIHBhcnNlIHRoZSBoZWxwIHRleHQgdGhvcm91Z2hseSB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIHRoaXMuIEkgd2lsbCBsb29rIGZvciBhbnkgY29uZGl0aW9uYWwgbG9naWMgd2l0aGluIHRoZSBLY29uZmlnLCB0byBzZWUgaWYgdGhlcmUgYXJlIGRlcGVuZGVuY2llcyBvbiBvdGhlciBOZXRmaWx0ZXIgY29tcG9uZW50cy4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBsb29raW5nIGF0IHRoZSBkZXBlbmRlbmNpZXMgdGhhdCBtaWdodCBleGlzdCBiZXR3ZWVuIGBORl9UQUJMRVNfSU5FVGAsIGBORl9UQUJMRVNfSVBWNGAsIGFuZCBgTkZfVEFCTEVTX0lQVjZgLiBJZiB0aGVyZSBhcmUgYW55LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzg0MiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM3OjMyLjcxNzcyMDc2MloiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODQ1NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQ3MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQ3MDpcXHRcXG4gNDcxOlxcdGlmIE5GX1RBQkxFU1xcbiA0NzI6XFx0Y29uZmlnIE5GX1RBQkxFU19JTkVUXFxuIDQ3MzpcXHRcXHRkZXBlbmRzIG9uIElQVjZcXG4gNDc0OlxcdFxcdHNlbGVjdCBORl9UQUJMRVNfSVBWNFxcbiA0NzU6XFx0XFx0c2VsZWN0IE5GX1RBQkxFU19JUFY2XFxuIDQ3NjpcXHRcXHRib29sIFxcXCJOZXRmaWx0ZXIgbmZfdGFibGVzIG1peGVkIElQdjQvSVB2NiB0YWJsZXMgc3VwcG9ydFxcXCJcXG4gNDc3OlxcdFxcdGhlbHBcXG4gNDc4OlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBzdXBwb3J0IGZvciBhIG1peGVkIElQdjQvSVB2NiBcXFwiaW5ldFxcXCIgdGFibGUuXFxuIDQ3OTpcXHRcXG4gNDgwOlxcdGNvbmZpZyBORl9UQUJMRVNfTkVUREVWXFxuIDQ4MTpcXHRcXHRib29sIFxcXCJOZXRmaWx0ZXIgbmZfdGFibGVzIG5ldGRldiB0YWJsZXMgc3VwcG9ydFxcXCJcXG4gNDgyOlxcdFxcdGhlbHBcXG4gNDgzOlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBzdXBwb3J0IGZvciB0aGUgXFxcIm5ldGRldlxcXCIgdGFibGUuXFxuIDQ4NDpcXHRcXG4gNDg1OlxcdGNvbmZpZyBORlRfTlVNR0VOXFxuIDQ4NjpcXHRcXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIG5mX3RhYmxlcyBudW1iZXIgZ2VuZXJhdG9yIG1vZHVsZVxcXCJcXG4gNDg3OlxcdFxcdGhlbHBcXG4gNDg4OlxcdFxcdCAgVGhpcyBvcHRpb24gYWRkcyB0aGUgbnVtYmVyIGdlbmVyYXRvciBleHByZXNzaW9uIHVzZWQgdG8gcGVyZm9ybVxcbiA0ODk6XFx0XFx0ICBpbmNyZW1lbnRhbCBjb3VudGluZyBhbmQgcmFuZG9tIG51bWJlcnMgYm91bmQgdG8gYSB1cHBlciBsaW1pdC5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6Mzc6MzIuNzE3OTA3NTExWiIsIlNlcSI6NDUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4MTU2NzY4MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgc28gYE5GX1RBQkxFU19JTkVUYCBpcyBjaG9zZW4sIGFuZCBJIGtub3cgdGhhdCB1c3VhbGx5IG1lYW5zIGl0J3MgcHVsbGluZyBpbiB0aGUgSVB2NCBjb21wb25lbnQg4oCTIGxvb2tpbmcgYXQgdGhlIGRlcGVuZGVuY3kuIExldCBtZSBxdWlja2x5IGNvbmZpcm0gdGhhdCBieSBjaGVja2luZyB0aGUgS2NvbmZpZyBmaWxlIGZvciBgTkZfVEFCTEVTX0lQVjRgLiBJJ2xsIGdvIHN0cmFpZ2h0IHRvIGBuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZ2AgdG8gc2VlIGlmIG15IGh1bmNoIGlzIGNvcnJlY3QuIEdvdHRhIG1ha2Ugc3VyZSB0aG9zZSBkZXBlbmRlbmNpZXMgYXJlIGFsbCB3aXJlZCB1cCB0aGUgd2F5IEkgZXhwZWN0IHRoZW0gdG8gYmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NDg4LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNzozNS41MzM1ODc1MDVaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1NjE2NTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORl9UQUJMRVNfSVBWNFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZz0zMz1pZiBORl9UQUJMRVNcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy0zNC1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZzozNTpjb25maWcgTkZfVEFCTEVTX0lQVjRcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy0zNi1cXHRib29sIFxcXCJJUHY0IG5mX3RhYmxlcyBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNzozNS41ODkyMDk5NzRaIiwiU2VxIjo0NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAzMTk3NzgwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqRGl2aW5nIGludG8gdGhlIElQdjQgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBpbnRvIHRoZSBuaXR0eS1ncml0dHkgb2YgdGhlIE5ldGZpbHRlciBjb25maWd1cmF0aW9uIGZvciBJUHY0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYE5GX1RBQkxFU19JUFY0YCBpcyBzZXQgdXAuIExldCdzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byBgbmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWdgLiBUaGlzIGlzIHRoZSBmaWxlIHRoYXQgZGVmaW5lcyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLCBzbyBpdCdzIHRoZSByaWdodCBwbGFjZSB0byBnZXQgYSBmb3VuZGF0aW9uYWwgdW5kZXJzdGFuZGluZy4gSSdtIGdvaW5nIHRvIHNjYW4gdGhhdCBmaWxlIHRvIHNlZSBob3cgYE5GX1RBQkxFU19JUFY0YCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZSBvZiBOZXRmaWx0ZXIgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUga2VybmVsJ3MgbmV0d29ya2luZyBzdGFjaywgcGFydGljdWxhcmx5IGFyb3VuZCB0aGUgSVB2NCBwcm90b2NvbC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBpdHMgZGVwZW5kZW5jaWVzIGFuZCB3aGF0IGNvbmRpdGlvbnMgdHJpZ2dlciBpdHMgaW5jbHVzaW9uLiBUaGlzIHNob3VsZCBhbGxvdyBtZSB0byBmb3JtdWxhdGUgYSBwbGFuIHRvIHVuZGVyc3RhbmQgaXRzIGZ1bmN0aW9uYWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0Nzk1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6Mzc6MzkuNjIxMTkwMzJaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTc5NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzMsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMzM6XFx0aWYgTkZfVEFCTEVTXFxuICAzNDpcXHRcXG4gIDM1OlxcdGNvbmZpZyBORl9UQUJMRVNfSVBWNFxcbiAgMzY6XFx0XFx0Ym9vbCBcXFwiSVB2NCBuZl90YWJsZXMgc3VwcG9ydFxcXCJcXG4gIDM3OlxcdFxcdGhlbHBcXG4gIDM4OlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgSVB2NCBzdXBwb3J0IGZvciBuZl90YWJsZXMuXFxuICAzOTpcXHRcXG4gIDQwOlxcdGlmIE5GX1RBQkxFU19JUFY0XFxuICA0MTpcXHRcXG4gIDQyOlxcdGNvbmZpZyBORlRfUkVKRUNUX0lQVjRcXG4gIDQzOlxcdFxcdHNlbGVjdCBORl9SRUpFQ1RfSVBWNFxcbiAgNDQ6XFx0XFx0ZGVmYXVsdCBORlRfUkVKRUNUXFxuICA0NTpcXHRcXHR0cmlzdGF0ZVxcbiAgNDY6XFx0XFxuICA0NzpcXHRjb25maWcgTkZUX0RVUF9JUFY0XFxuICA0ODpcXHRcXHR0cmlzdGF0ZSBcXFwiSVB2NCBuZl90YWJsZXMgcGFja2V0IGR1cGxpY2F0aW9uIHN1cHBvcnRcXFwiXFxuICA0OTpcXHRcXHRkZXBlbmRzIG9uICFORl9DT05OVFJBQ0sgfHwgTkZfQ09OTlRSQUNLXFxuICA1MDpcXHRcXHRzZWxlY3QgTkZfRFVQX0lQVjRcXG4gIDUxOlxcdFxcdGhlbHBcXG4gIDUyOlxcdFxcdCAgVGhpcyBtb2R1bGUgZW5hYmxlcyBJUHY0IHBhY2tldCBkdXBsaWNhdGlvbiBzdXBwb3J0IGZvciBuZl90YWJsZXMuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM3OjM5LjYyMTI5MDE3WiIsIlNlcSI6NDksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1ODI0MzIwMjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmF2aWdhdGluZyB0aGUgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24gTGFieXJpbnRoKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGVzZSBOZXRmaWx0ZXIgY29uZmlndXJhdGlvbnMuIEl0IHNlZW1zIGxpa2UgaWYgYE5GX1RBQkxFU19JUFY0YCBpcyBvbiwgdGhlIGRlZmF1bHQgZm9yIGBORlRfUkVKRUNUX0lQVjRgIGlzIGdvaW5nIHRvIGJlIGBORlRfUkVKRUNUYC4gVGhhdCBtYWtlcyBzZW5zZS4gQW5kIGlmIGBORlRfUkVKRUNUX0lQVjRgIGlzIHNlbGVjdGVkLCB0aGVuIGBORl9SRUpFQ1RfSVBWNGAgZ2V0cyBjaG9zZW4uIEknbSB0cnlpbmcgdG8gZ2V0IGBORl9SRUpFQ1RfSVBWNGAgZW5hYmxlZC4gTXkgZmlyc3QgdGhvdWdodCB3YXMgdG8ganVzdCBlbmFibGUgYE5GVF9SRUpFQ1RfSVBWNGAsIG9yIGV2ZW4gYElQX05GX1RBUkdFVF9SRUpFQ1RgIGJlY2F1c2UgdGhhdCBzb3VuZHMgcmVsZXZhbnQuXG5cbkJ1dCBoYW5nIG9uLi4uIGVuYWJsaW5nIGBORl9SRUpFQ1RfSVBWNGAgZGlyZWN0bHkgbWlnaHQgYmUgYSBjbGVhbmVyIGFwcHJvYWNoLCByaWdodD8gT2gsIGJ1dCB3YWl0Li4uIEkgd2FzIHRoaW5raW5nIGl0IHdhcyBhIHRyaXN0YXRlIHdpdGhvdXQgYSBwcm9tcHQuIEkgbmVlZCBhIHByb21wdCEgTGV0IG1lIGRvdWJsZSBjaGVjay4uLiBZZXMhIFRoZSBgY29uZmlnIE5GX1JFSkVDVF9JUFY0YCAqZG9lcyogaGF2ZSBhIGB0cmlzdGF0ZSBcIklQdjQgcGFja2V0IHJlamVjdGlvblwiYCBvcHRpb24uIEV4Y2VsbGVudC4gU28gaXQncyBwcm9tcHRpbmchIE9rYXksIGxldCBtZSBnbyBiYWNrIGFuZCByZS1leGFtaW5lIHRoZSBgbmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWdgIGZpbGUgYWdhaW4gdG8gY29uZmlybSB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTMwNSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM3OjQ2LjIwMzcyNjgyOFoiLCJTZXEiOjUwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjQzNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogOTUsXG4gIFwiTGluZUNvdW50XCI6IDVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA5NTpcXHRjb25maWcgTkZfUkVKRUNUX0lQVjRcXG4gIDk2OlxcdFxcdHRyaXN0YXRlIFxcXCJJUHY0IHBhY2tldCByZWplY3Rpb25cXFwiXFxuICA5NzpcXHRcXHRkZWZhdWx0IG0gaWYgTkVURklMVEVSX0FEVkFOQ0VEPW5cXG4gIDk4OlxcdFxcbiAgOTk6XFx0aWYgTkZfTkFUXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM3OjQ2LjIwNDEyNTAzOFoiLCJTZXEiOjUxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4OTAyMzk3MjE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTmV0d29yayBGaWx0ZXIgUmVqZWN0IFBhdGNoKipcblxuT2theSwgc28gdGhlIGBORl9SRUpFQ1RfSVBWNGAgb3B0aW9uIGhhcyBhIHByb21wdCwgd2hpY2ggbWVhbnMgd2UgY2FuIGp1c3QgZW5hYmxlIHRoYXQuIEJ1dCBoYW5nIG9uLCBsZXQgbWUgY2hlY2sgd2hlcmUgYG5mX3NlbmRfdW5yZWFjaGAgbGl2ZXMsIHRoYXQncyBpbiBgbmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmNgLiAgVGhlIHBhdGNoIGlzIG1vZGlmeWluZyBgbmZfc2VuZF91bnJlYWNoYCwgYW5kIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoYXQgY29kZSBwYXRoIGlzIGFjdHVhbGx5IHJlYWNoYWJsZS5cblxuQWxyaWdodCwgYG5mX3NlbmRfdW5yZWFjaGAgKmlzKiByZWFjaGFibGUg4oCTIHRocm91Z2ggYGlwdF9SRUpFQ1RgLCBgbmZ0X3JlamVjdF9pcHY0YCwgYW5kIGBuZnRfcmVqZWN0X2luZXRgLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNoZWNrIGZvciBgaG9vayA9PSBORl9JTkVUX0lOR1JFU1NgLiBJIG5lZWQgdG8gY29uZmlybSBpZiBgTkZfSU5FVF9JTkdSRVNTYCBpcyBhY3R1YWxseSB1c2VkIGluIGBuZl9zZW5kX3VucmVhY2hgLlxuXG5MZXQncyBzZWUuIGBuZl9zZW5kX3VucmVhY2hgIGlzIGNhbGxlZCBmcm9tIGByZWplY3RfdGdgIChpcHRhYmxlcyksIGBuZnRfcmVqZWN0X2lwdjRfZXZhbGAgKG5mdGFibGVzKSwgYW5kIGBuZnRfcmVqZWN0X2luZXRfZXZhbGAgKGFsc28gbmZ0YWJsZXMpLiBJbiBgbmZ0X3JlamVjdF9pcHY0X2V2YWxgLCBgbmZ0X2hvb2socGt0KWAgaXMgcGFzc2VkIGFzIHRoZSBgaG9va2AgYXJndW1lbnQuIEJpbmdvISBgbmZ0X2hvb2socGt0KWAgKmNhbiogYmUgYE5GX0lORVRfSU5HUkVTU2AgaWYgdGhlIHJ1bGUgaXMgYXR0YWNoZWQgdG8gdGhlIGluZ3Jlc3MgaG9vay4gU28gdGhlIGNvZGUgaXMgcmVhY2hhYmxlLCBubyBwcm9ibGVtIHRoZXJlLlxuXG5Ob3cgSSBrbm93IHdoYXQgdG8gZm9jdXMgb246IGBuZl9zZW5kX3VucmVhY2hgIGlzIHRoZSBtb2RpZmllZCBmdW5jdGlvbi4gVGhlIHBhdGNoJ3MgaW1wYWN0IGlzIGNlbnRlcmVkIHRoZXJlLiBJIGRvbid0IHNlZSBhbnkgb3RoZXIgZnVuY3Rpb25zIGJlaW5nIHRvdWNoZWQgYnkgdGhlIHBhdGNoLCBzbyB0aGUgYW5hbHlzaXMgaXMgc3RyYWlnaHQgZm9yd2FyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU4NDQsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNzo1NS4xMDY1MjUwNjRaIiwiU2VxIjo1MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY3OTE1OTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mX3NlbmRfdW5yZWFjaFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYz0zNDQ9RVhQT1JUX1NZTUJPTF9HUEwobmZfc2VuZF9yZXNldCk7XFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMtMzQ1LVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jOjM0Njp2b2lkIG5mX3NlbmRfdW5yZWFjaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luLCBpbnQgY29kZSwgaW50IGhvb2spXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMtMzQ3LXtcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jLTM3Mi19XFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmM6MzczOkVYUE9SVF9TWU1CT0xfR1BMKG5mX3NlbmRfdW5yZWFjaCk7XFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMtMzc0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNzo1NS4xNzQ0NDUxNjJaIiwiU2VxIjo1MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTgzNjE2NDQ2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqRXZhbHVhdGluZyBJUHY0IGFuZCBJbmV0IFJlamVjdGlvbiBpbiBuZnRhYmxlcyoqXG5cbk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoaXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIGBuZnRfcmVqZWN0X2lwdjRfZXZhbGAgYW5kIGBuZnRfcmVqZWN0X2luZXRfZXZhbGAuIFRoZXkncmUgdGhlIGNyaXRpY2FsIGZ1bmN0aW9ucyBoZXJlLCByaWdodD8gV2UncmUgZGVhbGluZyB3aXRoIHBhY2tldCByZWplY3Rpb24sIGFuZCB0aGVzZSBmdW5jdGlvbnMgYXJlIGxpa2VseSBhdCB0aGUgaGVhcnQgb2YgdGhlIGxvZ2ljLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGV5J3JlIGhhbmRsaW5nIElQdjQgYW5kIGdlbmVyYWwgaW5ldCAod2hpY2ggb2Z0ZW4gaW5jbHVkZXMgSVB2NCBhbmQgSVB2NiwgcmlnaHQ/KSB0cmFmZmljLiBJIHdhbnQgdG8gc2VlIHRoZSBuaXR0eS1ncml0dHkgb2YgdGhlaXIgZXZhbHVhdGlvbiBwcm9jZXNzZXMuIFdoYXQgYXJlIHRoZSBzcGVjaWZpYyBjcml0ZXJpYT8gV2hhdCdzIHRoZSBzaG9ydC1jaXJjdWl0aW5nIGxvZ2ljPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBvciBzdWJ0bGUgZGlmZmVyZW5jZXMgaW4gdGhlIHdheSB0aGV5IGhhbmRsZSBlZGdlIGNhc2VzPyBJJ20gYW50aWNpcGF0aW5nIHRoYXQgZXhhbWluaW5nIHRoZXNlIHR3byBmdW5jdGlvbnMgd2lsbCBnaXZlIG1lIGEgc29saWQgZm91bmRhdGlvbiBmb3IgdW5kZXJzdGFuZGluZyB0aGUgYnJvYWRlciByZWplY3Rpb24gc3RyYXRlZ3kgaW4gdGhlIG5mdGFibGVzIGNvbnRleHQuIEl04oCZcyB0aGUgbG9naWNhbCBwbGFjZSB0byBiZWdpbiBteSBpbnZlc3RpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjc2MiwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM4OjAxLjAxMDYxNDMxM1oiLCJTZXEiOjU0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjI0MzczNTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZ0X3JlamVjdF9pcHY0X2V2YWxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaXB2NC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L25ldGZpbHRlci9uZnRfcmVqZWN0X2lwdjQuYy0xOC1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pcHY0LmM6MTk6c3RhdGljIHZvaWQgbmZ0X3JlamVjdF9pcHY0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxcbm5ldC9pcHY0L25ldGZpbHRlci9uZnRfcmVqZWN0X2lwdjQuYy0yMC1cXHRcXHRcXHRcXHQgc3RydWN0IG5mdF9yZWdzICpyZWdzLFxcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaXB2NC5jPTQxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZ0X2V4cHJfb3BzIG5mdF9yZWplY3RfaXB2NF9vcHMgPSB7XFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pcHY0LmMtNDMtXFx0LnNpemVcXHRcXHQ9IE5GVF9FWFBSX1NJWkUoc2l6ZW9mKHN0cnVjdCBuZnRfcmVqZWN0KSksXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaXB2NC5jOjQ0OlxcdC5ldmFsXFx0XFx0PSBuZnRfcmVqZWN0X2lwdjRfZXZhbCxcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pcHY0LmMtNDUtXFx0LmluaXRcXHRcXHQ9IG5mdF9yZWplY3RfaW5pdCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6Mzg6MDEuMDczMDU2MDkxWiIsIlNlcSI6NTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NzM0Mjg1MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgY29kZSwgZnJhbWVkIGFzIG15IG93biB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIFBhY2tldCBSZWplY3Rpb24gTG9naWMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhY2tldCByZWplY3Rpb24gY29kZS4gSSBzZWUgdGhhdCBgbmZ0X3JlamVjdF9pcHY0X2V2YWxgLCBgbmZ0X3JlamVjdF9pbmV0X2V2YWxgLCBhbmQgYHJlamVjdF90Z2AgYXJlIGFsbCBzdGF0aWMgZnVuY3Rpb25zLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoZXkncmUgbGlrZWx5IGhlbHBlciBmdW5jdGlvbnMgb3IgaW50ZXJuYWwgaW1wbGVtZW50YXRpb25zLCBub3QgdGhlIHByaW1hcnkgZW50cnkgcG9pbnRzLiBTbywgdGhlIGtleSBmdW5jdGlvbiBoZXJlLCB0aGUgb25lIGRyaXZpbmcgdGhlIGNvcmUgbG9naWMsIHNlZW1zIHRvIGJlIGBuZl9zZW5kX3VucmVhY2hgLlxuXG5Ob3csIGJlZm9yZSBJIGRpZyBpbnRvIGBuZl9zZW5kX3VucmVhY2hgLCBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgc3RhdGUgb2YgdGhlIHBhY2tldCBpbW1lZGlhdGVseSBwcmlvciB0byB0aGUgcGF0Y2guIEknbGwgbmVlZCB0byBjaGVjayB0aGUgZnVuY3Rpb24gdGhhdCBjb21lcyBqdXN0IGJlZm9yZSBpdCB0byBnZXQgbXkgYmVhcmluZ3MuIExldCdzIHRha2UgYSBsb29rIGF0IGBuZl9yZWplY3RfZmlsbF9za2JfZHN0YCBhbmQgc2VlIHdoYXQncyBoYXBwZW5pbmcgdGhlcmUuIFRoYXQgc2hvdWxkIHNldCB0aGUgc3RhZ2UgbmljZWx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzI4NywiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM4OjA0Ljk0NjQ4ODc2MloiLCJTZXEiOjU2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA2MDM0MjE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mX3JlamVjdF9maWxsX3NrYl9kc3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmM9MjI2PXN0YXRpYyB2b2lkIG5mX3JlamVjdF9pcF90Y3BoZHJfcHV0KHN0cnVjdCBza19idWZmICpuc2tiLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqb2xkc2tiLFxcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMtMjU0LVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jOjI1NTpzdGF0aWMgaW50IG5mX3JlamVjdF9maWxsX3NrYl9kc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYl9pbilcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYy0yNTYte1xcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmM9MjcxPXZvaWQgbmZfc2VuZF9yZXNldChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKm9sZHNrYixcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jLTI4MS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYzoyODI6XFx0aWYgKCFza2JfZHN0KG9sZHNrYikgXFx1MDAyNlxcdTAwMjYgbmZfcmVqZWN0X2ZpbGxfc2tiX2RzdChvbGRza2IpIFxcdTAwM2MgMClcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYy0yODMtXFx0XFx0cmV0dXJuO1xcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmM9MzQ2PXZvaWQgbmZfc2VuZF91bnJlYWNoKHN0cnVjdCBza19idWZmICpza2JfaW4sIGludCBjb2RlLCBpbnQgaG9vaylcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jLTM1NC1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYzozNTU6XFx0aWYgKCFza2JfZHN0KHNrYl9pbikgXFx1MDAyNlxcdTAwMjYgbmZfcmVqZWN0X2ZpbGxfc2tiX2RzdChza2JfaW4pIFxcdTAwM2MgMClcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYy0zNTYtXFx0XFx0cmV0dXJuO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozODowNS4wNTI1MjY3NDlaIiwiU2VxIjo1NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzA2NjUxNDUyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldGZpbHRlciBSZWplY3Rpb24gTG9naWMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIE5ldGZpbHRlciBjb2RlLCBzcGVjaWZpY2FsbHkgdGhlIHJlamVjdGlvbiBsb2dpYy4gYG5mX3JlamVjdF9maWxsX3NrYl9kc3RgIGlzIHN0YXRpYywgd2hpY2ggaXNuJ3QgZ29pbmcgdG8gYmUgaGVscGZ1bCBmb3IgbXkgYW5hbHlzaXMuIFRoYXQgbWVhbnMgYG5mX3NlbmRfdW5yZWFjaGAgaXMgdGhlIG1vcmUgcmVsZXZhbnQgZnVuY3Rpb24gdG8gZm9jdXMgb24uIEhtbSwgd2hhdCBhYm91dCBgbmZfc2VuZF9yZXNldGAgdGhvdWdoPyBUaGUgcGF0Y2ggZG9lc24ndCB0b3VjaCBpdCwgYnV0IGl0IGxpdmVzIGluIHRoZSBzYW1lIGZpbGUuIEkgc2hvdWxkIGtlZXAgaXQgaW4gbWluZCBhcyBhIHBvdGVudGlhbCBwb2ludCBvZiBjb25uZWN0aW9uLCBldmVuIGlmIGl0J3Mgbm90IGRpcmVjdGx5IG1vZGlmaWVkIGhlcmUuXG5cbk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBvZiB0aGlzIGNvZGUgdG8gdGhlIGJyb2FkZXIgTmV0ZmlsdGVyIGVjb3N5c3RlbS4gSXMgYE5GX1JFSkVDVF9JUFY0YCBzdWZmaWNpZW50IHRvIGNvdmVyIHdoYXQgdGhpcyBwYXRjaCBhZGRyZXNzZXM/IFllcywgYE5GX1JFSkVDVF9JUFY0YCBjb21waWxlcyBgbmZfcmVqZWN0X2lwdjQuY2AsIHNvIHRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIFRvIHRyaWdnZXIgaXQgdmlhIG5mdGFibGVzLCBJIG5lZWQgdG8gbG9vayBhdCB3aGV0aGVyIGBORlRfUkVKRUNUX0lQVjRgLCBgTkZUX1JFSkVDVF9JTkVUYCwgb3IgYE5GVF9SRUpFQ1RfTkVUREVWYCBhcmUgaW52b2x2ZWQuIFdhaXQgYSBtaW51dGUsIHRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgdGFyZ2V0cyB0aGUgYGhvb2sgPT0gTkZfSU5FVF9JTkdSRVNTYC4gUmlnaHQsIGBORl9JTkVUX0lOR1JFU1NgIGlzIHVzZWQgd2l0aGluIHRoZSBuZXRkZXYgZmFtaWx5IGluIG5mdGFibGVzLiBPa2F5LCBzbyB0aGF0IG1lYW5zIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgaWYgYE5GVF9SRUpFQ1RfTkVUREVWYCBpcyBwcmVzZW50IGFuZCByZWxldmFudC4gVGhhdCBzZWVtcyB0aGUga2V5IGxpbmsgdG8gcHVyc3VlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODA3NSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozODoxMi4xMTkwNDU0MzJaIiwiU2VxIjo1OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxNjA4ODIxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORlRfUkVKRUNUX05FVERFVlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTY4MD1jb25maWcgTkZUX0ZJQl9ORVRERVZcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy02ODgtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjY4OTpjb25maWcgTkZUX1JFSkVDVF9ORVRERVZcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNjkwLVxcdGRlcGVuZHMgb24gTkZUX1JFSkVDVF9JUFY0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM4OjEyLjQzNTEzOTcyM1oiLCJTZXEiOjU5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjgzMDMxMTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIHRleHQsIHJlbmRlcmVkIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzc3VtaW5nIEknbSBhbiBleHBlcnQgaW4gdGhpcyBmaWVsZDpcblxuKipEaXZpbmcgaW50byBuZXRmaWx0ZXIncyBLY29uZmlnOiBGb2N1c2luZyBvbiBORlRfUkVKRUNUX05FVERFVioqXG5cbk9rYXksIGxldCdzIHB1bGwgdXAgYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AuIFdlJ3JlIGdvaW5nIHRvIHplcm8gaW4gb24gdGhlIGBORlRfUkVKRUNUX05FVERFVmAgb3B0aW9uLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGlzIGZlYXR1cmUgaXMgY29uZmlndXJlZCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgaXQgaGFzLiBUaGlzIHByb2JhYmx5IHRpZXMgaW50byBob3cgd2UgaGFuZGxlIHJlamVjdGVkIHBhY2tldHMgd2l0aGluIHRoZSBuZXRkZXYgY29udGV4dCB1c2luZyBuZnRhYmxlcy4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBob3cgaXQgaW50ZXJmYWNlcyB3aXRoIHRoZSBvdGhlciByZWplY3QgbWVjaGFuaXNtcy4gSXMgdGhpcyBhIHJlcGxhY2VtZW50LCBhbiBlbmhhbmNlbWVudCwgb3IgYSBjb21wbGV0ZWx5IG9ydGhvZ29uYWwgZmVhdHVyZT8gV2hhdCBvdGhlciBvcHRpb25zIG5lZWQgdG8gYmUgZW5hYmxlZCBmb3IgYE5GVF9SRUpFQ1RfTkVUREVWYCB0byBmdW5jdGlvbiBjb3JyZWN0bHk/IEFyZSB0aGVyZSBhbnkgc3BlY2lmaWMga2VybmVsIHZlcnNpb25zIHdoZXJlIHRoaXMgZnVuY3Rpb25hbGl0eSB3YXMgaW50cm9kdWNlZCBvciBzdWJzdGFudGlhbGx5IGNoYW5nZWQ/IEFyZSB0aGVyZSBhbnkgdW51c3VhbCBjb25maWd1cmF0aW9uIGdvdGNoYXMgSSBzaG91bGQgYmUgYXdhcmUgb2YsIGxpa2UgZGVwZW5kZW5jaWVzIG9uIHNwZWNpZmljIGhhcmR3YXJlIG9yIG90aGVyIGtlcm5lbCBtb2R1bGVzPyBMb29raW5nIGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIHdpbGwgdGVsbCB0aGUgc3RvcnkuIExldCdzIHNlZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODcxOCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM4OjE4LjExODE3MzkzOFoiLCJTZXEiOjYwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDAzNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY4NSxcbiAgXCJMaW5lQ291bnRcIjogMTVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDY4NTpcXHRcXHQgIFRoaXMgb3B0aW9uIGFsbG93cyB1c2luZyB0aGUgRklCIGV4cHJlc3Npb24gZnJvbSB0aGUgbmV0ZGV2IHRhYmxlLlxcbiA2ODY6XFx0XFx0ICBUaGUgbG9va3VwIHdpbGwgYmUgZGVsZWdhdGVkIHRvIHRoZSBJUHY0IG9yIElQdjYgRklCIGRlcGVuZGluZ1xcbiA2ODc6XFx0XFx0ICBvbiB0aGUgcHJvdG9jb2wgb2YgdGhlIHBhY2tldC5cXG4gNjg4OlxcdFxcbiA2ODk6XFx0Y29uZmlnIE5GVF9SRUpFQ1RfTkVUREVWXFxuIDY5MDpcXHRcXHRkZXBlbmRzIG9uIE5GVF9SRUpFQ1RfSVBWNFxcbiA2OTE6XFx0XFx0ZGVwZW5kcyBvbiBORlRfUkVKRUNUX0lQVjZcXG4gNjkyOlxcdFxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgbmZfdGFibGVzIG5ldGRldiBSRUpFQ1Qgc3VwcG9ydFxcXCJcXG4gNjkzOlxcdFxcdGhlbHBcXG4gNjk0OlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgUkVKRUNUIHN1cHBvcnQgZnJvbSB0aGUgbmV0ZGV2IHRhYmxlLlxcbiA2OTU6XFx0XFx0ICBUaGUgcmV0dXJuIHBhY2tldCBnZW5lcmF0aW9uIHdpbGwgYmUgZGVsZWdhdGVkIHRvIHRoZSBJUHY0XFxuIDY5NjpcXHRcXHQgIG9yIElQdjYgSUNNUCBvciBUQ1AgUlNUIGltcGxlbWVudGF0aW9uIGRlcGVuZGluZyBvbiB0aGVcXG4gNjk3OlxcdFxcdCAgcHJvdG9jb2wgb2YgdGhlIHBhY2tldC5cXG4gNjk4OlxcdFxcbiA2OTk6XFx0ZW5kaWYgIyBORl9UQUJMRVNfTkVUREVWXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM4OjE4LjExODMxNjk3OFoiLCJTZXEiOjYxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDg1MDg0ODkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktlcm5lbCBDb25maWd1cmF0aW9uIENvbnVuZHJ1bSoqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGtlcm5lbCBjb25maWd1cmF0aW9uIGFuZCBJIHNlZSB0aGF0IGBORlRfUkVKRUNUX05FVERFVmAgaXMgcmVsaWFudCBvbiBib3RoIGBORlRfUkVKRUNUX0lQVjRgIGFuZCBgTkZUX1JFSkVDVF9JUFY2YC4gTWFrZXMgcGVyZmVjdCBzZW5zZS4gQW5kLCBhcyBpZiB0aGF0IHdlcmVuJ3QgZW5vdWdoLCBpdCdzIGFsc28gbmVzdGVkIHdpdGhpbiBhbiBgaWYgTkZfVEFCTEVTX05FVERFVmAgY29uZGl0aW9uLiBPa2F5LCBzbyB0byBnZXQgdGhpcyBmdW5jdGlvbmFsaXR5IGVuYWJsZWQsIGl0J3MgY2xlYXI6IEkgbmVlZCB0byBleHBsaWNpdGx5IGVuYWJsZSBib3RoIGBORl9UQUJMRVNfTkVUREVWYCAqYW5kKiBgTkZUX1JFSkVDVF9ORVRERVZgLiBTZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBOb3csIGJlZm9yZSBJIGNvbW1pdCB0byB0aGF0LCBJJ2QgYmV0dGVyIGRvdWJsZS1jaGVjayBgTkZfVEFCTEVTX05FVERFVmAgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBvdGhlciBpbXBsaWNhdGlvbnMgSSdtIG1pc3NpbmcuIExldCdzIG1ha2Ugc3VyZSB0aGF0J3MgZXhhY3RseSB3aGF0IEkgZXhwZWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTI1MCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6Mzg6MjEuNjAzNDA2MjgxWiIsIlNlcSI6NjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDE2NTQzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZfVEFCTEVTX05FVERFVlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTQ3Mj1jb25maWcgTkZfVEFCTEVTX0lORVRcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NzktXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ4MDpjb25maWcgTkZfVEFCTEVTX05FVERFVlxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00ODEtXFx0Ym9vbCBcXFwiTmV0ZmlsdGVyIG5mX3RhYmxlcyBuZXRkZXYgdGFibGVzIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM4OjIxLjY2NzU3NTg2OVoiLCJTZXEiOjYzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTI3MjYwNzA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBpbnN0cnVjdGlvbnMsIHRoaW5raW5nIHRocm91Z2ggdGhlbSBhcyBJIHdvdWxkIGFwcHJvYWNoIGEgc2ltaWxhciB0YXNrOlxuXG4qKkVuYWJsaW5nIE5ldGRldiBGZWF0dXJlcyBmb3IgbmZ0YWJsZXMqKlxuXG5SaWdodCwgc28gd2UncmUgbG9va2luZyB0byBlbmFibGUgc29tZSBuZXRkZXYtc3BlY2lmaWMgZmVhdHVyZXMgZm9yIG5mdGFibGVzLCBzcGVjaWZpY2FsbHkgYE5GX1RBQkxFU19ORVRERVZgIGFuZCBgTkZUX1JFSkVDVF9ORVRERVZgLiBUaGF0IHNvdW5kcyBsaWtlIGEgZ29vZCBkaXJlY3Rpb24sIHBhcnRpY3VsYXJseSBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggdHJhZmZpYyBmaWx0ZXJpbmcgYXQgdGhlIG5ldHdvcmsgZGV2aWNlIGxldmVsLiBXZSB3YW50IHRoYXQgZmluZS1ncmFpbmVkIGNvbnRyb2wgZm9yIG1vcmUgcGVyZm9ybWFudCBwYWNrZXQgcHJvY2Vzc2luZy4gTm93LCBiZWZvcmUgd2UgZmxpcCB0aGUgc3dpdGNoIG9uIGBORlRfUkVKRUNUX05FVERFVmAsIHRob3VnaCwgaXQncyBhbHdheXMgd2lzZSB0byBjaGVjayBmb3IgYW55IGRlcGVuZGVuY2llcywgZXNwZWNpYWxseSB3aXRoIG5mdGFibGVzLiBJdCdzIHNtYXJ0IHRvIGRvdWJsZSBjaGVjaywgc28gbGV0J3MgdGFrZSBhIHF1aWNrIGxvb2sgYXQgdGhlIGRlcGVuZGVuY2llcyBmb3IgYE5GVF9SRUpFQ1RfSVBWNGAgc2luY2UgYE5GVF9SRUpFQ1RfTkVUREVWYCB3aWxsIHByb2JhYmx5IHRvdWNoIGlwdjQgYXMgd2VsbC4gTWFraW5nIHN1cmUgd2UgZG9uJ3QgaW50cm9kdWNlIGFueSB1bmV4cGVjdGVkIGNvbmZsaWN0cyBvciBicmVhayBleGlzdGluZyBjb25maWd1cmF0aW9ucyBpcyBrZXkgdG8gYSBzdGFibGUgZGVwbG95bWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk2NDksIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozODoyNS43OTQ4NDAxODJaIiwiU2VxIjo2NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxNzU0NTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORlRfUkVKRUNUX0lQVjRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc9NDA9aWYgTkZfVEFCTEVTX0lQVjRcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy00MS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZzo0Mjpjb25maWcgTkZUX1JFSkVDVF9JUFY0XFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctNDMtXFx0c2VsZWN0IE5GX1JFSkVDVF9JUFY0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM4OjI1Ljg1NjU5OTI1MVoiLCJTZXEiOjY1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTA0ODIzODUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipEZXBlbmRlbmN5IERlZXAgRGl2ZTogSVB2NCBhbmQgSVB2NiBpbiB0aGUgRmlyZXdhbGwgQ29udGV4dCoqXG5cblJpZ2h0LCBsZXQncyBzdGFydCB3aXRoIHRoaXMgZmlyZXdhbGwgY29uZmlndXJhdGlvbiwgSSdtIHRoaW5raW5nLCBJIGtub3cgYE5GX1RBQkxFU19JUFY0YCBpcyBlc3NlbnRpYWwsIGFuZCBubyBzdXJwcmlzZXMgdGhlcmUsIHRoYXQncyBleHBlY3RlZC4gTXkgbmV4dCB0aG91Z2h0IGlzIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgcGljdHVyZSwgc28gSSdtIHNoaWZ0aW5nIG15IGZvY3VzIG5vdyBhbmQgaW1tZWRpYXRlbHkgZGlnZ2luZyBpbnRvIHRoZSBkZXBlbmRlbmNpZXMgb2YgYE5GX1RBQkxFU19JUFY2YC4gSSBuZWVkIHRvIGVuc3VyZSBhIGNvbXBsZXRlIGFuZCBjb21wYXRpYmxlIHNldHVwLiBJIGhhdmUgdG8gdGhpbmsgYWJvdXQgcG90ZW50aWFsIGludGVyZGVwZW5kZW5jaWVzLCBvZiBjb3Vyc2UuIEkgd2FudCB0byBhdm9pZCBhbnkgY29uZmlndXJhdGlvbiBzdXJwcmlzZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMDM2LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6Mzg6MzAuNzYxNDI1MTcxWiIsIlNlcSI6NjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDE2MDUzMjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GX1RBQkxFU19JUFY2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnPTI5PWlmIE5GX1RBQkxFU1xcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTMwLVxcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnOjMxOmNvbmZpZyBORl9UQUJMRVNfSVBWNlxcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTMyLVxcdGJvb2wgXFxcIklQdjYgbmZfdGFibGVzIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM4OjMwLjk2MzAzNzMzNVoiLCJTZXEiOjY3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTY4NDMxMjcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqTXkgSW1tZWRpYXRlIEFzc2Vzc21lbnQqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgcGhyYXNlIFwiTkZUX1JFSkVDVF9JUFY2XCIganVzdCBwb3BwZWQgaW50byBteSBoZWFkLiBNeSBpbml0aWFsIHJlYWN0aW9uIGlzLCB0aGlzIGlzIGxpa2VseSByZWxhdGVkIHRvIG5ldHdvcmsgY29uZmlndXJhdGlvbiBhbmQgc3BlY2lmaWNhbGx5LCBob3cgYSBzeXN0ZW0gb3IgYXBwbGljYXRpb24gaXMgaGFuZGxpbmcgSVB2NiB0cmFmZmljIGluIHRoZSBjb250ZXh0IG9mIE5vbi1GdW5naWJsZSBUb2tlbnMgKE5GVHMpLiBHaXZlbiB0aGUgc3BlY2lmaWNpdHkgb2YgdGhlIHRlcm1pbm9sb2d5LCBJJ20gYWxyZWFkeSBmb3JtdWxhdGluZyBhIGZldyBrZXkgcG9zc2liaWxpdGllcy5cblxuRmlyc3QsIEkgaW1tZWRpYXRlbHkgY29uc2lkZXIgdGhlIHNlY3VyaXR5IGltcGxpY2F0aW9ucy4gSXMgdGhpcyBhIHJ1bGUgZGVzaWduZWQgdG8gKnJlamVjdCogSVB2NiBjb25uZWN0aW9ucyBvciB0cmFmZmljPyBJZiBzbywgd2h5PyBJcyB0aGlzIHRvIG1pdGlnYXRlIHBvdGVudGlhbCBhdHRhY2sgdmVjdG9ycyBvciB2dWxuZXJhYmlsaXRpZXMgYXNzb2NpYXRlZCB3aXRoIElQdjYgaW1wbGVtZW50YXRpb25zLCBwZXJoYXBzIHRob3NlIGxlc3Mgd2VsbC10ZXN0ZWQgb3IgbW9yZSByZWNlbnRseSBwYXRjaGVkIHRoYW4gdGhlaXIgSVB2NCBjb3VudGVycGFydHMgd2l0aGluIHRoZSBzeXN0ZW0/IEFyZSB0aGVyZSBrbm93biBpc3N1ZXMgdGhhdCBtYWtlIElQdjYgbGVzcyBzZWN1cmUsIG9yIG1vcmUgc3VzY2VwdGlibGUgdG8gY2VydGFpbiB0eXBlcyBvZiBhdHRhY2tzLCB3aXRoaW4gdGhlIHNwZWNpZmljIGFyY2hpdGVjdHVyZSBvciBlbnZpcm9ubWVudCB0aGUgTkZUcyBhcmUgb3BlcmF0aW5nIGluPyBUaGUgaW1wbGljYXRpb25zIGFyZSB3aWRlLlxuXG5TZWNvbmQsIEknbSB0aGlua2luZyBhYm91dCB0aGUgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGNvbnNpZGVyYXRpb25zLiBJcyByZWplY3RpbmcgSVB2NiBhIGRlbGliZXJhdGUgb3B0aW1pemF0aW9uPyBQZXJoYXBzIHRoZXJlJ3MgYSBzcGVjaWZpYyByZWFzb24gSVB2NiBpc24ndCBzdXBwb3J0ZWQsIGxpa2UgZGVwZW5kZW5jaWVzIG9uIElQdjQtb25seSBpbmZyYXN0cnVjdHVyZSB3aXRoaW4gdGhlIE5GVCdzIHN5c3RlbSwgb3IgdGhhdCByZWplY3RpbmcgSVB2NiBpbmNyZWFzZXMgdGhlIHBlcmZvcm1hbmNlIG9mIHRoZSBzeXN0ZW0gaW4gc29tZSByZWdhcmQuIEl0IGNvdWxkIGJlIHRoYXQgdGhlIGN1cnJlbnQgaW5mcmFzdHJ1Y3R1cmUgb3IgY29kZWJhc2UgcmVsaWVzIG1vcmUgaGVhdmlseSBvbiBJUHY0IGZvciBpbnRlcm5hbCBjb21tdW5pY2F0aW9uIG9yIGV4dGVybmFsIHF1ZXJpZXMuXG5cbkZpbmFsbHksIEknbSBtZW50YWxseSBwYXJzaW5nIHRoZSBsYXJnZXIgY29udGV4dC4gSXMgdGhpcyBhIGNvbmZpZ3VyYXRpb24gZGlyZWN0aXZlIHdpdGhpbiBhIGZpcmV3YWxsLCBhIGxvYWQgYmFsYW5jZXIsIGEgY29udGFpbmVyIG9yY2hlc3RyYXRpb24gc3lzdGVtLCBvciBzb21lIG90aGVyIG5ldHdvcmsgZGV2aWNlIG9yIGFwcGxpY2F0aW9uIGNvbnRyb2xsaW5nIGFjY2VzcyB0byBORlQtcmVsYXRlZCBzZXJ2aWNlcz8gV2hhdCdzIHRoZSAqcmVhc29uKiBmb3IgdGhpcyByZWplY3Rpb24/IElzIGl0IGEgZGVmYXVsdCwgb3IgaGFzIGl0IGJlZW4gZXhwbGljaXRseSBjb25maWd1cmVkPyBJZiBpdCdzIGEgc2VjdXJpdHkgbWVhc3VyZSwgaGFzIHRoZSBzeXN0ZW0gcmVjZWl2ZWQgcmVndWxhciBzZWN1cml0eSBhdWRpdHMgdG8gY29uZmlybSBpdHMgZWZmZWN0aXZlbmVzcz8gSWYgaXQncyBmb3IgcGVyZm9ybWFuY2UsIHdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgb24gdXNlcnMgdGhhdCBkZXBlbmQgb24gSVB2NiBjb25uZWN0aW9ucz9cblxuXG4iLCJJbnB1dFRva2VucyI6MjAzNDMsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozODozNi4xMzE0NzE3MzdaIiwiU2VxIjo2OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjQ1MTc3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZUX1JFSkVDVF9JUFY2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnPTM2PWlmIE5GX1RBQkxFU19JUFY2XFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMzctXFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc6Mzg6Y29uZmlnIE5GVF9SRUpFQ1RfSVBWNlxcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTM5LVxcdHNlbGVjdCBORl9SRUpFQ1RfSVBWNlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozODozNi4yMzM5MzAxNTRaIiwiU2VxIjo2OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjUxMjM1NjMzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFbmFibGluZyBOZXRmaWx0ZXIgUmVqZWN0IEZ1bmN0aW9uYWxpdHkqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IHRoaXMgTmV0ZmlsdGVyIHJlamVjdCBmdW5jdGlvbmFsaXR5IHdvcmtpbmcuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBlbmFibGUgYSBzdWl0ZSBvZiBvcHRpb25zOiBgTkZfVEFCTEVTYCwgYE5GX1RBQkxFU19JUFY0YCwgYE5GVF9SRUpFQ1RfSVBWNGAsIGBORl9UQUJMRVNfSVBWNmAsIGBORlRfUkVKRUNUX0lQVjZgLCBgTkZfVEFCTEVTX05FVERFVmAsIGFuZCBgTkZUX1JFSkVDVF9ORVRERVZgLiBXYWl0IGEgbWludXRlLCBJIHNob3VsZCBhbHNvIGNvbnNpZGVyIGBORl9UQUJMRVNfSU5FVGAg4oCTIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgdG9vLCBjb25zaWRlcmluZyB0aGUgY29udGV4dC5cblxuRmlyc3QgdGhpbmdzIGZpcnN0LCBJJ2xsIGNvbmZpcm0gdGhhdCBgTkZfVEFCTEVTYCBpdHNlbGYgaXMgdGhlIGNvcmUgcmVxdWlyZW1lbnQuIFllcCwgdGhhdCdzIHRoZSBiaWcgb25lLiBJdCBsb29rcyBsaWtlIGl0LlxuXG5OZXh0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBjb2RlIGNvbXBpbGVzLiBXaWxsIGBORl9SRUpFQ1RfSVBWNGAgYWxvbmUgYmUgc3VmZmljaWVudD8gWWVzLCBpdCBhcHBlYXJzIHNvOyB0aGF0IHRha2VzIGNhcmUgb2YgdGhlIGNvbXBpbGF0aW9uIG9mIGBuZl9yZWplY3RfaXB2NC5jYC4gSG93ZXZlciwganVzdCBjb21waWxpbmcgaXNuJ3QgZW5vdWdoOyB0aGUgY29kZSBuZWVkcyB0byAqZnVuY3Rpb24qLiBUbyBwcm9wZXJseSByZWFjaCB0aGUgYE5GX0lORVRfSU5HUkVTU2AgaG9vaywgSSBiZWxpZXZlIEkgbmVlZCBgTkZUX1JFSkVDVF9ORVRERVZgLiBJIHNob3VsZCB0YWtlIGEgbG9vayBhdCB0aGUgY29kZSBpbiBgbmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X25ldGRldi5jYCB0byBjb25maXJtIG15IHRoaW5raW5nIGFuZCB1bmRlcnN0YW5kIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDg5MywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozODo0Mi43NDYyODg3ODVaIiwiU2VxIjo3MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwOTg5Njk4NywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfc2VuZF91bnJlYWNoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9uZXRkZXYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6Mzg6NDIuODU2MTkxMzIyWiIsIlNlcSI6NzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNDQyMjU0OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4uLlxuXG4qKkRlZXBlciBEaXZlIGludG8gbmZ0X3JlamVjdF9uZXRkZXYuYyoqXG5cbkhvbGQgb24gYSBtaW51dGUsIHRoaXMgaXMgdGhyb3dpbmcgbWUgb2ZmLiBJIHdhcyB1bmRlciB0aGUgaW1wcmVzc2lvbiB0aGF0IGBuZnRfcmVqZWN0X25ldGRldi5jYCBtYWRlIHVzZSBvZiBgbmZfc2VuZF91bnJlYWNoYCwgYnV0IGxvb2tpbmcgYXQgdGhlIGNvZGUgZGlyZWN0bHksIGl0IGRvZXNuJ3Qgc2VlbSB0byBjYWxsIGl0LiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYXNzdW1wdGlvbi4gTGV0IG1lIGltbWVkaWF0ZWx5IGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZywgYW5kIGNoZWNrIHRoZSBzb3VyY2UgY29kZSBmb3IgYG5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9uZXRkZXYuY2AuIEkgbmVlZCB0byBlbnN1cmUgSSBoYXZlIGEgY29tcGxldGUgcGljdHVyZSBvZiB0aGUgY29udHJvbCBmbG93IHdpdGhpbiB0aGlzIG1vZHVsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE0NDgsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozODo0Ni4wMDA0MTk2NjVaIiwiU2VxIjo3MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA3NTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9uZXRkZXYuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdC8qXFxuICAgMzpcXHQgKiBDb3B5cmlnaHQgKGMpIDIwMjAgTGF1cmEgR2FyY2lhIExpZWJhbmEgXFx1MDAzY25ldm9sYUBnbWFpbC5jb21cXHUwMDNlXFxuICAgNDpcXHQgKiBDb3B5cmlnaHQgKGMpIDIwMjAgSm9zZSBNLiBHdWlzYWRvIFxcdTAwM2NndWlnb21AcmlzZXVwLm5ldFxcdTAwM2VcXG4gICA1OlxcdCAqL1xcbiAgIDY6XFx0XFxuICAgNzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZXRoZXJkZXZpY2UuaFxcdTAwM2VcXG4gICA4OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9rZXJuZWwuaFxcdTAwM2VcXG4gICA5OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9pbml0LmhcXHUwMDNlXFxuICAxMDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuICAxMTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbmV0bGluay5oXFx1MDAzZVxcbiAgMTI6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L25ldGZpbHRlci5oXFx1MDAzZVxcbiAgMTM6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L25ldGZpbHRlci9uZl90YWJsZXMuaFxcdTAwM2VcXG4gIDE0OlxcdCNpbmNsdWRlIFxcdTAwM2NuZXQvbmV0ZmlsdGVyL25mX3RhYmxlcy5oXFx1MDAzZVxcbiAgMTU6XFx0I2luY2x1ZGUgXFx1MDAzY25ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdC5oXFx1MDAzZVxcbiAgMTY6XFx0I2luY2x1ZGUgXFx1MDAzY25ldC9uZXRmaWx0ZXIvaXB2NC9uZl9yZWplY3QuaFxcdTAwM2VcXG4gIDE3OlxcdCNpbmNsdWRlIFxcdTAwM2NuZXQvbmV0ZmlsdGVyL2lwdjYvbmZfcmVqZWN0LmhcXHUwMDNlXFxuICAxODpcXHRcXG4gIDE5OlxcdHN0YXRpYyB2b2lkIG5mdF9yZWplY3RfcXVldWVfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqbnNrYiwgc3RydWN0IHNrX2J1ZmYgKm9sZHNrYilcXG4gIDIwOlxcdHtcXG4gIDIxOlxcdFxcdGRldl9oYXJkX2hlYWRlcihuc2tiLCBuc2tiLVxcdTAwM2VkZXYsIG50b2hzKG9sZHNrYi1cXHUwMDNlcHJvdG9jb2wpLFxcbiAgMjI6XFx0XFx0XFx0XFx0ZXRoX2hkcihvbGRza2IpLVxcdTAwM2VoX3NvdXJjZSwgZXRoX2hkcihvbGRza2IpLVxcdTAwM2VoX2Rlc3QsXFxuICAyMzpcXHRcXHRcXHRcXHRuc2tiLVxcdTAwM2VsZW4pO1xcbiAgMjQ6XFx0XFx0ZGV2X3F1ZXVlX3htaXQobnNrYik7XFxuICAyNTpcXHR9XFxuICAyNjpcXHRcXG4gIDI3OlxcdHN0YXRpYyB2b2lkIG5mdF9yZWplY3RfbmV0ZGV2X3NlbmRfdjRfdGNwX3Jlc2V0KHN0cnVjdCBuZXQgKm5ldCxcXG4gIDI4OlxcdFxcdFxcdFxcdFxcdFxcdFxcdHN0cnVjdCBza19idWZmICpvbGRza2IsXFxuICAyOTpcXHRcXHRcXHRcXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiAgMzA6XFx0XFx0XFx0XFx0XFx0XFx0XFx0aW50IGhvb2spXFxuICAzMTpcXHR7XFxuICAzMjpcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqbnNrYjtcXG4gIDMzOlxcdFxcbiAgMzQ6XFx0XFx0bnNrYiA9IG5mX3JlamVjdF9za2JfdjRfdGNwX3Jlc2V0KG5ldCwgb2xkc2tiLCBkZXYsIGhvb2spO1xcbiAgMzU6XFx0XFx0aWYgKCFuc2tiKVxcbiAgMzY6XFx0XFx0XFx0cmV0dXJuO1xcbiAgMzc6XFx0XFxuICAzODpcXHRcXHRuZnRfcmVqZWN0X3F1ZXVlX3htaXQobnNrYiwgb2xkc2tiKTtcXG4gIDM5OlxcdH1cXG4gIDQwOlxcdFxcbiAgNDE6XFx0c3RhdGljIHZvaWQgbmZ0X3JlamVjdF9uZXRkZXZfc2VuZF92NF91bnJlYWNoKHN0cnVjdCBuZXQgKm5ldCxcXG4gIDQyOlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpvbGRza2IsXFxuICA0MzpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiAgNDQ6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgaW50IGhvb2ssIHU4IGNvZGUpXFxuICA0NTpcXHR7XFxuICA0NjpcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqbnNrYjtcXG4gIDQ3OlxcdFxcbiAgNDg6XFx0XFx0bnNrYiA9IG5mX3JlamVjdF9za2JfdjRfdW5yZWFjaChuZXQsIG9sZHNrYiwgZGV2LCBob29rLCBjb2RlKTtcXG4gIDQ5OlxcdFxcdGlmICghbnNrYilcXG4gIDUwOlxcdFxcdFxcdHJldHVybjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6Mzg6NDYuMDAwNTI5NzM1WiIsIlNlcSI6NzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NDU2MzEyMjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGl2aW5nIGludG8gdGhlIE5ldHdvcmsgRmlsdGVyaW5nIExvZ2ljKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgbmZ0X3JlamVjdF9uZXRkZXYuY2AgZmlsZSBhbmQgaXQgbG9va3MgbGlrZSBpdCdzIGNhbGxpbmcgYG5mX3JlamVjdF9za2JfdjRfdW5yZWFjaGAuIEludGVyZXN0aW5nLiBXYWl0IGEgc2Vjb25kLCB0aGUgcGF0Y2ggbm90ZXMgYXJlIHBvaW50aW5nIG1lIHRvd2FyZHMgYG5mX3NlbmRfdW5yZWFjaGAsIG5vdCB0aGF0IGZ1bmN0aW9uIEkgaW5pdGlhbGx5IHNwb3R0ZWQuIFRoaXMgaXMgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gZm9sbG93aW5nIHRoZSBjb3JyZWN0IHRyYWlsLCBzbyBsZXQncyBkb3VibGUtY2hlY2sgYG5mX3NlbmRfdW5yZWFjaGAgYW5kIGVuc3VyZSB0aGF0J3MgdHJ1bHkgdGhlIGtleSBhcmVhIGltcGFjdGVkIGJ5IHRoZSBwYXRjaC4gSSdsbCBuZWVkIHRvIHJldHJhY2UgbXkgc3RlcHMgYSBiaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNDUyLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozODo0OS40NDYxNjY0MVoiLCJTZXEiOjc0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTcxMTA1NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfc2VuZF91bnJlYWNoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jPTM0ND1FWFBPUlRfU1lNQk9MX0dQTChuZl9zZW5kX3Jlc2V0KTtcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYy0zNDUtXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmM6MzQ2OnZvaWQgbmZfc2VuZF91bnJlYWNoKHN0cnVjdCBza19idWZmICpza2JfaW4sIGludCBjb2RlLCBpbnQgaG9vaylcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYy0zNDcte1xcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMtMzcyLX1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYzozNzM6RVhQT1JUX1NZTUJPTF9HUEwobmZfc2VuZF91bnJlYWNoKTtcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYy0zNzQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM4OjQ5LjU0MzI4NTEwN1oiLCJTZXEiOjc1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDc4NzQxNTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIGBuZl9zZW5kX3VucmVhY2hgIENhbGwgQ2hhaW4qKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBUaGlzIGRvZXNuJ3QgbWFrZSBzZW5zZS4gSWYgYG5mdF9yZWplY3RfbmV0ZGV2YCAqZG9lc24ndCogY2FsbCBgbmZfc2VuZF91bnJlYWNoYCwgdGhlbiBob3cgb24gZWFydGggY2FuIGBob29rID09IE5GX0lORVRfSU5HUkVTU2AgZXZlciBiZSB0cnVlIHdpdGhpbiBgbmZfc2VuZF91bnJlYWNoYD8gVGhhdCBjb25kaXRpb24gZmVlbHMgZnVuZGFtZW50YWxseSBicm9rZW4uIEkgbmVlZCB0byB0cmFjZSB0aGlzIGNhbGwgY2hhaW4gYW5kIGZpZ3VyZSBvdXQgd2hhdCdzIGdvaW5nIG9uLiBMZXQgbWUgc3RhcnQgYnkgbWV0aWN1bG91c2x5IGV4YW1pbmluZyBhbGwgdGhlIHBsYWNlcyBpbiB0aGUgY29kZSB3aGVyZSBgbmZfc2VuZF91bnJlYWNoYCBpcyBhY3R1YWxseSBpbnZva2VkLiBUaGlzIHNob3VsZCBpbGx1bWluYXRlIHRoZSBwYXRoIGFuZCBjbGFyaWZ5IHRoaXMgYXBwYXJlbnQgY29udHJhZGljdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdyBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjkyNiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM4OjU0LjAyMjAyOTkyWiIsIlNlcSI6NzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjE4NDk4NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfc2VuZF91bnJlYWNoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYz0zMT1yZWplY3RfdGcoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYy0zNy1cXHRjYXNlIElQVF9JQ01QX05FVF9VTlJFQUNIQUJMRTpcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jOjM4OlxcdFxcdG5mX3NlbmRfdW5yZWFjaChza2IsIElDTVBfTkVUX1VOUkVBQ0gsIGhvb2spO1xcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtMzktXFx0XFx0YnJlYWs7XFxubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYy00MC1cXHRjYXNlIElQVF9JQ01QX0hPU1RfVU5SRUFDSEFCTEU6XFxubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYzo0MTpcXHRcXHRuZl9zZW5kX3VucmVhY2goc2tiLCBJQ01QX0hPU1RfVU5SRUFDSCwgaG9vayk7XFxubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYy00Mi1cXHRcXHRicmVhaztcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jLTQzLVxcdGNhc2UgSVBUX0lDTVBfUFJPVF9VTlJFQUNIQUJMRTpcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jOjQ0OlxcdFxcdG5mX3NlbmRfdW5yZWFjaChza2IsIElDTVBfUFJPVF9VTlJFQUNILCBob29rKTtcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jLTQ1LVxcdFxcdGJyZWFrO1xcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtNDYtXFx0Y2FzZSBJUFRfSUNNUF9QT1JUX1VOUkVBQ0hBQkxFOlxcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmM6NDc6XFx0XFx0bmZfc2VuZF91bnJlYWNoKHNrYiwgSUNNUF9QT1JUX1VOUkVBQ0gsIGhvb2spO1xcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtNDgtXFx0XFx0YnJlYWs7XFxubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYy00OS1cXHRjYXNlIElQVF9JQ01QX05FVF9QUk9ISUJJVEVEOlxcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmM6NTA6XFx0XFx0bmZfc2VuZF91bnJlYWNoKHNrYiwgSUNNUF9ORVRfQU5PLCBob29rKTtcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jLTUxLVxcdFxcdGJyZWFrO1xcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtNTItXFx0Y2FzZSBJUFRfSUNNUF9IT1NUX1BST0hJQklURUQ6XFxubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYzo1MzpcXHRcXHRuZl9zZW5kX3VucmVhY2goc2tiLCBJQ01QX0hPU1RfQU5PLCBob29rKTtcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jLTU0LVxcdFxcdGJyZWFrO1xcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtNTUtXFx0Y2FzZSBJUFRfSUNNUF9BRE1JTl9QUk9ISUJJVEVEOlxcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmM6NTY6XFx0XFx0bmZfc2VuZF91bnJlYWNoKHNrYiwgSUNNUF9QS1RfRklMVEVSRUQsIGhvb2spO1xcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtNTctXFx0XFx0YnJlYWs7XFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYz0zNDQ9RVhQT1JUX1NZTUJPTF9HUEwobmZfc2VuZF9yZXNldCk7XFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMtMzQ1LVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jOjM0Njp2b2lkIG5mX3NlbmRfdW5yZWFjaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luLCBpbnQgY29kZSwgaW50IGhvb2spXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMtMzQ3LXtcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jLTM3Mi19XFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmM6MzczOkVYUE9SVF9TWU1CT0xfR1BMKG5mX3NlbmRfdW5yZWFjaCk7XFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMtMzc0LVxcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaXB2NC5jPTE5PXN0YXRpYyB2b2lkIG5mdF9yZWplY3RfaXB2NF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZnRfcmVqZWN0X2lwdjQuYy0yNi1cXHRjYXNlIE5GVF9SRUpFQ1RfSUNNUF9VTlJFQUNIOlxcbm5ldC9pcHY0L25ldGZpbHRlci9uZnRfcmVqZWN0X2lwdjQuYzoyNzpcXHRcXHRuZl9zZW5kX3VucmVhY2gocGt0LVxcdTAwM2Vza2IsIHByaXYtXFx1MDAzZWljbXBfY29kZSwgbmZ0X2hvb2socGt0KSk7XFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaXB2NC5jLTI4LVxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmM9MzU9cmVqZWN0X3RnNihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXFxuLS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYy00MS1cXHRjYXNlIElQNlRfSUNNUDZfTk9fUk9VVEU6XFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmM6NDI6XFx0XFx0bmZfc2VuZF91bnJlYWNoNihuZXQsIHNrYiwgSUNNUFY2X05PUk9VVEUsIHh0X2hvb2tudW0ocGFyKSk7XFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNDMtXFx0XFx0YnJlYWs7XFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNDQtXFx0Y2FzZSBJUDZUX0lDTVA2X0FETV9QUk9ISUJJVEVEOlxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jOjQ1OlxcdFxcdG5mX3NlbmRfdW5yZWFjaDYobmV0LCBza2IsIElDTVBWNl9BRE1fUFJPSElCSVRFRCxcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYy00Ni1cXHRcXHRcXHRcXHQgeHRfaG9va251bShwYXIpKTtcXG4tLVxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jLTQ4LVxcdGNhc2UgSVA2VF9JQ01QNl9OT1RfTkVJR0hCT1VSOlxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jOjQ5OlxcdFxcdG5mX3NlbmRfdW5yZWFjaDYobmV0LCBza2IsIElDTVBWNl9OT1RfTkVJR0hCT1VSLFxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jLTUwLVxcdFxcdFxcdFxcdCB4dF9ob29rbnVtKHBhcikpO1xcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNTItXFx0Y2FzZSBJUDZUX0lDTVA2X0FERFJfVU5SRUFDSDpcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYzo1MzpcXHRcXHRuZl9zZW5kX3VucmVhY2g2KG5ldCwgc2tiLCBJQ01QVjZfQUREUl9VTlJFQUNILFxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jLTU0LVxcdFxcdFxcdFxcdCB4dF9ob29rbnVtKHBhcikpO1xcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNTYtXFx0Y2FzZSBJUDZUX0lDTVA2X1BPUlRfVU5SRUFDSDpcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYzo1NzpcXHRcXHRuZl9zZW5kX3VucmVhY2g2KG5ldCwgc2tiLCBJQ01QVjZfUE9SVF9VTlJFQUNILFxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jLTU4LVxcdFxcdFxcdFxcdCB4dF9ob29rbnVtKHBhcikpO1xcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNjYtXFx0Y2FzZSBJUDZUX0lDTVA2X1BPTElDWV9GQUlMOlxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jOjY3OlxcdFxcdG5mX3NlbmRfdW5yZWFjaDYobmV0LCBza2IsIElDTVBWNl9QT0xJQ1lfRkFJTCwgeHRfaG9va251bShwYXIpKTtcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYy02OC1cXHRcXHRicmVhaztcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYy02OS1cXHRjYXNlIElQNlRfSUNNUDZfUkVKRUNUX1JPVVRFOlxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jOjcwOlxcdFxcdG5mX3NlbmRfdW5yZWFjaDYobmV0LCBza2IsIElDTVBWNl9SRUpFQ1RfUk9VVEUsXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNzEtXFx0XFx0XFx0XFx0IHh0X2hvb2tudW0ocGFyKSk7XFxuLS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjYuYz00MTI9c3RhdGljIGJvb2wgcmVqZWN0Nl9jc3VtX29rKHN0cnVjdCBza19idWZmICpza2IsIGludCBob29rKVxcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY2LmMtNDMzLVxcbm5ldC9pcHY2L25ldGZpbHRlci9uZl9yZWplY3RfaXB2Ni5jOjQzNDp2b2lkIG5mX3NlbmRfdW5yZWFjaDYoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luLFxcbm5ldC9pcHY2L25ldGZpbHRlci9uZl9yZWplY3RfaXB2Ni5jLTQzNS1cXHRcXHQgICAgICB1bnNpZ25lZCBjaGFyIGNvZGUsIHVuc2lnbmVkIGludCBob29rbnVtKVxcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY2LmMtNDQ3LX1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjYuYzo0NDg6RVhQT1JUX1NZTUJPTF9HUEwobmZfc2VuZF91bnJlYWNoNik7XFxubmV0L2lwdjYvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY2LmMtNDQ5LVxcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL25mdF9yZWplY3RfaXB2Ni5jPTE5PXN0YXRpYyB2b2lkIG5mdF9yZWplY3RfaXB2Nl9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcXG4tLVxcbm5ldC9pcHY2L25ldGZpbHRlci9uZnRfcmVqZWN0X2lwdjYuYy0yNi1cXHRjYXNlIE5GVF9SRUpFQ1RfSUNNUF9VTlJFQUNIOlxcbm5ldC9pcHY2L25ldGZpbHRlci9uZnRfcmVqZWN0X2lwdjYuYzoyNzpcXHRcXHRuZl9zZW5kX3VucmVhY2g2KG5mdF9uZXQocGt0KSwgcGt0LVxcdTAwM2Vza2IsIHByaXYtXFx1MDAzZWljbXBfY29kZSxcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pcHY2LmMtMjgtXFx0XFx0XFx0XFx0IG5mdF9ob29rKHBrdCkpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYz0xNz1zdGF0aWMgdm9pZCBuZnRfcmVqZWN0X2luZXRfZXZhbChjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jLTI2LVxcdFxcdGNhc2UgTkZUX1JFSkVDVF9JQ01QX1VOUkVBQ0g6XFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYzoyNzpcXHRcXHRcXHRuZl9zZW5kX3VucmVhY2gocGt0LVxcdTAwM2Vza2IsIHByaXYtXFx1MDAzZWljbXBfY29kZSxcXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jLTI4LVxcdFxcdFxcdFxcdFxcdG5mdF9ob29rKHBrdCkpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy0zNC1cXHRcXHRjYXNlIE5GVF9SRUpFQ1RfSUNNUFhfVU5SRUFDSDpcXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jOjM1OlxcdFxcdFxcdG5mX3NlbmRfdW5yZWFjaChwa3QtXFx1MDAzZXNrYixcXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jLTM2LVxcdFxcdFxcdFxcdFxcdG5mdF9yZWplY3RfaWNtcF9jb2RlKHByaXYtXFx1MDAzZWljbXBfY29kZSksXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jLTQzLVxcdFxcdGNhc2UgTkZUX1JFSkVDVF9JQ01QX1VOUkVBQ0g6XFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYzo0NDpcXHRcXHRcXHRuZl9zZW5kX3VucmVhY2g2KG5mdF9uZXQocGt0KSwgcGt0LVxcdTAwM2Vza2IsXFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy00NS1cXHRcXHRcXHRcXHRcXHQgcHJpdi1cXHUwMDNlaWNtcF9jb2RlLCBuZnRfaG9vayhwa3QpKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmMtNTEtXFx0XFx0Y2FzZSBORlRfUkVKRUNUX0lDTVBYX1VOUkVBQ0g6XFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYzo1MjpcXHRcXHRcXHRuZl9zZW5kX3VucmVhY2g2KG5mdF9uZXQocGt0KSwgcGt0LVxcdTAwM2Vza2IsXFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy01My1cXHRcXHRcXHRcXHRcXHQgbmZ0X3JlamVjdF9pY21wdjZfY29kZShwcml2LVxcdTAwM2VpY21wX2NvZGUpLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozODo1NC4xNDM4ODczNjZaIiwiU2VxIjo3NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI3MTEyNjc2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgTmV0ZmlsdGVyIFJlamVjdGlvbiBNZWNoYW5pc20qKlxuXG5Pa2F5LCBzbyBJJ20gdHJhY2luZyB0aHJvdWdoIHRoaXMgbmV0ZmlsdGVyIHNldHVwIGFuZCBpdCBsb29rcyBsaWtlIGBuZnRfcmVqZWN0X2luZXRgIGlzIHRoZSBrZXkgZnVuY3Rpb24gaGVyZSwgYW5kIHRoYXQncyBjYWxsaW5nIGBuZl9zZW5kX3VucmVhY2hgLiBHb3QgaXQuIE5vdywgc2luY2Ugd2UncmUgZGVhbGluZyB3aXRoIHRoZSBgaW5ldGAgZmFtaWx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGlzIHJlamVjdGlvbiBpcyBhY3R1YWxseSBoYXBwZW5pbmcgaW4gdGhlIHBhY2tldCBmbG93LiBEb2VzIHRoZSBgaW5ldGAgZmFtaWx5IGV2ZW4gaGF2ZSBhbiBpbmdyZXNzIGhvb2s/IEEgcXVpY2sgbWVudGFsIGNoZWNrLi4uIHllcywgb2YgY291cnNlLCBgTkZfSU5FVF9JTkdSRVNTYC4gQWxyaWdodCwgbGV0IG1lIGp1c3QgY29uZmlybSB0aGF0IHdpdGggYSBnbGFuY2UgYXQgYGluY2x1ZGUvdWFwaS9saW51eC9uZXRmaWx0ZXIuaGAgdG8gcmVmcmVzaCBteSBtZW1vcnkgYW5kIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcgY3J1Y2lhbCBhYm91dCB0aGUgaW5ncmVzcyBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU4OTcsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozODo1OC40MTUwMTcwMjZaIiwiU2VxIjo3OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5OTY1Mzg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5GX0lORVRfSU5HUkVTU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL3VhcGkvbGludXgvbmV0ZmlsdGVyLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS91YXBpL2xpbnV4L25ldGZpbHRlci5oPTQyPWVudW0gbmZfaW5ldF9ob29rcyB7XFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgvbmV0ZmlsdGVyLmgtNDgtXFx0TkZfSU5FVF9OVU1IT09LUyxcXG5pbmNsdWRlL3VhcGkvbGludXgvbmV0ZmlsdGVyLmg6NDk6XFx0TkZfSU5FVF9JTkdSRVNTID0gTkZfSU5FVF9OVU1IT09LUyxcXG5pbmNsdWRlL3VhcGkvbGludXgvbmV0ZmlsdGVyLmgtNTAtfTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6Mzg6NTguNDc0OTg3MzA0WiIsIlNlcSI6NzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MDE4ODQ1MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIE5ldHdvcmsgVHJhZmZpYyBSZWplY3Rpb24gaW4gdGhlIGluZXQgRmFtaWx5KipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBuZXR3b3JrIGZpbHRlcmluZyBzaXR1YXRpb24uIEl0IHNlZW1zIHByZXR0eSBjbGVhciB0aGF0IGBORl9JTkVUX0lOR1JFU1NgIGlzIGEgbGVnaXRpbWF0ZSBob29rIGZvciB0aGUgYGluZXRgIGZhbWlseSwgd2hpY2ggaXMgd2hhdCBJJ20gaW50ZXJlc3RlZCBpbiBoZXJlLiBUaGF0IG1ha2VzIHNlbnNlLCBhbmQgSSBjYW4gY29uZmlybSB0aGF0IGBuZnRfcmVqZWN0X2luZXRgIGlzIHRoZSBhcHByb3ByaWF0ZSBmdW5jdGlvbiB0byBhdHRhY2ggdG8gdGhlIGluZ3Jlc3MgaG9vaywgd2hpY2ggaXMgZ29vZC4gVGhhdCBjb25maXJtcyB0aGF0IGBORlRfUkVKRUNUX0lORVRgIGlzIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiBJIG5lZWQgdG8gbGV2ZXJhZ2UgdGhpcyB3aXRoaW4gdGhlIGBpbmV0YCBmYW1pbHkuIE5vdywgSSBzaG91bGQgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgcGljdHVyZSwgc28gbmV4dCBJJ20gZ29pbmcgdG8gZG91YmxlIGNoZWNrIGFuZCBleGFtaW5lIGBORlRfUkVKRUNUX0lORVRgJ3MgZGVwZW5kZW5jaWVzIHRvIG1ha2UgY2VydGFpbiB0aGF0IEkgaGF2ZSBldmVyeXRoaW5nIHByb3Blcmx5IGNvbnNpZGVyZWQgZm9yIGEgZ29vZCBpbXBsZW1lbnRhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjYyOTcsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozOTowMi4yNzY4NzM5MDlaIiwiU2VxIjo4MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2MjAyNDU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORlRfUkVKRUNUX0lORVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz01Nzg9Y29uZmlnIE5GVF9SRUpFQ1RcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy01ODUtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjU4Njpjb25maWcgTkZUX1JFSkVDVF9JTkVUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTU4Ny1cXHRkZXBlbmRzIG9uIE5GX1RBQkxFU19JTkVUXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM5OjAyLjM2MzA4MTE2NloiLCJTZXEiOjgxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzc2OTk4MzU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gc2V0dGluZyB1cCBhIG5ldGZpbHRlciBjb25maWd1cmF0aW9uIGhlcmUsIGFuZCBpdCBsb29rcyBsaWtlIEknbGwgbmVlZCBib3RoIGBORl9UQUJMRVNfSU5FVGAgYW5kIGBORlRfUkVKRUNUX0lORVRgLiBOb3csIEkgcmVjYWxsIHRoYXQgYE5GX1RBQkxFU19JTkVUYCBuYXR1cmFsbHkgcHVsbHMgaW4gYE5GX1RBQkxFU19JUFY0YCwgdGhhdCBtYWtlcyBzZW5zZS4gQW5kIEknbSBwcmV0dHkgc3VyZSB0aGF0IGBORlRfUkVKRUNUX0lORVRgIHJlbGllcyBvbiBgbmZfc2VuZF91bnJlYWNoYC4gVGhlIHJlYWwgcXVlc3Rpb24gaXM6IGRvZXMgYE5GVF9SRUpFQ1RfSU5FVGAgaW1wbGljaXRseSBzZWxlY3QgYE5GX1JFSkVDVF9JUFY0YD8gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGRlcGVuZGVuY3kgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBCZXN0IHRvIGRpdmUgYmFjayBpbnRvIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIGFuZCB2ZXJpZnkgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRob3NlIG9wdGlvbnMgZm9yIGBORlRfUkVKRUNUX0lORVRgIGFnYWluLiBHb3R0YSBnZXQgdGhlIGNvbmZpZyByaWdodCFcblxuXG4iLCJJbnB1dFRva2VucyI6MjY2NjAsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6Mzk6MDYuMTQwMDgyODYyWiIsIlNlcSI6ODIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4MzM3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNTgwLFxuICBcIkxpbmVDb3VudFwiOiAxNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNTgwOlxcdFxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgbmZfdGFibGVzIHJlamVjdCBzdXBwb3J0XFxcIlxcbiA1ODE6XFx0XFx0aGVscFxcbiA1ODI6XFx0XFx0ICBUaGlzIG9wdGlvbiBhZGRzIHRoZSBcXFwicmVqZWN0XFxcIiBleHByZXNzaW9uIHRoYXQgeW91IGNhbiB1c2UgdG9cXG4gNTgzOlxcdFxcdCAgZXhwbGljaXRseSBkZW55IGFuZCBub3RpZnkgdmlhIFRDUCByZXNldC9JQ01QIGluZm9ybWF0aW9uYWwgZXJyb3JzXFxuIDU4NDpcXHRcXHQgIHVuYWxsb3dlZCB0cmFmZmljLlxcbiA1ODU6XFx0XFxuIDU4NjpcXHRjb25maWcgTkZUX1JFSkVDVF9JTkVUXFxuIDU4NzpcXHRcXHRkZXBlbmRzIG9uIE5GX1RBQkxFU19JTkVUXFxuIDU4ODpcXHRcXHRkZWZhdWx0IE5GVF9SRUpFQ1RcXG4gNTg5OlxcdFxcdHRyaXN0YXRlXFxuIDU5MDpcXHRcXG4gNTkxOlxcdGNvbmZpZyBORlRfQ09NUEFUXFxuIDU5MjpcXHRcXHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9YVEFCTEVTXFxuIDU5MzpcXHRcXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIHhfdGFibGVzIG92ZXIgbmZfdGFibGVzIG1vZHVsZVxcXCJcXG4gNTk0OlxcdFxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6Mzk6MDYuMTQwMzcyMDQyWiIsIlNlcSI6ODMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2OTg2Njc1NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmF2aWdhdGluZyB0aGUgQ29uZmlndXJhdGlvbiBDb251bmRydW06IEEgRGVlcCBEaXZlIGludG8gTmV0ZmlsdGVyJ3MgUmVqZWN0IE1lY2hhbmlzbXMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzdW1wdGlvbiB3YXMgdGhhdCBgTkZUX1JFSkVDVF9JTkVUYCBkaXJlY3RseSBpbXBsaWVzIHRoZSBzZWxlY3Rpb24gb2YgYE5GX1JFSkVDVF9JUFY0YCwgYnV0IHRoYXQncyBub3QgZXhwbGljaXRseSB0aGUgY2FzZS4gSW5zdGVhZCwgaXQgc2VlbXMgYE5GVF9SRUpFQ1RfSVBWNGAgKml0c2VsZiogaXMgY2hvc2VuIHZpYSBgTkZUX1JFSkVDVF9JUFY0YCwgYW5kIHRoYXQgKmRlZmF1bHRzKiB0byBgTkZUX1JFSkVDVGAgaWYgdGhlIElQdjQgdGFibGUgc3VwcG9ydCAoYE5GX1RBQkxFU19JUFY0YCkgaXMgZW5hYmxlZC5cblxuU2luY2UgYE5GX1RBQkxFU19JTkVUYCBpbmNsdWRlcyBgTkZfVEFCTEVTX0lQVjRgLCBhbmQgYE5GVF9SRUpFQ1RfSU5FVGAgZGVmYXVsdHMgdG8gYE5GVF9SRUpFQ1RgLCBpdCBsb29rcyBsaWtlIGlmIHdlIGVuYWJsZSBgTkZUX1JFSkVDVGAsIHRoZW4gYE5GVF9SRUpFQ1RfSVBWNGAgd2lsbCBiZSBlbmFibGVkIGJ5IGRlZmF1bHQuIEdpdmVuIHRoaXMsIGBORlRfUkVKRUNUX0lQVjRgIHdpbGwgc2VsZWN0IGBORl9SRUpFQ1RfSVBWNGAuXG5cblRoZXJlZm9yZSwgdG8gZW5zdXJlIGV2ZXJ5dGhpbmcncyBwcm9wZXJseSBjb25maWd1cmVkLCBJIHRoaW5rIHdlIG5lZWQgdGhlIGZvbGxvd2luZzpcblxuKiAgIGBORl9UQUJMRVNgXG4qICAgYE5GX1RBQkxFU19JTkVUYFxuKiAgIGBORlRfUkVKRUNUYFxuKiAgIGBORlRfUkVKRUNUX0lORVRgXG4qICAgYE5GVF9SRUpFQ1RfSVBWNGBcbiogICBgTkZfUkVKRUNUX0lQVjRgXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzYWZlLCBsZXQncyBlbnVtZXJhdGUgdGhlc2UgYWdhaW46IGBORl9UQUJMRVNgLCBgTkZfVEFCTEVTX0lORVRgLCBgTkZUX1JFSkVDVGAsIGBORlRfUkVKRUNUX0lORVRgLCBgTkZUX1JFSkVDVF9JUFY0YCwgYW5kIGBORl9SRUpFQ1RfSVBWNGAuXG5cbk5vdywgYSBxdWljayBjaGVjayBvbiBgTkZfVEFCTEVTX05FVERFVmAuLi4gbGV0J3Mga2VlcCB0aGF0IGluIG1pbmQsIGp1c3QgaW4gY2FzZS4gVGhlIHBhdGNoIGludm9sdmVzIGBob29rID09IE5GX0lORVRfSU5HUkVTU2AuIGBORl9JTkVUX0lOR1JFU1NgIGlzIHVzZWQgaW4gdGhlIGBpbmV0YCBmYW1pbHkgaW5ncmVzcyBob29rLCBhbmQgdGhlIGBuZXRkZXZgIGZhbWlseSBpbmdyZXNzIGhvb2ssIHRoYXQncyB3aHkgaXQgaXMgcmVsZXZhbnQgaGVyZS4gQnV0IGBuZnRfcmVqZWN0X25ldGRldmAgZG9lc24ndCB1c2UgYG5mX3NlbmRfdW5yZWFjaGAuIEl0IHVzZXMgYG5mX3JlamVjdF9za2JfdjRfdW5yZWFjaGAuIFNvLCBgbmZfc2VuZF91bnJlYWNoYCBpcyBvbmx5IGNhbGxlZCBieSBgbmZ0X3JlamVjdF9pbmV0YCwgYG5mdF9yZWplY3RfaXB2NGAsIGFuZCBgaXB0X1JFSkVDVGAuXG5cbkhhbmcgb24gYSBzZWNvbmQuIENhbiBgbmZ0X3JlamVjdF9pcHY0YCBldmVuIGF0dGFjaCB0byBgTkZfSU5FVF9JTkdSRVNTYD8gVGhlIElQdjQgZmFtaWx5ICpkb2Vzbid0KiBoYXZlIGFuIGluZ3Jlc3MgaG9vaywgcmlnaHQ/IE9yIGRvZXMgaXQ/IFRpbWUgdG8gdmVyaWZ5IGlmIHRoZSBJUHY0IGZhbWlseSAqYWN0dWFsbHkqIGhhcyBhbiBpbmdyZXNzIGhvb2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3MjAwLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6Mzk6MTMuODM5MDQ0Nzg1WiIsIlNlcSI6ODQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjQyMzc3MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTkZfSU5FVF9JTkdSRVNTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L25ldGZpbHRlci9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmM9MzQ2PXZvaWQgbmZfc2VuZF91bnJlYWNoKHN0cnVjdCBza19idWZmICpza2JfaW4sIGludCBjb2RlLCBpbnQgaG9vaylcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jLTM1OC1cXHQvKiBJbmV0IGluZ3Jlc3MgcnVucyBiZWZvcmUgSVB2NCBpbml0aWFsaXplcyBJUENCLiAqL1xcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jOjM1OTpcXHRpZiAoaG9vayA9PSBORl9JTkVUX0lOR1JFU1MpIHtcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYy0zNjAtXFx0XFx0bWVtc2V0KElQQ0Ioc2tiX2luKSwgMCwgc2l6ZW9mKCpJUENCKHNrYl9pbikpKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6Mzk6MTQuMTYzMjg4ODQ1WiIsIlNlcSI6ODUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE3Njg2MDg4OTg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkNvbmZpZ3VyYXRpb24gYW5kIENvZGUgQW5hbHlzaXMgZm9yIE5ldGZpbHRlciBJUHY0IFJlamVjdCBIYW5kbGluZyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhlIHJlbGV2YW50IGNvZGUgZm9yIHRoaXMgcGF0Y2ggcmVzaWRlcyBzb2xlbHkgd2l0aGluIGBuZl9yZWplY3RfaXB2NC5jYC4gSSd2ZSB0cmFjZWQgdGhlIHBhdGg6IGBORl9JTkVUX0lOR1JFU1NgIGlzIHRyaWdnZXJlZCB2aWEgYG5mdF9yZWplY3RfaW5ldGAsIHdoaWNoLCBhcyB3ZSBrbm93LCBsaXZlcyBpbiBgbmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuY2AuIFRodXMsIGBORlRfUkVKRUNUX0lORVRgIHNlZW1zIGxpa2UgdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbiB0byBlbmFibGUgaGVyZSwgcmlnaHQ/XG5cbkxldCdzIHF1aWNrbHkgY29uZmlybS4gWWVzLCBlbmFibGluZyBgTkZUX1JFSkVDVF9JTkVUYCBkb2VzIGluZGVlZCBicmluZyBpbiBgbmZ0X3JlamVjdF9pbmV0LmNgLCB3aGljaCwgaW4gdHVybiwgY2FsbHMgYG5mX3NlbmRfdW5yZWFjaGAuXG5cblNvLCBoZXJlJ3MgdGhlIGNvbmZpZyBsaXN0IEkndmUgY29tZSB1cCB3aXRoIHNvIGZhcjogYE5GX1RBQkxFU2AsIGBORl9UQUJMRVNfSU5FVGAsIGBORlRfUkVKRUNUYCwgYE5GVF9SRUpFQ1RfSU5FVGAsIGFuZCBgTkZfUkVKRUNUX0lQVjRgLlxuXG5MZXQncyBzZWUgaWYgYE5GX1JFSkVDVF9JUFY0YCBpcyBhIHZpc2libGUgY29uZmlnIC0geWVwLCBpdCdzIGEgdHJpc3RhdGUgb3B0aW9uIGZvciBcIklQdjQgcGFja2V0IHJlamVjdGlvbi5cIlxuXG5Ob3csIHdoYXQgYWJvdXQgYE5GVF9SRUpFQ1RfSU5FVGA/IEFoLCBpdCBoYXMgbm8gcHJvbXB0LiBUaGF0J3MgZmluZTsgaXQncyBkZWZhdWx0ZWQgaWYgd2UgaGF2ZSBgTkZUX1JFSkVDVGAgZW5hYmxlZCwgYW5kIGRlcGVuZHMgb24gYE5GX1RBQkxFU19JTkVUYC4gVGhhdCdzIGltcG9ydGFudC4gU28sIHdlIGRlZmluaXRpdmVseSBuZWVkIGBORlRfUkVKRUNUYCBhbmQgYE5GX1RBQkxFU19JTkVUYC5cblxuTGV0J3MgZG91YmxlLWNoZWNrIGBORl9UQUJMRVNfSU5FVGAuIEl0J3MgYSBib29sZWFuIG9wdGlvbiBsYWJlbGVkIFwiTmV0ZmlsdGVyIG5mX3RhYmxlcyBtaXhlZCBJUHY0L0lQdjYgdGFibGVzIHN1cHBvcnQuXCIgR29vZCwgd2UgZW5hYmxlIHRoYXQuXG5cbkFuZCBgTkZfVEFCTEVTYCBpdHNlbGY/IFllcCwgYSB0cmlzdGF0ZSBcIk5ldGZpbHRlciBuZl90YWJsZXMgc3VwcG9ydFwiLiBTbyB0aGF0IGdvZXMgaW4gYXMgd2VsbC5cblxuU28gd2UgYXJlIGNvbmZpZGVudDogdGhlIHJlcXVpcmVkIGNvbmZpZ3MgYXJlIGBORl9UQUJMRVNgLCBgTkZfVEFCTEVTX0lORVRgLCBgTkZUX1JFSkVDVGAsIGFuZCBgTkZfUkVKRUNUX0lQVjRgLiBCdXQgaW4gY2FzZSB0aGUgY29uZmlnIHN5c3RlbSBuZWVkcyBpdCBleHBsaWNpdGx5LCBsZXQncyBpbmNsdWRlIGBORlRfUkVKRUNUX0lORVRgLlxuXG5Ob3csIGFyZSB0aGVyZSBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlncz8gVGhlIG9uZXMgZm9yIGlwdGFibGVzLCBgSVBfTkZfVEFSR0VUX1JFSkVDVGAsIGBJUF9ORl9JUFRBQkxFU2AsIGFuZCBgSVBfTkZfRklMVEVSYCBtaWdodCBiZSByZWxldmFudCBmb3IgaXB0YWJsZXMgYnV0IGZvciBuZnRhYmxlcyB0aGlzIGlzIGVub3VnaC4gVGhlIHBhdGggdG8gdGhlIHJlbGV2YW50IGNvZGUgaXMgdmlhIG5mdGFibGVzLlxuXG5UaGUgZnVuY3Rpb24gd2UncmUgZm9jdXNpbmcgb24gaXMgYG5mX3NlbmRfdW5yZWFjaGAuIElzIHRoZXJlIGFueSBvdGhlciBmdW5jdGlvbj8gTm9wZSwgdGhlIHBhdGNoICpvbmx5KiBtb2RpZmllcyBgbmZfc2VuZF91bnJlYWNoYC4gU28gdGhhdCdzIHRoZSBvbmx5IHN5bWJvbC5cblxuT2theSwgbGV0J3MgcmV2aWV3IHRoZSBwYXRjaCBvbmUgbW9yZSB0aW1lLCBqdXN0IHRvIGNvbmZpcm06XG5gYGBjXG4gXHRpZiAoIXNrYl9kc3Qoc2tiX2luKSBcdTAwMjZcdTAwMjYgbmZfcmVqZWN0X2ZpbGxfc2tiX2RzdChza2JfaW4pIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm47XG4gXG4rXHQvKiBJbmV0IGluZ3Jlc3MgcnVucyBiZWZvcmUgSVB2NCBpbml0aWFsaXplcyBJUENCLiAqL1xuK1x0aWYgKGhvb2sgPT0gTkZfSU5FVF9JTkdSRVNTKSB7XG4rXHRcdG1lbXNldChJUENCKHNrYl9pbiksIDAsIHNpemVvZigqSVBDQihza2JfaW4pKSk7XG4rXHRcdElQQ0Ioc2tiX2luKS1cdTAwM2VpaWYgPSBza2JfaW4tXHUwMDNlc2tiX2lpZjtcbitcdH1cbitcbiBcdGlmIChza2JfY3N1bV91bm5lY2Vzc2FyeShza2JfaW4pIHx8XG4gXHQgICAgIW5mX3JlamVjdF92ZXJpZnlfY3N1bShza2JfaW4sIGRhdGFvZmYsIHByb3RvKSkge1xuYGBgXG5cblJpZ2h0LCBpdCBpbml0aWFsaXplcyB0aGUgSVB2NCBjb250cm9sIGJsb2NrIChgSVBDQmApIHdoZW4gYGhvb2sgPT0gTkZfSU5FVF9JTkdSRVNTYC4gVGhpcyBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgdXNlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGxhdGVyIGluIHRoZSBmdW5jdGlvbiwgdXNlZCBpbiBgaWNtcF9zZW5kYCBvciBgaXBfcm91dGVfb3V0cHV0X2tleWAsIGFuZCBpcyBhIGNsZWFyIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgd2UgbmVlZCB0byBmdXp6LlxuXG5UaGlzIGZpeCBpcyByZWFjaGFibGUgdXNpbmcgdGhlIG5mdGFibGVzIGBpbmV0YCBmYW1pbHkgaW5ncmVzcyBob29rLlxuXG5TbywgdGhlIGZvY3VzIGlzIGRlZmluaXRpdmVseSBgbmZfc2VuZF91bnJlYWNoYC5cblxuQ29uZmlnLXdpc2UsIGxldCdzIGFsc28gYmUgZXhwbGljaXQgYWJvdXQgYE5GVF9SRUpFQ1RfSU5FVGAuXG5cbmBORl9SRUpFQ1RfSVBWNGAgaXMgYSB0cmlzdGF0ZSwgc28gdGhhdCdzIGdvb2QuXG5cblJlZ2FyZGluZyBzeXprYWxsZXIsIGFsdGhvdWdoIGBORlRfUkVKRUNUX0lORVRgIGhhcyBubyBwcm9tcHQsIGVuYWJsaW5nIHRoZSBwYXJlbnQgY29uZmlnLCBgTkZUX1JFSkVDVGAgYW5kIGl0cyBkZXBlbmRlbmN5IGBORl9UQUJMRVNfSU5FVGAgc2hvdWxkIGJlIGVub3VnaCwgYnV0LCBJJ2xsIHByb3ZpZGUgYE5GX1RBQkxFU2AsIGBORl9UQUJMRVNfSU5FVGAsIGBORlRfUkVKRUNUYCwgYE5GX1JFSkVDVF9JUFY0YCwgYE5GVF9SRUpFQ1RfSU5FVGAganVzdCBpbiBjYXNlLlxuXG5PbmUgbGFzdCBjaGVjazogYG5mX3NlbmRfdW5yZWFjaGAncyBzaWduYXR1cmVcblxuIiwiSW5wdXRUb2tlbnMiOjI4NDM1LCJPdXRwdXRUb2tlbnMiOjE1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6Mzk6MzEuODQ5MzgwMzFaIiwiU2VxIjo4NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTczOTIyNzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX1RBQkxFU1wiLFxuICAgIFwiTkZfVEFCTEVTX0lORVRcIixcbiAgICBcIk5GVF9SRUpFQ1RcIixcbiAgICBcIk5GVF9SRUpFQ1RfSU5FVFwiLFxuICAgIFwiTkZfUkVKRUNUX0lQVjRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZl9zZW5kX3VucmVhY2hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgbmZfc2VuZF91bnJlYWNoYCB0byBpbml0aWFsaXplIHRoZSBJUHY0IGNvbnRyb2wgYmxvY2sgKElQQ0IpIHdoZW4gY2FsbGVkIGZyb20gdGhlIGBORl9JTkVUX0lOR1JFU1NgIGhvb2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXRmaWx0ZXIgSVB2NCByZWplY3QgaGFuZGxpbmcgbG9naWMsIGZpeGluZyBhIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSBhY2Nlc3MuIEl0IGlzIHJlYWNoYWJsZSB2aWEgdGhlIG5mdGFibGVzIGBpbmV0YCBmYW1pbHkgaW5ncmVzcyBob29rLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX1RBQkxFU1wiLFxuICAgIFwiTkZfVEFCTEVTX0lORVRcIixcbiAgICBcIk5GVF9SRUpFQ1RcIixcbiAgICBcIk5GVF9SRUpFQ1RfSU5FVFwiLFxuICAgIFwiTkZfUkVKRUNUX0lQVjRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZl9zZW5kX3VucmVhY2hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgbmZfc2VuZF91bnJlYWNoYCB0byBpbml0aWFsaXplIHRoZSBJUHY0IGNvbnRyb2wgYmxvY2sgKElQQ0IpIHdoZW4gY2FsbGVkIGZyb20gdGhlIGBORl9JTkVUX0lOR1JFU1NgIGhvb2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXRmaWx0ZXIgSVB2NCByZWplY3QgaGFuZGxpbmcgbG9naWMsIGZpeGluZyBhIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSBhY2Nlc3MuIEl0IGlzIHJlYWNoYWJsZSB2aWEgdGhlIG5mdGFibGVzIGBpbmV0YCBmYW1pbHkgaW5ncmVzcyBob29rLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowwbfnd[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-04 10:15:47 +0000 UTC FinishedAt: 2026-08-04 10:39:32 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "2195424c3da2ef1829a63b807e3a900a90e57d85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_TABLES", "NF_TABLES_INET", "NFT_REJECT", "NFT_REJECT_INET", "NF_REJECT_IPV4" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "2195424c3da2ef1829a63b807e3a900a90e57d85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_TABLES", "NF_TABLES_INET", "NFT_REJECT", "NFT_REJECT_INET", "NF_REJECT_IPV4" ], "series_id": "6aba401a-0490-432d-b040-1bcb78b1673d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nf_send_unreach" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX1RBQkxFUyYjMzQ7LAogICAgJiMzNDtORl9UQUJMRVNfSU5FVCYjMzQ7LAogICAgJiMzNDtORlRfUkVKRUNUJiMzNDssCiAgICAmIzM0O05GVF9SRUpFQ1RfSU5FVCYjMzQ7LAogICAgJiMzNDtORl9SRUpFQ1RfSVBWNCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25mX3NlbmRfdW5yZWFjaCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgbmZfc2VuZF91bnJlYWNoYCB0byBpbml0aWFsaXplIHRoZSBJUHY0IGNvbnRyb2wgYmxvY2sgKElQQ0IpIHdoZW4gY2FsbGVkIGZyb20gdGhlIGBORl9JTkVUX0lOR1JFU1NgIGhvb2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXRmaWx0ZXIgSVB2NCByZWplY3QgaGFuZGxpbmcgbG9naWMsIGZpeGluZyBhIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSBhY2Nlc3MuIEl0IGlzIHJlYWNoYWJsZSB2aWEgdGhlIG5mdGFibGVzIGBpbmV0YCBmYW1pbHkgaW5ncmVzcyBob29rLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMGVmZjFhMTExNWExNmQyMDJlOTYyMzQ4NDAzOTljMGE1ZWU2Mjc0N1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDQgMTA6MzY6MDYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMgYi9uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuY1xuaW5kZXggNDYyNmRjNDY4MDhmMy4uNDkzM2Y2NTEzOGQ2YiAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuY1xuQEAgLTM1NSw2ICYjNDM7MzU1LDEyIEBAIHZvaWQgbmZfc2VuZF91bnJlYWNoKHN0cnVjdCBza19idWZmICpza2JfaW4sIGludCBjb2RlLCBpbnQgaG9vaylcbiBcdGlmICghc2tiX2RzdChza2JfaW4pIFx1MDAyNlx1MDAyNiBuZl9yZWplY3RfZmlsbF9za2JfZHN0KHNrYl9pbikgXHUwMDNjIDApXG4gXHRcdHJldHVybjtcbiBcbiYjNDM7XHQvKiBJbmV0IGluZ3Jlc3MgcnVucyBiZWZvcmUgSVB2NCBpbml0aWFsaXplcyBJUENCLiAqL1xuJiM0MztcdGlmIChob29rID09IE5GX0lORVRfSU5HUkVTUykge1xuJiM0MztcdFx0bWVtc2V0KElQQ0Ioc2tiX2luKSwgMCwgc2l6ZW9mKCpJUENCKHNrYl9pbikpKTtcbiYjNDM7XHRcdElQQ0Ioc2tiX2luKS1cdTAwM2VpaWYgPSBza2JfaW4tXHUwMDNlc2tiX2lpZjtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0aWYgKHNrYl9jc3VtX3VubmVjZXNzYXJ5KHNrYl9pbikgfHxcbiBcdCAgICAhbmZfcmVqZWN0X3ZlcmlmeV9jc3VtKHNrYl9pbiwgZGF0YW9mZiwgcHJvdG8pKSB7XG4gXHRcdGljbXBfc2VuZChza2JfaW4sIElDTVBfREVTVF9VTlJFQUNILCBjb2RlLCAwKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4zbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZfVEFCTEVTJiMzNDssCiAgICAmIzM0O05GX1RBQkxFU19JTkVUJiMzNDssCiAgICAmIzM0O05GVF9SRUpFQ1QmIzM0OywKICAgICYjMzQ7TkZUX1JFSkVDVF9JTkVUJiMzNDssCiAgICAmIzM0O05GX1JFSkVDVF9JUFY0JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZfc2VuZF91bnJlYWNoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBuZl9zZW5kX3VucmVhY2hgIHRvIGluaXRpYWxpemUgdGhlIElQdjQgY29udHJvbCBibG9jayAoSVBDQikgd2hlbiBjYWxsZWQgZnJvbSB0aGUgYE5GX0lORVRfSU5HUkVTU2AgaG9vay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldGZpbHRlciBJUHY0IHJlamVjdCBoYW5kbGluZyBsb2dpYywgZml4aW5nIGEgcG90ZW50aWFsIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFjY2Vzcy4gSXQgaXMgcmVhY2hhYmxlIHZpYSB0aGUgbmZ0YWJsZXMgYGluZXRgIGZhbWlseSBpbmdyZXNzIGhvb2suJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwZWZmMWExMTE1YTE2ZDIwMmU5NjIzNDg0MDM5OWMwYTVlZTYyNzQ3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBBdWcgNCAxMDozNjowNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jIGIvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMKaW5kZXggNDYyNmRjNDY4MDhmMy4uNDkzM2Y2NTEzOGQ2YiAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMKQEAgLTM1NSw2ICYjNDM7MzU1LDEyIEBAIHZvaWQgbmZfc2VuZF91bnJlYWNoKHN0cnVjdCBza19idWZmICpza2JfaW4sIGludCBjb2RlLCBpbnQgaG9vaykKIAlpZiAoIXNrYl9kc3Qoc2tiX2luKSAmYW1wOyZhbXA7IG5mX3JlamVjdF9maWxsX3NrYl9kc3Qoc2tiX2luKSAmbHQ7IDApCiAJCXJldHVybjsKIAomIzQzOwkvKiBJbmV0IGluZ3Jlc3MgcnVucyBiZWZvcmUgSVB2NCBpbml0aWFsaXplcyBJUENCLiAqLwomIzQzOwlpZiAoaG9vayA9PSBORl9JTkVUX0lOR1JFU1MpIHsKJiM0MzsJCW1lbXNldChJUENCKHNrYl9pbiksIDAsIHNpemVvZigqSVBDQihza2JfaW4pKSk7CiYjNDM7CQlJUENCKHNrYl9pbiktJmd0O2lpZiA9IHNrYl9pbi0mZ3Q7c2tiX2lpZjsKJiM0MzsJfQomIzQzOwogCWlmIChza2JfY3N1bV91bm5lY2Vzc2FyeShza2JfaW4pIHx8CiAJICAgICFuZl9yZWplY3RfdmVyaWZ5X2NzdW0oc2tiX2luLCBkYXRhb2ZmLCBwcm90bykpIHsKIAkJaWNtcF9zZW5kKHNrYl9pbiwgSUNNUF9ERVNUX1VOUkVBQ0gsIGNvZGUsIDApOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjAzCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTmV0ZmlsdGVyIElQdjQgUmVqZWN0IEhhbmRsaW5nIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGluIGBuZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuY2AuIEl0JiMzOTtzIGZvY3VzZWQgb24gdGhlIGBuZl9zZW5kX3VucmVhY2hgIGZ1bmN0aW9uLCB3aGljaCBpcyB0aGUgaGVhcnQgb2YgaG93IElQdjQgcGFja2V0cyBhcmUgcmVqZWN0ZWQgYnkgTmV0ZmlsdGVyLiBGcm9tIHdoYXQgSSBzZWUsIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY29uZGl0aW9uYWwgY2hlY2s6IGl0IHRlc3RzIGlmIHRoZSBgaG9va2AgdmFyaWFibGUgaXMgZXF1YWwgdG8gYE5GX0lORVRfSU5HUkVTU2AuIElmIHRoYXQgY2hlY2sgcGFzc2VzLCBpdCB0aGVuIGdvZXMgb24gdG8gaW5pdGlhbGl6ZSBgSVBDQihza2JfaW4pYC4KCkVzc2VudGlhbGx5LCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24gdG8gdGhlIG5ldGZpbHRlciBJUHY0IHJlamVjdCBiZWhhdmlvci4gSSBuZWVkIHRvIGRpZyBpbiBmdXJ0aGVyIHRvIGZpZ3VyZSBvdXQgKndoeSogdGhpcyBpbml0aWFsaXphdGlvbiBpcyBoYXBwZW5pbmcgd2hlbiBpbmdyZXNzIHBhY2tldHMgYXJlIGJlaW5nIHJlamVjdGVkLiBNeSBpbnN0aW5jdCBpcyB0aGF0IHRoaXMgaW5pdGlhbGl6YXRpb24gaXMgY3J1Y2lhbCB3aGVuIGluZ3Jlc3MgcGFja2V0cyBhcmUgYmVpbmcgcmVqZWN0ZWQsIGJ1dCB0aGlzIGlzIHNvbWV0aGluZyB0aGF0IG5lZWRzIGEgZGVlcGVyIGxvb2suIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYElQQ0Ioc2tiX2luKWAgcmVwcmVzZW50cyBhbmQgaG93IGl0cyBpbml0aWFsaXphdGlvbiBhdCB0aGlzIHBvaW50IGltcGFjdHMgdGhlIG92ZXJhbGwgZmxvdyBvZiB0aGUgcGFja2V0LiBMZXQmIzM5O3MgZGVsdmUgaW50byB0aGUgZnVuY3Rpb24gdG8gYmUgY2VydGFpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl9zZW5kX3VucmVhY2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYz0zNDQ9RVhQT1JUX1NZTUJPTF9HUEwobmZfc2VuZF9yZXNldCk7XG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYy0zNDUtXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYzozNDY6dm9pZCBuZl9zZW5kX3VucmVhY2goc3RydWN0IHNrX2J1ZmYgKnNrYl9pbiwgaW50IGNvZGUsIGludCBob29rKVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMtMzQ3LXtcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYy0zNzItfVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmM6MzczOkVYUE9SVF9TWU1CT0xfR1BMKG5mX3NlbmRfdW5yZWFjaCk7XG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYy0zNzQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgwOAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgZm9jdXNpbmcgb24gZmlndXJpbmcgb3V0IHRob3NlIGBuZl9zZW5kX3VucmVhY2hgIGNvbmZpZ3VyYXRpb25zOgoKKipBbmFseXppbmcgYG5mX3NlbmRfdW5yZWFjaGAgQ29uZmlndXJhdGlvbiBSZXF1aXJlbWVudHMqKgoKT2theSwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0IGNvbmZpZ3VyYXRpb25zIGFyZSBlc3NlbnRpYWwgZm9yIGBuZl9zZW5kX3VucmVhY2hgIHRvIGZ1bmN0aW9uIHByb3Blcmx5LiBNeSBpbW1lZGlhdGUgdGhpbmtpbmcgZ29lcyB0byB0aGUgbmV0d29ya2luZyBzdGFjaywgbmF0dXJhbGx5LiBJ4oCZbSBzdGFydGluZyB3aXRoIHRoZSBhc3N1bXB0aW9uIHRoYXQgdGhpcyBsaWtlbHkgdG91Y2hlcyB1cG9uIHRoZSBOZXRmaWx0ZXIgZnJhbWV3b3JrLCBzbyB0aGUgc3RhbmRhcmQgTmV0ZmlsdGVyIG1vZHVsZSBsb2FkaW5nIGNvbnNpZGVyYXRpb25zIGFyZSBkZWZpbml0ZWx5IG9uIHRoZSByYWRhci4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoYXQgYGlwdGFibGVzYCBvciBgbmZ0YWJsZXNgIChkZXBlbmRpbmcgb24gdGhlIHN5c3RlbSwgb2YgY291cnNlKSBhcmUgY29uZmlndXJlZCBjb3JyZWN0bHkgYW5kIHRoYXQgdGhlIG5lY2Vzc2FyeSBOZXRmaWx0ZXIgbW9kdWxlcyBhcmUgbG9hZGVkLiBBbnkgcHJlLXJlcXVpc2l0ZXMgZm9yIHRoZSB0YXJnZXQgY29uZmlndXJhdGlvbiAoZS5nLiwgc3BlY2lmaWMga2VybmVsIHZlcnNpb25zLCBmZWF0dXJlcyBlbmFibGVkIGR1cmluZyBjb21waWxhdGlvbikgYXJlIGtleSBjb25zaWRlcmF0aW9ucywgb2YgY291cnNlLCBhcyB3ZWxsLgoKSeKAmW0gYWxzbyBhc3N1bWluZyB0aGF0IHRoZSBzcGVjaWZpYyAqYmVoYXZpb3IqIG9mIGBuZl9zZW5kX3VucmVhY2hgIGlzIGNvbnRleHQtZGVwZW5kZW50LiBXaGF0IHRyaWdnZXJzIGl0cyB1c2U/IFdoYXQga2luZCBvZiBJQ01QIG1lc3NhZ2UgZ2V0cyBzZW50IGJhY2s/IEtub3dpbmcgaG93IHRoZSBhcHBsaWNhdGlvbiwgb3IgdGhlIHN5c3RlbSwgKnVzZXMqIGBuZl9zZW5kX3VucmVhY2hgIGlzIGdvaW5nIHRvIGJlIHZpdGFsIHRvIHVuZGVyc3RhbmRpbmcgaXRzIGRlcGVuZGVuY2llcy4gQXJlIHRoZXJlIHNwZWNpZmljIHJvdXRpbmcgdGFibGVzIGl0IGludGVyYWN0cyB3aXRoPyBBbnkgaW50ZXJhY3Rpb25zIHdpdGggY29ubmVjdGlvbiB0cmFja2luZyAoY29ubnRyYWNrKT8gVGhpcyB3aWxsIHJlcXVpcmUgYSBkZWVwIGRpdmUgdG8gaWRlbnRpZnkgYWxsIHRoZSBwb3NzaWJpbGl0aWVzLCBvZiBjb3Vyc2UuCgpCZXlvbmQgdGhlIGltbWVkaWF0ZSBjb25maWd1cmF0aW9uLCBJIG5lZWQgdG8gdGhpbmsgYWJvdXQgcG90ZW50aWFsIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIGtlcm5lbCBtb2R1bGVzLiBBcmUgdGhlcmUgYW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBuZXR3b3JrIGludGVyZmFjZXMgb3Igc3Vic3lzdGVtcz8gQXJlIHRoZXJlIGFueSBrbm93biBjb21wYXRpYmlsaXR5IGlzc3VlcyB3aXRoIG90aGVyIGZlYXR1cmVzLCBsaWtlIE5BVCBvciBWUE5zPyBUaGUgYnJvYWRlciBjb250ZXh0IG1hdHRlcnMuIEkgbmVlZCB0byB0cmVhdCB0aGlzIGFzIG1vcmUgdGhhbiBqdXN0IGEgc3BlY2lmaWMgbW9kdWxlIGNvbmZpZ3VyYXRpb247IGl0JiMzOTtzIGEgcGFydCBvZiB0aGUgb3ZlcmFsbCBuZXR3b3JrIGFyY2hpdGVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl9zZW5kX3VucmVhY2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmM9MzE9cmVqZWN0X3RnKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jLTM3LVx0Y2FzZSBJUFRfSUNNUF9ORVRfVU5SRUFDSEFCTEU6XG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jOjM4Olx0XHRuZl9zZW5kX3VucmVhY2goc2tiLCBJQ01QX05FVF9VTlJFQUNILCBob29rKTtcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtMzktXHRcdGJyZWFrO1xubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYy00MC1cdGNhc2UgSVBUX0lDTVBfSE9TVF9VTlJFQUNIQUJMRTpcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmM6NDE6XHRcdG5mX3NlbmRfdW5yZWFjaChza2IsIElDTVBfSE9TVF9VTlJFQUNILCBob29rKTtcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtNDItXHRcdGJyZWFrO1xubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYy00My1cdGNhc2UgSVBUX0lDTVBfUFJPVF9VTlJFQUNIQUJMRTpcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmM6NDQ6XHRcdG5mX3NlbmRfdW5yZWFjaChza2IsIElDTVBfUFJPVF9VTlJFQUNILCBob29rKTtcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtNDUtXHRcdGJyZWFrO1xubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYy00Ni1cdGNhc2UgSVBUX0lDTVBfUE9SVF9VTlJFQUNIQUJMRTpcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmM6NDc6XHRcdG5mX3NlbmRfdW5yZWFjaChza2IsIElDTVBfUE9SVF9VTlJFQUNILCBob29rKTtcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtNDgtXHRcdGJyZWFrO1xubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYy00OS1cdGNhc2UgSVBUX0lDTVBfTkVUX1BST0hJQklURUQ6XG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jOjUwOlx0XHRuZl9zZW5kX3VucmVhY2goc2tiLCBJQ01QX05FVF9BTk8sIGhvb2spO1xubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYy01MS1cdFx0YnJlYWs7XG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jLTUyLVx0Y2FzZSBJUFRfSUNNUF9IT1NUX1BST0hJQklURUQ6XG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jOjUzOlx0XHRuZl9zZW5kX3VucmVhY2goc2tiLCBJQ01QX0hPU1RfQU5PLCBob29rKTtcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtNTQtXHRcdGJyZWFrO1xubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYy01NS1cdGNhc2UgSVBUX0lDTVBfQURNSU5fUFJPSElCSVRFRDpcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmM6NTY6XHRcdG5mX3NlbmRfdW5yZWFjaChza2IsIElDTVBfUEtUX0ZJTFRFUkVELCBob29rKTtcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtNTctXHRcdGJyZWFrO1xuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jPTM0ND1FWFBPUlRfU1lNQk9MX0dQTChuZl9zZW5kX3Jlc2V0KTtcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jLTM0NS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jOjM0Njp2b2lkIG5mX3NlbmRfdW5yZWFjaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luLCBpbnQgY29kZSwgaW50IGhvb2spXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYy0zNDcte1xuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jLTM3Mi19XG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYzozNzM6RVhQT1JUX1NZTUJPTF9HUEwobmZfc2VuZF91bnJlYWNoKTtcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jLTM3NC1cbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pcHY0LmM9MTk9c3RhdGljIHZvaWQgbmZ0X3JlamVjdF9pcHY0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZnRfcmVqZWN0X2lwdjQuYy0yNi1cdGNhc2UgTkZUX1JFSkVDVF9JQ01QX1VOUkVBQ0g6XG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pcHY0LmM6Mjc6XHRcdG5mX3NlbmRfdW5yZWFjaChwa3QtXHUwMDNlc2tiLCBwcml2LVx1MDAzZWljbXBfY29kZSwgbmZ0X2hvb2socGt0KSk7XG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pcHY0LmMtMjgtXHRcdGJyZWFrO1xuLS1cbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jPTM1PXJlamVjdF90ZzYoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuLS1cbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jLTQxLVx0Y2FzZSBJUDZUX0lDTVA2X05PX1JPVVRFOlxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmM6NDI6XHRcdG5mX3NlbmRfdW5yZWFjaDYobmV0LCBza2IsIElDTVBWNl9OT1JPVVRFLCB4dF9ob29rbnVtKHBhcikpO1xubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNDMtXHRcdGJyZWFrO1xubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNDQtXHRjYXNlIElQNlRfSUNNUDZfQURNX1BST0hJQklURUQ6XG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYzo0NTpcdFx0bmZfc2VuZF91bnJlYWNoNihuZXQsIHNrYiwgSUNNUFY2X0FETV9QUk9ISUJJVEVELFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNDYtXHRcdFx0XHQgeHRfaG9va251bShwYXIpKTtcbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYy00OC1cdGNhc2UgSVA2VF9JQ01QNl9OT1RfTkVJR0hCT1VSOlxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmM6NDk6XHRcdG5mX3NlbmRfdW5yZWFjaDYobmV0LCBza2IsIElDTVBWNl9OT1RfTkVJR0hCT1VSLFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNTAtXHRcdFx0XHQgeHRfaG9va251bShwYXIpKTtcbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYy01Mi1cdGNhc2UgSVA2VF9JQ01QNl9BRERSX1VOUkVBQ0g6XG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYzo1MzpcdFx0bmZfc2VuZF91bnJlYWNoNihuZXQsIHNrYiwgSUNNUFY2X0FERFJfVU5SRUFDSCxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jLTU0LVx0XHRcdFx0IHh0X2hvb2tudW0ocGFyKSk7XG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNTYtXHRjYXNlIElQNlRfSUNNUDZfUE9SVF9VTlJFQUNIOlxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmM6NTc6XHRcdG5mX3NlbmRfdW5yZWFjaDYobmV0LCBza2IsIElDTVBWNl9QT1JUX1VOUkVBQ0gsXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYy01OC1cdFx0XHRcdCB4dF9ob29rbnVtKHBhcikpO1xuLS1cbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jLTY2LVx0Y2FzZSBJUDZUX0lDTVA2X1BPTElDWV9GQUlMOlxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmM6Njc6XHRcdG5mX3NlbmRfdW5yZWFjaDYobmV0LCBza2IsIElDTVBWNl9QT0xJQ1lfRkFJTCwgeHRfaG9va251bShwYXIpKTtcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jLTY4LVx0XHRicmVhaztcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jLTY5LVx0Y2FzZSBJUDZUX0lDTVA2X1JFSkVDVF9ST1VURTpcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jOjcwOlx0XHRuZl9zZW5kX3VucmVhY2g2KG5ldCwgc2tiLCBJQ01QVjZfUkVKRUNUX1JPVVRFLFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNzEtXHRcdFx0XHQgeHRfaG9va251bShwYXIpKTtcbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjYuYz00MTI9c3RhdGljIGJvb2wgcmVqZWN0Nl9jc3VtX29rKHN0cnVjdCBza19idWZmICpza2IsIGludCBob29rKVxuLS1cbm5ldC9pcHY2L25ldGZpbHRlci9uZl9yZWplY3RfaXB2Ni5jLTQzMy1cbm5ldC9pcHY2L25ldGZpbHRlci9uZl9yZWplY3RfaXB2Ni5jOjQzNDp2b2lkIG5mX3NlbmRfdW5yZWFjaDYoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luLFxubmV0L2lwdjYvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY2LmMtNDM1LVx0XHQgICAgICB1bnNpZ25lZCBjaGFyIGNvZGUsIHVuc2lnbmVkIGludCBob29rbnVtKVxuLS1cbm5ldC9pcHY2L25ldGZpbHRlci9uZl9yZWplY3RfaXB2Ni5jLTQ0Ny19XG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjYuYzo0NDg6RVhQT1JUX1NZTUJPTF9HUEwobmZfc2VuZF91bnJlYWNoNik7XG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjYuYy00NDktXG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyL25mdF9yZWplY3RfaXB2Ni5jPTE5PXN0YXRpYyB2b2lkIG5mdF9yZWplY3RfaXB2Nl9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pcHY2LmMtMjYtXHRjYXNlIE5GVF9SRUpFQ1RfSUNNUF9VTlJFQUNIOlxubmV0L2lwdjYvbmV0ZmlsdGVyL25mdF9yZWplY3RfaXB2Ni5jOjI3Olx0XHRuZl9zZW5kX3VucmVhY2g2KG5mdF9uZXQocGt0KSwgcGt0LVx1MDAzZXNrYiwgcHJpdi1cdTAwM2VpY21wX2NvZGUsXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pcHY2LmMtMjgtXHRcdFx0XHQgbmZ0X2hvb2socGt0KSk7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYz0xNz1zdGF0aWMgdm9pZCBuZnRfcmVqZWN0X2luZXRfZXZhbChjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsXG4tLVxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy0yNi1cdFx0Y2FzZSBORlRfUkVKRUNUX0lDTVBfVU5SRUFDSDpcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmM6Mjc6XHRcdFx0bmZfc2VuZF91bnJlYWNoKHBrdC1cdTAwM2Vza2IsIHByaXYtXHUwMDNlaWNtcF9jb2RlLFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy0yOC1cdFx0XHRcdFx0bmZ0X2hvb2socGt0KSk7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy0zNC1cdFx0Y2FzZSBORlRfUkVKRUNUX0lDTVBYX1VOUkVBQ0g6XG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jOjM1Olx0XHRcdG5mX3NlbmRfdW5yZWFjaChwa3QtXHUwMDNlc2tiLFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy0zNi1cdFx0XHRcdFx0bmZ0X3JlamVjdF9pY21wX2NvZGUocHJpdi1cdTAwM2VpY21wX2NvZGUpLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmMtNDMtXHRcdGNhc2UgTkZUX1JFSkVDVF9JQ01QX1VOUkVBQ0g6XG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jOjQ0Olx0XHRcdG5mX3NlbmRfdW5yZWFjaDYobmZ0X25ldChwa3QpLCBwa3QtXHUwMDNlc2tiLFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy00NS1cdFx0XHRcdFx0IHByaXYtXHUwMDNlaWNtcF9jb2RlLCBuZnRfaG9vayhwa3QpKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jLTUxLVx0XHRjYXNlIE5GVF9SRUpFQ1RfSUNNUFhfVU5SRUFDSDpcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmM6NTI6XHRcdFx0bmZfc2VuZF91bnJlYWNoNihuZnRfbmV0KHBrdCksIHBrdC1cdTAwM2Vza2IsXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jLTUzLVx0XHRcdFx0XHQgbmZ0X3JlamVjdF9pY21wdjZfY29kZShwcml2LVx1MDAzZWljbXBfY29kZSksXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTk0MQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3Mgb24gbXkgbWluZCByZWdhcmRpbmcgdGhpcyBgbmZfc2VuZF91bnJlYWNoYCBmdW5jdGlvbi4KCioqQW5hbHl6aW5nIGBuZl9zZW5kX3VucmVhY2hgIFVzYWdlKioKClJpZ2h0LCBzbyB0aGlzIGBuZl9zZW5kX3VucmVhY2hgIGZ1bmN0aW9uIGhhcyBiZWVuIGV4cG9ydGVkIGFuZCwgaW1wb3J0YW50bHksIGl0JiMzOTtzIGJlaW5nICp1c2VkKiBpbiBgaXB0X1JFSkVDVC5jYCwgYG5mdF9yZWplY3RfaXB2NC5jYCwgYW5kIGBuZnRfcmVqZWN0X2luZXQuY2AuIFRoYXQmIzM5O3MgdGhlIGtleS4gS25vd2luZyB3aGVyZSBpdCYjMzk7cyAqdXNlZCogZ2l2ZXMgYSBzaWduaWZpY2FudCBpbnNpZ2h0LiBUaGlzIG1lYW5zIGl0JiMzOTtzIHByZXR0eSBjb3JlIHRvIHNlbmRpbmcgJiMzNDt1bnJlYWNoYWJsZSYjMzQ7IElDTVAvVENQIHJlc3BvbnNlcyBpbiB0aG9zZSBuZXR3b3JrIGZpbHRlcmluZyBjb250ZXh0cy4gTm93LCBzaW5jZSBJJiMzOTttIHRyeWluZyB0byB3cmFwIG15IGhlYWQgYXJvdW5kIHRoaXMsIHRoZSBsb2dpY2FsIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIGBuZl9yZWplY3RfaXB2NC5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBmdW5jdGlvbiYjMzk7cyBwYXJhbWV0ZXJzIGFyZSBzZXQsIG9yIG1heWJlIGhvdyBpdCBpbnRlZ3JhdGVzIHdpdGggdGhlIHVuZGVybHlpbmcgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mX3JlamVjdF9pcHY0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L25ldGZpbHRlci9NYWtlZmlsZT0xMD1vYmotJChDT05GSUdfTkZfVFBST1hZX0lQVjQpICYjNDM7PSBuZl90cHJveHlfaXB2NC5vXG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlLTEyLSMgcmVqZWN0XG5uZXQvaXB2NC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTM6b2JqLSQoQ09ORklHX05GX1JFSkVDVF9JUFY0KSAmIzQzOz0gbmZfcmVqZWN0X2lwdjQub1xubmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlLTE0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYzNDkKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGEgTmV0d29yayBGaWx0ZXJpbmcgQ29uZmlndXJhdGlvbiBSZXF1aXJlbWVudCoqCgpSaWdodCwgc28gSSBzZWUgdGhpcyBgQ09ORklHX05GX1JFSkVDVF9JUFY0YCBmbGFnIGlzIHNob3dpbmcgdXAuIE9idmlvdXNseSwgdGhhdCBzdWdnZXN0cyB3ZSBuZWVkIHRoZSBJUHY0IG5ldGZpbHRlciByZWplY3QgZnVuY3Rpb25hbGl0eSBlbmFibGVkLiBCZWZvcmUgSSBnbyB0b28gZGVlcCwgSSBzaG91bGQgY29uZmlybSBleGFjdGx5IHdoZXJlIHRoaXMgb3B0aW9uIGlzIGRlZmluZWQgYW5kIGhvdyBpdCByZWxhdGVzIHRvIHRoZSByZXN0IG9mIHRoZSBuZXRmaWx0ZXIgY29uZmlndXJhdGlvbi4gTGV0JiMzOTtzIGRpdmUgc3RyYWlnaHQgaW50byBgbmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWdgLiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIGNoZWNrIGZvciBgTkZfUkVKRUNUX0lQVjRgIGFuZCBpdHMgZGVwZW5kZW5jaWVzLiBUaGlzIEtjb25maWcgZmlsZSB3aWxsIGdpdmUgbWUgdGhlIGNsZWFyZXN0IHBpY3R1cmUgb2Ygd2hhdCB0aGlzIGZsYWcgYWN0dWFsbHkgY29udHJvbHMgYW5kIHdoYXQgb3RoZXIgb3B0aW9ucyBtaWdodCBuZWVkIHRvIGJlIGNvbnNpZGVyZWQgb3IgYWRqdXN0ZWQgYWxvbmdzaWRlIGl0LiBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgaW1wbGljYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZfUkVKRUNUX0lQVjQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZz04Nz1jb25maWcgTkZfTE9HX0lQVjRcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy05NC1cbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnOjk1OmNvbmZpZyBORl9SRUpFQ1RfSVBWNFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctOTYtXHR0cmlzdGF0ZSBcJiMzNDtJUHY0IHBhY2tldCByZWplY3Rpb25cJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjcwMAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBEZWNpcGhlcmluZyBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgSSYjMzk7bSBkaXZpbmcgaW4uIFRoZSBwcmltYXJ5IHF1ZXN0aW9uIGhlcmUgaXM6IHdoYXQgZmFjdG9ycyBhcmUgZHJpdmluZyB0aGlzIHNlbGVjdGlvbj8gV2hhdCBtZWNoYW5pc21zLCBwcm9jZXNzZXMsIG9yIGNvbmRpdGlvbnMgYXJlIGF0IHBsYXk/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMuIElzIHRoaXMgYSBtYXR0ZXIgb2YgaW5pdGlhbCBjb25kaXRpb25zLCBvciBpcyB0aGVyZSBzb21lIGZlZWRiYWNrIGxvb3AgYXQgcGxheT8gUGVyaGFwcyB0aGVyZSYjMzk7cyBhIHNwZWNpZmljIHRyaWdnZXIgb3IgYSBjYXNjYWRlIG9mIGV2ZW50cyBsZWFkaW5nIHRvIHRoaXMgJiMzNDtzZWxlY3Rpb24mIzM0OyB0aGF0IEkgbmVlZCB0byBpZGVudGlmeS4gTXkgYXBwcm9hY2ggaGVyZSBoYXMgdG8gc3RhcnQgd2l0aCB0cmFjaW5nIHRoZSBjYXVzZS1lZmZlY3QgcmVsYXRpb25zaGlwcy4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBsb29raW5nIGZvciBhbnkgaW1tZWRpYXRlIGNvcnJlbGF0aW9ucyBhbmQgZ28gZnJvbSB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IE5GX1JFSkVDVF9JUFY0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZz00Mj1jb25maWcgTkZUX1JFSkVDVF9JUFY0XG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZzo0MzpcdHNlbGVjdCBORl9SRUpFQ1RfSVBWNFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctNDQtXHRkZWZhdWx0IE5GVF9SRUpFQ1Rcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZz0xOTU9Y29uZmlnIElQX05GX1RBUkdFVF9SRUpFQ1Rcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy0xOTctXHRkZXBlbmRzIG9uIElQX05GX0ZJTFRFUiB8fCBORlRfQ09NUEFUXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZzoxOTg6XHRzZWxlY3QgTkZfUkVKRUNUX0lQVjRcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTE5OS1cdGRlZmF1bHQgbSBpZiBORVRGSUxURVJfQURWQU5DRUQ9blxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MDgyCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyBSZWplY3QgVGFyZ2V0IENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIHNvIEkgc2VlIHRoYXQgYENPTkZJR19JUF9ORl9UQVJHRVRfUkVKRUNUYCBhbmQgYENPTkZJR19ORlRfUkVKRUNUX0lQVjRgIGFyZSB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIHRoYXQgZW5hYmxlIHRoaXMgJiMzNDtyZWplY3QmIzM0OyBmdW5jdGlvbmFsaXR5LiBNeSBuZXh0IHN0ZXAsIGFzIGFsd2F5cywgaXMgdG8gZGlnIGludG8gdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZXMuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBgbmV0L25ldGZpbHRlci9LY29uZmlnYCBmaWxlLiBJJiMzOTttIGxvb2tpbmcgZm9yIGVpdGhlciBgTkZUX1JFSkVDVF9JTkVUYCBvciBzb21ldGhpbmcgc2ltaWxhciwgYXMgdGhhdCYjMzk7cyBwcm9iYWJseSB0aGUgdG9wLWxldmVsIG9wdGlvbiByZWxhdGVkIHRvIHRoZSBtb3JlIG1vZGVybiBuZnRhYmxlcy1iYXNlZCByZWplY3QgbW9kdWxlLiBJdCYjMzk7cyB0aW1lIHRvIGNvbmZpcm0gaG93IHRoZXNlIGNvbmZpZ3VyYXRpb25zIGFsbCBmaXQgdG9nZXRoZXIsIGFuZCBob3cgdGhlIGtlcm5lbCBoYW5kbGVzIHRoZSByZWplY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IE5GX1JFSkVDVF9JUFY0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzM0OQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipOYXZpZ2F0aW5nIHRoZSBLY29uZmlnIExhYnlyaW50aCoqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIHdhcyBnb2luZyBkb3duIGEgcGF0aCwgYnV0IEkgbmVlZCB0byBwYXVzZSBhbmQgZG91YmxlLWNoZWNrIHNvbWV0aGluZy4gVGhlIHBvdGVudGlhbCBwcm9ibGVtIGxpa2VseSByZXN0cyBzb21ld2hlcmUgZWxzZS4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY29uc2lkZXIgYE5GVF9SRUpFQ1RfSU5FVGAgaW4gYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AuIEl0JiMzOTtzIGEga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGluIHRoZSBuZXRmaWx0ZXIgc3Vic3lzdGVtLCBhbmQgaXQgaGFzIHRoZSBwb3RlbnRpYWwgdG8gaW5mbHVlbmNlIHRoZSBiZWhhdmlvciBJJiMzOTttIHNlZWluZy4gQ291bGQgaXQgYmUgc3VidGx5IGVuYWJsaW5nIG9yIHNlbGVjdGluZyBzb21ldGhpbmcgdGhhdCYjMzk7cyBjYXVzaW5nIHRoZSBpc3N1ZT8gSSBuZWVkIHRvIGdvIGJhY2sgYW5kIHRyYWNlIHRoZSBkZXBlbmRlbmNpZXMsIGVuc3VyZSBpdCYjMzk7cyBub3QgcHVsbGluZyBpbiBzb21ldGhpbmcgdW5leHBlY3RlZCB0aGF0IGV4cGxhaW5zIHRoZSBvdXRjb21lLiBJIG5lZWQgdG8gYmUgc3VyZSB0aGF0IEkgZGlkbiYjMzk7dCBnbG9zcyBvdmVyIHRoaXMgaW4gbXkgaW5pdGlhbCBzY2FuLiBCZXR0ZXIgdG8gYmUgY2VydGFpbiwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCB0aGUgaW50cmljYWNpZXMgb2YgbmV0ZmlsdGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZUX1JFSkVDVF9JTkVUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz01Nzg9Y29uZmlnIE5GVF9SRUpFQ1Rcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNTg1LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjU4Njpjb25maWcgTkZUX1JFSkVDVF9JTkVUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNTg3LVx0ZGVwZW5kcyBvbiBORl9UQUJMRVNfSU5FVFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3Njg1CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5JiMzOTtyZSBteSBvd246CgoqKkFuYWx5emluZyB0aGUgU2VsZWN0aW9uIENyaXRlcmlhIGZvciBgTkZUX1JFSkVDVF9JTkVUYCoqCgpBbHJpZ2h0LCBteSBicmFpbiYjMzk7cyBraWNraW5nIGluIOKAkyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGV4YWN0bHkgdGhlIHNlbGVjdGlvbiBwcm9jZXNzIGlzIGZvciBgTkZUX1JFSkVDVF9JTkVUYC4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBkaWdnaW5nIGludG8gdGhhdCBkZWZpbml0aW9uLCBmaWd1cmluZyBvdXQgd2hhdCBjb25kaXRpb25zIG9yIGNyaXRlcmlhIGFyZSBiZWluZyB1c2VkLiBXaGF0JiMzOTtzIGl0IGZpbHRlcmluZyBvbj8gSXMgaXQgcHJvdG9jb2wtc3BlY2lmaWM/IERvZXMgaXQgbG9vayBhdCBzb3VyY2UvZGVzdGluYXRpb24gSVAgYWRkcmVzc2VzLCBwb3J0cywgb3RoZXIgbWV0YWRhdGE/IEkgbmVlZCBhIGNsZWFyIG1lbnRhbCBtb2RlbCBvZiBob3cgdGhpcyByZWplY3Rpb24gZnVuY3Rpb24gbWFrZXMgaXRzIGRlY2lzaW9ucy4gVW5kZXJzdGFuZGluZyB0aGUgc2VsZWN0aW9uIGxvZ2ljIGlzIGtleSB0byBlZmZlY3RpdmVseSB0cm91Ymxlc2hvb3Rpbmcgb3IgY29uZmlndXJpbmcgbmV0d29yayBwb2xpY2llcyByZWxhdGVkIHRvIHRoaXMgcGFydGljdWxhciBmZWF0dXJlLiBUaW1lIHRvIGdldCBpbnRvIHRoZSBkZXRhaWxzLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05GVF9SRUpFQ1RfSU5FVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9NTc4PWNvbmZpZyBORlRfUkVKRUNUXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTU4NS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo1ODY6Y29uZmlnIE5GVF9SRUpFQ1RfSU5FVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTU4Ny1cdGRlcGVuZHMgb24gTkZfVEFCTEVTX0lORVRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzk4MgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHByb2Nlc3NpbmcgdGhlIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgYE5GVF9SRUpFQ1RfSU5FVGA6CgoqKkRpdmluZyBpbnRvIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIGFuZCBgTkZUX1JFSkVDVF9JTkVUYCoqCgpPa2F5LCB0aW1lIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIG5ldGZpbHRlciBpbmZyYXN0cnVjdHVyZSwgc3BlY2lmaWNhbGx5IHRoZSByZWplY3Rpb24gbWVjaGFuaXNtIHdpdGhpbiB0aGUgbmV3IGZpbHRlcmluZyBmcmFtZXdvcmssIG5mdGFibGVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHJlamVjdCBmdW5jdGlvbmFsaXR5IGlzIGV4cG9zZWQgdG8gdGhlIHVzZXIsIGFuZCB3aGF0IGRlcGVuZGVuY2llcyBpdCBoYXMuIExldCYjMzk7cyBzZWUuLi4gSSYjMzk7bGwgc3RhcnQgd2l0aCB0aGUgZmlsZSBwYXRoIHlvdSYjMzk7dmUgZ2l2ZW4gbWU6IGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgLiBSaWdodCwgdGhlIEtjb25maWcgZmlsZSBzaG91bGQgZGVmaW5lIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHRoaXMgaXMgZ29vZC4KCkkmIzM5O20gemVyb2luZyBpbiBvbiBgTkZUX1JFSkVDVF9JTkVUYCwgYW5kIHRoYXQgcHJvYmFibHkgbWVhbnMgdGhpcyBpcyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gZm9yIHRoZSByZWplY3QgdGFyZ2V0IHRoYXQmIzM5O3MgZGVzaWduZWQgdG8gd29yayB3aXRoIGFsbCBpbnRlcm5ldCBwcm90b2NvbCBmYW1pbGllcywgSVB2NCBhbmQgSVB2Ni4gVGhpcyBpcyBrZXksIEkgbmVlZCB0byBjaGVjayB0aGUgZGVwZW5kZW5jaWVzLiBBcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIG9wdGlvbnM/IERvZXMgdGhpcyB0aWUgaW50byB0aGUgY29yZSBuZnRhYmxlcyBjb21wb25lbnRzIGxpa2UgYE5FVEZJTFRFUl9YVF9UQVJHRVRfTkZRVUVVRWAgb3IgaXMgaXQgaW5kZXBlbmRlbnQ/IEkgZXhwZWN0IGl0JiMzOTtsbCBkZXBlbmQgb24gdGhlIGJhc2ljIG5mdGFibGVzIGZlYXR1cmVzIGJlaW5nIGVuYWJsZWQuIEkgbmVlZCB0byB0cmFjZSB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgb3B0aW9uLiBJcyBpdCBlbmFibGVkIGJ5IGRlZmF1bHQsIG9yIGlzIGl0IGEgbW9kdWxhciBmZWF0dXJlPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIG9yIGRpc2FibGluZyBpdCBhdCBjb21waWxlIHRpbWU/IERvZXMgaXQgcmVxdWlyZSBhbnkgb3RoZXIga2VybmVsIHN1YnN5c3RlbXMgdG8gYmUgYnVpbHQ/IFRoaXMgd291bGQgYWZmZWN0IHN5c3RlbSBwZXJmb3JtYW5jZSBzbyB0aGlzIGlzIGltcG9ydGFudC4KCkkgbmVlZCB0byBzZWUgaWYgaXQgbWFrZXMgYSBkaWZmZXJlbmNlIHRvIGFueSBrZXJuZWwgYmVoYXZpb3Igb3IgaWYgaXQgc2ltcGx5IHRvZ2dsZXMgY29tcGlsYXRpb24uIElzIHRoaXMgdGllZCB0byBhbnkgc3BlY2lmaWMgZGV2aWNlIGNvbmZpZ3VyYXRpb24/CgpTbyBmYXIgc28gZ29vZC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgcGljdHVyZSBvZiBob3cgdGhlIHJlamVjdCB0YXJnZXQgaW4gbmZ0YWJsZXMgaXMgY29uZmlndXJlZCBhbmQgaXRzIHJvbGUgaW4gdGhlIGtlcm5lbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1ODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDU4MDpcdFx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIG5mX3RhYmxlcyByZWplY3Qgc3VwcG9ydFwmIzM0O1xuIDU4MTpcdFx0aGVscFxuIDU4MjpcdFx0ICBUaGlzIG9wdGlvbiBhZGRzIHRoZSBcJiMzNDtyZWplY3RcJiMzNDsgZXhwcmVzc2lvbiB0aGF0IHlvdSBjYW4gdXNlIHRvXG4gNTgzOlx0XHQgIGV4cGxpY2l0bHkgZGVueSBhbmQgbm90aWZ5IHZpYSBUQ1AgcmVzZXQvSUNNUCBpbmZvcm1hdGlvbmFsIGVycm9yc1xuIDU4NDpcdFx0ICB1bmFsbG93ZWQgdHJhZmZpYy5cbiA1ODU6XHRcbiA1ODY6XHRjb25maWcgTkZUX1JFSkVDVF9JTkVUXG4gNTg3Olx0XHRkZXBlbmRzIG9uIE5GX1RBQkxFU19JTkVUXG4gNTg4Olx0XHRkZWZhdWx0IE5GVF9SRUpFQ1RcbiA1ODk6XHRcdHRyaXN0YXRlXG4gNTkwOlx0XG4gNTkxOlx0Y29uZmlnIE5GVF9DT01QQVRcbiA1OTI6XHRcdGRlcGVuZHMgb24gTkVURklMVEVSX1hUQUJMRVNcbiA1OTM6XHRcdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciB4X3RhYmxlcyBvdmVyIG5mX3RhYmxlcyBtb2R1bGVcJiMzNDtcbiA1OTQ6XHRcdGhlbHBcbiA1OTU6XHRcdCAgVGhpcyBpcyByZXF1aXJlZCBpZiB5b3UgaW50ZW5kIHRvIHVzZSBhbnkgb2YgZXhpc3RpbmdcbiA1OTY6XHRcdCAgeF90YWJsZXMgbWF0Y2gvdGFyZ2V0IGV4dGVuc2lvbnMgb3ZlciB0aGUgbmZfdGFibGVzXG4gNTk3Olx0XHQgIGZyYW1ld29yay5cbiA1OTg6XHRcbiA1OTk6XHRjb25maWcgTkZUX0hBU0hcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODcwNAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgTkZUYWJsZXMgYW5kIElQIFJlamVjdCBCZWhhdmlvcioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBORlRfUkVKRUNUX0lORVRgIHRoaW5nLCBhbmQgc29tZXRoaW5nIGlzbiYjMzk7dCBxdWl0ZSBjbGlja2luZy4gSSB3YXMgdW5kZXIgdGhlIGltcHJlc3Npb24gdGhhdCBpdCB3b3VsZCBhdXRvbWF0aWNhbGx5IGhhbmRsZSBgTkZfUkVKRUNUX0lQVjRgLCBidXQgaXQgc2VlbXMgdGhhdCYjMzk7cyBub3QgdGhlIGNhc2UuIExldCBtZSBkb3VibGUtY2hlY2sgbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhpcyBhbGwgaW50ZWdyYXRlcy4gUmlnaHQsIHNvIGBORlRfUkVKRUNUX0lORVRgIGxldmVyYWdlcyBgbmZfc2VuZF91bnJlYWNoYCwgd2hpY2gsIGFzIEkgcmVjYWxsLCBpcyBpbXBsZW1lbnRlZCB3aXRoaW4gYG5mX3JlamVjdF9pcHY0LmNgLiBUaGF0IG1ha2VzIG1vcmUgc2Vuc2Ugbm93LiBUbyBiZSBhYnNvbHV0ZWx5IHN1cmUgSSYjMzk7dmUgZ290IHRoZSBidWlsZCBjb25maWd1cmF0aW9uIHJpZ2h0LCBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgdGhlIE5ldGZpbHRlciBNYWtlZmlsZS4gVGltZSB0byB2ZXJpZnkgd2hhdCBnZXRzIGJ1aWx0IGFuZCBob3cgdGhlc2UgbW9kdWxlcyBhcmUgbGlua2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZnRfcmVqZWN0X2luZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9MTE4PW9iai0kKENPTkZJR19ORlRfUkVKRUNUKSBcdCYjNDM7PSBuZnRfcmVqZWN0Lm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTE5Om9iai0kKENPTkZJR19ORlRfUkVKRUNUX0lORVQpXHQmIzQzOz0gbmZ0X3JlamVjdF9pbmV0Lm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTIwLW9iai0kKENPTkZJR19ORlRfUkVKRUNUX05FVERFVilcdCYjNDM7PSBuZnRfcmVqZWN0X25ldGRldi5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkwNzgKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4KCioqSW52ZXN0aWdhdGluZyBhIFBvdGVudGlhbCBMaW5rYWdlIElzc3VlIGluIHRoZSBuZnRfcmVqZWN0X2luZXQgTW9kdWxlKioKCkhtbSwgc28gYG5mdF9yZWplY3RfaW5ldC5jYCByZWxpZXMgb24gYG5mX3NlbmRfdW5yZWFjaGAuIFRoYXQmIzM5O3MgYSBrZXkgZnVuY3Rpb24uIEJ1dCBpZiBgTkZfUkVKRUNUX0lQVjRgIGlzbiYjMzk7dCBlbmFibGVkLCBob3cgZG9lcyB0aGF0IGxpbmthZ2UgZXZlbiB3b3JrPyBXaGVyZSBkb2VzIHRoYXQgY29ubmVjdGlvbiBjb21lIGZyb20/IFRoaXMgc2VlbXMgbGlrZSBhIHBvdGVudGlhbCBwb2ludCBvZiBmYWlsdXJlLgoKQWxyaWdodCwgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGNoZWNrIHRoZSBpbmNsdWRlcyBmb3IgYG5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmNgLiBHb3R0YSBzZWUgd2hhdCBvdGhlciBtb2R1bGVzLCBhbmQgdGhlcmVmb3JlIHdoYXQgcG90ZW50aWFsIGRlcGVuZGVuY2llcywgYXJlIGluIHBsYXkgaGVyZSB0byB1bmRlcnN0YW5kIHRoaXMgYnVpbGQgcmVsYXRpb25zaGlwLiBJIG5lZWQgdG8gdHJhY2UgdGhlIHJlZmVyZW5jZXMuIFRoaXMgaXMgd2hlcmUgSSYjMzk7bGwgZmluZCBteSBhbnN3ZXJzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl9zZW5kX3VucmVhY2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmM9MTc9c3RhdGljIHZvaWQgbmZ0X3JlamVjdF9pbmV0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmMtMjYtXHRcdGNhc2UgTkZUX1JFSkVDVF9JQ01QX1VOUkVBQ0g6XG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jOjI3Olx0XHRcdG5mX3NlbmRfdW5yZWFjaChwa3QtXHUwMDNlc2tiLCBwcml2LVx1MDAzZWljbXBfY29kZSxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmMtMjgtXHRcdFx0XHRcdG5mdF9ob29rKHBrdCkpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmMtMzQtXHRcdGNhc2UgTkZUX1JFSkVDVF9JQ01QWF9VTlJFQUNIOlxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYzozNTpcdFx0XHRuZl9zZW5kX3VucmVhY2gocGt0LVx1MDAzZXNrYixcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmMtMzYtXHRcdFx0XHRcdG5mdF9yZWplY3RfaWNtcF9jb2RlKHByaXYtXHUwMDNlaWNtcF9jb2RlKSxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jLTQzLVx0XHRjYXNlIE5GVF9SRUpFQ1RfSUNNUF9VTlJFQUNIOlxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYzo0NDpcdFx0XHRuZl9zZW5kX3VucmVhY2g2KG5mdF9uZXQocGt0KSwgcGt0LVx1MDAzZXNrYixcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmMtNDUtXHRcdFx0XHRcdCBwcml2LVx1MDAzZWljbXBfY29kZSwgbmZ0X2hvb2socGt0KSk7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy01MS1cdFx0Y2FzZSBORlRfUkVKRUNUX0lDTVBYX1VOUkVBQ0g6XG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jOjUyOlx0XHRcdG5mX3NlbmRfdW5yZWFjaDYobmZ0X25ldChwa3QpLCBwa3QtXHUwMDNlc2tiLFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy01My1cdFx0XHRcdFx0IG5mdF9yZWplY3RfaWNtcHY2X2NvZGUocHJpdi1cdTAwM2VpY21wX2NvZGUpLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5Nzc5CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6CgoqKkRpdmluZyBpbnRvIHRoZSBJUHY0IE5GX1JFSkVDVCBIZWFkZXIqKgoKT2theSwgdGltZSB0byBnZXQgaW50byB0aGUgbml0dHktZ3JpdHR5IG9mIHRoZSBJUHY0IG5ldGZpbHRlciByZWplY3Rpb24gbW9kdWxlLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgZGVmaW5lZCBpbiBgaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL2lwdjQvbmZfcmVqZWN0LmhgLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIHRoZSBjb3JlIGRhdGEgc3RydWN0dXJlcyBhbmQgY29uc3RhbnRzIHJlbGF0ZWQgdG8gaG93IHdlIGhhbmRsZSBhbmQgY29uc3RydWN0IElDTVAgZXJyb3IgbWVzc2FnZXMgZm9yIGRyb3BwZWQgSVB2NCBwYWNrZXRzIHdpdGhpbiB0aGUgbmV0ZmlsdGVyIGZyYW1ld29yay4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2UgdGhlIGRpZmZlcmVudCBJQ01QIGVycm9yIGNvZGUgdHlwZXMgKGUuZy4sIGhvc3QgdW5yZWFjaGFibGUsIG5ldHdvcmsgdW5yZWFjaGFibGUsIGV0Yy4pIHRoYXQgdGhlIG1vZHVsZSBjYW4gZ2VuZXJhdGUsIHRoZSBzdHJ1Y3R1cmUgdGhhdCBob2xkcyB0aGUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIHJlbGF0ZWQgdG8gdGhlIG1vZHVsZSwgYW5kIGFueSBpbnRlcm5hbCBmdW5jdGlvbiBwcm90b3R5cGVzIHRoZSBtb2R1bGUgZXhwb3J0cy4gSG9wZWZ1bGx5LCB0aGUgaGVhZGVyIGZpbGUgaXMgd2VsbC1kb2N1bWVudGVkLCBtYWtpbmcgaXQgZWFzeSB0byBzZWUgaG93IHRoZSByZWplY3Rpb24gbWVjaGFuaXNtIGludGVyYWN0cyB3aXRoIG90aGVyIG5ldGZpbHRlciBjb21wb25lbnRzIGxpa2UgY29ubmVjdGlvbiB0cmFja2luZy4gSSYjMzk7bSBrZWVuIHRvIHVuZGVyc3RhbmQgdGhlIGZsZXhpYmlsaXR5IG9mZmVyZWQgaW4gY3JhZnRpbmcgcmVzcG9uc2VzLCBhbmQgaWYgdGhlcmUgYXJlIGFueSBvcHRpb25zIGZvciBjdXN0b21pemluZyB0aGUgSUNNUCBlcnJvciBtZXNzYWdlcyBiZXlvbmQgdGhlIGRlZmF1bHRzLiBMb29raW5nIGF0IHRoZSBpbmNsdWRlIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgZXZhbHVhdGluZyBjdXJyZW50IGRlc2lnbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfc2VuZF91bnJlYWNoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvbmV0ZmlsdGVyL2lwdjQvbmZfcmVqZWN0LmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvbmV0ZmlsdGVyL2lwdjQvbmZfcmVqZWN0LmgtOS1cbmluY2x1ZGUvbmV0L25ldGZpbHRlci9pcHY0L25mX3JlamVjdC5oOjEwOnZvaWQgbmZfc2VuZF91bnJlYWNoKHN0cnVjdCBza19idWZmICpza2JfaW4sIGludCBjb2RlLCBpbnQgaG9vayk7XG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvaXB2NC9uZl9yZWplY3QuaC0xMS12b2lkIG5mX3NlbmRfcmVzZXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqLCBzdHJ1Y3Qgc2tfYnVmZiAqb2xkc2tiLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDIwMAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBjb3JyZWN0bHkuIEl0IGxvb2tzIGxpa2UgYG5mdF9yZWplY3RfaW5ldGAgcmVsaWVzIG9uIGBORl9UQUJMRVNfSU5FVGAsIGJ1dCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlbSBpcyBjcml0aWNhbC4gRG9lcyBlbmFibGluZyBgTkZfVEFCTEVTX0lORVRgIGF1dG9tYXRpY2FsbHkgYnJpbmcgaW4gYE5GX1JFSkVDVF9JUFY0YD8gT3IgaXMgaXQgdGhlIG90aGVyIHdheSBhcm91bmQg4oCTIGRvZXMgYE5GVF9SRUpFQ1RfSU5FVGAgcHVsbCBpdCBpbiBpbnN0ZWFkPyBJIG5lZWQgdG8gYmUgcHJlY2lzZSBoZXJlLCBzaW5jZSBpbmNvcnJlY3RseSBjb25maWd1cmVkIG1vZHVsZXMgYW5kIGRlcGVuZGVuY2llcyBjYW4gbGVhZCB0byBtYWpvciBuZXR3b3JraW5nIGlzc3Vlcy4gSSYjMzk7ZCBiZXR0ZXIgZ28gYmFjayB0byB0aGUgc291cmNlLiBMZXQgbWUganVzdCBvcGVuIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIGFnYWluIGFuZCBkb3VibGUtY2hlY2sgdGhvc2UgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBvZiB0aGUgc2VsZWN0aW9uIGhpZXJhcmNoeS4gSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCBJIGFtIHVuZGVyc3RhbmRpbmcgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORl9SRUpFQ1RfSVBWNCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNDg5CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUsIG15IG1lbnRhbCBnZWFycyBhcmUgdHVybmluZy4uLgoKKipDaGVja2luZyB0aGUgS2NvbmZpZyBmb3IgUmVqZWN0aW9uIFJ1bGVzKioKClJpZ2h0LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGVzZSByZWplY3Rpb24gbWVjaGFuaXNtcyBhcmUgY29uZmlndXJlZC4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGBuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZ2Ag4oCTIHRoYXQmIzM5O3MgdGhlIHVzdWFsIHBsYWNlIHRvIGZpbmQgdGhlc2Ugc29ydHMgb2Ygb3B0aW9ucyBmb3IgSVB2NCBOZXRmaWx0ZXIsIGlzbiYjMzk7dCBpdD8gSSYjMzk7bSBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3IgYE5GVF9SRUpFQ1RfSU5FVGAgb3IgYE5GX1RBQkxFU19JTkVUYC4gVGhlc2Ugd291bGQgZ2l2ZSBtZSBhIGdvb2QgaW5kaWNhdGlvbiBvZiB3aGV0aGVyIHdlIGFyZSBldmVuIHVzaW5nIG9yIGhhdmUgc3VwcG9ydCBmb3IgdGhlIG5ldyByZWplY3Qgc3lzdGVtIG9yIHRoZSBvbGRlciBuZnRhYmxlcyBmcmFtZXdvcmsgdGhhdCBwcm92aWRlcyB0aGlzLiBLbm93aW5nIHRoaXMgd2lsbCBpbW1lZGlhdGVseSBmb2N1cyBteSBhdHRlbnRpb24gYW5kIGFuYWx5c2lzIGdvaW5nIGZvcndhcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkZUX1JFSkVDVF9JTkVUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDcyNAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipLY29uZmlnIERpdmUgZm9yIE5GVF9SRUpFQ1RfSU5FVCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gYE5GVF9SRUpFQ1RfSU5FVGAuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBrZXJuZWwmIzM5O3MgS2NvbmZpZyBmaWxlcy4gSSYjMzk7bSBoZWFkaW5nIHN0cmFpZ2h0IGZvciBgbmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWdgLiBUaGlzIGlzIHdoZXJlIEkmIzM5O2QgZXhwZWN0IHRvIGZpbmQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGZvciBJUHY2IG5ldGZpbHRlciBmdW5jdGlvbmFsaXR5LCBpbmNsdWRpbmcgYW55dGhpbmcgcmVsYXRlZCB0byByZWplY3QgYWN0aW9ucywgZXNwZWNpYWxseSB0aGUgSU5FVC1zcGVjaWZpYyBvbmVzLiBJJiMzOTttIGFudGljaXBhdGluZyB0aGF0IGBORlRfUkVKRUNUX0lORVRgIHdpbGwgYmUgZGVmaW5lZCB0aGVyZSwgb3IgYXQgdGhlIHZlcnkgbGVhc3QsIHRoYXQgdGhlIGRlcGVuZGVuY2llcyBhbmQgcmVsYXRpb25zaGlwcyB3aXRoIG90aGVyIHJlbGF0ZWQgb3B0aW9ucyB3aWxsIGJlIGNsZWFybHkgc3BlbGxlZCBvdXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBleGFjdCBwdXJwb3NlIGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIG5ldGZpbHRlciBmcmFtZXdvcmsuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiB0aGVyZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05GVF9SRUpFQ1RfSU5FVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA5NzgKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBgTkZUX1JFSkVDVF9JTkVUYCBDb25maWd1cmF0aW9uKioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEl0IHNlZW1zIGEgYml0IG9kZCB0aGF0IGBORlRfUkVKRUNUX0lORVRgIHdvdWxkIGRpcmVjdGx5IHNlbGVjdCBgTkZfUkVKRUNUX0lQVjRgLiBUaGF0IGRvZXNuJiMzOTt0IHNlZW0gcXVpdGUgcmlnaHQgaW4gbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlc2UgdGhpbmdzIHVzdWFsbHkgd29yay4gUGVyaGFwcyBJIG1pc3NlZCBzb21ldGhpbmcgaW4gYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2A/IEkgbmVlZCB0byBkb3VibGUtY2hlY2suIEJlc3Qgd2F5IHRvIGNsZWFyIHRoaXMgdXAgaXMgdG8gc2VhcmNoIHRoZSBlbnRpcmUgc291cmNlIHRyZWUgZm9yIG9jY3VycmVuY2VzIG9mIGBORl9SRUpFQ1RfSVBWNGAgdG8gdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jaWVzIGFuZCByZWxhdGlvbnNoaXBzLiBMZXQmIzM5O3MgZ2V0IHRvIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORl9SRUpFQ1RfSVBWNCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL25ldGZpbHRlci9LY29uZmlnPTE4PWNvbmZpZyBORlRfQlJJREdFX1JFSkVDVFxuLS1cbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL0tjb25maWctMjAtXHRkZXBlbmRzIG9uIE5GVF9SRUpFQ1Rcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL0tjb25maWc6MjE6XHRkZXBlbmRzIG9uIE5GX1JFSkVDVF9JUFY0XG5uZXQvYnJpZGdlL25ldGZpbHRlci9LY29uZmlnLTIyLVx0ZGVwZW5kcyBvbiBORl9SRUpFQ1RfSVBWNlxuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnPTQyPWNvbmZpZyBORlRfUkVKRUNUX0lQVjRcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnOjQzOlx0c2VsZWN0IE5GX1JFSkVDVF9JUFY0XG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy00NC1cdGRlZmF1bHQgTkZUX1JFSkVDVFxuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnPTg3PWNvbmZpZyBORl9MT0dfSVBWNFxuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTk0LVxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc6OTU6Y29uZmlnIE5GX1JFSkVDVF9JUFY0XG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy05Ni1cdHRyaXN0YXRlIFwmIzM0O0lQdjQgcGFja2V0IHJlamVjdGlvblwmIzM0O1xuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnPTE5NT1jb25maWcgSVBfTkZfVEFSR0VUX1JFSkVDVFxuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTE5Ny1cdGRlcGVuZHMgb24gSVBfTkZfRklMVEVSIHx8IE5GVF9DT01QQVRcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnOjE5ODpcdHNlbGVjdCBORl9SRUpFQ1RfSVBWNFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctMTk5LVx0ZGVmYXVsdCBtIGlmIE5FVEZJTFRFUl9BRFZBTkNFRD1uXG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlPTEwPW9iai0kKENPTkZJR19ORl9UUFJPWFlfSVBWNCkgJiM0Mzs9IG5mX3Rwcm94eV9pcHY0Lm9cbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTItIyByZWplY3Rcbm5ldC9pcHY0L25ldGZpbHRlci9NYWtlZmlsZToxMzpvYmotJChDT05GSUdfTkZfUkVKRUNUX0lQVjQpICYjNDM7PSBuZl9yZWplY3RfaXB2NC5vXG5uZXQvaXB2NC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNjc0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyBORlQgUmVqZWN0IE1vZHVsZSBCZWhhdmlvcioqCgpSaWdodCwgc28gYE5GVF9SRUpFQ1RfSU5FVGAgaXNuJiMzOTt0IG1hZ2ljYWxseSBwdWxsaW5nIGluIGBORl9SRUpFQ1RfSVBWNGAgYXMgSSYjMzk7ZCBpbml0aWFsbHkgYXNzdW1lZC4gU2VlbXMgSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgY29uZmlndXJhdGlvbi4gVGltZSB0byByZXZpc2l0IGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgLiBJJiMzOTtsbCB3YW50IHRvIHZlcmlmeSB0aGUgZGVwZW5kZW5jaWVzIGFuZCBzZWUgZXhhY3RseSBob3cgdGhvc2UgbW9kdWxlcyBhcmUgbGlua2VkLCBvciBtb3JlIGxpa2VseSwgKm5vdCogbGlua2VkLiBJdOKAmXMgcHJvYmFibHkgYSBzdWJ0bGUgcmVsYXRpb25zaGlwLCBvciBsYWNrIHRoZXJlb2YsIHdpdGhpbiB0aGUgS2NvbmZpZyBoaWVyYXJjaHkuIEkmIzM5O20gZ3Vlc3NpbmcgYSBjb25kaXRpb25hbCBkZXBlbmRlbmN5IG9yIGFuIGlzc3VlIHdpdGggdGhlIGludGVuZGVkIHNjb3BlIG9mIGBORlRfUkVKRUNUX0lORVRgIGl0c2VsZi4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBLY29uZmlnIGZpbGUgcmV2ZWFscy4uLiBJJiMzOTtsbCBuZWVkIHRvIGFzc2VzcyB0aGUgaW1wbGljYXRpb25zIGZvciBhIGNvbWJpbmVkIElQdjQvSVB2NiByZWplY3QgcnVsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1ODUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDU4NTpcdFxuIDU4NjpcdGNvbmZpZyBORlRfUkVKRUNUX0lORVRcbiA1ODc6XHRcdGRlcGVuZHMgb24gTkZfVEFCTEVTX0lORVRcbiA1ODg6XHRcdGRlZmF1bHQgTkZUX1JFSkVDVFxuIDU4OTpcdFx0dHJpc3RhdGVcbiA1OTA6XHRcbiA1OTE6XHRjb25maWcgTkZUX0NPTVBBVFxuIDU5MjpcdFx0ZGVwZW5kcyBvbiBORVRGSUxURVJfWFRBQkxFU1xuIDU5MzpcdFx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIHhfdGFibGVzIG92ZXIgbmZfdGFibGVzIG1vZHVsZVwmIzM0O1xuIDU5NDpcdFx0aGVscFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjA3NQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipDaGVja2luZyBEZXBlbmRlbmN5IExvZ2ljIGZvciBORlQgUmVqZWN0IEltcGxlbWVudGF0aW9uKioKCkFscmlnaHQsIGhhbmcgb24gYSBzZWNvbmQuIGBORlRfUkVKRUNUX0lORVRgLi4uIHRoYXQgcmVsaWVzIG9uIGBORl9UQUJMRVNfSU5FVGAsIGRvZXNuJiMzOTt0IGl0PyBJIG5lZWQgdG8gcXVpY2tseSByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGF0LiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBpbXBsZW1lbnRhdGlvbiwgc3BlY2lmaWNhbGx5IHRoZSBgbmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuY2Agc291cmNlIGZpbGUuIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gSSB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmN5IGZsb3csIGVzcGVjaWFsbHkgZ2l2ZW4gaG93IHRpZ2h0bHkga25pdCBOZXRmaWx0ZXImIzM5O3MgY29tcG9uZW50cyBjYW4gYmUuIEdvdHRhIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nIGNydWNpYWwgaW4gdGhlIGNvbmZpZ3VyYXRpb24gb3IgcG90ZW50aWFsIGlzc3VlcyBhcmlzaW5nIGZyb20gdGhhdCByZWxhdGlvbnNoaXAuIEdvdHRhIGdvIGJhY2sgYW5kIHZlcmlmeSBleGFjdGx5IHdoYXQmIzM5O3MgZ29pbmcgb24gaW4gdGhhdCBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl9zZW5kX3VucmVhY2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmM9MTc9c3RhdGljIHZvaWQgbmZ0X3JlamVjdF9pbmV0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmMtMjYtXHRcdGNhc2UgTkZUX1JFSkVDVF9JQ01QX1VOUkVBQ0g6XG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jOjI3Olx0XHRcdG5mX3NlbmRfdW5yZWFjaChwa3QtXHUwMDNlc2tiLCBwcml2LVx1MDAzZWljbXBfY29kZSxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmMtMjgtXHRcdFx0XHRcdG5mdF9ob29rKHBrdCkpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmMtMzQtXHRcdGNhc2UgTkZUX1JFSkVDVF9JQ01QWF9VTlJFQUNIOlxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYzozNTpcdFx0XHRuZl9zZW5kX3VucmVhY2gocGt0LVx1MDAzZXNrYixcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmMtMzYtXHRcdFx0XHRcdG5mdF9yZWplY3RfaWNtcF9jb2RlKHByaXYtXHUwMDNlaWNtcF9jb2RlKSxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jLTQzLVx0XHRjYXNlIE5GVF9SRUpFQ1RfSUNNUF9VTlJFQUNIOlxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYzo0NDpcdFx0XHRuZl9zZW5kX3VucmVhY2g2KG5mdF9uZXQocGt0KSwgcGt0LVx1MDAzZXNrYixcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmMtNDUtXHRcdFx0XHRcdCBwcml2LVx1MDAzZWljbXBfY29kZSwgbmZ0X2hvb2socGt0KSk7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy01MS1cdFx0Y2FzZSBORlRfUkVKRUNUX0lDTVBYX1VOUkVBQ0g6XG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jOjUyOlx0XHRcdG5mX3NlbmRfdW5yZWFjaDYobmZ0X25ldChwa3QpLCBwa3QtXHUwMDNlc2tiLFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy01My1cdFx0XHRcdFx0IG5mdF9yZWplY3RfaWNtcHY2X2NvZGUocHJpdi1cdTAwM2VpY21wX2NvZGUpLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjc1NwoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIENvbXBpbGF0aW9uIFBhdGggb2YgYG5mdF9yZWplY3RfaW5ldC5jYCoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBuZnRfcmVqZWN0X2luZXQuY2AgZmlsZSBhbmQgc29tZXRoaW5nJiMzOTtzIGJ1Z2dpbmcgbWUuIEl0JiMzOTtzIHVzaW5nIGBuZl9zZW5kX3VucmVhY2hgLCBhbmQgdGhhdCYjMzk7cyBhIGtleSBmdW5jdGlvbiBpbiBoYW5kbGluZyBuZXR3b3JrIHVucmVhY2hhYmlsaXR5LiBCdXQgaWYgSSByZWNhbGwgY29ycmVjdGx5LCBgTkZfUkVKRUNUX0lQVjRgIHVzdWFsbHkgbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgdGhhdCB0byB3b3JrIHByb3Blcmx5LiBTbywgaG93IGlzIHRoaXMgdGhpbmcgZXZlbiBjb21waWxpbmcgd2l0aG91dCB0aGF0IGZsYWcgc2VlbWluZ2x5IGFjdGl2ZT8KCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB0aGVyZSYjMzk7cyBnb3QgdG8gYmUgc29tZSBvdGhlciBtZWNoYW5pc20gYXQgcGxheS4gUGVyaGFwcyBgbmZfc2VuZF91bnJlYWNoYCBpcyBjYWxsZWQgdW5kZXIgYSBkaWZmZXJlbnQgbWFjcm8gY29uZGl0aW9uPyBPciBtYXliZSBpdCYjMzk7cyBpbmNsdWRlZCB3aXRoaW4gYSBkaWZmZXJlbnQgaGVhZGVyLCB0aGF0IHB1bGxzIGluIHRoZSBgbmZfcmVqZWN0YCBjb21wb25lbnRzIGluIGEgZGlmZmVyZW50IHdheT8gSSBuZWVkIHRvIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuIFRpbWUgdG8gZGVsdmUgaW50byBgaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL2lwdjQvbmZfcmVqZWN0LmhgIGFuZCBzZWUgd2hhdCYjMzk7cyByZWFsbHkgZ29pbmcgb24gdW5kZXIgdGhlIGhvb2Qgb2YgdGhvc2UgcmVqZWN0IGNvZGUgbWFjcm9zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGNvbXBpbGF0aW9uIHBhdGghCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvbmV0ZmlsdGVyL2lwdjQvbmZfcmVqZWN0LmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xuICAgMjpcdCNpZm5kZWYgX0lQVjRfTkZfUkVKRUNUX0hcbiAgIDM6XHQjZGVmaW5lIF9JUFY0X05GX1JFSkVDVF9IXG4gICA0Olx0XG4gICA1Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvc2tidWZmLmhcdTAwM2VcbiAgIDY6XHQjaW5jbHVkZSBcdTAwM2NuZXQvaXAuaFx1MDAzZVxuICAgNzpcdCNpbmNsdWRlIFx1MDAzY25ldC9pY21wLmhcdTAwM2VcbiAgIDg6XHQjaW5jbHVkZSBcdTAwM2NuZXQvbmV0ZmlsdGVyL25mX3JlamVjdC5oXHUwMDNlXG4gICA5Olx0XG4gIDEwOlx0dm9pZCBuZl9zZW5kX3VucmVhY2goc3RydWN0IHNrX2J1ZmYgKnNrYl9pbiwgaW50IGNvZGUsIGludCBob29rKTtcbiAgMTE6XHR2b2lkIG5mX3NlbmRfcmVzZXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqLCBzdHJ1Y3Qgc2tfYnVmZiAqb2xkc2tiLFxuICAxMjpcdFx0XHQgICBpbnQgaG9vayk7XG4gIDEzOlx0c3RydWN0IHNrX2J1ZmYgKm5mX3JlamVjdF9za2JfdjRfdW5yZWFjaChzdHJ1Y3QgbmV0ICpuZXQsXG4gIDE0Olx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqb2xkc2tiLFxuICAxNTpcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiAgMTY6XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBob29rLCB1OCBjb2RlKTtcbiAgMTc6XHRzdHJ1Y3Qgc2tfYnVmZiAqbmZfcmVqZWN0X3NrYl92NF90Y3BfcmVzZXQoc3RydWN0IG5ldCAqbmV0LFxuICAxODpcdFx0XHRcdFx0XHQgICBzdHJ1Y3Qgc2tfYnVmZiAqb2xkc2tiLFxuICAxOTpcdFx0XHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuICAyMDpcdFx0XHRcdFx0XHQgICBpbnQgaG9vayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNDQyCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyBLZXJuZWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gYG5mdF9yZWplY3RfaW5ldGAg4oCTIHRoYXQmIzM5O3MgdGhlIG1vZHVsZSBJJiMzOTttIGludGVyZXN0ZWQgaW4gcmlnaHQgbm93IOKAkyBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIHB1bGxpbmcgaW4gYE5GX1RBQkxFU19JTkVUYCBhcyBhIGRlcGVuZGVuY3kuIEhtbSwgdGhhdCYjMzk7cyBub3QgaW1tZWRpYXRlbHkgb2J2aW91cyB3aHksIGFuZCBJIHZhZ3VlbHkgcmVjYWxsIHRoYXQgYE5GX1RBQkxFU19JTkVUYCAqbWlnaHQqIGhhdmUgc29tZSBjb25uZWN0aW9uIHRvIHRoZSBvbGRlciBgTkZUX1JFSkVDVF9JUFY0YCBvcHRpb24sIHdoaWNoIEkmIzM5O20gbm90IHVzaW5nIGRpcmVjdGx5LiBHb3R0YSBiZSBjZXJ0YWluIEkmIzM5O20gbm90IHB1bGxpbmcgaW4gdW53YW50ZWQgc3R1ZmYuCgpMZXQmIzM5O3MgcXVpY2tseSB2ZXJpZnkgdGhhdCB0aGUgcmVsYXRpb25zaGlwIG1ha2VzIHNlbnNlIGFuZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgYE5GX1RBQkxFU19JTkVUYC4gVGhlIHF1aWNrZXN0IHdheSB0byBkbyB0aGlzIGlzIHRvIGp1bXAgcmlnaHQgaW50byB0aGUgc291cmNlIGNvZGUsIHNwZWNpZmljYWxseSBgbmV0L25ldGZpbHRlci9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSBhbGwgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIHRoZWlyIGRlcGVuZGVuY2llcyBhcmUgZGVmaW5lZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgTkZfVEFCTEVTX0lORVRgIGFjdHVhbGx5ICpkb2VzKiBpbiByZWxhdGlvbiB0byB0aGUgYnJvYWRlciBuZXRmaWx0ZXIgZnJhbWV3b3JrIGFuZCBzcGVjaWZpY2FsbHkgYG5mdF9yZWplY3RfaW5ldGAuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgd2hhdCB0aGUgS2NvbmZpZyBmaWxlcyByZXZlYWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORl9UQUJMRVNfSU5FVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9NDcxPWlmIE5GX1RBQkxFU1xubmV0L25ldGZpbHRlci9LY29uZmlnOjQ3Mjpjb25maWcgTkZfVEFCTEVTX0lORVRcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NzMtXHRkZXBlbmRzIG9uIElQVjZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM4NDIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgY29udGV4dCwgcHJlc2VudGVkIGFzIGEgcGVyc29uYWwgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGFscmVhZHkgd2VsbC12ZXJzZWQgaW4ga2VybmVsIGNvbmZpZ3VyYXRpb24gYW5kIG5ldGZpbHRlcjoKCioqQW5hbHl6aW5nIHRoZSBLY29uZmlnIGZvciBORl9UQUJMRVNfSU5FVCoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgZGl2aW5nIGludG8gYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AgYW5kIGhvbWluZyBpbiBvbiBgTkZfVEFCTEVTX0lORVRgLiBUaGlzIGlzIGtleS4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIE5ldGZpbHRlciBpbmZyYXN0cnVjdHVyZSwgc3BlY2lmaWNhbGx5IGFzIGl0IHJlbGF0ZXMgdG8gdGhlIEludGVybmV0IHByb3RvY29sIGZhbWlseS4gTXkgaW1tZWRpYXRlIGFzc3VtcHRpb24gaXMgd2UmIzM5O3JlIGxvb2tpbmcgYXQgdGhlIGNvcmUgZW5hYmxpbmcgb3B0aW9ucyBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5LiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGRlcGVuZGVuY2llcyB0aGVyZSBhcmUsIHdoYXQgdGhpcyBtb2R1bGUgaW1wYWN0cywgYW5kIGhvdyBpdCBpcyBtZWFudCB0byBiZSB1c2VkLCBpbiBzaG9ydCwgaG93IGRvIEkgY29uZmlndXJlIG15IGVudmlyb25tZW50IHRvIHV0aWxpemUgdGhpcyBmdW5jdGlvbmFsaXR5PyBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIHRoZSBzdGFuZGFyZCBgYm9vbGAsIGB0cmlzdGF0ZWAsIG9yIGBpbnRgIG9wdGlvbnMgaGVyZSwgY29udHJvbGxpbmcgd2hldGhlciBzdXBwb3J0IGlzIGJ1aWx0IGluLCBhcyBhIG1vZHVsZSwgb3IgZGlzYWJsZWQuIEkgbmVlZCB0byBwYXJzZSB0aGUgaGVscCB0ZXh0IHRob3JvdWdobHkgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIG9yIGRpc2FibGluZyB0aGlzLiBJIHdpbGwgbG9vayBmb3IgYW55IGNvbmRpdGlvbmFsIGxvZ2ljIHdpdGhpbiB0aGUgS2NvbmZpZywgdG8gc2VlIGlmIHRoZXJlIGFyZSBkZXBlbmRlbmNpZXMgb24gb3RoZXIgTmV0ZmlsdGVyIGNvbXBvbmVudHMuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGxvb2tpbmcgYXQgdGhlIGRlcGVuZGVuY2llcyB0aGF0IG1pZ2h0IGV4aXN0IGJldHdlZW4gYE5GX1RBQkxFU19JTkVUYCwgYE5GX1RBQkxFU19JUFY0YCwgYW5kIGBORl9UQUJMRVNfSVBWNmAuIElmIHRoZXJlIGFyZSBhbnksIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0NzA6XHRcbiA0NzE6XHRpZiBORl9UQUJMRVNcbiA0NzI6XHRjb25maWcgTkZfVEFCTEVTX0lORVRcbiA0NzM6XHRcdGRlcGVuZHMgb24gSVBWNlxuIDQ3NDpcdFx0c2VsZWN0IE5GX1RBQkxFU19JUFY0XG4gNDc1Olx0XHRzZWxlY3QgTkZfVEFCTEVTX0lQVjZcbiA0NzY6XHRcdGJvb2wgXCYjMzQ7TmV0ZmlsdGVyIG5mX3RhYmxlcyBtaXhlZCBJUHY0L0lQdjYgdGFibGVzIHN1cHBvcnRcJiMzNDtcbiA0Nzc6XHRcdGhlbHBcbiA0Nzg6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBzdXBwb3J0IGZvciBhIG1peGVkIElQdjQvSVB2NiBcJiMzNDtpbmV0XCYjMzQ7IHRhYmxlLlxuIDQ3OTpcdFxuIDQ4MDpcdGNvbmZpZyBORl9UQUJMRVNfTkVUREVWXG4gNDgxOlx0XHRib29sIFwmIzM0O05ldGZpbHRlciBuZl90YWJsZXMgbmV0ZGV2IHRhYmxlcyBzdXBwb3J0XCYjMzQ7XG4gNDgyOlx0XHRoZWxwXG4gNDgzOlx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgdGhlIFwmIzM0O25ldGRldlwmIzM0OyB0YWJsZS5cbiA0ODQ6XHRcbiA0ODU6XHRjb25maWcgTkZUX05VTUdFTlxuIDQ4NjpcdFx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIG5mX3RhYmxlcyBudW1iZXIgZ2VuZXJhdG9yIG1vZHVsZVwmIzM0O1xuIDQ4NzpcdFx0aGVscFxuIDQ4ODpcdFx0ICBUaGlzIG9wdGlvbiBhZGRzIHRoZSBudW1iZXIgZ2VuZXJhdG9yIGV4cHJlc3Npb24gdXNlZCB0byBwZXJmb3JtXG4gNDg5Olx0XHQgIGluY3JlbWVudGFsIGNvdW50aW5nIGFuZCByYW5kb20gbnVtYmVycyBib3VuZCB0byBhIHVwcGVyIGxpbWl0LlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDQ4OAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkRpZ2dpbmcgaW50byB0aGUgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIHNvIGBORl9UQUJMRVNfSU5FVGAgaXMgY2hvc2VuLCBhbmQgSSBrbm93IHRoYXQgdXN1YWxseSBtZWFucyBpdCYjMzk7cyBwdWxsaW5nIGluIHRoZSBJUHY0IGNvbXBvbmVudCDigJMgbG9va2luZyBhdCB0aGUgZGVwZW5kZW5jeS4gTGV0IG1lIHF1aWNrbHkgY29uZmlybSB0aGF0IGJ5IGNoZWNraW5nIHRoZSBLY29uZmlnIGZpbGUgZm9yIGBORl9UQUJMRVNfSVBWNGAuIEkmIzM5O2xsIGdvIHN0cmFpZ2h0IHRvIGBuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZ2AgdG8gc2VlIGlmIG15IGh1bmNoIGlzIGNvcnJlY3QuIEdvdHRhIG1ha2Ugc3VyZSB0aG9zZSBkZXBlbmRlbmNpZXMgYXJlIGFsbCB3aXJlZCB1cCB0aGUgd2F5IEkgZXhwZWN0IHRoZW0gdG8gYmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORl9UQUJMRVNfSVBWNCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnPTMzPWlmIE5GX1RBQkxFU1xubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctMzQtXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZzozNTpjb25maWcgTkZfVEFCTEVTX0lQVjRcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTM2LVx0Ym9vbCBcJiMzNDtJUHY0IG5mX3RhYmxlcyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0Nzk1CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqRGl2aW5nIGludG8gdGhlIElQdjQgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgdGltZSB0byBnZXQgaW50byB0aGUgbml0dHktZ3JpdHR5IG9mIHRoZSBOZXRmaWx0ZXIgY29uZmlndXJhdGlvbiBmb3IgSVB2NC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGBORl9UQUJMRVNfSVBWNGAgaXMgc2V0IHVwLiBMZXQmIzM5O3Mgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIGBuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZ2AuIFRoaXMgaXMgdGhlIGZpbGUgdGhhdCBkZWZpbmVzIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHNvIGl0JiMzOTtzIHRoZSByaWdodCBwbGFjZSB0byBnZXQgYSBmb3VuZGF0aW9uYWwgdW5kZXJzdGFuZGluZy4gSSYjMzk7bSBnb2luZyB0byBzY2FuIHRoYXQgZmlsZSB0byBzZWUgaG93IGBORl9UQUJMRVNfSVBWNGAgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUgb2YgTmV0ZmlsdGVyIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIGtlcm5lbCYjMzk7cyBuZXR3b3JraW5nIHN0YWNrLCBwYXJ0aWN1bGFybHkgYXJvdW5kIHRoZSBJUHY0IHByb3RvY29sLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIGl0cyBkZXBlbmRlbmNpZXMgYW5kIHdoYXQgY29uZGl0aW9ucyB0cmlnZ2VyIGl0cyBpbmNsdXNpb24uIFRoaXMgc2hvdWxkIGFsbG93IG1lIHRvIGZvcm11bGF0ZSBhIHBsYW4gdG8gdW5kZXJzdGFuZCBpdHMgZnVuY3Rpb25hbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMzLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMzM6XHRpZiBORl9UQUJMRVNcbiAgMzQ6XHRcbiAgMzU6XHRjb25maWcgTkZfVEFCTEVTX0lQVjRcbiAgMzY6XHRcdGJvb2wgXCYjMzQ7SVB2NCBuZl90YWJsZXMgc3VwcG9ydFwmIzM0O1xuICAzNzpcdFx0aGVscFxuICAzODpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBJUHY0IHN1cHBvcnQgZm9yIG5mX3RhYmxlcy5cbiAgMzk6XHRcbiAgNDA6XHRpZiBORl9UQUJMRVNfSVBWNFxuICA0MTpcdFxuICA0MjpcdGNvbmZpZyBORlRfUkVKRUNUX0lQVjRcbiAgNDM6XHRcdHNlbGVjdCBORl9SRUpFQ1RfSVBWNFxuICA0NDpcdFx0ZGVmYXVsdCBORlRfUkVKRUNUXG4gIDQ1Olx0XHR0cmlzdGF0ZVxuICA0NjpcdFxuICA0NzpcdGNvbmZpZyBORlRfRFVQX0lQVjRcbiAgNDg6XHRcdHRyaXN0YXRlIFwmIzM0O0lQdjQgbmZfdGFibGVzIHBhY2tldCBkdXBsaWNhdGlvbiBzdXBwb3J0XCYjMzQ7XG4gIDQ5Olx0XHRkZXBlbmRzIG9uICFORl9DT05OVFJBQ0sgfHwgTkZfQ09OTlRSQUNLXG4gIDUwOlx0XHRzZWxlY3QgTkZfRFVQX0lQVjRcbiAgNTE6XHRcdGhlbHBcbiAgNTI6XHRcdCAgVGhpcyBtb2R1bGUgZW5hYmxlcyBJUHY0IHBhY2tldCBkdXBsaWNhdGlvbiBzdXBwb3J0IGZvciBuZl90YWJsZXMuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1MzA1CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk5hdmlnYXRpbmcgdGhlIE5ldGZpbHRlciBDb25maWd1cmF0aW9uIExhYnlyaW50aCoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGVzZSBOZXRmaWx0ZXIgY29uZmlndXJhdGlvbnMuIEl0IHNlZW1zIGxpa2UgaWYgYE5GX1RBQkxFU19JUFY0YCBpcyBvbiwgdGhlIGRlZmF1bHQgZm9yIGBORlRfUkVKRUNUX0lQVjRgIGlzIGdvaW5nIHRvIGJlIGBORlRfUkVKRUNUYC4gVGhhdCBtYWtlcyBzZW5zZS4gQW5kIGlmIGBORlRfUkVKRUNUX0lQVjRgIGlzIHNlbGVjdGVkLCB0aGVuIGBORl9SRUpFQ1RfSVBWNGAgZ2V0cyBjaG9zZW4uIEkmIzM5O20gdHJ5aW5nIHRvIGdldCBgTkZfUkVKRUNUX0lQVjRgIGVuYWJsZWQuIE15IGZpcnN0IHRob3VnaHQgd2FzIHRvIGp1c3QgZW5hYmxlIGBORlRfUkVKRUNUX0lQVjRgLCBvciBldmVuIGBJUF9ORl9UQVJHRVRfUkVKRUNUYCBiZWNhdXNlIHRoYXQgc291bmRzIHJlbGV2YW50LgoKQnV0IGhhbmcgb24uLi4gZW5hYmxpbmcgYE5GX1JFSkVDVF9JUFY0YCBkaXJlY3RseSBtaWdodCBiZSBhIGNsZWFuZXIgYXBwcm9hY2gsIHJpZ2h0PyBPaCwgYnV0IHdhaXQuLi4gSSB3YXMgdGhpbmtpbmcgaXQgd2FzIGEgdHJpc3RhdGUgd2l0aG91dCBhIHByb21wdC4gSSBuZWVkIGEgcHJvbXB0ISBMZXQgbWUgZG91YmxlIGNoZWNrLi4uIFllcyEgVGhlIGBjb25maWcgTkZfUkVKRUNUX0lQVjRgICpkb2VzKiBoYXZlIGEgYHRyaXN0YXRlICYjMzQ7SVB2NCBwYWNrZXQgcmVqZWN0aW9uJiMzNDtgIG9wdGlvbi4gRXhjZWxsZW50LiBTbyBpdCYjMzk7cyBwcm9tcHRpbmchIE9rYXksIGxldCBtZSBnbyBiYWNrIGFuZCByZS1leGFtaW5lIHRoZSBgbmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWdgIGZpbGUgYWdhaW4gdG8gY29uZmlybSB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDk1Olx0Y29uZmlnIE5GX1JFSkVDVF9JUFY0XG4gIDk2Olx0XHR0cmlzdGF0ZSBcJiMzNDtJUHY0IHBhY2tldCByZWplY3Rpb25cJiMzNDtcbiAgOTc6XHRcdGRlZmF1bHQgbSBpZiBORVRGSUxURVJfQURWQU5DRUQ9blxuICA5ODpcdFxuICA5OTpcdGlmIE5GX05BVFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTg0NAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDI5OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5ldHdvcmsgRmlsdGVyIFJlamVjdCBQYXRjaCoqCgpPa2F5LCBzbyB0aGUgYE5GX1JFSkVDVF9JUFY0YCBvcHRpb24gaGFzIGEgcHJvbXB0LCB3aGljaCBtZWFucyB3ZSBjYW4ganVzdCBlbmFibGUgdGhhdC4gQnV0IGhhbmcgb24sIGxldCBtZSBjaGVjayB3aGVyZSBgbmZfc2VuZF91bnJlYWNoYCBsaXZlcywgdGhhdCYjMzk7cyBpbiBgbmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmNgLiAgVGhlIHBhdGNoIGlzIG1vZGlmeWluZyBgbmZfc2VuZF91bnJlYWNoYCwgYW5kIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoYXQgY29kZSBwYXRoIGlzIGFjdHVhbGx5IHJlYWNoYWJsZS4KCkFscmlnaHQsIGBuZl9zZW5kX3VucmVhY2hgICppcyogcmVhY2hhYmxlIOKAkyB0aHJvdWdoIGBpcHRfUkVKRUNUYCwgYG5mdF9yZWplY3RfaXB2NGAsIGFuZCBgbmZ0X3JlamVjdF9pbmV0YC4gVGhlIHBhdGNoIGludHJvZHVjZXMgYSBjaGVjayBmb3IgYGhvb2sgPT0gTkZfSU5FVF9JTkdSRVNTYC4gSSBuZWVkIHRvIGNvbmZpcm0gaWYgYE5GX0lORVRfSU5HUkVTU2AgaXMgYWN0dWFsbHkgdXNlZCBpbiBgbmZfc2VuZF91bnJlYWNoYC4KCkxldCYjMzk7cyBzZWUuIGBuZl9zZW5kX3VucmVhY2hgIGlzIGNhbGxlZCBmcm9tIGByZWplY3RfdGdgIChpcHRhYmxlcyksIGBuZnRfcmVqZWN0X2lwdjRfZXZhbGAgKG5mdGFibGVzKSwgYW5kIGBuZnRfcmVqZWN0X2luZXRfZXZhbGAgKGFsc28gbmZ0YWJsZXMpLiBJbiBgbmZ0X3JlamVjdF9pcHY0X2V2YWxgLCBgbmZ0X2hvb2socGt0KWAgaXMgcGFzc2VkIGFzIHRoZSBgaG9va2AgYXJndW1lbnQuIEJpbmdvISBgbmZ0X2hvb2socGt0KWAgKmNhbiogYmUgYE5GX0lORVRfSU5HUkVTU2AgaWYgdGhlIHJ1bGUgaXMgYXR0YWNoZWQgdG8gdGhlIGluZ3Jlc3MgaG9vay4gU28gdGhlIGNvZGUgaXMgcmVhY2hhYmxlLCBubyBwcm9ibGVtIHRoZXJlLgoKTm93IEkga25vdyB3aGF0IHRvIGZvY3VzIG9uOiBgbmZfc2VuZF91bnJlYWNoYCBpcyB0aGUgbW9kaWZpZWQgZnVuY3Rpb24uIFRoZSBwYXRjaCYjMzk7cyBpbXBhY3QgaXMgY2VudGVyZWQgdGhlcmUuIEkgZG9uJiMzOTt0IHNlZSBhbnkgb3RoZXIgZnVuY3Rpb25zIGJlaW5nIHRvdWNoZWQgYnkgdGhlIHBhdGNoLCBzbyB0aGUgYW5hbHlzaXMgaXMgc3RyYWlnaHQgZm9yd2FyZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfc2VuZF91bnJlYWNoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmM9MzQ0PUVYUE9SVF9TWU1CT0xfR1BMKG5mX3NlbmRfcmVzZXQpO1xubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMtMzQ1LVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmM6MzQ2OnZvaWQgbmZfc2VuZF91bnJlYWNoKHN0cnVjdCBza19idWZmICpza2JfaW4sIGludCBjb2RlLCBpbnQgaG9vaylcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jLTM0Ny17XG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMtMzcyLX1cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jOjM3MzpFWFBPUlRfU1lNQk9MX0dQTChuZl9zZW5kX3VucmVhY2gpO1xubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMtMzc0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjc2MgoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkV2YWx1YXRpbmcgSVB2NCBhbmQgSW5ldCBSZWplY3Rpb24gaW4gbmZ0YWJsZXMqKgoKT2theSwgdGltZSB0byBkaXZlIGludG8gdGhpcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gYG5mdF9yZWplY3RfaXB2NF9ldmFsYCBhbmQgYG5mdF9yZWplY3RfaW5ldF9ldmFsYC4gVGhleSYjMzk7cmUgdGhlIGNyaXRpY2FsIGZ1bmN0aW9ucyBoZXJlLCByaWdodD8gV2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBwYWNrZXQgcmVqZWN0aW9uLCBhbmQgdGhlc2UgZnVuY3Rpb25zIGFyZSBsaWtlbHkgYXQgdGhlIGhlYXJ0IG9mIHRoZSBsb2dpYy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhleSYjMzk7cmUgaGFuZGxpbmcgSVB2NCBhbmQgZ2VuZXJhbCBpbmV0ICh3aGljaCBvZnRlbiBpbmNsdWRlcyBJUHY0IGFuZCBJUHY2LCByaWdodD8pIHRyYWZmaWMuIEkgd2FudCB0byBzZWUgdGhlIG5pdHR5LWdyaXR0eSBvZiB0aGVpciBldmFsdWF0aW9uIHByb2Nlc3Nlcy4gV2hhdCBhcmUgdGhlIHNwZWNpZmljIGNyaXRlcmlhPyBXaGF0JiMzOTtzIHRoZSBzaG9ydC1jaXJjdWl0aW5nIGxvZ2ljPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBvciBzdWJ0bGUgZGlmZmVyZW5jZXMgaW4gdGhlIHdheSB0aGV5IGhhbmRsZSBlZGdlIGNhc2VzPyBJJiMzOTttIGFudGljaXBhdGluZyB0aGF0IGV4YW1pbmluZyB0aGVzZSB0d28gZnVuY3Rpb25zIHdpbGwgZ2l2ZSBtZSBhIHNvbGlkIGZvdW5kYXRpb24gZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGJyb2FkZXIgcmVqZWN0aW9uIHN0cmF0ZWd5IGluIHRoZSBuZnRhYmxlcyBjb250ZXh0LiBJdOKAmXMgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gYmVnaW4gbXkgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZ0X3JlamVjdF9pcHY0X2V2YWwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pcHY0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaXB2NC5jLTE4LVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaXB2NC5jOjE5OnN0YXRpYyB2b2lkIG5mdF9yZWplY3RfaXB2NF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcbm5ldC9pcHY0L25ldGZpbHRlci9uZnRfcmVqZWN0X2lwdjQuYy0yMC1cdFx0XHRcdCBzdHJ1Y3QgbmZ0X3JlZ3MgKnJlZ3MsXG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaXB2NC5jPTQxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZ0X2V4cHJfb3BzIG5mdF9yZWplY3RfaXB2NF9vcHMgPSB7XG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaXB2NC5jLTQzLVx0LnNpemVcdFx0PSBORlRfRVhQUl9TSVpFKHNpemVvZihzdHJ1Y3QgbmZ0X3JlamVjdCkpLFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaXB2NC5jOjQ0Olx0LmV2YWxcdFx0PSBuZnRfcmVqZWN0X2lwdjRfZXZhbCxcbm5ldC9pcHY0L25ldGZpbHRlci9uZnRfcmVqZWN0X2lwdjQuYy00NS1cdC5pbml0XHRcdD0gbmZ0X3JlamVjdF9pbml0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzI4NwoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBjb2RlLCBmcmFtZWQgYXMgbXkgb3duIHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIFBhY2tldCBSZWplY3Rpb24gTG9naWMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGFja2V0IHJlamVjdGlvbiBjb2RlLiBJIHNlZSB0aGF0IGBuZnRfcmVqZWN0X2lwdjRfZXZhbGAsIGBuZnRfcmVqZWN0X2luZXRfZXZhbGAsIGFuZCBgcmVqZWN0X3RnYCBhcmUgYWxsIHN0YXRpYyBmdW5jdGlvbnMuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhleSYjMzk7cmUgbGlrZWx5IGhlbHBlciBmdW5jdGlvbnMgb3IgaW50ZXJuYWwgaW1wbGVtZW50YXRpb25zLCBub3QgdGhlIHByaW1hcnkgZW50cnkgcG9pbnRzLiBTbywgdGhlIGtleSBmdW5jdGlvbiBoZXJlLCB0aGUgb25lIGRyaXZpbmcgdGhlIGNvcmUgbG9naWMsIHNlZW1zIHRvIGJlIGBuZl9zZW5kX3VucmVhY2hgLgoKTm93LCBiZWZvcmUgSSBkaWcgaW50byBgbmZfc2VuZF91bnJlYWNoYCwgSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIHN0YXRlIG9mIHRoZSBwYWNrZXQgaW1tZWRpYXRlbHkgcHJpb3IgdG8gdGhlIHBhdGNoLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBmdW5jdGlvbiB0aGF0IGNvbWVzIGp1c3QgYmVmb3JlIGl0IHRvIGdldCBteSBiZWFyaW5ncy4gTGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IGBuZl9yZWplY3RfZmlsbF9za2JfZHN0YCBhbmQgc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHRoZXJlLiBUaGF0IHNob3VsZCBzZXQgdGhlIHN0YWdlIG5pY2VseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfcmVqZWN0X2ZpbGxfc2tiX2RzdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jPTIyNj1zdGF0aWMgdm9pZCBuZl9yZWplY3RfaXBfdGNwaGRyX3B1dChzdHJ1Y3Qgc2tfYnVmZiAqbnNrYiwgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKm9sZHNrYixcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYy0yNTQtXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYzoyNTU6c3RhdGljIGludCBuZl9yZWplY3RfZmlsbF9za2JfZHN0KHN0cnVjdCBza19idWZmICpza2JfaW4pXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYy0yNTYte1xuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jPTI3MT12b2lkIG5mX3NlbmRfcmVzZXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpvbGRza2IsXG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMtMjgxLVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmM6MjgyOlx0aWYgKCFza2JfZHN0KG9sZHNrYikgXHUwMDI2XHUwMDI2IG5mX3JlamVjdF9maWxsX3NrYl9kc3Qob2xkc2tiKSBcdTAwM2MgMClcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jLTI4My1cdFx0cmV0dXJuO1xuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jPTM0Nj12b2lkIG5mX3NlbmRfdW5yZWFjaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luLCBpbnQgY29kZSwgaW50IGhvb2spXG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMtMzU0LVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmM6MzU1Olx0aWYgKCFza2JfZHN0KHNrYl9pbikgXHUwMDI2XHUwMDI2IG5mX3JlamVjdF9maWxsX3NrYl9kc3Qoc2tiX2luKSBcdTAwM2MgMClcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jLTM1Ni1cdFx0cmV0dXJuO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODA3NQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5ldGZpbHRlciBSZWplY3Rpb24gTG9naWMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgTmV0ZmlsdGVyIGNvZGUsIHNwZWNpZmljYWxseSB0aGUgcmVqZWN0aW9uIGxvZ2ljLiBgbmZfcmVqZWN0X2ZpbGxfc2tiX2RzdGAgaXMgc3RhdGljLCB3aGljaCBpc24mIzM5O3QgZ29pbmcgdG8gYmUgaGVscGZ1bCBmb3IgbXkgYW5hbHlzaXMuIFRoYXQgbWVhbnMgYG5mX3NlbmRfdW5yZWFjaGAgaXMgdGhlIG1vcmUgcmVsZXZhbnQgZnVuY3Rpb24gdG8gZm9jdXMgb24uIEhtbSwgd2hhdCBhYm91dCBgbmZfc2VuZF9yZXNldGAgdGhvdWdoPyBUaGUgcGF0Y2ggZG9lc24mIzM5O3QgdG91Y2ggaXQsIGJ1dCBpdCBsaXZlcyBpbiB0aGUgc2FtZSBmaWxlLiBJIHNob3VsZCBrZWVwIGl0IGluIG1pbmQgYXMgYSBwb3RlbnRpYWwgcG9pbnQgb2YgY29ubmVjdGlvbiwgZXZlbiBpZiBpdCYjMzk7cyBub3QgZGlyZWN0bHkgbW9kaWZpZWQgaGVyZS4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBvZiB0aGlzIGNvZGUgdG8gdGhlIGJyb2FkZXIgTmV0ZmlsdGVyIGVjb3N5c3RlbS4gSXMgYE5GX1JFSkVDVF9JUFY0YCBzdWZmaWNpZW50IHRvIGNvdmVyIHdoYXQgdGhpcyBwYXRjaCBhZGRyZXNzZXM/IFllcywgYE5GX1JFSkVDVF9JUFY0YCBjb21waWxlcyBgbmZfcmVqZWN0X2lwdjQuY2AsIHNvIHRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUbyB0cmlnZ2VyIGl0IHZpYSBuZnRhYmxlcywgSSBuZWVkIHRvIGxvb2sgYXQgd2hldGhlciBgTkZUX1JFSkVDVF9JUFY0YCwgYE5GVF9SRUpFQ1RfSU5FVGAsIG9yIGBORlRfUkVKRUNUX05FVERFVmAgYXJlIGludm9sdmVkLiBXYWl0IGEgbWludXRlLCB0aGUgcGF0Y2ggc3BlY2lmaWNhbGx5IHRhcmdldHMgdGhlIGBob29rID09IE5GX0lORVRfSU5HUkVTU2AuIFJpZ2h0LCBgTkZfSU5FVF9JTkdSRVNTYCBpcyB1c2VkIHdpdGhpbiB0aGUgbmV0ZGV2IGZhbWlseSBpbiBuZnRhYmxlcy4gT2theSwgc28gdGhhdCBtZWFucyBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIGlmIGBORlRfUkVKRUNUX05FVERFVmAgaXMgcHJlc2VudCBhbmQgcmVsZXZhbnQuIFRoYXQgc2VlbXMgdGhlIGtleSBsaW5rIHRvIHB1cnN1ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkZUX1JFSkVDVF9ORVRERVYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTY4MD1jb25maWcgTkZUX0ZJQl9ORVRERVZcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNjg4LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjY4OTpjb25maWcgTkZUX1JFSkVDVF9ORVRERVZcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy02OTAtXHRkZXBlbmRzIG9uIE5GVF9SRUpFQ1RfSVBWNFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODcxOAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCB0ZXh0LCByZW5kZXJlZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyBJJiMzOTttIGFuIGV4cGVydCBpbiB0aGlzIGZpZWxkOgoKKipEaXZpbmcgaW50byBuZXRmaWx0ZXImIzM5O3MgS2NvbmZpZzogRm9jdXNpbmcgb24gTkZUX1JFSkVDVF9ORVRERVYqKgoKT2theSwgbGV0JiMzOTtzIHB1bGwgdXAgYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AuIFdlJiMzOTtyZSBnb2luZyB0byB6ZXJvIGluIG9uIHRoZSBgTkZUX1JFSkVDVF9ORVRERVZgIG9wdGlvbi4gSSB3YW50IHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhpcyBmZWF0dXJlIGlzIGNvbmZpZ3VyZWQgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIGl0IGhhcy4gVGhpcyBwcm9iYWJseSB0aWVzIGludG8gaG93IHdlIGhhbmRsZSByZWplY3RlZCBwYWNrZXRzIHdpdGhpbiB0aGUgbmV0ZGV2IGNvbnRleHQgdXNpbmcgbmZ0YWJsZXMuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyBpdCBpbnRlcmZhY2VzIHdpdGggdGhlIG90aGVyIHJlamVjdCBtZWNoYW5pc21zLiBJcyB0aGlzIGEgcmVwbGFjZW1lbnQsIGFuIGVuaGFuY2VtZW50LCBvciBhIGNvbXBsZXRlbHkgb3J0aG9nb25hbCBmZWF0dXJlPyBXaGF0IG90aGVyIG9wdGlvbnMgbmVlZCB0byBiZSBlbmFibGVkIGZvciBgTkZUX1JFSkVDVF9ORVRERVZgIHRvIGZ1bmN0aW9uIGNvcnJlY3RseT8gQXJlIHRoZXJlIGFueSBzcGVjaWZpYyBrZXJuZWwgdmVyc2lvbnMgd2hlcmUgdGhpcyBmdW5jdGlvbmFsaXR5IHdhcyBpbnRyb2R1Y2VkIG9yIHN1YnN0YW50aWFsbHkgY2hhbmdlZD8gQXJlIHRoZXJlIGFueSB1bnVzdWFsIGNvbmZpZ3VyYXRpb24gZ290Y2hhcyBJIHNob3VsZCBiZSBhd2FyZSBvZiwgbGlrZSBkZXBlbmRlbmNpZXMgb24gc3BlY2lmaWMgaGFyZHdhcmUgb3Igb3RoZXIga2VybmVsIG1vZHVsZXM/IExvb2tpbmcgYXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgd2lsbCB0ZWxsIHRoZSBzdG9yeS4gTGV0JiMzOTtzIHNlZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDY4NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNjg1Olx0XHQgIFRoaXMgb3B0aW9uIGFsbG93cyB1c2luZyB0aGUgRklCIGV4cHJlc3Npb24gZnJvbSB0aGUgbmV0ZGV2IHRhYmxlLlxuIDY4NjpcdFx0ICBUaGUgbG9va3VwIHdpbGwgYmUgZGVsZWdhdGVkIHRvIHRoZSBJUHY0IG9yIElQdjYgRklCIGRlcGVuZGluZ1xuIDY4NzpcdFx0ICBvbiB0aGUgcHJvdG9jb2wgb2YgdGhlIHBhY2tldC5cbiA2ODg6XHRcbiA2ODk6XHRjb25maWcgTkZUX1JFSkVDVF9ORVRERVZcbiA2OTA6XHRcdGRlcGVuZHMgb24gTkZUX1JFSkVDVF9JUFY0XG4gNjkxOlx0XHRkZXBlbmRzIG9uIE5GVF9SRUpFQ1RfSVBWNlxuIDY5MjpcdFx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIG5mX3RhYmxlcyBuZXRkZXYgUkVKRUNUIHN1cHBvcnRcJiMzNDtcbiA2OTM6XHRcdGhlbHBcbiA2OTQ6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgUkVKRUNUIHN1cHBvcnQgZnJvbSB0aGUgbmV0ZGV2IHRhYmxlLlxuIDY5NTpcdFx0ICBUaGUgcmV0dXJuIHBhY2tldCBnZW5lcmF0aW9uIHdpbGwgYmUgZGVsZWdhdGVkIHRvIHRoZSBJUHY0XG4gNjk2Olx0XHQgIG9yIElQdjYgSUNNUCBvciBUQ1AgUlNUIGltcGxlbWVudGF0aW9uIGRlcGVuZGluZyBvbiB0aGVcbiA2OTc6XHRcdCAgcHJvdG9jb2wgb2YgdGhlIHBhY2tldC5cbiA2OTg6XHRcbiA2OTk6XHRlbmRpZiAjIE5GX1RBQkxFU19ORVRERVZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkyNTAKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLZXJuZWwgQ29uZmlndXJhdGlvbiBDb251bmRydW0qKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGtlcm5lbCBjb25maWd1cmF0aW9uIGFuZCBJIHNlZSB0aGF0IGBORlRfUkVKRUNUX05FVERFVmAgaXMgcmVsaWFudCBvbiBib3RoIGBORlRfUkVKRUNUX0lQVjRgIGFuZCBgTkZUX1JFSkVDVF9JUFY2YC4gTWFrZXMgcGVyZmVjdCBzZW5zZS4gQW5kLCBhcyBpZiB0aGF0IHdlcmVuJiMzOTt0IGVub3VnaCwgaXQmIzM5O3MgYWxzbyBuZXN0ZWQgd2l0aGluIGFuIGBpZiBORl9UQUJMRVNfTkVUREVWYCBjb25kaXRpb24uIE9rYXksIHNvIHRvIGdldCB0aGlzIGZ1bmN0aW9uYWxpdHkgZW5hYmxlZCwgaXQmIzM5O3MgY2xlYXI6IEkgbmVlZCB0byBleHBsaWNpdGx5IGVuYWJsZSBib3RoIGBORl9UQUJMRVNfTkVUREVWYCAqYW5kKiBgTkZUX1JFSkVDVF9ORVRERVZgLiBTZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBOb3csIGJlZm9yZSBJIGNvbW1pdCB0byB0aGF0LCBJJiMzOTtkIGJldHRlciBkb3VibGUtY2hlY2sgYE5GX1RBQkxFU19ORVRERVZgIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb3RoZXIgaW1wbGljYXRpb25zIEkmIzM5O20gbWlzc2luZy4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGF0JiMzOTtzIGV4YWN0bHkgd2hhdCBJIGV4cGVjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX1RBQkxFU19ORVRERVYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTQ3Mj1jb25maWcgTkZfVEFCTEVTX0lORVRcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDc5LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ4MDpjb25maWcgTkZfVEFCTEVTX05FVERFVlxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ4MS1cdGJvb2wgXCYjMzQ7TmV0ZmlsdGVyIG5mX3RhYmxlcyBuZXRkZXYgdGFibGVzIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk2NDkKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIGluc3RydWN0aW9ucywgdGhpbmtpbmcgdGhyb3VnaCB0aGVtIGFzIEkgd291bGQgYXBwcm9hY2ggYSBzaW1pbGFyIHRhc2s6CgoqKkVuYWJsaW5nIE5ldGRldiBGZWF0dXJlcyBmb3IgbmZ0YWJsZXMqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIHRvIGVuYWJsZSBzb21lIG5ldGRldi1zcGVjaWZpYyBmZWF0dXJlcyBmb3IgbmZ0YWJsZXMsIHNwZWNpZmljYWxseSBgTkZfVEFCTEVTX05FVERFVmAgYW5kIGBORlRfUkVKRUNUX05FVERFVmAuIFRoYXQgc291bmRzIGxpa2UgYSBnb29kIGRpcmVjdGlvbiwgcGFydGljdWxhcmx5IGlmIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdHJhZmZpYyBmaWx0ZXJpbmcgYXQgdGhlIG5ldHdvcmsgZGV2aWNlIGxldmVsLiBXZSB3YW50IHRoYXQgZmluZS1ncmFpbmVkIGNvbnRyb2wgZm9yIG1vcmUgcGVyZm9ybWFudCBwYWNrZXQgcHJvY2Vzc2luZy4gTm93LCBiZWZvcmUgd2UgZmxpcCB0aGUgc3dpdGNoIG9uIGBORlRfUkVKRUNUX05FVERFVmAsIHRob3VnaCwgaXQmIzM5O3MgYWx3YXlzIHdpc2UgdG8gY2hlY2sgZm9yIGFueSBkZXBlbmRlbmNpZXMsIGVzcGVjaWFsbHkgd2l0aCBuZnRhYmxlcy4gSXQmIzM5O3Mgc21hcnQgdG8gZG91YmxlIGNoZWNrLCBzbyBsZXQmIzM5O3MgdGFrZSBhIHF1aWNrIGxvb2sgYXQgdGhlIGRlcGVuZGVuY2llcyBmb3IgYE5GVF9SRUpFQ1RfSVBWNGAgc2luY2UgYE5GVF9SRUpFQ1RfTkVUREVWYCB3aWxsIHByb2JhYmx5IHRvdWNoIGlwdjQgYXMgd2VsbC4gTWFraW5nIHN1cmUgd2UgZG9uJiMzOTt0IGludHJvZHVjZSBhbnkgdW5leHBlY3RlZCBjb25mbGljdHMgb3IgYnJlYWsgZXhpc3RpbmcgY29uZmlndXJhdGlvbnMgaXMga2V5IHRvIGEgc3RhYmxlIGRlcGxveW1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORlRfUkVKRUNUX0lQVjQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZz00MD1pZiBORl9UQUJMRVNfSVBWNFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctNDEtXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZzo0Mjpjb25maWcgTkZUX1JFSkVDVF9JUFY0XG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy00My1cdHNlbGVjdCBORl9SRUpFQ1RfSVBWNFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDAzNgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipEZXBlbmRlbmN5IERlZXAgRGl2ZTogSVB2NCBhbmQgSVB2NiBpbiB0aGUgRmlyZXdhbGwgQ29udGV4dCoqCgpSaWdodCwgbGV0JiMzOTtzIHN0YXJ0IHdpdGggdGhpcyBmaXJld2FsbCBjb25maWd1cmF0aW9uLCBJJiMzOTttIHRoaW5raW5nLCBJIGtub3cgYE5GX1RBQkxFU19JUFY0YCBpcyBlc3NlbnRpYWwsIGFuZCBubyBzdXJwcmlzZXMgdGhlcmUsIHRoYXQmIzM5O3MgZXhwZWN0ZWQuIE15IG5leHQgdGhvdWdodCBpcyB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBmdWxsIHBpY3R1cmUsIHNvIEkmIzM5O20gc2hpZnRpbmcgbXkgZm9jdXMgbm93IGFuZCBpbW1lZGlhdGVseSBkaWdnaW5nIGludG8gdGhlIGRlcGVuZGVuY2llcyBvZiBgTkZfVEFCTEVTX0lQVjZgLiBJIG5lZWQgdG8gZW5zdXJlIGEgY29tcGxldGUgYW5kIGNvbXBhdGlibGUgc2V0dXAuIEkgaGF2ZSB0byB0aGluayBhYm91dCBwb3RlbnRpYWwgaW50ZXJkZXBlbmRlbmNpZXMsIG9mIGNvdXJzZS4gSSB3YW50IHRvIGF2b2lkIGFueSBjb25maWd1cmF0aW9uIHN1cnByaXNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX1RBQkxFU19JUFY2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc9Mjk9aWYgTkZfVEFCTEVTXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy0zMC1cbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnOjMxOmNvbmZpZyBORl9UQUJMRVNfSVBWNlxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMzItXHRib29sIFwmIzM0O0lQdjYgbmZfdGFibGVzIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAzNDMKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqTXkgSW1tZWRpYXRlIEFzc2Vzc21lbnQqKgoKQWxyaWdodCwgc28gdGhlIHBocmFzZSAmIzM0O05GVF9SRUpFQ1RfSVBWNiYjMzQ7IGp1c3QgcG9wcGVkIGludG8gbXkgaGVhZC4gTXkgaW5pdGlhbCByZWFjdGlvbiBpcywgdGhpcyBpcyBsaWtlbHkgcmVsYXRlZCB0byBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gYW5kIHNwZWNpZmljYWxseSwgaG93IGEgc3lzdGVtIG9yIGFwcGxpY2F0aW9uIGlzIGhhbmRsaW5nIElQdjYgdHJhZmZpYyBpbiB0aGUgY29udGV4dCBvZiBOb24tRnVuZ2libGUgVG9rZW5zIChORlRzKS4gR2l2ZW4gdGhlIHNwZWNpZmljaXR5IG9mIHRoZSB0ZXJtaW5vbG9neSwgSSYjMzk7bSBhbHJlYWR5IGZvcm11bGF0aW5nIGEgZmV3IGtleSBwb3NzaWJpbGl0aWVzLgoKRmlyc3QsIEkgaW1tZWRpYXRlbHkgY29uc2lkZXIgdGhlIHNlY3VyaXR5IGltcGxpY2F0aW9ucy4gSXMgdGhpcyBhIHJ1bGUgZGVzaWduZWQgdG8gKnJlamVjdCogSVB2NiBjb25uZWN0aW9ucyBvciB0cmFmZmljPyBJZiBzbywgd2h5PyBJcyB0aGlzIHRvIG1pdGlnYXRlIHBvdGVudGlhbCBhdHRhY2sgdmVjdG9ycyBvciB2dWxuZXJhYmlsaXRpZXMgYXNzb2NpYXRlZCB3aXRoIElQdjYgaW1wbGVtZW50YXRpb25zLCBwZXJoYXBzIHRob3NlIGxlc3Mgd2VsbC10ZXN0ZWQgb3IgbW9yZSByZWNlbnRseSBwYXRjaGVkIHRoYW4gdGhlaXIgSVB2NCBjb3VudGVycGFydHMgd2l0aGluIHRoZSBzeXN0ZW0/IEFyZSB0aGVyZSBrbm93biBpc3N1ZXMgdGhhdCBtYWtlIElQdjYgbGVzcyBzZWN1cmUsIG9yIG1vcmUgc3VzY2VwdGlibGUgdG8gY2VydGFpbiB0eXBlcyBvZiBhdHRhY2tzLCB3aXRoaW4gdGhlIHNwZWNpZmljIGFyY2hpdGVjdHVyZSBvciBlbnZpcm9ubWVudCB0aGUgTkZUcyBhcmUgb3BlcmF0aW5nIGluPyBUaGUgaW1wbGljYXRpb25zIGFyZSB3aWRlLgoKU2Vjb25kLCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgY29uc2lkZXJhdGlvbnMuIElzIHJlamVjdGluZyBJUHY2IGEgZGVsaWJlcmF0ZSBvcHRpbWl6YXRpb24/IFBlcmhhcHMgdGhlcmUmIzM5O3MgYSBzcGVjaWZpYyByZWFzb24gSVB2NiBpc24mIzM5O3Qgc3VwcG9ydGVkLCBsaWtlIGRlcGVuZGVuY2llcyBvbiBJUHY0LW9ubHkgaW5mcmFzdHJ1Y3R1cmUgd2l0aGluIHRoZSBORlQmIzM5O3Mgc3lzdGVtLCBvciB0aGF0IHJlamVjdGluZyBJUHY2IGluY3JlYXNlcyB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhlIHN5c3RlbSBpbiBzb21lIHJlZ2FyZC4gSXQgY291bGQgYmUgdGhhdCB0aGUgY3VycmVudCBpbmZyYXN0cnVjdHVyZSBvciBjb2RlYmFzZSByZWxpZXMgbW9yZSBoZWF2aWx5IG9uIElQdjQgZm9yIGludGVybmFsIGNvbW11bmljYXRpb24gb3IgZXh0ZXJuYWwgcXVlcmllcy4KCkZpbmFsbHksIEkmIzM5O20gbWVudGFsbHkgcGFyc2luZyB0aGUgbGFyZ2VyIGNvbnRleHQuIElzIHRoaXMgYSBjb25maWd1cmF0aW9uIGRpcmVjdGl2ZSB3aXRoaW4gYSBmaXJld2FsbCwgYSBsb2FkIGJhbGFuY2VyLCBhIGNvbnRhaW5lciBvcmNoZXN0cmF0aW9uIHN5c3RlbSwgb3Igc29tZSBvdGhlciBuZXR3b3JrIGRldmljZSBvciBhcHBsaWNhdGlvbiBjb250cm9sbGluZyBhY2Nlc3MgdG8gTkZULXJlbGF0ZWQgc2VydmljZXM/IFdoYXQmIzM5O3MgdGhlICpyZWFzb24qIGZvciB0aGlzIHJlamVjdGlvbj8gSXMgaXQgYSBkZWZhdWx0LCBvciBoYXMgaXQgYmVlbiBleHBsaWNpdGx5IGNvbmZpZ3VyZWQ/IElmIGl0JiMzOTtzIGEgc2VjdXJpdHkgbWVhc3VyZSwgaGFzIHRoZSBzeXN0ZW0gcmVjZWl2ZWQgcmVndWxhciBzZWN1cml0eSBhdWRpdHMgdG8gY29uZmlybSBpdHMgZWZmZWN0aXZlbmVzcz8gSWYgaXQmIzM5O3MgZm9yIHBlcmZvcm1hbmNlLCB3aGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9uIHVzZXJzIHRoYXQgZGVwZW5kIG9uIElQdjYgY29ubmVjdGlvbnM/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORlRfUkVKRUNUX0lQVjYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZz0zNj1pZiBORl9UQUJMRVNfSVBWNlxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMzctXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZzozODpjb25maWcgTkZUX1JFSkVDVF9JUFY2XG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy0zOS1cdHNlbGVjdCBORl9SRUpFQ1RfSVBWNlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDg5MwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDIxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFbmFibGluZyBOZXRmaWx0ZXIgUmVqZWN0IEZ1bmN0aW9uYWxpdHkqKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCB0aGlzIE5ldGZpbHRlciByZWplY3QgZnVuY3Rpb25hbGl0eSB3b3JraW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZW5hYmxlIGEgc3VpdGUgb2Ygb3B0aW9uczogYE5GX1RBQkxFU2AsIGBORl9UQUJMRVNfSVBWNGAsIGBORlRfUkVKRUNUX0lQVjRgLCBgTkZfVEFCTEVTX0lQVjZgLCBgTkZUX1JFSkVDVF9JUFY2YCwgYE5GX1RBQkxFU19ORVRERVZgLCBhbmQgYE5GVF9SRUpFQ1RfTkVUREVWYC4gV2FpdCBhIG1pbnV0ZSwgSSBzaG91bGQgYWxzbyBjb25zaWRlciBgTkZfVEFCTEVTX0lORVRgIOKAkyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50IHRvbywgY29uc2lkZXJpbmcgdGhlIGNvbnRleHQuCgpGaXJzdCB0aGluZ3MgZmlyc3QsIEkmIzM5O2xsIGNvbmZpcm0gdGhhdCBgTkZfVEFCTEVTYCBpdHNlbGYgaXMgdGhlIGNvcmUgcmVxdWlyZW1lbnQuIFllcCwgdGhhdCYjMzk7cyB0aGUgYmlnIG9uZS4gSXQgbG9va3MgbGlrZSBpdC4KCk5leHQsIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGNvZGUgY29tcGlsZXMuIFdpbGwgYE5GX1JFSkVDVF9JUFY0YCBhbG9uZSBiZSBzdWZmaWNpZW50PyBZZXMsIGl0IGFwcGVhcnMgc287IHRoYXQgdGFrZXMgY2FyZSBvZiB0aGUgY29tcGlsYXRpb24gb2YgYG5mX3JlamVjdF9pcHY0LmNgLiBIb3dldmVyLCBqdXN0IGNvbXBpbGluZyBpc24mIzM5O3QgZW5vdWdoOyB0aGUgY29kZSBuZWVkcyB0byAqZnVuY3Rpb24qLiBUbyBwcm9wZXJseSByZWFjaCB0aGUgYE5GX0lORVRfSU5HUkVTU2AgaG9vaywgSSBiZWxpZXZlIEkgbmVlZCBgTkZUX1JFSkVDVF9ORVRERVZgLiBJIHNob3VsZCB0YWtlIGEgbG9vayBhdCB0aGUgY29kZSBpbiBgbmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X25ldGRldi5jYCB0byBjb25maXJtIG15IHRoaW5raW5nIGFuZCB1bmRlcnN0YW5kIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mX3NlbmRfdW5yZWFjaCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9uZXRkZXYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNDQ4CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuLi4KCioqRGVlcGVyIERpdmUgaW50byBuZnRfcmVqZWN0X25ldGRldi5jKioKCkhvbGQgb24gYSBtaW51dGUsIHRoaXMgaXMgdGhyb3dpbmcgbWUgb2ZmLiBJIHdhcyB1bmRlciB0aGUgaW1wcmVzc2lvbiB0aGF0IGBuZnRfcmVqZWN0X25ldGRldi5jYCBtYWRlIHVzZSBvZiBgbmZfc2VuZF91bnJlYWNoYCwgYnV0IGxvb2tpbmcgYXQgdGhlIGNvZGUgZGlyZWN0bHksIGl0IGRvZXNuJiMzOTt0IHNlZW0gdG8gY2FsbCBpdC4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGFzc3VtcHRpb24uIExldCBtZSBpbW1lZGlhdGVseSBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcsIGFuZCBjaGVjayB0aGUgc291cmNlIGNvZGUgZm9yIGBuZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfbmV0ZGV2LmNgLiBJIG5lZWQgdG8gZW5zdXJlIEkgaGF2ZSBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIGNvbnRyb2wgZmxvdyB3aXRoaW4gdGhpcyBtb2R1bGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X25ldGRldi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdC8qXG4gICAzOlx0ICogQ29weXJpZ2h0IChjKSAyMDIwIExhdXJhIEdhcmNpYSBMaWViYW5hIFx1MDAzY25ldm9sYUBnbWFpbC5jb21cdTAwM2VcbiAgIDQ6XHQgKiBDb3B5cmlnaHQgKGMpIDIwMjAgSm9zZSBNLiBHdWlzYWRvIFx1MDAzY2d1aWdvbUByaXNldXAubmV0XHUwMDNlXG4gICA1Olx0ICovXG4gICA2Olx0XG4gICA3Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvZXRoZXJkZXZpY2UuaFx1MDAzZVxuICAgODpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4gICA5Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvaW5pdC5oXHUwMDNlXG4gIDEwOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAgMTE6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9uZXRsaW5rLmhcdTAwM2VcbiAgMTI6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9uZXRmaWx0ZXIuaFx1MDAzZVxuICAxMzpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGZpbHRlci9uZl90YWJsZXMuaFx1MDAzZVxuICAxNDpcdCNpbmNsdWRlIFx1MDAzY25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzLmhcdTAwM2VcbiAgMTU6XHQjaW5jbHVkZSBcdTAwM2NuZXQvbmV0ZmlsdGVyL25mdF9yZWplY3QuaFx1MDAzZVxuICAxNjpcdCNpbmNsdWRlIFx1MDAzY25ldC9uZXRmaWx0ZXIvaXB2NC9uZl9yZWplY3QuaFx1MDAzZVxuICAxNzpcdCNpbmNsdWRlIFx1MDAzY25ldC9uZXRmaWx0ZXIvaXB2Ni9uZl9yZWplY3QuaFx1MDAzZVxuICAxODpcdFxuICAxOTpcdHN0YXRpYyB2b2lkIG5mdF9yZWplY3RfcXVldWVfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqbnNrYiwgc3RydWN0IHNrX2J1ZmYgKm9sZHNrYilcbiAgMjA6XHR7XG4gIDIxOlx0XHRkZXZfaGFyZF9oZWFkZXIobnNrYiwgbnNrYi1cdTAwM2VkZXYsIG50b2hzKG9sZHNrYi1cdTAwM2Vwcm90b2NvbCksXG4gIDIyOlx0XHRcdFx0ZXRoX2hkcihvbGRza2IpLVx1MDAzZWhfc291cmNlLCBldGhfaGRyKG9sZHNrYiktXHUwMDNlaF9kZXN0LFxuICAyMzpcdFx0XHRcdG5za2ItXHUwMDNlbGVuKTtcbiAgMjQ6XHRcdGRldl9xdWV1ZV94bWl0KG5za2IpO1xuICAyNTpcdH1cbiAgMjY6XHRcbiAgMjc6XHRzdGF0aWMgdm9pZCBuZnRfcmVqZWN0X25ldGRldl9zZW5kX3Y0X3RjcF9yZXNldChzdHJ1Y3QgbmV0ICpuZXQsXG4gIDI4Olx0XHRcdFx0XHRcdFx0c3RydWN0IHNrX2J1ZmYgKm9sZHNrYixcbiAgMjk6XHRcdFx0XHRcdFx0XHRjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuICAzMDpcdFx0XHRcdFx0XHRcdGludCBob29rKVxuICAzMTpcdHtcbiAgMzI6XHRcdHN0cnVjdCBza19idWZmICpuc2tiO1xuICAzMzpcdFxuICAzNDpcdFx0bnNrYiA9IG5mX3JlamVjdF9za2JfdjRfdGNwX3Jlc2V0KG5ldCwgb2xkc2tiLCBkZXYsIGhvb2spO1xuICAzNTpcdFx0aWYgKCFuc2tiKVxuICAzNjpcdFx0XHRyZXR1cm47XG4gIDM3Olx0XG4gIDM4Olx0XHRuZnRfcmVqZWN0X3F1ZXVlX3htaXQobnNrYiwgb2xkc2tiKTtcbiAgMzk6XHR9XG4gIDQwOlx0XG4gIDQxOlx0c3RhdGljIHZvaWQgbmZ0X3JlamVjdF9uZXRkZXZfc2VuZF92NF91bnJlYWNoKHN0cnVjdCBuZXQgKm5ldCxcbiAgNDI6XHRcdFx0XHRcdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKm9sZHNrYixcbiAgNDM6XHRcdFx0XHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiAgNDQ6XHRcdFx0XHRcdFx0ICAgICAgaW50IGhvb2ssIHU4IGNvZGUpXG4gIDQ1Olx0e1xuICA0NjpcdFx0c3RydWN0IHNrX2J1ZmYgKm5za2I7XG4gIDQ3Olx0XG4gIDQ4Olx0XHRuc2tiID0gbmZfcmVqZWN0X3NrYl92NF91bnJlYWNoKG5ldCwgb2xkc2tiLCBkZXYsIGhvb2ssIGNvZGUpO1xuICA0OTpcdFx0aWYgKCFuc2tiKVxuICA1MDpcdFx0XHRyZXR1cm47XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNDUyCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGl2aW5nIGludG8gdGhlIE5ldHdvcmsgRmlsdGVyaW5nIExvZ2ljKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBuZnRfcmVqZWN0X25ldGRldi5jYCBmaWxlIGFuZCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIGNhbGxpbmcgYG5mX3JlamVjdF9za2JfdjRfdW5yZWFjaGAuIEludGVyZXN0aW5nLiBXYWl0IGEgc2Vjb25kLCB0aGUgcGF0Y2ggbm90ZXMgYXJlIHBvaW50aW5nIG1lIHRvd2FyZHMgYG5mX3NlbmRfdW5yZWFjaGAsIG5vdCB0aGF0IGZ1bmN0aW9uIEkgaW5pdGlhbGx5IHNwb3R0ZWQuIFRoaXMgaXMgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIGZvbGxvd2luZyB0aGUgY29ycmVjdCB0cmFpbCwgc28gbGV0JiMzOTtzIGRvdWJsZS1jaGVjayBgbmZfc2VuZF91bnJlYWNoYCBhbmQgZW5zdXJlIHRoYXQmIzM5O3MgdHJ1bHkgdGhlIGtleSBhcmVhIGltcGFjdGVkIGJ5IHRoZSBwYXRjaC4gSSYjMzk7bGwgbmVlZCB0byByZXRyYWNlIG15IHN0ZXBzIGEgYml0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjc0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl9zZW5kX3VucmVhY2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYz0zNDQ9RVhQT1JUX1NZTUJPTF9HUEwobmZfc2VuZF9yZXNldCk7XG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYy0zNDUtXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYzozNDY6dm9pZCBuZl9zZW5kX3VucmVhY2goc3RydWN0IHNrX2J1ZmYgKnNrYl9pbiwgaW50IGNvZGUsIGludCBob29rKVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMtMzQ3LXtcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYy0zNzItfVxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmM6MzczOkVYUE9SVF9TWU1CT0xfR1BMKG5mX3NlbmRfdW5yZWFjaCk7XG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYy0zNzQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyOTI2CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgYG5mX3NlbmRfdW5yZWFjaGAgQ2FsbCBDaGFpbioqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBUaGlzIGRvZXNuJiMzOTt0IG1ha2Ugc2Vuc2UuIElmIGBuZnRfcmVqZWN0X25ldGRldmAgKmRvZXNuJiMzOTt0KiBjYWxsIGBuZl9zZW5kX3VucmVhY2hgLCB0aGVuIGhvdyBvbiBlYXJ0aCBjYW4gYGhvb2sgPT0gTkZfSU5FVF9JTkdSRVNTYCBldmVyIGJlIHRydWUgd2l0aGluIGBuZl9zZW5kX3VucmVhY2hgPyBUaGF0IGNvbmRpdGlvbiBmZWVscyBmdW5kYW1lbnRhbGx5IGJyb2tlbi4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgY2FsbCBjaGFpbiBhbmQgZmlndXJlIG91dCB3aGF0JiMzOTtzIGdvaW5nIG9uLiBMZXQgbWUgc3RhcnQgYnkgbWV0aWN1bG91c2x5IGV4YW1pbmluZyBhbGwgdGhlIHBsYWNlcyBpbiB0aGUgY29kZSB3aGVyZSBgbmZfc2VuZF91bnJlYWNoYCBpcyBhY3R1YWxseSBpbnZva2VkLiBUaGlzIHNob3VsZCBpbGx1bWluYXRlIHRoZSBwYXRoIGFuZCBjbGFyaWZ5IHRoaXMgYXBwYXJlbnQgY29udHJhZGljdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdyBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjc2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl9zZW5kX3VucmVhY2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmM9MzE9cmVqZWN0X3RnKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jLTM3LVx0Y2FzZSBJUFRfSUNNUF9ORVRfVU5SRUFDSEFCTEU6XG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jOjM4Olx0XHRuZl9zZW5kX3VucmVhY2goc2tiLCBJQ01QX05FVF9VTlJFQUNILCBob29rKTtcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtMzktXHRcdGJyZWFrO1xubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYy00MC1cdGNhc2UgSVBUX0lDTVBfSE9TVF9VTlJFQUNIQUJMRTpcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmM6NDE6XHRcdG5mX3NlbmRfdW5yZWFjaChza2IsIElDTVBfSE9TVF9VTlJFQUNILCBob29rKTtcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtNDItXHRcdGJyZWFrO1xubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYy00My1cdGNhc2UgSVBUX0lDTVBfUFJPVF9VTlJFQUNIQUJMRTpcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmM6NDQ6XHRcdG5mX3NlbmRfdW5yZWFjaChza2IsIElDTVBfUFJPVF9VTlJFQUNILCBob29rKTtcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtNDUtXHRcdGJyZWFrO1xubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYy00Ni1cdGNhc2UgSVBUX0lDTVBfUE9SVF9VTlJFQUNIQUJMRTpcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmM6NDc6XHRcdG5mX3NlbmRfdW5yZWFjaChza2IsIElDTVBfUE9SVF9VTlJFQUNILCBob29rKTtcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtNDgtXHRcdGJyZWFrO1xubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYy00OS1cdGNhc2UgSVBUX0lDTVBfTkVUX1BST0hJQklURUQ6XG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jOjUwOlx0XHRuZl9zZW5kX3VucmVhY2goc2tiLCBJQ01QX05FVF9BTk8sIGhvb2spO1xubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYy01MS1cdFx0YnJlYWs7XG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jLTUyLVx0Y2FzZSBJUFRfSUNNUF9IT1NUX1BST0hJQklURUQ6XG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jOjUzOlx0XHRuZl9zZW5kX3VucmVhY2goc2tiLCBJQ01QX0hPU1RfQU5PLCBob29rKTtcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtNTQtXHRcdGJyZWFrO1xubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYy01NS1cdGNhc2UgSVBUX0lDTVBfQURNSU5fUFJPSElCSVRFRDpcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmM6NTY6XHRcdG5mX3NlbmRfdW5yZWFjaChza2IsIElDTVBfUEtUX0ZJTFRFUkVELCBob29rKTtcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtNTctXHRcdGJyZWFrO1xuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jPTM0ND1FWFBPUlRfU1lNQk9MX0dQTChuZl9zZW5kX3Jlc2V0KTtcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jLTM0NS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jOjM0Njp2b2lkIG5mX3NlbmRfdW5yZWFjaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luLCBpbnQgY29kZSwgaW50IGhvb2spXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYy0zNDcte1xuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jLTM3Mi19XG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYzozNzM6RVhQT1JUX1NZTUJPTF9HUEwobmZfc2VuZF91bnJlYWNoKTtcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jLTM3NC1cbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pcHY0LmM9MTk9c3RhdGljIHZvaWQgbmZ0X3JlamVjdF9pcHY0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZnRfcmVqZWN0X2lwdjQuYy0yNi1cdGNhc2UgTkZUX1JFSkVDVF9JQ01QX1VOUkVBQ0g6XG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pcHY0LmM6Mjc6XHRcdG5mX3NlbmRfdW5yZWFjaChwa3QtXHUwMDNlc2tiLCBwcml2LVx1MDAzZWljbXBfY29kZSwgbmZ0X2hvb2socGt0KSk7XG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pcHY0LmMtMjgtXHRcdGJyZWFrO1xuLS1cbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jPTM1PXJlamVjdF90ZzYoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuLS1cbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jLTQxLVx0Y2FzZSBJUDZUX0lDTVA2X05PX1JPVVRFOlxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmM6NDI6XHRcdG5mX3NlbmRfdW5yZWFjaDYobmV0LCBza2IsIElDTVBWNl9OT1JPVVRFLCB4dF9ob29rbnVtKHBhcikpO1xubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNDMtXHRcdGJyZWFrO1xubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNDQtXHRjYXNlIElQNlRfSUNNUDZfQURNX1BST0hJQklURUQ6XG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYzo0NTpcdFx0bmZfc2VuZF91bnJlYWNoNihuZXQsIHNrYiwgSUNNUFY2X0FETV9QUk9ISUJJVEVELFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNDYtXHRcdFx0XHQgeHRfaG9va251bShwYXIpKTtcbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYy00OC1cdGNhc2UgSVA2VF9JQ01QNl9OT1RfTkVJR0hCT1VSOlxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmM6NDk6XHRcdG5mX3NlbmRfdW5yZWFjaDYobmV0LCBza2IsIElDTVBWNl9OT1RfTkVJR0hCT1VSLFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNTAtXHRcdFx0XHQgeHRfaG9va251bShwYXIpKTtcbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYy01Mi1cdGNhc2UgSVA2VF9JQ01QNl9BRERSX1VOUkVBQ0g6XG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYzo1MzpcdFx0bmZfc2VuZF91bnJlYWNoNihuZXQsIHNrYiwgSUNNUFY2X0FERFJfVU5SRUFDSCxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jLTU0LVx0XHRcdFx0IHh0X2hvb2tudW0ocGFyKSk7XG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNTYtXHRjYXNlIElQNlRfSUNNUDZfUE9SVF9VTlJFQUNIOlxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmM6NTc6XHRcdG5mX3NlbmRfdW5yZWFjaDYobmV0LCBza2IsIElDTVBWNl9QT1JUX1VOUkVBQ0gsXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYy01OC1cdFx0XHRcdCB4dF9ob29rbnVtKHBhcikpO1xuLS1cbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jLTY2LVx0Y2FzZSBJUDZUX0lDTVA2X1BPTElDWV9GQUlMOlxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmM6Njc6XHRcdG5mX3NlbmRfdW5yZWFjaDYobmV0LCBza2IsIElDTVBWNl9QT0xJQ1lfRkFJTCwgeHRfaG9va251bShwYXIpKTtcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jLTY4LVx0XHRicmVhaztcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jLTY5LVx0Y2FzZSBJUDZUX0lDTVA2X1JFSkVDVF9ST1VURTpcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jOjcwOlx0XHRuZl9zZW5kX3VucmVhY2g2KG5ldCwgc2tiLCBJQ01QVjZfUkVKRUNUX1JPVVRFLFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNzEtXHRcdFx0XHQgeHRfaG9va251bShwYXIpKTtcbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjYuYz00MTI9c3RhdGljIGJvb2wgcmVqZWN0Nl9jc3VtX29rKHN0cnVjdCBza19idWZmICpza2IsIGludCBob29rKVxuLS1cbm5ldC9pcHY2L25ldGZpbHRlci9uZl9yZWplY3RfaXB2Ni5jLTQzMy1cbm5ldC9pcHY2L25ldGZpbHRlci9uZl9yZWplY3RfaXB2Ni5jOjQzNDp2b2lkIG5mX3NlbmRfdW5yZWFjaDYoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luLFxubmV0L2lwdjYvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY2LmMtNDM1LVx0XHQgICAgICB1bnNpZ25lZCBjaGFyIGNvZGUsIHVuc2lnbmVkIGludCBob29rbnVtKVxuLS1cbm5ldC9pcHY2L25ldGZpbHRlci9uZl9yZWplY3RfaXB2Ni5jLTQ0Ny19XG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjYuYzo0NDg6RVhQT1JUX1NZTUJPTF9HUEwobmZfc2VuZF91bnJlYWNoNik7XG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjYuYy00NDktXG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyL25mdF9yZWplY3RfaXB2Ni5jPTE5PXN0YXRpYyB2b2lkIG5mdF9yZWplY3RfaXB2Nl9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pcHY2LmMtMjYtXHRjYXNlIE5GVF9SRUpFQ1RfSUNNUF9VTlJFQUNIOlxubmV0L2lwdjYvbmV0ZmlsdGVyL25mdF9yZWplY3RfaXB2Ni5jOjI3Olx0XHRuZl9zZW5kX3VucmVhY2g2KG5mdF9uZXQocGt0KSwgcGt0LVx1MDAzZXNrYiwgcHJpdi1cdTAwM2VpY21wX2NvZGUsXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pcHY2LmMtMjgtXHRcdFx0XHQgbmZ0X2hvb2socGt0KSk7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYz0xNz1zdGF0aWMgdm9pZCBuZnRfcmVqZWN0X2luZXRfZXZhbChjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsXG4tLVxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy0yNi1cdFx0Y2FzZSBORlRfUkVKRUNUX0lDTVBfVU5SRUFDSDpcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmM6Mjc6XHRcdFx0bmZfc2VuZF91bnJlYWNoKHBrdC1cdTAwM2Vza2IsIHByaXYtXHUwMDNlaWNtcF9jb2RlLFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy0yOC1cdFx0XHRcdFx0bmZ0X2hvb2socGt0KSk7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy0zNC1cdFx0Y2FzZSBORlRfUkVKRUNUX0lDTVBYX1VOUkVBQ0g6XG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jOjM1Olx0XHRcdG5mX3NlbmRfdW5yZWFjaChwa3QtXHUwMDNlc2tiLFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy0zNi1cdFx0XHRcdFx0bmZ0X3JlamVjdF9pY21wX2NvZGUocHJpdi1cdTAwM2VpY21wX2NvZGUpLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmMtNDMtXHRcdGNhc2UgTkZUX1JFSkVDVF9JQ01QX1VOUkVBQ0g6XG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jOjQ0Olx0XHRcdG5mX3NlbmRfdW5yZWFjaDYobmZ0X25ldChwa3QpLCBwa3QtXHUwMDNlc2tiLFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy00NS1cdFx0XHRcdFx0IHByaXYtXHUwMDNlaWNtcF9jb2RlLCBuZnRfaG9vayhwa3QpKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jLTUxLVx0XHRjYXNlIE5GVF9SRUpFQ1RfSUNNUFhfVU5SRUFDSDpcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmM6NTI6XHRcdFx0bmZfc2VuZF91bnJlYWNoNihuZnRfbmV0KHBrdCksIHBrdC1cdTAwM2Vza2IsXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jLTUzLVx0XHRcdFx0XHQgbmZ0X3JlamVjdF9pY21wdjZfY29kZShwcml2LVx1MDAzZWljbXBfY29kZSksXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1ODk3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogOTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIE5ldGZpbHRlciBSZWplY3Rpb24gTWVjaGFuaXNtKioKCk9rYXksIHNvIEkmIzM5O20gdHJhY2luZyB0aHJvdWdoIHRoaXMgbmV0ZmlsdGVyIHNldHVwIGFuZCBpdCBsb29rcyBsaWtlIGBuZnRfcmVqZWN0X2luZXRgIGlzIHRoZSBrZXkgZnVuY3Rpb24gaGVyZSwgYW5kIHRoYXQmIzM5O3MgY2FsbGluZyBgbmZfc2VuZF91bnJlYWNoYC4gR290IGl0LiBOb3csIHNpbmNlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIGBpbmV0YCBmYW1pbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoaXMgcmVqZWN0aW9uIGlzIGFjdHVhbGx5IGhhcHBlbmluZyBpbiB0aGUgcGFja2V0IGZsb3cuIERvZXMgdGhlIGBpbmV0YCBmYW1pbHkgZXZlbiBoYXZlIGFuIGluZ3Jlc3MgaG9vaz8gQSBxdWljayBtZW50YWwgY2hlY2suLi4geWVzLCBvZiBjb3Vyc2UsIGBORl9JTkVUX0lOR1JFU1NgLiBBbHJpZ2h0LCBsZXQgbWUganVzdCBjb25maXJtIHRoYXQgd2l0aCBhIGdsYW5jZSBhdCBgaW5jbHVkZS91YXBpL2xpbnV4L25ldGZpbHRlci5oYCB0byByZWZyZXNoIG15IG1lbW9yeSBhbmQgbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcgY3J1Y2lhbCBhYm91dCB0aGUgaW5ncmVzcyBwb2ludC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkZfSU5FVF9JTkdSRVNTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS91YXBpL2xpbnV4L25ldGZpbHRlci5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvdWFwaS9saW51eC9uZXRmaWx0ZXIuaD00Mj1lbnVtIG5mX2luZXRfaG9va3Mge1xuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9uZXRmaWx0ZXIuaC00OC1cdE5GX0lORVRfTlVNSE9PS1MsXG5pbmNsdWRlL3VhcGkvbGludXgvbmV0ZmlsdGVyLmg6NDk6XHRORl9JTkVUX0lOR1JFU1MgPSBORl9JTkVUX05VTUhPT0tTLFxuaW5jbHVkZS91YXBpL2xpbnV4L25ldGZpbHRlci5oLTUwLX07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2Mjk3CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIE5ldHdvcmsgVHJhZmZpYyBSZWplY3Rpb24gaW4gdGhlIGluZXQgRmFtaWx5KioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIG5ldHdvcmsgZmlsdGVyaW5nIHNpdHVhdGlvbi4gSXQgc2VlbXMgcHJldHR5IGNsZWFyIHRoYXQgYE5GX0lORVRfSU5HUkVTU2AgaXMgYSBsZWdpdGltYXRlIGhvb2sgZm9yIHRoZSBgaW5ldGAgZmFtaWx5LCB3aGljaCBpcyB3aGF0IEkmIzM5O20gaW50ZXJlc3RlZCBpbiBoZXJlLiBUaGF0IG1ha2VzIHNlbnNlLCBhbmQgSSBjYW4gY29uZmlybSB0aGF0IGBuZnRfcmVqZWN0X2luZXRgIGlzIHRoZSBhcHByb3ByaWF0ZSBmdW5jdGlvbiB0byBhdHRhY2ggdG8gdGhlIGluZ3Jlc3MgaG9vaywgd2hpY2ggaXMgZ29vZC4gVGhhdCBjb25maXJtcyB0aGF0IGBORlRfUkVKRUNUX0lORVRgIGlzIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiBJIG5lZWQgdG8gbGV2ZXJhZ2UgdGhpcyB3aXRoaW4gdGhlIGBpbmV0YCBmYW1pbHkuIE5vdywgSSBzaG91bGQgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgcGljdHVyZSwgc28gbmV4dCBJJiMzOTttIGdvaW5nIHRvIGRvdWJsZSBjaGVjayBhbmQgZXhhbWluZSBgTkZUX1JFSkVDVF9JTkVUYCYjMzk7cyBkZXBlbmRlbmNpZXMgdG8gbWFrZSBjZXJ0YWluIHRoYXQgSSBoYXZlIGV2ZXJ5dGhpbmcgcHJvcGVybHkgY29uc2lkZXJlZCBmb3IgYSBnb29kIGltcGxlbWVudGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZUX1JFSkVDVF9JTkVUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz01Nzg9Y29uZmlnIE5GVF9SRUpFQ1Rcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNTg1LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjU4Njpjb25maWcgTkZUX1JFSkVDVF9JTkVUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNTg3LVx0ZGVwZW5kcyBvbiBORl9UQUJMRVNfSU5FVFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjY2MAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDEwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgdGhlIE5ldGZpbHRlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gc2V0dGluZyB1cCBhIG5ldGZpbHRlciBjb25maWd1cmF0aW9uIGhlcmUsIGFuZCBpdCBsb29rcyBsaWtlIEkmIzM5O2xsIG5lZWQgYm90aCBgTkZfVEFCTEVTX0lORVRgIGFuZCBgTkZUX1JFSkVDVF9JTkVUYC4gTm93LCBJIHJlY2FsbCB0aGF0IGBORl9UQUJMRVNfSU5FVGAgbmF0dXJhbGx5IHB1bGxzIGluIGBORl9UQUJMRVNfSVBWNGAsIHRoYXQgbWFrZXMgc2Vuc2UuIEFuZCBJJiMzOTttIHByZXR0eSBzdXJlIHRoYXQgYE5GVF9SRUpFQ1RfSU5FVGAgcmVsaWVzIG9uIGBuZl9zZW5kX3VucmVhY2hgLiBUaGUgcmVhbCBxdWVzdGlvbiBpczogZG9lcyBgTkZUX1JFSkVDVF9JTkVUYCBpbXBsaWNpdGx5IHNlbGVjdCBgTkZfUkVKRUNUX0lQVjRgPyBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGRlcGVuZGVuY3kgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBCZXN0IHRvIGRpdmUgYmFjayBpbnRvIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIGFuZCB2ZXJpZnkgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRob3NlIG9wdGlvbnMgZm9yIGBORlRfUkVKRUNUX0lORVRgIGFnYWluLiBHb3R0YSBnZXQgdGhlIGNvbmZpZyByaWdodCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1ODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDU4MDpcdFx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIG5mX3RhYmxlcyByZWplY3Qgc3VwcG9ydFwmIzM0O1xuIDU4MTpcdFx0aGVscFxuIDU4MjpcdFx0ICBUaGlzIG9wdGlvbiBhZGRzIHRoZSBcJiMzNDtyZWplY3RcJiMzNDsgZXhwcmVzc2lvbiB0aGF0IHlvdSBjYW4gdXNlIHRvXG4gNTgzOlx0XHQgIGV4cGxpY2l0bHkgZGVueSBhbmQgbm90aWZ5IHZpYSBUQ1AgcmVzZXQvSUNNUCBpbmZvcm1hdGlvbmFsIGVycm9yc1xuIDU4NDpcdFx0ICB1bmFsbG93ZWQgdHJhZmZpYy5cbiA1ODU6XHRcbiA1ODY6XHRjb25maWcgTkZUX1JFSkVDVF9JTkVUXG4gNTg3Olx0XHRkZXBlbmRzIG9uIE5GX1RBQkxFU19JTkVUXG4gNTg4Olx0XHRkZWZhdWx0IE5GVF9SRUpFQ1RcbiA1ODk6XHRcdHRyaXN0YXRlXG4gNTkwOlx0XG4gNTkxOlx0Y29uZmlnIE5GVF9DT01QQVRcbiA1OTI6XHRcdGRlcGVuZHMgb24gTkVURklMVEVSX1hUQUJMRVNcbiA1OTM6XHRcdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciB4X3RhYmxlcyBvdmVyIG5mX3RhYmxlcyBtb2R1bGVcJiMzNDtcbiA1OTQ6XHRcdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcyMDAKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA0NTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTmF2aWdhdGluZyB0aGUgQ29uZmlndXJhdGlvbiBDb251bmRydW06IEEgRGVlcCBEaXZlIGludG8gTmV0ZmlsdGVyJiMzOTtzIFJlamVjdCBNZWNoYW5pc21zKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzdW1wdGlvbiB3YXMgdGhhdCBgTkZUX1JFSkVDVF9JTkVUYCBkaXJlY3RseSBpbXBsaWVzIHRoZSBzZWxlY3Rpb24gb2YgYE5GX1JFSkVDVF9JUFY0YCwgYnV0IHRoYXQmIzM5O3Mgbm90IGV4cGxpY2l0bHkgdGhlIGNhc2UuIEluc3RlYWQsIGl0IHNlZW1zIGBORlRfUkVKRUNUX0lQVjRgICppdHNlbGYqIGlzIGNob3NlbiB2aWEgYE5GVF9SRUpFQ1RfSVBWNGAsIGFuZCB0aGF0ICpkZWZhdWx0cyogdG8gYE5GVF9SRUpFQ1RgIGlmIHRoZSBJUHY0IHRhYmxlIHN1cHBvcnQgKGBORl9UQUJMRVNfSVBWNGApIGlzIGVuYWJsZWQuCgpTaW5jZSBgTkZfVEFCTEVTX0lORVRgIGluY2x1ZGVzIGBORl9UQUJMRVNfSVBWNGAsIGFuZCBgTkZUX1JFSkVDVF9JTkVUYCBkZWZhdWx0cyB0byBgTkZUX1JFSkVDVGAsIGl0IGxvb2tzIGxpa2UgaWYgd2UgZW5hYmxlIGBORlRfUkVKRUNUYCwgdGhlbiBgTkZUX1JFSkVDVF9JUFY0YCB3aWxsIGJlIGVuYWJsZWQgYnkgZGVmYXVsdC4gR2l2ZW4gdGhpcywgYE5GVF9SRUpFQ1RfSVBWNGAgd2lsbCBzZWxlY3QgYE5GX1JFSkVDVF9JUFY0YC4KClRoZXJlZm9yZSwgdG8gZW5zdXJlIGV2ZXJ5dGhpbmcmIzM5O3MgcHJvcGVybHkgY29uZmlndXJlZCwgSSB0aGluayB3ZSBuZWVkIHRoZSBmb2xsb3dpbmc6CgoqICAgYE5GX1RBQkxFU2AKKiAgIGBORl9UQUJMRVNfSU5FVGAKKiAgIGBORlRfUkVKRUNUYAoqICAgYE5GVF9SRUpFQ1RfSU5FVGAKKiAgIGBORlRfUkVKRUNUX0lQVjRgCiogICBgTkZfUkVKRUNUX0lQVjRgCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc2FmZSwgbGV0JiMzOTtzIGVudW1lcmF0ZSB0aGVzZSBhZ2FpbjogYE5GX1RBQkxFU2AsIGBORl9UQUJMRVNfSU5FVGAsIGBORlRfUkVKRUNUYCwgYE5GVF9SRUpFQ1RfSU5FVGAsIGBORlRfUkVKRUNUX0lQVjRgLCBhbmQgYE5GX1JFSkVDVF9JUFY0YC4KCk5vdywgYSBxdWljayBjaGVjayBvbiBgTkZfVEFCTEVTX05FVERFVmAuLi4gbGV0JiMzOTtzIGtlZXAgdGhhdCBpbiBtaW5kLCBqdXN0IGluIGNhc2UuIFRoZSBwYXRjaCBpbnZvbHZlcyBgaG9vayA9PSBORl9JTkVUX0lOR1JFU1NgLiBgTkZfSU5FVF9JTkdSRVNTYCBpcyB1c2VkIGluIHRoZSBgaW5ldGAgZmFtaWx5IGluZ3Jlc3MgaG9vaywgYW5kIHRoZSBgbmV0ZGV2YCBmYW1pbHkgaW5ncmVzcyBob29rLCB0aGF0JiMzOTtzIHdoeSBpdCBpcyByZWxldmFudCBoZXJlLiBCdXQgYG5mdF9yZWplY3RfbmV0ZGV2YCBkb2VzbiYjMzk7dCB1c2UgYG5mX3NlbmRfdW5yZWFjaGAuIEl0IHVzZXMgYG5mX3JlamVjdF9za2JfdjRfdW5yZWFjaGAuIFNvLCBgbmZfc2VuZF91bnJlYWNoYCBpcyBvbmx5IGNhbGxlZCBieSBgbmZ0X3JlamVjdF9pbmV0YCwgYG5mdF9yZWplY3RfaXB2NGAsIGFuZCBgaXB0X1JFSkVDVGAuCgpIYW5nIG9uIGEgc2Vjb25kLiBDYW4gYG5mdF9yZWplY3RfaXB2NGAgZXZlbiBhdHRhY2ggdG8gYE5GX0lORVRfSU5HUkVTU2A/IFRoZSBJUHY0IGZhbWlseSAqZG9lc24mIzM5O3QqIGhhdmUgYW4gaW5ncmVzcyBob29rLCByaWdodD8gT3IgZG9lcyBpdD8gVGltZSB0byB2ZXJpZnkgaWYgdGhlIElQdjQgZmFtaWx5ICphY3R1YWxseSogaGFzIGFuIGluZ3Jlc3MgaG9vay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkZfSU5FVF9JTkdSRVNTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV0ZmlsdGVyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYz0zNDY9dm9pZCBuZl9zZW5kX3VucmVhY2goc3RydWN0IHNrX2J1ZmYgKnNrYl9pbiwgaW50IGNvZGUsIGludCBob29rKVxuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jLTM1OC1cdC8qIEluZXQgaW5ncmVzcyBydW5zIGJlZm9yZSBJUHY0IGluaXRpYWxpemVzIElQQ0IuICovXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYzozNTk6XHRpZiAoaG9vayA9PSBORl9JTkVUX0lOR1JFU1MpIHtcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jLTM2MC1cdFx0bWVtc2V0KElQQ0Ioc2tiX2luKSwgMCwgc2l6ZW9mKCpJUENCKHNrYl9pbikpKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg0MzUKCQkJCQkJCW91dHB1dDogMTU0CgkJCQkJCQl0aG91Z2h0czogMTMzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipDb25maWd1cmF0aW9uIGFuZCBDb2RlIEFuYWx5c2lzIGZvciBOZXRmaWx0ZXIgSVB2NCBSZWplY3QgSGFuZGxpbmcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhlIHJlbGV2YW50IGNvZGUgZm9yIHRoaXMgcGF0Y2ggcmVzaWRlcyBzb2xlbHkgd2l0aGluIGBuZl9yZWplY3RfaXB2NC5jYC4gSSYjMzk7dmUgdHJhY2VkIHRoZSBwYXRoOiBgTkZfSU5FVF9JTkdSRVNTYCBpcyB0cmlnZ2VyZWQgdmlhIGBuZnRfcmVqZWN0X2luZXRgLCB3aGljaCwgYXMgd2Uga25vdywgbGl2ZXMgaW4gYG5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmNgLiBUaHVzLCBgTkZUX1JFSkVDVF9JTkVUYCBzZWVtcyBsaWtlIHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24gdG8gZW5hYmxlIGhlcmUsIHJpZ2h0PwoKTGV0JiMzOTtzIHF1aWNrbHkgY29uZmlybS4gWWVzLCBlbmFibGluZyBgTkZUX1JFSkVDVF9JTkVUYCBkb2VzIGluZGVlZCBicmluZyBpbiBgbmZ0X3JlamVjdF9pbmV0LmNgLCB3aGljaCwgaW4gdHVybiwgY2FsbHMgYG5mX3NlbmRfdW5yZWFjaGAuCgpTbywgaGVyZSYjMzk7cyB0aGUgY29uZmlnIGxpc3QgSSYjMzk7dmUgY29tZSB1cCB3aXRoIHNvIGZhcjogYE5GX1RBQkxFU2AsIGBORl9UQUJMRVNfSU5FVGAsIGBORlRfUkVKRUNUYCwgYE5GVF9SRUpFQ1RfSU5FVGAsIGFuZCBgTkZfUkVKRUNUX0lQVjRgLgoKTGV0JiMzOTtzIHNlZSBpZiBgTkZfUkVKRUNUX0lQVjRgIGlzIGEgdmlzaWJsZSBjb25maWcgLSB5ZXAsIGl0JiMzOTtzIGEgdHJpc3RhdGUgb3B0aW9uIGZvciAmIzM0O0lQdjQgcGFja2V0IHJlamVjdGlvbi4mIzM0OwoKTm93LCB3aGF0IGFib3V0IGBORlRfUkVKRUNUX0lORVRgPyBBaCwgaXQgaGFzIG5vIHByb21wdC4gVGhhdCYjMzk7cyBmaW5lOyBpdCYjMzk7cyBkZWZhdWx0ZWQgaWYgd2UgaGF2ZSBgTkZUX1JFSkVDVGAgZW5hYmxlZCwgYW5kIGRlcGVuZHMgb24gYE5GX1RBQkxFU19JTkVUYC4gVGhhdCYjMzk7cyBpbXBvcnRhbnQuIFNvLCB3ZSBkZWZpbml0aXZlbHkgbmVlZCBgTkZUX1JFSkVDVGAgYW5kIGBORl9UQUJMRVNfSU5FVGAuCgpMZXQmIzM5O3MgZG91YmxlLWNoZWNrIGBORl9UQUJMRVNfSU5FVGAuIEl0JiMzOTtzIGEgYm9vbGVhbiBvcHRpb24gbGFiZWxlZCAmIzM0O05ldGZpbHRlciBuZl90YWJsZXMgbWl4ZWQgSVB2NC9JUHY2IHRhYmxlcyBzdXBwb3J0LiYjMzQ7IEdvb2QsIHdlIGVuYWJsZSB0aGF0LgoKQW5kIGBORl9UQUJMRVNgIGl0c2VsZj8gWWVwLCBhIHRyaXN0YXRlICYjMzQ7TmV0ZmlsdGVyIG5mX3RhYmxlcyBzdXBwb3J0JiMzNDsuIFNvIHRoYXQgZ29lcyBpbiBhcyB3ZWxsLgoKU28gd2UgYXJlIGNvbmZpZGVudDogdGhlIHJlcXVpcmVkIGNvbmZpZ3MgYXJlIGBORl9UQUJMRVNgLCBgTkZfVEFCTEVTX0lORVRgLCBgTkZUX1JFSkVDVGAsIGFuZCBgTkZfUkVKRUNUX0lQVjRgLiBCdXQgaW4gY2FzZSB0aGUgY29uZmlnIHN5c3RlbSBuZWVkcyBpdCBleHBsaWNpdGx5LCBsZXQmIzM5O3MgaW5jbHVkZSBgTkZUX1JFSkVDVF9JTkVUYC4KCk5vdywgYXJlIHRoZXJlIGFueSBvdGhlciByZWxldmFudCBjb25maWdzPyBUaGUgb25lcyBmb3IgaXB0YWJsZXMsIGBJUF9ORl9UQVJHRVRfUkVKRUNUYCwgYElQX05GX0lQVEFCTEVTYCwgYW5kIGBJUF9ORl9GSUxURVJgIG1pZ2h0IGJlIHJlbGV2YW50IGZvciBpcHRhYmxlcyBidXQgZm9yIG5mdGFibGVzIHRoaXMgaXMgZW5vdWdoLiBUaGUgcGF0aCB0byB0aGUgcmVsZXZhbnQgY29kZSBpcyB2aWEgbmZ0YWJsZXMuCgpUaGUgZnVuY3Rpb24gd2UmIzM5O3JlIGZvY3VzaW5nIG9uIGlzIGBuZl9zZW5kX3VucmVhY2hgLiBJcyB0aGVyZSBhbnkgb3RoZXIgZnVuY3Rpb24/IE5vcGUsIHRoZSBwYXRjaCAqb25seSogbW9kaWZpZXMgYG5mX3NlbmRfdW5yZWFjaGAuIFNvIHRoYXQmIzM5O3MgdGhlIG9ubHkgc3ltYm9sLgoKT2theSwgbGV0JiMzOTtzIHJldmlldyB0aGUgcGF0Y2ggb25lIG1vcmUgdGltZSwganVzdCB0byBjb25maXJtOgpgYGBjCiAJaWYgKCFza2JfZHN0KHNrYl9pbikgJmFtcDsmYW1wOyBuZl9yZWplY3RfZmlsbF9za2JfZHN0KHNrYl9pbikgJmx0OyAwKQogCQlyZXR1cm47CiAKJiM0MzsJLyogSW5ldCBpbmdyZXNzIHJ1bnMgYmVmb3JlIElQdjQgaW5pdGlhbGl6ZXMgSVBDQi4gKi8KJiM0MzsJaWYgKGhvb2sgPT0gTkZfSU5FVF9JTkdSRVNTKSB7CiYjNDM7CQltZW1zZXQoSVBDQihza2JfaW4pLCAwLCBzaXplb2YoKklQQ0Ioc2tiX2luKSkpOwomIzQzOwkJSVBDQihza2JfaW4pLSZndDtpaWYgPSBza2JfaW4tJmd0O3NrYl9paWY7CiYjNDM7CX0KJiM0MzsKIAlpZiAoc2tiX2NzdW1fdW5uZWNlc3Nhcnkoc2tiX2luKSB8fAogCSAgICAhbmZfcmVqZWN0X3ZlcmlmeV9jc3VtKHNrYl9pbiwgZGF0YW9mZiwgcHJvdG8pKSB7CmBgYAoKUmlnaHQsIGl0IGluaXRpYWxpemVzIHRoZSBJUHY0IGNvbnRyb2wgYmxvY2sgKGBJUENCYCkgd2hlbiBgaG9vayA9PSBORl9JTkVUX0lOR1JFU1NgLiBUaGlzIGFkZHJlc3NlcyBhIHBvdGVudGlhbCB1c2Ugb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgbGF0ZXIgaW4gdGhlIGZ1bmN0aW9uLCB1c2VkIGluIGBpY21wX3NlbmRgIG9yIGBpcF9yb3V0ZV9vdXRwdXRfa2V5YCwgYW5kIGlzIGEgY2xlYXIgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCB3ZSBuZWVkIHRvIGZ1enouCgpUaGlzIGZpeCBpcyByZWFjaGFibGUgdXNpbmcgdGhlIG5mdGFibGVzIGBpbmV0YCBmYW1pbHkgaW5ncmVzcyBob29rLgoKU28sIHRoZSBmb2N1cyBpcyBkZWZpbml0aXZlbHkgYG5mX3NlbmRfdW5yZWFjaGAuCgpDb25maWctd2lzZSwgbGV0JiMzOTtzIGFsc28gYmUgZXhwbGljaXQgYWJvdXQgYE5GVF9SRUpFQ1RfSU5FVGAuCgpgTkZfUkVKRUNUX0lQVjRgIGlzIGEgdHJpc3RhdGUsIHNvIHRoYXQmIzM5O3MgZ29vZC4KClJlZ2FyZGluZyBzeXprYWxsZXIsIGFsdGhvdWdoIGBORlRfUkVKRUNUX0lORVRgIGhhcyBubyBwcm9tcHQsIGVuYWJsaW5nIHRoZSBwYXJlbnQgY29uZmlnLCBgTkZUX1JFSkVDVGAgYW5kIGl0cyBkZXBlbmRlbmN5IGBORl9UQUJMRVNfSU5FVGAgc2hvdWxkIGJlIGVub3VnaCwgYnV0LCBJJiMzOTtsbCBwcm92aWRlIGBORl9UQUJMRVNgLCBgTkZfVEFCTEVTX0lORVRgLCBgTkZUX1JFSkVDVGAsIGBORl9SRUpFQ1RfSVBWNGAsIGBORlRfUkVKRUNUX0lORVRgIGp1c3QgaW4gY2FzZS4KCk9uZSBsYXN0IGNoZWNrOiBgbmZfc2VuZF91bnJlYWNoYCYjMzk7cyBzaWduYXR1cmUKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjg2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZfVEFCTEVTJiMzNDssCiAgICAmIzM0O05GX1RBQkxFU19JTkVUJiMzNDssCiAgICAmIzM0O05GVF9SRUpFQ1QmIzM0OywKICAgICYjMzQ7TkZUX1JFSkVDVF9JTkVUJiMzNDssCiAgICAmIzM0O05GX1JFSkVDVF9JUFY0JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZfc2VuZF91bnJlYWNoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBuZl9zZW5kX3VucmVhY2hgIHRvIGluaXRpYWxpemUgdGhlIElQdjQgY29udHJvbCBibG9jayAoSVBDQikgd2hlbiBjYWxsZWQgZnJvbSB0aGUgYE5GX0lORVRfSU5HUkVTU2AgaG9vay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldGZpbHRlciBJUHY0IHJlamVjdCBoYW5kbGluZyBsb2dpYywgZml4aW5nIGEgcG90ZW50aWFsIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFjY2Vzcy4gSXQgaXMgcmVhY2hhYmxlIHZpYSB0aGUgbmZ0YWJsZXMgYGluZXRgIGZhbWlseSBpbmdyZXNzIGhvb2suJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX1RBQkxFUyYjMzQ7LAogICAgJiMzNDtORl9UQUJMRVNfSU5FVCYjMzQ7LAogICAgJiMzNDtORlRfUkVKRUNUJiMzNDssCiAgICAmIzM0O05GVF9SRUpFQ1RfSU5FVCYjMzQ7LAogICAgJiMzNDtORl9SRUpFQ1RfSVBWNCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25mX3NlbmRfdW5yZWFjaCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgbmZfc2VuZF91bnJlYWNoYCB0byBpbml0aWFsaXplIHRoZSBJUHY0IGNvbnRyb2wgYmxvY2sgKElQQ0IpIHdoZW4gY2FsbGVkIGZyb20gdGhlIGBORl9JTkVUX0lOR1JFU1NgIGhvb2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXRmaWx0ZXIgSVB2NCByZWplY3QgaGFuZGxpbmcgbG9naWMsIGZpeGluZyBhIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSBhY2Nlc3MuIEl0IGlzIHJlYWNoYWJsZSB2aWEgdGhlIG5mdGFibGVzIGBpbmV0YCBmYW1pbHkgaW5ncmVzcyBob29rLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6MzY6MDcuNjUxNjY5OTgxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA0MzE1MTIwNzE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX1RBQkxFU1wiLFxuICAgIFwiTkZfVEFCTEVTX0lORVRcIixcbiAgICBcIk5GVF9SRUpFQ1RcIixcbiAgICBcIk5GVF9SRUpFQ1RfSU5FVFwiLFxuICAgIFwiTkZfUkVKRUNUX0lQVjRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZl9zZW5kX3VucmVhY2hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgbmZfc2VuZF91bnJlYWNoYCB0byBpbml0aWFsaXplIHRoZSBJUHY0IGNvbnRyb2wgYmxvY2sgKElQQ0IpIHdoZW4gY2FsbGVkIGZyb20gdGhlIGBORl9JTkVUX0lOR1JFU1NgIGhvb2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXRmaWx0ZXIgSVB2NCByZWplY3QgaGFuZGxpbmcgbG9naWMsIGZpeGluZyBhIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSBhY2Nlc3MuIEl0IGlzIHJlYWNoYWJsZSB2aWEgdGhlIG5mdGFibGVzIGBpbmV0YCBmYW1pbHkgaW5ncmVzcyBob29rLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNjowNy42NTE2NzY3OTFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2ODY2Njk4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDBlZmYxYTExMTVhMTZkMjAyZTk2MjM0ODQwMzk5YzBhNWVlNjI3NDdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgNCAxMDozNjowNiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYyBiL25ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jXFxuaW5kZXggNDYyNmRjNDY4MDhmMy4uNDkzM2Y2NTEzOGQ2YiAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuY1xcbisrKyBiL25ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jXFxuQEAgLTM1NSw2ICszNTUsMTIgQEAgdm9pZCBuZl9zZW5kX3VucmVhY2goc3RydWN0IHNrX2J1ZmYgKnNrYl9pbiwgaW50IGNvZGUsIGludCBob29rKVxcbiBcXHRpZiAoIXNrYl9kc3Qoc2tiX2luKSBcXHUwMDI2XFx1MDAyNiBuZl9yZWplY3RfZmlsbF9za2JfZHN0KHNrYl9pbikgXFx1MDAzYyAwKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbitcXHQvKiBJbmV0IGluZ3Jlc3MgcnVucyBiZWZvcmUgSVB2NCBpbml0aWFsaXplcyBJUENCLiAqL1xcbitcXHRpZiAoaG9vayA9PSBORl9JTkVUX0lOR1JFU1MpIHtcXG4rXFx0XFx0bWVtc2V0KElQQ0Ioc2tiX2luKSwgMCwgc2l6ZW9mKCpJUENCKHNrYl9pbikpKTtcXG4rXFx0XFx0SVBDQihza2JfaW4pLVxcdTAwM2VpaWYgPSBza2JfaW4tXFx1MDAzZXNrYl9paWY7XFxuK1xcdH1cXG4rXFxuIFxcdGlmIChza2JfY3N1bV91bm5lY2Vzc2FyeShza2JfaW4pIHx8XFxuIFxcdCAgICAhbmZfcmVqZWN0X3ZlcmlmeV9jc3VtKHNrYl9pbiwgZGF0YW9mZiwgcHJvdG8pKSB7XFxuIFxcdFxcdGljbXBfc2VuZChza2JfaW4sIElDTVBfREVTVF9VTlJFQUNILCBjb2RlLCAwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6MzY6MDguMTIxMzg4ODc3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MjAzODQ1Mzg3MTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX1RBQkxFU1wiLFxuICAgIFwiTkZfVEFCTEVTX0lORVRcIixcbiAgICBcIk5GVF9SRUpFQ1RcIixcbiAgICBcIk5GVF9SRUpFQ1RfSU5FVFwiLFxuICAgIFwiTkZfUkVKRUNUX0lQVjRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZl9zZW5kX3VucmVhY2hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgbmZfc2VuZF91bnJlYWNoYCB0byBpbml0aWFsaXplIHRoZSBJUHY0IGNvbnRyb2wgYmxvY2sgKElQQ0IpIHdoZW4gY2FsbGVkIGZyb20gdGhlIGBORl9JTkVUX0lOR1JFU1NgIGhvb2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXRmaWx0ZXIgSVB2NCByZWplY3QgaGFuZGxpbmcgbG9naWMsIGZpeGluZyBhIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSBhY2Nlc3MuIEl0IGlzIHJlYWNoYWJsZSB2aWEgdGhlIG5mdGFibGVzIGBpbmV0YCBmYW1pbHkgaW5ncmVzcyBob29rLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwZWZmMWExMTE1YTE2ZDIwMmU5NjIzNDg0MDM5OWMwYTVlZTYyNzQ3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgNCAxMDozNjowNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jIGIvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmNcbmluZGV4IDQ2MjZkYzQ2ODA4ZjMuLjQ5MzNmNjUxMzhkNmIgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuY1xuKysrIGIvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmNcbkBAIC0zNTUsNiArMzU1LDEyIEBAIHZvaWQgbmZfc2VuZF91bnJlYWNoKHN0cnVjdCBza19idWZmICpza2JfaW4sIGludCBjb2RlLCBpbnQgaG9vaylcbiBcdGlmICghc2tiX2RzdChza2JfaW4pIFx1MDAyNlx1MDAyNiBuZl9yZWplY3RfZmlsbF9za2JfZHN0KHNrYl9pbikgXHUwMDNjIDApXG4gXHRcdHJldHVybjtcbiBcbitcdC8qIEluZXQgaW5ncmVzcyBydW5zIGJlZm9yZSBJUHY0IGluaXRpYWxpemVzIElQQ0IuICovXG4rXHRpZiAoaG9vayA9PSBORl9JTkVUX0lOR1JFU1MpIHtcbitcdFx0bWVtc2V0KElQQ0Ioc2tiX2luKSwgMCwgc2l6ZW9mKCpJUENCKHNrYl9pbikpKTtcbitcdFx0SVBDQihza2JfaW4pLVx1MDAzZWlpZiA9IHNrYl9pbi1cdTAwM2Vza2JfaWlmO1xuK1x0fVxuK1xuIFx0aWYgKHNrYl9jc3VtX3VubmVjZXNzYXJ5KHNrYl9pbikgfHxcbiBcdCAgICAhbmZfcmVqZWN0X3ZlcmlmeV9jc3VtKHNrYl9pbiwgZGF0YW9mZiwgcHJvdG8pKSB7XG4gXHRcdGljbXBfc2VuZChza2JfaW4sIElDTVBfREVTVF9VTlJFQUNILCBjb2RlLCAwKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM2OjA4LjEyMTM5MTI1N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MTAxODQ5MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOZXRmaWx0ZXIgSVB2NCBSZWplY3QgSGFuZGxpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGluIGBuZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuY2AuIEl0J3MgZm9jdXNlZCBvbiB0aGUgYG5mX3NlbmRfdW5yZWFjaGAgZnVuY3Rpb24sIHdoaWNoIGlzIHRoZSBoZWFydCBvZiBob3cgSVB2NCBwYWNrZXRzIGFyZSByZWplY3RlZCBieSBOZXRmaWx0ZXIuIEZyb20gd2hhdCBJIHNlZSwgdGhlIHBhdGNoIGludHJvZHVjZXMgYSBjb25kaXRpb25hbCBjaGVjazogaXQgdGVzdHMgaWYgdGhlIGBob29rYCB2YXJpYWJsZSBpcyBlcXVhbCB0byBgTkZfSU5FVF9JTkdSRVNTYC4gSWYgdGhhdCBjaGVjayBwYXNzZXMsIGl0IHRoZW4gZ29lcyBvbiB0byBpbml0aWFsaXplIGBJUENCKHNrYl9pbilgLlxuXG5Fc3NlbnRpYWxseSwgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uIHRvIHRoZSBuZXRmaWx0ZXIgSVB2NCByZWplY3QgYmVoYXZpb3IuIEkgbmVlZCB0byBkaWcgaW4gZnVydGhlciB0byBmaWd1cmUgb3V0ICp3aHkqIHRoaXMgaW5pdGlhbGl6YXRpb24gaXMgaGFwcGVuaW5nIHdoZW4gaW5ncmVzcyBwYWNrZXRzIGFyZSBiZWluZyByZWplY3RlZC4gTXkgaW5zdGluY3QgaXMgdGhhdCB0aGlzIGluaXRpYWxpemF0aW9uIGlzIGNydWNpYWwgd2hlbiBpbmdyZXNzIHBhY2tldHMgYXJlIGJlaW5nIHJlamVjdGVkLCBidXQgdGhpcyBpcyBzb21ldGhpbmcgdGhhdCBuZWVkcyBhIGRlZXBlciBsb29rLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGBJUENCKHNrYl9pbilgIHJlcHJlc2VudHMgYW5kIGhvdyBpdHMgaW5pdGlhbGl6YXRpb24gYXQgdGhpcyBwb2ludCBpbXBhY3RzIHRoZSBvdmVyYWxsIGZsb3cgb2YgdGhlIHBhY2tldC4gTGV0J3MgZGVsdmUgaW50byB0aGUgZnVuY3Rpb24gdG8gYmUgY2VydGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIwMywiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM2OjEyLjAzMTU4MDYxN1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDUxMjM1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl9zZW5kX3VucmVhY2hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmM9MzQ0PUVYUE9SVF9TWU1CT0xfR1BMKG5mX3NlbmRfcmVzZXQpO1xcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jLTM0NS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYzozNDY6dm9pZCBuZl9zZW5kX3VucmVhY2goc3RydWN0IHNrX2J1ZmYgKnNrYl9pbiwgaW50IGNvZGUsIGludCBob29rKVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jLTM0Ny17XFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYy0zNzItfVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jOjM3MzpFWFBPUlRfU1lNQk9MX0dQTChuZl9zZW5kX3VucmVhY2gpO1xcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jLTM3NC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6MzY6MTIuMDg2MDk4ODI1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ3MjkwNjczMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgZm9jdXNpbmcgb24gZmlndXJpbmcgb3V0IHRob3NlIGBuZl9zZW5kX3VucmVhY2hgIGNvbmZpZ3VyYXRpb25zOlxuXG4qKkFuYWx5emluZyBgbmZfc2VuZF91bnJlYWNoYCBDb25maWd1cmF0aW9uIFJlcXVpcmVtZW50cyoqXG5cbk9rYXksIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCBjb25maWd1cmF0aW9ucyBhcmUgZXNzZW50aWFsIGZvciBgbmZfc2VuZF91bnJlYWNoYCB0byBmdW5jdGlvbiBwcm9wZXJseS4gTXkgaW1tZWRpYXRlIHRoaW5raW5nIGdvZXMgdG8gdGhlIG5ldHdvcmtpbmcgc3RhY2ssIG5hdHVyYWxseS4gSeKAmW0gc3RhcnRpbmcgd2l0aCB0aGUgYXNzdW1wdGlvbiB0aGF0IHRoaXMgbGlrZWx5IHRvdWNoZXMgdXBvbiB0aGUgTmV0ZmlsdGVyIGZyYW1ld29yaywgc28gdGhlIHN0YW5kYXJkIE5ldGZpbHRlciBtb2R1bGUgbG9hZGluZyBjb25zaWRlcmF0aW9ucyBhcmUgZGVmaW5pdGVseSBvbiB0aGUgcmFkYXIuIEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQgYGlwdGFibGVzYCBvciBgbmZ0YWJsZXNgIChkZXBlbmRpbmcgb24gdGhlIHN5c3RlbSwgb2YgY291cnNlKSBhcmUgY29uZmlndXJlZCBjb3JyZWN0bHkgYW5kIHRoYXQgdGhlIG5lY2Vzc2FyeSBOZXRmaWx0ZXIgbW9kdWxlcyBhcmUgbG9hZGVkLiBBbnkgcHJlLXJlcXVpc2l0ZXMgZm9yIHRoZSB0YXJnZXQgY29uZmlndXJhdGlvbiAoZS5nLiwgc3BlY2lmaWMga2VybmVsIHZlcnNpb25zLCBmZWF0dXJlcyBlbmFibGVkIGR1cmluZyBjb21waWxhdGlvbikgYXJlIGtleSBjb25zaWRlcmF0aW9ucywgb2YgY291cnNlLCBhcyB3ZWxsLlxuXG5J4oCZbSBhbHNvIGFzc3VtaW5nIHRoYXQgdGhlIHNwZWNpZmljICpiZWhhdmlvciogb2YgYG5mX3NlbmRfdW5yZWFjaGAgaXMgY29udGV4dC1kZXBlbmRlbnQuIFdoYXQgdHJpZ2dlcnMgaXRzIHVzZT8gV2hhdCBraW5kIG9mIElDTVAgbWVzc2FnZSBnZXRzIHNlbnQgYmFjaz8gS25vd2luZyBob3cgdGhlIGFwcGxpY2F0aW9uLCBvciB0aGUgc3lzdGVtLCAqdXNlcyogYG5mX3NlbmRfdW5yZWFjaGAgaXMgZ29pbmcgdG8gYmUgdml0YWwgdG8gdW5kZXJzdGFuZGluZyBpdHMgZGVwZW5kZW5jaWVzLiBBcmUgdGhlcmUgc3BlY2lmaWMgcm91dGluZyB0YWJsZXMgaXQgaW50ZXJhY3RzIHdpdGg/IEFueSBpbnRlcmFjdGlvbnMgd2l0aCBjb25uZWN0aW9uIHRyYWNraW5nIChjb25udHJhY2spPyBUaGlzIHdpbGwgcmVxdWlyZSBhIGRlZXAgZGl2ZSB0byBpZGVudGlmeSBhbGwgdGhlIHBvc3NpYmlsaXRpZXMsIG9mIGNvdXJzZS5cblxuQmV5b25kIHRoZSBpbW1lZGlhdGUgY29uZmlndXJhdGlvbiwgSSBuZWVkIHRvIHRoaW5rIGFib3V0IHBvdGVudGlhbCBpbnRlcmFjdGlvbnMgd2l0aCBvdGhlciBrZXJuZWwgbW9kdWxlcy4gQXJlIHRoZXJlIGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIgbmV0d29yayBpbnRlcmZhY2VzIG9yIHN1YnN5c3RlbXM/IEFyZSB0aGVyZSBhbnkga25vd24gY29tcGF0aWJpbGl0eSBpc3N1ZXMgd2l0aCBvdGhlciBmZWF0dXJlcywgbGlrZSBOQVQgb3IgVlBOcz8gVGhlIGJyb2FkZXIgY29udGV4dCBtYXR0ZXJzLiBJIG5lZWQgdG8gdHJlYXQgdGhpcyBhcyBtb3JlIHRoYW4ganVzdCBhIHNwZWNpZmljIG1vZHVsZSBjb25maWd1cmF0aW9uOyBpdCdzIGEgcGFydCBvZiB0aGUgb3ZlcmFsbCBuZXR3b3JrIGFyY2hpdGVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjgwOCwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM2OjE2LjU1OTAwODc2N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTA5MzQzNDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfc2VuZF91bnJlYWNoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYz0zMT1yZWplY3RfdGcoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYy0zNy1cXHRjYXNlIElQVF9JQ01QX05FVF9VTlJFQUNIQUJMRTpcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jOjM4OlxcdFxcdG5mX3NlbmRfdW5yZWFjaChza2IsIElDTVBfTkVUX1VOUkVBQ0gsIGhvb2spO1xcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtMzktXFx0XFx0YnJlYWs7XFxubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYy00MC1cXHRjYXNlIElQVF9JQ01QX0hPU1RfVU5SRUFDSEFCTEU6XFxubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYzo0MTpcXHRcXHRuZl9zZW5kX3VucmVhY2goc2tiLCBJQ01QX0hPU1RfVU5SRUFDSCwgaG9vayk7XFxubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYy00Mi1cXHRcXHRicmVhaztcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jLTQzLVxcdGNhc2UgSVBUX0lDTVBfUFJPVF9VTlJFQUNIQUJMRTpcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jOjQ0OlxcdFxcdG5mX3NlbmRfdW5yZWFjaChza2IsIElDTVBfUFJPVF9VTlJFQUNILCBob29rKTtcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jLTQ1LVxcdFxcdGJyZWFrO1xcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtNDYtXFx0Y2FzZSBJUFRfSUNNUF9QT1JUX1VOUkVBQ0hBQkxFOlxcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmM6NDc6XFx0XFx0bmZfc2VuZF91bnJlYWNoKHNrYiwgSUNNUF9QT1JUX1VOUkVBQ0gsIGhvb2spO1xcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtNDgtXFx0XFx0YnJlYWs7XFxubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYy00OS1cXHRjYXNlIElQVF9JQ01QX05FVF9QUk9ISUJJVEVEOlxcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmM6NTA6XFx0XFx0bmZfc2VuZF91bnJlYWNoKHNrYiwgSUNNUF9ORVRfQU5PLCBob29rKTtcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jLTUxLVxcdFxcdGJyZWFrO1xcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtNTItXFx0Y2FzZSBJUFRfSUNNUF9IT1NUX1BST0hJQklURUQ6XFxubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYzo1MzpcXHRcXHRuZl9zZW5kX3VucmVhY2goc2tiLCBJQ01QX0hPU1RfQU5PLCBob29rKTtcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jLTU0LVxcdFxcdGJyZWFrO1xcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtNTUtXFx0Y2FzZSBJUFRfSUNNUF9BRE1JTl9QUk9ISUJJVEVEOlxcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmM6NTY6XFx0XFx0bmZfc2VuZF91bnJlYWNoKHNrYiwgSUNNUF9QS1RfRklMVEVSRUQsIGhvb2spO1xcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtNTctXFx0XFx0YnJlYWs7XFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYz0zNDQ9RVhQT1JUX1NZTUJPTF9HUEwobmZfc2VuZF9yZXNldCk7XFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMtMzQ1LVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jOjM0Njp2b2lkIG5mX3NlbmRfdW5yZWFjaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luLCBpbnQgY29kZSwgaW50IGhvb2spXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMtMzQ3LXtcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jLTM3Mi19XFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmM6MzczOkVYUE9SVF9TWU1CT0xfR1BMKG5mX3NlbmRfdW5yZWFjaCk7XFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMtMzc0LVxcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaXB2NC5jPTE5PXN0YXRpYyB2b2lkIG5mdF9yZWplY3RfaXB2NF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZnRfcmVqZWN0X2lwdjQuYy0yNi1cXHRjYXNlIE5GVF9SRUpFQ1RfSUNNUF9VTlJFQUNIOlxcbm5ldC9pcHY0L25ldGZpbHRlci9uZnRfcmVqZWN0X2lwdjQuYzoyNzpcXHRcXHRuZl9zZW5kX3VucmVhY2gocGt0LVxcdTAwM2Vza2IsIHByaXYtXFx1MDAzZWljbXBfY29kZSwgbmZ0X2hvb2socGt0KSk7XFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaXB2NC5jLTI4LVxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmM9MzU9cmVqZWN0X3RnNihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXFxuLS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYy00MS1cXHRjYXNlIElQNlRfSUNNUDZfTk9fUk9VVEU6XFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmM6NDI6XFx0XFx0bmZfc2VuZF91bnJlYWNoNihuZXQsIHNrYiwgSUNNUFY2X05PUk9VVEUsIHh0X2hvb2tudW0ocGFyKSk7XFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNDMtXFx0XFx0YnJlYWs7XFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNDQtXFx0Y2FzZSBJUDZUX0lDTVA2X0FETV9QUk9ISUJJVEVEOlxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jOjQ1OlxcdFxcdG5mX3NlbmRfdW5yZWFjaDYobmV0LCBza2IsIElDTVBWNl9BRE1fUFJPSElCSVRFRCxcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYy00Ni1cXHRcXHRcXHRcXHQgeHRfaG9va251bShwYXIpKTtcXG4tLVxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jLTQ4LVxcdGNhc2UgSVA2VF9JQ01QNl9OT1RfTkVJR0hCT1VSOlxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jOjQ5OlxcdFxcdG5mX3NlbmRfdW5yZWFjaDYobmV0LCBza2IsIElDTVBWNl9OT1RfTkVJR0hCT1VSLFxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jLTUwLVxcdFxcdFxcdFxcdCB4dF9ob29rbnVtKHBhcikpO1xcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNTItXFx0Y2FzZSBJUDZUX0lDTVA2X0FERFJfVU5SRUFDSDpcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYzo1MzpcXHRcXHRuZl9zZW5kX3VucmVhY2g2KG5ldCwgc2tiLCBJQ01QVjZfQUREUl9VTlJFQUNILFxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jLTU0LVxcdFxcdFxcdFxcdCB4dF9ob29rbnVtKHBhcikpO1xcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNTYtXFx0Y2FzZSBJUDZUX0lDTVA2X1BPUlRfVU5SRUFDSDpcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYzo1NzpcXHRcXHRuZl9zZW5kX3VucmVhY2g2KG5ldCwgc2tiLCBJQ01QVjZfUE9SVF9VTlJFQUNILFxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jLTU4LVxcdFxcdFxcdFxcdCB4dF9ob29rbnVtKHBhcikpO1xcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNjYtXFx0Y2FzZSBJUDZUX0lDTVA2X1BPTElDWV9GQUlMOlxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jOjY3OlxcdFxcdG5mX3NlbmRfdW5yZWFjaDYobmV0LCBza2IsIElDTVBWNl9QT0xJQ1lfRkFJTCwgeHRfaG9va251bShwYXIpKTtcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYy02OC1cXHRcXHRicmVhaztcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYy02OS1cXHRjYXNlIElQNlRfSUNNUDZfUkVKRUNUX1JPVVRFOlxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jOjcwOlxcdFxcdG5mX3NlbmRfdW5yZWFjaDYobmV0LCBza2IsIElDTVBWNl9SRUpFQ1RfUk9VVEUsXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNzEtXFx0XFx0XFx0XFx0IHh0X2hvb2tudW0ocGFyKSk7XFxuLS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjYuYz00MTI9c3RhdGljIGJvb2wgcmVqZWN0Nl9jc3VtX29rKHN0cnVjdCBza19idWZmICpza2IsIGludCBob29rKVxcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY2LmMtNDMzLVxcbm5ldC9pcHY2L25ldGZpbHRlci9uZl9yZWplY3RfaXB2Ni5jOjQzNDp2b2lkIG5mX3NlbmRfdW5yZWFjaDYoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luLFxcbm5ldC9pcHY2L25ldGZpbHRlci9uZl9yZWplY3RfaXB2Ni5jLTQzNS1cXHRcXHQgICAgICB1bnNpZ25lZCBjaGFyIGNvZGUsIHVuc2lnbmVkIGludCBob29rbnVtKVxcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY2LmMtNDQ3LX1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjYuYzo0NDg6RVhQT1JUX1NZTUJPTF9HUEwobmZfc2VuZF91bnJlYWNoNik7XFxubmV0L2lwdjYvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY2LmMtNDQ5LVxcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL25mdF9yZWplY3RfaXB2Ni5jPTE5PXN0YXRpYyB2b2lkIG5mdF9yZWplY3RfaXB2Nl9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcXG4tLVxcbm5ldC9pcHY2L25ldGZpbHRlci9uZnRfcmVqZWN0X2lwdjYuYy0yNi1cXHRjYXNlIE5GVF9SRUpFQ1RfSUNNUF9VTlJFQUNIOlxcbm5ldC9pcHY2L25ldGZpbHRlci9uZnRfcmVqZWN0X2lwdjYuYzoyNzpcXHRcXHRuZl9zZW5kX3VucmVhY2g2KG5mdF9uZXQocGt0KSwgcGt0LVxcdTAwM2Vza2IsIHByaXYtXFx1MDAzZWljbXBfY29kZSxcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pcHY2LmMtMjgtXFx0XFx0XFx0XFx0IG5mdF9ob29rKHBrdCkpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYz0xNz1zdGF0aWMgdm9pZCBuZnRfcmVqZWN0X2luZXRfZXZhbChjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jLTI2LVxcdFxcdGNhc2UgTkZUX1JFSkVDVF9JQ01QX1VOUkVBQ0g6XFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYzoyNzpcXHRcXHRcXHRuZl9zZW5kX3VucmVhY2gocGt0LVxcdTAwM2Vza2IsIHByaXYtXFx1MDAzZWljbXBfY29kZSxcXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jLTI4LVxcdFxcdFxcdFxcdFxcdG5mdF9ob29rKHBrdCkpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy0zNC1cXHRcXHRjYXNlIE5GVF9SRUpFQ1RfSUNNUFhfVU5SRUFDSDpcXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jOjM1OlxcdFxcdFxcdG5mX3NlbmRfdW5yZWFjaChwa3QtXFx1MDAzZXNrYixcXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jLTM2LVxcdFxcdFxcdFxcdFxcdG5mdF9yZWplY3RfaWNtcF9jb2RlKHByaXYtXFx1MDAzZWljbXBfY29kZSksXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jLTQzLVxcdFxcdGNhc2UgTkZUX1JFSkVDVF9JQ01QX1VOUkVBQ0g6XFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYzo0NDpcXHRcXHRcXHRuZl9zZW5kX3VucmVhY2g2KG5mdF9uZXQocGt0KSwgcGt0LVxcdTAwM2Vza2IsXFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy00NS1cXHRcXHRcXHRcXHRcXHQgcHJpdi1cXHUwMDNlaWNtcF9jb2RlLCBuZnRfaG9vayhwa3QpKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmMtNTEtXFx0XFx0Y2FzZSBORlRfUkVKRUNUX0lDTVBYX1VOUkVBQ0g6XFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYzo1MjpcXHRcXHRcXHRuZl9zZW5kX3VucmVhY2g2KG5mdF9uZXQocGt0KSwgcGt0LVxcdTAwM2Vza2IsXFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy01My1cXHRcXHRcXHRcXHRcXHQgbmZ0X3JlamVjdF9pY21wdjZfY29kZShwcml2LVxcdTAwM2VpY21wX2NvZGUpLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNjoxNi42Njk5NDgwMTRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTEyNzU1MzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUgd2hhdCdzIG9uIG15IG1pbmQgcmVnYXJkaW5nIHRoaXMgYG5mX3NlbmRfdW5yZWFjaGAgZnVuY3Rpb24uXG5cbioqQW5hbHl6aW5nIGBuZl9zZW5kX3VucmVhY2hgIFVzYWdlKipcblxuUmlnaHQsIHNvIHRoaXMgYG5mX3NlbmRfdW5yZWFjaGAgZnVuY3Rpb24gaGFzIGJlZW4gZXhwb3J0ZWQgYW5kLCBpbXBvcnRhbnRseSwgaXQncyBiZWluZyAqdXNlZCogaW4gYGlwdF9SRUpFQ1QuY2AsIGBuZnRfcmVqZWN0X2lwdjQuY2AsIGFuZCBgbmZ0X3JlamVjdF9pbmV0LmNgLiBUaGF0J3MgdGhlIGtleS4gS25vd2luZyB3aGVyZSBpdCdzICp1c2VkKiBnaXZlcyBhIHNpZ25pZmljYW50IGluc2lnaHQuIFRoaXMgbWVhbnMgaXQncyBwcmV0dHkgY29yZSB0byBzZW5kaW5nIFwidW5yZWFjaGFibGVcIiBJQ01QL1RDUCByZXNwb25zZXMgaW4gdGhvc2UgbmV0d29yayBmaWx0ZXJpbmcgY29udGV4dHMuIE5vdywgc2luY2UgSSdtIHRyeWluZyB0byB3cmFwIG15IGhlYWQgYXJvdW5kIHRoaXMsIHRoZSBsb2dpY2FsIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIGBuZl9yZWplY3RfaXB2NC5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBmdW5jdGlvbidzIHBhcmFtZXRlcnMgYXJlIHNldCwgb3IgbWF5YmUgaG93IGl0IGludGVncmF0ZXMgd2l0aCB0aGUgdW5kZXJseWluZyBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5NDEsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNjoyMS41ODI3MDcyMDNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUyNTgwNjMzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mX3JlamVjdF9pcHY0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L25ldGZpbHRlci9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9uZXRmaWx0ZXIvTWFrZWZpbGU9MTA9b2JqLSQoQ09ORklHX05GX1RQUk9YWV9JUFY0KSArPSBuZl90cHJveHlfaXB2NC5vXFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTItIyByZWplY3RcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTM6b2JqLSQoQ09ORklHX05GX1JFSkVDVF9JUFY0KSArPSBuZl9yZWplY3RfaXB2NC5vXFxubmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlLTE0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNjoyMS44MzUyOTM2OTZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjMwNzg3MDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIGEgTmV0d29yayBGaWx0ZXJpbmcgQ29uZmlndXJhdGlvbiBSZXF1aXJlbWVudCoqXG5cblJpZ2h0LCBzbyBJIHNlZSB0aGlzIGBDT05GSUdfTkZfUkVKRUNUX0lQVjRgIGZsYWcgaXMgc2hvd2luZyB1cC4gT2J2aW91c2x5LCB0aGF0IHN1Z2dlc3RzIHdlIG5lZWQgdGhlIElQdjQgbmV0ZmlsdGVyIHJlamVjdCBmdW5jdGlvbmFsaXR5IGVuYWJsZWQuIEJlZm9yZSBJIGdvIHRvbyBkZWVwLCBJIHNob3VsZCBjb25maXJtIGV4YWN0bHkgd2hlcmUgdGhpcyBvcHRpb24gaXMgZGVmaW5lZCBhbmQgaG93IGl0IHJlbGF0ZXMgdG8gdGhlIHJlc3Qgb2YgdGhlIG5ldGZpbHRlciBjb25maWd1cmF0aW9uLiBMZXQncyBkaXZlIHN0cmFpZ2h0IGludG8gYG5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnYC4gVGhhdCdzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIGNoZWNrIGZvciBgTkZfUkVKRUNUX0lQVjRgIGFuZCBpdHMgZGVwZW5kZW5jaWVzLiBUaGlzIEtjb25maWcgZmlsZSB3aWxsIGdpdmUgbWUgdGhlIGNsZWFyZXN0IHBpY3R1cmUgb2Ygd2hhdCB0aGlzIGZsYWcgYWN0dWFsbHkgY29udHJvbHMgYW5kIHdoYXQgb3RoZXIgb3B0aW9ucyBtaWdodCBuZWVkIHRvIGJlIGNvbnNpZGVyZWQgb3IgYWRqdXN0ZWQgYWxvbmdzaWRlIGl0LiBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgaW1wbGljYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MzQ5LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6MzY6MjUuMDY2MDgyNjc3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NzY1MTM1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZfUkVKRUNUX0lQVjRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc9ODc9Y29uZmlnIE5GX0xPR19JUFY0XFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy05NC1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZzo5NTpjb25maWcgTkZfUkVKRUNUX0lQVjRcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy05Ni1cXHR0cmlzdGF0ZSBcXFwiSVB2NCBwYWNrZXQgcmVqZWN0aW9uXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNjoyNS4xNTM3Mzk0ODRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE1NDI1OTgwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IERlY2lwaGVyaW5nIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIEknbSBkaXZpbmcgaW4uIFRoZSBwcmltYXJ5IHF1ZXN0aW9uIGhlcmUgaXM6IHdoYXQgZmFjdG9ycyBhcmUgZHJpdmluZyB0aGlzIHNlbGVjdGlvbj8gV2hhdCBtZWNoYW5pc21zLCBwcm9jZXNzZXMsIG9yIGNvbmRpdGlvbnMgYXJlIGF0IHBsYXk/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMuIElzIHRoaXMgYSBtYXR0ZXIgb2YgaW5pdGlhbCBjb25kaXRpb25zLCBvciBpcyB0aGVyZSBzb21lIGZlZWRiYWNrIGxvb3AgYXQgcGxheT8gUGVyaGFwcyB0aGVyZSdzIGEgc3BlY2lmaWMgdHJpZ2dlciBvciBhIGNhc2NhZGUgb2YgZXZlbnRzIGxlYWRpbmcgdG8gdGhpcyBcInNlbGVjdGlvblwiIHRoYXQgSSBuZWVkIHRvIGlkZW50aWZ5LiBNeSBhcHByb2FjaCBoZXJlIGhhcyB0byBzdGFydCB3aXRoIHRyYWNpbmcgdGhlIGNhdXNlLWVmZmVjdCByZWxhdGlvbnNoaXBzLiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgbG9va2luZyBmb3IgYW55IGltbWVkaWF0ZSBjb3JyZWxhdGlvbnMgYW5kIGdvIGZyb20gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3MDAsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNjoyOC4zMDgwMDIyMjdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzODU2NzkyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgTkZfUkVKRUNUX0lQVjRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZz00Mj1jb25maWcgTkZUX1JFSkVDVF9JUFY0XFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc6NDM6XFx0c2VsZWN0IE5GX1JFSkVDVF9JUFY0XFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctNDQtXFx0ZGVmYXVsdCBORlRfUkVKRUNUXFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZz0xOTU9Y29uZmlnIElQX05GX1RBUkdFVF9SRUpFQ1RcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTE5Ny1cXHRkZXBlbmRzIG9uIElQX05GX0ZJTFRFUiB8fCBORlRfQ09NUEFUXFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc6MTk4OlxcdHNlbGVjdCBORl9SRUpFQ1RfSVBWNFxcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTE5OS1cXHRkZWZhdWx0IG0gaWYgTkVURklMVEVSX0FEVkFOQ0VEPW5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6MzY6MjguNDQ2NTc1MTczWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwOTQwODY2NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgUmVqZWN0IFRhcmdldCBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIEkgc2VlIHRoYXQgYENPTkZJR19JUF9ORl9UQVJHRVRfUkVKRUNUYCBhbmQgYENPTkZJR19ORlRfUkVKRUNUX0lQVjRgIGFyZSB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIHRoYXQgZW5hYmxlIHRoaXMgXCJyZWplY3RcIiBmdW5jdGlvbmFsaXR5LiBNeSBuZXh0IHN0ZXAsIGFzIGFsd2F5cywgaXMgdG8gZGlnIGludG8gdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZXMuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBgbmV0L25ldGZpbHRlci9LY29uZmlnYCBmaWxlLiBJJ20gbG9va2luZyBmb3IgZWl0aGVyIGBORlRfUkVKRUNUX0lORVRgIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBhcyB0aGF0J3MgcHJvYmFibHkgdGhlIHRvcC1sZXZlbCBvcHRpb24gcmVsYXRlZCB0byB0aGUgbW9yZSBtb2Rlcm4gbmZ0YWJsZXMtYmFzZWQgcmVqZWN0IG1vZHVsZS4gSXQncyB0aW1lIHRvIGNvbmZpcm0gaG93IHRoZXNlIGNvbmZpZ3VyYXRpb25zIGFsbCBmaXQgdG9nZXRoZXIsIGFuZCBob3cgdGhlIGtlcm5lbCBoYW5kbGVzIHRoZSByZWplY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwODIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNjozMS41NDA2NjQ3ODhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNTQ4MDg2NywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IE5GX1JFSkVDVF9JUFY0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6MzY6MzEuNjU2MTUyNDU1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxODcyNzYxNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipOYXZpZ2F0aW5nIHRoZSBLY29uZmlnIExhYnlyaW50aCoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgd2FzIGdvaW5nIGRvd24gYSBwYXRoLCBidXQgSSBuZWVkIHRvIHBhdXNlIGFuZCBkb3VibGUtY2hlY2sgc29tZXRoaW5nLiBUaGUgcG90ZW50aWFsIHByb2JsZW0gbGlrZWx5IHJlc3RzIHNvbWV3aGVyZSBlbHNlLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBjb25zaWRlciBgTkZUX1JFSkVDVF9JTkVUYCBpbiBgbmV0L25ldGZpbHRlci9LY29uZmlnYC4gSXQncyBhIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbiBpbiB0aGUgbmV0ZmlsdGVyIHN1YnN5c3RlbSwgYW5kIGl0IGhhcyB0aGUgcG90ZW50aWFsIHRvIGluZmx1ZW5jZSB0aGUgYmVoYXZpb3IgSSdtIHNlZWluZy4gQ291bGQgaXQgYmUgc3VidGx5IGVuYWJsaW5nIG9yIHNlbGVjdGluZyBzb21ldGhpbmcgdGhhdCdzIGNhdXNpbmcgdGhlIGlzc3VlPyBJIG5lZWQgdG8gZ28gYmFjayBhbmQgdHJhY2UgdGhlIGRlcGVuZGVuY2llcywgZW5zdXJlIGl0J3Mgbm90IHB1bGxpbmcgaW4gc29tZXRoaW5nIHVuZXhwZWN0ZWQgdGhhdCBleHBsYWlucyB0aGUgb3V0Y29tZS4gSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCBJIGRpZG4ndCBnbG9zcyBvdmVyIHRoaXMgaW4gbXkgaW5pdGlhbCBzY2FuLiBCZXR0ZXIgdG8gYmUgY2VydGFpbiwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCB0aGUgaW50cmljYWNpZXMgb2YgbmV0ZmlsdGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MzQ5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6MzY6MzQuODQzNDMxNTc3WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDUwNzEzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZUX1JFSkVDVF9JTkVUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9NTc4PWNvbmZpZyBORlRfUkVKRUNUXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNTg1LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo1ODY6Y29uZmlnIE5GVF9SRUpFQ1RfSU5FVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy01ODctXFx0ZGVwZW5kcyBvbiBORl9UQUJMRVNfSU5FVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNjozNC44OTM5NDQ4MzVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEzNjYyMjc0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5J3JlIG15IG93bjpcblxuKipBbmFseXppbmcgdGhlIFNlbGVjdGlvbiBDcml0ZXJpYSBmb3IgYE5GVF9SRUpFQ1RfSU5FVGAqKlxuXG5BbHJpZ2h0LCBteSBicmFpbidzIGtpY2tpbmcgaW4g4oCTIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgZXhhY3RseSB0aGUgc2VsZWN0aW9uIHByb2Nlc3MgaXMgZm9yIGBORlRfUkVKRUNUX0lORVRgLiBJJ20gZ29pbmcgdG8gc3RhcnQgZGlnZ2luZyBpbnRvIHRoYXQgZGVmaW5pdGlvbiwgZmlndXJpbmcgb3V0IHdoYXQgY29uZGl0aW9ucyBvciBjcml0ZXJpYSBhcmUgYmVpbmcgdXNlZC4gV2hhdCdzIGl0IGZpbHRlcmluZyBvbj8gSXMgaXQgcHJvdG9jb2wtc3BlY2lmaWM/IERvZXMgaXQgbG9vayBhdCBzb3VyY2UvZGVzdGluYXRpb24gSVAgYWRkcmVzc2VzLCBwb3J0cywgb3RoZXIgbWV0YWRhdGE/IEkgbmVlZCBhIGNsZWFyIG1lbnRhbCBtb2RlbCBvZiBob3cgdGhpcyByZWplY3Rpb24gZnVuY3Rpb24gbWFrZXMgaXRzIGRlY2lzaW9ucy4gVW5kZXJzdGFuZGluZyB0aGUgc2VsZWN0aW9uIGxvZ2ljIGlzIGtleSB0byBlZmZlY3RpdmVseSB0cm91Ymxlc2hvb3Rpbmcgb3IgY29uZmlndXJpbmcgbmV0d29yayBwb2xpY2llcyByZWxhdGVkIHRvIHRoaXMgcGFydGljdWxhciBmZWF0dXJlLiBUaW1lIHRvIGdldCBpbnRvIHRoZSBkZXRhaWxzLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2ODUsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNjozOC4wMzA1NzA2NDlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5Mzc2OTI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5GVF9SRUpFQ1RfSU5FVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTU3OD1jb25maWcgTkZUX1JFSkVDVFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTU4NS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NTg2OmNvbmZpZyBORlRfUkVKRUNUX0lORVRcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNTg3LVxcdGRlcGVuZHMgb24gTkZfVEFCTEVTX0lORVRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6MzY6MzguMDc5OTU2NzQ3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2MTA3MjI0NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHByb2Nlc3NpbmcgdGhlIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgYE5GVF9SRUpFQ1RfSU5FVGA6XG5cbioqRGl2aW5nIGludG8gYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AgYW5kIGBORlRfUkVKRUNUX0lORVRgKipcblxuT2theSwgdGltZSB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBuZXRmaWx0ZXIgaW5mcmFzdHJ1Y3R1cmUsIHNwZWNpZmljYWxseSB0aGUgcmVqZWN0aW9uIG1lY2hhbmlzbSB3aXRoaW4gdGhlIG5ldyBmaWx0ZXJpbmcgZnJhbWV3b3JrLCBuZnRhYmxlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSByZWplY3QgZnVuY3Rpb25hbGl0eSBpcyBleHBvc2VkIHRvIHRoZSB1c2VyLCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgaXQgaGFzLiBMZXQncyBzZWUuLi4gSSdsbCBzdGFydCB3aXRoIHRoZSBmaWxlIHBhdGggeW91J3ZlIGdpdmVuIG1lOiBgbmV0L25ldGZpbHRlci9LY29uZmlnYC4gUmlnaHQsIHRoZSBLY29uZmlnIGZpbGUgc2hvdWxkIGRlZmluZSB0aGUgZGVwZW5kZW5jaWVzIGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLCB0aGlzIGlzIGdvb2QuXG5cbkknbSB6ZXJvaW5nIGluIG9uIGBORlRfUkVKRUNUX0lORVRgLCBhbmQgdGhhdCBwcm9iYWJseSBtZWFucyB0aGlzIGlzIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiBmb3IgdGhlIHJlamVjdCB0YXJnZXQgdGhhdCdzIGRlc2lnbmVkIHRvIHdvcmsgd2l0aCBhbGwgaW50ZXJuZXQgcHJvdG9jb2wgZmFtaWxpZXMsIElQdjQgYW5kIElQdjYuIFRoaXMgaXMga2V5LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGRlcGVuZGVuY2llcy4gQXJlIHRoZXJlIGFueSBvdGhlciByZXF1aXJlZCBvcHRpb25zPyBEb2VzIHRoaXMgdGllIGludG8gdGhlIGNvcmUgbmZ0YWJsZXMgY29tcG9uZW50cyBsaWtlIGBORVRGSUxURVJfWFRfVEFSR0VUX05GUVVFVUVgIG9yIGlzIGl0IGluZGVwZW5kZW50PyBJIGV4cGVjdCBpdCdsbCBkZXBlbmQgb24gdGhlIGJhc2ljIG5mdGFibGVzIGZlYXR1cmVzIGJlaW5nIGVuYWJsZWQuIEkgbmVlZCB0byB0cmFjZSB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgb3B0aW9uLiBJcyBpdCBlbmFibGVkIGJ5IGRlZmF1bHQsIG9yIGlzIGl0IGEgbW9kdWxhciBmZWF0dXJlPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIG9yIGRpc2FibGluZyBpdCBhdCBjb21waWxlIHRpbWU/IERvZXMgaXQgcmVxdWlyZSBhbnkgb3RoZXIga2VybmVsIHN1YnN5c3RlbXMgdG8gYmUgYnVpbHQ/IFRoaXMgd291bGQgYWZmZWN0IHN5c3RlbSBwZXJmb3JtYW5jZSBzbyB0aGlzIGlzIGltcG9ydGFudC5cblxuSSBuZWVkIHRvIHNlZSBpZiBpdCBtYWtlcyBhIGRpZmZlcmVuY2UgdG8gYW55IGtlcm5lbCBiZWhhdmlvciBvciBpZiBpdCBzaW1wbHkgdG9nZ2xlcyBjb21waWxhdGlvbi4gSXMgdGhpcyB0aWVkIHRvIGFueSBzcGVjaWZpYyBkZXZpY2UgY29uZmlndXJhdGlvbj9cblxuU28gZmFyIHNvIGdvb2QuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIHBpY3R1cmUgb2YgaG93IHRoZSByZWplY3QgdGFyZ2V0IGluIG5mdGFibGVzIGlzIGNvbmZpZ3VyZWQgYW5kIGl0cyByb2xlIGluIHRoZSBrZXJuZWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc5ODIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNjo0Mi42OTA2ODkxMDZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYxMDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA1ODAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1ODA6XFx0XFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBuZl90YWJsZXMgcmVqZWN0IHN1cHBvcnRcXFwiXFxuIDU4MTpcXHRcXHRoZWxwXFxuIDU4MjpcXHRcXHQgIFRoaXMgb3B0aW9uIGFkZHMgdGhlIFxcXCJyZWplY3RcXFwiIGV4cHJlc3Npb24gdGhhdCB5b3UgY2FuIHVzZSB0b1xcbiA1ODM6XFx0XFx0ICBleHBsaWNpdGx5IGRlbnkgYW5kIG5vdGlmeSB2aWEgVENQIHJlc2V0L0lDTVAgaW5mb3JtYXRpb25hbCBlcnJvcnNcXG4gNTg0OlxcdFxcdCAgdW5hbGxvd2VkIHRyYWZmaWMuXFxuIDU4NTpcXHRcXG4gNTg2OlxcdGNvbmZpZyBORlRfUkVKRUNUX0lORVRcXG4gNTg3OlxcdFxcdGRlcGVuZHMgb24gTkZfVEFCTEVTX0lORVRcXG4gNTg4OlxcdFxcdGRlZmF1bHQgTkZUX1JFSkVDVFxcbiA1ODk6XFx0XFx0dHJpc3RhdGVcXG4gNTkwOlxcdFxcbiA1OTE6XFx0Y29uZmlnIE5GVF9DT01QQVRcXG4gNTkyOlxcdFxcdGRlcGVuZHMgb24gTkVURklMVEVSX1hUQUJMRVNcXG4gNTkzOlxcdFxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgeF90YWJsZXMgb3ZlciBuZl90YWJsZXMgbW9kdWxlXFxcIlxcbiA1OTQ6XFx0XFx0aGVscFxcbiA1OTU6XFx0XFx0ICBUaGlzIGlzIHJlcXVpcmVkIGlmIHlvdSBpbnRlbmQgdG8gdXNlIGFueSBvZiBleGlzdGluZ1xcbiA1OTY6XFx0XFx0ICB4X3RhYmxlcyBtYXRjaC90YXJnZXQgZXh0ZW5zaW9ucyBvdmVyIHRoZSBuZl90YWJsZXNcXG4gNTk3OlxcdFxcdCAgZnJhbWV3b3JrLlxcbiA1OTg6XFx0XFxuIDU5OTpcXHRjb25maWcgTkZUX0hBU0hcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6MzY6NDIuNjkwODUyOTY2WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMjg0Nzk3MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBORlRhYmxlcyBhbmQgSVAgUmVqZWN0IEJlaGF2aW9yKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBORlRfUkVKRUNUX0lORVRgIHRoaW5nLCBhbmQgc29tZXRoaW5nIGlzbid0IHF1aXRlIGNsaWNraW5nLiBJIHdhcyB1bmRlciB0aGUgaW1wcmVzc2lvbiB0aGF0IGl0IHdvdWxkIGF1dG9tYXRpY2FsbHkgaGFuZGxlIGBORl9SRUpFQ1RfSVBWNGAsIGJ1dCBpdCBzZWVtcyB0aGF0J3Mgbm90IHRoZSBjYXNlLiBMZXQgbWUgZG91YmxlLWNoZWNrIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgYWxsIGludGVncmF0ZXMuIFJpZ2h0LCBzbyBgTkZUX1JFSkVDVF9JTkVUYCBsZXZlcmFnZXMgYG5mX3NlbmRfdW5yZWFjaGAsIHdoaWNoLCBhcyBJIHJlY2FsbCwgaXMgaW1wbGVtZW50ZWQgd2l0aGluIGBuZl9yZWplY3RfaXB2NC5jYC4gVGhhdCBtYWtlcyBtb3JlIHNlbnNlIG5vdy4gVG8gYmUgYWJzb2x1dGVseSBzdXJlIEkndmUgZ290IHRoZSBidWlsZCBjb25maWd1cmF0aW9uIHJpZ2h0LCBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgdGhlIE5ldGZpbHRlciBNYWtlZmlsZS4gVGltZSB0byB2ZXJpZnkgd2hhdCBnZXRzIGJ1aWx0IGFuZCBob3cgdGhlc2UgbW9kdWxlcyBhcmUgbGlua2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NzA0LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNjo0Ni45MTkzMzU0MjdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNDU4MjI5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZnRfcmVqZWN0X2luZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTExOD1vYmotJChDT05GSUdfTkZUX1JFSkVDVCkgXFx0Kz0gbmZ0X3JlamVjdC5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZToxMTk6b2JqLSQoQ09ORklHX05GVF9SRUpFQ1RfSU5FVClcXHQrPSBuZnRfcmVqZWN0X2luZXQub1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTIwLW9iai0kKENPTkZJR19ORlRfUkVKRUNUX05FVERFVilcXHQrPSBuZnRfcmVqZWN0X25ldGRldi5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM2OjQ3LjAyMzkyNTMwNFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTEyNTY5NzczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLlxuXG4qKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWwgTGlua2FnZSBJc3N1ZSBpbiB0aGUgbmZ0X3JlamVjdF9pbmV0IE1vZHVsZSoqXG5cbkhtbSwgc28gYG5mdF9yZWplY3RfaW5ldC5jYCByZWxpZXMgb24gYG5mX3NlbmRfdW5yZWFjaGAuIFRoYXQncyBhIGtleSBmdW5jdGlvbi4gQnV0IGlmIGBORl9SRUpFQ1RfSVBWNGAgaXNuJ3QgZW5hYmxlZCwgaG93IGRvZXMgdGhhdCBsaW5rYWdlIGV2ZW4gd29yaz8gV2hlcmUgZG9lcyB0aGF0IGNvbm5lY3Rpb24gY29tZSBmcm9tPyBUaGlzIHNlZW1zIGxpa2UgYSBwb3RlbnRpYWwgcG9pbnQgb2YgZmFpbHVyZS5cblxuQWxyaWdodCwgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGNoZWNrIHRoZSBpbmNsdWRlcyBmb3IgYG5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmNgLiBHb3R0YSBzZWUgd2hhdCBvdGhlciBtb2R1bGVzLCBhbmQgdGhlcmVmb3JlIHdoYXQgcG90ZW50aWFsIGRlcGVuZGVuY2llcywgYXJlIGluIHBsYXkgaGVyZSB0byB1bmRlcnN0YW5kIHRoaXMgYnVpbGQgcmVsYXRpb25zaGlwLiBJIG5lZWQgdG8gdHJhY2UgdGhlIHJlZmVyZW5jZXMuIFRoaXMgaXMgd2hlcmUgSSdsbCBmaW5kIG15IGFuc3dlcnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkwNzgsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNjo1MS4xMzY0OTgzOTdaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5ODY5NjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mX3NlbmRfdW5yZWFjaFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmM9MTc9c3RhdGljIHZvaWQgbmZ0X3JlamVjdF9pbmV0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy0yNi1cXHRcXHRjYXNlIE5GVF9SRUpFQ1RfSUNNUF9VTlJFQUNIOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmM6Mjc6XFx0XFx0XFx0bmZfc2VuZF91bnJlYWNoKHBrdC1cXHUwMDNlc2tiLCBwcml2LVxcdTAwM2VpY21wX2NvZGUsXFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy0yOC1cXHRcXHRcXHRcXHRcXHRuZnRfaG9vayhwa3QpKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmMtMzQtXFx0XFx0Y2FzZSBORlRfUkVKRUNUX0lDTVBYX1VOUkVBQ0g6XFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYzozNTpcXHRcXHRcXHRuZl9zZW5kX3VucmVhY2gocGt0LVxcdTAwM2Vza2IsXFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy0zNi1cXHRcXHRcXHRcXHRcXHRuZnRfcmVqZWN0X2ljbXBfY29kZShwcml2LVxcdTAwM2VpY21wX2NvZGUpLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy00My1cXHRcXHRjYXNlIE5GVF9SRUpFQ1RfSUNNUF9VTlJFQUNIOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmM6NDQ6XFx0XFx0XFx0bmZfc2VuZF91bnJlYWNoNihuZnRfbmV0KHBrdCksIHBrdC1cXHUwMDNlc2tiLFxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmMtNDUtXFx0XFx0XFx0XFx0XFx0IHByaXYtXFx1MDAzZWljbXBfY29kZSwgbmZ0X2hvb2socGt0KSk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jLTUxLVxcdFxcdGNhc2UgTkZUX1JFSkVDVF9JQ01QWF9VTlJFQUNIOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmM6NTI6XFx0XFx0XFx0bmZfc2VuZF91bnJlYWNoNihuZnRfbmV0KHBrdCksIHBrdC1cXHUwMDNlc2tiLFxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmMtNTMtXFx0XFx0XFx0XFx0XFx0IG5mdF9yZWplY3RfaWNtcHY2X2NvZGUocHJpdi1cXHUwMDNlaWNtcF9jb2RlKSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6MzY6NTEuMTk2Mzc0MzA1WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4Njc3NzQzMTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjpcblxuKipEaXZpbmcgaW50byB0aGUgSVB2NCBORl9SRUpFQ1QgSGVhZGVyKipcblxuT2theSwgdGltZSB0byBnZXQgaW50byB0aGUgbml0dHktZ3JpdHR5IG9mIHRoZSBJUHY0IG5ldGZpbHRlciByZWplY3Rpb24gbW9kdWxlLiBMZXQncyBzZWUgd2hhdCdzIGRlZmluZWQgaW4gYGluY2x1ZGUvbmV0L25ldGZpbHRlci9pcHY0L25mX3JlamVjdC5oYC4gSSdtIGV4cGVjdGluZyB0byBmaW5kIHRoZSBjb3JlIGRhdGEgc3RydWN0dXJlcyBhbmQgY29uc3RhbnRzIHJlbGF0ZWQgdG8gaG93IHdlIGhhbmRsZSBhbmQgY29uc3RydWN0IElDTVAgZXJyb3IgbWVzc2FnZXMgZm9yIGRyb3BwZWQgSVB2NCBwYWNrZXRzIHdpdGhpbiB0aGUgbmV0ZmlsdGVyIGZyYW1ld29yay4gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZSB0aGUgZGlmZmVyZW50IElDTVAgZXJyb3IgY29kZSB0eXBlcyAoZS5nLiwgaG9zdCB1bnJlYWNoYWJsZSwgbmV0d29yayB1bnJlYWNoYWJsZSwgZXRjLikgdGhhdCB0aGUgbW9kdWxlIGNhbiBnZW5lcmF0ZSwgdGhlIHN0cnVjdHVyZSB0aGF0IGhvbGRzIHRoZSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgcmVsYXRlZCB0byB0aGUgbW9kdWxlLCBhbmQgYW55IGludGVybmFsIGZ1bmN0aW9uIHByb3RvdHlwZXMgdGhlIG1vZHVsZSBleHBvcnRzLiBIb3BlZnVsbHksIHRoZSBoZWFkZXIgZmlsZSBpcyB3ZWxsLWRvY3VtZW50ZWQsIG1ha2luZyBpdCBlYXN5IHRvIHNlZSBob3cgdGhlIHJlamVjdGlvbiBtZWNoYW5pc20gaW50ZXJhY3RzIHdpdGggb3RoZXIgbmV0ZmlsdGVyIGNvbXBvbmVudHMgbGlrZSBjb25uZWN0aW9uIHRyYWNraW5nLiBJJ20ga2VlbiB0byB1bmRlcnN0YW5kIHRoZSBmbGV4aWJpbGl0eSBvZmZlcmVkIGluIGNyYWZ0aW5nIHJlc3BvbnNlcywgYW5kIGlmIHRoZXJlIGFyZSBhbnkgb3B0aW9ucyBmb3IgY3VzdG9taXppbmcgdGhlIElDTVAgZXJyb3IgbWVzc2FnZXMgYmV5b25kIHRoZSBkZWZhdWx0cy4gTG9va2luZyBhdCB0aGUgaW5jbHVkZSBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGV2YWx1YXRpbmcgY3VycmVudCBkZXNpZ24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk3NzksIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNjo1Ni4wNjQxNTEyNzZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyNzkyMjg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mX3NlbmRfdW5yZWFjaFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL25ldC9uZXRmaWx0ZXIvaXB2NC9uZl9yZWplY3QuaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC9uZXRmaWx0ZXIvaXB2NC9uZl9yZWplY3QuaC05LVxcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9pcHY0L25mX3JlamVjdC5oOjEwOnZvaWQgbmZfc2VuZF91bnJlYWNoKHN0cnVjdCBza19idWZmICpza2JfaW4sIGludCBjb2RlLCBpbnQgaG9vayk7XFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL2lwdjQvbmZfcmVqZWN0LmgtMTEtdm9pZCBuZl9zZW5kX3Jlc2V0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKiwgc3RydWN0IHNrX2J1ZmYgKm9sZHNrYixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6MzY6NTYuMTM2OTQ5MDQ0WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NTU1NzM3OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgY29ycmVjdGx5LiBJdCBsb29rcyBsaWtlIGBuZnRfcmVqZWN0X2luZXRgIHJlbGllcyBvbiBgTkZfVEFCTEVTX0lORVRgLCBidXQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZW0gaXMgY3JpdGljYWwuIERvZXMgZW5hYmxpbmcgYE5GX1RBQkxFU19JTkVUYCBhdXRvbWF0aWNhbGx5IGJyaW5nIGluIGBORl9SRUpFQ1RfSVBWNGA/IE9yIGlzIGl0IHRoZSBvdGhlciB3YXkgYXJvdW5kIOKAkyBkb2VzIGBORlRfUkVKRUNUX0lORVRgIHB1bGwgaXQgaW4gaW5zdGVhZD8gSSBuZWVkIHRvIGJlIHByZWNpc2UgaGVyZSwgc2luY2UgaW5jb3JyZWN0bHkgY29uZmlndXJlZCBtb2R1bGVzIGFuZCBkZXBlbmRlbmNpZXMgY2FuIGxlYWQgdG8gbWFqb3IgbmV0d29ya2luZyBpc3N1ZXMuIEknZCBiZXR0ZXIgZ28gYmFjayB0byB0aGUgc291cmNlLiBMZXQgbWUganVzdCBvcGVuIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIGFnYWluIGFuZCBkb3VibGUtY2hlY2sgdGhvc2UgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBvZiB0aGUgc2VsZWN0aW9uIGhpZXJhcmNoeS4gSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCBJIGFtIHVuZGVyc3RhbmRpbmcgdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyMDAsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNjo1OS45OTI1MjY0NTZaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczNzMzNDQ4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORl9SRUpFQ1RfSVBWNFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM3OjAwLjA2NjI2NjE0NFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTgyNjE3Mjg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUsIG15IG1lbnRhbCBnZWFycyBhcmUgdHVybmluZy4uLlxuXG4qKkNoZWNraW5nIHRoZSBLY29uZmlnIGZvciBSZWplY3Rpb24gUnVsZXMqKlxuXG5SaWdodCwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhlc2UgcmVqZWN0aW9uIG1lY2hhbmlzbXMgYXJlIGNvbmZpZ3VyZWQuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGBuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZ2Ag4oCTIHRoYXQncyB0aGUgdXN1YWwgcGxhY2UgdG8gZmluZCB0aGVzZSBzb3J0cyBvZiBvcHRpb25zIGZvciBJUHY0IE5ldGZpbHRlciwgaXNuJ3QgaXQ/IEknbSBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3IgYE5GVF9SRUpFQ1RfSU5FVGAgb3IgYE5GX1RBQkxFU19JTkVUYC4gVGhlc2Ugd291bGQgZ2l2ZSBtZSBhIGdvb2QgaW5kaWNhdGlvbiBvZiB3aGV0aGVyIHdlIGFyZSBldmVuIHVzaW5nIG9yIGhhdmUgc3VwcG9ydCBmb3IgdGhlIG5ldyByZWplY3Qgc3lzdGVtIG9yIHRoZSBvbGRlciBuZnRhYmxlcyBmcmFtZXdvcmsgdGhhdCBwcm92aWRlcyB0aGlzLiBLbm93aW5nIHRoaXMgd2lsbCBpbW1lZGlhdGVseSBmb2N1cyBteSBhdHRlbnRpb24gYW5kIGFuYWx5c2lzIGdvaW5nIGZvcndhcmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNDg5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6Mzc6MDMuMDQ4ODg2MzgyWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDUwNTE4NzcsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5GVF9SRUpFQ1RfSU5FVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6Mzc6MDMuMTUzOTQ2NDE5WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4ODMyMTE3NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipLY29uZmlnIERpdmUgZm9yIE5GVF9SRUpFQ1RfSU5FVCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBgTkZUX1JFSkVDVF9JTkVUYC4gVGltZSB0byBkaXZlIGludG8gdGhlIGtlcm5lbCdzIEtjb25maWcgZmlsZXMuIEknbSBoZWFkaW5nIHN0cmFpZ2h0IGZvciBgbmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWdgLiBUaGlzIGlzIHdoZXJlIEknZCBleHBlY3QgdG8gZmluZCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgZm9yIElQdjYgbmV0ZmlsdGVyIGZ1bmN0aW9uYWxpdHksIGluY2x1ZGluZyBhbnl0aGluZyByZWxhdGVkIHRvIHJlamVjdCBhY3Rpb25zLCBlc3BlY2lhbGx5IHRoZSBJTkVULXNwZWNpZmljIG9uZXMuIEknbSBhbnRpY2lwYXRpbmcgdGhhdCBgTkZUX1JFSkVDVF9JTkVUYCB3aWxsIGJlIGRlZmluZWQgdGhlcmUsIG9yIGF0IHRoZSB2ZXJ5IGxlYXN0LCB0aGF0IHRoZSBkZXBlbmRlbmNpZXMgYW5kIHJlbGF0aW9uc2hpcHMgd2l0aCBvdGhlciByZWxhdGVkIG9wdGlvbnMgd2lsbCBiZSBjbGVhcmx5IHNwZWxsZWQgb3V0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgZXhhY3QgcHVycG9zZSBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBuZXRmaWx0ZXIgZnJhbWV3b3JrLiBMZXQncyBzZWUgd2hhdCdzIGluIHRoZXJlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNzI0LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6Mzc6MDcuMDM3MTYxMDlaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzMDczMjAyMCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTkZUX1JFSkVDVF9JTkVUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNzowNy4zNjc5MDAyOVoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzM1NDM3NzM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIGBORlRfUkVKRUNUX0lORVRgIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJdCBzZWVtcyBhIGJpdCBvZGQgdGhhdCBgTkZUX1JFSkVDVF9JTkVUYCB3b3VsZCBkaXJlY3RseSBzZWxlY3QgYE5GX1JFSkVDVF9JUFY0YC4gVGhhdCBkb2Vzbid0IHNlZW0gcXVpdGUgcmlnaHQgaW4gbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlc2UgdGhpbmdzIHVzdWFsbHkgd29yay4gUGVyaGFwcyBJIG1pc3NlZCBzb21ldGhpbmcgaW4gYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2A/IEkgbmVlZCB0byBkb3VibGUtY2hlY2suIEJlc3Qgd2F5IHRvIGNsZWFyIHRoaXMgdXAgaXMgdG8gc2VhcmNoIHRoZSBlbnRpcmUgc291cmNlIHRyZWUgZm9yIG9jY3VycmVuY2VzIG9mIGBORl9SRUpFQ1RfSVBWNGAgdG8gdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jaWVzIGFuZCByZWxhdGlvbnNoaXBzLiBMZXQncyBnZXQgdG8gaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwOTc4LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6Mzc6MTAuNzAzMzQxMjE3WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjQ0ODUwODYyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5GX1JFSkVDVF9JUFY0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYnJpZGdlL25ldGZpbHRlci9LY29uZmlnPTE4PWNvbmZpZyBORlRfQlJJREdFX1JFSkVDVFxcbi0tXFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvS2NvbmZpZy0yMC1cXHRkZXBlbmRzIG9uIE5GVF9SRUpFQ1RcXG5uZXQvYnJpZGdlL25ldGZpbHRlci9LY29uZmlnOjIxOlxcdGRlcGVuZHMgb24gTkZfUkVKRUNUX0lQVjRcXG5uZXQvYnJpZGdlL25ldGZpbHRlci9LY29uZmlnLTIyLVxcdGRlcGVuZHMgb24gTkZfUkVKRUNUX0lQVjZcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnPTQyPWNvbmZpZyBORlRfUkVKRUNUX0lQVjRcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZzo0MzpcXHRzZWxlY3QgTkZfUkVKRUNUX0lQVjRcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy00NC1cXHRkZWZhdWx0IE5GVF9SRUpFQ1RcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnPTg3PWNvbmZpZyBORl9MT0dfSVBWNFxcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctOTQtXFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc6OTU6Y29uZmlnIE5GX1JFSkVDVF9JUFY0XFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctOTYtXFx0dHJpc3RhdGUgXFxcIklQdjQgcGFja2V0IHJlamVjdGlvblxcXCJcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnPTE5NT1jb25maWcgSVBfTkZfVEFSR0VUX1JFSkVDVFxcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctMTk3LVxcdGRlcGVuZHMgb24gSVBfTkZfRklMVEVSIHx8IE5GVF9DT01QQVRcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZzoxOTg6XFx0c2VsZWN0IE5GX1JFSkVDVF9JUFY0XFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctMTk5LVxcdGRlZmF1bHQgbSBpZiBORVRGSUxURVJfQURWQU5DRUQ9blxcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlPTEwPW9iai0kKENPTkZJR19ORl9UUFJPWFlfSVBWNCkgKz0gbmZfdHByb3h5X2lwdjQub1xcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlLTEyLSMgcmVqZWN0XFxubmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlOjEzOm9iai0kKENPTkZJR19ORl9SRUpFQ1RfSVBWNCkgKz0gbmZfcmVqZWN0X2lwdjQub1xcbm5ldC9pcHY0L25ldGZpbHRlci9NYWtlZmlsZS0xNC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6Mzc6MTIuOTQ4MjAwNzc4WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2ODMwMTE2MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgTkZUIFJlamVjdCBNb2R1bGUgQmVoYXZpb3IqKlxuXG5SaWdodCwgc28gYE5GVF9SRUpFQ1RfSU5FVGAgaXNuJ3QgbWFnaWNhbGx5IHB1bGxpbmcgaW4gYE5GX1JFSkVDVF9JUFY0YCBhcyBJJ2QgaW5pdGlhbGx5IGFzc3VtZWQuIFNlZW1zIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvbmZpZ3VyYXRpb24uIFRpbWUgdG8gcmV2aXNpdCBgbmV0L25ldGZpbHRlci9LY29uZmlnYC4gSSdsbCB3YW50IHRvIHZlcmlmeSB0aGUgZGVwZW5kZW5jaWVzIGFuZCBzZWUgZXhhY3RseSBob3cgdGhvc2UgbW9kdWxlcyBhcmUgbGlua2VkLCBvciBtb3JlIGxpa2VseSwgKm5vdCogbGlua2VkLiBJdOKAmXMgcHJvYmFibHkgYSBzdWJ0bGUgcmVsYXRpb25zaGlwLCBvciBsYWNrIHRoZXJlb2YsIHdpdGhpbiB0aGUgS2NvbmZpZyBoaWVyYXJjaHkuIEknbSBndWVzc2luZyBhIGNvbmRpdGlvbmFsIGRlcGVuZGVuY3kgb3IgYW4gaXNzdWUgd2l0aCB0aGUgaW50ZW5kZWQgc2NvcGUgb2YgYE5GVF9SRUpFQ1RfSU5FVGAgaXRzZWxmLiBMZXQncyBzZWUgd2hhdCB0aGUgS2NvbmZpZyBmaWxlIHJldmVhbHMuLi4gSSdsbCBuZWVkIHRvIGFzc2VzcyB0aGUgaW1wbGljYXRpb25zIGZvciBhIGNvbWJpbmVkIElQdjQvSVB2NiByZWplY3QgcnVsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE2NzQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNzoxNi42MzEyMTYxNjVaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ5MjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA1ODUsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1ODU6XFx0XFxuIDU4NjpcXHRjb25maWcgTkZUX1JFSkVDVF9JTkVUXFxuIDU4NzpcXHRcXHRkZXBlbmRzIG9uIE5GX1RBQkxFU19JTkVUXFxuIDU4ODpcXHRcXHRkZWZhdWx0IE5GVF9SRUpFQ1RcXG4gNTg5OlxcdFxcdHRyaXN0YXRlXFxuIDU5MDpcXHRcXG4gNTkxOlxcdGNvbmZpZyBORlRfQ09NUEFUXFxuIDU5MjpcXHRcXHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9YVEFCTEVTXFxuIDU5MzpcXHRcXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIHhfdGFibGVzIG92ZXIgbmZfdGFibGVzIG1vZHVsZVxcXCJcXG4gNTk0OlxcdFxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6Mzc6MTYuNjMxMzY3OTU2WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMzEzODg4NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkNoZWNraW5nIERlcGVuZGVuY3kgTG9naWMgZm9yIE5GVCBSZWplY3QgSW1wbGVtZW50YXRpb24qKlxuXG5BbHJpZ2h0LCBoYW5nIG9uIGEgc2Vjb25kLiBgTkZUX1JFSkVDVF9JTkVUYC4uLiB0aGF0IHJlbGllcyBvbiBgTkZfVEFCTEVTX0lORVRgLCBkb2Vzbid0IGl0PyBJIG5lZWQgdG8gcXVpY2tseSByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGF0LiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBpbXBsZW1lbnRhdGlvbiwgc3BlY2lmaWNhbGx5IHRoZSBgbmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuY2Agc291cmNlIGZpbGUuIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gSSB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmN5IGZsb3csIGVzcGVjaWFsbHkgZ2l2ZW4gaG93IHRpZ2h0bHkga25pdCBOZXRmaWx0ZXIncyBjb21wb25lbnRzIGNhbiBiZS4gR290dGEgbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZyBjcnVjaWFsIGluIHRoZSBjb25maWd1cmF0aW9uIG9yIHBvdGVudGlhbCBpc3N1ZXMgYXJpc2luZyBmcm9tIHRoYXQgcmVsYXRpb25zaGlwLiBHb3R0YSBnbyBiYWNrIGFuZCB2ZXJpZnkgZXhhY3RseSB3aGF0J3MgZ29pbmcgb24gaW4gdGhhdCBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjA3NSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6Mzc6MTkuOTYyNzU4OTMzWiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NzQwNDg3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl9zZW5kX3VucmVhY2hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jPTE3PXN0YXRpYyB2b2lkIG5mdF9yZWplY3RfaW5ldF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmMtMjYtXFx0XFx0Y2FzZSBORlRfUkVKRUNUX0lDTVBfVU5SRUFDSDpcXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jOjI3OlxcdFxcdFxcdG5mX3NlbmRfdW5yZWFjaChwa3QtXFx1MDAzZXNrYiwgcHJpdi1cXHUwMDNlaWNtcF9jb2RlLFxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmMtMjgtXFx0XFx0XFx0XFx0XFx0bmZ0X2hvb2socGt0KSk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jLTM0LVxcdFxcdGNhc2UgTkZUX1JFSkVDVF9JQ01QWF9VTlJFQUNIOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmM6MzU6XFx0XFx0XFx0bmZfc2VuZF91bnJlYWNoKHBrdC1cXHUwMDNlc2tiLFxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmMtMzYtXFx0XFx0XFx0XFx0XFx0bmZ0X3JlamVjdF9pY21wX2NvZGUocHJpdi1cXHUwMDNlaWNtcF9jb2RlKSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmMtNDMtXFx0XFx0Y2FzZSBORlRfUkVKRUNUX0lDTVBfVU5SRUFDSDpcXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jOjQ0OlxcdFxcdFxcdG5mX3NlbmRfdW5yZWFjaDYobmZ0X25ldChwa3QpLCBwa3QtXFx1MDAzZXNrYixcXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jLTQ1LVxcdFxcdFxcdFxcdFxcdCBwcml2LVxcdTAwM2VpY21wX2NvZGUsIG5mdF9ob29rKHBrdCkpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy01MS1cXHRcXHRjYXNlIE5GVF9SRUpFQ1RfSUNNUFhfVU5SRUFDSDpcXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jOjUyOlxcdFxcdFxcdG5mX3NlbmRfdW5yZWFjaDYobmZ0X25ldChwa3QpLCBwa3QtXFx1MDAzZXNrYixcXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jLTUzLVxcdFxcdFxcdFxcdFxcdCBuZnRfcmVqZWN0X2ljbXB2Nl9jb2RlKHByaXYtXFx1MDAzZWljbXBfY29kZSksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM3OjIwLjA1MDE2OTY4WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNDA2NzkyMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgQ29tcGlsYXRpb24gUGF0aCBvZiBgbmZ0X3JlamVjdF9pbmV0LmNgKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBuZnRfcmVqZWN0X2luZXQuY2AgZmlsZSBhbmQgc29tZXRoaW5nJ3MgYnVnZ2luZyBtZS4gSXQncyB1c2luZyBgbmZfc2VuZF91bnJlYWNoYCwgYW5kIHRoYXQncyBhIGtleSBmdW5jdGlvbiBpbiBoYW5kbGluZyBuZXR3b3JrIHVucmVhY2hhYmlsaXR5LiBCdXQgaWYgSSByZWNhbGwgY29ycmVjdGx5LCBgTkZfUkVKRUNUX0lQVjRgIHVzdWFsbHkgbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgdGhhdCB0byB3b3JrIHByb3Blcmx5LiBTbywgaG93IGlzIHRoaXMgdGhpbmcgZXZlbiBjb21waWxpbmcgd2l0aG91dCB0aGF0IGZsYWcgc2VlbWluZ2x5IGFjdGl2ZT9cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHRoZXJlJ3MgZ290IHRvIGJlIHNvbWUgb3RoZXIgbWVjaGFuaXNtIGF0IHBsYXkuIFBlcmhhcHMgYG5mX3NlbmRfdW5yZWFjaGAgaXMgY2FsbGVkIHVuZGVyIGEgZGlmZmVyZW50IG1hY3JvIGNvbmRpdGlvbj8gT3IgbWF5YmUgaXQncyBpbmNsdWRlZCB3aXRoaW4gYSBkaWZmZXJlbnQgaGVhZGVyLCB0aGF0IHB1bGxzIGluIHRoZSBgbmZfcmVqZWN0YCBjb21wb25lbnRzIGluIGEgZGlmZmVyZW50IHdheT8gSSBuZWVkIHRvIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuIFRpbWUgdG8gZGVsdmUgaW50byBgaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL2lwdjQvbmZfcmVqZWN0LmhgIGFuZCBzZWUgd2hhdCdzIHJlYWxseSBnb2luZyBvbiB1bmRlciB0aGUgaG9vZCBvZiB0aG9zZSByZWplY3QgY29kZSBtYWNyb3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgY29tcGlsYXRpb24gcGF0aCFcblxuXG4iLCJJbnB1dFRva2VucyI6MTI3NTcsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNzoyNC4yOTA4NTM2NDFaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTUzMTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL2lwdjQvbmZfcmVqZWN0LmhcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xcbiAgIDI6XFx0I2lmbmRlZiBfSVBWNF9ORl9SRUpFQ1RfSFxcbiAgIDM6XFx0I2RlZmluZSBfSVBWNF9ORl9SRUpFQ1RfSFxcbiAgIDQ6XFx0XFxuICAgNTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvc2tidWZmLmhcXHUwMDNlXFxuICAgNjpcXHQjaW5jbHVkZSBcXHUwMDNjbmV0L2lwLmhcXHUwMDNlXFxuICAgNzpcXHQjaW5jbHVkZSBcXHUwMDNjbmV0L2ljbXAuaFxcdTAwM2VcXG4gICA4OlxcdCNpbmNsdWRlIFxcdTAwM2NuZXQvbmV0ZmlsdGVyL25mX3JlamVjdC5oXFx1MDAzZVxcbiAgIDk6XFx0XFxuICAxMDpcXHR2b2lkIG5mX3NlbmRfdW5yZWFjaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luLCBpbnQgY29kZSwgaW50IGhvb2spO1xcbiAgMTE6XFx0dm9pZCBuZl9zZW5kX3Jlc2V0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKiwgc3RydWN0IHNrX2J1ZmYgKm9sZHNrYixcXG4gIDEyOlxcdFxcdFxcdCAgIGludCBob29rKTtcXG4gIDEzOlxcdHN0cnVjdCBza19idWZmICpuZl9yZWplY3Rfc2tiX3Y0X3VucmVhY2goc3RydWN0IG5ldCAqbmV0LFxcbiAgMTQ6XFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqb2xkc2tiLFxcbiAgMTU6XFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiAgMTY6XFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaG9vaywgdTggY29kZSk7XFxuICAxNzpcXHRzdHJ1Y3Qgc2tfYnVmZiAqbmZfcmVqZWN0X3NrYl92NF90Y3BfcmVzZXQoc3RydWN0IG5ldCAqbmV0LFxcbiAgMTg6XFx0XFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IHNrX2J1ZmYgKm9sZHNrYixcXG4gIDE5OlxcdFxcdFxcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuICAyMDpcXHRcXHRcXHRcXHRcXHRcXHQgICBpbnQgaG9vayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM3OjI0LjI5MDk1MzQ5WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MzkzOTkyMjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gYG5mdF9yZWplY3RfaW5ldGAg4oCTIHRoYXQncyB0aGUgbW9kdWxlIEknbSBpbnRlcmVzdGVkIGluIHJpZ2h0IG5vdyDigJMgaXQgbG9va3MgbGlrZSBpdCdzIHB1bGxpbmcgaW4gYE5GX1RBQkxFU19JTkVUYCBhcyBhIGRlcGVuZGVuY3kuIEhtbSwgdGhhdCdzIG5vdCBpbW1lZGlhdGVseSBvYnZpb3VzIHdoeSwgYW5kIEkgdmFndWVseSByZWNhbGwgdGhhdCBgTkZfVEFCTEVTX0lORVRgICptaWdodCogaGF2ZSBzb21lIGNvbm5lY3Rpb24gdG8gdGhlIG9sZGVyIGBORlRfUkVKRUNUX0lQVjRgIG9wdGlvbiwgd2hpY2ggSSdtIG5vdCB1c2luZyBkaXJlY3RseS4gR290dGEgYmUgY2VydGFpbiBJJ20gbm90IHB1bGxpbmcgaW4gdW53YW50ZWQgc3R1ZmYuXG5cbkxldCdzIHF1aWNrbHkgdmVyaWZ5IHRoYXQgdGhlIHJlbGF0aW9uc2hpcCBtYWtlcyBzZW5zZSBhbmQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGBORl9UQUJMRVNfSU5FVGAuIFRoZSBxdWlja2VzdCB3YXkgdG8gZG8gdGhpcyBpcyB0byBqdW1wIHJpZ2h0IGludG8gdGhlIHNvdXJjZSBjb2RlLCBzcGVjaWZpY2FsbHkgYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AuIFRoYXQncyB3aGVyZSBhbGwgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIHRoZWlyIGRlcGVuZGVuY2llcyBhcmUgZGVmaW5lZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgTkZfVEFCTEVTX0lORVRgIGFjdHVhbGx5ICpkb2VzKiBpbiByZWxhdGlvbiB0byB0aGUgYnJvYWRlciBuZXRmaWx0ZXIgZnJhbWV3b3JrIGFuZCBzcGVjaWZpY2FsbHkgYG5mdF9yZWplY3RfaW5ldGAuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgd2hhdCB0aGUgS2NvbmZpZyBmaWxlcyByZXZlYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNDQyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNzoyOC4yMzAzNTU0WiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzQxNDA1MDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GX1RBQkxFU19JTkVUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9NDcxPWlmIE5GX1RBQkxFU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NzI6Y29uZmlnIE5GX1RBQkxFU19JTkVUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ3My1cXHRkZXBlbmRzIG9uIElQVjZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6Mzc6MjguNDY0NDk5NjUyWiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNTMyMTY0OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgY29udGV4dCwgcHJlc2VudGVkIGFzIGEgcGVyc29uYWwgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYWxyZWFkeSB3ZWxsLXZlcnNlZCBpbiBrZXJuZWwgY29uZmlndXJhdGlvbiBhbmQgbmV0ZmlsdGVyOlxuXG4qKkFuYWx5emluZyB0aGUgS2NvbmZpZyBmb3IgTkZfVEFCTEVTX0lORVQqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBkaXZpbmcgaW50byBgbmV0L25ldGZpbHRlci9LY29uZmlnYCBhbmQgaG9taW5nIGluIG9uIGBORl9UQUJMRVNfSU5FVGAuIFRoaXMgaXMga2V5LiBXZSdyZSB0YWxraW5nIGFib3V0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBOZXRmaWx0ZXIgaW5mcmFzdHJ1Y3R1cmUsIHNwZWNpZmljYWxseSBhcyBpdCByZWxhdGVzIHRvIHRoZSBJbnRlcm5ldCBwcm90b2NvbCBmYW1pbHkuIE15IGltbWVkaWF0ZSBhc3N1bXB0aW9uIGlzIHdlJ3JlIGxvb2tpbmcgYXQgdGhlIGNvcmUgZW5hYmxpbmcgb3B0aW9ucyBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5LiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGRlcGVuZGVuY2llcyB0aGVyZSBhcmUsIHdoYXQgdGhpcyBtb2R1bGUgaW1wYWN0cywgYW5kIGhvdyBpdCBpcyBtZWFudCB0byBiZSB1c2VkLCBpbiBzaG9ydCwgaG93IGRvIEkgY29uZmlndXJlIG15IGVudmlyb25tZW50IHRvIHV0aWxpemUgdGhpcyBmdW5jdGlvbmFsaXR5PyBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIHN0YW5kYXJkIGBib29sYCwgYHRyaXN0YXRlYCwgb3IgYGludGAgb3B0aW9ucyBoZXJlLCBjb250cm9sbGluZyB3aGV0aGVyIHN1cHBvcnQgaXMgYnVpbHQgaW4sIGFzIGEgbW9kdWxlLCBvciBkaXNhYmxlZC4gSSBuZWVkIHRvIHBhcnNlIHRoZSBoZWxwIHRleHQgdGhvcm91Z2hseSB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIHRoaXMuIEkgd2lsbCBsb29rIGZvciBhbnkgY29uZGl0aW9uYWwgbG9naWMgd2l0aGluIHRoZSBLY29uZmlnLCB0byBzZWUgaWYgdGhlcmUgYXJlIGRlcGVuZGVuY2llcyBvbiBvdGhlciBOZXRmaWx0ZXIgY29tcG9uZW50cy4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBsb29raW5nIGF0IHRoZSBkZXBlbmRlbmNpZXMgdGhhdCBtaWdodCBleGlzdCBiZXR3ZWVuIGBORl9UQUJMRVNfSU5FVGAsIGBORl9UQUJMRVNfSVBWNGAsIGFuZCBgTkZfVEFCTEVTX0lQVjZgLiBJZiB0aGVyZSBhcmUgYW55LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzg0MiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM3OjMyLjcxNzcyMDc2MloiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODQ1NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQ3MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQ3MDpcXHRcXG4gNDcxOlxcdGlmIE5GX1RBQkxFU1xcbiA0NzI6XFx0Y29uZmlnIE5GX1RBQkxFU19JTkVUXFxuIDQ3MzpcXHRcXHRkZXBlbmRzIG9uIElQVjZcXG4gNDc0OlxcdFxcdHNlbGVjdCBORl9UQUJMRVNfSVBWNFxcbiA0NzU6XFx0XFx0c2VsZWN0IE5GX1RBQkxFU19JUFY2XFxuIDQ3NjpcXHRcXHRib29sIFxcXCJOZXRmaWx0ZXIgbmZfdGFibGVzIG1peGVkIElQdjQvSVB2NiB0YWJsZXMgc3VwcG9ydFxcXCJcXG4gNDc3OlxcdFxcdGhlbHBcXG4gNDc4OlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBzdXBwb3J0IGZvciBhIG1peGVkIElQdjQvSVB2NiBcXFwiaW5ldFxcXCIgdGFibGUuXFxuIDQ3OTpcXHRcXG4gNDgwOlxcdGNvbmZpZyBORl9UQUJMRVNfTkVUREVWXFxuIDQ4MTpcXHRcXHRib29sIFxcXCJOZXRmaWx0ZXIgbmZfdGFibGVzIG5ldGRldiB0YWJsZXMgc3VwcG9ydFxcXCJcXG4gNDgyOlxcdFxcdGhlbHBcXG4gNDgzOlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBzdXBwb3J0IGZvciB0aGUgXFxcIm5ldGRldlxcXCIgdGFibGUuXFxuIDQ4NDpcXHRcXG4gNDg1OlxcdGNvbmZpZyBORlRfTlVNR0VOXFxuIDQ4NjpcXHRcXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIG5mX3RhYmxlcyBudW1iZXIgZ2VuZXJhdG9yIG1vZHVsZVxcXCJcXG4gNDg3OlxcdFxcdGhlbHBcXG4gNDg4OlxcdFxcdCAgVGhpcyBvcHRpb24gYWRkcyB0aGUgbnVtYmVyIGdlbmVyYXRvciBleHByZXNzaW9uIHVzZWQgdG8gcGVyZm9ybVxcbiA0ODk6XFx0XFx0ICBpbmNyZW1lbnRhbCBjb3VudGluZyBhbmQgcmFuZG9tIG51bWJlcnMgYm91bmQgdG8gYSB1cHBlciBsaW1pdC5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6Mzc6MzIuNzE3OTA3NTExWiIsIlNlcSI6NDUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4MTU2NzY4MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgc28gYE5GX1RBQkxFU19JTkVUYCBpcyBjaG9zZW4sIGFuZCBJIGtub3cgdGhhdCB1c3VhbGx5IG1lYW5zIGl0J3MgcHVsbGluZyBpbiB0aGUgSVB2NCBjb21wb25lbnQg4oCTIGxvb2tpbmcgYXQgdGhlIGRlcGVuZGVuY3kuIExldCBtZSBxdWlja2x5IGNvbmZpcm0gdGhhdCBieSBjaGVja2luZyB0aGUgS2NvbmZpZyBmaWxlIGZvciBgTkZfVEFCTEVTX0lQVjRgLiBJJ2xsIGdvIHN0cmFpZ2h0IHRvIGBuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZ2AgdG8gc2VlIGlmIG15IGh1bmNoIGlzIGNvcnJlY3QuIEdvdHRhIG1ha2Ugc3VyZSB0aG9zZSBkZXBlbmRlbmNpZXMgYXJlIGFsbCB3aXJlZCB1cCB0aGUgd2F5IEkgZXhwZWN0IHRoZW0gdG8gYmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NDg4LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNzozNS41MzM1ODc1MDVaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1NjE2NTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORl9UQUJMRVNfSVBWNFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZz0zMz1pZiBORl9UQUJMRVNcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy0zNC1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZzozNTpjb25maWcgTkZfVEFCTEVTX0lQVjRcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy0zNi1cXHRib29sIFxcXCJJUHY0IG5mX3RhYmxlcyBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNzozNS41ODkyMDk5NzRaIiwiU2VxIjo0NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAzMTk3NzgwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqRGl2aW5nIGludG8gdGhlIElQdjQgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBpbnRvIHRoZSBuaXR0eS1ncml0dHkgb2YgdGhlIE5ldGZpbHRlciBjb25maWd1cmF0aW9uIGZvciBJUHY0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYE5GX1RBQkxFU19JUFY0YCBpcyBzZXQgdXAuIExldCdzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byBgbmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWdgLiBUaGlzIGlzIHRoZSBmaWxlIHRoYXQgZGVmaW5lcyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLCBzbyBpdCdzIHRoZSByaWdodCBwbGFjZSB0byBnZXQgYSBmb3VuZGF0aW9uYWwgdW5kZXJzdGFuZGluZy4gSSdtIGdvaW5nIHRvIHNjYW4gdGhhdCBmaWxlIHRvIHNlZSBob3cgYE5GX1RBQkxFU19JUFY0YCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZSBvZiBOZXRmaWx0ZXIgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUga2VybmVsJ3MgbmV0d29ya2luZyBzdGFjaywgcGFydGljdWxhcmx5IGFyb3VuZCB0aGUgSVB2NCBwcm90b2NvbC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBpdHMgZGVwZW5kZW5jaWVzIGFuZCB3aGF0IGNvbmRpdGlvbnMgdHJpZ2dlciBpdHMgaW5jbHVzaW9uLiBUaGlzIHNob3VsZCBhbGxvdyBtZSB0byBmb3JtdWxhdGUgYSBwbGFuIHRvIHVuZGVyc3RhbmQgaXRzIGZ1bmN0aW9uYWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0Nzk1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6Mzc6MzkuNjIxMTkwMzJaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTc5NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzMsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMzM6XFx0aWYgTkZfVEFCTEVTXFxuICAzNDpcXHRcXG4gIDM1OlxcdGNvbmZpZyBORl9UQUJMRVNfSVBWNFxcbiAgMzY6XFx0XFx0Ym9vbCBcXFwiSVB2NCBuZl90YWJsZXMgc3VwcG9ydFxcXCJcXG4gIDM3OlxcdFxcdGhlbHBcXG4gIDM4OlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgSVB2NCBzdXBwb3J0IGZvciBuZl90YWJsZXMuXFxuICAzOTpcXHRcXG4gIDQwOlxcdGlmIE5GX1RBQkxFU19JUFY0XFxuICA0MTpcXHRcXG4gIDQyOlxcdGNvbmZpZyBORlRfUkVKRUNUX0lQVjRcXG4gIDQzOlxcdFxcdHNlbGVjdCBORl9SRUpFQ1RfSVBWNFxcbiAgNDQ6XFx0XFx0ZGVmYXVsdCBORlRfUkVKRUNUXFxuICA0NTpcXHRcXHR0cmlzdGF0ZVxcbiAgNDY6XFx0XFxuICA0NzpcXHRjb25maWcgTkZUX0RVUF9JUFY0XFxuICA0ODpcXHRcXHR0cmlzdGF0ZSBcXFwiSVB2NCBuZl90YWJsZXMgcGFja2V0IGR1cGxpY2F0aW9uIHN1cHBvcnRcXFwiXFxuICA0OTpcXHRcXHRkZXBlbmRzIG9uICFORl9DT05OVFJBQ0sgfHwgTkZfQ09OTlRSQUNLXFxuICA1MDpcXHRcXHRzZWxlY3QgTkZfRFVQX0lQVjRcXG4gIDUxOlxcdFxcdGhlbHBcXG4gIDUyOlxcdFxcdCAgVGhpcyBtb2R1bGUgZW5hYmxlcyBJUHY0IHBhY2tldCBkdXBsaWNhdGlvbiBzdXBwb3J0IGZvciBuZl90YWJsZXMuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM3OjM5LjYyMTI5MDE3WiIsIlNlcSI6NDksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1ODI0MzIwMjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmF2aWdhdGluZyB0aGUgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24gTGFieXJpbnRoKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGVzZSBOZXRmaWx0ZXIgY29uZmlndXJhdGlvbnMuIEl0IHNlZW1zIGxpa2UgaWYgYE5GX1RBQkxFU19JUFY0YCBpcyBvbiwgdGhlIGRlZmF1bHQgZm9yIGBORlRfUkVKRUNUX0lQVjRgIGlzIGdvaW5nIHRvIGJlIGBORlRfUkVKRUNUYC4gVGhhdCBtYWtlcyBzZW5zZS4gQW5kIGlmIGBORlRfUkVKRUNUX0lQVjRgIGlzIHNlbGVjdGVkLCB0aGVuIGBORl9SRUpFQ1RfSVBWNGAgZ2V0cyBjaG9zZW4uIEknbSB0cnlpbmcgdG8gZ2V0IGBORl9SRUpFQ1RfSVBWNGAgZW5hYmxlZC4gTXkgZmlyc3QgdGhvdWdodCB3YXMgdG8ganVzdCBlbmFibGUgYE5GVF9SRUpFQ1RfSVBWNGAsIG9yIGV2ZW4gYElQX05GX1RBUkdFVF9SRUpFQ1RgIGJlY2F1c2UgdGhhdCBzb3VuZHMgcmVsZXZhbnQuXG5cbkJ1dCBoYW5nIG9uLi4uIGVuYWJsaW5nIGBORl9SRUpFQ1RfSVBWNGAgZGlyZWN0bHkgbWlnaHQgYmUgYSBjbGVhbmVyIGFwcHJvYWNoLCByaWdodD8gT2gsIGJ1dCB3YWl0Li4uIEkgd2FzIHRoaW5raW5nIGl0IHdhcyBhIHRyaXN0YXRlIHdpdGhvdXQgYSBwcm9tcHQuIEkgbmVlZCBhIHByb21wdCEgTGV0IG1lIGRvdWJsZSBjaGVjay4uLiBZZXMhIFRoZSBgY29uZmlnIE5GX1JFSkVDVF9JUFY0YCAqZG9lcyogaGF2ZSBhIGB0cmlzdGF0ZSBcIklQdjQgcGFja2V0IHJlamVjdGlvblwiYCBvcHRpb24uIEV4Y2VsbGVudC4gU28gaXQncyBwcm9tcHRpbmchIE9rYXksIGxldCBtZSBnbyBiYWNrIGFuZCByZS1leGFtaW5lIHRoZSBgbmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWdgIGZpbGUgYWdhaW4gdG8gY29uZmlybSB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTMwNSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM3OjQ2LjIwMzcyNjgyOFoiLCJTZXEiOjUwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjQzNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogOTUsXG4gIFwiTGluZUNvdW50XCI6IDVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA5NTpcXHRjb25maWcgTkZfUkVKRUNUX0lQVjRcXG4gIDk2OlxcdFxcdHRyaXN0YXRlIFxcXCJJUHY0IHBhY2tldCByZWplY3Rpb25cXFwiXFxuICA5NzpcXHRcXHRkZWZhdWx0IG0gaWYgTkVURklMVEVSX0FEVkFOQ0VEPW5cXG4gIDk4OlxcdFxcbiAgOTk6XFx0aWYgTkZfTkFUXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM3OjQ2LjIwNDEyNTAzOFoiLCJTZXEiOjUxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4OTAyMzk3MjE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTmV0d29yayBGaWx0ZXIgUmVqZWN0IFBhdGNoKipcblxuT2theSwgc28gdGhlIGBORl9SRUpFQ1RfSVBWNGAgb3B0aW9uIGhhcyBhIHByb21wdCwgd2hpY2ggbWVhbnMgd2UgY2FuIGp1c3QgZW5hYmxlIHRoYXQuIEJ1dCBoYW5nIG9uLCBsZXQgbWUgY2hlY2sgd2hlcmUgYG5mX3NlbmRfdW5yZWFjaGAgbGl2ZXMsIHRoYXQncyBpbiBgbmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmNgLiAgVGhlIHBhdGNoIGlzIG1vZGlmeWluZyBgbmZfc2VuZF91bnJlYWNoYCwgYW5kIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoYXQgY29kZSBwYXRoIGlzIGFjdHVhbGx5IHJlYWNoYWJsZS5cblxuQWxyaWdodCwgYG5mX3NlbmRfdW5yZWFjaGAgKmlzKiByZWFjaGFibGUg4oCTIHRocm91Z2ggYGlwdF9SRUpFQ1RgLCBgbmZ0X3JlamVjdF9pcHY0YCwgYW5kIGBuZnRfcmVqZWN0X2luZXRgLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNoZWNrIGZvciBgaG9vayA9PSBORl9JTkVUX0lOR1JFU1NgLiBJIG5lZWQgdG8gY29uZmlybSBpZiBgTkZfSU5FVF9JTkdSRVNTYCBpcyBhY3R1YWxseSB1c2VkIGluIGBuZl9zZW5kX3VucmVhY2hgLlxuXG5MZXQncyBzZWUuIGBuZl9zZW5kX3VucmVhY2hgIGlzIGNhbGxlZCBmcm9tIGByZWplY3RfdGdgIChpcHRhYmxlcyksIGBuZnRfcmVqZWN0X2lwdjRfZXZhbGAgKG5mdGFibGVzKSwgYW5kIGBuZnRfcmVqZWN0X2luZXRfZXZhbGAgKGFsc28gbmZ0YWJsZXMpLiBJbiBgbmZ0X3JlamVjdF9pcHY0X2V2YWxgLCBgbmZ0X2hvb2socGt0KWAgaXMgcGFzc2VkIGFzIHRoZSBgaG9va2AgYXJndW1lbnQuIEJpbmdvISBgbmZ0X2hvb2socGt0KWAgKmNhbiogYmUgYE5GX0lORVRfSU5HUkVTU2AgaWYgdGhlIHJ1bGUgaXMgYXR0YWNoZWQgdG8gdGhlIGluZ3Jlc3MgaG9vay4gU28gdGhlIGNvZGUgaXMgcmVhY2hhYmxlLCBubyBwcm9ibGVtIHRoZXJlLlxuXG5Ob3cgSSBrbm93IHdoYXQgdG8gZm9jdXMgb246IGBuZl9zZW5kX3VucmVhY2hgIGlzIHRoZSBtb2RpZmllZCBmdW5jdGlvbi4gVGhlIHBhdGNoJ3MgaW1wYWN0IGlzIGNlbnRlcmVkIHRoZXJlLiBJIGRvbid0IHNlZSBhbnkgb3RoZXIgZnVuY3Rpb25zIGJlaW5nIHRvdWNoZWQgYnkgdGhlIHBhdGNoLCBzbyB0aGUgYW5hbHlzaXMgaXMgc3RyYWlnaHQgZm9yd2FyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU4NDQsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNzo1NS4xMDY1MjUwNjRaIiwiU2VxIjo1MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY3OTE1OTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mX3NlbmRfdW5yZWFjaFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYz0zNDQ9RVhQT1JUX1NZTUJPTF9HUEwobmZfc2VuZF9yZXNldCk7XFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMtMzQ1LVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jOjM0Njp2b2lkIG5mX3NlbmRfdW5yZWFjaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luLCBpbnQgY29kZSwgaW50IGhvb2spXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMtMzQ3LXtcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jLTM3Mi19XFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmM6MzczOkVYUE9SVF9TWU1CT0xfR1BMKG5mX3NlbmRfdW5yZWFjaCk7XFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMtMzc0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozNzo1NS4xNzQ0NDUxNjJaIiwiU2VxIjo1MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTgzNjE2NDQ2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqRXZhbHVhdGluZyBJUHY0IGFuZCBJbmV0IFJlamVjdGlvbiBpbiBuZnRhYmxlcyoqXG5cbk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoaXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIGBuZnRfcmVqZWN0X2lwdjRfZXZhbGAgYW5kIGBuZnRfcmVqZWN0X2luZXRfZXZhbGAuIFRoZXkncmUgdGhlIGNyaXRpY2FsIGZ1bmN0aW9ucyBoZXJlLCByaWdodD8gV2UncmUgZGVhbGluZyB3aXRoIHBhY2tldCByZWplY3Rpb24sIGFuZCB0aGVzZSBmdW5jdGlvbnMgYXJlIGxpa2VseSBhdCB0aGUgaGVhcnQgb2YgdGhlIGxvZ2ljLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGV5J3JlIGhhbmRsaW5nIElQdjQgYW5kIGdlbmVyYWwgaW5ldCAod2hpY2ggb2Z0ZW4gaW5jbHVkZXMgSVB2NCBhbmQgSVB2NiwgcmlnaHQ/KSB0cmFmZmljLiBJIHdhbnQgdG8gc2VlIHRoZSBuaXR0eS1ncml0dHkgb2YgdGhlaXIgZXZhbHVhdGlvbiBwcm9jZXNzZXMuIFdoYXQgYXJlIHRoZSBzcGVjaWZpYyBjcml0ZXJpYT8gV2hhdCdzIHRoZSBzaG9ydC1jaXJjdWl0aW5nIGxvZ2ljPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBvciBzdWJ0bGUgZGlmZmVyZW5jZXMgaW4gdGhlIHdheSB0aGV5IGhhbmRsZSBlZGdlIGNhc2VzPyBJJ20gYW50aWNpcGF0aW5nIHRoYXQgZXhhbWluaW5nIHRoZXNlIHR3byBmdW5jdGlvbnMgd2lsbCBnaXZlIG1lIGEgc29saWQgZm91bmRhdGlvbiBmb3IgdW5kZXJzdGFuZGluZyB0aGUgYnJvYWRlciByZWplY3Rpb24gc3RyYXRlZ3kgaW4gdGhlIG5mdGFibGVzIGNvbnRleHQuIEl04oCZcyB0aGUgbG9naWNhbCBwbGFjZSB0byBiZWdpbiBteSBpbnZlc3RpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjc2MiwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM4OjAxLjAxMDYxNDMxM1oiLCJTZXEiOjU0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjI0MzczNTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZ0X3JlamVjdF9pcHY0X2V2YWxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaXB2NC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L25ldGZpbHRlci9uZnRfcmVqZWN0X2lwdjQuYy0xOC1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pcHY0LmM6MTk6c3RhdGljIHZvaWQgbmZ0X3JlamVjdF9pcHY0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxcbm5ldC9pcHY0L25ldGZpbHRlci9uZnRfcmVqZWN0X2lwdjQuYy0yMC1cXHRcXHRcXHRcXHQgc3RydWN0IG5mdF9yZWdzICpyZWdzLFxcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaXB2NC5jPTQxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZ0X2V4cHJfb3BzIG5mdF9yZWplY3RfaXB2NF9vcHMgPSB7XFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pcHY0LmMtNDMtXFx0LnNpemVcXHRcXHQ9IE5GVF9FWFBSX1NJWkUoc2l6ZW9mKHN0cnVjdCBuZnRfcmVqZWN0KSksXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaXB2NC5jOjQ0OlxcdC5ldmFsXFx0XFx0PSBuZnRfcmVqZWN0X2lwdjRfZXZhbCxcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pcHY0LmMtNDUtXFx0LmluaXRcXHRcXHQ9IG5mdF9yZWplY3RfaW5pdCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6Mzg6MDEuMDczMDU2MDkxWiIsIlNlcSI6NTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NzM0Mjg1MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgY29kZSwgZnJhbWVkIGFzIG15IG93biB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIFBhY2tldCBSZWplY3Rpb24gTG9naWMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhY2tldCByZWplY3Rpb24gY29kZS4gSSBzZWUgdGhhdCBgbmZ0X3JlamVjdF9pcHY0X2V2YWxgLCBgbmZ0X3JlamVjdF9pbmV0X2V2YWxgLCBhbmQgYHJlamVjdF90Z2AgYXJlIGFsbCBzdGF0aWMgZnVuY3Rpb25zLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoZXkncmUgbGlrZWx5IGhlbHBlciBmdW5jdGlvbnMgb3IgaW50ZXJuYWwgaW1wbGVtZW50YXRpb25zLCBub3QgdGhlIHByaW1hcnkgZW50cnkgcG9pbnRzLiBTbywgdGhlIGtleSBmdW5jdGlvbiBoZXJlLCB0aGUgb25lIGRyaXZpbmcgdGhlIGNvcmUgbG9naWMsIHNlZW1zIHRvIGJlIGBuZl9zZW5kX3VucmVhY2hgLlxuXG5Ob3csIGJlZm9yZSBJIGRpZyBpbnRvIGBuZl9zZW5kX3VucmVhY2hgLCBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgc3RhdGUgb2YgdGhlIHBhY2tldCBpbW1lZGlhdGVseSBwcmlvciB0byB0aGUgcGF0Y2guIEknbGwgbmVlZCB0byBjaGVjayB0aGUgZnVuY3Rpb24gdGhhdCBjb21lcyBqdXN0IGJlZm9yZSBpdCB0byBnZXQgbXkgYmVhcmluZ3MuIExldCdzIHRha2UgYSBsb29rIGF0IGBuZl9yZWplY3RfZmlsbF9za2JfZHN0YCBhbmQgc2VlIHdoYXQncyBoYXBwZW5pbmcgdGhlcmUuIFRoYXQgc2hvdWxkIHNldCB0aGUgc3RhZ2UgbmljZWx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzI4NywiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM4OjA0Ljk0NjQ4ODc2MloiLCJTZXEiOjU2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA2MDM0MjE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mX3JlamVjdF9maWxsX3NrYl9kc3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmM9MjI2PXN0YXRpYyB2b2lkIG5mX3JlamVjdF9pcF90Y3BoZHJfcHV0KHN0cnVjdCBza19idWZmICpuc2tiLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqb2xkc2tiLFxcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMtMjU0LVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jOjI1NTpzdGF0aWMgaW50IG5mX3JlamVjdF9maWxsX3NrYl9kc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYl9pbilcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYy0yNTYte1xcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmM9MjcxPXZvaWQgbmZfc2VuZF9yZXNldChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKm9sZHNrYixcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jLTI4MS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYzoyODI6XFx0aWYgKCFza2JfZHN0KG9sZHNrYikgXFx1MDAyNlxcdTAwMjYgbmZfcmVqZWN0X2ZpbGxfc2tiX2RzdChvbGRza2IpIFxcdTAwM2MgMClcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYy0yODMtXFx0XFx0cmV0dXJuO1xcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmM9MzQ2PXZvaWQgbmZfc2VuZF91bnJlYWNoKHN0cnVjdCBza19idWZmICpza2JfaW4sIGludCBjb2RlLCBpbnQgaG9vaylcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jLTM1NC1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYzozNTU6XFx0aWYgKCFza2JfZHN0KHNrYl9pbikgXFx1MDAyNlxcdTAwMjYgbmZfcmVqZWN0X2ZpbGxfc2tiX2RzdChza2JfaW4pIFxcdTAwM2MgMClcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYy0zNTYtXFx0XFx0cmV0dXJuO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozODowNS4wNTI1MjY3NDlaIiwiU2VxIjo1NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzA2NjUxNDUyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldGZpbHRlciBSZWplY3Rpb24gTG9naWMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIE5ldGZpbHRlciBjb2RlLCBzcGVjaWZpY2FsbHkgdGhlIHJlamVjdGlvbiBsb2dpYy4gYG5mX3JlamVjdF9maWxsX3NrYl9kc3RgIGlzIHN0YXRpYywgd2hpY2ggaXNuJ3QgZ29pbmcgdG8gYmUgaGVscGZ1bCBmb3IgbXkgYW5hbHlzaXMuIFRoYXQgbWVhbnMgYG5mX3NlbmRfdW5yZWFjaGAgaXMgdGhlIG1vcmUgcmVsZXZhbnQgZnVuY3Rpb24gdG8gZm9jdXMgb24uIEhtbSwgd2hhdCBhYm91dCBgbmZfc2VuZF9yZXNldGAgdGhvdWdoPyBUaGUgcGF0Y2ggZG9lc24ndCB0b3VjaCBpdCwgYnV0IGl0IGxpdmVzIGluIHRoZSBzYW1lIGZpbGUuIEkgc2hvdWxkIGtlZXAgaXQgaW4gbWluZCBhcyBhIHBvdGVudGlhbCBwb2ludCBvZiBjb25uZWN0aW9uLCBldmVuIGlmIGl0J3Mgbm90IGRpcmVjdGx5IG1vZGlmaWVkIGhlcmUuXG5cbk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBvZiB0aGlzIGNvZGUgdG8gdGhlIGJyb2FkZXIgTmV0ZmlsdGVyIGVjb3N5c3RlbS4gSXMgYE5GX1JFSkVDVF9JUFY0YCBzdWZmaWNpZW50IHRvIGNvdmVyIHdoYXQgdGhpcyBwYXRjaCBhZGRyZXNzZXM/IFllcywgYE5GX1JFSkVDVF9JUFY0YCBjb21waWxlcyBgbmZfcmVqZWN0X2lwdjQuY2AsIHNvIHRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIFRvIHRyaWdnZXIgaXQgdmlhIG5mdGFibGVzLCBJIG5lZWQgdG8gbG9vayBhdCB3aGV0aGVyIGBORlRfUkVKRUNUX0lQVjRgLCBgTkZUX1JFSkVDVF9JTkVUYCwgb3IgYE5GVF9SRUpFQ1RfTkVUREVWYCBhcmUgaW52b2x2ZWQuIFdhaXQgYSBtaW51dGUsIHRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgdGFyZ2V0cyB0aGUgYGhvb2sgPT0gTkZfSU5FVF9JTkdSRVNTYC4gUmlnaHQsIGBORl9JTkVUX0lOR1JFU1NgIGlzIHVzZWQgd2l0aGluIHRoZSBuZXRkZXYgZmFtaWx5IGluIG5mdGFibGVzLiBPa2F5LCBzbyB0aGF0IG1lYW5zIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgaWYgYE5GVF9SRUpFQ1RfTkVUREVWYCBpcyBwcmVzZW50IGFuZCByZWxldmFudC4gVGhhdCBzZWVtcyB0aGUga2V5IGxpbmsgdG8gcHVyc3VlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODA3NSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozODoxMi4xMTkwNDU0MzJaIiwiU2VxIjo1OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxNjA4ODIxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORlRfUkVKRUNUX05FVERFVlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTY4MD1jb25maWcgTkZUX0ZJQl9ORVRERVZcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy02ODgtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjY4OTpjb25maWcgTkZUX1JFSkVDVF9ORVRERVZcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNjkwLVxcdGRlcGVuZHMgb24gTkZUX1JFSkVDVF9JUFY0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM4OjEyLjQzNTEzOTcyM1oiLCJTZXEiOjU5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjgzMDMxMTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIHRleHQsIHJlbmRlcmVkIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzc3VtaW5nIEknbSBhbiBleHBlcnQgaW4gdGhpcyBmaWVsZDpcblxuKipEaXZpbmcgaW50byBuZXRmaWx0ZXIncyBLY29uZmlnOiBGb2N1c2luZyBvbiBORlRfUkVKRUNUX05FVERFVioqXG5cbk9rYXksIGxldCdzIHB1bGwgdXAgYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AuIFdlJ3JlIGdvaW5nIHRvIHplcm8gaW4gb24gdGhlIGBORlRfUkVKRUNUX05FVERFVmAgb3B0aW9uLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGlzIGZlYXR1cmUgaXMgY29uZmlndXJlZCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgaXQgaGFzLiBUaGlzIHByb2JhYmx5IHRpZXMgaW50byBob3cgd2UgaGFuZGxlIHJlamVjdGVkIHBhY2tldHMgd2l0aGluIHRoZSBuZXRkZXYgY29udGV4dCB1c2luZyBuZnRhYmxlcy4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBob3cgaXQgaW50ZXJmYWNlcyB3aXRoIHRoZSBvdGhlciByZWplY3QgbWVjaGFuaXNtcy4gSXMgdGhpcyBhIHJlcGxhY2VtZW50LCBhbiBlbmhhbmNlbWVudCwgb3IgYSBjb21wbGV0ZWx5IG9ydGhvZ29uYWwgZmVhdHVyZT8gV2hhdCBvdGhlciBvcHRpb25zIG5lZWQgdG8gYmUgZW5hYmxlZCBmb3IgYE5GVF9SRUpFQ1RfTkVUREVWYCB0byBmdW5jdGlvbiBjb3JyZWN0bHk/IEFyZSB0aGVyZSBhbnkgc3BlY2lmaWMga2VybmVsIHZlcnNpb25zIHdoZXJlIHRoaXMgZnVuY3Rpb25hbGl0eSB3YXMgaW50cm9kdWNlZCBvciBzdWJzdGFudGlhbGx5IGNoYW5nZWQ/IEFyZSB0aGVyZSBhbnkgdW51c3VhbCBjb25maWd1cmF0aW9uIGdvdGNoYXMgSSBzaG91bGQgYmUgYXdhcmUgb2YsIGxpa2UgZGVwZW5kZW5jaWVzIG9uIHNwZWNpZmljIGhhcmR3YXJlIG9yIG90aGVyIGtlcm5lbCBtb2R1bGVzPyBMb29raW5nIGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIHdpbGwgdGVsbCB0aGUgc3RvcnkuIExldCdzIHNlZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODcxOCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM4OjE4LjExODE3MzkzOFoiLCJTZXEiOjYwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDAzNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY4NSxcbiAgXCJMaW5lQ291bnRcIjogMTVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDY4NTpcXHRcXHQgIFRoaXMgb3B0aW9uIGFsbG93cyB1c2luZyB0aGUgRklCIGV4cHJlc3Npb24gZnJvbSB0aGUgbmV0ZGV2IHRhYmxlLlxcbiA2ODY6XFx0XFx0ICBUaGUgbG9va3VwIHdpbGwgYmUgZGVsZWdhdGVkIHRvIHRoZSBJUHY0IG9yIElQdjYgRklCIGRlcGVuZGluZ1xcbiA2ODc6XFx0XFx0ICBvbiB0aGUgcHJvdG9jb2wgb2YgdGhlIHBhY2tldC5cXG4gNjg4OlxcdFxcbiA2ODk6XFx0Y29uZmlnIE5GVF9SRUpFQ1RfTkVUREVWXFxuIDY5MDpcXHRcXHRkZXBlbmRzIG9uIE5GVF9SRUpFQ1RfSVBWNFxcbiA2OTE6XFx0XFx0ZGVwZW5kcyBvbiBORlRfUkVKRUNUX0lQVjZcXG4gNjkyOlxcdFxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgbmZfdGFibGVzIG5ldGRldiBSRUpFQ1Qgc3VwcG9ydFxcXCJcXG4gNjkzOlxcdFxcdGhlbHBcXG4gNjk0OlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgUkVKRUNUIHN1cHBvcnQgZnJvbSB0aGUgbmV0ZGV2IHRhYmxlLlxcbiA2OTU6XFx0XFx0ICBUaGUgcmV0dXJuIHBhY2tldCBnZW5lcmF0aW9uIHdpbGwgYmUgZGVsZWdhdGVkIHRvIHRoZSBJUHY0XFxuIDY5NjpcXHRcXHQgIG9yIElQdjYgSUNNUCBvciBUQ1AgUlNUIGltcGxlbWVudGF0aW9uIGRlcGVuZGluZyBvbiB0aGVcXG4gNjk3OlxcdFxcdCAgcHJvdG9jb2wgb2YgdGhlIHBhY2tldC5cXG4gNjk4OlxcdFxcbiA2OTk6XFx0ZW5kaWYgIyBORl9UQUJMRVNfTkVUREVWXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM4OjE4LjExODMxNjk3OFoiLCJTZXEiOjYxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDg1MDg0ODkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktlcm5lbCBDb25maWd1cmF0aW9uIENvbnVuZHJ1bSoqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGtlcm5lbCBjb25maWd1cmF0aW9uIGFuZCBJIHNlZSB0aGF0IGBORlRfUkVKRUNUX05FVERFVmAgaXMgcmVsaWFudCBvbiBib3RoIGBORlRfUkVKRUNUX0lQVjRgIGFuZCBgTkZUX1JFSkVDVF9JUFY2YC4gTWFrZXMgcGVyZmVjdCBzZW5zZS4gQW5kLCBhcyBpZiB0aGF0IHdlcmVuJ3QgZW5vdWdoLCBpdCdzIGFsc28gbmVzdGVkIHdpdGhpbiBhbiBgaWYgTkZfVEFCTEVTX05FVERFVmAgY29uZGl0aW9uLiBPa2F5LCBzbyB0byBnZXQgdGhpcyBmdW5jdGlvbmFsaXR5IGVuYWJsZWQsIGl0J3MgY2xlYXI6IEkgbmVlZCB0byBleHBsaWNpdGx5IGVuYWJsZSBib3RoIGBORl9UQUJMRVNfTkVUREVWYCAqYW5kKiBgTkZUX1JFSkVDVF9ORVRERVZgLiBTZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBOb3csIGJlZm9yZSBJIGNvbW1pdCB0byB0aGF0LCBJJ2QgYmV0dGVyIGRvdWJsZS1jaGVjayBgTkZfVEFCTEVTX05FVERFVmAgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBvdGhlciBpbXBsaWNhdGlvbnMgSSdtIG1pc3NpbmcuIExldCdzIG1ha2Ugc3VyZSB0aGF0J3MgZXhhY3RseSB3aGF0IEkgZXhwZWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTI1MCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6Mzg6MjEuNjAzNDA2MjgxWiIsIlNlcSI6NjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDE2NTQzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZfVEFCTEVTX05FVERFVlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTQ3Mj1jb25maWcgTkZfVEFCTEVTX0lORVRcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NzktXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ4MDpjb25maWcgTkZfVEFCTEVTX05FVERFVlxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00ODEtXFx0Ym9vbCBcXFwiTmV0ZmlsdGVyIG5mX3RhYmxlcyBuZXRkZXYgdGFibGVzIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM4OjIxLjY2NzU3NTg2OVoiLCJTZXEiOjYzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTI3MjYwNzA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBpbnN0cnVjdGlvbnMsIHRoaW5raW5nIHRocm91Z2ggdGhlbSBhcyBJIHdvdWxkIGFwcHJvYWNoIGEgc2ltaWxhciB0YXNrOlxuXG4qKkVuYWJsaW5nIE5ldGRldiBGZWF0dXJlcyBmb3IgbmZ0YWJsZXMqKlxuXG5SaWdodCwgc28gd2UncmUgbG9va2luZyB0byBlbmFibGUgc29tZSBuZXRkZXYtc3BlY2lmaWMgZmVhdHVyZXMgZm9yIG5mdGFibGVzLCBzcGVjaWZpY2FsbHkgYE5GX1RBQkxFU19ORVRERVZgIGFuZCBgTkZUX1JFSkVDVF9ORVRERVZgLiBUaGF0IHNvdW5kcyBsaWtlIGEgZ29vZCBkaXJlY3Rpb24sIHBhcnRpY3VsYXJseSBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggdHJhZmZpYyBmaWx0ZXJpbmcgYXQgdGhlIG5ldHdvcmsgZGV2aWNlIGxldmVsLiBXZSB3YW50IHRoYXQgZmluZS1ncmFpbmVkIGNvbnRyb2wgZm9yIG1vcmUgcGVyZm9ybWFudCBwYWNrZXQgcHJvY2Vzc2luZy4gTm93LCBiZWZvcmUgd2UgZmxpcCB0aGUgc3dpdGNoIG9uIGBORlRfUkVKRUNUX05FVERFVmAsIHRob3VnaCwgaXQncyBhbHdheXMgd2lzZSB0byBjaGVjayBmb3IgYW55IGRlcGVuZGVuY2llcywgZXNwZWNpYWxseSB3aXRoIG5mdGFibGVzLiBJdCdzIHNtYXJ0IHRvIGRvdWJsZSBjaGVjaywgc28gbGV0J3MgdGFrZSBhIHF1aWNrIGxvb2sgYXQgdGhlIGRlcGVuZGVuY2llcyBmb3IgYE5GVF9SRUpFQ1RfSVBWNGAgc2luY2UgYE5GVF9SRUpFQ1RfTkVUREVWYCB3aWxsIHByb2JhYmx5IHRvdWNoIGlwdjQgYXMgd2VsbC4gTWFraW5nIHN1cmUgd2UgZG9uJ3QgaW50cm9kdWNlIGFueSB1bmV4cGVjdGVkIGNvbmZsaWN0cyBvciBicmVhayBleGlzdGluZyBjb25maWd1cmF0aW9ucyBpcyBrZXkgdG8gYSBzdGFibGUgZGVwbG95bWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk2NDksIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozODoyNS43OTQ4NDAxODJaIiwiU2VxIjo2NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxNzU0NTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORlRfUkVKRUNUX0lQVjRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc9NDA9aWYgTkZfVEFCTEVTX0lQVjRcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy00MS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZzo0Mjpjb25maWcgTkZUX1JFSkVDVF9JUFY0XFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctNDMtXFx0c2VsZWN0IE5GX1JFSkVDVF9JUFY0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM4OjI1Ljg1NjU5OTI1MVoiLCJTZXEiOjY1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTA0ODIzODUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipEZXBlbmRlbmN5IERlZXAgRGl2ZTogSVB2NCBhbmQgSVB2NiBpbiB0aGUgRmlyZXdhbGwgQ29udGV4dCoqXG5cblJpZ2h0LCBsZXQncyBzdGFydCB3aXRoIHRoaXMgZmlyZXdhbGwgY29uZmlndXJhdGlvbiwgSSdtIHRoaW5raW5nLCBJIGtub3cgYE5GX1RBQkxFU19JUFY0YCBpcyBlc3NlbnRpYWwsIGFuZCBubyBzdXJwcmlzZXMgdGhlcmUsIHRoYXQncyBleHBlY3RlZC4gTXkgbmV4dCB0aG91Z2h0IGlzIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgcGljdHVyZSwgc28gSSdtIHNoaWZ0aW5nIG15IGZvY3VzIG5vdyBhbmQgaW1tZWRpYXRlbHkgZGlnZ2luZyBpbnRvIHRoZSBkZXBlbmRlbmNpZXMgb2YgYE5GX1RBQkxFU19JUFY2YC4gSSBuZWVkIHRvIGVuc3VyZSBhIGNvbXBsZXRlIGFuZCBjb21wYXRpYmxlIHNldHVwLiBJIGhhdmUgdG8gdGhpbmsgYWJvdXQgcG90ZW50aWFsIGludGVyZGVwZW5kZW5jaWVzLCBvZiBjb3Vyc2UuIEkgd2FudCB0byBhdm9pZCBhbnkgY29uZmlndXJhdGlvbiBzdXJwcmlzZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMDM2LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6Mzg6MzAuNzYxNDI1MTcxWiIsIlNlcSI6NjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDE2MDUzMjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GX1RBQkxFU19JUFY2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnPTI5PWlmIE5GX1RBQkxFU1xcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTMwLVxcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnOjMxOmNvbmZpZyBORl9UQUJMRVNfSVBWNlxcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTMyLVxcdGJvb2wgXFxcIklQdjYgbmZfdGFibGVzIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM4OjMwLjk2MzAzNzMzNVoiLCJTZXEiOjY3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTY4NDMxMjcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqTXkgSW1tZWRpYXRlIEFzc2Vzc21lbnQqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgcGhyYXNlIFwiTkZUX1JFSkVDVF9JUFY2XCIganVzdCBwb3BwZWQgaW50byBteSBoZWFkLiBNeSBpbml0aWFsIHJlYWN0aW9uIGlzLCB0aGlzIGlzIGxpa2VseSByZWxhdGVkIHRvIG5ldHdvcmsgY29uZmlndXJhdGlvbiBhbmQgc3BlY2lmaWNhbGx5LCBob3cgYSBzeXN0ZW0gb3IgYXBwbGljYXRpb24gaXMgaGFuZGxpbmcgSVB2NiB0cmFmZmljIGluIHRoZSBjb250ZXh0IG9mIE5vbi1GdW5naWJsZSBUb2tlbnMgKE5GVHMpLiBHaXZlbiB0aGUgc3BlY2lmaWNpdHkgb2YgdGhlIHRlcm1pbm9sb2d5LCBJJ20gYWxyZWFkeSBmb3JtdWxhdGluZyBhIGZldyBrZXkgcG9zc2liaWxpdGllcy5cblxuRmlyc3QsIEkgaW1tZWRpYXRlbHkgY29uc2lkZXIgdGhlIHNlY3VyaXR5IGltcGxpY2F0aW9ucy4gSXMgdGhpcyBhIHJ1bGUgZGVzaWduZWQgdG8gKnJlamVjdCogSVB2NiBjb25uZWN0aW9ucyBvciB0cmFmZmljPyBJZiBzbywgd2h5PyBJcyB0aGlzIHRvIG1pdGlnYXRlIHBvdGVudGlhbCBhdHRhY2sgdmVjdG9ycyBvciB2dWxuZXJhYmlsaXRpZXMgYXNzb2NpYXRlZCB3aXRoIElQdjYgaW1wbGVtZW50YXRpb25zLCBwZXJoYXBzIHRob3NlIGxlc3Mgd2VsbC10ZXN0ZWQgb3IgbW9yZSByZWNlbnRseSBwYXRjaGVkIHRoYW4gdGhlaXIgSVB2NCBjb3VudGVycGFydHMgd2l0aGluIHRoZSBzeXN0ZW0/IEFyZSB0aGVyZSBrbm93biBpc3N1ZXMgdGhhdCBtYWtlIElQdjYgbGVzcyBzZWN1cmUsIG9yIG1vcmUgc3VzY2VwdGlibGUgdG8gY2VydGFpbiB0eXBlcyBvZiBhdHRhY2tzLCB3aXRoaW4gdGhlIHNwZWNpZmljIGFyY2hpdGVjdHVyZSBvciBlbnZpcm9ubWVudCB0aGUgTkZUcyBhcmUgb3BlcmF0aW5nIGluPyBUaGUgaW1wbGljYXRpb25zIGFyZSB3aWRlLlxuXG5TZWNvbmQsIEknbSB0aGlua2luZyBhYm91dCB0aGUgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGNvbnNpZGVyYXRpb25zLiBJcyByZWplY3RpbmcgSVB2NiBhIGRlbGliZXJhdGUgb3B0aW1pemF0aW9uPyBQZXJoYXBzIHRoZXJlJ3MgYSBzcGVjaWZpYyByZWFzb24gSVB2NiBpc24ndCBzdXBwb3J0ZWQsIGxpa2UgZGVwZW5kZW5jaWVzIG9uIElQdjQtb25seSBpbmZyYXN0cnVjdHVyZSB3aXRoaW4gdGhlIE5GVCdzIHN5c3RlbSwgb3IgdGhhdCByZWplY3RpbmcgSVB2NiBpbmNyZWFzZXMgdGhlIHBlcmZvcm1hbmNlIG9mIHRoZSBzeXN0ZW0gaW4gc29tZSByZWdhcmQuIEl0IGNvdWxkIGJlIHRoYXQgdGhlIGN1cnJlbnQgaW5mcmFzdHJ1Y3R1cmUgb3IgY29kZWJhc2UgcmVsaWVzIG1vcmUgaGVhdmlseSBvbiBJUHY0IGZvciBpbnRlcm5hbCBjb21tdW5pY2F0aW9uIG9yIGV4dGVybmFsIHF1ZXJpZXMuXG5cbkZpbmFsbHksIEknbSBtZW50YWxseSBwYXJzaW5nIHRoZSBsYXJnZXIgY29udGV4dC4gSXMgdGhpcyBhIGNvbmZpZ3VyYXRpb24gZGlyZWN0aXZlIHdpdGhpbiBhIGZpcmV3YWxsLCBhIGxvYWQgYmFsYW5jZXIsIGEgY29udGFpbmVyIG9yY2hlc3RyYXRpb24gc3lzdGVtLCBvciBzb21lIG90aGVyIG5ldHdvcmsgZGV2aWNlIG9yIGFwcGxpY2F0aW9uIGNvbnRyb2xsaW5nIGFjY2VzcyB0byBORlQtcmVsYXRlZCBzZXJ2aWNlcz8gV2hhdCdzIHRoZSAqcmVhc29uKiBmb3IgdGhpcyByZWplY3Rpb24/IElzIGl0IGEgZGVmYXVsdCwgb3IgaGFzIGl0IGJlZW4gZXhwbGljaXRseSBjb25maWd1cmVkPyBJZiBpdCdzIGEgc2VjdXJpdHkgbWVhc3VyZSwgaGFzIHRoZSBzeXN0ZW0gcmVjZWl2ZWQgcmVndWxhciBzZWN1cml0eSBhdWRpdHMgdG8gY29uZmlybSBpdHMgZWZmZWN0aXZlbmVzcz8gSWYgaXQncyBmb3IgcGVyZm9ybWFuY2UsIHdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgb24gdXNlcnMgdGhhdCBkZXBlbmQgb24gSVB2NiBjb25uZWN0aW9ucz9cblxuXG4iLCJJbnB1dFRva2VucyI6MjAzNDMsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozODozNi4xMzE0NzE3MzdaIiwiU2VxIjo2OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjQ1MTc3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZUX1JFSkVDVF9JUFY2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnPTM2PWlmIE5GX1RBQkxFU19JUFY2XFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMzctXFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc6Mzg6Y29uZmlnIE5GVF9SRUpFQ1RfSVBWNlxcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTM5LVxcdHNlbGVjdCBORl9SRUpFQ1RfSVBWNlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozODozNi4yMzM5MzAxNTRaIiwiU2VxIjo2OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjUxMjM1NjMzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFbmFibGluZyBOZXRmaWx0ZXIgUmVqZWN0IEZ1bmN0aW9uYWxpdHkqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IHRoaXMgTmV0ZmlsdGVyIHJlamVjdCBmdW5jdGlvbmFsaXR5IHdvcmtpbmcuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBlbmFibGUgYSBzdWl0ZSBvZiBvcHRpb25zOiBgTkZfVEFCTEVTYCwgYE5GX1RBQkxFU19JUFY0YCwgYE5GVF9SRUpFQ1RfSVBWNGAsIGBORl9UQUJMRVNfSVBWNmAsIGBORlRfUkVKRUNUX0lQVjZgLCBgTkZfVEFCTEVTX05FVERFVmAsIGFuZCBgTkZUX1JFSkVDVF9ORVRERVZgLiBXYWl0IGEgbWludXRlLCBJIHNob3VsZCBhbHNvIGNvbnNpZGVyIGBORl9UQUJMRVNfSU5FVGAg4oCTIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgdG9vLCBjb25zaWRlcmluZyB0aGUgY29udGV4dC5cblxuRmlyc3QgdGhpbmdzIGZpcnN0LCBJJ2xsIGNvbmZpcm0gdGhhdCBgTkZfVEFCTEVTYCBpdHNlbGYgaXMgdGhlIGNvcmUgcmVxdWlyZW1lbnQuIFllcCwgdGhhdCdzIHRoZSBiaWcgb25lLiBJdCBsb29rcyBsaWtlIGl0LlxuXG5OZXh0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBjb2RlIGNvbXBpbGVzLiBXaWxsIGBORl9SRUpFQ1RfSVBWNGAgYWxvbmUgYmUgc3VmZmljaWVudD8gWWVzLCBpdCBhcHBlYXJzIHNvOyB0aGF0IHRha2VzIGNhcmUgb2YgdGhlIGNvbXBpbGF0aW9uIG9mIGBuZl9yZWplY3RfaXB2NC5jYC4gSG93ZXZlciwganVzdCBjb21waWxpbmcgaXNuJ3QgZW5vdWdoOyB0aGUgY29kZSBuZWVkcyB0byAqZnVuY3Rpb24qLiBUbyBwcm9wZXJseSByZWFjaCB0aGUgYE5GX0lORVRfSU5HUkVTU2AgaG9vaywgSSBiZWxpZXZlIEkgbmVlZCBgTkZUX1JFSkVDVF9ORVRERVZgLiBJIHNob3VsZCB0YWtlIGEgbG9vayBhdCB0aGUgY29kZSBpbiBgbmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X25ldGRldi5jYCB0byBjb25maXJtIG15IHRoaW5raW5nIGFuZCB1bmRlcnN0YW5kIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDg5MywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozODo0Mi43NDYyODg3ODVaIiwiU2VxIjo3MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwOTg5Njk4NywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfc2VuZF91bnJlYWNoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9uZXRkZXYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6Mzg6NDIuODU2MTkxMzIyWiIsIlNlcSI6NzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNDQyMjU0OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4uLlxuXG4qKkRlZXBlciBEaXZlIGludG8gbmZ0X3JlamVjdF9uZXRkZXYuYyoqXG5cbkhvbGQgb24gYSBtaW51dGUsIHRoaXMgaXMgdGhyb3dpbmcgbWUgb2ZmLiBJIHdhcyB1bmRlciB0aGUgaW1wcmVzc2lvbiB0aGF0IGBuZnRfcmVqZWN0X25ldGRldi5jYCBtYWRlIHVzZSBvZiBgbmZfc2VuZF91bnJlYWNoYCwgYnV0IGxvb2tpbmcgYXQgdGhlIGNvZGUgZGlyZWN0bHksIGl0IGRvZXNuJ3Qgc2VlbSB0byBjYWxsIGl0LiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYXNzdW1wdGlvbi4gTGV0IG1lIGltbWVkaWF0ZWx5IGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZywgYW5kIGNoZWNrIHRoZSBzb3VyY2UgY29kZSBmb3IgYG5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9uZXRkZXYuY2AuIEkgbmVlZCB0byBlbnN1cmUgSSBoYXZlIGEgY29tcGxldGUgcGljdHVyZSBvZiB0aGUgY29udHJvbCBmbG93IHdpdGhpbiB0aGlzIG1vZHVsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE0NDgsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozODo0Ni4wMDA0MTk2NjVaIiwiU2VxIjo3MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA3NTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9uZXRkZXYuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdC8qXFxuICAgMzpcXHQgKiBDb3B5cmlnaHQgKGMpIDIwMjAgTGF1cmEgR2FyY2lhIExpZWJhbmEgXFx1MDAzY25ldm9sYUBnbWFpbC5jb21cXHUwMDNlXFxuICAgNDpcXHQgKiBDb3B5cmlnaHQgKGMpIDIwMjAgSm9zZSBNLiBHdWlzYWRvIFxcdTAwM2NndWlnb21AcmlzZXVwLm5ldFxcdTAwM2VcXG4gICA1OlxcdCAqL1xcbiAgIDY6XFx0XFxuICAgNzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZXRoZXJkZXZpY2UuaFxcdTAwM2VcXG4gICA4OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9rZXJuZWwuaFxcdTAwM2VcXG4gICA5OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9pbml0LmhcXHUwMDNlXFxuICAxMDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuICAxMTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbmV0bGluay5oXFx1MDAzZVxcbiAgMTI6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L25ldGZpbHRlci5oXFx1MDAzZVxcbiAgMTM6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L25ldGZpbHRlci9uZl90YWJsZXMuaFxcdTAwM2VcXG4gIDE0OlxcdCNpbmNsdWRlIFxcdTAwM2NuZXQvbmV0ZmlsdGVyL25mX3RhYmxlcy5oXFx1MDAzZVxcbiAgMTU6XFx0I2luY2x1ZGUgXFx1MDAzY25ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdC5oXFx1MDAzZVxcbiAgMTY6XFx0I2luY2x1ZGUgXFx1MDAzY25ldC9uZXRmaWx0ZXIvaXB2NC9uZl9yZWplY3QuaFxcdTAwM2VcXG4gIDE3OlxcdCNpbmNsdWRlIFxcdTAwM2NuZXQvbmV0ZmlsdGVyL2lwdjYvbmZfcmVqZWN0LmhcXHUwMDNlXFxuICAxODpcXHRcXG4gIDE5OlxcdHN0YXRpYyB2b2lkIG5mdF9yZWplY3RfcXVldWVfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqbnNrYiwgc3RydWN0IHNrX2J1ZmYgKm9sZHNrYilcXG4gIDIwOlxcdHtcXG4gIDIxOlxcdFxcdGRldl9oYXJkX2hlYWRlcihuc2tiLCBuc2tiLVxcdTAwM2VkZXYsIG50b2hzKG9sZHNrYi1cXHUwMDNlcHJvdG9jb2wpLFxcbiAgMjI6XFx0XFx0XFx0XFx0ZXRoX2hkcihvbGRza2IpLVxcdTAwM2VoX3NvdXJjZSwgZXRoX2hkcihvbGRza2IpLVxcdTAwM2VoX2Rlc3QsXFxuICAyMzpcXHRcXHRcXHRcXHRuc2tiLVxcdTAwM2VsZW4pO1xcbiAgMjQ6XFx0XFx0ZGV2X3F1ZXVlX3htaXQobnNrYik7XFxuICAyNTpcXHR9XFxuICAyNjpcXHRcXG4gIDI3OlxcdHN0YXRpYyB2b2lkIG5mdF9yZWplY3RfbmV0ZGV2X3NlbmRfdjRfdGNwX3Jlc2V0KHN0cnVjdCBuZXQgKm5ldCxcXG4gIDI4OlxcdFxcdFxcdFxcdFxcdFxcdFxcdHN0cnVjdCBza19idWZmICpvbGRza2IsXFxuICAyOTpcXHRcXHRcXHRcXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiAgMzA6XFx0XFx0XFx0XFx0XFx0XFx0XFx0aW50IGhvb2spXFxuICAzMTpcXHR7XFxuICAzMjpcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqbnNrYjtcXG4gIDMzOlxcdFxcbiAgMzQ6XFx0XFx0bnNrYiA9IG5mX3JlamVjdF9za2JfdjRfdGNwX3Jlc2V0KG5ldCwgb2xkc2tiLCBkZXYsIGhvb2spO1xcbiAgMzU6XFx0XFx0aWYgKCFuc2tiKVxcbiAgMzY6XFx0XFx0XFx0cmV0dXJuO1xcbiAgMzc6XFx0XFxuICAzODpcXHRcXHRuZnRfcmVqZWN0X3F1ZXVlX3htaXQobnNrYiwgb2xkc2tiKTtcXG4gIDM5OlxcdH1cXG4gIDQwOlxcdFxcbiAgNDE6XFx0c3RhdGljIHZvaWQgbmZ0X3JlamVjdF9uZXRkZXZfc2VuZF92NF91bnJlYWNoKHN0cnVjdCBuZXQgKm5ldCxcXG4gIDQyOlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpvbGRza2IsXFxuICA0MzpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiAgNDQ6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgaW50IGhvb2ssIHU4IGNvZGUpXFxuICA0NTpcXHR7XFxuICA0NjpcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqbnNrYjtcXG4gIDQ3OlxcdFxcbiAgNDg6XFx0XFx0bnNrYiA9IG5mX3JlamVjdF9za2JfdjRfdW5yZWFjaChuZXQsIG9sZHNrYiwgZGV2LCBob29rLCBjb2RlKTtcXG4gIDQ5OlxcdFxcdGlmICghbnNrYilcXG4gIDUwOlxcdFxcdFxcdHJldHVybjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6Mzg6NDYuMDAwNTI5NzM1WiIsIlNlcSI6NzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NDU2MzEyMjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGl2aW5nIGludG8gdGhlIE5ldHdvcmsgRmlsdGVyaW5nIExvZ2ljKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgbmZ0X3JlamVjdF9uZXRkZXYuY2AgZmlsZSBhbmQgaXQgbG9va3MgbGlrZSBpdCdzIGNhbGxpbmcgYG5mX3JlamVjdF9za2JfdjRfdW5yZWFjaGAuIEludGVyZXN0aW5nLiBXYWl0IGEgc2Vjb25kLCB0aGUgcGF0Y2ggbm90ZXMgYXJlIHBvaW50aW5nIG1lIHRvd2FyZHMgYG5mX3NlbmRfdW5yZWFjaGAsIG5vdCB0aGF0IGZ1bmN0aW9uIEkgaW5pdGlhbGx5IHNwb3R0ZWQuIFRoaXMgaXMgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gZm9sbG93aW5nIHRoZSBjb3JyZWN0IHRyYWlsLCBzbyBsZXQncyBkb3VibGUtY2hlY2sgYG5mX3NlbmRfdW5yZWFjaGAgYW5kIGVuc3VyZSB0aGF0J3MgdHJ1bHkgdGhlIGtleSBhcmVhIGltcGFjdGVkIGJ5IHRoZSBwYXRjaC4gSSdsbCBuZWVkIHRvIHJldHJhY2UgbXkgc3RlcHMgYSBiaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNDUyLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozODo0OS40NDYxNjY0MVoiLCJTZXEiOjc0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTcxMTA1NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfc2VuZF91bnJlYWNoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jPTM0ND1FWFBPUlRfU1lNQk9MX0dQTChuZl9zZW5kX3Jlc2V0KTtcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYy0zNDUtXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmM6MzQ2OnZvaWQgbmZfc2VuZF91bnJlYWNoKHN0cnVjdCBza19idWZmICpza2JfaW4sIGludCBjb2RlLCBpbnQgaG9vaylcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYy0zNDcte1xcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMtMzcyLX1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYzozNzM6RVhQT1JUX1NZTUJPTF9HUEwobmZfc2VuZF91bnJlYWNoKTtcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYy0zNzQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM4OjQ5LjU0MzI4NTEwN1oiLCJTZXEiOjc1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDc4NzQxNTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIGBuZl9zZW5kX3VucmVhY2hgIENhbGwgQ2hhaW4qKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBUaGlzIGRvZXNuJ3QgbWFrZSBzZW5zZS4gSWYgYG5mdF9yZWplY3RfbmV0ZGV2YCAqZG9lc24ndCogY2FsbCBgbmZfc2VuZF91bnJlYWNoYCwgdGhlbiBob3cgb24gZWFydGggY2FuIGBob29rID09IE5GX0lORVRfSU5HUkVTU2AgZXZlciBiZSB0cnVlIHdpdGhpbiBgbmZfc2VuZF91bnJlYWNoYD8gVGhhdCBjb25kaXRpb24gZmVlbHMgZnVuZGFtZW50YWxseSBicm9rZW4uIEkgbmVlZCB0byB0cmFjZSB0aGlzIGNhbGwgY2hhaW4gYW5kIGZpZ3VyZSBvdXQgd2hhdCdzIGdvaW5nIG9uLiBMZXQgbWUgc3RhcnQgYnkgbWV0aWN1bG91c2x5IGV4YW1pbmluZyBhbGwgdGhlIHBsYWNlcyBpbiB0aGUgY29kZSB3aGVyZSBgbmZfc2VuZF91bnJlYWNoYCBpcyBhY3R1YWxseSBpbnZva2VkLiBUaGlzIHNob3VsZCBpbGx1bWluYXRlIHRoZSBwYXRoIGFuZCBjbGFyaWZ5IHRoaXMgYXBwYXJlbnQgY29udHJhZGljdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdyBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjkyNiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM4OjU0LjAyMjAyOTkyWiIsIlNlcSI6NzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjE4NDk4NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfc2VuZF91bnJlYWNoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYz0zMT1yZWplY3RfdGcoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYy0zNy1cXHRjYXNlIElQVF9JQ01QX05FVF9VTlJFQUNIQUJMRTpcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jOjM4OlxcdFxcdG5mX3NlbmRfdW5yZWFjaChza2IsIElDTVBfTkVUX1VOUkVBQ0gsIGhvb2spO1xcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtMzktXFx0XFx0YnJlYWs7XFxubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYy00MC1cXHRjYXNlIElQVF9JQ01QX0hPU1RfVU5SRUFDSEFCTEU6XFxubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYzo0MTpcXHRcXHRuZl9zZW5kX3VucmVhY2goc2tiLCBJQ01QX0hPU1RfVU5SRUFDSCwgaG9vayk7XFxubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYy00Mi1cXHRcXHRicmVhaztcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jLTQzLVxcdGNhc2UgSVBUX0lDTVBfUFJPVF9VTlJFQUNIQUJMRTpcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jOjQ0OlxcdFxcdG5mX3NlbmRfdW5yZWFjaChza2IsIElDTVBfUFJPVF9VTlJFQUNILCBob29rKTtcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jLTQ1LVxcdFxcdGJyZWFrO1xcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtNDYtXFx0Y2FzZSBJUFRfSUNNUF9QT1JUX1VOUkVBQ0hBQkxFOlxcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmM6NDc6XFx0XFx0bmZfc2VuZF91bnJlYWNoKHNrYiwgSUNNUF9QT1JUX1VOUkVBQ0gsIGhvb2spO1xcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtNDgtXFx0XFx0YnJlYWs7XFxubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYy00OS1cXHRjYXNlIElQVF9JQ01QX05FVF9QUk9ISUJJVEVEOlxcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmM6NTA6XFx0XFx0bmZfc2VuZF91bnJlYWNoKHNrYiwgSUNNUF9ORVRfQU5PLCBob29rKTtcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jLTUxLVxcdFxcdGJyZWFrO1xcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtNTItXFx0Y2FzZSBJUFRfSUNNUF9IT1NUX1BST0hJQklURUQ6XFxubmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9SRUpFQ1QuYzo1MzpcXHRcXHRuZl9zZW5kX3VucmVhY2goc2tiLCBJQ01QX0hPU1RfQU5PLCBob29rKTtcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X1JFSkVDVC5jLTU0LVxcdFxcdGJyZWFrO1xcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtNTUtXFx0Y2FzZSBJUFRfSUNNUF9BRE1JTl9QUk9ISUJJVEVEOlxcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmM6NTY6XFx0XFx0bmZfc2VuZF91bnJlYWNoKHNrYiwgSUNNUF9QS1RfRklMVEVSRUQsIGhvb2spO1xcbm5ldC9pcHY0L25ldGZpbHRlci9pcHRfUkVKRUNULmMtNTctXFx0XFx0YnJlYWs7XFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYz0zNDQ9RVhQT1JUX1NZTUJPTF9HUEwobmZfc2VuZF9yZXNldCk7XFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMtMzQ1LVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jOjM0Njp2b2lkIG5mX3NlbmRfdW5yZWFjaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luLCBpbnQgY29kZSwgaW50IGhvb2spXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMtMzQ3LXtcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jLTM3Mi19XFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmM6MzczOkVYUE9SVF9TWU1CT0xfR1BMKG5mX3NlbmRfdW5yZWFjaCk7XFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmMtMzc0LVxcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaXB2NC5jPTE5PXN0YXRpYyB2b2lkIG5mdF9yZWplY3RfaXB2NF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZnRfcmVqZWN0X2lwdjQuYy0yNi1cXHRjYXNlIE5GVF9SRUpFQ1RfSUNNUF9VTlJFQUNIOlxcbm5ldC9pcHY0L25ldGZpbHRlci9uZnRfcmVqZWN0X2lwdjQuYzoyNzpcXHRcXHRuZl9zZW5kX3VucmVhY2gocGt0LVxcdTAwM2Vza2IsIHByaXYtXFx1MDAzZWljbXBfY29kZSwgbmZ0X2hvb2socGt0KSk7XFxubmV0L2lwdjQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaXB2NC5jLTI4LVxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmM9MzU9cmVqZWN0X3RnNihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXFxuLS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYy00MS1cXHRjYXNlIElQNlRfSUNNUDZfTk9fUk9VVEU6XFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmM6NDI6XFx0XFx0bmZfc2VuZF91bnJlYWNoNihuZXQsIHNrYiwgSUNNUFY2X05PUk9VVEUsIHh0X2hvb2tudW0ocGFyKSk7XFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNDMtXFx0XFx0YnJlYWs7XFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNDQtXFx0Y2FzZSBJUDZUX0lDTVA2X0FETV9QUk9ISUJJVEVEOlxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jOjQ1OlxcdFxcdG5mX3NlbmRfdW5yZWFjaDYobmV0LCBza2IsIElDTVBWNl9BRE1fUFJPSElCSVRFRCxcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYy00Ni1cXHRcXHRcXHRcXHQgeHRfaG9va251bShwYXIpKTtcXG4tLVxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jLTQ4LVxcdGNhc2UgSVA2VF9JQ01QNl9OT1RfTkVJR0hCT1VSOlxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jOjQ5OlxcdFxcdG5mX3NlbmRfdW5yZWFjaDYobmV0LCBza2IsIElDTVBWNl9OT1RfTkVJR0hCT1VSLFxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jLTUwLVxcdFxcdFxcdFxcdCB4dF9ob29rbnVtKHBhcikpO1xcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNTItXFx0Y2FzZSBJUDZUX0lDTVA2X0FERFJfVU5SRUFDSDpcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYzo1MzpcXHRcXHRuZl9zZW5kX3VucmVhY2g2KG5ldCwgc2tiLCBJQ01QVjZfQUREUl9VTlJFQUNILFxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jLTU0LVxcdFxcdFxcdFxcdCB4dF9ob29rbnVtKHBhcikpO1xcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNTYtXFx0Y2FzZSBJUDZUX0lDTVA2X1BPUlRfVU5SRUFDSDpcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYzo1NzpcXHRcXHRuZl9zZW5kX3VucmVhY2g2KG5ldCwgc2tiLCBJQ01QVjZfUE9SVF9VTlJFQUNILFxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jLTU4LVxcdFxcdFxcdFxcdCB4dF9ob29rbnVtKHBhcikpO1xcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNjYtXFx0Y2FzZSBJUDZUX0lDTVA2X1BPTElDWV9GQUlMOlxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jOjY3OlxcdFxcdG5mX3NlbmRfdW5yZWFjaDYobmV0LCBza2IsIElDTVBWNl9QT0xJQ1lfRkFJTCwgeHRfaG9va251bShwYXIpKTtcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYy02OC1cXHRcXHRicmVhaztcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9SRUpFQ1QuYy02OS1cXHRjYXNlIElQNlRfSUNNUDZfUkVKRUNUX1JPVVRFOlxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X1JFSkVDVC5jOjcwOlxcdFxcdG5mX3NlbmRfdW5yZWFjaDYobmV0LCBza2IsIElDTVBWNl9SRUpFQ1RfUk9VVEUsXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfUkVKRUNULmMtNzEtXFx0XFx0XFx0XFx0IHh0X2hvb2tudW0ocGFyKSk7XFxuLS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjYuYz00MTI9c3RhdGljIGJvb2wgcmVqZWN0Nl9jc3VtX29rKHN0cnVjdCBza19idWZmICpza2IsIGludCBob29rKVxcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY2LmMtNDMzLVxcbm5ldC9pcHY2L25ldGZpbHRlci9uZl9yZWplY3RfaXB2Ni5jOjQzNDp2b2lkIG5mX3NlbmRfdW5yZWFjaDYoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luLFxcbm5ldC9pcHY2L25ldGZpbHRlci9uZl9yZWplY3RfaXB2Ni5jLTQzNS1cXHRcXHQgICAgICB1bnNpZ25lZCBjaGFyIGNvZGUsIHVuc2lnbmVkIGludCBob29rbnVtKVxcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY2LmMtNDQ3LX1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjYuYzo0NDg6RVhQT1JUX1NZTUJPTF9HUEwobmZfc2VuZF91bnJlYWNoNik7XFxubmV0L2lwdjYvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY2LmMtNDQ5LVxcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL25mdF9yZWplY3RfaXB2Ni5jPTE5PXN0YXRpYyB2b2lkIG5mdF9yZWplY3RfaXB2Nl9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcXG4tLVxcbm5ldC9pcHY2L25ldGZpbHRlci9uZnRfcmVqZWN0X2lwdjYuYy0yNi1cXHRjYXNlIE5GVF9SRUpFQ1RfSUNNUF9VTlJFQUNIOlxcbm5ldC9pcHY2L25ldGZpbHRlci9uZnRfcmVqZWN0X2lwdjYuYzoyNzpcXHRcXHRuZl9zZW5kX3VucmVhY2g2KG5mdF9uZXQocGt0KSwgcGt0LVxcdTAwM2Vza2IsIHByaXYtXFx1MDAzZWljbXBfY29kZSxcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pcHY2LmMtMjgtXFx0XFx0XFx0XFx0IG5mdF9ob29rKHBrdCkpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYz0xNz1zdGF0aWMgdm9pZCBuZnRfcmVqZWN0X2luZXRfZXZhbChjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jLTI2LVxcdFxcdGNhc2UgTkZUX1JFSkVDVF9JQ01QX1VOUkVBQ0g6XFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYzoyNzpcXHRcXHRcXHRuZl9zZW5kX3VucmVhY2gocGt0LVxcdTAwM2Vza2IsIHByaXYtXFx1MDAzZWljbXBfY29kZSxcXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jLTI4LVxcdFxcdFxcdFxcdFxcdG5mdF9ob29rKHBrdCkpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy0zNC1cXHRcXHRjYXNlIE5GVF9SRUpFQ1RfSUNNUFhfVU5SRUFDSDpcXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jOjM1OlxcdFxcdFxcdG5mX3NlbmRfdW5yZWFjaChwa3QtXFx1MDAzZXNrYixcXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jLTM2LVxcdFxcdFxcdFxcdFxcdG5mdF9yZWplY3RfaWNtcF9jb2RlKHByaXYtXFx1MDAzZWljbXBfY29kZSksXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9yZWplY3RfaW5ldC5jLTQzLVxcdFxcdGNhc2UgTkZUX1JFSkVDVF9JQ01QX1VOUkVBQ0g6XFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYzo0NDpcXHRcXHRcXHRuZl9zZW5kX3VucmVhY2g2KG5mdF9uZXQocGt0KSwgcGt0LVxcdTAwM2Vza2IsXFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy00NS1cXHRcXHRcXHRcXHRcXHQgcHJpdi1cXHUwMDNlaWNtcF9jb2RlLCBuZnRfaG9vayhwa3QpKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3JlamVjdF9pbmV0LmMtNTEtXFx0XFx0Y2FzZSBORlRfUkVKRUNUX0lDTVBYX1VOUkVBQ0g6XFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYzo1MjpcXHRcXHRcXHRuZl9zZW5kX3VucmVhY2g2KG5mdF9uZXQocGt0KSwgcGt0LVxcdTAwM2Vza2IsXFxubmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuYy01My1cXHRcXHRcXHRcXHRcXHQgbmZ0X3JlamVjdF9pY21wdjZfY29kZShwcml2LVxcdTAwM2VpY21wX2NvZGUpLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozODo1NC4xNDM4ODczNjZaIiwiU2VxIjo3NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI3MTEyNjc2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgTmV0ZmlsdGVyIFJlamVjdGlvbiBNZWNoYW5pc20qKlxuXG5Pa2F5LCBzbyBJJ20gdHJhY2luZyB0aHJvdWdoIHRoaXMgbmV0ZmlsdGVyIHNldHVwIGFuZCBpdCBsb29rcyBsaWtlIGBuZnRfcmVqZWN0X2luZXRgIGlzIHRoZSBrZXkgZnVuY3Rpb24gaGVyZSwgYW5kIHRoYXQncyBjYWxsaW5nIGBuZl9zZW5kX3VucmVhY2hgLiBHb3QgaXQuIE5vdywgc2luY2Ugd2UncmUgZGVhbGluZyB3aXRoIHRoZSBgaW5ldGAgZmFtaWx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGlzIHJlamVjdGlvbiBpcyBhY3R1YWxseSBoYXBwZW5pbmcgaW4gdGhlIHBhY2tldCBmbG93LiBEb2VzIHRoZSBgaW5ldGAgZmFtaWx5IGV2ZW4gaGF2ZSBhbiBpbmdyZXNzIGhvb2s/IEEgcXVpY2sgbWVudGFsIGNoZWNrLi4uIHllcywgb2YgY291cnNlLCBgTkZfSU5FVF9JTkdSRVNTYC4gQWxyaWdodCwgbGV0IG1lIGp1c3QgY29uZmlybSB0aGF0IHdpdGggYSBnbGFuY2UgYXQgYGluY2x1ZGUvdWFwaS9saW51eC9uZXRmaWx0ZXIuaGAgdG8gcmVmcmVzaCBteSBtZW1vcnkgYW5kIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcgY3J1Y2lhbCBhYm91dCB0aGUgaW5ncmVzcyBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU4OTcsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozODo1OC40MTUwMTcwMjZaIiwiU2VxIjo3OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5OTY1Mzg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5GX0lORVRfSU5HUkVTU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL3VhcGkvbGludXgvbmV0ZmlsdGVyLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS91YXBpL2xpbnV4L25ldGZpbHRlci5oPTQyPWVudW0gbmZfaW5ldF9ob29rcyB7XFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgvbmV0ZmlsdGVyLmgtNDgtXFx0TkZfSU5FVF9OVU1IT09LUyxcXG5pbmNsdWRlL3VhcGkvbGludXgvbmV0ZmlsdGVyLmg6NDk6XFx0TkZfSU5FVF9JTkdSRVNTID0gTkZfSU5FVF9OVU1IT09LUyxcXG5pbmNsdWRlL3VhcGkvbGludXgvbmV0ZmlsdGVyLmgtNTAtfTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6Mzg6NTguNDc0OTg3MzA0WiIsIlNlcSI6NzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MDE4ODQ1MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIE5ldHdvcmsgVHJhZmZpYyBSZWplY3Rpb24gaW4gdGhlIGluZXQgRmFtaWx5KipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBuZXR3b3JrIGZpbHRlcmluZyBzaXR1YXRpb24uIEl0IHNlZW1zIHByZXR0eSBjbGVhciB0aGF0IGBORl9JTkVUX0lOR1JFU1NgIGlzIGEgbGVnaXRpbWF0ZSBob29rIGZvciB0aGUgYGluZXRgIGZhbWlseSwgd2hpY2ggaXMgd2hhdCBJJ20gaW50ZXJlc3RlZCBpbiBoZXJlLiBUaGF0IG1ha2VzIHNlbnNlLCBhbmQgSSBjYW4gY29uZmlybSB0aGF0IGBuZnRfcmVqZWN0X2luZXRgIGlzIHRoZSBhcHByb3ByaWF0ZSBmdW5jdGlvbiB0byBhdHRhY2ggdG8gdGhlIGluZ3Jlc3MgaG9vaywgd2hpY2ggaXMgZ29vZC4gVGhhdCBjb25maXJtcyB0aGF0IGBORlRfUkVKRUNUX0lORVRgIGlzIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiBJIG5lZWQgdG8gbGV2ZXJhZ2UgdGhpcyB3aXRoaW4gdGhlIGBpbmV0YCBmYW1pbHkuIE5vdywgSSBzaG91bGQgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgcGljdHVyZSwgc28gbmV4dCBJJ20gZ29pbmcgdG8gZG91YmxlIGNoZWNrIGFuZCBleGFtaW5lIGBORlRfUkVKRUNUX0lORVRgJ3MgZGVwZW5kZW5jaWVzIHRvIG1ha2UgY2VydGFpbiB0aGF0IEkgaGF2ZSBldmVyeXRoaW5nIHByb3Blcmx5IGNvbnNpZGVyZWQgZm9yIGEgZ29vZCBpbXBsZW1lbnRhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjYyOTcsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMDozOTowMi4yNzY4NzM5MDlaIiwiU2VxIjo4MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2MjAyNDU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORlRfUkVKRUNUX0lORVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz01Nzg9Y29uZmlnIE5GVF9SRUpFQ1RcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy01ODUtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjU4Njpjb25maWcgTkZUX1JFSkVDVF9JTkVUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTU4Ny1cXHRkZXBlbmRzIG9uIE5GX1RBQkxFU19JTkVUXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjM5OjAyLjM2MzA4MTE2NloiLCJTZXEiOjgxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzc2OTk4MzU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gc2V0dGluZyB1cCBhIG5ldGZpbHRlciBjb25maWd1cmF0aW9uIGhlcmUsIGFuZCBpdCBsb29rcyBsaWtlIEknbGwgbmVlZCBib3RoIGBORl9UQUJMRVNfSU5FVGAgYW5kIGBORlRfUkVKRUNUX0lORVRgLiBOb3csIEkgcmVjYWxsIHRoYXQgYE5GX1RBQkxFU19JTkVUYCBuYXR1cmFsbHkgcHVsbHMgaW4gYE5GX1RBQkxFU19JUFY0YCwgdGhhdCBtYWtlcyBzZW5zZS4gQW5kIEknbSBwcmV0dHkgc3VyZSB0aGF0IGBORlRfUkVKRUNUX0lORVRgIHJlbGllcyBvbiBgbmZfc2VuZF91bnJlYWNoYC4gVGhlIHJlYWwgcXVlc3Rpb24gaXM6IGRvZXMgYE5GVF9SRUpFQ1RfSU5FVGAgaW1wbGljaXRseSBzZWxlY3QgYE5GX1JFSkVDVF9JUFY0YD8gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGRlcGVuZGVuY3kgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBCZXN0IHRvIGRpdmUgYmFjayBpbnRvIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIGFuZCB2ZXJpZnkgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRob3NlIG9wdGlvbnMgZm9yIGBORlRfUkVKRUNUX0lORVRgIGFnYWluLiBHb3R0YSBnZXQgdGhlIGNvbmZpZyByaWdodCFcblxuXG4iLCJJbnB1dFRva2VucyI6MjY2NjAsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6Mzk6MDYuMTQwMDgyODYyWiIsIlNlcSI6ODIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4MzM3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNTgwLFxuICBcIkxpbmVDb3VudFwiOiAxNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNTgwOlxcdFxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgbmZfdGFibGVzIHJlamVjdCBzdXBwb3J0XFxcIlxcbiA1ODE6XFx0XFx0aGVscFxcbiA1ODI6XFx0XFx0ICBUaGlzIG9wdGlvbiBhZGRzIHRoZSBcXFwicmVqZWN0XFxcIiBleHByZXNzaW9uIHRoYXQgeW91IGNhbiB1c2UgdG9cXG4gNTgzOlxcdFxcdCAgZXhwbGljaXRseSBkZW55IGFuZCBub3RpZnkgdmlhIFRDUCByZXNldC9JQ01QIGluZm9ybWF0aW9uYWwgZXJyb3JzXFxuIDU4NDpcXHRcXHQgIHVuYWxsb3dlZCB0cmFmZmljLlxcbiA1ODU6XFx0XFxuIDU4NjpcXHRjb25maWcgTkZUX1JFSkVDVF9JTkVUXFxuIDU4NzpcXHRcXHRkZXBlbmRzIG9uIE5GX1RBQkxFU19JTkVUXFxuIDU4ODpcXHRcXHRkZWZhdWx0IE5GVF9SRUpFQ1RcXG4gNTg5OlxcdFxcdHRyaXN0YXRlXFxuIDU5MDpcXHRcXG4gNTkxOlxcdGNvbmZpZyBORlRfQ09NUEFUXFxuIDU5MjpcXHRcXHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9YVEFCTEVTXFxuIDU5MzpcXHRcXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIHhfdGFibGVzIG92ZXIgbmZfdGFibGVzIG1vZHVsZVxcXCJcXG4gNTk0OlxcdFxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6Mzk6MDYuMTQwMzcyMDQyWiIsIlNlcSI6ODMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2OTg2Njc1NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmF2aWdhdGluZyB0aGUgQ29uZmlndXJhdGlvbiBDb251bmRydW06IEEgRGVlcCBEaXZlIGludG8gTmV0ZmlsdGVyJ3MgUmVqZWN0IE1lY2hhbmlzbXMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzdW1wdGlvbiB3YXMgdGhhdCBgTkZUX1JFSkVDVF9JTkVUYCBkaXJlY3RseSBpbXBsaWVzIHRoZSBzZWxlY3Rpb24gb2YgYE5GX1JFSkVDVF9JUFY0YCwgYnV0IHRoYXQncyBub3QgZXhwbGljaXRseSB0aGUgY2FzZS4gSW5zdGVhZCwgaXQgc2VlbXMgYE5GVF9SRUpFQ1RfSVBWNGAgKml0c2VsZiogaXMgY2hvc2VuIHZpYSBgTkZUX1JFSkVDVF9JUFY0YCwgYW5kIHRoYXQgKmRlZmF1bHRzKiB0byBgTkZUX1JFSkVDVGAgaWYgdGhlIElQdjQgdGFibGUgc3VwcG9ydCAoYE5GX1RBQkxFU19JUFY0YCkgaXMgZW5hYmxlZC5cblxuU2luY2UgYE5GX1RBQkxFU19JTkVUYCBpbmNsdWRlcyBgTkZfVEFCTEVTX0lQVjRgLCBhbmQgYE5GVF9SRUpFQ1RfSU5FVGAgZGVmYXVsdHMgdG8gYE5GVF9SRUpFQ1RgLCBpdCBsb29rcyBsaWtlIGlmIHdlIGVuYWJsZSBgTkZUX1JFSkVDVGAsIHRoZW4gYE5GVF9SRUpFQ1RfSVBWNGAgd2lsbCBiZSBlbmFibGVkIGJ5IGRlZmF1bHQuIEdpdmVuIHRoaXMsIGBORlRfUkVKRUNUX0lQVjRgIHdpbGwgc2VsZWN0IGBORl9SRUpFQ1RfSVBWNGAuXG5cblRoZXJlZm9yZSwgdG8gZW5zdXJlIGV2ZXJ5dGhpbmcncyBwcm9wZXJseSBjb25maWd1cmVkLCBJIHRoaW5rIHdlIG5lZWQgdGhlIGZvbGxvd2luZzpcblxuKiAgIGBORl9UQUJMRVNgXG4qICAgYE5GX1RBQkxFU19JTkVUYFxuKiAgIGBORlRfUkVKRUNUYFxuKiAgIGBORlRfUkVKRUNUX0lORVRgXG4qICAgYE5GVF9SRUpFQ1RfSVBWNGBcbiogICBgTkZfUkVKRUNUX0lQVjRgXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzYWZlLCBsZXQncyBlbnVtZXJhdGUgdGhlc2UgYWdhaW46IGBORl9UQUJMRVNgLCBgTkZfVEFCTEVTX0lORVRgLCBgTkZUX1JFSkVDVGAsIGBORlRfUkVKRUNUX0lORVRgLCBgTkZUX1JFSkVDVF9JUFY0YCwgYW5kIGBORl9SRUpFQ1RfSVBWNGAuXG5cbk5vdywgYSBxdWljayBjaGVjayBvbiBgTkZfVEFCTEVTX05FVERFVmAuLi4gbGV0J3Mga2VlcCB0aGF0IGluIG1pbmQsIGp1c3QgaW4gY2FzZS4gVGhlIHBhdGNoIGludm9sdmVzIGBob29rID09IE5GX0lORVRfSU5HUkVTU2AuIGBORl9JTkVUX0lOR1JFU1NgIGlzIHVzZWQgaW4gdGhlIGBpbmV0YCBmYW1pbHkgaW5ncmVzcyBob29rLCBhbmQgdGhlIGBuZXRkZXZgIGZhbWlseSBpbmdyZXNzIGhvb2ssIHRoYXQncyB3aHkgaXQgaXMgcmVsZXZhbnQgaGVyZS4gQnV0IGBuZnRfcmVqZWN0X25ldGRldmAgZG9lc24ndCB1c2UgYG5mX3NlbmRfdW5yZWFjaGAuIEl0IHVzZXMgYG5mX3JlamVjdF9za2JfdjRfdW5yZWFjaGAuIFNvLCBgbmZfc2VuZF91bnJlYWNoYCBpcyBvbmx5IGNhbGxlZCBieSBgbmZ0X3JlamVjdF9pbmV0YCwgYG5mdF9yZWplY3RfaXB2NGAsIGFuZCBgaXB0X1JFSkVDVGAuXG5cbkhhbmcgb24gYSBzZWNvbmQuIENhbiBgbmZ0X3JlamVjdF9pcHY0YCBldmVuIGF0dGFjaCB0byBgTkZfSU5FVF9JTkdSRVNTYD8gVGhlIElQdjQgZmFtaWx5ICpkb2Vzbid0KiBoYXZlIGFuIGluZ3Jlc3MgaG9vaywgcmlnaHQ/IE9yIGRvZXMgaXQ/IFRpbWUgdG8gdmVyaWZ5IGlmIHRoZSBJUHY0IGZhbWlseSAqYWN0dWFsbHkqIGhhcyBhbiBpbmdyZXNzIGhvb2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3MjAwLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6Mzk6MTMuODM5MDQ0Nzg1WiIsIlNlcSI6ODQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjQyMzc3MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTkZfSU5FVF9JTkdSRVNTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L25ldGZpbHRlci9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvbmV0ZmlsdGVyL25mX3JlamVjdF9pcHY0LmM9MzQ2PXZvaWQgbmZfc2VuZF91bnJlYWNoKHN0cnVjdCBza19idWZmICpza2JfaW4sIGludCBjb2RlLCBpbnQgaG9vaylcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jLTM1OC1cXHQvKiBJbmV0IGluZ3Jlc3MgcnVucyBiZWZvcmUgSVB2NCBpbml0aWFsaXplcyBJUENCLiAqL1xcbm5ldC9pcHY0L25ldGZpbHRlci9uZl9yZWplY3RfaXB2NC5jOjM1OTpcXHRpZiAoaG9vayA9PSBORl9JTkVUX0lOR1JFU1MpIHtcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfcmVqZWN0X2lwdjQuYy0zNjAtXFx0XFx0bWVtc2V0KElQQ0Ioc2tiX2luKSwgMCwgc2l6ZW9mKCpJUENCKHNrYl9pbikpKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6Mzk6MTQuMTYzMjg4ODQ1WiIsIlNlcSI6ODUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE3Njg2MDg4OTg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkNvbmZpZ3VyYXRpb24gYW5kIENvZGUgQW5hbHlzaXMgZm9yIE5ldGZpbHRlciBJUHY0IFJlamVjdCBIYW5kbGluZyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhlIHJlbGV2YW50IGNvZGUgZm9yIHRoaXMgcGF0Y2ggcmVzaWRlcyBzb2xlbHkgd2l0aGluIGBuZl9yZWplY3RfaXB2NC5jYC4gSSd2ZSB0cmFjZWQgdGhlIHBhdGg6IGBORl9JTkVUX0lOR1JFU1NgIGlzIHRyaWdnZXJlZCB2aWEgYG5mdF9yZWplY3RfaW5ldGAsIHdoaWNoLCBhcyB3ZSBrbm93LCBsaXZlcyBpbiBgbmV0L25ldGZpbHRlci9uZnRfcmVqZWN0X2luZXQuY2AuIFRodXMsIGBORlRfUkVKRUNUX0lORVRgIHNlZW1zIGxpa2UgdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbiB0byBlbmFibGUgaGVyZSwgcmlnaHQ/XG5cbkxldCdzIHF1aWNrbHkgY29uZmlybS4gWWVzLCBlbmFibGluZyBgTkZUX1JFSkVDVF9JTkVUYCBkb2VzIGluZGVlZCBicmluZyBpbiBgbmZ0X3JlamVjdF9pbmV0LmNgLCB3aGljaCwgaW4gdHVybiwgY2FsbHMgYG5mX3NlbmRfdW5yZWFjaGAuXG5cblNvLCBoZXJlJ3MgdGhlIGNvbmZpZyBsaXN0IEkndmUgY29tZSB1cCB3aXRoIHNvIGZhcjogYE5GX1RBQkxFU2AsIGBORl9UQUJMRVNfSU5FVGAsIGBORlRfUkVKRUNUYCwgYE5GVF9SRUpFQ1RfSU5FVGAsIGFuZCBgTkZfUkVKRUNUX0lQVjRgLlxuXG5MZXQncyBzZWUgaWYgYE5GX1JFSkVDVF9JUFY0YCBpcyBhIHZpc2libGUgY29uZmlnIC0geWVwLCBpdCdzIGEgdHJpc3RhdGUgb3B0aW9uIGZvciBcIklQdjQgcGFja2V0IHJlamVjdGlvbi5cIlxuXG5Ob3csIHdoYXQgYWJvdXQgYE5GVF9SRUpFQ1RfSU5FVGA/IEFoLCBpdCBoYXMgbm8gcHJvbXB0LiBUaGF0J3MgZmluZTsgaXQncyBkZWZhdWx0ZWQgaWYgd2UgaGF2ZSBgTkZUX1JFSkVDVGAgZW5hYmxlZCwgYW5kIGRlcGVuZHMgb24gYE5GX1RBQkxFU19JTkVUYC4gVGhhdCdzIGltcG9ydGFudC4gU28sIHdlIGRlZmluaXRpdmVseSBuZWVkIGBORlRfUkVKRUNUYCBhbmQgYE5GX1RBQkxFU19JTkVUYC5cblxuTGV0J3MgZG91YmxlLWNoZWNrIGBORl9UQUJMRVNfSU5FVGAuIEl0J3MgYSBib29sZWFuIG9wdGlvbiBsYWJlbGVkIFwiTmV0ZmlsdGVyIG5mX3RhYmxlcyBtaXhlZCBJUHY0L0lQdjYgdGFibGVzIHN1cHBvcnQuXCIgR29vZCwgd2UgZW5hYmxlIHRoYXQuXG5cbkFuZCBgTkZfVEFCTEVTYCBpdHNlbGY/IFllcCwgYSB0cmlzdGF0ZSBcIk5ldGZpbHRlciBuZl90YWJsZXMgc3VwcG9ydFwiLiBTbyB0aGF0IGdvZXMgaW4gYXMgd2VsbC5cblxuU28gd2UgYXJlIGNvbmZpZGVudDogdGhlIHJlcXVpcmVkIGNvbmZpZ3MgYXJlIGBORl9UQUJMRVNgLCBgTkZfVEFCTEVTX0lORVRgLCBgTkZUX1JFSkVDVGAsIGFuZCBgTkZfUkVKRUNUX0lQVjRgLiBCdXQgaW4gY2FzZSB0aGUgY29uZmlnIHN5c3RlbSBuZWVkcyBpdCBleHBsaWNpdGx5LCBsZXQncyBpbmNsdWRlIGBORlRfUkVKRUNUX0lORVRgLlxuXG5Ob3csIGFyZSB0aGVyZSBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlncz8gVGhlIG9uZXMgZm9yIGlwdGFibGVzLCBgSVBfTkZfVEFSR0VUX1JFSkVDVGAsIGBJUF9ORl9JUFRBQkxFU2AsIGFuZCBgSVBfTkZfRklMVEVSYCBtaWdodCBiZSByZWxldmFudCBmb3IgaXB0YWJsZXMgYnV0IGZvciBuZnRhYmxlcyB0aGlzIGlzIGVub3VnaC4gVGhlIHBhdGggdG8gdGhlIHJlbGV2YW50IGNvZGUgaXMgdmlhIG5mdGFibGVzLlxuXG5UaGUgZnVuY3Rpb24gd2UncmUgZm9jdXNpbmcgb24gaXMgYG5mX3NlbmRfdW5yZWFjaGAuIElzIHRoZXJlIGFueSBvdGhlciBmdW5jdGlvbj8gTm9wZSwgdGhlIHBhdGNoICpvbmx5KiBtb2RpZmllcyBgbmZfc2VuZF91bnJlYWNoYC4gU28gdGhhdCdzIHRoZSBvbmx5IHN5bWJvbC5cblxuT2theSwgbGV0J3MgcmV2aWV3IHRoZSBwYXRjaCBvbmUgbW9yZSB0aW1lLCBqdXN0IHRvIGNvbmZpcm06XG5gYGBjXG4gXHRpZiAoIXNrYl9kc3Qoc2tiX2luKSBcdTAwMjZcdTAwMjYgbmZfcmVqZWN0X2ZpbGxfc2tiX2RzdChza2JfaW4pIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm47XG4gXG4rXHQvKiBJbmV0IGluZ3Jlc3MgcnVucyBiZWZvcmUgSVB2NCBpbml0aWFsaXplcyBJUENCLiAqL1xuK1x0aWYgKGhvb2sgPT0gTkZfSU5FVF9JTkdSRVNTKSB7XG4rXHRcdG1lbXNldChJUENCKHNrYl9pbiksIDAsIHNpemVvZigqSVBDQihza2JfaW4pKSk7XG4rXHRcdElQQ0Ioc2tiX2luKS1cdTAwM2VpaWYgPSBza2JfaW4tXHUwMDNlc2tiX2lpZjtcbitcdH1cbitcbiBcdGlmIChza2JfY3N1bV91bm5lY2Vzc2FyeShza2JfaW4pIHx8XG4gXHQgICAgIW5mX3JlamVjdF92ZXJpZnlfY3N1bShza2JfaW4sIGRhdGFvZmYsIHByb3RvKSkge1xuYGBgXG5cblJpZ2h0LCBpdCBpbml0aWFsaXplcyB0aGUgSVB2NCBjb250cm9sIGJsb2NrIChgSVBDQmApIHdoZW4gYGhvb2sgPT0gTkZfSU5FVF9JTkdSRVNTYC4gVGhpcyBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgdXNlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGxhdGVyIGluIHRoZSBmdW5jdGlvbiwgdXNlZCBpbiBgaWNtcF9zZW5kYCBvciBgaXBfcm91dGVfb3V0cHV0X2tleWAsIGFuZCBpcyBhIGNsZWFyIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgd2UgbmVlZCB0byBmdXp6LlxuXG5UaGlzIGZpeCBpcyByZWFjaGFibGUgdXNpbmcgdGhlIG5mdGFibGVzIGBpbmV0YCBmYW1pbHkgaW5ncmVzcyBob29rLlxuXG5TbywgdGhlIGZvY3VzIGlzIGRlZmluaXRpdmVseSBgbmZfc2VuZF91bnJlYWNoYC5cblxuQ29uZmlnLXdpc2UsIGxldCdzIGFsc28gYmUgZXhwbGljaXQgYWJvdXQgYE5GVF9SRUpFQ1RfSU5FVGAuXG5cbmBORl9SRUpFQ1RfSVBWNGAgaXMgYSB0cmlzdGF0ZSwgc28gdGhhdCdzIGdvb2QuXG5cblJlZ2FyZGluZyBzeXprYWxsZXIsIGFsdGhvdWdoIGBORlRfUkVKRUNUX0lORVRgIGhhcyBubyBwcm9tcHQsIGVuYWJsaW5nIHRoZSBwYXJlbnQgY29uZmlnLCBgTkZUX1JFSkVDVGAgYW5kIGl0cyBkZXBlbmRlbmN5IGBORl9UQUJMRVNfSU5FVGAgc2hvdWxkIGJlIGVub3VnaCwgYnV0LCBJJ2xsIHByb3ZpZGUgYE5GX1RBQkxFU2AsIGBORl9UQUJMRVNfSU5FVGAsIGBORlRfUkVKRUNUYCwgYE5GX1JFSkVDVF9JUFY0YCwgYE5GVF9SRUpFQ1RfSU5FVGAganVzdCBpbiBjYXNlLlxuXG5PbmUgbGFzdCBjaGVjazogYG5mX3NlbmRfdW5yZWFjaGAncyBzaWduYXR1cmVcblxuIiwiSW5wdXRUb2tlbnMiOjI4NDM1LCJPdXRwdXRUb2tlbnMiOjE1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6Mzk6MzEuODQ5MzgwMzFaIiwiU2VxIjo4NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTczOTIyNzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX1RBQkxFU1wiLFxuICAgIFwiTkZfVEFCTEVTX0lORVRcIixcbiAgICBcIk5GVF9SRUpFQ1RcIixcbiAgICBcIk5GVF9SRUpFQ1RfSU5FVFwiLFxuICAgIFwiTkZfUkVKRUNUX0lQVjRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZl9zZW5kX3VucmVhY2hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgbmZfc2VuZF91bnJlYWNoYCB0byBpbml0aWFsaXplIHRoZSBJUHY0IGNvbnRyb2wgYmxvY2sgKElQQ0IpIHdoZW4gY2FsbGVkIGZyb20gdGhlIGBORl9JTkVUX0lOR1JFU1NgIGhvb2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXRmaWx0ZXIgSVB2NCByZWplY3QgaGFuZGxpbmcgbG9naWMsIGZpeGluZyBhIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSBhY2Nlc3MuIEl0IGlzIHJlYWNoYWJsZSB2aWEgdGhlIG5mdGFibGVzIGBpbmV0YCBmYW1pbHkgaW5ncmVzcyBob29rLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX1RBQkxFU1wiLFxuICAgIFwiTkZfVEFCTEVTX0lORVRcIixcbiAgICBcIk5GVF9SRUpFQ1RcIixcbiAgICBcIk5GVF9SRUpFQ1RfSU5FVFwiLFxuICAgIFwiTkZfUkVKRUNUX0lQVjRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZl9zZW5kX3VucmVhY2hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgbmZfc2VuZF91bnJlYWNoYCB0byBpbml0aWFsaXplIHRoZSBJUHY0IGNvbnRyb2wgYmxvY2sgKElQQ0IpIHdoZW4gY2FsbGVkIGZyb20gdGhlIGBORl9JTkVUX0lOR1JFU1NgIGhvb2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXRmaWx0ZXIgSVB2NCByZWplY3QgaGFuZGxpbmcgbG9naWMsIGZpeGluZyBhIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSBhY2Nlc3MuIEl0IGlzIHJlYWNoYWJsZSB2aWEgdGhlIG5mdGFibGVzIGBpbmV0YCBmYW1pbHkgaW5ncmVzcyBob29rLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowwbfnd[1] Phase: Succeeded StartedAt: 2026-08-04 10:39:42 +0000 UTC FinishedAt: 2026-08-04 10:39:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwbfnd[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-04 10:39:42 +0000 UTC FinishedAt: 2026-08-04 10:39:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwbfnd[2] Phase: Succeeded StartedAt: 2026-08-04 10:39:42 +0000 UTC FinishedAt: 2026-08-04 12:00:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwbfnd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_send_unreach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"6aba401a-0490-432d-b040-1bcb78b1673d","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN) Phase: Failed StartedAt: 2026-08-04 10:39:42 +0000 UTC FinishedAt: 2026-08-04 12:00:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_send_unreach"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"6aba401a-0490-432d-b040-1bcb78b1673d","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowwbfnd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_send_unreach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"6aba401a-0490-432d-b040-1bcb78b1673d","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-04 10:39:42 +0000 UTC FinishedAt: 2026-08-04 10:39:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwbfnd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_send_unreach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"6aba401a-0490-432d-b040-1bcb78b1673d","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-04 10:39:42 +0000 UTC FinishedAt: 2026-08-04 10:39:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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-workflowwbfnd/series-workflowwbfnd-convert-artifact-2256583068/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwbfnd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_send_unreach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"6aba401a-0490-432d-b040-1bcb78b1673d","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-04 10:39:53 +0000 UTC FinishedAt: 2026-08-04 10:58:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwbfnd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_send_unreach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"6aba401a-0490-432d-b040-1bcb78b1673d","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-04 10:39:53 +0000 UTC FinishedAt: 2026-08-04 10:58:19 +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:*e92849ed-5cdc-40d3-88bc-678465aaa9a0,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-workflowwbfnd/series-workflowwbfnd-convert-artifact-2256583068/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": "61aa8564-b513-4c92-8aa2-d27d9aa25cdb", "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-workflowwbfnd/series-workflowwbfnd-build-action-86728650/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwbfnd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_send_unreach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"6aba401a-0490-432d-b040-1bcb78b1673d","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-04 10:39:53 +0000 UTC FinishedAt: 2026-08-04 10:58:09 +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:*e92849ed-5cdc-40d3-88bc-678465aaa9a0,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-workflowwbfnd/series-workflowwbfnd-convert-artifact-2256583068/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": "61aa8564-b513-4c92-8aa2-d27d9aa25cdb", "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-workflowwbfnd/series-workflowwbfnd-build-action-86728650/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwbfnd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_send_unreach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"6aba401a-0490-432d-b040-1bcb78b1673d","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-04 10:58:19 +0000 UTC FinishedAt: 2026-08-04 10:58:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwbfnd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_send_unreach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"6aba401a-0490-432d-b040-1bcb78b1673d","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-04 10:58:19 +0000 UTC FinishedAt: 2026-08-04 10:58:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwbfnd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_send_unreach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"6aba401a-0490-432d-b040-1bcb78b1673d","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-04 10:58:19 +0000 UTC FinishedAt: 2026-08-04 10:58:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwbfnd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_send_unreach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"6aba401a-0490-432d-b040-1bcb78b1673d","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-04 10:58:19 +0000 UTC FinishedAt: 2026-08-04 10:58:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"6aba401a-0490-432d-b040-1bcb78b1673d","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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-workflowwbfnd/series-workflowwbfnd-convert-artifact-4200755163/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwbfnd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_send_unreach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"6aba401a-0490-432d-b040-1bcb78b1673d","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-04 10:58:29 +0000 UTC FinishedAt: 2026-08-04 11:00:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwbfnd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_send_unreach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"6aba401a-0490-432d-b040-1bcb78b1673d","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-04 10:58:29 +0000 UTC FinishedAt: 2026-08-04 11:00:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*61aa8564-b513-4c92-8aa2-d27d9aa25cdb,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-workflowwbfnd/series-workflowwbfnd-build-action-86728650/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-workflowwbfnd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_send_unreach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"6aba401a-0490-432d-b040-1bcb78b1673d","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-04 11:00:22 +0000 UTC FinishedAt: 2026-08-04 11:00:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwbfnd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_send_unreach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"6aba401a-0490-432d-b040-1bcb78b1673d","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-04 11:00:22 +0000 UTC FinishedAt: 2026-08-04 11:00:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwbfnd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_send_unreach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"6aba401a-0490-432d-b040-1bcb78b1673d","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-04 11:00:22 +0000 UTC FinishedAt: 2026-08-04 11:16:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwbfnd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_send_unreach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"6aba401a-0490-432d-b040-1bcb78b1673d","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-04 11:00:23 +0000 UTC FinishedAt: 2026-08-04 11:16:10 +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:*e92849ed-5cdc-40d3-88bc-678465aaa9a0,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-workflowwbfnd/series-workflowwbfnd-convert-artifact-4200755163/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": "0020a1c2-bfd5-4961-b2f2-150688793d46", "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-workflowwbfnd/series-workflowwbfnd-build-action-4237694591/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwbfnd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_send_unreach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"6aba401a-0490-432d-b040-1bcb78b1673d","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-04 11:00:23 +0000 UTC FinishedAt: 2026-08-04 11:16:00 +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:*e92849ed-5cdc-40d3-88bc-678465aaa9a0,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-workflowwbfnd/series-workflowwbfnd-convert-artifact-4200755163/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": "0020a1c2-bfd5-4961-b2f2-150688793d46", "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-workflowwbfnd/series-workflowwbfnd-build-action-4237694591/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwbfnd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_send_unreach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"6aba401a-0490-432d-b040-1bcb78b1673d","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-04 11:16:10 +0000 UTC FinishedAt: 2026-08-04 11:16:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwbfnd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_send_unreach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"6aba401a-0490-432d-b040-1bcb78b1673d","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-04 11:16:10 +0000 UTC FinishedAt: 2026-08-04 11:16:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwbfnd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_send_unreach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"6aba401a-0490-432d-b040-1bcb78b1673d","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-04 11:16:10 +0000 UTC FinishedAt: 2026-08-04 11:18:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwbfnd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_send_unreach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"6aba401a-0490-432d-b040-1bcb78b1673d","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-04 11:16:10 +0000 UTC FinishedAt: 2026-08-04 11:18:08 +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:*0020a1c2-bfd5-4961-b2f2-150688793d46,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-workflowwbfnd/series-workflowwbfnd-build-action-4237694591/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-workflowwbfnd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_send_unreach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"6aba401a-0490-432d-b040-1bcb78b1673d","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10] Phase: Failed StartedAt: 2026-08-04 11:18:18 +0000 UTC FinishedAt: 2026-08-04 12:00:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwbfnd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_send_unreach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"6aba401a-0490-432d-b040-1bcb78b1673d","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Failed StartedAt: 2026-08-04 11:18:18 +0000 UTC FinishedAt: 2026-08-04 12:00:29 +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":["nf_send_unreach"],"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:*61aa8564-b513-4c92-8aa2-d27d9aa25cdb,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*0020a1c2-bfd5-4961-b2f2-150688793d46,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-workflowwbfnd/series-workflowwbfnd-build-action-86728650/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-workflowwbfnd/series-workflowwbfnd-build-action-4237694591/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowwbfnd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_send_unreach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"6aba401a-0490-432d-b040-1bcb78b1673d","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-04 11:18:18 +0000 UTC FinishedAt: 2026-08-04 11:18:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwbfnd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_send_unreach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"6aba401a-0490-432d-b040-1bcb78b1673d","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-04 11:18:18 +0000 UTC FinishedAt: 2026-08-04 11:18:22 +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":["nf_send_unreach"],"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-workflowwbfnd/series-workflowwbfnd-convert-artifact-2585098708/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwbfnd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_send_unreach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"6aba401a-0490-432d-b040-1bcb78b1673d","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-04 11:18:18 +0000 UTC FinishedAt: 2026-08-04 11:18:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwbfnd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_send_unreach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"6aba401a-0490-432d-b040-1bcb78b1673d","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-04 11:18:18 +0000 UTC FinishedAt: 2026-08-04 11:18:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwbfnd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_send_unreach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"6aba401a-0490-432d-b040-1bcb78b1673d","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-04 11:18:18 +0000 UTC FinishedAt: 2026-08-04 11:18:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwbfnd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_send_unreach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"6aba401a-0490-432d-b040-1bcb78b1673d","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Failed StartedAt: 2026-08-04 11:18:28 +0000 UTC FinishedAt: 2026-08-04 12:00:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwbfnd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_send_unreach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NF_TABLES_INET","NFT_REJECT","NFT_REJECT_INET","NF_REJECT_IPV4"],"series_id":"6aba401a-0490-432d-b040-1bcb78b1673d","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Error StartedAt: 2026-08-04 11:18:28 +0000 UTC FinishedAt: 2026-08-04 12:00:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*61aa8564-b513-4c92-8aa2-d27d9aa25cdb,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*0020a1c2-bfd5-4961-b2f2-150688793d46,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-workflowwbfnd/series-workflowwbfnd-build-action-86728650/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-workflowwbfnd/series-workflowwbfnd-build-action-4237694591/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-workflowwbfnd/series-workflowwbfnd-convert-artifact-2585098708/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil