Name: series-workflowmpf9d Phase: Succeeded StartedAt: 2026-07-13 21:08:14 +0000 UTC FinishedAt: 2026-07-14 01:24:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmpf9d[0] Phase: Succeeded StartedAt: 2026-07-13 21:08:14 +0000 UTC FinishedAt: 2026-07-13 21:21:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmpf9d[0].run-triage Phase: Succeeded StartedAt: 2026-07-13 21:08:14 +0000 UTC FinishedAt: 2026-07-13 21:21:14 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "bee763d5f341b99cf472afeb508d4988f62a6ca1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC", "NFC_NCI", "NFC_VIRTUAL_NCI", "NFC_DIGITAL", "NFC_SIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "bee763d5f341b99cf472afeb508d4988f62a6ca1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC", "NFC_NCI", "NFC_VIRTUAL_NCI", "NFC_DIGITAL", "NFC_SIM" ], "series_id": "f7f493ca-4ebc-4062-89ee-2a5e9fe37c5e" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "__nfc_llcp_recv", "nfc_llcp_recv", "nfc_llcp_data_received", "nfc_llcp_rx_work", "nfc_llcp_rx_skb" ], "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+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GQyYjMzQ7LAogICAgJiMzNDtORkNfTkNJJiMzNDssCiAgICAmIzM0O05GQ19WSVJUVUFMX05DSSYjMzQ7LAogICAgJiMzNDtORkNfRElHSVRBTCYjMzQ7LAogICAgJiMzNDtORkNfU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19uZmNfbGxjcF9yZWN2JiMzNDssCiAgICAmIzM0O25mY19sbGNwX3JlY3YmIzM0OywKICAgICYjMzQ7bmZjX2xsY3BfZGF0YV9yZWNlaXZlZCYjMzQ7LAogICAgJiMzNDtuZmNfbGxjcF9yeF93b3JrJiMzNDssCiAgICAmIzM0O25mY19sbGNwX3J4X3NrYiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIHRvIGBfX25mY19sbGNwX3JlY3ZgIHRvIGVuc3VyZSB0aGUgcmVjZWl2ZWQgc2tiIGlzIGF0IGxlYXN0IGBMTENQX0hFQURFUl9TSVpFYCBieXRlcyBsb25nIGJlZm9yZSBwcm9jZXNzaW5nIGl0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBwcmV2ZW50cyBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkcyBvciBvdGhlciBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMgd2hlbiBoYW5kbGluZyBtYWxmb3JtZWQgTkZDIExMQ1AgcGFja2V0cy4gRnV6emluZyB0aGlzIGNvZGUgcGF0aCBpcyBoaWdobHkgcmVjb21tZW5kZWQgdG8gZW5zdXJlIHRoZSByb2J1c3RuZXNzIG9mIHRoZSBORkMgTExDUCBpbXBsZW1lbnRhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMToxOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDViYjBlNzQyYTEzMGY0NjA4MmUyMDMxNGE4OTM1NTBhMGVhM2YzOTdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAxMyAyMToxOToxOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmZjL2xsY3BfY29yZS5jIGIvbmV0L25mYy9sbGNwX2NvcmUuY1xuaW5kZXggYWVkNWZlMWFmZWYwMWUuLjcyYjZlNzA3YWQwY2I0IDEwMDY0NFxuLS0tIGEvbmV0L25mYy9sbGNwX2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25mYy9sbGNwX2NvcmUuY1xuQEAgLTE1NjUsNiAmIzQzOzE1NjUsMTEgQEAgc3RhdGljIHZvaWQgbmZjX2xsY3Bfcnhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXG4gc3RhdGljIHZvaWQgX19uZmNfbGxjcF9yZWN2KHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IpXG4ge1xuJiM0MztcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyBMTENQX0hFQURFUl9TSVpFKSB7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0bG9jYWwtXHUwMDNlcnhfcGVuZGluZyA9IHNrYjtcbiBcdHRpbWVyX2RlbGV0ZShcdTAwMjZsb2NhbC1cdTAwM2VsaW5rX3RpbWVyKTtcbiBcdHNjaGVkdWxlX3dvcmsoXHUwMDI2bG9jYWwtXHUwMDNlcnhfd29yayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6MTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZDJiMzNDssCiAgICAmIzM0O05GQ19OQ0kmIzM0OywKICAgICYjMzQ7TkZDX1ZJUlRVQUxfTkNJJiMzNDssCiAgICAmIzM0O05GQ19ESUdJVEFMJiMzNDssCiAgICAmIzM0O05GQ19TSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX25mY19sbGNwX3JlY3YmIzM0OywKICAgICYjMzQ7bmZjX2xsY3BfcmVjdiYjMzQ7LAogICAgJiMzNDtuZmNfbGxjcF9kYXRhX3JlY2VpdmVkJiMzNDssCiAgICAmIzM0O25mY19sbGNwX3J4X3dvcmsmIzM0OywKICAgICYjMzQ7bmZjX2xsY3Bfcnhfc2tiJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgdG8gYF9fbmZjX2xsY3BfcmVjdmAgdG8gZW5zdXJlIHRoZSByZWNlaXZlZCBza2IgaXMgYXQgbGVhc3QgYExMQ1BfSEVBREVSX1NJWkVgIGJ5dGVzIGxvbmcgYmVmb3JlIHByb2Nlc3NpbmcgaXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIG90aGVyIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlcyB3aGVuIGhhbmRsaW5nIG1hbGZvcm1lZCBORkMgTExDUCBwYWNrZXRzLiBGdXp6aW5nIHRoaXMgY29kZSBwYXRoIGlzIGhpZ2hseSByZWNvbW1lbmRlZCB0byBlbnN1cmUgdGhlIHJvYnVzdG5lc3Mgb2YgdGhlIE5GQyBMTENQIGltcGxlbWVudGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1YmIwZTc0MmExMzBmNDYwODJlMjAzMTRhODkzNTUwYTBlYTNmMzk3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdWwgMTMgMjE6MTk6MTggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbmZjL2xsY3BfY29yZS5jIGIvbmV0L25mYy9sbGNwX2NvcmUuYwppbmRleCBhZWQ1ZmUxYWZlZjAxZS4uNzJiNmU3MDdhZDBjYjQgMTAwNjQ0Ci0tLSBhL25ldC9uZmMvbGxjcF9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25mYy9sbGNwX2NvcmUuYwpAQCAtMTU2NSw2ICYjNDM7MTU2NSwxMSBAQCBzdGF0aWMgdm9pZCBuZmNfbGxjcF9yeF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAogc3RhdGljIHZvaWQgX19uZmNfbGxjcF9yZWN2KHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IpCiB7CiYjNDM7CWlmIChza2ItJmd0O2xlbiAmbHQ7IExMQ1BfSEVBREVSX1NJWkUpIHsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwomIzQzOwkJcmV0dXJuOwomIzQzOwl9CiYjNDM7CiAJbG9jYWwtJmd0O3J4X3BlbmRpbmcgPSBza2I7CiAJdGltZXJfZGVsZXRlKCZhbXA7bG9jYWwtJmd0O2xpbmtfdGltZXIpOwogCXNjaGVkdWxlX3dvcmsoJmFtcDtsb2NhbC0mZ3Q7cnhfd29yayk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NjkKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBORkMgTExDUCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0IGludHJvZHVjZXMgYSBzYWZldHkgY2hlY2s6IGBza2ItJmd0O2xlbiAmbHQ7IExMQ1BfSEVBREVSX1NJWkVgIHdpdGhpbiBgX19uZmNfbGxjcF9yZWN2YCBpbiBgbmV0L25mYy9sbGNwX2NvcmUuY2AuIE15IGluaXRpYWwgYXNzZXNzbWVudD8gRnVuY3Rpb25hbGx5IHNvdW5kLiBUaGlzIGRpcmVjdGx5IGFkZHJlc3NlcyBhIHBvc3NpYmxlIG91dC1vZi1ib3VuZHMgcmVhZCBvciBhIHJlbGF0ZWQgdnVsbmVyYWJpbGl0eSB3aGVuIHRoZSBrZXJuZWwgaXMgcHJvY2Vzc2luZyBORkMgTExDUCBwYWNrZXRzLiBUaGlzICpzY3JlYW1zKiBmdXp6aW5nIHRhcmdldCwgaW1tZWRpYXRlbHkuIFdlIGRlZmluaXRlbHkgbmVlZCB0byBwdXQgdGhpcyB0aHJvdWdoIGl0cyBwYWNlcy4KCk5vdywgdG8gZ2V0IHRoZSBjb21wbGV0ZSBwaWN0dXJlLCBJIG5lZWQgdG8ga25vdyB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlZCB0byBlbmFibGUgdGhpcyBORkMgTExDUCBmdW5jdGlvbmFsaXR5LiBNeSBwbGFuIGlzIHRvIHN0YXJ0IGJ5IHNlYXJjaGluZyBmb3IgYF9fbmZjX2xsY3BfcmVjdmAgYW5kIGBuZmNfbGxjcF9yeF93b3JrYCBzcGVjaWZpY2FsbHkgd2l0aGluIGBuZXQvbmZjL2xsY3BfY29yZS5jYCBhZ2FpbiwgdG8gZ2V0IHNvbWUgY29udGV4dCBjbHVlcy4gVGhlbiwgSSYjMzk7bGwgZGl2ZSBpbnRvIGBuZXQvbmZjL0tjb25maWdgIGFuZCBgbmV0L25mYy9NYWtlZmlsZWAuIFRoYXQgc2hvdWxkIHJldmVhbCB0aGUgY29uZmlnIG9wdGlvbnMgdGhhdCBnb3Zlcm4gdGhlIGNvbXBpbGF0aW9uIGFuZCBpbmNsdXNpb24gb2YgYGxsY3BfY29yZS5jYCwgd2hpY2gsIGluIHR1cm4sIHdpbGwgYWxsb3cgbWUgdG8gc2V0IHVwIGFuIGFwcHJvcHJpYXRlIGZ1enppbmcgZW52aXJvbm1lbnQuIFVuZGVyc3RhbmRpbmcgdGhlIGJ1aWxkIHN5c3RlbSBpcyBrZXkgdG8gcHJvcGVyIHRlc3RpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bGxjcF9jb3JlLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvTWFrZWZpbGU9OT1vYmotJChDT05GSUdfTkZDX0RJR0lUQUwpICYjNDM7PSBuZmNfZGlnaXRhbC5vXG5uZXQvbmZjL01ha2VmaWxlLTEwLVxubmV0L25mYy9NYWtlZmlsZToxMTpuZmMtb2JqcyA6PSBjb3JlLm8gbmV0bGluay5vIGFmX25mYy5vIHJhd3NvY2subyBsbGNwX2NvcmUubyBsbGNwX2NvbW1hbmRzLm8gXFxcbm5ldC9uZmMvTWFrZWZpbGUtMTItXHRcdGxsY3Bfc29jay5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ1OAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTkZDIENvbXBpbGF0aW9uIExhbmRzY2FwZSoqCgpPa2F5LCBzbyBgbGxjcF9jb3JlLm9gIGltbWVkaWF0ZWx5IHN1Z2dlc3RzIE5GQyBpbnZvbHZlbWVudC4gSXQmIzM5O3MgbGlzdGVkIHVuZGVyIGBuZmMtb2Jqc2AsIHNvIHRoYXQmIzM5O3MgYSBwcmV0dHkgc3Ryb25nIGluZGljYXRvci4gTXkgaW50dWl0aW9uIHRlbGxzIG1lIHRoaXMgaXMgcHJvYmFibHkgbGlua2VkIHRvIHRoZSBgQ09ORklHX05GQ2AgY29uZmlndXJhdGlvbiBvcHRpb24uIE1ha2VzIHNlbnNlLCBnaXZlbiB0aGUgTkZDIG1vZHVsZSYjMzk7cyBvdmVyYWxsIHN0cnVjdHVyZS4gVGltZSB0byBkaXZlIGludG8gYG5ldC9uZmMvTWFrZWZpbGVgIGFuZCBjb25maXJtIHRoZXNlIGFzc3VtcHRpb25zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYnVpbGQgZGVwZW5kZW5jaWVzIGFuZCBjb25kaXRpb25zIGV4cGxpY2l0bHkgb3V0bGluZWQgdGhlcmUgdG8gZ2V0IGEgZnVsbCBwaWN0dXJlLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIE1ha2VmaWxlIHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZjLW9ianMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvTWFrZWZpbGU9OT1vYmotJChDT05GSUdfTkZDX0RJR0lUQUwpICYjNDM7PSBuZmNfZGlnaXRhbC5vXG5uZXQvbmZjL01ha2VmaWxlLTEwLVxubmV0L25mYy9NYWtlZmlsZToxMTpuZmMtb2JqcyA6PSBjb3JlLm8gbmV0bGluay5vIGFmX25mYy5vIHJhd3NvY2subyBsbGNwX2NvcmUubyBsbGNwX2NvbW1hbmRzLm8gXFxcbm5ldC9uZmMvTWFrZWZpbGUtMTItXHRcdGxsY3Bfc29jay5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc2OQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IHF1ZXN0aW9uOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBCdWlsZCBQcm9jZXNzIGZvciBORkMgQ29tcG9uZW50cyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgYG5mYy5vYCBvciBgbmZjLW9ianNgIGlzIGJlaW5nIGJ1aWx0LiBUaGlzIGxpa2VseSBwb2ludHMgdG8gYSBjb3JlIE5GQyBjb21wb25lbnQgb3IgYSBjb2xsZWN0aW9uIG9mIG9iamVjdCBmaWxlcy4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byB1bmRlcnN0YW5kIHRoZSBidWlsZCBzeXN0ZW0gaW52b2x2ZWQuIElzIGl0IGEgc3RhbmRhcmQgYG1ha2VgIHNldHVwLCBwZXJoYXBzIHVzaW5nIGEgYE1ha2VmaWxlYCwgb3IgYXJlIHdlIGRlYWxpbmcgd2l0aCBzb21ldGhpbmcgbW9yZSBzb3BoaXN0aWNhdGVkIGxpa2UgQ01ha2UsIEF1dG90b29scywgb3IgZXZlbiBhIGN1c3RvbSBidWlsZCBzY3JpcHQ/CgpJJiMzOTtkIHN0YXJ0IGJ5IGxvb2tpbmcgZm9yIGEgdG9wLWxldmVsIGBNYWtlZmlsZWAgb3IgYENNYWtlTGlzdHMudHh0YCBpbiB0aGUgcHJvamVjdCBkaXJlY3RvcnksIGFzc3VtaW5nIHRoaXMgaXMgYSBsYXJnZXIsIGVzdGFibGlzaGVkIHByb2plY3QuIFRoZSBnb2FsIGlzIHRvIHRyYWNlIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHRoZSBjb21tYW5kcyB0aGF0IGdlbmVyYXRlIHRob3NlIHNwZWNpZmljIG9iamVjdCBmaWxlcyBvciBhbiBvYmplY3QgZGlyZWN0b3J5LgoKSWYgaXQmIzM5O3MgYSBgTWFrZWZpbGVgLCBJ4oCZbGwgYmUgc2Nhbm5pbmcgZm9yIHRhcmdldHMgdGhhdCBtZW50aW9uIGBuZmMub2Agb3IgYG5mYy1vYmpzYCwgbG9va2luZyBmb3IgcmVsZXZhbnQgcnVsZXMgYW5kIGRlcGVuZGVuY2llcy4gSSYjMzk7ZCBiZSBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIGluY2x1ZGUgcGF0aHMsIGNvbXBpbGVyIGZsYWdzIChsaWtlIGAtSWAgYW5kIGAtRGApLCBhbmQgbGlua2VyIGZsYWdzLiBJJiMzOTtkIGFsc28gY2hlY2sgZm9yIHZhcmlhYmxlcyB0aGF0IG1pZ2h0IGJlIGludm9sdmVkLgoKSWYgaXQmIzM5O3MgQ01ha2UsIEkmIzM5O2Qgc2VhcmNoIGZvciBjb21tYW5kcyBsaWtlIGBhZGRfbGlicmFyeWAsIGB0YXJnZXRfc291cmNlc2AsIGB0YXJnZXRfaW5jbHVkZV9kaXJlY3Rvcmllc2AsIGFuZCwgY3JpdGljYWxseSwgdGhlIHdheSBgbmZjLm9gIG9yIGBuZmMtb2Jqc2AgaXMgYWRkZWQgdG8gdGhlIGJ1aWxkIHByb2Nlc3MuIEkgd291bGQgZXhwZWN0IHNvbWUgdmFyaWFibGUgd2lsbCBiZSB1c2VkIHRvIGdlbmVyYXRlIHRoZSBidWlsZCBwcm9jZXNzLgoKSWYgbm8gb2J2aW91cyBidWlsZCBzeXN0ZW0gaXMgYXBwYXJlbnQsIEkgbWF5IGdvIHRocm91Z2ggZmlsZSBuYW1lcyBhbmQgZ3Vlc3MgYXQgaG93IGl0IG1pZ2h0IGJlIGJ1aWx0LiBJIG1heSBhbHNvIGNoZWNrIHRoZSBzb3VyY2UgY29kZSBmb3IgYW55IGBNYWtlZmlsZWAgb3IgYENNYWtlTGlzdHMudHh0YCBmaWxlcywgb3IgYW55IHNpbWlsYXIgZmlsZXMuCgpFc3NlbnRpYWxseSwgSSYjMzk7bSBwZWVsaW5nIGJhY2sgdGhlIGxheWVycyBvZiB0aGUgYnVpbGQgc3lzdGVtIHRvIHVuY292ZXIgdGhlIGV4YWN0IHNlcXVlbmNlIG9mIHN0ZXBzIHRoYXQgcmVzdWx0IGluIHRob3NlIHNwZWNpZmljIG9iamVjdCBmaWxlcy4gVWx0aW1hdGVseSwga25vd2luZyB0aGF0IHBhdGggaXMgZXNzZW50aWFsIGZvciBhbnkgbW9kaWZpY2F0aW9ucyBvciBkZWVwZXIgdW5kZXJzdGFuZGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMToxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZmMubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25mYy9NYWtlZmlsZS01LVxubmV0L25mYy9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19ORkMpICYjNDM7PSBuZmMub1xubmV0L25mYy9NYWtlZmlsZS03LW9iai0kKENPTkZJR19ORkNfTkNJKSAmIzQzOz0gbmNpL1xuLS1cbm5ldC9uZmMvTWFrZWZpbGU9OT1vYmotJChDT05GSUdfTkZDX0RJR0lUQUwpICYjNDM7PSBuZmNfZGlnaXRhbC5vXG5uZXQvbmZjL01ha2VmaWxlLTEwLVxubmV0L25mYy9NYWtlZmlsZToxMTpuZmMtb2JqcyA6PSBjb3JlLm8gbmV0bGluay5vIGFmX25mYy5vIHJhd3NvY2subyBsbGNwX2NvcmUubyBsbGNwX2NvbW1hbmRzLm8gXFxcbm5ldC9uZmMvTWFrZWZpbGUtMTItXHRcdGxsY3Bfc29jay5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQxMgoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGV2YWx1YXRpbmcgdGhpcyBORkMgY29uZmlndXJhdGlvbjoKCioqQW5hbHl6aW5nIE5GQyBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBORkMgY29uZmlndXJhdGlvbiwgYW5kIGBDT05GSUdfTkZDYCBpcyB0aGUgbWFpbiB0b2dnbGUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgZWxzZSBpcyB0aWVkIHRvIGl0LiBMZXQmIzM5O3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgdmlydHVhbCBkcml2ZXJzIHRvIGNvbnNpZGVyLiBBcmUgd2UgdXNpbmcgYSBzaW11bGF0ZWQgb3IgdmlydHVhbCBORkMgaW50ZXJmYWNlPyBJIG5lZWQgdG8gY2hlY2sgZm9yIGBDT05GSUdfTkZDX1ZJUlRVQUxfTkNJYCBvciBwZXJoYXBzIGBDT05GSUdfTkZDX1NJTWAsIHRob3NlIGFyZSB1c3VhbGx5IHRoZSBrZXkgdmlydHVhbCBvcHRpb25zLgoKSSYjMzk7bGwgbmVlZCB0byBkcmlsbCBkb3duIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgdG8gZ2V0IGEgZ29vZCBoYW5kbGUgb24gdGhpcy4gVGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgaXMgdGhlIGBkcml2ZXJzL25mYy9gIGRpcmVjdG9yeS4gVGhhdCYjMzk7cyB3aGVyZSBhbGwgdGhlIE5GQy1yZWxhdGVkIGRyaXZlcnMgYW5kIG1vZHVsZXMgc2hvdWxkIGJlLiBUaGF0IGRpcmVjdG9yeSBzaG91bGQgYWxzbyBob2xkIHRoZSBmaWxlcyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQgb3B0aW9ucyBhcmUgYXZhaWxhYmxlIGFuZCBob3cgdGhleSYjMzk7cmUgcmVsYXRlZCB0byBgQ09ORklHX05GQ2AuIE5vdywgbGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHRoYXQgZGlyZWN0b3J5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMToxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25mYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDttZWlfcGh5LmMmIzM0OywKICAgICYjMzQ7bWVpX3BoeS5oJiMzNDssCiAgICAmIzM0O25mY3NpbS5jJiMzNDssCiAgICAmIzM0O3BvcnQxMDAuYyYjMzQ7LAogICAgJiMzNDt0cmY3OTcwYS5jJiMzNDssCiAgICAmIzM0O3ZpcnR1YWxfbmNpZGV2LmMmIzM0OwogIF0sCiAgJiMzNDtTdWJkaXJzJiMzNDs6IFsKICAgICYjMzQ7ZmRwJiMzNDssCiAgICAmIzM0O21pY3JvcmVhZCYjMzQ7LAogICAgJiMzNDtuZmNtcnZsJiMzNDssCiAgICAmIzM0O254cC1uY2kmIzM0OywKICAgICYjMzQ7cG41MzMmIzM0OywKICAgICYjMzQ7cG41NDQmIzM0OywKICAgICYjMzQ7czNmd3JuNSYjMzQ7LAogICAgJiMzNDtzdC1uY2kmIzM0OywKICAgICYjMzQ7c3QyMW5mY2EmIzM0OywKICAgICYjMzQ7c3Q5NWhmJiMzNDsKICBdCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg1NAoJCQkJCQkJb3V0cHV0OiA2MwoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246CgoqKkluaXRpYWwgQXNzZXNzbWVudCBvZiBWaXJ0dWFsIE5GQyBEcml2ZXJzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgbmZjc2ltLmNgIGFuZCBgdmlydHVhbF9uY2lkZXYuY2AuIFRoZSBuYW1pbmcgY29udmVudGlvbiBzdHJvbmdseSBzdWdnZXN0cyB0aGVzZSBhcmUgdmlydHVhbCBkcml2ZXJzIGZvciBORkMgZGV2aWNlcywgd2hpY2ggaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBNeSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gYXNwZWN0cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBwYXJhbWV0ZXJzIGFuZCBzZXR0aW5ncyB0aGVzZSBkcml2ZXJzIGFyZSBleHBlY3RpbmcuIFRoYXQgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgcHJvcGVyIGludGVncmF0aW9uLCBlbXVsYXRpb24gc2V0dXAsIGFuZCBkZWJ1Z2dpbmcuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgY29uZmlndXJhdGlvbnMgcmV2ZWFsIGFib3V0IHRoZWlyIGludGVuZGVkIHVzZSBjYXNlcyBhbmQgdW5kZXJseWluZyBhc3N1bXB0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZjc2ltLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9NYWtlZmlsZT0xMD1vYmotJChDT05GSUdfTkZDX01FSV9QSFkpXHQmIzQzOz0gbWVpX3BoeS5vXG5kcml2ZXJzL25mYy9NYWtlZmlsZToxMTpvYmotJChDT05GSUdfTkZDX1NJTSlcdFx0JiM0Mzs9IG5mY3NpbS5vXG5kcml2ZXJzL25mYy9NYWtlZmlsZS0xMi1vYmotJChDT05GSUdfTkZDX1BPUlQxMDApXHQmIzQzOz0gcG9ydDEwMC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZpcnR1YWxfbmNpZGV2Lm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9NYWtlZmlsZT0xOT1vYmotJChDT05GSUdfTkZDX1NUOTVIRilcdCYjNDM7PSBzdDk1aGYvXG5kcml2ZXJzL25mYy9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfTkZDX1ZJUlRVQUxfTkNJKVx0JiM0Mzs9IHZpcnR1YWxfbmNpZGV2Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI0NQoJCQkJCQkJb3V0cHV0OiA2NwoJCQkJCQkJdGhvdWdodHM6IDY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk5GQyBGdXp6aW5nIENvbmZpZ3VyYXRpb24gVGhvdWdodHMqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZywgdG8gZ2V0IGEgc29saWQgTkZDIGZ1enppbmcgc2V0dXAgZ29pbmcsIEkgc2hvdWxkIGRlZmluaXRlbHkgZW5hYmxlIGBDT05GSUdfTkZDX1NJTWAgYW5kIGBDT05GSUdfTkZDX1ZJUlRVQUxfTkNJYC4gVGhvc2Ugc2VlbSBsaWtlIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50cy4gVGhleSBzaG91bGQgZ2l2ZSBtZSBzb21lIHNvbGlkIHRvb2xzIHRvIHdvcmsgd2l0aCBmb3IgdGVzdGluZy4gQnV0IGJlZm9yZSBJIGdvIHRvbyBmYXIgZG93biB0aGF0IHJvYWQsIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgc29tZXRoaW5nLiBMZXQmIzM5O3MgbWFrZSBzdXJlIHRoYXQgYE5GQ19TSU1gIG9yIGBORkNfVklSVFVBTF9OQ0lgIGRvbiYjMzk7dCBoYXZlIGEgZGlyZWN0IGRlcGVuZGVuY3kgb24gYE5GQ2AgaXRzZWxmLiBJIG5lZWQgdG8ga25vdyBpZiBJJiMzOTtsbCBuZWVkIHRvIGVuYWJsZSB0aGF0IHRvcC1sZXZlbCBjb25maWcgZmlyc3QuIEdvdHRhIGNvdmVyIGFsbCB0aGUgYmFzZXMgdG8gYXZvaWQgYW55IHVuZXhwZWN0ZWQgYnVpbGQgZXJyb3JzIG9yIHNldHVwIGlzc3VlcyBsYXRlciBvbi4gTmVlZCB0byBtYWtlIHN1cmUgdGhlIGZvdW5kYXRpb25zIGFyZSBzdGFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORkNfU0lNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9LY29uZmlnPTIxPWNvbmZpZyBORkNfTUVJX1BIWVxuLS1cbmRyaXZlcnMvbmZjL0tjb25maWctMzAtXG5kcml2ZXJzL25mYy9LY29uZmlnOjMxOmNvbmZpZyBORkNfU0lNXG5kcml2ZXJzL25mYy9LY29uZmlnLTMyLVx0dHJpc3RhdGUgXCYjMzQ7TkZDIGhhcmR3YXJlIHNpbXVsYXRvciBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GQ19WSVJUVUFMX05DSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvS2NvbmZpZz00Mj1jb25maWcgTkZDX1BPUlQxMDBcbi0tXG5kcml2ZXJzL25mYy9LY29uZmlnLTUxLVxuZHJpdmVycy9uZmMvS2NvbmZpZzo1Mjpjb25maWcgTkZDX1ZJUlRVQUxfTkNJXG5kcml2ZXJzL25mYy9LY29uZmlnLTUzLVx0dHJpc3RhdGUgXCYjMzQ7TkNJIGRldmljZSBzaW11bGF0b3IgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3MjQKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIFJlY2VpdmluZyBGdW5jdGlvbnMgaW4gTExDUCoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlIHJlY2VpdmluZyBmdW5jdGlvbnMgd2l0aGluIHRoZSBMTENQIGltcGxlbWVudGF0aW9uLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBkYXRhIGlzIGhhbmRsZWQgYXQgdGhlIGxvd2VyIGxheWVycyBvZiB0aGUgTkZDIHN0YWNrLiBTcGVjaWZpY2FsbHksIEkgd2FudCB0byB0YWtlIGEgY2xvc2UgbG9vayBhdCBgX19uZmNfbGxjcF9yZWN2YCBhbmQgYG5mY19sbGNwX3JlY3ZgLiBJJiMzOTttIGN1cmlvdXMgYWJvdXQgdGhlIGRpc3RpbmN0aW9uIGFuZCBpbnRlcnBsYXkgYmV0d2VlbiB0aG9zZSBmdW5jdGlvbiBuYW1lcy4gQXJlIHdlIGxvb2tpbmcgYXQgYSBsb3ctbGV2ZWwsIGludGVybmFsIGhlbHBlciB2ZXJzdXMgYSBoaWdoZXItbGV2ZWwsIG1vcmUgdXNlci1mYWNpbmcgZW50cnkgcG9pbnQ/IEkmIzM5O2xsIHByb2JhYmx5IGNoZWNrIHRoZSBjb250ZXh0IHRoZXkmIzM5O3JlIHVzZWQgaW4gd2l0aGluIHRoZSBkcml2ZXIgdG8gZGV0ZXJtaW5lIHRoZWlyIGRpc3RpbmN0aW9uLiBXaGF0JiMzOTtzIHRoZSBxdWV1ZSBtYW5hZ2VtZW50IGxpa2U/IEludGVycnVwdCBoYW5kbGluZz8gRXJyb3IgY29uZGl0aW9ucz8gSG93IGRvZXMgdGhlIGNvcmUgbG9naWMgZGlmZmVyIGJldHdlZW4gdGhlc2UgZnVuY3Rpb24gaW1wbGVtZW50YXRpb25zPyBJIG5lZWQgdG8gYmUgc3VyZSB0aGF0IEkgYW0gdXAgdG8gZGF0ZSB3aXRoIHRoZSByZWNlaXZpbmcgZmxvdy4gSSB3aWxsIGJlZ2luIGJ5IGV4YW1pbmluZyB0aGUgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19uZmNfbGxjcF9yZWN2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25mYy9sbGNwX2NvcmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL2xsY3BfY29yZS5jPTE1NDM9c3RhdGljIHZvaWQgbmZjX2xsY3Bfcnhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTY1LVxubmV0L25mYy9sbGNwX2NvcmUuYzoxNTY2OnN0YXRpYyB2b2lkIF9fbmZjX2xsY3BfcmVjdihzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTY3LXtcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jPTE1Nzg9dm9pZCBuZmNfbGxjcF9yZWN2KHZvaWQgKmRhdGEsIHN0cnVjdCBza19idWZmICpza2IsIGludCBlcnIpXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTg2LVxubmV0L25mYy9sbGNwX2NvcmUuYzoxNTg3Olx0X19uZmNfbGxjcF9yZWN2KGxvY2FsLCBza2IpO1xubmV0L25mYy9sbGNwX2NvcmUuYy0xNTg4LX1cbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jPTE1OTA9aW50IG5mY19sbGNwX2RhdGFfcmVjZWl2ZWQoc3RydWN0IG5mY19kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1OTktXG5uZXQvbmZjL2xsY3BfY29yZS5jOjE2MDA6XHRfX25mY19sbGNwX3JlY3YobG9jYWwsIHNrYik7XG5uZXQvbmZjL2xsY3BfY29yZS5jLTE2MDEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzNjUKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZSB3aGF0IEkmIzM5O20gdGhpbmtpbmcgaGVyZS4KCioqVHJhY2luZyB0aGUgQ2FsbCBQYXRoIG9mIGBuZmNfbGxjcF9yZWN2YCoqCgpBbHJpZ2h0LCBzbyBgX19uZmNfbGxjcF9yZWN2YCBpcyBvbiB0aGUgcmVjZWl2aW5nIGVuZCwgY2FsbGVkIGJ5IGJvdGggYG5mY19sbGNwX3JlY3ZgIGFuZCBgbmZjX2xsY3BfZGF0YV9yZWNlaXZlZGAuIFRoYXQgbXVjaCBpcyBjbGVhci4gVGhlIG5leHQgbG9naWNhbCBzdGVwLCBpbiBteSBsaW5lIG9mIGludmVzdGlnYXRpb24sIGlzIHRvIHVuZGVyc3RhbmQgdGhlIG9yaWdpbiBvZiAqdGhvc2UqIGNhbGxzLiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIGBuZmNfbGxjcF9yZWN2YCB0byBmaWd1cmUgb3V0IHdoZXJlIGl0JiMzOTtzIGJlaW5nIGludm9rZWQuIEtub3dpbmcgdGhlIGNhbGwgZ3JhcGggd2lsbCBnaXZlIG1lIHRoZSBiaWdnZXIgcGljdHVyZSBvZiB0aGUgZGF0YSBmbG93IGFuZCBob3cgdGhpcyBmdW5jdGlvbiBmaXRzIGludG8gdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLiBUaW1lIHRvIGRpZyBhIGJpdCBkZWVwZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mY19sbGNwX3JlY3YmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL2xsY3AuaD0yMjM9aW50IG5mY19sbGNwX3BhcnNlX2Nvbm5lY3Rpb25fdGx2KHN0cnVjdCBuZmNfbGxjcF9zb2NrICpzb2NrLFxuLS1cbm5ldC9uZmMvbGxjcC5oLTIyNi0vKiBDb21tYW5kcyBBUEkgKi9cbm5ldC9uZmMvbGxjcC5oOjIyNzp2b2lkIG5mY19sbGNwX3JlY3Yodm9pZCAqZGF0YSwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGVycik7XG5uZXQvbmZjL2xsY3AuaC0yMjgtdTggKm5mY19sbGNwX2J1aWxkX3Rsdih1OCB0eXBlLCBjb25zdCB1OCAqdmFsdWUsIHU4IHZhbHVlX2xlbmd0aCwgdTggKnRsdl9sZW5ndGgpO1xuLS1cbm5ldC9uZmMvbGxjcC5oPTIzMz12b2lkIG5mY19sbGNwX2ZyZWVfc2RwX3Rsdl9saXN0KHN0cnVjdCBobGlzdF9oZWFkICpzZHBfaGVhZCk7XG5uZXQvbmZjL2xsY3AuaDoyMzQ6dm9pZCBuZmNfbGxjcF9yZWN2KHZvaWQgKmRhdGEsIHN0cnVjdCBza19idWZmICpza2IsIGludCBlcnIpO1xubmV0L25mYy9sbGNwLmgtMjM1LWludCBuZmNfbGxjcF9zZW5kX3N5bW0oc3RydWN0IG5mY19kZXYgKmRldik7XG4tLVxubmV0L25mYy9sbGNwX2NvbW1hbmRzLmM9MzcxPWludCBuZmNfbGxjcF9zZW5kX3N5bW0oc3RydWN0IG5mY19kZXYgKmRldilcbi0tXG5uZXQvbmZjL2xsY3BfY29tbWFuZHMuYy0zOTktXHRlcnIgPSBuZmNfZGF0YV9leGNoYW5nZShkZXYsIGxvY2FsLVx1MDAzZXRhcmdldF9pZHgsIHNrYixcbm5ldC9uZmMvbGxjcF9jb21tYW5kcy5jOjQwMDpcdFx0XHRcdCBuZmNfbGxjcF9yZWN2LCBsb2NhbCk7XG5uZXQvbmZjL2xsY3BfY29tbWFuZHMuYy00MDEtb3V0OlxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmM9NzYxPXN0YXRpYyB2b2lkIG5mY19sbGNwX3R4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtNzk3LVx0XHRcdHJldCA9IG5mY19kYXRhX2V4Y2hhbmdlKGxvY2FsLVx1MDAzZWRldiwgbG9jYWwtXHUwMDNldGFyZ2V0X2lkeCxcbm5ldC9uZmMvbGxjcF9jb3JlLmM6Nzk4Olx0XHRcdFx0XHRcdHNrYiwgbmZjX2xsY3BfcmVjdiwgbG9jYWwpO1xubmV0L25mYy9sbGNwX2NvcmUuYy03OTktXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYz04NDk9c3RhdGljIGNvbnN0IHU4ICpuZmNfbGxjcF9jb25uZWN0X3NuKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHNpemVfdCAqc25fbGVuKVxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtODcyLVxubmV0L25mYy9sbGNwX2NvcmUuYzo4NzM6c3RhdGljIHZvaWQgbmZjX2xsY3BfcmVjdl91aShzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLFxubmV0L25mYy9sbGNwX2NvcmUuYy04NzQtXHRcdFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtOTA4LVxubmV0L25mYy9sbGNwX2NvcmUuYzo5MDk6c3RhdGljIHZvaWQgbmZjX2xsY3BfcmVjdl9jb25uZWN0KHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsXG5uZXQvbmZjL2xsY3BfY29yZS5jLTkxMC1cdFx0XHRcdCAgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jPTEwNDA9aW50IG5mY19sbGNwX3F1ZXVlX2lfZnJhbWVzKHN0cnVjdCBuZmNfbGxjcF9zb2NrICpzb2NrKVxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTA2Ny1cbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTA2ODpzdGF0aWMgdm9pZCBuZmNfbGxjcF9yZWN2X2hkbGMoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTA2OS1cdFx0XHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jLTExNTUtXG5uZXQvbmZjL2xsY3BfY29yZS5jOjExNTY6c3RhdGljIHZvaWQgbmZjX2xsY3BfcmVjdl9kaXNjKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsXG5uZXQvbmZjL2xsY3BfY29yZS5jLTExNTctXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy0xMjAwLVxubmV0L25mYy9sbGNwX2NvcmUuYzoxMjAxOnN0YXRpYyB2b2lkIG5mY19sbGNwX3JlY3ZfY2Moc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTIwMi1cdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy0xMjQ1LVxubmV0L25mYy9sbGNwX2NvcmUuYzoxMjQ2OnN0YXRpYyB2b2lkIG5mY19sbGNwX3JlY3ZfZG0oc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTI0Ny1cdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy0xMjgzLVxubmV0L25mYy9sbGNwX2NvcmUuYzoxMjg0OnN0YXRpYyB2b2lkIG5mY19sbGNwX3JlY3Zfc25sKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsXG5uZXQvbmZjL2xsY3BfY29yZS5jLTEyODUtXHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE0MzUtXG5uZXQvbmZjL2xsY3BfY29yZS5jOjE0MzY6c3RhdGljIHZvaWQgbmZjX2xsY3BfcmVjdl9hZ2Yoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTQzNy17XG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYz0xNDgwPXN0YXRpYyB2b2lkIG5mY19sbGNwX3J4X3NrYihzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTUwMC1cdFx0cHJfZGVidWcoXCYjMzQ7VUlcXG5cJiMzNDspO1xubmV0L25mYy9sbGNwX2NvcmUuYzoxNTAxOlx0XHRuZmNfbGxjcF9yZWN2X3VpKGxvY2FsLCBza2IpO1xubmV0L25mYy9sbGNwX2NvcmUuYy0xNTAyLVx0XHRicmVhaztcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1MDUtXHRcdHByX2RlYnVnKFwmIzM0O0NPTk5FQ1RcXG5cJiMzNDspO1xubmV0L25mYy9sbGNwX2NvcmUuYzoxNTA2Olx0XHRuZmNfbGxjcF9yZWN2X2Nvbm5lY3QobG9jYWwsIHNrYik7XG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1MDctXHRcdGJyZWFrO1xuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTUxMC1cdFx0cHJfZGVidWcoXCYjMzQ7RElTQ1xcblwmIzM0Oyk7XG5uZXQvbmZjL2xsY3BfY29yZS5jOjE1MTE6XHRcdG5mY19sbGNwX3JlY3ZfZGlzYyhsb2NhbCwgc2tiKTtcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTUxMi1cdFx0YnJlYWs7XG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTE1LVx0XHRwcl9kZWJ1ZyhcJiMzNDtDQ1xcblwmIzM0Oyk7XG5uZXQvbmZjL2xsY3BfY29yZS5jOjE1MTY6XHRcdG5mY19sbGNwX3JlY3ZfY2MobG9jYWwsIHNrYik7XG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1MTctXHRcdGJyZWFrO1xuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTUyMC1cdFx0cHJfZGVidWcoXCYjMzQ7RE1cXG5cJiMzNDspO1xubmV0L25mYy9sbGNwX2NvcmUuYzoxNTIxOlx0XHRuZmNfbGxjcF9yZWN2X2RtKGxvY2FsLCBza2IpO1xubmV0L25mYy9sbGNwX2NvcmUuYy0xNTIyLVx0XHRicmVhaztcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1MjUtXHRcdHByX2RlYnVnKFwmIzM0O1NOTFxcblwmIzM0Oyk7XG5uZXQvbmZjL2xsY3BfY29yZS5jOjE1MjY6XHRcdG5mY19sbGNwX3JlY3Zfc25sKGxvY2FsLCBza2IpO1xubmV0L25mYy9sbGNwX2NvcmUuYy0xNTI3LVx0XHRicmVhaztcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1MzItXHRcdHByX2RlYnVnKFwmIzM0O0kgZnJhbWVcXG5cJiMzNDspO1xubmV0L25mYy9sbGNwX2NvcmUuYzoxNTMzOlx0XHRuZmNfbGxjcF9yZWN2X2hkbGMobG9jYWwsIHNrYik7XG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1MzQtXHRcdGJyZWFrO1xuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTUzNy1cdFx0cHJfZGVidWcoXCYjMzQ7QUdGIGZyYW1lXFxuXCYjMzQ7KTtcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTUzODpcdFx0bmZjX2xsY3BfcmVjdl9hZ2YobG9jYWwsIHNrYik7XG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1MzktXHRcdGJyZWFrO1xuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmM9MTU0Mz1zdGF0aWMgdm9pZCBuZmNfbGxjcF9yeF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1NjUtXG5uZXQvbmZjL2xsY3BfY29yZS5jOjE1NjY6c3RhdGljIHZvaWQgX19uZmNfbGxjcF9yZWN2KHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1Njcte1xuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTU3Ny1cbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTU3ODp2b2lkIG5mY19sbGNwX3JlY3Yodm9pZCAqZGF0YSwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGVycilcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTU3OS17XG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTg2LVxubmV0L25mYy9sbGNwX2NvcmUuYzoxNTg3Olx0X19uZmNfbGxjcF9yZWN2KGxvY2FsLCBza2IpO1xubmV0L25mYy9sbGNwX2NvcmUuYy0xNTg4LX1cbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jPTE1OTA9aW50IG5mY19sbGNwX2RhdGFfcmVjZWl2ZWQoc3RydWN0IG5mY19kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1OTktXG5uZXQvbmZjL2xsY3BfY29yZS5jOjE2MDA6XHRfX25mY19sbGNwX3JlY3YobG9jYWwsIHNrYik7XG5uZXQvbmZjL2xsY3BfY29yZS5jLTE2MDEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgwNzcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aGUgZXhwZXJ0OgoKKipVbmRlcnN0YW5kaW5nIHRoZSBMTENQIERhdGEgRmxvdyoqCgpPa2F5LCBzbyBJJiMzOTttIHRyeWluZyB0byBwaW4gZG93biB0aGUgZGF0YSBlbnRyeSBwb2ludHMgZm9yIHRoZSBMTENQIChMaW5rIExheWVyIENvbnRyb2wgUHJvdG9jb2wpIGluIHRoaXMgTkZDIGltcGxlbWVudGF0aW9uLiBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBkYXRhIHJlY2VwdGlvbiBwYXRoLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBoaW5nZSBvbiB0d28gZnVuY3Rpb25zOiBgbmZjX2xsY3BfZGF0YV9yZWNlaXZlZGAgYW5kIGBuZmNfbGxjcF9yZWN2YC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0aGF0IGBuZmNfbGxjcF9kYXRhX3JlY2VpdmVkYCB3YXMgbGlrZWx5IGEgY2FsbGJhY2sgdHJpZ2dlcmVkIGR1cmluZyBkYXRhIGV4Y2hhbmdlLCBtYXliZSBvcmlnaW5hdGluZyBmcm9tIHNvbWV0aGluZyBsaWtlIGBuZmNfZGF0YV9leGNoYW5nZWAuIEJ1dCB0aGF0JiMzOTtzIG5vdCBxdWl0ZSByaWdodC4gQWZ0ZXIgYSBxdWljayBsb29rLCBpdCYjMzk7cyBhY3R1YWxseSBhbiBleHBvcnRlZCBmdW5jdGlvbiwgd2hpY2ggY2hhbmdlcyB0aGUgcGljdHVyZSBzbGlnaHRseSwgYW5kIHRlbGxzIG1lIHRoZSBkZXNpZ24gaXMgYSBiaXQgZGlmZmVyZW50LiBJJiMzOTtsbCBuZWVkIHRvIGdvIGRlZXBlciBpbnRvIHRoZSBjYWxsIGhpZXJhcmNoeSB0byB1bmRlcnN0YW5kICpob3cqIGl0JiMzOTtzIGJlaW5nIGNhbGxlZCwgYnV0IHRoaXMgYXQgbGVhc3QgZ2l2ZXMgbWUgYSBrZXkgZW50cnkgcG9pbnQgdG8gdHJhY2UgdGhlIGRhdGEgZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZjX2xsY3BfZGF0YV9yZWNlaXZlZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvY29yZS5jPTY1NT1pbnQgbmZjX3RtX2RhdGFfcmVjZWl2ZWQoc3RydWN0IG5mY19kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvbmZjL2NvcmUuYy02NjItXG5uZXQvbmZjL2NvcmUuYzo2NjM6XHRyZXR1cm4gbmZjX2xsY3BfZGF0YV9yZWNlaXZlZChkZXYsIHNrYik7XG5uZXQvbmZjL2NvcmUuYy02NjQtfVxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmM9MTU3OD12b2lkIG5mY19sbGNwX3JlY3Yodm9pZCAqZGF0YSwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGVycilcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1ODktXG5uZXQvbmZjL2xsY3BfY29yZS5jOjE1OTA6aW50IG5mY19sbGNwX2RhdGFfcmVjZWl2ZWQoc3RydWN0IG5mY19kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTU5MS17XG4tLVxubmV0L25mYy9uZmMuaD01Mj11OCAqbmZjX2xsY3BfZ2VuZXJhbF9ieXRlcyhzdHJ1Y3QgbmZjX2RldiAqZGV2LCBzaXplX3QgKmdlbmVyYWxfYnl0ZXNfbGVuKTtcbm5ldC9uZmMvbmZjLmg6NTM6aW50IG5mY19sbGNwX2RhdGFfcmVjZWl2ZWQoc3RydWN0IG5mY19kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5uZXQvbmZjL25mYy5oLTU0LXN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbmZjX2xsY3BfZmluZF9sb2NhbChzdHJ1Y3QgbmZjX2RldiAqZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODc0OAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkRlY29uc3RydWN0aW5nIHRoZSBEYXRhIEZsb3cqKgoKUmlnaHQsIHNvIEkmIzM5O20gdHJ5aW5nIHRvIGdldCBhIGhhbmRsZSBvbiB0aGlzIHN5c3RlbS4gSXQmIzM5O3MgY2xlYXIgdGhhdCBgbmZjX3RtX2RhdGFfcmVjZWl2ZWRgIGlzIGEgY3JpdGljYWwgZnVuY3Rpb24uIFRoZSBpbXBsaWNhdGlvbiBoZXJlIGlzIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyAqdHJpZ2dlcmVkKiBvciAqaW52b2tlZCogZnJvbSB3aXRoaW4gdGhlIGRyaXZlcnMgdGhlbXNlbHZlcy4gVGhpcyBpcyBzaWduaWZpY2FudC4gSXQgdGVsbHMgbWUgdGhhdCB0aGUgbG93LWxldmVsIGludGVyYWN0aW9uIHdpdGggdGhlIE5GQyBoYXJkd2FyZSwgdGhlIGFjdHVhbCBieXRlLWxldmVsIGNvbW11bmljYXRpb24sIGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGVzZSBkcml2ZXJzLiBUaGUgZGF0YSBwcm9jZXNzaW5nIGFuZCBpbnRlcnByZXRhdGlvbiBsaWtlbHkgYmVnaW5zIHdpdGhpbiB0aGUgZHJpdmVyLCB0aGVuIGNhbGxzIHRoaXMgYG5mY190bV9kYXRhX3JlY2VpdmVkYCBmdW5jdGlvbiB0byBwYXNzIHRoZSByZWxldmFudCBpbmZvcm1hdGlvbiB1cHdhcmRzLiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoYXQgZnVuY3Rpb24gY2FsbCB0byB0aGUgc3BlY2lmaWMgZHJpdmVyKHMpIGludm9sdmVkIHRvIHJlYWxseSB1bmRlcnN0YW5kIHRoZSBkYXRhIHBpcGVsaW5lLiBVbmRlcnN0YW5kaW5nIHRoaXMgd2lsbCBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mY190bV9kYXRhX3JlY2VpdmVkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL21pY3JvcmVhZC9taWNyb3JlYWQuYz01NDc9c3RhdGljIGludCBtaWNyb3JlYWRfZXZlbnRfcmVjZWl2ZWQoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LCB1OCBwaXBlLFxuLS1cbmRyaXZlcnMvbmZjL21pY3JvcmVhZC9taWNyb3JlYWQuYy01NzMtXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvbWljcm9yZWFkLmM6NTc0Olx0XHRyID0gbmZjX3RtX2RhdGFfcmVjZWl2ZWQoaGRldi1cdTAwM2VuZGV2LCBza2IpO1xuZHJpdmVycy9uZmMvbWljcm9yZWFkL21pY3JvcmVhZC5jLTU3NS1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZmMvbWljcm9yZWFkL21pY3JvcmVhZC5jLTYwMi1cbmRyaXZlcnMvbmZjL21pY3JvcmVhZC9taWNyb3JlYWQuYzo2MDM6XHRcdHIgPSBuZmNfdG1fZGF0YV9yZWNlaXZlZChoZGV2LVx1MDAzZW5kZXYsIHNrYik7XG5kcml2ZXJzL25mYy9taWNyb3JlYWQvbWljcm9yZWFkLmMtNjA0LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25mYy9wbjUzMy9wbjUzMy5jPTEwNzE9c3RhdGljIGludCBwbjUzM190bV9nZXRfZGF0YV9jb21wbGV0ZShzdHJ1Y3QgcG41MzMgKmRldiwgdm9pZCAqYXJnLFxuLS1cbmRyaXZlcnMvbmZjL3BuNTMzL3BuNTMzLmMtMTEwNy1cbmRyaXZlcnMvbmZjL3BuNTMzL3BuNTMzLmM6MTEwODpcdHJldHVybiBuZmNfdG1fZGF0YV9yZWNlaXZlZChkZXYtXHUwMDNlbmZjX2Rldiwgc2tiKTtcbmRyaXZlcnMvbmZjL3BuNTMzL3BuNTMzLmMtMTEwOS1cbi0tXG5kcml2ZXJzL25mYy9wbjU0NC9wbjU0NC5jPTcxNT1zdGF0aWMgaW50IHBuNTQ0X2hjaV9ldmVudF9yZWNlaXZlZChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsIHU4IHBpcGUsIHU4IGV2ZW50LFxuLS1cbmRyaXZlcnMvbmZjL3BuNTQ0L3BuNTQ0LmMtNzU4LVx0XHRza2JfcHVsbChza2IsIDIpO1xuZHJpdmVycy9uZmMvcG41NDQvcG41NDQuYzo3NTk6XHRcdHJldHVybiBuZmNfdG1fZGF0YV9yZWNlaXZlZChoZGV2LVx1MDAzZW5kZXYsIHNrYik7XG5kcml2ZXJzL25mYy9wbjU0NC9wbjU0NC5jLTc2MC1cdGRlZmF1bHQ6XG4tLVxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmM9MzA0PXN0YXRpYyBpbnQgc3QyMW5mY2FfdG1fcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldixcbi0tXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYy0zNDItXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYzozNDM6XHRyZXR1cm4gbmZjX3RtX2RhdGFfcmVjZWl2ZWQoaGRldi1cdTAwM2VuZGV2LCBza2IpO1xuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmMtMzQ0LX1cbi0tXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYz01NTM9c3RhdGljIHZvaWQgc3QyMW5mY2FfaW1fcmVjdl9kZXBfcmVzX2NiKHZvaWQgKmNvbnRleHQsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmMtNTk0LVx0XHRcdHNrYl9wdWxsKHNrYiwgc2l6ZSk7XG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYzo1OTU6XHRcdFx0bmZjX3RtX2RhdGFfcmVjZWl2ZWQoaW5mby1cdTAwM2VoZGV2LVx1MDAzZW5kZXYsIHNrYik7XG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYy01OTYtXHRcdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk3NzcKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgRGF0YSBGbG93IGluIE5GQyBSZWNlcHRpb24qKgoKUmlnaHQsIHNvIGBuZmNfdG1fZGF0YV9yZWNlaXZlZGAgaXMgdGhlIGNydWNpYWwgZnVuY3Rpb24sIHRoZSBlbnRyeSBwb2ludCBmb3IgaGFuZGxpbmcgaW5jb21pbmcgZGF0YSBmcm9tIHRoZSBwaHlzaWNhbCBORkMgZHJpdmVycy4gVGhhdCYjMzk7cyBjbGVhci4gQnV0IG5vdyBJIG5lZWQgdG8gdHJhY2UgKmFsbCogdGhlIHBvc3NpYmxlIGRhdGEgcGF0aHMuIEkmIzM5O3ZlIGdvdCB0byBjb25zaWRlciBub3QganVzdCB0aGUgb2J2aW91cyBoYXJkd2FyZSBpbnRlcmFjdGlvbnMgYnV0IGFsc28gdGhlIHNpbXVsYXRpb24gZW52aXJvbm1lbnRzLiBTcGVjaWZpY2FsbHksIHdoYXQgYWJvdXQgdGhlIHNpbXVsYXRlZCBORkMgbGF5ZXJzPyBIb3cgZG9lcyB0aGUgZGF0YSBwcm9wYWdhdGUgdGhyb3VnaCBgbmZjc2ltYCBvciBgdmlydHVhbF9uY2lkZXZgPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGV5IGFsc28gY2FsbCBgbmZjX3RtX2RhdGFfcmVjZWl2ZWRgIChvciBhbiBlcXVpdmFsZW50KSBhbmQgaG93IHRoZWlyIGRhdGEgZ2V0cyBwYXNzZWQgdG8gdGhhdCBwb2ludC4gVGhpcyBpcyBjcnVjaWFsIGZvciB2ZXJpZnlpbmcgdGhlIHJvYnVzdG5lc3Mgb2YgdGhlIHN5c3RlbTsgdG8gZW5zdXJlIHRoYXQgYWxsIGRhdGEgaXMgaGFuZGxlZCBjb25zaXN0ZW50bHksIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBvcmlnaW5hdGVzIGZyb20gYSBwaHlzaWNhbCBjaGlwIG9yIGEgc2ltdWxhdGlvbi4gVGhpcyBpcyB0aGUga2V5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMToyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZmNfdG1fZGF0YV9yZWNlaXZlZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvY29yZS5jPTY1Mz1FWFBPUlRfU1lNQk9MKG5mY19nZXRfbG9jYWxfZ2VuZXJhbF9ieXRlcyk7XG5uZXQvbmZjL2NvcmUuYy02NTQtXG5uZXQvbmZjL2NvcmUuYzo2NTU6aW50IG5mY190bV9kYXRhX3JlY2VpdmVkKHN0cnVjdCBuZmNfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvbmZjL2NvcmUuYy02NTYte1xuLS1cbm5ldC9uZmMvY29yZS5jLTY2NC19XG5uZXQvbmZjL2NvcmUuYzo2NjU6RVhQT1JUX1NZTUJPTChuZmNfdG1fZGF0YV9yZWNlaXZlZCk7XG5uZXQvbmZjL2NvcmUuYy02NjYtXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTEwNzc9c3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMjc0LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEyNzU6XHRyYyA9IG5mY190bV9kYXRhX3JlY2VpdmVkKGRkZXYtXHUwMDNlbmZjX2RldiwgcmVzcCk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTI3Ni1cdGlmIChyYylcbi0tXG5uZXQvbmZjL25jaS9kYXRhLmM9MjE0PXN0YXRpYyB2b2lkIG5jaV9hZGRfcnhfZGF0YV9mcmFnKHN0cnVjdCBuY2lfZGV2ICpuZGV2LFxuLS1cbm5ldC9uZmMvbmNpL2RhdGEuYy0yNjEtXHRcdC8qIERhdGEgcmVjZWl2ZWQgaW4gVGFyZ2V0IG1vZGUsIGZvcndhcmQgdG8gbmZjIGNvcmUgKi9cbm5ldC9uZmMvbmNpL2RhdGEuYzoyNjI6XHRcdGVyciA9IG5mY190bV9kYXRhX3JlY2VpdmVkKG5kZXYtXHUwMDNlbmZjX2Rldiwgc2tiKTtcbm5ldC9uZmMvbmNpL2RhdGEuYy0yNjMtXHRcdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNDcxCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMzM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBORkMgRGF0YSBSZWNlcHRpb24gUGF0aHMqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gTkZDIGRhdGEgcmVjZXB0aW9uIGFuZCB0cnlpbmcgdG8gaWRlbnRpZnkga2V5IGVudHJ5IHBvaW50cy4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgdGFrZXMgbWUgdGhyb3VnaCBgbmNpX2FkZF9yeF9kYXRhX2ZyYWdgIGluIGBuZXQvbmZjL25jaS9kYXRhLmNgLiBJIHNlZSBpdCB1bHRpbWF0ZWx5IGNhbGxzIGBuZmNfdG1fZGF0YV9yZWNlaXZlZGAuIFNpbmNlIGBuY2lfYWRkX3J4X2RhdGFfZnJhZ2AgaXMgcGFydCBvZiB0aGUgTkNJIGxheWVyLCB3aGljaCBjYW4gYmUgaW5zdGFudGlhdGVkIGJ5IHNvbWV0aGluZyBsaWtlIGB2aXJ0dWFsX25jaWRldmAsIEkmIzM5O20gbG9va2luZyBmb3IgYSBjb25maWd1cmF0aW9uIHRoYXQgaW5jbHVkZXMgZWl0aGVyIGBDT05GSUdfTkZDX1ZJUlRVQUxfTkNJYCBvciBgQ09ORklHX05GQ19OQ0lgLiBUaG9zZSBzZWVtIGxpa2Ugc29saWQgb3B0aW9ucyB0byBzdGFydCB3aXRoLgoKSSBhbHNvIHNlZSB0aGF0IGBDT05GSUdfTkZDX1NJTWAgdXRpbGl6ZXMgdGhlIGBuZmNfZGlnaXRhbGAgbW9kdWxlLiBJbiB0aGF0IG1vZHVsZSwgYGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxYCBhbHNvIGNhbGxzIGBuZmNfdG1fZGF0YV9yZWNlaXZlZGAuIFNvLCBgQ09ORklHX05GQ19TSU1gIGFuZCBgQ09ORklHX05GQ19ESUdJVEFMYCBhcmUgd29ydGggY29uc2lkZXJpbmcgYXMgd2VsbC4KCk5vdywgSSYjMzk7bSBzaGlmdGluZyBteSBhdHRlbnRpb24gdG8gTExDUCBhbmQgaXRzIHJvbGUgaW4gaGFuZGxpbmcgcmVjZWl2ZWQgZGF0YS4gTGV0JiMzOTtzIHNlZS4uLkkmIzM5O20gZ29pbmcgdG8gbG9vayBhdCBgX19uZmNfbGxjcF9yZWN2YCBhbmQgYG5mY19sbGNwX3JlY3ZgLiBJIGtub3cgdGhhdCBgbmZjX2xsY3BfcmVjdmAgaXMgdHJpZ2dlcmVkIGFzIGEgY2FsbGJhY2sgZnJvbSBgbmZjX2RhdGFfZXhjaGFuZ2VgLiBOb3csIHdoZXJlIGlzIGBuZmNfZGF0YV9leGNoYW5nZWAgYmVpbmcgY2FsbGVkPyBBaCwgaXQgaXMgY2FsbGVkIGZyb20gYG5mY19sbGNwX3R4X3dvcmtgIGFuZCBgbmZjX2xsY3Bfc2VuZF9zeW1tYC4gQWxyaWdodCwgdGhpcyBzdWdnZXN0cyBhIG1vcmUgc3BlY2lmaWMgc2V0IG9mIGZ1bmN0aW9uIHN5bWJvbHMgdG8gZm9jdXMgb24gaGVyZS4KCkJhc2VkIG9uIHRoaXMgdHJhdmVyc2FsLCBteSBjb3JlIGZvY3VzIHN5bWJvbHMgc2hvdWxkIGJlOiBgbmZjX2xsY3BfcmVjdmAsIGBuZmNfbGxjcF9kYXRhX3JlY2VpdmVkYCwgYF9fbmZjX2xsY3BfcmVjdmAsIGBuZmNfbGxjcF9yeF93b3JrYCwgYW5kIGBuZmNfbGxjcF9yeF9za2JgLgoKTm93LCBiZWZvcmUgSSBtb3ZlIG9uLCBJIHdhbnQgdG8gdmVyaWZ5IHRoYXQgYG5mY19sbGNwX3J4X3NrYmAgaXMsIGluIGZhY3QsIGEgcmVsZXZhbnQgZm9jdXMgc3ltYm9sIHRvIHJldmlldy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZjX2xsY3Bfcnhfc2tiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25mYy9sbGNwX2NvcmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL2xsY3BfY29yZS5jPTIxPXN0YXRpYyBERUZJTkVfU1BJTkxPQ0sobGxjcF9kZXZpY2VzX2xvY2spO1xubmV0L25mYy9sbGNwX2NvcmUuYy0yMi1cbm5ldC9uZmMvbGxjcF9jb3JlLmM6MjM6c3RhdGljIHZvaWQgbmZjX2xsY3Bfcnhfc2tiKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IpO1xubmV0L25mYy9sbGNwX2NvcmUuYy0yNC1cbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jPTE0MzY9c3RhdGljIHZvaWQgbmZjX2xsY3BfcmVjdl9hZ2Yoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE0NzEtXG5uZXQvbmZjL2xsY3BfY29yZS5jOjE0NzI6XHRcdG5mY19sbGNwX3J4X3NrYihsb2NhbCwgbmV3X3NrYik7XG5uZXQvbmZjL2xsY3BfY29yZS5jLTE0NzMtXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy0xNDc5LVxubmV0L25mYy9sbGNwX2NvcmUuYzoxNDgwOnN0YXRpYyB2b2lkIG5mY19sbGNwX3J4X3NrYihzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L25mYy9sbGNwX2NvcmUuYy0xNDgxLXtcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jPTE1NDM9c3RhdGljIHZvaWQgbmZjX2xsY3Bfcnhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTU4LVxubmV0L25mYy9sbGNwX2NvcmUuYzoxNTU5Olx0bmZjX2xsY3Bfcnhfc2tiKGxvY2FsLCBza2IpO1xubmV0L25mYy9sbGNwX2NvcmUuYy0xNTYwLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMToyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTc2OAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDI0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipMTENQIFBhY2tldCBSZWNlcHRpb24gRmxvdyoqCgpPa2F5LCBzbyBJJiMzOTttIHplcm9pbmcgaW4gb24gdGhlIGNvcmUgb2YgaG93IExMQ1AgcGFja2V0cyBhcmUgaGFuZGxlZCBvbiB0aGlzIHN5c3RlbS4gSXQgbG9va3MgbGlrZSBgbmZjX2xsY3Bfcnhfc2tiYCBpcyB0aGUgYmlnIGthaHVuYSwgdGhlIG1haW4gZGlzcGF0Y2hlciBmb3IgYW55IGluY29taW5nIExMQ1AgcGFja2V0cy4gVGhhdCBtYWtlcyBzZW5zZTsgaXQmIzM5O3MgdGhlIHVsdGltYXRlIGRlc3RpbmF0aW9uLiBOb3csIGBuZmNfbGxjcF9yeF93b3JrYCBpcyBpbnRlcmVzdGluZ+KAlGl0IGRlcXVldWVzIHRoZSBgc2tiYCBhbmQgKnRoZW4qIGNhbGxzIGBuZmNfbGxjcF9yeF9za2JgLiBTbywgaXQgYWN0cyBhcyBhIHdvcmsgcXVldWUgaGFuZGxlciwgcHJvY2Vzc2luZyB0aGUgcmVjZWl2ZWQgZGF0YS4gQW5kIHRoZSBwb2ludCBvZiBlbnRyeSBzZWVtcyB0byBiZSBgX19uZmNfbGxjcF9yZWN2YCwgd2hpY2ggcXVldWVzIHRoZSBgc2tiYCBhbmQgc2NoZWR1bGVzIHRoZSB3b3JrcXVldWUgdGhyb3VnaCBgbmZjX2xsY3Bfcnhfd29ya2AuIFRoYXQgaW1tZWRpYXRlbHkgZ2l2ZXMgbWUgYSBnb29kIGlkZWEgb2YgdGhlIGV4ZWN1dGlvbiBwYXRoLgoKR2l2ZW4gdGhpcywgSSBzaG91bGQgcHJvYmFibHkgZm9jdXMgbXkgYXR0ZW50aW9uIG9uIHRoZXNlIHN5bWJvbHM6IGBfX25mY19sbGNwX3JlY3ZgLCBgbmZjX2xsY3BfcmVjdmAsIGBuZmNfbGxjcF9kYXRhX3JlY2VpdmVkYCwgYG5mY19sbGNwX3J4X3dvcmtgLCBhbmQgdGhlIGFsbC1pbXBvcnRhbnQgYG5mY19sbGNwX3J4X3NrYmAuIFRoZXkgZm9ybSB0aGUgY3JpdGljYWwgcGF0aCwgYW5kIHVuZGVyc3RhbmRpbmcgdGhlaXIgaW50ZXJhY3Rpb25zIGlzIGdvaW5nIHRvIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBmdWxsIHN5c3RlbS4KCkp1c3QgdG8gYmUgc3VyZSwgSSBzaG91bGQgdmVyaWZ5IHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBMb29rcyBsaWtlIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGZvbGxvd2luZyBjb25maWdzLCBqdXN0IGluIGNhc2U6IGBDT05GSUdfTkZDYCwgYENPTkZJR19ORkNfTkNJYCwgYENPTkZJR19ORkNfVklSVFVBTF9OQ0lgLCBgQ09ORklHX05GQ19TSU1gLCBhbmQgYENPTkZJR19ORkNfRElHSVRBTGAuIEkmIzM5O2xsIGFsc28gaGF2ZSBhIGxvb2sgYXQgYG5ldC9uZmMvS2NvbmZpZ2AgdG8gc2VlIGlmIGBORkNfTExDUGAgaXMgYSBkaXNjcmV0ZSwgc2VwYXJhdGUgY29uZmlndXJhdGlvbiBvcHRpb24gdGhhdCBjb3VsZCBpbXBhY3QgaG93IHRoaW5ncyBhcmUgYnVpbHQuIEdvdHRhIGNvdmVyIGFsbCBteSBiYXNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL0tjb25maWctNS1cbm5ldC9uZmMvS2NvbmZpZzo2Om1lbnVjb25maWcgTkZDXG5uZXQvbmZjL0tjb25maWctNy1cdGRlcGVuZHMgb24gUkZLSUxMIHx8ICFSRktJTExcbi0tXG5uZXQvbmZjL0tjb25maWctMTYtXG5uZXQvbmZjL0tjb25maWc6MTc6Y29uZmlnIE5GQ19ESUdJVEFMXG5uZXQvbmZjL0tjb25maWctMTgtXHRkZXBlbmRzIG9uIE5GQ1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMToyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjU0NwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipOYXZpZ2F0aW5nIHRoZSBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqCgpPa2F5LCBsZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBjb25maWd1cmF0aW9uIGFuZCB0aGUgZmlyc3QgcXVlc3Rpb24gdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpcyB3aGV0aGVyIHRoZXJlJiMzOTtzIGEgZGVkaWNhdGVkIGBORkNfTExDUGAgY29uZmlndXJhdGlvbiBvcHRpb24uIEl0JiMzOTtzIGEga2V5IHByb3RvY29sLCBzbyBpdCAqc2hvdWxkKiBiZSB0aGVyZSwgYnV0IEkgbmVlZCB0byBiZSBzdXJlLiBJJiMzOTttIG1lbnRhbGx5IHNjYW5uaW5nIHRoZSB1c3VhbCBzdXNwZWN0cyBpbiB0aGUgY29uZmlndXJhdGlvbiBmaWxlcywgdGhpbmtpbmcgYWJvdXQgd2hlcmUgaXQgd291bGQgbG9naWNhbGx5IHJlc2lkZSB3aXRoaW4gdGhlIGV4aXN0aW5nIHN0cnVjdHVyZS4gSXMgaXQgdW5kZXIgdGhlIE5GQyB1bWJyZWxsYSwgb3IgcGVyaGFwcyB0dWNrZWQgYXdheSB1bmRlciBhIG1vcmUgZ2VuZXJpYyBuZXR3b3JraW5nIHNlY3Rpb24/IE9yIG1heWJlIGl0JiMzOTtzIGRlcGVuZGVudCBvbiBzb21lIG90aGVyIHNldHRpbmcsIG1ha2luZyBpdHMgcHJlc2VuY2UgY29uZGl0aW9uYWwuIEkgbmVlZCB0byBrbm93IHF1aWNrbHkgd2hldGhlciBJIG5lZWQgdG8gZ28gaHVudGluZyBlbHNld2hlcmUgb3IgaWYgaXQmIzM5O3MgcmlnaHQgaW4gZnJvbnQgb2YgbXkgZmFjZS4gS25vd2luZyB3aGV0aGVyIHRoaXMgc2V0dGluZyBleGlzdHMgd2lsbCBpbmZvcm0gbXkgbmV4dCBzdGVwcywgYW5kIHdoYXQgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiBpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORkNfTExDUCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNzkwCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkFuYWx5emluZyBgbGxjcF9jb3JlLm9gIEJ1aWxkIENvbmRpdGlvbmFsaXR5KioKClJpZ2h0LCBzbywgSSBuZWVkIHRvIGNsZWFyIHRoaXMgdXAuIE15IGluaXRpYWwgYXNzdW1wdGlvbiBhYm91dCBgbGxjcF9jb3JlLm9gJiMzOTtzIGJ1aWxkIGNvbmRpdGlvbmFsaXR5IGlzIHdyb25nLiBJdCYjMzk7cyBkZWZpbml0ZWx5IGJ1aWx0IHVuY29uZGl0aW9uYWxseSB3aGVuIGBDT05GSUdfTkZDYCBpcyBlbmFibGVkLCBhbmQgdGhhdCYjMzk7cyB0aHJvdWdoIHRoZSBgbmZjLW9ianNgIG1lY2hhbmlzbSwgb2YgY291cnNlLiBUaW1lIHRvIGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZyBhbmQgbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIHNvbWV0aGluZyBzdHVwaWQuIExldCBtZSBnbyBiYWNrIGFuZCBkb3VibGUgY2hlY2sgdGhlIGBuZXQvbmZjL01ha2VmaWxlYCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4uIEl0IHdvdWxkIGJlIGVhc3kgdG8gb3Zlcmxvb2sgc29tZXRoaW5nIGluIGEgTWFrZWZpbGUhIEdvdHRhIGJlIHRob3JvdWdoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMToyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtsbGNwX2NvcmUubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25mYy9NYWtlZmlsZT05PW9iai0kKENPTkZJR19ORkNfRElHSVRBTCkgJiM0Mzs9IG5mY19kaWdpdGFsLm9cbm5ldC9uZmMvTWFrZWZpbGUtMTAtXG5uZXQvbmZjL01ha2VmaWxlOjExOm5mYy1vYmpzIDo9IGNvcmUubyBuZXRsaW5rLm8gYWZfbmZjLm8gcmF3c29jay5vIGxsY3BfY29yZS5vIGxsY3BfY29tbWFuZHMubyBcXFxubmV0L25mYy9NYWtlZmlsZS0xMi1cdFx0bGxjcF9zb2NrLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMxMzMKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgTkZDIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhlIGBuZmMtb2Jqc2AgYnVpbGQgcHJvY2VzcyB3b3JrcyBpbiByZWxhdGlvbiB0byB0aGUgTkZDIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHllcywgdGhlIGBuZmMtb2Jqc2AgbW9kdWxlIGlzIGRlZmluaXRlbHkgYnVpbHQgd2hlbiB0aGUgbWFpbiBgQ09ORklHX05GQ2Agb3B0aW9uIGlzIGVuYWJsZWQsIHRoYXQmIzM5O3MgdGhlIGJhc2UgcmVxdWlyZW1lbnQuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhIGJpdCBiZXR0ZXIuCgpJIHNlZSBhIGZldyBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBORkM6IGBORkNgLCBgTkZDX05DSWAsIGBORkNfVklSVFVBTF9OQ0lgLCBhbmQgYE5GQ19TSU1gLiBUaGVzZSBhcmUgdGhlIGtleSB2YXJpYWJsZXMuIE5vdywgSSB3YW50IHRvIHNwZWNpZmljYWxseSBjaGVjayBob3cgYE5GQ19OQ0lgIGlzIHNlbGVjdGVkIHdpdGhpbiB0aGlzIHNldHVwLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGBORkNfVklSVFVBTF9OQ0lgIGhhcyBhbnkgaW5mbHVlbmNlIG9uIHRoZSBgTkZDX05DSWAgY29uZmlndXJhdGlvbiwgSSBuZWVkIHRvIGtub3cgdGhlIHJlbGF0aW9uc2hpcHMuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGEgbGl0dGxlIGRlZXBlciBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIHRvIGNvbmZpcm0gdGhhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GQ19WSVJUVUFMX05DSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvS2NvbmZpZz00Mj1jb25maWcgTkZDX1BPUlQxMDBcbi0tXG5kcml2ZXJzL25mYy9LY29uZmlnLTUxLVxuZHJpdmVycy9uZmMvS2NvbmZpZzo1Mjpjb25maWcgTkZDX1ZJUlRVQUxfTkNJXG5kcml2ZXJzL25mYy9LY29uZmlnLTUzLVx0dHJpc3RhdGUgXCYjMzQ7TkNJIGRldmljZSBzaW11bGF0b3IgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNTUxCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBmb2N1c2luZyBvbiB0aGUgZGVwZW5kZW5jaWVzIG9mIGBORkNfVklSVFVBTF9OQ0lgOgoKKipEZWNvbnN0cnVjdGluZyBEZXBlbmRlbmNpZXM6IE5GQ19WSVJUVUFMX05DSSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBkZXBlbmRlbmNpZXMgb2YgYE5GQ19WSVJUVUFMX05DSWAuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIG1hcCBvdXQgdGhlIGxhbmRzY2FwZS4gV2hhdCBvdGhlciBjb21wb25lbnRzLCBkcml2ZXJzLCBvciBtb2R1bGVzIGlzIHRoaXMgc3BlY2lmaWMgdmlydHVhbCBOQ0kgbGF5ZXIgYnVpbHQgdXBvbj8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGZvdW5kYXRpb24uIElzIGl0IHJlbGlhbnQgb24gYSBzcGVjaWZpYyBoYXJkd2FyZSBhYnN0cmFjdGlvbiBsYXllciAoSEFMKT8gRG9lcyBpdCBpbnRlcmZhY2Ugd2l0aCBwYXJ0aWN1bGFyIGtlcm5lbCBtb2R1bGVzIG9yIHVzZXItc3BhY2Ugc2VydmljZXM/CgpJJiMzOTttIHRoaW5raW5nLCBhcmUgdGhlcmUgYW55IG9idmlvdXMga2VybmVsIG1vZHVsZXMgdGhhdCBhcmUgY3JpdGljYWwgZm9yIGl0cyBvcGVyYXRpb24sIHN1Y2ggYXMgdGhvc2UgcmVsYXRlZCB0byBzZWN1cmUgZWxlbWVudHMsIHJlYWRlci93cml0ZXIgbW9kZXMsIG9yIHBlZXItdG8tcGVlciBjb21tdW5pY2F0aW9uPyBJIG5lZWQgdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIHRoZSAqZGlyZWN0KiBkZXBlbmRlbmNpZXMsIHRob3NlIGl0IGV4cGxpY2l0bHkgY2FsbHMgdXBvbiwgYW5kIHRoZSAqaW5kaXJlY3QqIG9uZXMsIHdoaWNoIGFyZSBmdW5kYW1lbnRhbCB0byBpdHMgZW52aXJvbm1lbnQuIEZvciBleGFtcGxlLCBpcyBpdCBkZXBlbmRlbnQgb24gYSBwYXJ0aWN1bGFyIHZlcnNpb24gb2YgdGhlIE5GQyBzdGFjaz8gQXJlIHRoZXJlIHNwZWNpZmljIHNlY3VyaXR5IHBvbGljaWVzIGl0IG11c3QgYWRoZXJlIHRvPwoKTW9yZSBpbXBvcnRhbnRseSwgaG93IGRvZXMgaXQgaGFuZGxlIGNvbmN1cnJlbmN5IGFuZCByZXNvdXJjZSBjb250ZW50aW9uIHdpdGggb3RoZXIgTkZDIGNvbXBvbmVudHM/IFRoYXQmIzM5O3MgYWx3YXlzIGEgY3JpdGljYWwgYXNwZWN0IGluIHZpcnR1YWxpemVkIHN5c3RlbXMuIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCBpdHMgbG9ja2luZyBtZWNoYW5pc21zLCBpdHMgaW50ZXJydXB0IGhhbmRsaW5nLCBhbmQgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMuCgpNeSBhbmFseXNpcyBuZWVkcyB0byBiZSBjb21wcmVoZW5zaXZlLiBJJiMzOTttIGxvb2tpbmcgZm9yIGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgcm9sZSBpbiB0aGUgZ3JlYXRlciBORkMgYXJjaGl0ZWN0dXJlIGFuZCBpdHMgcG9pbnRzIG9mIGNvbnRhY3QuIFVuZGVyc3RhbmRpbmcgdGhlc2UgZGVwZW5kZW5jaWVzIGlzIGtleSB0byBhbnkgZGVlcGVyIGludmVzdGlnYXRpb24sIGVzcGVjaWFsbHkgaWYgSSBuZWVkIHRvIGRlYnVnLCBvcHRpbWl6ZSwgb3IgbW9kaWZ5IHRoaXMgY29tcG9uZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMToyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1MiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDUyOlx0Y29uZmlnIE5GQ19WSVJUVUFMX05DSVxuICA1MzpcdFx0dHJpc3RhdGUgXCYjMzQ7TkNJIGRldmljZSBzaW11bGF0b3IgZHJpdmVyXCYjMzQ7XG4gIDU0Olx0XHRkZXBlbmRzIG9uIE5GQ19OQ0lcbiAgNTU6XHRcdGhlbHBcbiAgNTY6XHRcdCAgTkNJIHZpcnR1YWwgZGV2aWNlIHNpbXVsYXRlcyBhIE5DSSBkZXZpY2UgdG8gdGhlIHVzZXIuXG4gIDU3Olx0XHQgIEl0IGNhbiBiZSB1c2VkIHRvIHZhbGlkYXRlIHRoZSBOQ0kgbW9kdWxlIGFuZCBhcHBsaWNhdGlvbnMuXG4gIDU4Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIGNvbW11bmljYXRpb24gYmV0d2VlbiB0aGUgdmlydHVhbCBOQ0kgZGV2aWNlIGFuZFxuICA1OTpcdFx0ICBtb2R1bGUuXG4gIDYwOlx0XG4gIDYxOlx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MDczCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ29uc2lkZXJpbmcgTkZDIEltcGxlbWVudGF0aW9uIENob2ljZXMqKgoKQWxyaWdodCwgc28gdGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byByZXZvbHZlIGFyb3VuZCBORkMgaW1wbGVtZW50YXRpb24sIGFuZCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyAmIzM0O1llcywgaXQgKmRlZmluaXRlbHkqIGhpbmdlcyBvbiB0aGUgYE5GQ19OQ0lgIGNvbXBvbmVudC4mIzM0OyBUaGF0JiMzOTtzIHRoZSBOZXR3b3JrIENvbnRyb2xsZXIgSW50ZXJmYWNlLCBhbmQgaXTigJlzIHRoZSBiZWRyb2NrIG9mIGhvdyB3ZSBhY3R1YWxseSB0YWxrIHRvIHRoZSBORkMgaGFyZHdhcmUgYXQgYSBsb3dlciBsZXZlbC4gTXkgYXJjaGl0ZWN0dXJlIGlzIGZ1bmRhbWVudGFsbHkgc2hhcGVkIGJ5IGhvdyB3ZWxsIHRoYXQmIzM5O3MgZGVzaWduZWQgYW5kIGltcGxlbWVudGVkLiBCdXQgSSBjYW4mIzM5O3Qgc3RvcCB0aGVyZS4KCk15IG1pbmQgaW1tZWRpYXRlbHkgYnJhbmNoZXMgdG8gY29uc2lkZXIgYE5GQ19TSU1gLiBJIGNhbiYjMzk7dCBqdXN0IGdsb3NzIG92ZXIgdGhlIFNlY3VyZSBFbGVtZW50IGFzcGVjdC4gVGhlIHdob2xlIGFyY2hpdGVjdHVyZSBjb3VsZCBwaXZvdCBvbiB3aGV0aGVyIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGEgVUlDQywgYW4gZW1iZWRkZWQgU0UsIG9yIGV2ZW4gYSBzb2Z0d2FyZS1iYXNlZCBzb2x1dGlvbi4gVGhlIHNlY3VyaXR5IHByb2ZpbGUsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzLCBhbmQgb3ZlcmFsbCBkZXNpZ24gY29tcGxleGl0eSBhcmUgYWxsIGdvaW5nIHRvIGNoYW5nZSBkZXBlbmRpbmcgb24gKnRoYXQqIHZhcmlhYmxlLiBJIG5lZWQgdG8ga2VlcCB0aGUgU0lNIGNhcmQgaW1wbGljYXRpb25zIHRvcCBvZiBtaW5kIHdoZW4gdGhpbmtpbmcgdGhyb3VnaCB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMToyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDMxOlx0Y29uZmlnIE5GQ19TSU1cbiAgMzI6XHRcdHRyaXN0YXRlIFwmIzM0O05GQyBoYXJkd2FyZSBzaW11bGF0b3IgZHJpdmVyXCYjMzQ7XG4gIDMzOlx0XHRkZXBlbmRzIG9uIE5GQ19ESUdJVEFMXG4gIDM0Olx0XHRoZWxwXG4gIDM1Olx0XHQgIFRoaXMgZHJpdmVyIGRlY2xhcmVzIHR3byB2aXJ0dWFsIE5GQyBkZXZpY2VzIHN1cHBvcnRpbmcgTkZDLURFUFxuICAzNjpcdFx0ICBwcm90b2NvbC4gQW4gTExDUCBjb25uZWN0aW9uIGNhbiBiZSBlc3RhYmxpc2hlZCBiZXR3ZWVuIHRoZW0gYW5kXG4gIDM3Olx0XHQgIGFsbCBwYWNrZXRzIHNlbnQgZnJvbSBvbmUgZGV2aWNlIGlzIHNlbnQgYmFjayB0byB0aGUgb3RoZXIsIGFjdGluZyBhc1xuICAzODpcdFx0ICBsb29wYmFjayBkZXZpY2VzLlxuICAzOTpcdFxuICA0MDpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMToyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDQ4NAoJCQkJCQkJb3V0cHV0OiAyMTUKCQkJCQkJCXRob3VnaHRzOiAyNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTkZDIExMQ1AgUGFja2V0IFZ1bG5lcmFiaWxpdHkgQXNzZXNzbWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBORkMgY29kZSBhbmQgaXQmIzM5O3MgY29udGluZ2VudCBvbiBgTkZDX0RJR0lUQUxgLiBUaGF0IG1lYW5zIHRvIHByb3Blcmx5IGNvbmZpZ3VyZSB0aGUgTkZDIHN5c3RlbSwgSSYjMzk7bGwgbmVlZCB0byBlbmFibGUgYE5GQ2AsIGBORkNfTkNJYCwgYE5GQ19WSVJUVUFMX05DSWAsIGBORkNfRElHSVRBTGAsIGFuZCBgTkZDX1NJTWAuCgpUaGUgY29yZSBvZiB0aGUgbWF0dGVyIHNlZW1zIHRvIGJlIHRoaXMgcGF0Y2ggdGhhdCBpbnRyb2R1Y2VzIGEgbGVuZ3RoIGNoZWNrIChgc2tiLSZndDtsZW4gJmx0OyBMTENQX0hFQURFUl9TSVpFYCkgd2l0aGluIGBfX25mY19sbGNwX3JlY3ZgLiBSaWdodCBhd2F5LCBJIHJlY29nbml6ZSB0aGlzIGFzIGEgZnVuY3Rpb25hbCBmaXgsIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIG9yIHNpbWlsYXIgdnVsbmVyYWJpbGl0eSB3aGVuIGhhbmRsaW5nIGluY29taW5nIE5GQyBMTENQIHBhY2tldHMuIFRoaXMgYWJzb2x1dGVseSB3YXJyYW50cyBmdXp6aW5nOyBpdOKAmXMgYSBjbGFzc2ljIHNjZW5hcmlvIGZvciB1bmNvdmVyaW5nIGVkZ2UgY2FzZXMuCgpJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIG9uIHRoZXNlIHN5bWJvbHM6IGBfX25mY19sbGNwX3JlY3ZgLCBgbmZjX2xsY3BfcmVjdmAsIGBuZmNfbGxjcF9kYXRhX3JlY2VpdmVkYCwgYG5mY19sbGNwX3J4X3dvcmtgLCBhbmQgYG5mY19sbGNwX3J4X3NrYmAuCgpCZWZvcmUgSSBkaXZlIHRvbyBkZWVwLCBJIHNob3VsZCBxdWlja2x5IHZlcmlmeSBpZiBgbmZjX2xsY3BfcmVjdmAgYW5kIGBuZmNfbGxjcF9kYXRhX3JlY2VpdmVkYCBhcmUgcGVyZm9ybWFuY2UtY3JpdGljYWwgcGF0aHMuIENvbnNpZGVyaW5nIHRoZSBnZW5lcmFsIG5hdHVyZSBvZiBORkMsIGl0JiMzOTtzIHVubGlrZWx5IHRoZXNlIGFyZSBob3RzcG90cy4gVGhleSBhcmUgbm90LgoKQWxyaWdodCwgd2l0aCB0aGF0IGFzc2Vzc21lbnQgY29tcGxldGUsIEnigJlsbCBkb2N1bWVudCBteSBmaW5kaW5ncyBhbmQgbWFyayB0aGlzIGFzIHJlYWR5IHRvIG1vdmUgZm9yd2FyZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GQyYjMzQ7LAogICAgJiMzNDtORkNfTkNJJiMzNDssCiAgICAmIzM0O05GQ19WSVJUVUFMX05DSSYjMzQ7LAogICAgJiMzNDtORkNfRElHSVRBTCYjMzQ7LAogICAgJiMzNDtORkNfU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19uZmNfbGxjcF9yZWN2JiMzNDssCiAgICAmIzM0O25mY19sbGNwX3JlY3YmIzM0OywKICAgICYjMzQ7bmZjX2xsY3BfZGF0YV9yZWNlaXZlZCYjMzQ7LAogICAgJiMzNDtuZmNfbGxjcF9yeF93b3JrJiMzNDssCiAgICAmIzM0O25mY19sbGNwX3J4X3NrYiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIHRvIGBfX25mY19sbGNwX3JlY3ZgIHRvIGVuc3VyZSB0aGUgcmVjZWl2ZWQgc2tiIGlzIGF0IGxlYXN0IGBMTENQX0hFQURFUl9TSVpFYCBieXRlcyBsb25nIGJlZm9yZSBwcm9jZXNzaW5nIGl0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBwcmV2ZW50cyBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkcyBvciBvdGhlciBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMgd2hlbiBoYW5kbGluZyBtYWxmb3JtZWQgTkZDIExMQ1AgcGFja2V0cy4gRnV6emluZyB0aGlzIGNvZGUgcGF0aCBpcyBoaWdobHkgcmVjb21tZW5kZWQgdG8gZW5zdXJlIHRoZSByb2J1c3RuZXNzIG9mIHRoZSBORkMgTExDUCBpbXBsZW1lbnRhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZDJiMzNDssCiAgICAmIzM0O05GQ19OQ0kmIzM0OywKICAgICYjMzQ7TkZDX1ZJUlRVQUxfTkNJJiMzNDssCiAgICAmIzM0O05GQ19ESUdJVEFMJiMzNDssCiAgICAmIzM0O05GQ19TSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX25mY19sbGNwX3JlY3YmIzM0OywKICAgICYjMzQ7bmZjX2xsY3BfcmVjdiYjMzQ7LAogICAgJiMzNDtuZmNfbGxjcF9kYXRhX3JlY2VpdmVkJiMzNDssCiAgICAmIzM0O25mY19sbGNwX3J4X3dvcmsmIzM0OywKICAgICYjMzQ7bmZjX2xsY3Bfcnhfc2tiJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgdG8gYF9fbmZjX2xsY3BfcmVjdmAgdG8gZW5zdXJlIHRoZSByZWNlaXZlZCBza2IgaXMgYXQgbGVhc3QgYExMQ1BfSEVBREVSX1NJWkVgIGJ5dGVzIGxvbmcgYmVmb3JlIHByb2Nlc3NpbmcgaXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIG90aGVyIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlcyB3aGVuIGhhbmRsaW5nIG1hbGZvcm1lZCBORkMgTExDUCBwYWNrZXRzLiBGdXp6aW5nIHRoaXMgY29kZSBwYXRoIGlzIGhpZ2hseSByZWNvbW1lbmRlZCB0byBlbnN1cmUgdGhlIHJvYnVzdG5lc3Mgb2YgdGhlIE5GQyBMTENQIGltcGxlbWVudGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6MTk6MTkuMDcwMTQ5MDg0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzNTA2ODU1NDE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GQ1wiLFxuICAgIFwiTkZDX05DSVwiLFxuICAgIFwiTkZDX1ZJUlRVQUxfTkNJXCIsXG4gICAgXCJORkNfRElHSVRBTFwiLFxuICAgIFwiTkZDX1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fbmZjX2xsY3BfcmVjdlwiLFxuICAgIFwibmZjX2xsY3BfcmVjdlwiLFxuICAgIFwibmZjX2xsY3BfZGF0YV9yZWNlaXZlZFwiLFxuICAgIFwibmZjX2xsY3Bfcnhfd29ya1wiLFxuICAgIFwibmZjX2xsY3Bfcnhfc2tiXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayB0byBgX19uZmNfbGxjcF9yZWN2YCB0byBlbnN1cmUgdGhlIHJlY2VpdmVkIHNrYiBpcyBhdCBsZWFzdCBgTExDUF9IRUFERVJfU0laRWAgYnl0ZXMgbG9uZyBiZWZvcmUgcHJvY2Vzc2luZyBpdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgcmVhZHMgb3Igb3RoZXIgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzIHdoZW4gaGFuZGxpbmcgbWFsZm9ybWVkIE5GQyBMTENQIHBhY2tldHMuIEZ1enppbmcgdGhpcyBjb2RlIHBhdGggaXMgaGlnaGx5IHJlY29tbWVuZGVkIHRvIGVuc3VyZSB0aGUgcm9idXN0bmVzcyBvZiB0aGUgTkZDIExMQ1AgaW1wbGVtZW50YXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjE5OjE5LjA3MDE1NjI5NFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTAwNjc2ODE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNWJiMGU3NDJhMTMwZjQ2MDgyZTIwMzE0YTg5MzU1MGEwZWEzZjM5N1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCAxMyAyMToxOToxOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbmZjL2xsY3BfY29yZS5jIGIvbmV0L25mYy9sbGNwX2NvcmUuY1xcbmluZGV4IGFlZDVmZTFhZmVmMDFlLi43MmI2ZTcwN2FkMGNiNCAxMDA2NDRcXG4tLS0gYS9uZXQvbmZjL2xsY3BfY29yZS5jXFxuKysrIGIvbmV0L25mYy9sbGNwX2NvcmUuY1xcbkBAIC0xNTY1LDYgKzE1NjUsMTEgQEAgc3RhdGljIHZvaWQgbmZjX2xsY3Bfcnhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIFxcbiBzdGF0aWMgdm9pZCBfX25mY19sbGNwX3JlY3Yoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4ge1xcbitcXHRpZiAoc2tiLVxcdTAwM2VsZW4gXFx1MDAzYyBMTENQX0hFQURFUl9TSVpFKSB7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4rXFxuIFxcdGxvY2FsLVxcdTAwM2VyeF9wZW5kaW5nID0gc2tiO1xcbiBcXHR0aW1lcl9kZWxldGUoXFx1MDAyNmxvY2FsLVxcdTAwM2VsaW5rX3RpbWVyKTtcXG4gXFx0c2NoZWR1bGVfd29yayhcXHUwMDI2bG9jYWwtXFx1MDAzZXJ4X3dvcmspO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMToxOToxOS41NzE0NzY5MzhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMzAwNTUxODc3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORkNcIixcbiAgICBcIk5GQ19OQ0lcIixcbiAgICBcIk5GQ19WSVJUVUFMX05DSVwiLFxuICAgIFwiTkZDX0RJR0lUQUxcIixcbiAgICBcIk5GQ19TSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX25mY19sbGNwX3JlY3ZcIixcbiAgICBcIm5mY19sbGNwX3JlY3ZcIixcbiAgICBcIm5mY19sbGNwX2RhdGFfcmVjZWl2ZWRcIixcbiAgICBcIm5mY19sbGNwX3J4X3dvcmtcIixcbiAgICBcIm5mY19sbGNwX3J4X3NrYlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgdG8gYF9fbmZjX2xsY3BfcmVjdmAgdG8gZW5zdXJlIHRoZSByZWNlaXZlZCBza2IgaXMgYXQgbGVhc3QgYExMQ1BfSEVBREVSX1NJWkVgIGJ5dGVzIGxvbmcgYmVmb3JlIHByb2Nlc3NpbmcgaXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIG90aGVyIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlcyB3aGVuIGhhbmRsaW5nIG1hbGZvcm1lZCBORkMgTExDUCBwYWNrZXRzLiBGdXp6aW5nIHRoaXMgY29kZSBwYXRoIGlzIGhpZ2hseSByZWNvbW1lbmRlZCB0byBlbnN1cmUgdGhlIHJvYnVzdG5lc3Mgb2YgdGhlIE5GQyBMTENQIGltcGxlbWVudGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDViYjBlNzQyYTEzMGY0NjA4MmUyMDMxNGE4OTM1NTBhMGVhM2YzOTdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAxMyAyMToxOToxOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZmMvbGxjcF9jb3JlLmMgYi9uZXQvbmZjL2xsY3BfY29yZS5jXG5pbmRleCBhZWQ1ZmUxYWZlZjAxZS4uNzJiNmU3MDdhZDBjYjQgMTAwNjQ0XG4tLS0gYS9uZXQvbmZjL2xsY3BfY29yZS5jXG4rKysgYi9uZXQvbmZjL2xsY3BfY29yZS5jXG5AQCAtMTU2NSw2ICsxNTY1LDExIEBAIHN0YXRpYyB2b2lkIG5mY19sbGNwX3J4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFxuIHN0YXRpYyB2b2lkIF9fbmZjX2xsY3BfcmVjdihzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHtcbitcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyBMTENQX0hFQURFUl9TSVpFKSB7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4rXG4gXHRsb2NhbC1cdTAwM2VyeF9wZW5kaW5nID0gc2tiO1xuIFx0dGltZXJfZGVsZXRlKFx1MDAyNmxvY2FsLVx1MDAzZWxpbmtfdGltZXIpO1xuIFx0c2NoZWR1bGVfd29yayhcdTAwMjZsb2NhbC1cdTAwM2VyeF93b3JrKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjE5OjE5LjU3MTQ5Mjg4OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwNjcwNzA3MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBORkMgTExDUCBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggdGhhdCBpbnRyb2R1Y2VzIGEgc2FmZXR5IGNoZWNrOiBgc2tiLVx1MDAzZWxlbiBcdTAwM2MgTExDUF9IRUFERVJfU0laRWAgd2l0aGluIGBfX25mY19sbGNwX3JlY3ZgIGluIGBuZXQvbmZjL2xsY3BfY29yZS5jYC4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50PyBGdW5jdGlvbmFsbHkgc291bmQuIFRoaXMgZGlyZWN0bHkgYWRkcmVzc2VzIGEgcG9zc2libGUgb3V0LW9mLWJvdW5kcyByZWFkIG9yIGEgcmVsYXRlZCB2dWxuZXJhYmlsaXR5IHdoZW4gdGhlIGtlcm5lbCBpcyBwcm9jZXNzaW5nIE5GQyBMTENQIHBhY2tldHMuIFRoaXMgKnNjcmVhbXMqIGZ1enppbmcgdGFyZ2V0LCBpbW1lZGlhdGVseS4gV2UgZGVmaW5pdGVseSBuZWVkIHRvIHB1dCB0aGlzIHRocm91Z2ggaXRzIHBhY2VzLlxuXG5Ob3csIHRvIGdldCB0aGUgY29tcGxldGUgcGljdHVyZSwgSSBuZWVkIHRvIGtub3cgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZWQgdG8gZW5hYmxlIHRoaXMgTkZDIExMQ1AgZnVuY3Rpb25hbGl0eS4gTXkgcGxhbiBpcyB0byBzdGFydCBieSBzZWFyY2hpbmcgZm9yIGBfX25mY19sbGNwX3JlY3ZgIGFuZCBgbmZjX2xsY3Bfcnhfd29ya2Agc3BlY2lmaWNhbGx5IHdpdGhpbiBgbmV0L25mYy9sbGNwX2NvcmUuY2AgYWdhaW4sIHRvIGdldCBzb21lIGNvbnRleHQgY2x1ZXMuIFRoZW4sIEknbGwgZGl2ZSBpbnRvIGBuZXQvbmZjL0tjb25maWdgIGFuZCBgbmV0L25mYy9NYWtlZmlsZWAuIFRoYXQgc2hvdWxkIHJldmVhbCB0aGUgY29uZmlnIG9wdGlvbnMgdGhhdCBnb3Zlcm4gdGhlIGNvbXBpbGF0aW9uIGFuZCBpbmNsdXNpb24gb2YgYGxsY3BfY29yZS5jYCwgd2hpY2gsIGluIHR1cm4sIHdpbGwgYWxsb3cgbWUgdG8gc2V0IHVwIGFuIGFwcHJvcHJpYXRlIGZ1enppbmcgZW52aXJvbm1lbnQuIFVuZGVyc3RhbmRpbmcgdGhlIGJ1aWxkIHN5c3RlbSBpcyBrZXkgdG8gcHJvcGVyIHRlc3RpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NjksIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMToxOToyNC42Mzg1NjU2MTdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk1OTA3MjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGxjcF9jb3JlLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25mYy9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL01ha2VmaWxlPTk9b2JqLSQoQ09ORklHX05GQ19ESUdJVEFMKSArPSBuZmNfZGlnaXRhbC5vXFxubmV0L25mYy9NYWtlZmlsZS0xMC1cXG5uZXQvbmZjL01ha2VmaWxlOjExOm5mYy1vYmpzIDo9IGNvcmUubyBuZXRsaW5rLm8gYWZfbmZjLm8gcmF3c29jay5vIGxsY3BfY29yZS5vIGxsY3BfY29tbWFuZHMubyBcXFxcXFxubmV0L25mYy9NYWtlZmlsZS0xMi1cXHRcXHRsbGNwX3NvY2sub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMToxOToyNC42OTgxNjE1OTNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTE2MzM3ODQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTkZDIENvbXBpbGF0aW9uIExhbmRzY2FwZSoqXG5cbk9rYXksIHNvIGBsbGNwX2NvcmUub2AgaW1tZWRpYXRlbHkgc3VnZ2VzdHMgTkZDIGludm9sdmVtZW50LiBJdCdzIGxpc3RlZCB1bmRlciBgbmZjLW9ianNgLCBzbyB0aGF0J3MgYSBwcmV0dHkgc3Ryb25nIGluZGljYXRvci4gTXkgaW50dWl0aW9uIHRlbGxzIG1lIHRoaXMgaXMgcHJvYmFibHkgbGlua2VkIHRvIHRoZSBgQ09ORklHX05GQ2AgY29uZmlndXJhdGlvbiBvcHRpb24uIE1ha2VzIHNlbnNlLCBnaXZlbiB0aGUgTkZDIG1vZHVsZSdzIG92ZXJhbGwgc3RydWN0dXJlLiBUaW1lIHRvIGRpdmUgaW50byBgbmV0L25mYy9NYWtlZmlsZWAgYW5kIGNvbmZpcm0gdGhlc2UgYXNzdW1wdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBidWlsZCBkZXBlbmRlbmNpZXMgYW5kIGNvbmRpdGlvbnMgZXhwbGljaXRseSBvdXRsaW5lZCB0aGVyZSB0byBnZXQgYSBmdWxsIHBpY3R1cmUuIExldCdzIHNlZSB3aGF0IHRoZSBNYWtlZmlsZSByZXZlYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDU4LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6MTk6MjguODE0NTAxMDQyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5OTY0NDYyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mYy1vYmpzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9NYWtlZmlsZT05PW9iai0kKENPTkZJR19ORkNfRElHSVRBTCkgKz0gbmZjX2RpZ2l0YWwub1xcbm5ldC9uZmMvTWFrZWZpbGUtMTAtXFxubmV0L25mYy9NYWtlZmlsZToxMTpuZmMtb2JqcyA6PSBjb3JlLm8gbmV0bGluay5vIGFmX25mYy5vIHJhd3NvY2subyBsbGNwX2NvcmUubyBsbGNwX2NvbW1hbmRzLm8gXFxcXFxcbm5ldC9uZmMvTWFrZWZpbGUtMTItXFx0XFx0bGxjcF9zb2NrLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6MTk6MjguOTE0NDc2NTE0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM3NzgyMTMxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IHF1ZXN0aW9uOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIEJ1aWxkIFByb2Nlc3MgZm9yIE5GQyBDb21wb25lbnRzKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGBuZmMub2Agb3IgYG5mYy1vYmpzYCBpcyBiZWluZyBidWlsdC4gVGhpcyBsaWtlbHkgcG9pbnRzIHRvIGEgY29yZSBORkMgY29tcG9uZW50IG9yIGEgY29sbGVjdGlvbiBvZiBvYmplY3QgZmlsZXMuIEdpdmVuIG15IGV4cGVydGlzZSwgbXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gdW5kZXJzdGFuZCB0aGUgYnVpbGQgc3lzdGVtIGludm9sdmVkLiBJcyBpdCBhIHN0YW5kYXJkIGBtYWtlYCBzZXR1cCwgcGVyaGFwcyB1c2luZyBhIGBNYWtlZmlsZWAsIG9yIGFyZSB3ZSBkZWFsaW5nIHdpdGggc29tZXRoaW5nIG1vcmUgc29waGlzdGljYXRlZCBsaWtlIENNYWtlLCBBdXRvdG9vbHMsIG9yIGV2ZW4gYSBjdXN0b20gYnVpbGQgc2NyaXB0P1xuXG5JJ2Qgc3RhcnQgYnkgbG9va2luZyBmb3IgYSB0b3AtbGV2ZWwgYE1ha2VmaWxlYCBvciBgQ01ha2VMaXN0cy50eHRgIGluIHRoZSBwcm9qZWN0IGRpcmVjdG9yeSwgYXNzdW1pbmcgdGhpcyBpcyBhIGxhcmdlciwgZXN0YWJsaXNoZWQgcHJvamVjdC4gVGhlIGdvYWwgaXMgdG8gdHJhY2UgdGhlIGRlcGVuZGVuY2llcyBhbmQgdGhlIGNvbW1hbmRzIHRoYXQgZ2VuZXJhdGUgdGhvc2Ugc3BlY2lmaWMgb2JqZWN0IGZpbGVzIG9yIGFuIG9iamVjdCBkaXJlY3RvcnkuXG5cbklmIGl0J3MgYSBgTWFrZWZpbGVgLCBJ4oCZbGwgYmUgc2Nhbm5pbmcgZm9yIHRhcmdldHMgdGhhdCBtZW50aW9uIGBuZmMub2Agb3IgYG5mYy1vYmpzYCwgbG9va2luZyBmb3IgcmVsZXZhbnQgcnVsZXMgYW5kIGRlcGVuZGVuY2llcy4gSSdkIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gaW5jbHVkZSBwYXRocywgY29tcGlsZXIgZmxhZ3MgKGxpa2UgYC1JYCBhbmQgYC1EYCksIGFuZCBsaW5rZXIgZmxhZ3MuIEknZCBhbHNvIGNoZWNrIGZvciB2YXJpYWJsZXMgdGhhdCBtaWdodCBiZSBpbnZvbHZlZC5cblxuSWYgaXQncyBDTWFrZSwgSSdkIHNlYXJjaCBmb3IgY29tbWFuZHMgbGlrZSBgYWRkX2xpYnJhcnlgLCBgdGFyZ2V0X3NvdXJjZXNgLCBgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXNgLCBhbmQsIGNyaXRpY2FsbHksIHRoZSB3YXkgYG5mYy5vYCBvciBgbmZjLW9ianNgIGlzIGFkZGVkIHRvIHRoZSBidWlsZCBwcm9jZXNzLiBJIHdvdWxkIGV4cGVjdCBzb21lIHZhcmlhYmxlIHdpbGwgYmUgdXNlZCB0byBnZW5lcmF0ZSB0aGUgYnVpbGQgcHJvY2Vzcy5cblxuSWYgbm8gb2J2aW91cyBidWlsZCBzeXN0ZW0gaXMgYXBwYXJlbnQsIEkgbWF5IGdvIHRocm91Z2ggZmlsZSBuYW1lcyBhbmQgZ3Vlc3MgYXQgaG93IGl0IG1pZ2h0IGJlIGJ1aWx0LiBJIG1heSBhbHNvIGNoZWNrIHRoZSBzb3VyY2UgY29kZSBmb3IgYW55IGBNYWtlZmlsZWAgb3IgYENNYWtlTGlzdHMudHh0YCBmaWxlcywgb3IgYW55IHNpbWlsYXIgZmlsZXMuXG5cbkVzc2VudGlhbGx5LCBJJ20gcGVlbGluZyBiYWNrIHRoZSBsYXllcnMgb2YgdGhlIGJ1aWxkIHN5c3RlbSB0byB1bmNvdmVyIHRoZSBleGFjdCBzZXF1ZW5jZSBvZiBzdGVwcyB0aGF0IHJlc3VsdCBpbiB0aG9zZSBzcGVjaWZpYyBvYmplY3QgZmlsZXMuIFVsdGltYXRlbHksIGtub3dpbmcgdGhhdCBwYXRoIGlzIGVzc2VudGlhbCBmb3IgYW55IG1vZGlmaWNhdGlvbnMgb3IgZGVlcGVyIHVuZGVyc3RhbmRpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NjksIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMToxOTozMy4yOTIyOTk0NDRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjExMjE1OTY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mYy5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9NYWtlZmlsZS01LVxcbm5ldC9uZmMvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfTkZDKSArPSBuZmMub1xcbm5ldC9uZmMvTWFrZWZpbGUtNy1vYmotJChDT05GSUdfTkZDX05DSSkgKz0gbmNpL1xcbi0tXFxubmV0L25mYy9NYWtlZmlsZT05PW9iai0kKENPTkZJR19ORkNfRElHSVRBTCkgKz0gbmZjX2RpZ2l0YWwub1xcbm5ldC9uZmMvTWFrZWZpbGUtMTAtXFxubmV0L25mYy9NYWtlZmlsZToxMTpuZmMtb2JqcyA6PSBjb3JlLm8gbmV0bGluay5vIGFmX25mYy5vIHJhd3NvY2subyBsbGNwX2NvcmUubyBsbGNwX2NvbW1hbmRzLm8gXFxcXFxcbm5ldC9uZmMvTWFrZWZpbGUtMTItXFx0XFx0bGxjcF9zb2NrLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6MTk6MzMuNTAzNTIyMTc5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ2MDg2NzU3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGV2YWx1YXRpbmcgdGhpcyBORkMgY29uZmlndXJhdGlvbjpcblxuKipBbmFseXppbmcgTkZDIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCBORkMgY29uZmlndXJhdGlvbiwgYW5kIGBDT05GSUdfTkZDYCBpcyB0aGUgbWFpbiB0b2dnbGUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgZWxzZSBpcyB0aWVkIHRvIGl0LiBMZXQncyBzZWUgaWYgdGhlcmUgYXJlIGFueSB2aXJ0dWFsIGRyaXZlcnMgdG8gY29uc2lkZXIuIEFyZSB3ZSB1c2luZyBhIHNpbXVsYXRlZCBvciB2aXJ0dWFsIE5GQyBpbnRlcmZhY2U/IEkgbmVlZCB0byBjaGVjayBmb3IgYENPTkZJR19ORkNfVklSVFVBTF9OQ0lgIG9yIHBlcmhhcHMgYENPTkZJR19ORkNfU0lNYCwgdGhvc2UgYXJlIHVzdWFsbHkgdGhlIGtleSB2aXJ0dWFsIG9wdGlvbnMuXG5cbkknbGwgbmVlZCB0byBkcmlsbCBkb3duIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgdG8gZ2V0IGEgZ29vZCBoYW5kbGUgb24gdGhpcy4gVGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgaXMgdGhlIGBkcml2ZXJzL25mYy9gIGRpcmVjdG9yeS4gVGhhdCdzIHdoZXJlIGFsbCB0aGUgTkZDLXJlbGF0ZWQgZHJpdmVycyBhbmQgbW9kdWxlcyBzaG91bGQgYmUuIFRoYXQgZGlyZWN0b3J5IHNob3VsZCBhbHNvIGhvbGQgdGhlIGZpbGVzIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hhdCBvcHRpb25zIGFyZSBhdmFpbGFibGUgYW5kIGhvdyB0aGV5J3JlIHJlbGF0ZWQgdG8gYENPTkZJR19ORkNgLiBOb3csIGxldCdzIHNlZSB3aGF0J3MgaW4gdGhhdCBkaXJlY3RvcnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MTIsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMToxOTozNi45NjQzOTE2MjZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzE1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmZjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJtZWlfcGh5LmNcIixcbiAgICBcIm1laV9waHkuaFwiLFxuICAgIFwibmZjc2ltLmNcIixcbiAgICBcInBvcnQxMDAuY1wiLFxuICAgIFwidHJmNzk3MGEuY1wiLFxuICAgIFwidmlydHVhbF9uY2lkZXYuY1wiXG4gIF0sXG4gIFwiU3ViZGlyc1wiOiBbXG4gICAgXCJmZHBcIixcbiAgICBcIm1pY3JvcmVhZFwiLFxuICAgIFwibmZjbXJ2bFwiLFxuICAgIFwibnhwLW5jaVwiLFxuICAgIFwicG41MzNcIixcbiAgICBcInBuNTQ0XCIsXG4gICAgXCJzM2Z3cm41XCIsXG4gICAgXCJzdC1uY2lcIixcbiAgICBcInN0MjFuZmNhXCIsXG4gICAgXCJzdDk1aGZcIlxuICBdXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMToxOTozNi45NjQ0NjAzMTZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA2MTMxODAwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIFZpcnR1YWwgTkZDIERyaXZlcnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgbmZjc2ltLmNgIGFuZCBgdmlydHVhbF9uY2lkZXYuY2AuIFRoZSBuYW1pbmcgY29udmVudGlvbiBzdHJvbmdseSBzdWdnZXN0cyB0aGVzZSBhcmUgdmlydHVhbCBkcml2ZXJzIGZvciBORkMgZGV2aWNlcywgd2hpY2ggaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBNeSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gYXNwZWN0cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBwYXJhbWV0ZXJzIGFuZCBzZXR0aW5ncyB0aGVzZSBkcml2ZXJzIGFyZSBleHBlY3RpbmcuIFRoYXQgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgcHJvcGVyIGludGVncmF0aW9uLCBlbXVsYXRpb24gc2V0dXAsIGFuZCBkZWJ1Z2dpbmcuIExldCdzIHNlZSB3aGF0IHRoZSBjb25maWd1cmF0aW9ucyByZXZlYWwgYWJvdXQgdGhlaXIgaW50ZW5kZWQgdXNlIGNhc2VzIGFuZCB1bmRlcmx5aW5nIGFzc3VtcHRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODU0LCJPdXRwdXRUb2tlbnMiOjYzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjE5OjQwLjAyNTc3OTk5MloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjUwNjk5MDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZjc2ltLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZmMvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZmMvTWFrZWZpbGU9MTA9b2JqLSQoQ09ORklHX05GQ19NRUlfUEhZKVxcdCs9IG1laV9waHkub1xcbmRyaXZlcnMvbmZjL01ha2VmaWxlOjExOm9iai0kKENPTkZJR19ORkNfU0lNKVxcdFxcdCs9IG5mY3NpbS5vXFxuZHJpdmVycy9uZmMvTWFrZWZpbGUtMTItb2JqLSQoQ09ORklHX05GQ19QT1JUMTAwKVxcdCs9IHBvcnQxMDAub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMToxOTo0MC4wOTA4NTQxMTdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0NDYyODc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZpcnR1YWxfbmNpZGV2Lm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZmMvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZmMvTWFrZWZpbGU9MTk9b2JqLSQoQ09ORklHX05GQ19TVDk1SEYpXFx0Kz0gc3Q5NWhmL1xcbmRyaXZlcnMvbmZjL01ha2VmaWxlOjIwOm9iai0kKENPTkZJR19ORkNfVklSVFVBTF9OQ0kpXFx0Kz0gdmlydHVhbF9uY2lkZXYub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMToxOTo0MC4xNDUzMjYxNTNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTY4MTE3MDczNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipORkMgRnV6emluZyBDb25maWd1cmF0aW9uIFRob3VnaHRzKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nLCB0byBnZXQgYSBzb2xpZCBORkMgZnV6emluZyBzZXR1cCBnb2luZywgSSBzaG91bGQgZGVmaW5pdGVseSBlbmFibGUgYENPTkZJR19ORkNfU0lNYCBhbmQgYENPTkZJR19ORkNfVklSVFVBTF9OQ0lgLiBUaG9zZSBzZWVtIGxpa2UgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnRzLiBUaGV5IHNob3VsZCBnaXZlIG1lIHNvbWUgc29saWQgdG9vbHMgdG8gd29yayB3aXRoIGZvciB0ZXN0aW5nLiBCdXQgYmVmb3JlIEkgZ28gdG9vIGZhciBkb3duIHRoYXQgcm9hZCwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBzb21ldGhpbmcuIExldCdzIG1ha2Ugc3VyZSB0aGF0IGBORkNfU0lNYCBvciBgTkZDX1ZJUlRVQUxfTkNJYCBkb24ndCBoYXZlIGEgZGlyZWN0IGRlcGVuZGVuY3kgb24gYE5GQ2AgaXRzZWxmLiBJIG5lZWQgdG8ga25vdyBpZiBJJ2xsIG5lZWQgdG8gZW5hYmxlIHRoYXQgdG9wLWxldmVsIGNvbmZpZyBmaXJzdC4gR290dGEgY292ZXIgYWxsIHRoZSBiYXNlcyB0byBhdm9pZCBhbnkgdW5leHBlY3RlZCBidWlsZCBlcnJvcnMgb3Igc2V0dXAgaXNzdWVzIGxhdGVyIG9uLiBOZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZm91bmRhdGlvbnMgYXJlIHN0YWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDI0NSwiT3V0cHV0VG9rZW5zIjo2NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciIsImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMToxOTo0NS44MjY0OTkwNDhaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk1OTg4NjIzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORkNfU0lNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmZjL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZmMvS2NvbmZpZz0yMT1jb25maWcgTkZDX01FSV9QSFlcXG4tLVxcbmRyaXZlcnMvbmZjL0tjb25maWctMzAtXFxuZHJpdmVycy9uZmMvS2NvbmZpZzozMTpjb25maWcgTkZDX1NJTVxcbmRyaXZlcnMvbmZjL0tjb25maWctMzItXFx0dHJpc3RhdGUgXFxcIk5GQyBoYXJkd2FyZSBzaW11bGF0b3IgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMToxOTo0NS45MjI0OTE0MDFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0Nzg1MjA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORkNfVklSVFVBTF9OQ0lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZmMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25mYy9LY29uZmlnPTQyPWNvbmZpZyBORkNfUE9SVDEwMFxcbi0tXFxuZHJpdmVycy9uZmMvS2NvbmZpZy01MS1cXG5kcml2ZXJzL25mYy9LY29uZmlnOjUyOmNvbmZpZyBORkNfVklSVFVBTF9OQ0lcXG5kcml2ZXJzL25mYy9LY29uZmlnLTUzLVxcdHRyaXN0YXRlIFxcXCJOQ0kgZGV2aWNlIHNpbXVsYXRvciBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjE5OjQ1Ljk3NzI4MTY5N1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODk1Nzk0ODE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIFJlY2VpdmluZyBGdW5jdGlvbnMgaW4gTExDUCoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgcmVjZWl2aW5nIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIExMQ1AgaW1wbGVtZW50YXRpb24uIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IGRhdGEgaXMgaGFuZGxlZCBhdCB0aGUgbG93ZXIgbGF5ZXJzIG9mIHRoZSBORkMgc3RhY2suIFNwZWNpZmljYWxseSwgSSB3YW50IHRvIHRha2UgYSBjbG9zZSBsb29rIGF0IGBfX25mY19sbGNwX3JlY3ZgIGFuZCBgbmZjX2xsY3BfcmVjdmAuIEknbSBjdXJpb3VzIGFib3V0IHRoZSBkaXN0aW5jdGlvbiBhbmQgaW50ZXJwbGF5IGJldHdlZW4gdGhvc2UgZnVuY3Rpb24gbmFtZXMuIEFyZSB3ZSBsb29raW5nIGF0IGEgbG93LWxldmVsLCBpbnRlcm5hbCBoZWxwZXIgdmVyc3VzIGEgaGlnaGVyLWxldmVsLCBtb3JlIHVzZXItZmFjaW5nIGVudHJ5IHBvaW50PyBJJ2xsIHByb2JhYmx5IGNoZWNrIHRoZSBjb250ZXh0IHRoZXkncmUgdXNlZCBpbiB3aXRoaW4gdGhlIGRyaXZlciB0byBkZXRlcm1pbmUgdGhlaXIgZGlzdGluY3Rpb24uIFdoYXQncyB0aGUgcXVldWUgbWFuYWdlbWVudCBsaWtlPyBJbnRlcnJ1cHQgaGFuZGxpbmc/IEVycm9yIGNvbmRpdGlvbnM/IEhvdyBkb2VzIHRoZSBjb3JlIGxvZ2ljIGRpZmZlciBiZXR3ZWVuIHRoZXNlIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9ucz8gSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCBJIGFtIHVwIHRvIGRhdGUgd2l0aCB0aGUgcmVjZWl2aW5nIGZsb3cuIEkgd2lsbCBiZWdpbiBieSBleGFtaW5pbmcgdGhlIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3MjQsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6MTk6NDkuODczMDc4MjIyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDcwNzc4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX25mY19sbGNwX3JlY3ZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25mYy9sbGNwX2NvcmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL2xsY3BfY29yZS5jPTE1NDM9c3RhdGljIHZvaWQgbmZjX2xsY3Bfcnhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1NjUtXFxubmV0L25mYy9sbGNwX2NvcmUuYzoxNTY2OnN0YXRpYyB2b2lkIF9fbmZjX2xsY3BfcmVjdihzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTU2Ny17XFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jPTE1Nzg9dm9pZCBuZmNfbGxjcF9yZWN2KHZvaWQgKmRhdGEsIHN0cnVjdCBza19idWZmICpza2IsIGludCBlcnIpXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1ODYtXFxubmV0L25mYy9sbGNwX2NvcmUuYzoxNTg3OlxcdF9fbmZjX2xsY3BfcmVjdihsb2NhbCwgc2tiKTtcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1ODgtfVxcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYz0xNTkwPWludCBuZmNfbGxjcF9kYXRhX3JlY2VpdmVkKHN0cnVjdCBuZmNfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1OTktXFxubmV0L25mYy9sbGNwX2NvcmUuYzoxNjAwOlxcdF9fbmZjX2xsY3BfcmVjdihsb2NhbCwgc2tiKTtcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE2MDEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjE5OjQ5LjkyNzc5MTQ2OFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjY0MDMyMjgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUgd2hhdCBJJ20gdGhpbmtpbmcgaGVyZS5cblxuKipUcmFjaW5nIHRoZSBDYWxsIFBhdGggb2YgYG5mY19sbGNwX3JlY3ZgKipcblxuQWxyaWdodCwgc28gYF9fbmZjX2xsY3BfcmVjdmAgaXMgb24gdGhlIHJlY2VpdmluZyBlbmQsIGNhbGxlZCBieSBib3RoIGBuZmNfbGxjcF9yZWN2YCBhbmQgYG5mY19sbGNwX2RhdGFfcmVjZWl2ZWRgLiBUaGF0IG11Y2ggaXMgY2xlYXIuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCwgaW4gbXkgbGluZSBvZiBpbnZlc3RpZ2F0aW9uLCBpcyB0byB1bmRlcnN0YW5kIHRoZSBvcmlnaW4gb2YgKnRob3NlKiBjYWxscy4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSBgbmZjX2xsY3BfcmVjdmAgdG8gZmlndXJlIG91dCB3aGVyZSBpdCdzIGJlaW5nIGludm9rZWQuIEtub3dpbmcgdGhlIGNhbGwgZ3JhcGggd2lsbCBnaXZlIG1lIHRoZSBiaWdnZXIgcGljdHVyZSBvZiB0aGUgZGF0YSBmbG93IGFuZCBob3cgdGhpcyBmdW5jdGlvbiBmaXRzIGludG8gdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLiBUaW1lIHRvIGRpZyBhIGJpdCBkZWVwZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzNjUsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMToxOTo1My4xOTE4MjU3NTlaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5ODEwMzQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mY19sbGNwX3JlY3ZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25mYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9sbGNwLmg9MjIzPWludCBuZmNfbGxjcF9wYXJzZV9jb25uZWN0aW9uX3RsdihzdHJ1Y3QgbmZjX2xsY3Bfc29jayAqc29jayxcXG4tLVxcbm5ldC9uZmMvbGxjcC5oLTIyNi0vKiBDb21tYW5kcyBBUEkgKi9cXG5uZXQvbmZjL2xsY3AuaDoyMjc6dm9pZCBuZmNfbGxjcF9yZWN2KHZvaWQgKmRhdGEsIHN0cnVjdCBza19idWZmICpza2IsIGludCBlcnIpO1xcbm5ldC9uZmMvbGxjcC5oLTIyOC11OCAqbmZjX2xsY3BfYnVpbGRfdGx2KHU4IHR5cGUsIGNvbnN0IHU4ICp2YWx1ZSwgdTggdmFsdWVfbGVuZ3RoLCB1OCAqdGx2X2xlbmd0aCk7XFxuLS1cXG5uZXQvbmZjL2xsY3AuaD0yMzM9dm9pZCBuZmNfbGxjcF9mcmVlX3NkcF90bHZfbGlzdChzdHJ1Y3QgaGxpc3RfaGVhZCAqc2RwX2hlYWQpO1xcbm5ldC9uZmMvbGxjcC5oOjIzNDp2b2lkIG5mY19sbGNwX3JlY3Yodm9pZCAqZGF0YSwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGVycik7XFxubmV0L25mYy9sbGNwLmgtMjM1LWludCBuZmNfbGxjcF9zZW5kX3N5bW0oc3RydWN0IG5mY19kZXYgKmRldik7XFxuLS1cXG5uZXQvbmZjL2xsY3BfY29tbWFuZHMuYz0zNzE9aW50IG5mY19sbGNwX3NlbmRfc3ltbShzdHJ1Y3QgbmZjX2RldiAqZGV2KVxcbi0tXFxubmV0L25mYy9sbGNwX2NvbW1hbmRzLmMtMzk5LVxcdGVyciA9IG5mY19kYXRhX2V4Y2hhbmdlKGRldiwgbG9jYWwtXFx1MDAzZXRhcmdldF9pZHgsIHNrYixcXG5uZXQvbmZjL2xsY3BfY29tbWFuZHMuYzo0MDA6XFx0XFx0XFx0XFx0IG5mY19sbGNwX3JlY3YsIGxvY2FsKTtcXG5uZXQvbmZjL2xsY3BfY29tbWFuZHMuYy00MDEtb3V0Olxcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYz03NjE9c3RhdGljIHZvaWQgbmZjX2xsY3BfdHhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTc5Ny1cXHRcXHRcXHRyZXQgPSBuZmNfZGF0YV9leGNoYW5nZShsb2NhbC1cXHUwMDNlZGV2LCBsb2NhbC1cXHUwMDNldGFyZ2V0X2lkeCxcXG5uZXQvbmZjL2xsY3BfY29yZS5jOjc5ODpcXHRcXHRcXHRcXHRcXHRcXHRza2IsIG5mY19sbGNwX3JlY3YsIGxvY2FsKTtcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTc5OS1cXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM9ODQ5PXN0YXRpYyBjb25zdCB1OCAqbmZjX2xsY3BfY29ubmVjdF9zbihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzaXplX3QgKnNuX2xlbilcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtODcyLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM6ODczOnN0YXRpYyB2b2lkIG5mY19sbGNwX3JlY3ZfdWkoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCxcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTg3NC1cXHRcXHRcXHQgICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTkwOC1cXG5uZXQvbmZjL2xsY3BfY29yZS5jOjkwOTpzdGF0aWMgdm9pZCBuZmNfbGxjcF9yZWN2X2Nvbm5lY3Qoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCxcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTkxMC1cXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jPTEwNDA9aW50IG5mY19sbGNwX3F1ZXVlX2lfZnJhbWVzKHN0cnVjdCBuZmNfbGxjcF9zb2NrICpzb2NrKVxcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYy0xMDY3LVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTA2ODpzdGF0aWMgdm9pZCBuZmNfbGxjcF9yZWN2X2hkbGMoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCxcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTEwNjktXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTExNTUtXFxubmV0L25mYy9sbGNwX2NvcmUuYzoxMTU2OnN0YXRpYyB2b2lkIG5mY19sbGNwX3JlY3ZfZGlzYyhzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLFxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTE1Ny1cXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTIwMC1cXG5uZXQvbmZjL2xsY3BfY29yZS5jOjEyMDE6c3RhdGljIHZvaWQgbmZjX2xsY3BfcmVjdl9jYyhzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLFxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTIwMi1cXHRcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTEyNDUtXFxubmV0L25mYy9sbGNwX2NvcmUuYzoxMjQ2OnN0YXRpYyB2b2lkIG5mY19sbGNwX3JlY3ZfZG0oc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCxcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTEyNDctXFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYy0xMjgzLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTI4NDpzdGF0aWMgdm9pZCBuZmNfbGxjcF9yZWN2X3NubChzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLFxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTI4NS1cXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNDM1LVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTQzNjpzdGF0aWMgdm9pZCBuZmNfbGxjcF9yZWN2X2FnZihzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTQzNy17XFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jPTE0ODA9c3RhdGljIHZvaWQgbmZjX2xsY3Bfcnhfc2tiKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1MDAtXFx0XFx0cHJfZGVidWcoXFxcIlVJXFxcXG5cXFwiKTtcXG5uZXQvbmZjL2xsY3BfY29yZS5jOjE1MDE6XFx0XFx0bmZjX2xsY3BfcmVjdl91aShsb2NhbCwgc2tiKTtcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1MDItXFx0XFx0YnJlYWs7XFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1MDUtXFx0XFx0cHJfZGVidWcoXFxcIkNPTk5FQ1RcXFxcblxcXCIpO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTUwNjpcXHRcXHRuZmNfbGxjcF9yZWN2X2Nvbm5lY3QobG9jYWwsIHNrYik7XFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTA3LVxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTEwLVxcdFxcdHByX2RlYnVnKFxcXCJESVNDXFxcXG5cXFwiKTtcXG5uZXQvbmZjL2xsY3BfY29yZS5jOjE1MTE6XFx0XFx0bmZjX2xsY3BfcmVjdl9kaXNjKGxvY2FsLCBza2IpO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTUxMi1cXHRcXHRicmVhaztcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTUxNS1cXHRcXHRwcl9kZWJ1ZyhcXFwiQ0NcXFxcblxcXCIpO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTUxNjpcXHRcXHRuZmNfbGxjcF9yZWN2X2NjKGxvY2FsLCBza2IpO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTUxNy1cXHRcXHRicmVhaztcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTUyMC1cXHRcXHRwcl9kZWJ1ZyhcXFwiRE1cXFxcblxcXCIpO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTUyMTpcXHRcXHRuZmNfbGxjcF9yZWN2X2RtKGxvY2FsLCBza2IpO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTUyMi1cXHRcXHRicmVhaztcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTUyNS1cXHRcXHRwcl9kZWJ1ZyhcXFwiU05MXFxcXG5cXFwiKTtcXG5uZXQvbmZjL2xsY3BfY29yZS5jOjE1MjY6XFx0XFx0bmZjX2xsY3BfcmVjdl9zbmwobG9jYWwsIHNrYik7XFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTI3LVxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTMyLVxcdFxcdHByX2RlYnVnKFxcXCJJIGZyYW1lXFxcXG5cXFwiKTtcXG5uZXQvbmZjL2xsY3BfY29yZS5jOjE1MzM6XFx0XFx0bmZjX2xsY3BfcmVjdl9oZGxjKGxvY2FsLCBza2IpO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTUzNC1cXHRcXHRicmVhaztcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTUzNy1cXHRcXHRwcl9kZWJ1ZyhcXFwiQUdGIGZyYW1lXFxcXG5cXFwiKTtcXG5uZXQvbmZjL2xsY3BfY29yZS5jOjE1Mzg6XFx0XFx0bmZjX2xsY3BfcmVjdl9hZ2YobG9jYWwsIHNrYik7XFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTM5LVxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYz0xNTQzPXN0YXRpYyB2b2lkIG5mY19sbGNwX3J4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTY1LVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTU2NjpzdGF0aWMgdm9pZCBfX25mY19sbGNwX3JlY3Yoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1Njcte1xcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTc3LVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTU3ODp2b2lkIG5mY19sbGNwX3JlY3Yodm9pZCAqZGF0YSwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGVycilcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1Nzkte1xcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTg2LVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTU4NzpcXHRfX25mY19sbGNwX3JlY3YobG9jYWwsIHNrYik7XFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTg4LX1cXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM9MTU5MD1pbnQgbmZjX2xsY3BfZGF0YV9yZWNlaXZlZChzdHJ1Y3QgbmZjX2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTk5LVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTYwMDpcXHRfX25mY19sbGNwX3JlY3YobG9jYWwsIHNrYik7XFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNjAxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMToxOTo1My4yOTE2NDM1MDJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY1NzA3Mjk0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRoZSBleHBlcnQ6XG5cbioqVW5kZXJzdGFuZGluZyB0aGUgTExDUCBEYXRhIEZsb3cqKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIHBpbiBkb3duIHRoZSBkYXRhIGVudHJ5IHBvaW50cyBmb3IgdGhlIExMQ1AgKExpbmsgTGF5ZXIgQ29udHJvbCBQcm90b2NvbCkgaW4gdGhpcyBORkMgaW1wbGVtZW50YXRpb24uIEknbSBmb2N1c2luZyBvbiB0aGUgZGF0YSByZWNlcHRpb24gcGF0aC4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gaGluZ2Ugb24gdHdvIGZ1bmN0aW9uczogYG5mY19sbGNwX2RhdGFfcmVjZWl2ZWRgIGFuZCBgbmZjX2xsY3BfcmVjdmAuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCBgbmZjX2xsY3BfZGF0YV9yZWNlaXZlZGAgd2FzIGxpa2VseSBhIGNhbGxiYWNrIHRyaWdnZXJlZCBkdXJpbmcgZGF0YSBleGNoYW5nZSwgbWF5YmUgb3JpZ2luYXRpbmcgZnJvbSBzb21ldGhpbmcgbGlrZSBgbmZjX2RhdGFfZXhjaGFuZ2VgLiBCdXQgdGhhdCdzIG5vdCBxdWl0ZSByaWdodC4gQWZ0ZXIgYSBxdWljayBsb29rLCBpdCdzIGFjdHVhbGx5IGFuIGV4cG9ydGVkIGZ1bmN0aW9uLCB3aGljaCBjaGFuZ2VzIHRoZSBwaWN0dXJlIHNsaWdodGx5LCBhbmQgdGVsbHMgbWUgdGhlIGRlc2lnbiBpcyBhIGJpdCBkaWZmZXJlbnQuIEknbGwgbmVlZCB0byBnbyBkZWVwZXIgaW50byB0aGUgY2FsbCBoaWVyYXJjaHkgdG8gdW5kZXJzdGFuZCAqaG93KiBpdCdzIGJlaW5nIGNhbGxlZCwgYnV0IHRoaXMgYXQgbGVhc3QgZ2l2ZXMgbWUgYSBrZXkgZW50cnkgcG9pbnQgdG8gdHJhY2UgdGhlIGRhdGEgZmxvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODA3NywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjE5OjU2Ljk0ODcxODU2NFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjA5MjI2MzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZjX2xsY3BfZGF0YV9yZWNlaXZlZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL2NvcmUuYz02NTU9aW50IG5mY190bV9kYXRhX3JlY2VpdmVkKHN0cnVjdCBuZmNfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbmZjL2NvcmUuYy02NjItXFxubmV0L25mYy9jb3JlLmM6NjYzOlxcdHJldHVybiBuZmNfbGxjcF9kYXRhX3JlY2VpdmVkKGRldiwgc2tiKTtcXG5uZXQvbmZjL2NvcmUuYy02NjQtfVxcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYz0xNTc4PXZvaWQgbmZjX2xsY3BfcmVjdih2b2lkICpkYXRhLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgZXJyKVxcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTg5LVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTU5MDppbnQgbmZjX2xsY3BfZGF0YV9yZWNlaXZlZChzdHJ1Y3QgbmZjX2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTU5MS17XFxuLS1cXG5uZXQvbmZjL25mYy5oPTUyPXU4ICpuZmNfbGxjcF9nZW5lcmFsX2J5dGVzKHN0cnVjdCBuZmNfZGV2ICpkZXYsIHNpemVfdCAqZ2VuZXJhbF9ieXRlc19sZW4pO1xcbm5ldC9uZmMvbmZjLmg6NTM6aW50IG5mY19sbGNwX2RhdGFfcmVjZWl2ZWQoc3RydWN0IG5mY19kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxubmV0L25mYy9uZmMuaC01NC1zdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKm5mY19sbGNwX2ZpbmRfbG9jYWwoc3RydWN0IG5mY19kZXYgKmRldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjE5OjU3LjAwOTY0Njc1WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNjk3ODM0MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkRlY29uc3RydWN0aW5nIHRoZSBEYXRhIEZsb3cqKlxuXG5SaWdodCwgc28gSSdtIHRyeWluZyB0byBnZXQgYSBoYW5kbGUgb24gdGhpcyBzeXN0ZW0uIEl0J3MgY2xlYXIgdGhhdCBgbmZjX3RtX2RhdGFfcmVjZWl2ZWRgIGlzIGEgY3JpdGljYWwgZnVuY3Rpb24uIFRoZSBpbXBsaWNhdGlvbiBoZXJlIGlzIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyAqdHJpZ2dlcmVkKiBvciAqaW52b2tlZCogZnJvbSB3aXRoaW4gdGhlIGRyaXZlcnMgdGhlbXNlbHZlcy4gVGhpcyBpcyBzaWduaWZpY2FudC4gSXQgdGVsbHMgbWUgdGhhdCB0aGUgbG93LWxldmVsIGludGVyYWN0aW9uIHdpdGggdGhlIE5GQyBoYXJkd2FyZSwgdGhlIGFjdHVhbCBieXRlLWxldmVsIGNvbW11bmljYXRpb24sIGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGVzZSBkcml2ZXJzLiBUaGUgZGF0YSBwcm9jZXNzaW5nIGFuZCBpbnRlcnByZXRhdGlvbiBsaWtlbHkgYmVnaW5zIHdpdGhpbiB0aGUgZHJpdmVyLCB0aGVuIGNhbGxzIHRoaXMgYG5mY190bV9kYXRhX3JlY2VpdmVkYCBmdW5jdGlvbiB0byBwYXNzIHRoZSByZWxldmFudCBpbmZvcm1hdGlvbiB1cHdhcmRzLiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoYXQgZnVuY3Rpb24gY2FsbCB0byB0aGUgc3BlY2lmaWMgZHJpdmVyKHMpIGludm9sdmVkIHRvIHJlYWxseSB1bmRlcnN0YW5kIHRoZSBkYXRhIHBpcGVsaW5lLiBVbmRlcnN0YW5kaW5nIHRoaXMgd2lsbCBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg3NDgsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMToyMDowMC4yNzk0MzIxOVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg1NjY5MzA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mY190bV9kYXRhX3JlY2VpdmVkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmZjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25mYy9taWNyb3JlYWQvbWljcm9yZWFkLmM9NTQ3PXN0YXRpYyBpbnQgbWljcm9yZWFkX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldiwgdTggcGlwZSxcXG4tLVxcbmRyaXZlcnMvbmZjL21pY3JvcmVhZC9taWNyb3JlYWQuYy01NzMtXFxuZHJpdmVycy9uZmMvbWljcm9yZWFkL21pY3JvcmVhZC5jOjU3NDpcXHRcXHRyID0gbmZjX3RtX2RhdGFfcmVjZWl2ZWQoaGRldi1cXHUwMDNlbmRldiwgc2tiKTtcXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvbWljcm9yZWFkLmMtNTc1LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZmMvbWljcm9yZWFkL21pY3JvcmVhZC5jLTYwMi1cXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvbWljcm9yZWFkLmM6NjAzOlxcdFxcdHIgPSBuZmNfdG1fZGF0YV9yZWNlaXZlZChoZGV2LVxcdTAwM2VuZGV2LCBza2IpO1xcbmRyaXZlcnMvbmZjL21pY3JvcmVhZC9taWNyb3JlYWQuYy02MDQtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25mYy9wbjUzMy9wbjUzMy5jPTEwNzE9c3RhdGljIGludCBwbjUzM190bV9nZXRfZGF0YV9jb21wbGV0ZShzdHJ1Y3QgcG41MzMgKmRldiwgdm9pZCAqYXJnLFxcbi0tXFxuZHJpdmVycy9uZmMvcG41MzMvcG41MzMuYy0xMTA3LVxcbmRyaXZlcnMvbmZjL3BuNTMzL3BuNTMzLmM6MTEwODpcXHRyZXR1cm4gbmZjX3RtX2RhdGFfcmVjZWl2ZWQoZGV2LVxcdTAwM2VuZmNfZGV2LCBza2IpO1xcbmRyaXZlcnMvbmZjL3BuNTMzL3BuNTMzLmMtMTEwOS1cXG4tLVxcbmRyaXZlcnMvbmZjL3BuNTQ0L3BuNTQ0LmM9NzE1PXN0YXRpYyBpbnQgcG41NDRfaGNpX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldiwgdTggcGlwZSwgdTggZXZlbnQsXFxuLS1cXG5kcml2ZXJzL25mYy9wbjU0NC9wbjU0NC5jLTc1OC1cXHRcXHRza2JfcHVsbChza2IsIDIpO1xcbmRyaXZlcnMvbmZjL3BuNTQ0L3BuNTQ0LmM6NzU5OlxcdFxcdHJldHVybiBuZmNfdG1fZGF0YV9yZWNlaXZlZChoZGV2LVxcdTAwM2VuZGV2LCBza2IpO1xcbmRyaXZlcnMvbmZjL3BuNTQ0L3BuNTQ0LmMtNzYwLVxcdGRlZmF1bHQ6XFxuLS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYz0zMDQ9c3RhdGljIGludCBzdDIxbmZjYV90bV9yZWN2X2RlcF9yZXEoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LFxcbi0tXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmMtMzQyLVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jOjM0MzpcXHRyZXR1cm4gbmZjX3RtX2RhdGFfcmVjZWl2ZWQoaGRldi1cXHUwMDNlbmRldiwgc2tiKTtcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYy0zNDQtfVxcbi0tXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmM9NTUzPXN0YXRpYyB2b2lkIHN0MjFuZmNhX2ltX3JlY3ZfZGVwX3Jlc19jYih2b2lkICpjb250ZXh0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmMtNTk0LVxcdFxcdFxcdHNrYl9wdWxsKHNrYiwgc2l6ZSk7XFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmM6NTk1OlxcdFxcdFxcdG5mY190bV9kYXRhX3JlY2VpdmVkKGluZm8tXFx1MDAzZWhkZXYtXFx1MDAzZW5kZXYsIHNrYik7XFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmMtNTk2LVxcdFxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMToyMDowMC40NjUxMDczMzdaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcyNDI4NTgxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgRGF0YSBGbG93IGluIE5GQyBSZWNlcHRpb24qKlxuXG5SaWdodCwgc28gYG5mY190bV9kYXRhX3JlY2VpdmVkYCBpcyB0aGUgY3J1Y2lhbCBmdW5jdGlvbiwgdGhlIGVudHJ5IHBvaW50IGZvciBoYW5kbGluZyBpbmNvbWluZyBkYXRhIGZyb20gdGhlIHBoeXNpY2FsIE5GQyBkcml2ZXJzLiBUaGF0J3MgY2xlYXIuIEJ1dCBub3cgSSBuZWVkIHRvIHRyYWNlICphbGwqIHRoZSBwb3NzaWJsZSBkYXRhIHBhdGhzLiBJJ3ZlIGdvdCB0byBjb25zaWRlciBub3QganVzdCB0aGUgb2J2aW91cyBoYXJkd2FyZSBpbnRlcmFjdGlvbnMgYnV0IGFsc28gdGhlIHNpbXVsYXRpb24gZW52aXJvbm1lbnRzLiBTcGVjaWZpY2FsbHksIHdoYXQgYWJvdXQgdGhlIHNpbXVsYXRlZCBORkMgbGF5ZXJzPyBIb3cgZG9lcyB0aGUgZGF0YSBwcm9wYWdhdGUgdGhyb3VnaCBgbmZjc2ltYCBvciBgdmlydHVhbF9uY2lkZXZgPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGV5IGFsc28gY2FsbCBgbmZjX3RtX2RhdGFfcmVjZWl2ZWRgIChvciBhbiBlcXVpdmFsZW50KSBhbmQgaG93IHRoZWlyIGRhdGEgZ2V0cyBwYXNzZWQgdG8gdGhhdCBwb2ludC4gVGhpcyBpcyBjcnVjaWFsIGZvciB2ZXJpZnlpbmcgdGhlIHJvYnVzdG5lc3Mgb2YgdGhlIHN5c3RlbTsgdG8gZW5zdXJlIHRoYXQgYWxsIGRhdGEgaXMgaGFuZGxlZCBjb25zaXN0ZW50bHksIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBvcmlnaW5hdGVzIGZyb20gYSBwaHlzaWNhbCBjaGlwIG9yIGEgc2ltdWxhdGlvbi4gVGhpcyBpcyB0aGUga2V5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5Nzc3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6MjA6MDQuMTg5Mzk1MjM0WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODQ1Nzk5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZmNfdG1fZGF0YV9yZWNlaXZlZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL2NvcmUuYz02NTM9RVhQT1JUX1NZTUJPTChuZmNfZ2V0X2xvY2FsX2dlbmVyYWxfYnl0ZXMpO1xcbm5ldC9uZmMvY29yZS5jLTY1NC1cXG5uZXQvbmZjL2NvcmUuYzo2NTU6aW50IG5mY190bV9kYXRhX3JlY2VpdmVkKHN0cnVjdCBuZmNfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L25mYy9jb3JlLmMtNjU2LXtcXG4tLVxcbm5ldC9uZmMvY29yZS5jLTY2NC19XFxubmV0L25mYy9jb3JlLmM6NjY1OkVYUE9SVF9TWU1CT0wobmZjX3RtX2RhdGFfcmVjZWl2ZWQpO1xcbm5ldC9uZmMvY29yZS5jLTY2Ni1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDc3PXN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMjc0LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMjc1OlxcdHJjID0gbmZjX3RtX2RhdGFfcmVjZWl2ZWQoZGRldi1cXHUwMDNlbmZjX2RldiwgcmVzcCk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEyNzYtXFx0aWYgKHJjKVxcbi0tXFxubmV0L25mYy9uY2kvZGF0YS5jPTIxND1zdGF0aWMgdm9pZCBuY2lfYWRkX3J4X2RhdGFfZnJhZyhzdHJ1Y3QgbmNpX2RldiAqbmRldixcXG4tLVxcbm5ldC9uZmMvbmNpL2RhdGEuYy0yNjEtXFx0XFx0LyogRGF0YSByZWNlaXZlZCBpbiBUYXJnZXQgbW9kZSwgZm9yd2FyZCB0byBuZmMgY29yZSAqL1xcbm5ldC9uZmMvbmNpL2RhdGEuYzoyNjI6XFx0XFx0ZXJyID0gbmZjX3RtX2RhdGFfcmVjZWl2ZWQobmRldi1cXHUwMDNlbmZjX2Rldiwgc2tiKTtcXG5uZXQvbmZjL25jaS9kYXRhLmMtMjYzLVxcdFxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjIwOjA0LjI1Nzg1ODc5OVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MzcyMjc2OTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBORkMgRGF0YSBSZWNlcHRpb24gUGF0aHMqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIE5GQyBkYXRhIHJlY2VwdGlvbiBhbmQgdHJ5aW5nIHRvIGlkZW50aWZ5IGtleSBlbnRyeSBwb2ludHMuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIHRha2VzIG1lIHRocm91Z2ggYG5jaV9hZGRfcnhfZGF0YV9mcmFnYCBpbiBgbmV0L25mYy9uY2kvZGF0YS5jYC4gSSBzZWUgaXQgdWx0aW1hdGVseSBjYWxscyBgbmZjX3RtX2RhdGFfcmVjZWl2ZWRgLiBTaW5jZSBgbmNpX2FkZF9yeF9kYXRhX2ZyYWdgIGlzIHBhcnQgb2YgdGhlIE5DSSBsYXllciwgd2hpY2ggY2FuIGJlIGluc3RhbnRpYXRlZCBieSBzb21ldGhpbmcgbGlrZSBgdmlydHVhbF9uY2lkZXZgLCBJJ20gbG9va2luZyBmb3IgYSBjb25maWd1cmF0aW9uIHRoYXQgaW5jbHVkZXMgZWl0aGVyIGBDT05GSUdfTkZDX1ZJUlRVQUxfTkNJYCBvciBgQ09ORklHX05GQ19OQ0lgLiBUaG9zZSBzZWVtIGxpa2Ugc29saWQgb3B0aW9ucyB0byBzdGFydCB3aXRoLlxuXG5JIGFsc28gc2VlIHRoYXQgYENPTkZJR19ORkNfU0lNYCB1dGlsaXplcyB0aGUgYG5mY19kaWdpdGFsYCBtb2R1bGUuIEluIHRoYXQgbW9kdWxlLCBgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXFgIGFsc28gY2FsbHMgYG5mY190bV9kYXRhX3JlY2VpdmVkYC4gU28sIGBDT05GSUdfTkZDX1NJTWAgYW5kIGBDT05GSUdfTkZDX0RJR0lUQUxgIGFyZSB3b3J0aCBjb25zaWRlcmluZyBhcyB3ZWxsLlxuXG5Ob3csIEknbSBzaGlmdGluZyBteSBhdHRlbnRpb24gdG8gTExDUCBhbmQgaXRzIHJvbGUgaW4gaGFuZGxpbmcgcmVjZWl2ZWQgZGF0YS4gTGV0J3Mgc2VlLi4uSSdtIGdvaW5nIHRvIGxvb2sgYXQgYF9fbmZjX2xsY3BfcmVjdmAgYW5kIGBuZmNfbGxjcF9yZWN2YC4gSSBrbm93IHRoYXQgYG5mY19sbGNwX3JlY3ZgIGlzIHRyaWdnZXJlZCBhcyBhIGNhbGxiYWNrIGZyb20gYG5mY19kYXRhX2V4Y2hhbmdlYC4gTm93LCB3aGVyZSBpcyBgbmZjX2RhdGFfZXhjaGFuZ2VgIGJlaW5nIGNhbGxlZD8gQWgsIGl0IGlzIGNhbGxlZCBmcm9tIGBuZmNfbGxjcF90eF93b3JrYCBhbmQgYG5mY19sbGNwX3NlbmRfc3ltbWAuIEFscmlnaHQsIHRoaXMgc3VnZ2VzdHMgYSBtb3JlIHNwZWNpZmljIHNldCBvZiBmdW5jdGlvbiBzeW1ib2xzIHRvIGZvY3VzIG9uIGhlcmUuXG5cbkJhc2VkIG9uIHRoaXMgdHJhdmVyc2FsLCBteSBjb3JlIGZvY3VzIHN5bWJvbHMgc2hvdWxkIGJlOiBgbmZjX2xsY3BfcmVjdmAsIGBuZmNfbGxjcF9kYXRhX3JlY2VpdmVkYCwgYF9fbmZjX2xsY3BfcmVjdmAsIGBuZmNfbGxjcF9yeF93b3JrYCwgYW5kIGBuZmNfbGxjcF9yeF9za2JgLlxuXG5Ob3csIGJlZm9yZSBJIG1vdmUgb24sIEkgd2FudCB0byB2ZXJpZnkgdGhhdCBgbmZjX2xsY3Bfcnhfc2tiYCBpcywgaW4gZmFjdCwgYSByZWxldmFudCBmb2N1cyBzeW1ib2wgdG8gcmV2aWV3LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDQ3MSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMToyMDoxMC42MzAxMzg3ODNaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzMDEwNDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mY19sbGNwX3J4X3NrYlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjL2xsY3BfY29yZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvbGxjcF9jb3JlLmM9MjE9c3RhdGljIERFRklORV9TUElOTE9DSyhsbGNwX2RldmljZXNfbG9jayk7XFxubmV0L25mYy9sbGNwX2NvcmUuYy0yMi1cXG5uZXQvbmZjL2xsY3BfY29yZS5jOjIzOnN0YXRpYyB2b2lkIG5mY19sbGNwX3J4X3NrYihzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTI0LVxcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYz0xNDM2PXN0YXRpYyB2b2lkIG5mY19sbGNwX3JlY3ZfYWdmKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE0NzEtXFxubmV0L25mYy9sbGNwX2NvcmUuYzoxNDcyOlxcdFxcdG5mY19sbGNwX3J4X3NrYihsb2NhbCwgbmV3X3NrYik7XFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNDczLVxcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNDc5LVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTQ4MDpzdGF0aWMgdm9pZCBuZmNfbGxjcF9yeF9za2Ioc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE0ODEte1xcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYz0xNTQzPXN0YXRpYyB2b2lkIG5mY19sbGNwX3J4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTU4LVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTU1OTpcXHRuZmNfbGxjcF9yeF9za2IobG9jYWwsIHNrYik7XFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTYwLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMToyMDoxMC42OTMxNTQ5NjlaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzA4MTk5OTE2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipMTENQIFBhY2tldCBSZWNlcHRpb24gRmxvdyoqXG5cbk9rYXksIHNvIEknbSB6ZXJvaW5nIGluIG9uIHRoZSBjb3JlIG9mIGhvdyBMTENQIHBhY2tldHMgYXJlIGhhbmRsZWQgb24gdGhpcyBzeXN0ZW0uIEl0IGxvb2tzIGxpa2UgYG5mY19sbGNwX3J4X3NrYmAgaXMgdGhlIGJpZyBrYWh1bmEsIHRoZSBtYWluIGRpc3BhdGNoZXIgZm9yIGFueSBpbmNvbWluZyBMTENQIHBhY2tldHMuIFRoYXQgbWFrZXMgc2Vuc2U7IGl0J3MgdGhlIHVsdGltYXRlIGRlc3RpbmF0aW9uLiBOb3csIGBuZmNfbGxjcF9yeF93b3JrYCBpcyBpbnRlcmVzdGluZ+KAlGl0IGRlcXVldWVzIHRoZSBgc2tiYCBhbmQgKnRoZW4qIGNhbGxzIGBuZmNfbGxjcF9yeF9za2JgLiBTbywgaXQgYWN0cyBhcyBhIHdvcmsgcXVldWUgaGFuZGxlciwgcHJvY2Vzc2luZyB0aGUgcmVjZWl2ZWQgZGF0YS4gQW5kIHRoZSBwb2ludCBvZiBlbnRyeSBzZWVtcyB0byBiZSBgX19uZmNfbGxjcF9yZWN2YCwgd2hpY2ggcXVldWVzIHRoZSBgc2tiYCBhbmQgc2NoZWR1bGVzIHRoZSB3b3JrcXVldWUgdGhyb3VnaCBgbmZjX2xsY3Bfcnhfd29ya2AuIFRoYXQgaW1tZWRpYXRlbHkgZ2l2ZXMgbWUgYSBnb29kIGlkZWEgb2YgdGhlIGV4ZWN1dGlvbiBwYXRoLlxuXG5HaXZlbiB0aGlzLCBJIHNob3VsZCBwcm9iYWJseSBmb2N1cyBteSBhdHRlbnRpb24gb24gdGhlc2Ugc3ltYm9sczogYF9fbmZjX2xsY3BfcmVjdmAsIGBuZmNfbGxjcF9yZWN2YCwgYG5mY19sbGNwX2RhdGFfcmVjZWl2ZWRgLCBgbmZjX2xsY3Bfcnhfd29ya2AsIGFuZCB0aGUgYWxsLWltcG9ydGFudCBgbmZjX2xsY3Bfcnhfc2tiYC4gVGhleSBmb3JtIHRoZSBjcml0aWNhbCBwYXRoLCBhbmQgdW5kZXJzdGFuZGluZyB0aGVpciBpbnRlcmFjdGlvbnMgaXMgZ29pbmcgdG8gYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGZ1bGwgc3lzdGVtLlxuXG5KdXN0IHRvIGJlIHN1cmUsIEkgc2hvdWxkIHZlcmlmeSB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBMb29rcyBsaWtlIEknbGwgbmVlZCB0byBjaGVjayB0aGUgZm9sbG93aW5nIGNvbmZpZ3MsIGp1c3QgaW4gY2FzZTogYENPTkZJR19ORkNgLCBgQ09ORklHX05GQ19OQ0lgLCBgQ09ORklHX05GQ19WSVJUVUFMX05DSWAsIGBDT05GSUdfTkZDX1NJTWAsIGFuZCBgQ09ORklHX05GQ19ESUdJVEFMYC4gSSdsbCBhbHNvIGhhdmUgYSBsb29rIGF0IGBuZXQvbmZjL0tjb25maWdgIHRvIHNlZSBpZiBgTkZDX0xMQ1BgIGlzIGEgZGlzY3JldGUsIHNlcGFyYXRlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRoYXQgY291bGQgaW1wYWN0IGhvdyB0aGluZ3MgYXJlIGJ1aWx0LiBHb3R0YSBjb3ZlciBhbGwgbXkgYmFzZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNzY4LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjIwOjE3Ljc3NTE1NjgyMVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzAyNTU3MzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9LY29uZmlnLTUtXFxubmV0L25mYy9LY29uZmlnOjY6bWVudWNvbmZpZyBORkNcXG5uZXQvbmZjL0tjb25maWctNy1cXHRkZXBlbmRzIG9uIFJGS0lMTCB8fCAhUkZLSUxMXFxuLS1cXG5uZXQvbmZjL0tjb25maWctMTYtXFxubmV0L25mYy9LY29uZmlnOjE3OmNvbmZpZyBORkNfRElHSVRBTFxcbm5ldC9uZmMvS2NvbmZpZy0xOC1cXHRkZXBlbmRzIG9uIE5GQ1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMToyMDoxNy44NDU0MTkyMTVaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE2ODIxMzk0NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipOYXZpZ2F0aW5nIHRoZSBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqXG5cbk9rYXksIGxldCdzIHNlZS4uLiBJJ20gZGl2aW5nIGludG8gdGhpcyBjb25maWd1cmF0aW9uIGFuZCB0aGUgZmlyc3QgcXVlc3Rpb24gdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpcyB3aGV0aGVyIHRoZXJlJ3MgYSBkZWRpY2F0ZWQgYE5GQ19MTENQYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gSXQncyBhIGtleSBwcm90b2NvbCwgc28gaXQgKnNob3VsZCogYmUgdGhlcmUsIGJ1dCBJIG5lZWQgdG8gYmUgc3VyZS4gSSdtIG1lbnRhbGx5IHNjYW5uaW5nIHRoZSB1c3VhbCBzdXNwZWN0cyBpbiB0aGUgY29uZmlndXJhdGlvbiBmaWxlcywgdGhpbmtpbmcgYWJvdXQgd2hlcmUgaXQgd291bGQgbG9naWNhbGx5IHJlc2lkZSB3aXRoaW4gdGhlIGV4aXN0aW5nIHN0cnVjdHVyZS4gSXMgaXQgdW5kZXIgdGhlIE5GQyB1bWJyZWxsYSwgb3IgcGVyaGFwcyB0dWNrZWQgYXdheSB1bmRlciBhIG1vcmUgZ2VuZXJpYyBuZXR3b3JraW5nIHNlY3Rpb24/IE9yIG1heWJlIGl0J3MgZGVwZW5kZW50IG9uIHNvbWUgb3RoZXIgc2V0dGluZywgbWFraW5nIGl0cyBwcmVzZW5jZSBjb25kaXRpb25hbC4gSSBuZWVkIHRvIGtub3cgcXVpY2tseSB3aGV0aGVyIEkgbmVlZCB0byBnbyBodW50aW5nIGVsc2V3aGVyZSBvciBpZiBpdCdzIHJpZ2h0IGluIGZyb250IG9mIG15IGZhY2UuIEtub3dpbmcgd2hldGhlciB0aGlzIHNldHRpbmcgZXhpc3RzIHdpbGwgaW5mb3JtIG15IG5leHQgc3RlcHMsIGFuZCB3aGF0IHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNTQ3LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6MjA6MjkuNTI3NTYxMjUxWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODU3NTU2NSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTkZDX0xMQ1BcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25mYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMToyMDoyOS41OTYxNDQ3MzZaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzE1NTA3ODc1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyBgbGxjcF9jb3JlLm9gIEJ1aWxkIENvbmRpdGlvbmFsaXR5KipcblxuUmlnaHQsIHNvLCBJIG5lZWQgdG8gY2xlYXIgdGhpcyB1cC4gTXkgaW5pdGlhbCBhc3N1bXB0aW9uIGFib3V0IGBsbGNwX2NvcmUub2AncyBidWlsZCBjb25kaXRpb25hbGl0eSBpcyB3cm9uZy4gSXQncyBkZWZpbml0ZWx5IGJ1aWx0IHVuY29uZGl0aW9uYWxseSB3aGVuIGBDT05GSUdfTkZDYCBpcyBlbmFibGVkLCBhbmQgdGhhdCdzIHRocm91Z2ggdGhlIGBuZmMtb2Jqc2AgbWVjaGFuaXNtLCBvZiBjb3Vyc2UuIFRpbWUgdG8gY29uZmlybSBteSB1bmRlcnN0YW5kaW5nIGFuZCBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBzb21ldGhpbmcgc3R1cGlkLiBMZXQgbWUgZ28gYmFjayBhbmQgZG91YmxlIGNoZWNrIHRoZSBgbmV0L25mYy9NYWtlZmlsZWAgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBJdCB3b3VsZCBiZSBlYXN5IHRvIG92ZXJsb29rIHNvbWV0aGluZyBpbiBhIE1ha2VmaWxlISBHb3R0YSBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI3OTAsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMToyMDozNi43NTEyMjY3MDNaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNTkwMDk2MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJsbGNwX2NvcmUub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvTWFrZWZpbGU9OT1vYmotJChDT05GSUdfTkZDX0RJR0lUQUwpICs9IG5mY19kaWdpdGFsLm9cXG5uZXQvbmZjL01ha2VmaWxlLTEwLVxcbm5ldC9uZmMvTWFrZWZpbGU6MTE6bmZjLW9ianMgOj0gY29yZS5vIG5ldGxpbmsubyBhZl9uZmMubyByYXdzb2NrLm8gbGxjcF9jb3JlLm8gbGxjcF9jb21tYW5kcy5vIFxcXFxcXG5uZXQvbmZjL01ha2VmaWxlLTEyLVxcdFxcdGxsY3Bfc29jay5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjIwOjM2Ljg2NzEzMzE3NVoiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjU3MzE5OTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBORkMgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdGhlIGBuZmMtb2Jqc2AgYnVpbGQgcHJvY2VzcyB3b3JrcyBpbiByZWxhdGlvbiB0byB0aGUgTkZDIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHllcywgdGhlIGBuZmMtb2Jqc2AgbW9kdWxlIGlzIGRlZmluaXRlbHkgYnVpbHQgd2hlbiB0aGUgbWFpbiBgQ09ORklHX05GQ2Agb3B0aW9uIGlzIGVuYWJsZWQsIHRoYXQncyB0aGUgYmFzZSByZXF1aXJlbWVudC4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGEgYml0IGJldHRlci5cblxuSSBzZWUgYSBmZXcgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gTkZDOiBgTkZDYCwgYE5GQ19OQ0lgLCBgTkZDX1ZJUlRVQUxfTkNJYCwgYW5kIGBORkNfU0lNYC4gVGhlc2UgYXJlIHRoZSBrZXkgdmFyaWFibGVzLiBOb3csIEkgd2FudCB0byBzcGVjaWZpY2FsbHkgY2hlY2sgaG93IGBORkNfTkNJYCBpcyBzZWxlY3RlZCB3aXRoaW4gdGhpcyBzZXR1cC4gSSBuZWVkIHRvIGRldGVybWluZSBpZiBgTkZDX1ZJUlRVQUxfTkNJYCBoYXMgYW55IGluZmx1ZW5jZSBvbiB0aGUgYE5GQ19OQ0lgIGNvbmZpZ3VyYXRpb24sIEkgbmVlZCB0byBrbm93IHRoZSByZWxhdGlvbnNoaXBzLiBJJ2xsIG5lZWQgdG8gZGlnIGEgbGl0dGxlIGRlZXBlciBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIHRvIGNvbmZpcm0gdGhhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMxMzMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMToyMDo0MC41MjQ0NTkwMjdaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0NjgwNjM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORkNfVklSVFVBTF9OQ0lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZmMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25mYy9LY29uZmlnPTQyPWNvbmZpZyBORkNfUE9SVDEwMFxcbi0tXFxuZHJpdmVycy9uZmMvS2NvbmZpZy01MS1cXG5kcml2ZXJzL25mYy9LY29uZmlnOjUyOmNvbmZpZyBORkNfVklSVFVBTF9OQ0lcXG5kcml2ZXJzL25mYy9LY29uZmlnLTUzLVxcdHRyaXN0YXRlIFxcXCJOQ0kgZGV2aWNlIHNpbXVsYXRvciBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjIwOjQwLjU4OTE0ODgwMloiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTMzODg5OTE1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgZm9jdXNpbmcgb24gdGhlIGRlcGVuZGVuY2llcyBvZiBgTkZDX1ZJUlRVQUxfTkNJYDpcblxuKipEZWNvbnN0cnVjdGluZyBEZXBlbmRlbmNpZXM6IE5GQ19WSVJUVUFMX05DSSoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgZGVwZW5kZW5jaWVzIG9mIGBORkNfVklSVFVBTF9OQ0lgLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBtYXAgb3V0IHRoZSBsYW5kc2NhcGUuIFdoYXQgb3RoZXIgY29tcG9uZW50cywgZHJpdmVycywgb3IgbW9kdWxlcyBpcyB0aGlzIHNwZWNpZmljIHZpcnR1YWwgTkNJIGxheWVyIGJ1aWx0IHVwb24/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBmb3VuZGF0aW9uLiBJcyBpdCByZWxpYW50IG9uIGEgc3BlY2lmaWMgaGFyZHdhcmUgYWJzdHJhY3Rpb24gbGF5ZXIgKEhBTCk/IERvZXMgaXQgaW50ZXJmYWNlIHdpdGggcGFydGljdWxhciBrZXJuZWwgbW9kdWxlcyBvciB1c2VyLXNwYWNlIHNlcnZpY2VzP1xuXG5JJ20gdGhpbmtpbmcsIGFyZSB0aGVyZSBhbnkgb2J2aW91cyBrZXJuZWwgbW9kdWxlcyB0aGF0IGFyZSBjcml0aWNhbCBmb3IgaXRzIG9wZXJhdGlvbiwgc3VjaCBhcyB0aG9zZSByZWxhdGVkIHRvIHNlY3VyZSBlbGVtZW50cywgcmVhZGVyL3dyaXRlciBtb2Rlcywgb3IgcGVlci10by1wZWVyIGNvbW11bmljYXRpb24/IEkgbmVlZCB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gdGhlICpkaXJlY3QqIGRlcGVuZGVuY2llcywgdGhvc2UgaXQgZXhwbGljaXRseSBjYWxscyB1cG9uLCBhbmQgdGhlICppbmRpcmVjdCogb25lcywgd2hpY2ggYXJlIGZ1bmRhbWVudGFsIHRvIGl0cyBlbnZpcm9ubWVudC4gRm9yIGV4YW1wbGUsIGlzIGl0IGRlcGVuZGVudCBvbiBhIHBhcnRpY3VsYXIgdmVyc2lvbiBvZiB0aGUgTkZDIHN0YWNrPyBBcmUgdGhlcmUgc3BlY2lmaWMgc2VjdXJpdHkgcG9saWNpZXMgaXQgbXVzdCBhZGhlcmUgdG8/XG5cbk1vcmUgaW1wb3J0YW50bHksIGhvdyBkb2VzIGl0IGhhbmRsZSBjb25jdXJyZW5jeSBhbmQgcmVzb3VyY2UgY29udGVudGlvbiB3aXRoIG90aGVyIE5GQyBjb21wb25lbnRzPyBUaGF0J3MgYWx3YXlzIGEgY3JpdGljYWwgYXNwZWN0IGluIHZpcnR1YWxpemVkIHN5c3RlbXMuIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IGl0cyBsb2NraW5nIG1lY2hhbmlzbXMsIGl0cyBpbnRlcnJ1cHQgaGFuZGxpbmcsIGFuZCBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucy5cblxuTXkgYW5hbHlzaXMgbmVlZHMgdG8gYmUgY29tcHJlaGVuc2l2ZS4gSSdtIGxvb2tpbmcgZm9yIGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgcm9sZSBpbiB0aGUgZ3JlYXRlciBORkMgYXJjaGl0ZWN0dXJlIGFuZCBpdHMgcG9pbnRzIG9mIGNvbnRhY3QuIFVuZGVyc3RhbmRpbmcgdGhlc2UgZGVwZW5kZW5jaWVzIGlzIGtleSB0byBhbnkgZGVlcGVyIGludmVzdGlnYXRpb24sIGVzcGVjaWFsbHkgaWYgSSBuZWVkIHRvIGRlYnVnLCBvcHRpbWl6ZSwgb3IgbW9kaWZ5IHRoaXMgY29tcG9uZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzU1MSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjIwOjUxLjkyODA1MTc0MloiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDk5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25mYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUyLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDUyOlxcdGNvbmZpZyBORkNfVklSVFVBTF9OQ0lcXG4gIDUzOlxcdFxcdHRyaXN0YXRlIFxcXCJOQ0kgZGV2aWNlIHNpbXVsYXRvciBkcml2ZXJcXFwiXFxuICA1NDpcXHRcXHRkZXBlbmRzIG9uIE5GQ19OQ0lcXG4gIDU1OlxcdFxcdGhlbHBcXG4gIDU2OlxcdFxcdCAgTkNJIHZpcnR1YWwgZGV2aWNlIHNpbXVsYXRlcyBhIE5DSSBkZXZpY2UgdG8gdGhlIHVzZXIuXFxuICA1NzpcXHRcXHQgIEl0IGNhbiBiZSB1c2VkIHRvIHZhbGlkYXRlIHRoZSBOQ0kgbW9kdWxlIGFuZCBhcHBsaWNhdGlvbnMuXFxuICA1ODpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIGNvbW11bmljYXRpb24gYmV0d2VlbiB0aGUgdmlydHVhbCBOQ0kgZGV2aWNlIGFuZFxcbiAgNTk6XFx0XFx0ICBtb2R1bGUuXFxuICA2MDpcXHRcXG4gIDYxOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6MjA6NTEuOTI4MTM0ODAyWiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNzU4MTkxMzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkNvbnNpZGVyaW5nIE5GQyBJbXBsZW1lbnRhdGlvbiBDaG9pY2VzKipcblxuQWxyaWdodCwgc28gdGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byByZXZvbHZlIGFyb3VuZCBORkMgaW1wbGVtZW50YXRpb24sIGFuZCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyBcIlllcywgaXQgKmRlZmluaXRlbHkqIGhpbmdlcyBvbiB0aGUgYE5GQ19OQ0lgIGNvbXBvbmVudC5cIiBUaGF0J3MgdGhlIE5ldHdvcmsgQ29udHJvbGxlciBJbnRlcmZhY2UsIGFuZCBpdOKAmXMgdGhlIGJlZHJvY2sgb2YgaG93IHdlIGFjdHVhbGx5IHRhbGsgdG8gdGhlIE5GQyBoYXJkd2FyZSBhdCBhIGxvd2VyIGxldmVsLiBNeSBhcmNoaXRlY3R1cmUgaXMgZnVuZGFtZW50YWxseSBzaGFwZWQgYnkgaG93IHdlbGwgdGhhdCdzIGRlc2lnbmVkIGFuZCBpbXBsZW1lbnRlZC4gQnV0IEkgY2FuJ3Qgc3RvcCB0aGVyZS5cblxuTXkgbWluZCBpbW1lZGlhdGVseSBicmFuY2hlcyB0byBjb25zaWRlciBgTkZDX1NJTWAuIEkgY2FuJ3QganVzdCBnbG9zcyBvdmVyIHRoZSBTZWN1cmUgRWxlbWVudCBhc3BlY3QuIFRoZSB3aG9sZSBhcmNoaXRlY3R1cmUgY291bGQgcGl2b3Qgb24gd2hldGhlciB3ZSdyZSB0YWxraW5nIGFib3V0IGEgVUlDQywgYW4gZW1iZWRkZWQgU0UsIG9yIGV2ZW4gYSBzb2Z0d2FyZS1iYXNlZCBzb2x1dGlvbi4gVGhlIHNlY3VyaXR5IHByb2ZpbGUsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzLCBhbmQgb3ZlcmFsbCBkZXNpZ24gY29tcGxleGl0eSBhcmUgYWxsIGdvaW5nIHRvIGNoYW5nZSBkZXBlbmRpbmcgb24gKnRoYXQqIHZhcmlhYmxlLiBJIG5lZWQgdG8ga2VlcCB0aGUgU0lNIGNhcmQgaW1wbGljYXRpb25zIHRvcCBvZiBtaW5kIHdoZW4gdGhpbmtpbmcgdGhyb3VnaCB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDA3MywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6MjA6NTYuMTAzOTU3NDU2WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY3MDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmZjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzEsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMzE6XFx0Y29uZmlnIE5GQ19TSU1cXG4gIDMyOlxcdFxcdHRyaXN0YXRlIFxcXCJORkMgaGFyZHdhcmUgc2ltdWxhdG9yIGRyaXZlclxcXCJcXG4gIDMzOlxcdFxcdGRlcGVuZHMgb24gTkZDX0RJR0lUQUxcXG4gIDM0OlxcdFxcdGhlbHBcXG4gIDM1OlxcdFxcdCAgVGhpcyBkcml2ZXIgZGVjbGFyZXMgdHdvIHZpcnR1YWwgTkZDIGRldmljZXMgc3VwcG9ydGluZyBORkMtREVQXFxuICAzNjpcXHRcXHQgIHByb3RvY29sLiBBbiBMTENQIGNvbm5lY3Rpb24gY2FuIGJlIGVzdGFibGlzaGVkIGJldHdlZW4gdGhlbSBhbmRcXG4gIDM3OlxcdFxcdCAgYWxsIHBhY2tldHMgc2VudCBmcm9tIG9uZSBkZXZpY2UgaXMgc2VudCBiYWNrIHRvIHRoZSBvdGhlciwgYWN0aW5nIGFzXFxuICAzODpcXHRcXHQgIGxvb3BiYWNrIGRldmljZXMuXFxuICAzOTpcXHRcXG4gIDQwOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6MjA6NTYuMTA0MDI1ODA2WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzODM1NjkzNTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTkZDIExMQ1AgUGFja2V0IFZ1bG5lcmFiaWxpdHkgQXNzZXNzbWVudCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgTkZDIGNvZGUgYW5kIGl0J3MgY29udGluZ2VudCBvbiBgTkZDX0RJR0lUQUxgLiBUaGF0IG1lYW5zIHRvIHByb3Blcmx5IGNvbmZpZ3VyZSB0aGUgTkZDIHN5c3RlbSwgSSdsbCBuZWVkIHRvIGVuYWJsZSBgTkZDYCwgYE5GQ19OQ0lgLCBgTkZDX1ZJUlRVQUxfTkNJYCwgYE5GQ19ESUdJVEFMYCwgYW5kIGBORkNfU0lNYC5cblxuVGhlIGNvcmUgb2YgdGhlIG1hdHRlciBzZWVtcyB0byBiZSB0aGlzIHBhdGNoIHRoYXQgaW50cm9kdWNlcyBhIGxlbmd0aCBjaGVjayAoYHNrYi1cdTAwM2VsZW4gXHUwMDNjIExMQ1BfSEVBREVSX1NJWkVgKSB3aXRoaW4gYF9fbmZjX2xsY3BfcmVjdmAuIFJpZ2h0IGF3YXksIEkgcmVjb2duaXplIHRoaXMgYXMgYSBmdW5jdGlvbmFsIGZpeCwgYWRkcmVzc2luZyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQgb3Igc2ltaWxhciB2dWxuZXJhYmlsaXR5IHdoZW4gaGFuZGxpbmcgaW5jb21pbmcgTkZDIExMQ1AgcGFja2V0cy4gVGhpcyBhYnNvbHV0ZWx5IHdhcnJhbnRzIGZ1enppbmc7IGl04oCZcyBhIGNsYXNzaWMgc2NlbmFyaW8gZm9yIHVuY292ZXJpbmcgZWRnZSBjYXNlcy5cblxuSSBuZWVkIHRvIGZvY3VzIG15IGF0dGVudGlvbiBvbiB0aGVzZSBzeW1ib2xzOiBgX19uZmNfbGxjcF9yZWN2YCwgYG5mY19sbGNwX3JlY3ZgLCBgbmZjX2xsY3BfZGF0YV9yZWNlaXZlZGAsIGBuZmNfbGxjcF9yeF93b3JrYCwgYW5kIGBuZmNfbGxjcF9yeF9za2JgLlxuXG5CZWZvcmUgSSBkaXZlIHRvbyBkZWVwLCBJIHNob3VsZCBxdWlja2x5IHZlcmlmeSBpZiBgbmZjX2xsY3BfcmVjdmAgYW5kIGBuZmNfbGxjcF9kYXRhX3JlY2VpdmVkYCBhcmUgcGVyZm9ybWFuY2UtY3JpdGljYWwgcGF0aHMuIENvbnNpZGVyaW5nIHRoZSBnZW5lcmFsIG5hdHVyZSBvZiBORkMsIGl0J3MgdW5saWtlbHkgdGhlc2UgYXJlIGhvdHNwb3RzLiBUaGV5IGFyZSBub3QuXG5cbkFscmlnaHQsIHdpdGggdGhhdCBhc3Nlc3NtZW50IGNvbXBsZXRlLCBJ4oCZbGwgZG9jdW1lbnQgbXkgZmluZGluZ3MgYW5kIG1hcmsgdGhpcyBhcyByZWFkeSB0byBtb3ZlIGZvcndhcmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NDg0LCJPdXRwdXRUb2tlbnMiOjIxNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjIxOjAyLjQ4NzU5NzA1OVoiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5Mzk1MjEzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORkNcIixcbiAgICBcIk5GQ19OQ0lcIixcbiAgICBcIk5GQ19WSVJUVUFMX05DSVwiLFxuICAgIFwiTkZDX0RJR0lUQUxcIixcbiAgICBcIk5GQ19TSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX25mY19sbGNwX3JlY3ZcIixcbiAgICBcIm5mY19sbGNwX3JlY3ZcIixcbiAgICBcIm5mY19sbGNwX2RhdGFfcmVjZWl2ZWRcIixcbiAgICBcIm5mY19sbGNwX3J4X3dvcmtcIixcbiAgICBcIm5mY19sbGNwX3J4X3NrYlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgdG8gYF9fbmZjX2xsY3BfcmVjdmAgdG8gZW5zdXJlIHRoZSByZWNlaXZlZCBza2IgaXMgYXQgbGVhc3QgYExMQ1BfSEVBREVSX1NJWkVgIGJ5dGVzIGxvbmcgYmVmb3JlIHByb2Nlc3NpbmcgaXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIG90aGVyIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlcyB3aGVuIGhhbmRsaW5nIG1hbGZvcm1lZCBORkMgTExDUCBwYWNrZXRzLiBGdXp6aW5nIHRoaXMgY29kZSBwYXRoIGlzIGhpZ2hseSByZWNvbW1lbmRlZCB0byBlbnN1cmUgdGhlIHJvYnVzdG5lc3Mgb2YgdGhlIE5GQyBMTENQIGltcGxlbWVudGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GQ1wiLFxuICAgIFwiTkZDX05DSVwiLFxuICAgIFwiTkZDX1ZJUlRVQUxfTkNJXCIsXG4gICAgXCJORkNfRElHSVRBTFwiLFxuICAgIFwiTkZDX1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fbmZjX2xsY3BfcmVjdlwiLFxuICAgIFwibmZjX2xsY3BfcmVjdlwiLFxuICAgIFwibmZjX2xsY3BfZGF0YV9yZWNlaXZlZFwiLFxuICAgIFwibmZjX2xsY3Bfcnhfd29ya1wiLFxuICAgIFwibmZjX2xsY3Bfcnhfc2tiXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayB0byBgX19uZmNfbGxjcF9yZWN2YCB0byBlbnN1cmUgdGhlIHJlY2VpdmVkIHNrYiBpcyBhdCBsZWFzdCBgTExDUF9IRUFERVJfU0laRWAgYnl0ZXMgbG9uZyBiZWZvcmUgcHJvY2Vzc2luZyBpdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgcmVhZHMgb3Igb3RoZXIgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzIHdoZW4gaGFuZGxpbmcgbWFsZm9ybWVkIE5GQyBMTENQIHBhY2tldHMuIEZ1enppbmcgdGhpcyBjb2RlIHBhdGggaXMgaGlnaGx5IHJlY29tbWVuZGVkIHRvIGVuc3VyZSB0aGUgcm9idXN0bmVzcyBvZiB0aGUgTkZDIExMQ1AgaW1wbGVtZW50YXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowmpf9d[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-13 21:08:15 +0000 UTC FinishedAt: 2026-07-13 21:21:04 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "bee763d5f341b99cf472afeb508d4988f62a6ca1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC", "NFC_NCI", "NFC_VIRTUAL_NCI", "NFC_DIGITAL", "NFC_SIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "bee763d5f341b99cf472afeb508d4988f62a6ca1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC", "NFC_NCI", "NFC_VIRTUAL_NCI", "NFC_DIGITAL", "NFC_SIM" ], "series_id": "f7f493ca-4ebc-4062-89ee-2a5e9fe37c5e" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "__nfc_llcp_recv", "nfc_llcp_recv", "nfc_llcp_data_received", "nfc_llcp_rx_work", "nfc_llcp_rx_skb" ], "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+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GQyYjMzQ7LAogICAgJiMzNDtORkNfTkNJJiMzNDssCiAgICAmIzM0O05GQ19WSVJUVUFMX05DSSYjMzQ7LAogICAgJiMzNDtORkNfRElHSVRBTCYjMzQ7LAogICAgJiMzNDtORkNfU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19uZmNfbGxjcF9yZWN2JiMzNDssCiAgICAmIzM0O25mY19sbGNwX3JlY3YmIzM0OywKICAgICYjMzQ7bmZjX2xsY3BfZGF0YV9yZWNlaXZlZCYjMzQ7LAogICAgJiMzNDtuZmNfbGxjcF9yeF93b3JrJiMzNDssCiAgICAmIzM0O25mY19sbGNwX3J4X3NrYiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIHRvIGBfX25mY19sbGNwX3JlY3ZgIHRvIGVuc3VyZSB0aGUgcmVjZWl2ZWQgc2tiIGlzIGF0IGxlYXN0IGBMTENQX0hFQURFUl9TSVpFYCBieXRlcyBsb25nIGJlZm9yZSBwcm9jZXNzaW5nIGl0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBwcmV2ZW50cyBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkcyBvciBvdGhlciBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMgd2hlbiBoYW5kbGluZyBtYWxmb3JtZWQgTkZDIExMQ1AgcGFja2V0cy4gRnV6emluZyB0aGlzIGNvZGUgcGF0aCBpcyBoaWdobHkgcmVjb21tZW5kZWQgdG8gZW5zdXJlIHRoZSByb2J1c3RuZXNzIG9mIHRoZSBORkMgTExDUCBpbXBsZW1lbnRhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMToxOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDViYjBlNzQyYTEzMGY0NjA4MmUyMDMxNGE4OTM1NTBhMGVhM2YzOTdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAxMyAyMToxOToxOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmZjL2xsY3BfY29yZS5jIGIvbmV0L25mYy9sbGNwX2NvcmUuY1xuaW5kZXggYWVkNWZlMWFmZWYwMWUuLjcyYjZlNzA3YWQwY2I0IDEwMDY0NFxuLS0tIGEvbmV0L25mYy9sbGNwX2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25mYy9sbGNwX2NvcmUuY1xuQEAgLTE1NjUsNiAmIzQzOzE1NjUsMTEgQEAgc3RhdGljIHZvaWQgbmZjX2xsY3Bfcnhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXG4gc3RhdGljIHZvaWQgX19uZmNfbGxjcF9yZWN2KHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IpXG4ge1xuJiM0MztcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyBMTENQX0hFQURFUl9TSVpFKSB7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0bG9jYWwtXHUwMDNlcnhfcGVuZGluZyA9IHNrYjtcbiBcdHRpbWVyX2RlbGV0ZShcdTAwMjZsb2NhbC1cdTAwM2VsaW5rX3RpbWVyKTtcbiBcdHNjaGVkdWxlX3dvcmsoXHUwMDI2bG9jYWwtXHUwMDNlcnhfd29yayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6MTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZDJiMzNDssCiAgICAmIzM0O05GQ19OQ0kmIzM0OywKICAgICYjMzQ7TkZDX1ZJUlRVQUxfTkNJJiMzNDssCiAgICAmIzM0O05GQ19ESUdJVEFMJiMzNDssCiAgICAmIzM0O05GQ19TSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX25mY19sbGNwX3JlY3YmIzM0OywKICAgICYjMzQ7bmZjX2xsY3BfcmVjdiYjMzQ7LAogICAgJiMzNDtuZmNfbGxjcF9kYXRhX3JlY2VpdmVkJiMzNDssCiAgICAmIzM0O25mY19sbGNwX3J4X3dvcmsmIzM0OywKICAgICYjMzQ7bmZjX2xsY3Bfcnhfc2tiJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgdG8gYF9fbmZjX2xsY3BfcmVjdmAgdG8gZW5zdXJlIHRoZSByZWNlaXZlZCBza2IgaXMgYXQgbGVhc3QgYExMQ1BfSEVBREVSX1NJWkVgIGJ5dGVzIGxvbmcgYmVmb3JlIHByb2Nlc3NpbmcgaXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIG90aGVyIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlcyB3aGVuIGhhbmRsaW5nIG1hbGZvcm1lZCBORkMgTExDUCBwYWNrZXRzLiBGdXp6aW5nIHRoaXMgY29kZSBwYXRoIGlzIGhpZ2hseSByZWNvbW1lbmRlZCB0byBlbnN1cmUgdGhlIHJvYnVzdG5lc3Mgb2YgdGhlIE5GQyBMTENQIGltcGxlbWVudGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1YmIwZTc0MmExMzBmNDYwODJlMjAzMTRhODkzNTUwYTBlYTNmMzk3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdWwgMTMgMjE6MTk6MTggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbmZjL2xsY3BfY29yZS5jIGIvbmV0L25mYy9sbGNwX2NvcmUuYwppbmRleCBhZWQ1ZmUxYWZlZjAxZS4uNzJiNmU3MDdhZDBjYjQgMTAwNjQ0Ci0tLSBhL25ldC9uZmMvbGxjcF9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25mYy9sbGNwX2NvcmUuYwpAQCAtMTU2NSw2ICYjNDM7MTU2NSwxMSBAQCBzdGF0aWMgdm9pZCBuZmNfbGxjcF9yeF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAogc3RhdGljIHZvaWQgX19uZmNfbGxjcF9yZWN2KHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IpCiB7CiYjNDM7CWlmIChza2ItJmd0O2xlbiAmbHQ7IExMQ1BfSEVBREVSX1NJWkUpIHsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwomIzQzOwkJcmV0dXJuOwomIzQzOwl9CiYjNDM7CiAJbG9jYWwtJmd0O3J4X3BlbmRpbmcgPSBza2I7CiAJdGltZXJfZGVsZXRlKCZhbXA7bG9jYWwtJmd0O2xpbmtfdGltZXIpOwogCXNjaGVkdWxlX3dvcmsoJmFtcDtsb2NhbC0mZ3Q7cnhfd29yayk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NjkKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBORkMgTExDUCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0IGludHJvZHVjZXMgYSBzYWZldHkgY2hlY2s6IGBza2ItJmd0O2xlbiAmbHQ7IExMQ1BfSEVBREVSX1NJWkVgIHdpdGhpbiBgX19uZmNfbGxjcF9yZWN2YCBpbiBgbmV0L25mYy9sbGNwX2NvcmUuY2AuIE15IGluaXRpYWwgYXNzZXNzbWVudD8gRnVuY3Rpb25hbGx5IHNvdW5kLiBUaGlzIGRpcmVjdGx5IGFkZHJlc3NlcyBhIHBvc3NpYmxlIG91dC1vZi1ib3VuZHMgcmVhZCBvciBhIHJlbGF0ZWQgdnVsbmVyYWJpbGl0eSB3aGVuIHRoZSBrZXJuZWwgaXMgcHJvY2Vzc2luZyBORkMgTExDUCBwYWNrZXRzLiBUaGlzICpzY3JlYW1zKiBmdXp6aW5nIHRhcmdldCwgaW1tZWRpYXRlbHkuIFdlIGRlZmluaXRlbHkgbmVlZCB0byBwdXQgdGhpcyB0aHJvdWdoIGl0cyBwYWNlcy4KCk5vdywgdG8gZ2V0IHRoZSBjb21wbGV0ZSBwaWN0dXJlLCBJIG5lZWQgdG8ga25vdyB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlZCB0byBlbmFibGUgdGhpcyBORkMgTExDUCBmdW5jdGlvbmFsaXR5LiBNeSBwbGFuIGlzIHRvIHN0YXJ0IGJ5IHNlYXJjaGluZyBmb3IgYF9fbmZjX2xsY3BfcmVjdmAgYW5kIGBuZmNfbGxjcF9yeF93b3JrYCBzcGVjaWZpY2FsbHkgd2l0aGluIGBuZXQvbmZjL2xsY3BfY29yZS5jYCBhZ2FpbiwgdG8gZ2V0IHNvbWUgY29udGV4dCBjbHVlcy4gVGhlbiwgSSYjMzk7bGwgZGl2ZSBpbnRvIGBuZXQvbmZjL0tjb25maWdgIGFuZCBgbmV0L25mYy9NYWtlZmlsZWAuIFRoYXQgc2hvdWxkIHJldmVhbCB0aGUgY29uZmlnIG9wdGlvbnMgdGhhdCBnb3Zlcm4gdGhlIGNvbXBpbGF0aW9uIGFuZCBpbmNsdXNpb24gb2YgYGxsY3BfY29yZS5jYCwgd2hpY2gsIGluIHR1cm4sIHdpbGwgYWxsb3cgbWUgdG8gc2V0IHVwIGFuIGFwcHJvcHJpYXRlIGZ1enppbmcgZW52aXJvbm1lbnQuIFVuZGVyc3RhbmRpbmcgdGhlIGJ1aWxkIHN5c3RlbSBpcyBrZXkgdG8gcHJvcGVyIHRlc3RpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bGxjcF9jb3JlLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvTWFrZWZpbGU9OT1vYmotJChDT05GSUdfTkZDX0RJR0lUQUwpICYjNDM7PSBuZmNfZGlnaXRhbC5vXG5uZXQvbmZjL01ha2VmaWxlLTEwLVxubmV0L25mYy9NYWtlZmlsZToxMTpuZmMtb2JqcyA6PSBjb3JlLm8gbmV0bGluay5vIGFmX25mYy5vIHJhd3NvY2subyBsbGNwX2NvcmUubyBsbGNwX2NvbW1hbmRzLm8gXFxcbm5ldC9uZmMvTWFrZWZpbGUtMTItXHRcdGxsY3Bfc29jay5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ1OAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTkZDIENvbXBpbGF0aW9uIExhbmRzY2FwZSoqCgpPa2F5LCBzbyBgbGxjcF9jb3JlLm9gIGltbWVkaWF0ZWx5IHN1Z2dlc3RzIE5GQyBpbnZvbHZlbWVudC4gSXQmIzM5O3MgbGlzdGVkIHVuZGVyIGBuZmMtb2Jqc2AsIHNvIHRoYXQmIzM5O3MgYSBwcmV0dHkgc3Ryb25nIGluZGljYXRvci4gTXkgaW50dWl0aW9uIHRlbGxzIG1lIHRoaXMgaXMgcHJvYmFibHkgbGlua2VkIHRvIHRoZSBgQ09ORklHX05GQ2AgY29uZmlndXJhdGlvbiBvcHRpb24uIE1ha2VzIHNlbnNlLCBnaXZlbiB0aGUgTkZDIG1vZHVsZSYjMzk7cyBvdmVyYWxsIHN0cnVjdHVyZS4gVGltZSB0byBkaXZlIGludG8gYG5ldC9uZmMvTWFrZWZpbGVgIGFuZCBjb25maXJtIHRoZXNlIGFzc3VtcHRpb25zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYnVpbGQgZGVwZW5kZW5jaWVzIGFuZCBjb25kaXRpb25zIGV4cGxpY2l0bHkgb3V0bGluZWQgdGhlcmUgdG8gZ2V0IGEgZnVsbCBwaWN0dXJlLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIE1ha2VmaWxlIHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZjLW9ianMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvTWFrZWZpbGU9OT1vYmotJChDT05GSUdfTkZDX0RJR0lUQUwpICYjNDM7PSBuZmNfZGlnaXRhbC5vXG5uZXQvbmZjL01ha2VmaWxlLTEwLVxubmV0L25mYy9NYWtlZmlsZToxMTpuZmMtb2JqcyA6PSBjb3JlLm8gbmV0bGluay5vIGFmX25mYy5vIHJhd3NvY2subyBsbGNwX2NvcmUubyBsbGNwX2NvbW1hbmRzLm8gXFxcbm5ldC9uZmMvTWFrZWZpbGUtMTItXHRcdGxsY3Bfc29jay5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc2OQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IHF1ZXN0aW9uOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBCdWlsZCBQcm9jZXNzIGZvciBORkMgQ29tcG9uZW50cyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgYG5mYy5vYCBvciBgbmZjLW9ianNgIGlzIGJlaW5nIGJ1aWx0LiBUaGlzIGxpa2VseSBwb2ludHMgdG8gYSBjb3JlIE5GQyBjb21wb25lbnQgb3IgYSBjb2xsZWN0aW9uIG9mIG9iamVjdCBmaWxlcy4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byB1bmRlcnN0YW5kIHRoZSBidWlsZCBzeXN0ZW0gaW52b2x2ZWQuIElzIGl0IGEgc3RhbmRhcmQgYG1ha2VgIHNldHVwLCBwZXJoYXBzIHVzaW5nIGEgYE1ha2VmaWxlYCwgb3IgYXJlIHdlIGRlYWxpbmcgd2l0aCBzb21ldGhpbmcgbW9yZSBzb3BoaXN0aWNhdGVkIGxpa2UgQ01ha2UsIEF1dG90b29scywgb3IgZXZlbiBhIGN1c3RvbSBidWlsZCBzY3JpcHQ/CgpJJiMzOTtkIHN0YXJ0IGJ5IGxvb2tpbmcgZm9yIGEgdG9wLWxldmVsIGBNYWtlZmlsZWAgb3IgYENNYWtlTGlzdHMudHh0YCBpbiB0aGUgcHJvamVjdCBkaXJlY3RvcnksIGFzc3VtaW5nIHRoaXMgaXMgYSBsYXJnZXIsIGVzdGFibGlzaGVkIHByb2plY3QuIFRoZSBnb2FsIGlzIHRvIHRyYWNlIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHRoZSBjb21tYW5kcyB0aGF0IGdlbmVyYXRlIHRob3NlIHNwZWNpZmljIG9iamVjdCBmaWxlcyBvciBhbiBvYmplY3QgZGlyZWN0b3J5LgoKSWYgaXQmIzM5O3MgYSBgTWFrZWZpbGVgLCBJ4oCZbGwgYmUgc2Nhbm5pbmcgZm9yIHRhcmdldHMgdGhhdCBtZW50aW9uIGBuZmMub2Agb3IgYG5mYy1vYmpzYCwgbG9va2luZyBmb3IgcmVsZXZhbnQgcnVsZXMgYW5kIGRlcGVuZGVuY2llcy4gSSYjMzk7ZCBiZSBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIGluY2x1ZGUgcGF0aHMsIGNvbXBpbGVyIGZsYWdzIChsaWtlIGAtSWAgYW5kIGAtRGApLCBhbmQgbGlua2VyIGZsYWdzLiBJJiMzOTtkIGFsc28gY2hlY2sgZm9yIHZhcmlhYmxlcyB0aGF0IG1pZ2h0IGJlIGludm9sdmVkLgoKSWYgaXQmIzM5O3MgQ01ha2UsIEkmIzM5O2Qgc2VhcmNoIGZvciBjb21tYW5kcyBsaWtlIGBhZGRfbGlicmFyeWAsIGB0YXJnZXRfc291cmNlc2AsIGB0YXJnZXRfaW5jbHVkZV9kaXJlY3Rvcmllc2AsIGFuZCwgY3JpdGljYWxseSwgdGhlIHdheSBgbmZjLm9gIG9yIGBuZmMtb2Jqc2AgaXMgYWRkZWQgdG8gdGhlIGJ1aWxkIHByb2Nlc3MuIEkgd291bGQgZXhwZWN0IHNvbWUgdmFyaWFibGUgd2lsbCBiZSB1c2VkIHRvIGdlbmVyYXRlIHRoZSBidWlsZCBwcm9jZXNzLgoKSWYgbm8gb2J2aW91cyBidWlsZCBzeXN0ZW0gaXMgYXBwYXJlbnQsIEkgbWF5IGdvIHRocm91Z2ggZmlsZSBuYW1lcyBhbmQgZ3Vlc3MgYXQgaG93IGl0IG1pZ2h0IGJlIGJ1aWx0LiBJIG1heSBhbHNvIGNoZWNrIHRoZSBzb3VyY2UgY29kZSBmb3IgYW55IGBNYWtlZmlsZWAgb3IgYENNYWtlTGlzdHMudHh0YCBmaWxlcywgb3IgYW55IHNpbWlsYXIgZmlsZXMuCgpFc3NlbnRpYWxseSwgSSYjMzk7bSBwZWVsaW5nIGJhY2sgdGhlIGxheWVycyBvZiB0aGUgYnVpbGQgc3lzdGVtIHRvIHVuY292ZXIgdGhlIGV4YWN0IHNlcXVlbmNlIG9mIHN0ZXBzIHRoYXQgcmVzdWx0IGluIHRob3NlIHNwZWNpZmljIG9iamVjdCBmaWxlcy4gVWx0aW1hdGVseSwga25vd2luZyB0aGF0IHBhdGggaXMgZXNzZW50aWFsIGZvciBhbnkgbW9kaWZpY2F0aW9ucyBvciBkZWVwZXIgdW5kZXJzdGFuZGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMToxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZmMubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25mYy9NYWtlZmlsZS01LVxubmV0L25mYy9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19ORkMpICYjNDM7PSBuZmMub1xubmV0L25mYy9NYWtlZmlsZS03LW9iai0kKENPTkZJR19ORkNfTkNJKSAmIzQzOz0gbmNpL1xuLS1cbm5ldC9uZmMvTWFrZWZpbGU9OT1vYmotJChDT05GSUdfTkZDX0RJR0lUQUwpICYjNDM7PSBuZmNfZGlnaXRhbC5vXG5uZXQvbmZjL01ha2VmaWxlLTEwLVxubmV0L25mYy9NYWtlZmlsZToxMTpuZmMtb2JqcyA6PSBjb3JlLm8gbmV0bGluay5vIGFmX25mYy5vIHJhd3NvY2subyBsbGNwX2NvcmUubyBsbGNwX2NvbW1hbmRzLm8gXFxcbm5ldC9uZmMvTWFrZWZpbGUtMTItXHRcdGxsY3Bfc29jay5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQxMgoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGV2YWx1YXRpbmcgdGhpcyBORkMgY29uZmlndXJhdGlvbjoKCioqQW5hbHl6aW5nIE5GQyBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBORkMgY29uZmlndXJhdGlvbiwgYW5kIGBDT05GSUdfTkZDYCBpcyB0aGUgbWFpbiB0b2dnbGUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgZWxzZSBpcyB0aWVkIHRvIGl0LiBMZXQmIzM5O3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgdmlydHVhbCBkcml2ZXJzIHRvIGNvbnNpZGVyLiBBcmUgd2UgdXNpbmcgYSBzaW11bGF0ZWQgb3IgdmlydHVhbCBORkMgaW50ZXJmYWNlPyBJIG5lZWQgdG8gY2hlY2sgZm9yIGBDT05GSUdfTkZDX1ZJUlRVQUxfTkNJYCBvciBwZXJoYXBzIGBDT05GSUdfTkZDX1NJTWAsIHRob3NlIGFyZSB1c3VhbGx5IHRoZSBrZXkgdmlydHVhbCBvcHRpb25zLgoKSSYjMzk7bGwgbmVlZCB0byBkcmlsbCBkb3duIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgdG8gZ2V0IGEgZ29vZCBoYW5kbGUgb24gdGhpcy4gVGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgaXMgdGhlIGBkcml2ZXJzL25mYy9gIGRpcmVjdG9yeS4gVGhhdCYjMzk7cyB3aGVyZSBhbGwgdGhlIE5GQy1yZWxhdGVkIGRyaXZlcnMgYW5kIG1vZHVsZXMgc2hvdWxkIGJlLiBUaGF0IGRpcmVjdG9yeSBzaG91bGQgYWxzbyBob2xkIHRoZSBmaWxlcyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQgb3B0aW9ucyBhcmUgYXZhaWxhYmxlIGFuZCBob3cgdGhleSYjMzk7cmUgcmVsYXRlZCB0byBgQ09ORklHX05GQ2AuIE5vdywgbGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHRoYXQgZGlyZWN0b3J5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMToxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25mYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDttZWlfcGh5LmMmIzM0OywKICAgICYjMzQ7bWVpX3BoeS5oJiMzNDssCiAgICAmIzM0O25mY3NpbS5jJiMzNDssCiAgICAmIzM0O3BvcnQxMDAuYyYjMzQ7LAogICAgJiMzNDt0cmY3OTcwYS5jJiMzNDssCiAgICAmIzM0O3ZpcnR1YWxfbmNpZGV2LmMmIzM0OwogIF0sCiAgJiMzNDtTdWJkaXJzJiMzNDs6IFsKICAgICYjMzQ7ZmRwJiMzNDssCiAgICAmIzM0O21pY3JvcmVhZCYjMzQ7LAogICAgJiMzNDtuZmNtcnZsJiMzNDssCiAgICAmIzM0O254cC1uY2kmIzM0OywKICAgICYjMzQ7cG41MzMmIzM0OywKICAgICYjMzQ7cG41NDQmIzM0OywKICAgICYjMzQ7czNmd3JuNSYjMzQ7LAogICAgJiMzNDtzdC1uY2kmIzM0OywKICAgICYjMzQ7c3QyMW5mY2EmIzM0OywKICAgICYjMzQ7c3Q5NWhmJiMzNDsKICBdCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg1NAoJCQkJCQkJb3V0cHV0OiA2MwoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246CgoqKkluaXRpYWwgQXNzZXNzbWVudCBvZiBWaXJ0dWFsIE5GQyBEcml2ZXJzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgbmZjc2ltLmNgIGFuZCBgdmlydHVhbF9uY2lkZXYuY2AuIFRoZSBuYW1pbmcgY29udmVudGlvbiBzdHJvbmdseSBzdWdnZXN0cyB0aGVzZSBhcmUgdmlydHVhbCBkcml2ZXJzIGZvciBORkMgZGV2aWNlcywgd2hpY2ggaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBNeSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gYXNwZWN0cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBwYXJhbWV0ZXJzIGFuZCBzZXR0aW5ncyB0aGVzZSBkcml2ZXJzIGFyZSBleHBlY3RpbmcuIFRoYXQgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgcHJvcGVyIGludGVncmF0aW9uLCBlbXVsYXRpb24gc2V0dXAsIGFuZCBkZWJ1Z2dpbmcuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgY29uZmlndXJhdGlvbnMgcmV2ZWFsIGFib3V0IHRoZWlyIGludGVuZGVkIHVzZSBjYXNlcyBhbmQgdW5kZXJseWluZyBhc3N1bXB0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZjc2ltLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9NYWtlZmlsZT0xMD1vYmotJChDT05GSUdfTkZDX01FSV9QSFkpXHQmIzQzOz0gbWVpX3BoeS5vXG5kcml2ZXJzL25mYy9NYWtlZmlsZToxMTpvYmotJChDT05GSUdfTkZDX1NJTSlcdFx0JiM0Mzs9IG5mY3NpbS5vXG5kcml2ZXJzL25mYy9NYWtlZmlsZS0xMi1vYmotJChDT05GSUdfTkZDX1BPUlQxMDApXHQmIzQzOz0gcG9ydDEwMC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZpcnR1YWxfbmNpZGV2Lm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9NYWtlZmlsZT0xOT1vYmotJChDT05GSUdfTkZDX1NUOTVIRilcdCYjNDM7PSBzdDk1aGYvXG5kcml2ZXJzL25mYy9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfTkZDX1ZJUlRVQUxfTkNJKVx0JiM0Mzs9IHZpcnR1YWxfbmNpZGV2Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI0NQoJCQkJCQkJb3V0cHV0OiA2NwoJCQkJCQkJdGhvdWdodHM6IDY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk5GQyBGdXp6aW5nIENvbmZpZ3VyYXRpb24gVGhvdWdodHMqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZywgdG8gZ2V0IGEgc29saWQgTkZDIGZ1enppbmcgc2V0dXAgZ29pbmcsIEkgc2hvdWxkIGRlZmluaXRlbHkgZW5hYmxlIGBDT05GSUdfTkZDX1NJTWAgYW5kIGBDT05GSUdfTkZDX1ZJUlRVQUxfTkNJYC4gVGhvc2Ugc2VlbSBsaWtlIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50cy4gVGhleSBzaG91bGQgZ2l2ZSBtZSBzb21lIHNvbGlkIHRvb2xzIHRvIHdvcmsgd2l0aCBmb3IgdGVzdGluZy4gQnV0IGJlZm9yZSBJIGdvIHRvbyBmYXIgZG93biB0aGF0IHJvYWQsIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgc29tZXRoaW5nLiBMZXQmIzM5O3MgbWFrZSBzdXJlIHRoYXQgYE5GQ19TSU1gIG9yIGBORkNfVklSVFVBTF9OQ0lgIGRvbiYjMzk7dCBoYXZlIGEgZGlyZWN0IGRlcGVuZGVuY3kgb24gYE5GQ2AgaXRzZWxmLiBJIG5lZWQgdG8ga25vdyBpZiBJJiMzOTtsbCBuZWVkIHRvIGVuYWJsZSB0aGF0IHRvcC1sZXZlbCBjb25maWcgZmlyc3QuIEdvdHRhIGNvdmVyIGFsbCB0aGUgYmFzZXMgdG8gYXZvaWQgYW55IHVuZXhwZWN0ZWQgYnVpbGQgZXJyb3JzIG9yIHNldHVwIGlzc3VlcyBsYXRlciBvbi4gTmVlZCB0byBtYWtlIHN1cmUgdGhlIGZvdW5kYXRpb25zIGFyZSBzdGFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORkNfU0lNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9LY29uZmlnPTIxPWNvbmZpZyBORkNfTUVJX1BIWVxuLS1cbmRyaXZlcnMvbmZjL0tjb25maWctMzAtXG5kcml2ZXJzL25mYy9LY29uZmlnOjMxOmNvbmZpZyBORkNfU0lNXG5kcml2ZXJzL25mYy9LY29uZmlnLTMyLVx0dHJpc3RhdGUgXCYjMzQ7TkZDIGhhcmR3YXJlIHNpbXVsYXRvciBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GQ19WSVJUVUFMX05DSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvS2NvbmZpZz00Mj1jb25maWcgTkZDX1BPUlQxMDBcbi0tXG5kcml2ZXJzL25mYy9LY29uZmlnLTUxLVxuZHJpdmVycy9uZmMvS2NvbmZpZzo1Mjpjb25maWcgTkZDX1ZJUlRVQUxfTkNJXG5kcml2ZXJzL25mYy9LY29uZmlnLTUzLVx0dHJpc3RhdGUgXCYjMzQ7TkNJIGRldmljZSBzaW11bGF0b3IgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3MjQKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIFJlY2VpdmluZyBGdW5jdGlvbnMgaW4gTExDUCoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlIHJlY2VpdmluZyBmdW5jdGlvbnMgd2l0aGluIHRoZSBMTENQIGltcGxlbWVudGF0aW9uLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBkYXRhIGlzIGhhbmRsZWQgYXQgdGhlIGxvd2VyIGxheWVycyBvZiB0aGUgTkZDIHN0YWNrLiBTcGVjaWZpY2FsbHksIEkgd2FudCB0byB0YWtlIGEgY2xvc2UgbG9vayBhdCBgX19uZmNfbGxjcF9yZWN2YCBhbmQgYG5mY19sbGNwX3JlY3ZgLiBJJiMzOTttIGN1cmlvdXMgYWJvdXQgdGhlIGRpc3RpbmN0aW9uIGFuZCBpbnRlcnBsYXkgYmV0d2VlbiB0aG9zZSBmdW5jdGlvbiBuYW1lcy4gQXJlIHdlIGxvb2tpbmcgYXQgYSBsb3ctbGV2ZWwsIGludGVybmFsIGhlbHBlciB2ZXJzdXMgYSBoaWdoZXItbGV2ZWwsIG1vcmUgdXNlci1mYWNpbmcgZW50cnkgcG9pbnQ/IEkmIzM5O2xsIHByb2JhYmx5IGNoZWNrIHRoZSBjb250ZXh0IHRoZXkmIzM5O3JlIHVzZWQgaW4gd2l0aGluIHRoZSBkcml2ZXIgdG8gZGV0ZXJtaW5lIHRoZWlyIGRpc3RpbmN0aW9uLiBXaGF0JiMzOTtzIHRoZSBxdWV1ZSBtYW5hZ2VtZW50IGxpa2U/IEludGVycnVwdCBoYW5kbGluZz8gRXJyb3IgY29uZGl0aW9ucz8gSG93IGRvZXMgdGhlIGNvcmUgbG9naWMgZGlmZmVyIGJldHdlZW4gdGhlc2UgZnVuY3Rpb24gaW1wbGVtZW50YXRpb25zPyBJIG5lZWQgdG8gYmUgc3VyZSB0aGF0IEkgYW0gdXAgdG8gZGF0ZSB3aXRoIHRoZSByZWNlaXZpbmcgZmxvdy4gSSB3aWxsIGJlZ2luIGJ5IGV4YW1pbmluZyB0aGUgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19uZmNfbGxjcF9yZWN2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25mYy9sbGNwX2NvcmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL2xsY3BfY29yZS5jPTE1NDM9c3RhdGljIHZvaWQgbmZjX2xsY3Bfcnhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTY1LVxubmV0L25mYy9sbGNwX2NvcmUuYzoxNTY2OnN0YXRpYyB2b2lkIF9fbmZjX2xsY3BfcmVjdihzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTY3LXtcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jPTE1Nzg9dm9pZCBuZmNfbGxjcF9yZWN2KHZvaWQgKmRhdGEsIHN0cnVjdCBza19idWZmICpza2IsIGludCBlcnIpXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTg2LVxubmV0L25mYy9sbGNwX2NvcmUuYzoxNTg3Olx0X19uZmNfbGxjcF9yZWN2KGxvY2FsLCBza2IpO1xubmV0L25mYy9sbGNwX2NvcmUuYy0xNTg4LX1cbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jPTE1OTA9aW50IG5mY19sbGNwX2RhdGFfcmVjZWl2ZWQoc3RydWN0IG5mY19kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1OTktXG5uZXQvbmZjL2xsY3BfY29yZS5jOjE2MDA6XHRfX25mY19sbGNwX3JlY3YobG9jYWwsIHNrYik7XG5uZXQvbmZjL2xsY3BfY29yZS5jLTE2MDEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzNjUKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZSB3aGF0IEkmIzM5O20gdGhpbmtpbmcgaGVyZS4KCioqVHJhY2luZyB0aGUgQ2FsbCBQYXRoIG9mIGBuZmNfbGxjcF9yZWN2YCoqCgpBbHJpZ2h0LCBzbyBgX19uZmNfbGxjcF9yZWN2YCBpcyBvbiB0aGUgcmVjZWl2aW5nIGVuZCwgY2FsbGVkIGJ5IGJvdGggYG5mY19sbGNwX3JlY3ZgIGFuZCBgbmZjX2xsY3BfZGF0YV9yZWNlaXZlZGAuIFRoYXQgbXVjaCBpcyBjbGVhci4gVGhlIG5leHQgbG9naWNhbCBzdGVwLCBpbiBteSBsaW5lIG9mIGludmVzdGlnYXRpb24sIGlzIHRvIHVuZGVyc3RhbmQgdGhlIG9yaWdpbiBvZiAqdGhvc2UqIGNhbGxzLiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIGBuZmNfbGxjcF9yZWN2YCB0byBmaWd1cmUgb3V0IHdoZXJlIGl0JiMzOTtzIGJlaW5nIGludm9rZWQuIEtub3dpbmcgdGhlIGNhbGwgZ3JhcGggd2lsbCBnaXZlIG1lIHRoZSBiaWdnZXIgcGljdHVyZSBvZiB0aGUgZGF0YSBmbG93IGFuZCBob3cgdGhpcyBmdW5jdGlvbiBmaXRzIGludG8gdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLiBUaW1lIHRvIGRpZyBhIGJpdCBkZWVwZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mY19sbGNwX3JlY3YmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL2xsY3AuaD0yMjM9aW50IG5mY19sbGNwX3BhcnNlX2Nvbm5lY3Rpb25fdGx2KHN0cnVjdCBuZmNfbGxjcF9zb2NrICpzb2NrLFxuLS1cbm5ldC9uZmMvbGxjcC5oLTIyNi0vKiBDb21tYW5kcyBBUEkgKi9cbm5ldC9uZmMvbGxjcC5oOjIyNzp2b2lkIG5mY19sbGNwX3JlY3Yodm9pZCAqZGF0YSwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGVycik7XG5uZXQvbmZjL2xsY3AuaC0yMjgtdTggKm5mY19sbGNwX2J1aWxkX3Rsdih1OCB0eXBlLCBjb25zdCB1OCAqdmFsdWUsIHU4IHZhbHVlX2xlbmd0aCwgdTggKnRsdl9sZW5ndGgpO1xuLS1cbm5ldC9uZmMvbGxjcC5oPTIzMz12b2lkIG5mY19sbGNwX2ZyZWVfc2RwX3Rsdl9saXN0KHN0cnVjdCBobGlzdF9oZWFkICpzZHBfaGVhZCk7XG5uZXQvbmZjL2xsY3AuaDoyMzQ6dm9pZCBuZmNfbGxjcF9yZWN2KHZvaWQgKmRhdGEsIHN0cnVjdCBza19idWZmICpza2IsIGludCBlcnIpO1xubmV0L25mYy9sbGNwLmgtMjM1LWludCBuZmNfbGxjcF9zZW5kX3N5bW0oc3RydWN0IG5mY19kZXYgKmRldik7XG4tLVxubmV0L25mYy9sbGNwX2NvbW1hbmRzLmM9MzcxPWludCBuZmNfbGxjcF9zZW5kX3N5bW0oc3RydWN0IG5mY19kZXYgKmRldilcbi0tXG5uZXQvbmZjL2xsY3BfY29tbWFuZHMuYy0zOTktXHRlcnIgPSBuZmNfZGF0YV9leGNoYW5nZShkZXYsIGxvY2FsLVx1MDAzZXRhcmdldF9pZHgsIHNrYixcbm5ldC9uZmMvbGxjcF9jb21tYW5kcy5jOjQwMDpcdFx0XHRcdCBuZmNfbGxjcF9yZWN2LCBsb2NhbCk7XG5uZXQvbmZjL2xsY3BfY29tbWFuZHMuYy00MDEtb3V0OlxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmM9NzYxPXN0YXRpYyB2b2lkIG5mY19sbGNwX3R4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtNzk3LVx0XHRcdHJldCA9IG5mY19kYXRhX2V4Y2hhbmdlKGxvY2FsLVx1MDAzZWRldiwgbG9jYWwtXHUwMDNldGFyZ2V0X2lkeCxcbm5ldC9uZmMvbGxjcF9jb3JlLmM6Nzk4Olx0XHRcdFx0XHRcdHNrYiwgbmZjX2xsY3BfcmVjdiwgbG9jYWwpO1xubmV0L25mYy9sbGNwX2NvcmUuYy03OTktXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYz04NDk9c3RhdGljIGNvbnN0IHU4ICpuZmNfbGxjcF9jb25uZWN0X3NuKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHNpemVfdCAqc25fbGVuKVxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtODcyLVxubmV0L25mYy9sbGNwX2NvcmUuYzo4NzM6c3RhdGljIHZvaWQgbmZjX2xsY3BfcmVjdl91aShzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLFxubmV0L25mYy9sbGNwX2NvcmUuYy04NzQtXHRcdFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtOTA4LVxubmV0L25mYy9sbGNwX2NvcmUuYzo5MDk6c3RhdGljIHZvaWQgbmZjX2xsY3BfcmVjdl9jb25uZWN0KHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsXG5uZXQvbmZjL2xsY3BfY29yZS5jLTkxMC1cdFx0XHRcdCAgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jPTEwNDA9aW50IG5mY19sbGNwX3F1ZXVlX2lfZnJhbWVzKHN0cnVjdCBuZmNfbGxjcF9zb2NrICpzb2NrKVxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTA2Ny1cbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTA2ODpzdGF0aWMgdm9pZCBuZmNfbGxjcF9yZWN2X2hkbGMoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTA2OS1cdFx0XHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jLTExNTUtXG5uZXQvbmZjL2xsY3BfY29yZS5jOjExNTY6c3RhdGljIHZvaWQgbmZjX2xsY3BfcmVjdl9kaXNjKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsXG5uZXQvbmZjL2xsY3BfY29yZS5jLTExNTctXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy0xMjAwLVxubmV0L25mYy9sbGNwX2NvcmUuYzoxMjAxOnN0YXRpYyB2b2lkIG5mY19sbGNwX3JlY3ZfY2Moc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTIwMi1cdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy0xMjQ1LVxubmV0L25mYy9sbGNwX2NvcmUuYzoxMjQ2OnN0YXRpYyB2b2lkIG5mY19sbGNwX3JlY3ZfZG0oc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTI0Ny1cdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy0xMjgzLVxubmV0L25mYy9sbGNwX2NvcmUuYzoxMjg0OnN0YXRpYyB2b2lkIG5mY19sbGNwX3JlY3Zfc25sKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsXG5uZXQvbmZjL2xsY3BfY29yZS5jLTEyODUtXHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE0MzUtXG5uZXQvbmZjL2xsY3BfY29yZS5jOjE0MzY6c3RhdGljIHZvaWQgbmZjX2xsY3BfcmVjdl9hZ2Yoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTQzNy17XG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYz0xNDgwPXN0YXRpYyB2b2lkIG5mY19sbGNwX3J4X3NrYihzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTUwMC1cdFx0cHJfZGVidWcoXCYjMzQ7VUlcXG5cJiMzNDspO1xubmV0L25mYy9sbGNwX2NvcmUuYzoxNTAxOlx0XHRuZmNfbGxjcF9yZWN2X3VpKGxvY2FsLCBza2IpO1xubmV0L25mYy9sbGNwX2NvcmUuYy0xNTAyLVx0XHRicmVhaztcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1MDUtXHRcdHByX2RlYnVnKFwmIzM0O0NPTk5FQ1RcXG5cJiMzNDspO1xubmV0L25mYy9sbGNwX2NvcmUuYzoxNTA2Olx0XHRuZmNfbGxjcF9yZWN2X2Nvbm5lY3QobG9jYWwsIHNrYik7XG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1MDctXHRcdGJyZWFrO1xuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTUxMC1cdFx0cHJfZGVidWcoXCYjMzQ7RElTQ1xcblwmIzM0Oyk7XG5uZXQvbmZjL2xsY3BfY29yZS5jOjE1MTE6XHRcdG5mY19sbGNwX3JlY3ZfZGlzYyhsb2NhbCwgc2tiKTtcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTUxMi1cdFx0YnJlYWs7XG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTE1LVx0XHRwcl9kZWJ1ZyhcJiMzNDtDQ1xcblwmIzM0Oyk7XG5uZXQvbmZjL2xsY3BfY29yZS5jOjE1MTY6XHRcdG5mY19sbGNwX3JlY3ZfY2MobG9jYWwsIHNrYik7XG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1MTctXHRcdGJyZWFrO1xuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTUyMC1cdFx0cHJfZGVidWcoXCYjMzQ7RE1cXG5cJiMzNDspO1xubmV0L25mYy9sbGNwX2NvcmUuYzoxNTIxOlx0XHRuZmNfbGxjcF9yZWN2X2RtKGxvY2FsLCBza2IpO1xubmV0L25mYy9sbGNwX2NvcmUuYy0xNTIyLVx0XHRicmVhaztcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1MjUtXHRcdHByX2RlYnVnKFwmIzM0O1NOTFxcblwmIzM0Oyk7XG5uZXQvbmZjL2xsY3BfY29yZS5jOjE1MjY6XHRcdG5mY19sbGNwX3JlY3Zfc25sKGxvY2FsLCBza2IpO1xubmV0L25mYy9sbGNwX2NvcmUuYy0xNTI3LVx0XHRicmVhaztcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1MzItXHRcdHByX2RlYnVnKFwmIzM0O0kgZnJhbWVcXG5cJiMzNDspO1xubmV0L25mYy9sbGNwX2NvcmUuYzoxNTMzOlx0XHRuZmNfbGxjcF9yZWN2X2hkbGMobG9jYWwsIHNrYik7XG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1MzQtXHRcdGJyZWFrO1xuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTUzNy1cdFx0cHJfZGVidWcoXCYjMzQ7QUdGIGZyYW1lXFxuXCYjMzQ7KTtcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTUzODpcdFx0bmZjX2xsY3BfcmVjdl9hZ2YobG9jYWwsIHNrYik7XG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1MzktXHRcdGJyZWFrO1xuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmM9MTU0Mz1zdGF0aWMgdm9pZCBuZmNfbGxjcF9yeF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1NjUtXG5uZXQvbmZjL2xsY3BfY29yZS5jOjE1NjY6c3RhdGljIHZvaWQgX19uZmNfbGxjcF9yZWN2KHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1Njcte1xuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTU3Ny1cbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTU3ODp2b2lkIG5mY19sbGNwX3JlY3Yodm9pZCAqZGF0YSwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGVycilcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTU3OS17XG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTg2LVxubmV0L25mYy9sbGNwX2NvcmUuYzoxNTg3Olx0X19uZmNfbGxjcF9yZWN2KGxvY2FsLCBza2IpO1xubmV0L25mYy9sbGNwX2NvcmUuYy0xNTg4LX1cbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jPTE1OTA9aW50IG5mY19sbGNwX2RhdGFfcmVjZWl2ZWQoc3RydWN0IG5mY19kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1OTktXG5uZXQvbmZjL2xsY3BfY29yZS5jOjE2MDA6XHRfX25mY19sbGNwX3JlY3YobG9jYWwsIHNrYik7XG5uZXQvbmZjL2xsY3BfY29yZS5jLTE2MDEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgwNzcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aGUgZXhwZXJ0OgoKKipVbmRlcnN0YW5kaW5nIHRoZSBMTENQIERhdGEgRmxvdyoqCgpPa2F5LCBzbyBJJiMzOTttIHRyeWluZyB0byBwaW4gZG93biB0aGUgZGF0YSBlbnRyeSBwb2ludHMgZm9yIHRoZSBMTENQIChMaW5rIExheWVyIENvbnRyb2wgUHJvdG9jb2wpIGluIHRoaXMgTkZDIGltcGxlbWVudGF0aW9uLiBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBkYXRhIHJlY2VwdGlvbiBwYXRoLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBoaW5nZSBvbiB0d28gZnVuY3Rpb25zOiBgbmZjX2xsY3BfZGF0YV9yZWNlaXZlZGAgYW5kIGBuZmNfbGxjcF9yZWN2YC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0aGF0IGBuZmNfbGxjcF9kYXRhX3JlY2VpdmVkYCB3YXMgbGlrZWx5IGEgY2FsbGJhY2sgdHJpZ2dlcmVkIGR1cmluZyBkYXRhIGV4Y2hhbmdlLCBtYXliZSBvcmlnaW5hdGluZyBmcm9tIHNvbWV0aGluZyBsaWtlIGBuZmNfZGF0YV9leGNoYW5nZWAuIEJ1dCB0aGF0JiMzOTtzIG5vdCBxdWl0ZSByaWdodC4gQWZ0ZXIgYSBxdWljayBsb29rLCBpdCYjMzk7cyBhY3R1YWxseSBhbiBleHBvcnRlZCBmdW5jdGlvbiwgd2hpY2ggY2hhbmdlcyB0aGUgcGljdHVyZSBzbGlnaHRseSwgYW5kIHRlbGxzIG1lIHRoZSBkZXNpZ24gaXMgYSBiaXQgZGlmZmVyZW50LiBJJiMzOTtsbCBuZWVkIHRvIGdvIGRlZXBlciBpbnRvIHRoZSBjYWxsIGhpZXJhcmNoeSB0byB1bmRlcnN0YW5kICpob3cqIGl0JiMzOTtzIGJlaW5nIGNhbGxlZCwgYnV0IHRoaXMgYXQgbGVhc3QgZ2l2ZXMgbWUgYSBrZXkgZW50cnkgcG9pbnQgdG8gdHJhY2UgdGhlIGRhdGEgZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZjX2xsY3BfZGF0YV9yZWNlaXZlZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvY29yZS5jPTY1NT1pbnQgbmZjX3RtX2RhdGFfcmVjZWl2ZWQoc3RydWN0IG5mY19kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvbmZjL2NvcmUuYy02NjItXG5uZXQvbmZjL2NvcmUuYzo2NjM6XHRyZXR1cm4gbmZjX2xsY3BfZGF0YV9yZWNlaXZlZChkZXYsIHNrYik7XG5uZXQvbmZjL2NvcmUuYy02NjQtfVxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmM9MTU3OD12b2lkIG5mY19sbGNwX3JlY3Yodm9pZCAqZGF0YSwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGVycilcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1ODktXG5uZXQvbmZjL2xsY3BfY29yZS5jOjE1OTA6aW50IG5mY19sbGNwX2RhdGFfcmVjZWl2ZWQoc3RydWN0IG5mY19kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTU5MS17XG4tLVxubmV0L25mYy9uZmMuaD01Mj11OCAqbmZjX2xsY3BfZ2VuZXJhbF9ieXRlcyhzdHJ1Y3QgbmZjX2RldiAqZGV2LCBzaXplX3QgKmdlbmVyYWxfYnl0ZXNfbGVuKTtcbm5ldC9uZmMvbmZjLmg6NTM6aW50IG5mY19sbGNwX2RhdGFfcmVjZWl2ZWQoc3RydWN0IG5mY19kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5uZXQvbmZjL25mYy5oLTU0LXN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbmZjX2xsY3BfZmluZF9sb2NhbChzdHJ1Y3QgbmZjX2RldiAqZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODc0OAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkRlY29uc3RydWN0aW5nIHRoZSBEYXRhIEZsb3cqKgoKUmlnaHQsIHNvIEkmIzM5O20gdHJ5aW5nIHRvIGdldCBhIGhhbmRsZSBvbiB0aGlzIHN5c3RlbS4gSXQmIzM5O3MgY2xlYXIgdGhhdCBgbmZjX3RtX2RhdGFfcmVjZWl2ZWRgIGlzIGEgY3JpdGljYWwgZnVuY3Rpb24uIFRoZSBpbXBsaWNhdGlvbiBoZXJlIGlzIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyAqdHJpZ2dlcmVkKiBvciAqaW52b2tlZCogZnJvbSB3aXRoaW4gdGhlIGRyaXZlcnMgdGhlbXNlbHZlcy4gVGhpcyBpcyBzaWduaWZpY2FudC4gSXQgdGVsbHMgbWUgdGhhdCB0aGUgbG93LWxldmVsIGludGVyYWN0aW9uIHdpdGggdGhlIE5GQyBoYXJkd2FyZSwgdGhlIGFjdHVhbCBieXRlLWxldmVsIGNvbW11bmljYXRpb24sIGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGVzZSBkcml2ZXJzLiBUaGUgZGF0YSBwcm9jZXNzaW5nIGFuZCBpbnRlcnByZXRhdGlvbiBsaWtlbHkgYmVnaW5zIHdpdGhpbiB0aGUgZHJpdmVyLCB0aGVuIGNhbGxzIHRoaXMgYG5mY190bV9kYXRhX3JlY2VpdmVkYCBmdW5jdGlvbiB0byBwYXNzIHRoZSByZWxldmFudCBpbmZvcm1hdGlvbiB1cHdhcmRzLiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoYXQgZnVuY3Rpb24gY2FsbCB0byB0aGUgc3BlY2lmaWMgZHJpdmVyKHMpIGludm9sdmVkIHRvIHJlYWxseSB1bmRlcnN0YW5kIHRoZSBkYXRhIHBpcGVsaW5lLiBVbmRlcnN0YW5kaW5nIHRoaXMgd2lsbCBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mY190bV9kYXRhX3JlY2VpdmVkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL21pY3JvcmVhZC9taWNyb3JlYWQuYz01NDc9c3RhdGljIGludCBtaWNyb3JlYWRfZXZlbnRfcmVjZWl2ZWQoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LCB1OCBwaXBlLFxuLS1cbmRyaXZlcnMvbmZjL21pY3JvcmVhZC9taWNyb3JlYWQuYy01NzMtXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvbWljcm9yZWFkLmM6NTc0Olx0XHRyID0gbmZjX3RtX2RhdGFfcmVjZWl2ZWQoaGRldi1cdTAwM2VuZGV2LCBza2IpO1xuZHJpdmVycy9uZmMvbWljcm9yZWFkL21pY3JvcmVhZC5jLTU3NS1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZmMvbWljcm9yZWFkL21pY3JvcmVhZC5jLTYwMi1cbmRyaXZlcnMvbmZjL21pY3JvcmVhZC9taWNyb3JlYWQuYzo2MDM6XHRcdHIgPSBuZmNfdG1fZGF0YV9yZWNlaXZlZChoZGV2LVx1MDAzZW5kZXYsIHNrYik7XG5kcml2ZXJzL25mYy9taWNyb3JlYWQvbWljcm9yZWFkLmMtNjA0LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25mYy9wbjUzMy9wbjUzMy5jPTEwNzE9c3RhdGljIGludCBwbjUzM190bV9nZXRfZGF0YV9jb21wbGV0ZShzdHJ1Y3QgcG41MzMgKmRldiwgdm9pZCAqYXJnLFxuLS1cbmRyaXZlcnMvbmZjL3BuNTMzL3BuNTMzLmMtMTEwNy1cbmRyaXZlcnMvbmZjL3BuNTMzL3BuNTMzLmM6MTEwODpcdHJldHVybiBuZmNfdG1fZGF0YV9yZWNlaXZlZChkZXYtXHUwMDNlbmZjX2Rldiwgc2tiKTtcbmRyaXZlcnMvbmZjL3BuNTMzL3BuNTMzLmMtMTEwOS1cbi0tXG5kcml2ZXJzL25mYy9wbjU0NC9wbjU0NC5jPTcxNT1zdGF0aWMgaW50IHBuNTQ0X2hjaV9ldmVudF9yZWNlaXZlZChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsIHU4IHBpcGUsIHU4IGV2ZW50LFxuLS1cbmRyaXZlcnMvbmZjL3BuNTQ0L3BuNTQ0LmMtNzU4LVx0XHRza2JfcHVsbChza2IsIDIpO1xuZHJpdmVycy9uZmMvcG41NDQvcG41NDQuYzo3NTk6XHRcdHJldHVybiBuZmNfdG1fZGF0YV9yZWNlaXZlZChoZGV2LVx1MDAzZW5kZXYsIHNrYik7XG5kcml2ZXJzL25mYy9wbjU0NC9wbjU0NC5jLTc2MC1cdGRlZmF1bHQ6XG4tLVxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmM9MzA0PXN0YXRpYyBpbnQgc3QyMW5mY2FfdG1fcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldixcbi0tXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYy0zNDItXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYzozNDM6XHRyZXR1cm4gbmZjX3RtX2RhdGFfcmVjZWl2ZWQoaGRldi1cdTAwM2VuZGV2LCBza2IpO1xuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmMtMzQ0LX1cbi0tXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYz01NTM9c3RhdGljIHZvaWQgc3QyMW5mY2FfaW1fcmVjdl9kZXBfcmVzX2NiKHZvaWQgKmNvbnRleHQsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmMtNTk0LVx0XHRcdHNrYl9wdWxsKHNrYiwgc2l6ZSk7XG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYzo1OTU6XHRcdFx0bmZjX3RtX2RhdGFfcmVjZWl2ZWQoaW5mby1cdTAwM2VoZGV2LVx1MDAzZW5kZXYsIHNrYik7XG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYy01OTYtXHRcdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk3NzcKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgRGF0YSBGbG93IGluIE5GQyBSZWNlcHRpb24qKgoKUmlnaHQsIHNvIGBuZmNfdG1fZGF0YV9yZWNlaXZlZGAgaXMgdGhlIGNydWNpYWwgZnVuY3Rpb24sIHRoZSBlbnRyeSBwb2ludCBmb3IgaGFuZGxpbmcgaW5jb21pbmcgZGF0YSBmcm9tIHRoZSBwaHlzaWNhbCBORkMgZHJpdmVycy4gVGhhdCYjMzk7cyBjbGVhci4gQnV0IG5vdyBJIG5lZWQgdG8gdHJhY2UgKmFsbCogdGhlIHBvc3NpYmxlIGRhdGEgcGF0aHMuIEkmIzM5O3ZlIGdvdCB0byBjb25zaWRlciBub3QganVzdCB0aGUgb2J2aW91cyBoYXJkd2FyZSBpbnRlcmFjdGlvbnMgYnV0IGFsc28gdGhlIHNpbXVsYXRpb24gZW52aXJvbm1lbnRzLiBTcGVjaWZpY2FsbHksIHdoYXQgYWJvdXQgdGhlIHNpbXVsYXRlZCBORkMgbGF5ZXJzPyBIb3cgZG9lcyB0aGUgZGF0YSBwcm9wYWdhdGUgdGhyb3VnaCBgbmZjc2ltYCBvciBgdmlydHVhbF9uY2lkZXZgPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGV5IGFsc28gY2FsbCBgbmZjX3RtX2RhdGFfcmVjZWl2ZWRgIChvciBhbiBlcXVpdmFsZW50KSBhbmQgaG93IHRoZWlyIGRhdGEgZ2V0cyBwYXNzZWQgdG8gdGhhdCBwb2ludC4gVGhpcyBpcyBjcnVjaWFsIGZvciB2ZXJpZnlpbmcgdGhlIHJvYnVzdG5lc3Mgb2YgdGhlIHN5c3RlbTsgdG8gZW5zdXJlIHRoYXQgYWxsIGRhdGEgaXMgaGFuZGxlZCBjb25zaXN0ZW50bHksIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBvcmlnaW5hdGVzIGZyb20gYSBwaHlzaWNhbCBjaGlwIG9yIGEgc2ltdWxhdGlvbi4gVGhpcyBpcyB0aGUga2V5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMToyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZmNfdG1fZGF0YV9yZWNlaXZlZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvY29yZS5jPTY1Mz1FWFBPUlRfU1lNQk9MKG5mY19nZXRfbG9jYWxfZ2VuZXJhbF9ieXRlcyk7XG5uZXQvbmZjL2NvcmUuYy02NTQtXG5uZXQvbmZjL2NvcmUuYzo2NTU6aW50IG5mY190bV9kYXRhX3JlY2VpdmVkKHN0cnVjdCBuZmNfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvbmZjL2NvcmUuYy02NTYte1xuLS1cbm5ldC9uZmMvY29yZS5jLTY2NC19XG5uZXQvbmZjL2NvcmUuYzo2NjU6RVhQT1JUX1NZTUJPTChuZmNfdG1fZGF0YV9yZWNlaXZlZCk7XG5uZXQvbmZjL2NvcmUuYy02NjYtXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTEwNzc9c3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMjc0LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEyNzU6XHRyYyA9IG5mY190bV9kYXRhX3JlY2VpdmVkKGRkZXYtXHUwMDNlbmZjX2RldiwgcmVzcCk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTI3Ni1cdGlmIChyYylcbi0tXG5uZXQvbmZjL25jaS9kYXRhLmM9MjE0PXN0YXRpYyB2b2lkIG5jaV9hZGRfcnhfZGF0YV9mcmFnKHN0cnVjdCBuY2lfZGV2ICpuZGV2LFxuLS1cbm5ldC9uZmMvbmNpL2RhdGEuYy0yNjEtXHRcdC8qIERhdGEgcmVjZWl2ZWQgaW4gVGFyZ2V0IG1vZGUsIGZvcndhcmQgdG8gbmZjIGNvcmUgKi9cbm5ldC9uZmMvbmNpL2RhdGEuYzoyNjI6XHRcdGVyciA9IG5mY190bV9kYXRhX3JlY2VpdmVkKG5kZXYtXHUwMDNlbmZjX2Rldiwgc2tiKTtcbm5ldC9uZmMvbmNpL2RhdGEuYy0yNjMtXHRcdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNDcxCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMzM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBORkMgRGF0YSBSZWNlcHRpb24gUGF0aHMqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gTkZDIGRhdGEgcmVjZXB0aW9uIGFuZCB0cnlpbmcgdG8gaWRlbnRpZnkga2V5IGVudHJ5IHBvaW50cy4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgdGFrZXMgbWUgdGhyb3VnaCBgbmNpX2FkZF9yeF9kYXRhX2ZyYWdgIGluIGBuZXQvbmZjL25jaS9kYXRhLmNgLiBJIHNlZSBpdCB1bHRpbWF0ZWx5IGNhbGxzIGBuZmNfdG1fZGF0YV9yZWNlaXZlZGAuIFNpbmNlIGBuY2lfYWRkX3J4X2RhdGFfZnJhZ2AgaXMgcGFydCBvZiB0aGUgTkNJIGxheWVyLCB3aGljaCBjYW4gYmUgaW5zdGFudGlhdGVkIGJ5IHNvbWV0aGluZyBsaWtlIGB2aXJ0dWFsX25jaWRldmAsIEkmIzM5O20gbG9va2luZyBmb3IgYSBjb25maWd1cmF0aW9uIHRoYXQgaW5jbHVkZXMgZWl0aGVyIGBDT05GSUdfTkZDX1ZJUlRVQUxfTkNJYCBvciBgQ09ORklHX05GQ19OQ0lgLiBUaG9zZSBzZWVtIGxpa2Ugc29saWQgb3B0aW9ucyB0byBzdGFydCB3aXRoLgoKSSBhbHNvIHNlZSB0aGF0IGBDT05GSUdfTkZDX1NJTWAgdXRpbGl6ZXMgdGhlIGBuZmNfZGlnaXRhbGAgbW9kdWxlLiBJbiB0aGF0IG1vZHVsZSwgYGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxYCBhbHNvIGNhbGxzIGBuZmNfdG1fZGF0YV9yZWNlaXZlZGAuIFNvLCBgQ09ORklHX05GQ19TSU1gIGFuZCBgQ09ORklHX05GQ19ESUdJVEFMYCBhcmUgd29ydGggY29uc2lkZXJpbmcgYXMgd2VsbC4KCk5vdywgSSYjMzk7bSBzaGlmdGluZyBteSBhdHRlbnRpb24gdG8gTExDUCBhbmQgaXRzIHJvbGUgaW4gaGFuZGxpbmcgcmVjZWl2ZWQgZGF0YS4gTGV0JiMzOTtzIHNlZS4uLkkmIzM5O20gZ29pbmcgdG8gbG9vayBhdCBgX19uZmNfbGxjcF9yZWN2YCBhbmQgYG5mY19sbGNwX3JlY3ZgLiBJIGtub3cgdGhhdCBgbmZjX2xsY3BfcmVjdmAgaXMgdHJpZ2dlcmVkIGFzIGEgY2FsbGJhY2sgZnJvbSBgbmZjX2RhdGFfZXhjaGFuZ2VgLiBOb3csIHdoZXJlIGlzIGBuZmNfZGF0YV9leGNoYW5nZWAgYmVpbmcgY2FsbGVkPyBBaCwgaXQgaXMgY2FsbGVkIGZyb20gYG5mY19sbGNwX3R4X3dvcmtgIGFuZCBgbmZjX2xsY3Bfc2VuZF9zeW1tYC4gQWxyaWdodCwgdGhpcyBzdWdnZXN0cyBhIG1vcmUgc3BlY2lmaWMgc2V0IG9mIGZ1bmN0aW9uIHN5bWJvbHMgdG8gZm9jdXMgb24gaGVyZS4KCkJhc2VkIG9uIHRoaXMgdHJhdmVyc2FsLCBteSBjb3JlIGZvY3VzIHN5bWJvbHMgc2hvdWxkIGJlOiBgbmZjX2xsY3BfcmVjdmAsIGBuZmNfbGxjcF9kYXRhX3JlY2VpdmVkYCwgYF9fbmZjX2xsY3BfcmVjdmAsIGBuZmNfbGxjcF9yeF93b3JrYCwgYW5kIGBuZmNfbGxjcF9yeF9za2JgLgoKTm93LCBiZWZvcmUgSSBtb3ZlIG9uLCBJIHdhbnQgdG8gdmVyaWZ5IHRoYXQgYG5mY19sbGNwX3J4X3NrYmAgaXMsIGluIGZhY3QsIGEgcmVsZXZhbnQgZm9jdXMgc3ltYm9sIHRvIHJldmlldy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZjX2xsY3Bfcnhfc2tiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25mYy9sbGNwX2NvcmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL2xsY3BfY29yZS5jPTIxPXN0YXRpYyBERUZJTkVfU1BJTkxPQ0sobGxjcF9kZXZpY2VzX2xvY2spO1xubmV0L25mYy9sbGNwX2NvcmUuYy0yMi1cbm5ldC9uZmMvbGxjcF9jb3JlLmM6MjM6c3RhdGljIHZvaWQgbmZjX2xsY3Bfcnhfc2tiKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IpO1xubmV0L25mYy9sbGNwX2NvcmUuYy0yNC1cbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jPTE0MzY9c3RhdGljIHZvaWQgbmZjX2xsY3BfcmVjdl9hZ2Yoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE0NzEtXG5uZXQvbmZjL2xsY3BfY29yZS5jOjE0NzI6XHRcdG5mY19sbGNwX3J4X3NrYihsb2NhbCwgbmV3X3NrYik7XG5uZXQvbmZjL2xsY3BfY29yZS5jLTE0NzMtXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy0xNDc5LVxubmV0L25mYy9sbGNwX2NvcmUuYzoxNDgwOnN0YXRpYyB2b2lkIG5mY19sbGNwX3J4X3NrYihzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L25mYy9sbGNwX2NvcmUuYy0xNDgxLXtcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jPTE1NDM9c3RhdGljIHZvaWQgbmZjX2xsY3Bfcnhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTU4LVxubmV0L25mYy9sbGNwX2NvcmUuYzoxNTU5Olx0bmZjX2xsY3Bfcnhfc2tiKGxvY2FsLCBza2IpO1xubmV0L25mYy9sbGNwX2NvcmUuYy0xNTYwLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMToyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTc2OAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDI0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipMTENQIFBhY2tldCBSZWNlcHRpb24gRmxvdyoqCgpPa2F5LCBzbyBJJiMzOTttIHplcm9pbmcgaW4gb24gdGhlIGNvcmUgb2YgaG93IExMQ1AgcGFja2V0cyBhcmUgaGFuZGxlZCBvbiB0aGlzIHN5c3RlbS4gSXQgbG9va3MgbGlrZSBgbmZjX2xsY3Bfcnhfc2tiYCBpcyB0aGUgYmlnIGthaHVuYSwgdGhlIG1haW4gZGlzcGF0Y2hlciBmb3IgYW55IGluY29taW5nIExMQ1AgcGFja2V0cy4gVGhhdCBtYWtlcyBzZW5zZTsgaXQmIzM5O3MgdGhlIHVsdGltYXRlIGRlc3RpbmF0aW9uLiBOb3csIGBuZmNfbGxjcF9yeF93b3JrYCBpcyBpbnRlcmVzdGluZ+KAlGl0IGRlcXVldWVzIHRoZSBgc2tiYCBhbmQgKnRoZW4qIGNhbGxzIGBuZmNfbGxjcF9yeF9za2JgLiBTbywgaXQgYWN0cyBhcyBhIHdvcmsgcXVldWUgaGFuZGxlciwgcHJvY2Vzc2luZyB0aGUgcmVjZWl2ZWQgZGF0YS4gQW5kIHRoZSBwb2ludCBvZiBlbnRyeSBzZWVtcyB0byBiZSBgX19uZmNfbGxjcF9yZWN2YCwgd2hpY2ggcXVldWVzIHRoZSBgc2tiYCBhbmQgc2NoZWR1bGVzIHRoZSB3b3JrcXVldWUgdGhyb3VnaCBgbmZjX2xsY3Bfcnhfd29ya2AuIFRoYXQgaW1tZWRpYXRlbHkgZ2l2ZXMgbWUgYSBnb29kIGlkZWEgb2YgdGhlIGV4ZWN1dGlvbiBwYXRoLgoKR2l2ZW4gdGhpcywgSSBzaG91bGQgcHJvYmFibHkgZm9jdXMgbXkgYXR0ZW50aW9uIG9uIHRoZXNlIHN5bWJvbHM6IGBfX25mY19sbGNwX3JlY3ZgLCBgbmZjX2xsY3BfcmVjdmAsIGBuZmNfbGxjcF9kYXRhX3JlY2VpdmVkYCwgYG5mY19sbGNwX3J4X3dvcmtgLCBhbmQgdGhlIGFsbC1pbXBvcnRhbnQgYG5mY19sbGNwX3J4X3NrYmAuIFRoZXkgZm9ybSB0aGUgY3JpdGljYWwgcGF0aCwgYW5kIHVuZGVyc3RhbmRpbmcgdGhlaXIgaW50ZXJhY3Rpb25zIGlzIGdvaW5nIHRvIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBmdWxsIHN5c3RlbS4KCkp1c3QgdG8gYmUgc3VyZSwgSSBzaG91bGQgdmVyaWZ5IHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBMb29rcyBsaWtlIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGZvbGxvd2luZyBjb25maWdzLCBqdXN0IGluIGNhc2U6IGBDT05GSUdfTkZDYCwgYENPTkZJR19ORkNfTkNJYCwgYENPTkZJR19ORkNfVklSVFVBTF9OQ0lgLCBgQ09ORklHX05GQ19TSU1gLCBhbmQgYENPTkZJR19ORkNfRElHSVRBTGAuIEkmIzM5O2xsIGFsc28gaGF2ZSBhIGxvb2sgYXQgYG5ldC9uZmMvS2NvbmZpZ2AgdG8gc2VlIGlmIGBORkNfTExDUGAgaXMgYSBkaXNjcmV0ZSwgc2VwYXJhdGUgY29uZmlndXJhdGlvbiBvcHRpb24gdGhhdCBjb3VsZCBpbXBhY3QgaG93IHRoaW5ncyBhcmUgYnVpbHQuIEdvdHRhIGNvdmVyIGFsbCBteSBiYXNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL0tjb25maWctNS1cbm5ldC9uZmMvS2NvbmZpZzo2Om1lbnVjb25maWcgTkZDXG5uZXQvbmZjL0tjb25maWctNy1cdGRlcGVuZHMgb24gUkZLSUxMIHx8ICFSRktJTExcbi0tXG5uZXQvbmZjL0tjb25maWctMTYtXG5uZXQvbmZjL0tjb25maWc6MTc6Y29uZmlnIE5GQ19ESUdJVEFMXG5uZXQvbmZjL0tjb25maWctMTgtXHRkZXBlbmRzIG9uIE5GQ1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMToyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjU0NwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipOYXZpZ2F0aW5nIHRoZSBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqCgpPa2F5LCBsZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBjb25maWd1cmF0aW9uIGFuZCB0aGUgZmlyc3QgcXVlc3Rpb24gdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpcyB3aGV0aGVyIHRoZXJlJiMzOTtzIGEgZGVkaWNhdGVkIGBORkNfTExDUGAgY29uZmlndXJhdGlvbiBvcHRpb24uIEl0JiMzOTtzIGEga2V5IHByb3RvY29sLCBzbyBpdCAqc2hvdWxkKiBiZSB0aGVyZSwgYnV0IEkgbmVlZCB0byBiZSBzdXJlLiBJJiMzOTttIG1lbnRhbGx5IHNjYW5uaW5nIHRoZSB1c3VhbCBzdXNwZWN0cyBpbiB0aGUgY29uZmlndXJhdGlvbiBmaWxlcywgdGhpbmtpbmcgYWJvdXQgd2hlcmUgaXQgd291bGQgbG9naWNhbGx5IHJlc2lkZSB3aXRoaW4gdGhlIGV4aXN0aW5nIHN0cnVjdHVyZS4gSXMgaXQgdW5kZXIgdGhlIE5GQyB1bWJyZWxsYSwgb3IgcGVyaGFwcyB0dWNrZWQgYXdheSB1bmRlciBhIG1vcmUgZ2VuZXJpYyBuZXR3b3JraW5nIHNlY3Rpb24/IE9yIG1heWJlIGl0JiMzOTtzIGRlcGVuZGVudCBvbiBzb21lIG90aGVyIHNldHRpbmcsIG1ha2luZyBpdHMgcHJlc2VuY2UgY29uZGl0aW9uYWwuIEkgbmVlZCB0byBrbm93IHF1aWNrbHkgd2hldGhlciBJIG5lZWQgdG8gZ28gaHVudGluZyBlbHNld2hlcmUgb3IgaWYgaXQmIzM5O3MgcmlnaHQgaW4gZnJvbnQgb2YgbXkgZmFjZS4gS25vd2luZyB3aGV0aGVyIHRoaXMgc2V0dGluZyBleGlzdHMgd2lsbCBpbmZvcm0gbXkgbmV4dCBzdGVwcywgYW5kIHdoYXQgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiBpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORkNfTExDUCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNzkwCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkFuYWx5emluZyBgbGxjcF9jb3JlLm9gIEJ1aWxkIENvbmRpdGlvbmFsaXR5KioKClJpZ2h0LCBzbywgSSBuZWVkIHRvIGNsZWFyIHRoaXMgdXAuIE15IGluaXRpYWwgYXNzdW1wdGlvbiBhYm91dCBgbGxjcF9jb3JlLm9gJiMzOTtzIGJ1aWxkIGNvbmRpdGlvbmFsaXR5IGlzIHdyb25nLiBJdCYjMzk7cyBkZWZpbml0ZWx5IGJ1aWx0IHVuY29uZGl0aW9uYWxseSB3aGVuIGBDT05GSUdfTkZDYCBpcyBlbmFibGVkLCBhbmQgdGhhdCYjMzk7cyB0aHJvdWdoIHRoZSBgbmZjLW9ianNgIG1lY2hhbmlzbSwgb2YgY291cnNlLiBUaW1lIHRvIGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZyBhbmQgbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIHNvbWV0aGluZyBzdHVwaWQuIExldCBtZSBnbyBiYWNrIGFuZCBkb3VibGUgY2hlY2sgdGhlIGBuZXQvbmZjL01ha2VmaWxlYCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4uIEl0IHdvdWxkIGJlIGVhc3kgdG8gb3Zlcmxvb2sgc29tZXRoaW5nIGluIGEgTWFrZWZpbGUhIEdvdHRhIGJlIHRob3JvdWdoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMToyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtsbGNwX2NvcmUubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25mYy9NYWtlZmlsZT05PW9iai0kKENPTkZJR19ORkNfRElHSVRBTCkgJiM0Mzs9IG5mY19kaWdpdGFsLm9cbm5ldC9uZmMvTWFrZWZpbGUtMTAtXG5uZXQvbmZjL01ha2VmaWxlOjExOm5mYy1vYmpzIDo9IGNvcmUubyBuZXRsaW5rLm8gYWZfbmZjLm8gcmF3c29jay5vIGxsY3BfY29yZS5vIGxsY3BfY29tbWFuZHMubyBcXFxubmV0L25mYy9NYWtlZmlsZS0xMi1cdFx0bGxjcF9zb2NrLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMxMzMKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgTkZDIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhlIGBuZmMtb2Jqc2AgYnVpbGQgcHJvY2VzcyB3b3JrcyBpbiByZWxhdGlvbiB0byB0aGUgTkZDIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHllcywgdGhlIGBuZmMtb2Jqc2AgbW9kdWxlIGlzIGRlZmluaXRlbHkgYnVpbHQgd2hlbiB0aGUgbWFpbiBgQ09ORklHX05GQ2Agb3B0aW9uIGlzIGVuYWJsZWQsIHRoYXQmIzM5O3MgdGhlIGJhc2UgcmVxdWlyZW1lbnQuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhIGJpdCBiZXR0ZXIuCgpJIHNlZSBhIGZldyBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBORkM6IGBORkNgLCBgTkZDX05DSWAsIGBORkNfVklSVFVBTF9OQ0lgLCBhbmQgYE5GQ19TSU1gLiBUaGVzZSBhcmUgdGhlIGtleSB2YXJpYWJsZXMuIE5vdywgSSB3YW50IHRvIHNwZWNpZmljYWxseSBjaGVjayBob3cgYE5GQ19OQ0lgIGlzIHNlbGVjdGVkIHdpdGhpbiB0aGlzIHNldHVwLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGBORkNfVklSVFVBTF9OQ0lgIGhhcyBhbnkgaW5mbHVlbmNlIG9uIHRoZSBgTkZDX05DSWAgY29uZmlndXJhdGlvbiwgSSBuZWVkIHRvIGtub3cgdGhlIHJlbGF0aW9uc2hpcHMuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGEgbGl0dGxlIGRlZXBlciBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIHRvIGNvbmZpcm0gdGhhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GQ19WSVJUVUFMX05DSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvS2NvbmZpZz00Mj1jb25maWcgTkZDX1BPUlQxMDBcbi0tXG5kcml2ZXJzL25mYy9LY29uZmlnLTUxLVxuZHJpdmVycy9uZmMvS2NvbmZpZzo1Mjpjb25maWcgTkZDX1ZJUlRVQUxfTkNJXG5kcml2ZXJzL25mYy9LY29uZmlnLTUzLVx0dHJpc3RhdGUgXCYjMzQ7TkNJIGRldmljZSBzaW11bGF0b3IgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNTUxCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBmb2N1c2luZyBvbiB0aGUgZGVwZW5kZW5jaWVzIG9mIGBORkNfVklSVFVBTF9OQ0lgOgoKKipEZWNvbnN0cnVjdGluZyBEZXBlbmRlbmNpZXM6IE5GQ19WSVJUVUFMX05DSSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBkZXBlbmRlbmNpZXMgb2YgYE5GQ19WSVJUVUFMX05DSWAuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIG1hcCBvdXQgdGhlIGxhbmRzY2FwZS4gV2hhdCBvdGhlciBjb21wb25lbnRzLCBkcml2ZXJzLCBvciBtb2R1bGVzIGlzIHRoaXMgc3BlY2lmaWMgdmlydHVhbCBOQ0kgbGF5ZXIgYnVpbHQgdXBvbj8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGZvdW5kYXRpb24uIElzIGl0IHJlbGlhbnQgb24gYSBzcGVjaWZpYyBoYXJkd2FyZSBhYnN0cmFjdGlvbiBsYXllciAoSEFMKT8gRG9lcyBpdCBpbnRlcmZhY2Ugd2l0aCBwYXJ0aWN1bGFyIGtlcm5lbCBtb2R1bGVzIG9yIHVzZXItc3BhY2Ugc2VydmljZXM/CgpJJiMzOTttIHRoaW5raW5nLCBhcmUgdGhlcmUgYW55IG9idmlvdXMga2VybmVsIG1vZHVsZXMgdGhhdCBhcmUgY3JpdGljYWwgZm9yIGl0cyBvcGVyYXRpb24sIHN1Y2ggYXMgdGhvc2UgcmVsYXRlZCB0byBzZWN1cmUgZWxlbWVudHMsIHJlYWRlci93cml0ZXIgbW9kZXMsIG9yIHBlZXItdG8tcGVlciBjb21tdW5pY2F0aW9uPyBJIG5lZWQgdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIHRoZSAqZGlyZWN0KiBkZXBlbmRlbmNpZXMsIHRob3NlIGl0IGV4cGxpY2l0bHkgY2FsbHMgdXBvbiwgYW5kIHRoZSAqaW5kaXJlY3QqIG9uZXMsIHdoaWNoIGFyZSBmdW5kYW1lbnRhbCB0byBpdHMgZW52aXJvbm1lbnQuIEZvciBleGFtcGxlLCBpcyBpdCBkZXBlbmRlbnQgb24gYSBwYXJ0aWN1bGFyIHZlcnNpb24gb2YgdGhlIE5GQyBzdGFjaz8gQXJlIHRoZXJlIHNwZWNpZmljIHNlY3VyaXR5IHBvbGljaWVzIGl0IG11c3QgYWRoZXJlIHRvPwoKTW9yZSBpbXBvcnRhbnRseSwgaG93IGRvZXMgaXQgaGFuZGxlIGNvbmN1cnJlbmN5IGFuZCByZXNvdXJjZSBjb250ZW50aW9uIHdpdGggb3RoZXIgTkZDIGNvbXBvbmVudHM/IFRoYXQmIzM5O3MgYWx3YXlzIGEgY3JpdGljYWwgYXNwZWN0IGluIHZpcnR1YWxpemVkIHN5c3RlbXMuIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCBpdHMgbG9ja2luZyBtZWNoYW5pc21zLCBpdHMgaW50ZXJydXB0IGhhbmRsaW5nLCBhbmQgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMuCgpNeSBhbmFseXNpcyBuZWVkcyB0byBiZSBjb21wcmVoZW5zaXZlLiBJJiMzOTttIGxvb2tpbmcgZm9yIGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgcm9sZSBpbiB0aGUgZ3JlYXRlciBORkMgYXJjaGl0ZWN0dXJlIGFuZCBpdHMgcG9pbnRzIG9mIGNvbnRhY3QuIFVuZGVyc3RhbmRpbmcgdGhlc2UgZGVwZW5kZW5jaWVzIGlzIGtleSB0byBhbnkgZGVlcGVyIGludmVzdGlnYXRpb24sIGVzcGVjaWFsbHkgaWYgSSBuZWVkIHRvIGRlYnVnLCBvcHRpbWl6ZSwgb3IgbW9kaWZ5IHRoaXMgY29tcG9uZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMToyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1MiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDUyOlx0Y29uZmlnIE5GQ19WSVJUVUFMX05DSVxuICA1MzpcdFx0dHJpc3RhdGUgXCYjMzQ7TkNJIGRldmljZSBzaW11bGF0b3IgZHJpdmVyXCYjMzQ7XG4gIDU0Olx0XHRkZXBlbmRzIG9uIE5GQ19OQ0lcbiAgNTU6XHRcdGhlbHBcbiAgNTY6XHRcdCAgTkNJIHZpcnR1YWwgZGV2aWNlIHNpbXVsYXRlcyBhIE5DSSBkZXZpY2UgdG8gdGhlIHVzZXIuXG4gIDU3Olx0XHQgIEl0IGNhbiBiZSB1c2VkIHRvIHZhbGlkYXRlIHRoZSBOQ0kgbW9kdWxlIGFuZCBhcHBsaWNhdGlvbnMuXG4gIDU4Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIGNvbW11bmljYXRpb24gYmV0d2VlbiB0aGUgdmlydHVhbCBOQ0kgZGV2aWNlIGFuZFxuICA1OTpcdFx0ICBtb2R1bGUuXG4gIDYwOlx0XG4gIDYxOlx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MDczCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ29uc2lkZXJpbmcgTkZDIEltcGxlbWVudGF0aW9uIENob2ljZXMqKgoKQWxyaWdodCwgc28gdGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byByZXZvbHZlIGFyb3VuZCBORkMgaW1wbGVtZW50YXRpb24sIGFuZCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyAmIzM0O1llcywgaXQgKmRlZmluaXRlbHkqIGhpbmdlcyBvbiB0aGUgYE5GQ19OQ0lgIGNvbXBvbmVudC4mIzM0OyBUaGF0JiMzOTtzIHRoZSBOZXR3b3JrIENvbnRyb2xsZXIgSW50ZXJmYWNlLCBhbmQgaXTigJlzIHRoZSBiZWRyb2NrIG9mIGhvdyB3ZSBhY3R1YWxseSB0YWxrIHRvIHRoZSBORkMgaGFyZHdhcmUgYXQgYSBsb3dlciBsZXZlbC4gTXkgYXJjaGl0ZWN0dXJlIGlzIGZ1bmRhbWVudGFsbHkgc2hhcGVkIGJ5IGhvdyB3ZWxsIHRoYXQmIzM5O3MgZGVzaWduZWQgYW5kIGltcGxlbWVudGVkLiBCdXQgSSBjYW4mIzM5O3Qgc3RvcCB0aGVyZS4KCk15IG1pbmQgaW1tZWRpYXRlbHkgYnJhbmNoZXMgdG8gY29uc2lkZXIgYE5GQ19TSU1gLiBJIGNhbiYjMzk7dCBqdXN0IGdsb3NzIG92ZXIgdGhlIFNlY3VyZSBFbGVtZW50IGFzcGVjdC4gVGhlIHdob2xlIGFyY2hpdGVjdHVyZSBjb3VsZCBwaXZvdCBvbiB3aGV0aGVyIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGEgVUlDQywgYW4gZW1iZWRkZWQgU0UsIG9yIGV2ZW4gYSBzb2Z0d2FyZS1iYXNlZCBzb2x1dGlvbi4gVGhlIHNlY3VyaXR5IHByb2ZpbGUsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzLCBhbmQgb3ZlcmFsbCBkZXNpZ24gY29tcGxleGl0eSBhcmUgYWxsIGdvaW5nIHRvIGNoYW5nZSBkZXBlbmRpbmcgb24gKnRoYXQqIHZhcmlhYmxlLiBJIG5lZWQgdG8ga2VlcCB0aGUgU0lNIGNhcmQgaW1wbGljYXRpb25zIHRvcCBvZiBtaW5kIHdoZW4gdGhpbmtpbmcgdGhyb3VnaCB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMToyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDMxOlx0Y29uZmlnIE5GQ19TSU1cbiAgMzI6XHRcdHRyaXN0YXRlIFwmIzM0O05GQyBoYXJkd2FyZSBzaW11bGF0b3IgZHJpdmVyXCYjMzQ7XG4gIDMzOlx0XHRkZXBlbmRzIG9uIE5GQ19ESUdJVEFMXG4gIDM0Olx0XHRoZWxwXG4gIDM1Olx0XHQgIFRoaXMgZHJpdmVyIGRlY2xhcmVzIHR3byB2aXJ0dWFsIE5GQyBkZXZpY2VzIHN1cHBvcnRpbmcgTkZDLURFUFxuICAzNjpcdFx0ICBwcm90b2NvbC4gQW4gTExDUCBjb25uZWN0aW9uIGNhbiBiZSBlc3RhYmxpc2hlZCBiZXR3ZWVuIHRoZW0gYW5kXG4gIDM3Olx0XHQgIGFsbCBwYWNrZXRzIHNlbnQgZnJvbSBvbmUgZGV2aWNlIGlzIHNlbnQgYmFjayB0byB0aGUgb3RoZXIsIGFjdGluZyBhc1xuICAzODpcdFx0ICBsb29wYmFjayBkZXZpY2VzLlxuICAzOTpcdFxuICA0MDpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMToyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDQ4NAoJCQkJCQkJb3V0cHV0OiAyMTUKCQkJCQkJCXRob3VnaHRzOiAyNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTkZDIExMQ1AgUGFja2V0IFZ1bG5lcmFiaWxpdHkgQXNzZXNzbWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBORkMgY29kZSBhbmQgaXQmIzM5O3MgY29udGluZ2VudCBvbiBgTkZDX0RJR0lUQUxgLiBUaGF0IG1lYW5zIHRvIHByb3Blcmx5IGNvbmZpZ3VyZSB0aGUgTkZDIHN5c3RlbSwgSSYjMzk7bGwgbmVlZCB0byBlbmFibGUgYE5GQ2AsIGBORkNfTkNJYCwgYE5GQ19WSVJUVUFMX05DSWAsIGBORkNfRElHSVRBTGAsIGFuZCBgTkZDX1NJTWAuCgpUaGUgY29yZSBvZiB0aGUgbWF0dGVyIHNlZW1zIHRvIGJlIHRoaXMgcGF0Y2ggdGhhdCBpbnRyb2R1Y2VzIGEgbGVuZ3RoIGNoZWNrIChgc2tiLSZndDtsZW4gJmx0OyBMTENQX0hFQURFUl9TSVpFYCkgd2l0aGluIGBfX25mY19sbGNwX3JlY3ZgLiBSaWdodCBhd2F5LCBJIHJlY29nbml6ZSB0aGlzIGFzIGEgZnVuY3Rpb25hbCBmaXgsIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIG9yIHNpbWlsYXIgdnVsbmVyYWJpbGl0eSB3aGVuIGhhbmRsaW5nIGluY29taW5nIE5GQyBMTENQIHBhY2tldHMuIFRoaXMgYWJzb2x1dGVseSB3YXJyYW50cyBmdXp6aW5nOyBpdOKAmXMgYSBjbGFzc2ljIHNjZW5hcmlvIGZvciB1bmNvdmVyaW5nIGVkZ2UgY2FzZXMuCgpJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIG9uIHRoZXNlIHN5bWJvbHM6IGBfX25mY19sbGNwX3JlY3ZgLCBgbmZjX2xsY3BfcmVjdmAsIGBuZmNfbGxjcF9kYXRhX3JlY2VpdmVkYCwgYG5mY19sbGNwX3J4X3dvcmtgLCBhbmQgYG5mY19sbGNwX3J4X3NrYmAuCgpCZWZvcmUgSSBkaXZlIHRvbyBkZWVwLCBJIHNob3VsZCBxdWlja2x5IHZlcmlmeSBpZiBgbmZjX2xsY3BfcmVjdmAgYW5kIGBuZmNfbGxjcF9kYXRhX3JlY2VpdmVkYCBhcmUgcGVyZm9ybWFuY2UtY3JpdGljYWwgcGF0aHMuIENvbnNpZGVyaW5nIHRoZSBnZW5lcmFsIG5hdHVyZSBvZiBORkMsIGl0JiMzOTtzIHVubGlrZWx5IHRoZXNlIGFyZSBob3RzcG90cy4gVGhleSBhcmUgbm90LgoKQWxyaWdodCwgd2l0aCB0aGF0IGFzc2Vzc21lbnQgY29tcGxldGUsIEnigJlsbCBkb2N1bWVudCBteSBmaW5kaW5ncyBhbmQgbWFyayB0aGlzIGFzIHJlYWR5IHRvIG1vdmUgZm9yd2FyZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GQyYjMzQ7LAogICAgJiMzNDtORkNfTkNJJiMzNDssCiAgICAmIzM0O05GQ19WSVJUVUFMX05DSSYjMzQ7LAogICAgJiMzNDtORkNfRElHSVRBTCYjMzQ7LAogICAgJiMzNDtORkNfU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19uZmNfbGxjcF9yZWN2JiMzNDssCiAgICAmIzM0O25mY19sbGNwX3JlY3YmIzM0OywKICAgICYjMzQ7bmZjX2xsY3BfZGF0YV9yZWNlaXZlZCYjMzQ7LAogICAgJiMzNDtuZmNfbGxjcF9yeF93b3JrJiMzNDssCiAgICAmIzM0O25mY19sbGNwX3J4X3NrYiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIHRvIGBfX25mY19sbGNwX3JlY3ZgIHRvIGVuc3VyZSB0aGUgcmVjZWl2ZWQgc2tiIGlzIGF0IGxlYXN0IGBMTENQX0hFQURFUl9TSVpFYCBieXRlcyBsb25nIGJlZm9yZSBwcm9jZXNzaW5nIGl0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBwcmV2ZW50cyBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkcyBvciBvdGhlciBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMgd2hlbiBoYW5kbGluZyBtYWxmb3JtZWQgTkZDIExMQ1AgcGFja2V0cy4gRnV6emluZyB0aGlzIGNvZGUgcGF0aCBpcyBoaWdobHkgcmVjb21tZW5kZWQgdG8gZW5zdXJlIHRoZSByb2J1c3RuZXNzIG9mIHRoZSBORkMgTExDUCBpbXBsZW1lbnRhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZDJiMzNDssCiAgICAmIzM0O05GQ19OQ0kmIzM0OywKICAgICYjMzQ7TkZDX1ZJUlRVQUxfTkNJJiMzNDssCiAgICAmIzM0O05GQ19ESUdJVEFMJiMzNDssCiAgICAmIzM0O05GQ19TSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX25mY19sbGNwX3JlY3YmIzM0OywKICAgICYjMzQ7bmZjX2xsY3BfcmVjdiYjMzQ7LAogICAgJiMzNDtuZmNfbGxjcF9kYXRhX3JlY2VpdmVkJiMzNDssCiAgICAmIzM0O25mY19sbGNwX3J4X3dvcmsmIzM0OywKICAgICYjMzQ7bmZjX2xsY3Bfcnhfc2tiJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgdG8gYF9fbmZjX2xsY3BfcmVjdmAgdG8gZW5zdXJlIHRoZSByZWNlaXZlZCBza2IgaXMgYXQgbGVhc3QgYExMQ1BfSEVBREVSX1NJWkVgIGJ5dGVzIGxvbmcgYmVmb3JlIHByb2Nlc3NpbmcgaXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIG90aGVyIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlcyB3aGVuIGhhbmRsaW5nIG1hbGZvcm1lZCBORkMgTExDUCBwYWNrZXRzLiBGdXp6aW5nIHRoaXMgY29kZSBwYXRoIGlzIGhpZ2hseSByZWNvbW1lbmRlZCB0byBlbnN1cmUgdGhlIHJvYnVzdG5lc3Mgb2YgdGhlIE5GQyBMTENQIGltcGxlbWVudGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6MTk6MTkuMDcwMTQ5MDg0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzNTA2ODU1NDE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GQ1wiLFxuICAgIFwiTkZDX05DSVwiLFxuICAgIFwiTkZDX1ZJUlRVQUxfTkNJXCIsXG4gICAgXCJORkNfRElHSVRBTFwiLFxuICAgIFwiTkZDX1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fbmZjX2xsY3BfcmVjdlwiLFxuICAgIFwibmZjX2xsY3BfcmVjdlwiLFxuICAgIFwibmZjX2xsY3BfZGF0YV9yZWNlaXZlZFwiLFxuICAgIFwibmZjX2xsY3Bfcnhfd29ya1wiLFxuICAgIFwibmZjX2xsY3Bfcnhfc2tiXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayB0byBgX19uZmNfbGxjcF9yZWN2YCB0byBlbnN1cmUgdGhlIHJlY2VpdmVkIHNrYiBpcyBhdCBsZWFzdCBgTExDUF9IRUFERVJfU0laRWAgYnl0ZXMgbG9uZyBiZWZvcmUgcHJvY2Vzc2luZyBpdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgcmVhZHMgb3Igb3RoZXIgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzIHdoZW4gaGFuZGxpbmcgbWFsZm9ybWVkIE5GQyBMTENQIHBhY2tldHMuIEZ1enppbmcgdGhpcyBjb2RlIHBhdGggaXMgaGlnaGx5IHJlY29tbWVuZGVkIHRvIGVuc3VyZSB0aGUgcm9idXN0bmVzcyBvZiB0aGUgTkZDIExMQ1AgaW1wbGVtZW50YXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjE5OjE5LjA3MDE1NjI5NFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTAwNjc2ODE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNWJiMGU3NDJhMTMwZjQ2MDgyZTIwMzE0YTg5MzU1MGEwZWEzZjM5N1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCAxMyAyMToxOToxOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbmZjL2xsY3BfY29yZS5jIGIvbmV0L25mYy9sbGNwX2NvcmUuY1xcbmluZGV4IGFlZDVmZTFhZmVmMDFlLi43MmI2ZTcwN2FkMGNiNCAxMDA2NDRcXG4tLS0gYS9uZXQvbmZjL2xsY3BfY29yZS5jXFxuKysrIGIvbmV0L25mYy9sbGNwX2NvcmUuY1xcbkBAIC0xNTY1LDYgKzE1NjUsMTEgQEAgc3RhdGljIHZvaWQgbmZjX2xsY3Bfcnhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIFxcbiBzdGF0aWMgdm9pZCBfX25mY19sbGNwX3JlY3Yoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4ge1xcbitcXHRpZiAoc2tiLVxcdTAwM2VsZW4gXFx1MDAzYyBMTENQX0hFQURFUl9TSVpFKSB7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4rXFxuIFxcdGxvY2FsLVxcdTAwM2VyeF9wZW5kaW5nID0gc2tiO1xcbiBcXHR0aW1lcl9kZWxldGUoXFx1MDAyNmxvY2FsLVxcdTAwM2VsaW5rX3RpbWVyKTtcXG4gXFx0c2NoZWR1bGVfd29yayhcXHUwMDI2bG9jYWwtXFx1MDAzZXJ4X3dvcmspO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMToxOToxOS41NzE0NzY5MzhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMzAwNTUxODc3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORkNcIixcbiAgICBcIk5GQ19OQ0lcIixcbiAgICBcIk5GQ19WSVJUVUFMX05DSVwiLFxuICAgIFwiTkZDX0RJR0lUQUxcIixcbiAgICBcIk5GQ19TSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX25mY19sbGNwX3JlY3ZcIixcbiAgICBcIm5mY19sbGNwX3JlY3ZcIixcbiAgICBcIm5mY19sbGNwX2RhdGFfcmVjZWl2ZWRcIixcbiAgICBcIm5mY19sbGNwX3J4X3dvcmtcIixcbiAgICBcIm5mY19sbGNwX3J4X3NrYlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgdG8gYF9fbmZjX2xsY3BfcmVjdmAgdG8gZW5zdXJlIHRoZSByZWNlaXZlZCBza2IgaXMgYXQgbGVhc3QgYExMQ1BfSEVBREVSX1NJWkVgIGJ5dGVzIGxvbmcgYmVmb3JlIHByb2Nlc3NpbmcgaXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIG90aGVyIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlcyB3aGVuIGhhbmRsaW5nIG1hbGZvcm1lZCBORkMgTExDUCBwYWNrZXRzLiBGdXp6aW5nIHRoaXMgY29kZSBwYXRoIGlzIGhpZ2hseSByZWNvbW1lbmRlZCB0byBlbnN1cmUgdGhlIHJvYnVzdG5lc3Mgb2YgdGhlIE5GQyBMTENQIGltcGxlbWVudGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDViYjBlNzQyYTEzMGY0NjA4MmUyMDMxNGE4OTM1NTBhMGVhM2YzOTdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAxMyAyMToxOToxOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZmMvbGxjcF9jb3JlLmMgYi9uZXQvbmZjL2xsY3BfY29yZS5jXG5pbmRleCBhZWQ1ZmUxYWZlZjAxZS4uNzJiNmU3MDdhZDBjYjQgMTAwNjQ0XG4tLS0gYS9uZXQvbmZjL2xsY3BfY29yZS5jXG4rKysgYi9uZXQvbmZjL2xsY3BfY29yZS5jXG5AQCAtMTU2NSw2ICsxNTY1LDExIEBAIHN0YXRpYyB2b2lkIG5mY19sbGNwX3J4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFxuIHN0YXRpYyB2b2lkIF9fbmZjX2xsY3BfcmVjdihzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHtcbitcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyBMTENQX0hFQURFUl9TSVpFKSB7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4rXG4gXHRsb2NhbC1cdTAwM2VyeF9wZW5kaW5nID0gc2tiO1xuIFx0dGltZXJfZGVsZXRlKFx1MDAyNmxvY2FsLVx1MDAzZWxpbmtfdGltZXIpO1xuIFx0c2NoZWR1bGVfd29yayhcdTAwMjZsb2NhbC1cdTAwM2VyeF93b3JrKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjE5OjE5LjU3MTQ5Mjg4OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwNjcwNzA3MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBORkMgTExDUCBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggdGhhdCBpbnRyb2R1Y2VzIGEgc2FmZXR5IGNoZWNrOiBgc2tiLVx1MDAzZWxlbiBcdTAwM2MgTExDUF9IRUFERVJfU0laRWAgd2l0aGluIGBfX25mY19sbGNwX3JlY3ZgIGluIGBuZXQvbmZjL2xsY3BfY29yZS5jYC4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50PyBGdW5jdGlvbmFsbHkgc291bmQuIFRoaXMgZGlyZWN0bHkgYWRkcmVzc2VzIGEgcG9zc2libGUgb3V0LW9mLWJvdW5kcyByZWFkIG9yIGEgcmVsYXRlZCB2dWxuZXJhYmlsaXR5IHdoZW4gdGhlIGtlcm5lbCBpcyBwcm9jZXNzaW5nIE5GQyBMTENQIHBhY2tldHMuIFRoaXMgKnNjcmVhbXMqIGZ1enppbmcgdGFyZ2V0LCBpbW1lZGlhdGVseS4gV2UgZGVmaW5pdGVseSBuZWVkIHRvIHB1dCB0aGlzIHRocm91Z2ggaXRzIHBhY2VzLlxuXG5Ob3csIHRvIGdldCB0aGUgY29tcGxldGUgcGljdHVyZSwgSSBuZWVkIHRvIGtub3cgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZWQgdG8gZW5hYmxlIHRoaXMgTkZDIExMQ1AgZnVuY3Rpb25hbGl0eS4gTXkgcGxhbiBpcyB0byBzdGFydCBieSBzZWFyY2hpbmcgZm9yIGBfX25mY19sbGNwX3JlY3ZgIGFuZCBgbmZjX2xsY3Bfcnhfd29ya2Agc3BlY2lmaWNhbGx5IHdpdGhpbiBgbmV0L25mYy9sbGNwX2NvcmUuY2AgYWdhaW4sIHRvIGdldCBzb21lIGNvbnRleHQgY2x1ZXMuIFRoZW4sIEknbGwgZGl2ZSBpbnRvIGBuZXQvbmZjL0tjb25maWdgIGFuZCBgbmV0L25mYy9NYWtlZmlsZWAuIFRoYXQgc2hvdWxkIHJldmVhbCB0aGUgY29uZmlnIG9wdGlvbnMgdGhhdCBnb3Zlcm4gdGhlIGNvbXBpbGF0aW9uIGFuZCBpbmNsdXNpb24gb2YgYGxsY3BfY29yZS5jYCwgd2hpY2gsIGluIHR1cm4sIHdpbGwgYWxsb3cgbWUgdG8gc2V0IHVwIGFuIGFwcHJvcHJpYXRlIGZ1enppbmcgZW52aXJvbm1lbnQuIFVuZGVyc3RhbmRpbmcgdGhlIGJ1aWxkIHN5c3RlbSBpcyBrZXkgdG8gcHJvcGVyIHRlc3RpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NjksIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMToxOToyNC42Mzg1NjU2MTdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk1OTA3MjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGxjcF9jb3JlLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25mYy9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL01ha2VmaWxlPTk9b2JqLSQoQ09ORklHX05GQ19ESUdJVEFMKSArPSBuZmNfZGlnaXRhbC5vXFxubmV0L25mYy9NYWtlZmlsZS0xMC1cXG5uZXQvbmZjL01ha2VmaWxlOjExOm5mYy1vYmpzIDo9IGNvcmUubyBuZXRsaW5rLm8gYWZfbmZjLm8gcmF3c29jay5vIGxsY3BfY29yZS5vIGxsY3BfY29tbWFuZHMubyBcXFxcXFxubmV0L25mYy9NYWtlZmlsZS0xMi1cXHRcXHRsbGNwX3NvY2sub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMToxOToyNC42OTgxNjE1OTNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTE2MzM3ODQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTkZDIENvbXBpbGF0aW9uIExhbmRzY2FwZSoqXG5cbk9rYXksIHNvIGBsbGNwX2NvcmUub2AgaW1tZWRpYXRlbHkgc3VnZ2VzdHMgTkZDIGludm9sdmVtZW50LiBJdCdzIGxpc3RlZCB1bmRlciBgbmZjLW9ianNgLCBzbyB0aGF0J3MgYSBwcmV0dHkgc3Ryb25nIGluZGljYXRvci4gTXkgaW50dWl0aW9uIHRlbGxzIG1lIHRoaXMgaXMgcHJvYmFibHkgbGlua2VkIHRvIHRoZSBgQ09ORklHX05GQ2AgY29uZmlndXJhdGlvbiBvcHRpb24uIE1ha2VzIHNlbnNlLCBnaXZlbiB0aGUgTkZDIG1vZHVsZSdzIG92ZXJhbGwgc3RydWN0dXJlLiBUaW1lIHRvIGRpdmUgaW50byBgbmV0L25mYy9NYWtlZmlsZWAgYW5kIGNvbmZpcm0gdGhlc2UgYXNzdW1wdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBidWlsZCBkZXBlbmRlbmNpZXMgYW5kIGNvbmRpdGlvbnMgZXhwbGljaXRseSBvdXRsaW5lZCB0aGVyZSB0byBnZXQgYSBmdWxsIHBpY3R1cmUuIExldCdzIHNlZSB3aGF0IHRoZSBNYWtlZmlsZSByZXZlYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDU4LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6MTk6MjguODE0NTAxMDQyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5OTY0NDYyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mYy1vYmpzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9NYWtlZmlsZT05PW9iai0kKENPTkZJR19ORkNfRElHSVRBTCkgKz0gbmZjX2RpZ2l0YWwub1xcbm5ldC9uZmMvTWFrZWZpbGUtMTAtXFxubmV0L25mYy9NYWtlZmlsZToxMTpuZmMtb2JqcyA6PSBjb3JlLm8gbmV0bGluay5vIGFmX25mYy5vIHJhd3NvY2subyBsbGNwX2NvcmUubyBsbGNwX2NvbW1hbmRzLm8gXFxcXFxcbm5ldC9uZmMvTWFrZWZpbGUtMTItXFx0XFx0bGxjcF9zb2NrLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6MTk6MjguOTE0NDc2NTE0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM3NzgyMTMxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IHF1ZXN0aW9uOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIEJ1aWxkIFByb2Nlc3MgZm9yIE5GQyBDb21wb25lbnRzKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGBuZmMub2Agb3IgYG5mYy1vYmpzYCBpcyBiZWluZyBidWlsdC4gVGhpcyBsaWtlbHkgcG9pbnRzIHRvIGEgY29yZSBORkMgY29tcG9uZW50IG9yIGEgY29sbGVjdGlvbiBvZiBvYmplY3QgZmlsZXMuIEdpdmVuIG15IGV4cGVydGlzZSwgbXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gdW5kZXJzdGFuZCB0aGUgYnVpbGQgc3lzdGVtIGludm9sdmVkLiBJcyBpdCBhIHN0YW5kYXJkIGBtYWtlYCBzZXR1cCwgcGVyaGFwcyB1c2luZyBhIGBNYWtlZmlsZWAsIG9yIGFyZSB3ZSBkZWFsaW5nIHdpdGggc29tZXRoaW5nIG1vcmUgc29waGlzdGljYXRlZCBsaWtlIENNYWtlLCBBdXRvdG9vbHMsIG9yIGV2ZW4gYSBjdXN0b20gYnVpbGQgc2NyaXB0P1xuXG5JJ2Qgc3RhcnQgYnkgbG9va2luZyBmb3IgYSB0b3AtbGV2ZWwgYE1ha2VmaWxlYCBvciBgQ01ha2VMaXN0cy50eHRgIGluIHRoZSBwcm9qZWN0IGRpcmVjdG9yeSwgYXNzdW1pbmcgdGhpcyBpcyBhIGxhcmdlciwgZXN0YWJsaXNoZWQgcHJvamVjdC4gVGhlIGdvYWwgaXMgdG8gdHJhY2UgdGhlIGRlcGVuZGVuY2llcyBhbmQgdGhlIGNvbW1hbmRzIHRoYXQgZ2VuZXJhdGUgdGhvc2Ugc3BlY2lmaWMgb2JqZWN0IGZpbGVzIG9yIGFuIG9iamVjdCBkaXJlY3RvcnkuXG5cbklmIGl0J3MgYSBgTWFrZWZpbGVgLCBJ4oCZbGwgYmUgc2Nhbm5pbmcgZm9yIHRhcmdldHMgdGhhdCBtZW50aW9uIGBuZmMub2Agb3IgYG5mYy1vYmpzYCwgbG9va2luZyBmb3IgcmVsZXZhbnQgcnVsZXMgYW5kIGRlcGVuZGVuY2llcy4gSSdkIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gaW5jbHVkZSBwYXRocywgY29tcGlsZXIgZmxhZ3MgKGxpa2UgYC1JYCBhbmQgYC1EYCksIGFuZCBsaW5rZXIgZmxhZ3MuIEknZCBhbHNvIGNoZWNrIGZvciB2YXJpYWJsZXMgdGhhdCBtaWdodCBiZSBpbnZvbHZlZC5cblxuSWYgaXQncyBDTWFrZSwgSSdkIHNlYXJjaCBmb3IgY29tbWFuZHMgbGlrZSBgYWRkX2xpYnJhcnlgLCBgdGFyZ2V0X3NvdXJjZXNgLCBgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXNgLCBhbmQsIGNyaXRpY2FsbHksIHRoZSB3YXkgYG5mYy5vYCBvciBgbmZjLW9ianNgIGlzIGFkZGVkIHRvIHRoZSBidWlsZCBwcm9jZXNzLiBJIHdvdWxkIGV4cGVjdCBzb21lIHZhcmlhYmxlIHdpbGwgYmUgdXNlZCB0byBnZW5lcmF0ZSB0aGUgYnVpbGQgcHJvY2Vzcy5cblxuSWYgbm8gb2J2aW91cyBidWlsZCBzeXN0ZW0gaXMgYXBwYXJlbnQsIEkgbWF5IGdvIHRocm91Z2ggZmlsZSBuYW1lcyBhbmQgZ3Vlc3MgYXQgaG93IGl0IG1pZ2h0IGJlIGJ1aWx0LiBJIG1heSBhbHNvIGNoZWNrIHRoZSBzb3VyY2UgY29kZSBmb3IgYW55IGBNYWtlZmlsZWAgb3IgYENNYWtlTGlzdHMudHh0YCBmaWxlcywgb3IgYW55IHNpbWlsYXIgZmlsZXMuXG5cbkVzc2VudGlhbGx5LCBJJ20gcGVlbGluZyBiYWNrIHRoZSBsYXllcnMgb2YgdGhlIGJ1aWxkIHN5c3RlbSB0byB1bmNvdmVyIHRoZSBleGFjdCBzZXF1ZW5jZSBvZiBzdGVwcyB0aGF0IHJlc3VsdCBpbiB0aG9zZSBzcGVjaWZpYyBvYmplY3QgZmlsZXMuIFVsdGltYXRlbHksIGtub3dpbmcgdGhhdCBwYXRoIGlzIGVzc2VudGlhbCBmb3IgYW55IG1vZGlmaWNhdGlvbnMgb3IgZGVlcGVyIHVuZGVyc3RhbmRpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NjksIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMToxOTozMy4yOTIyOTk0NDRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjExMjE1OTY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mYy5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9NYWtlZmlsZS01LVxcbm5ldC9uZmMvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfTkZDKSArPSBuZmMub1xcbm5ldC9uZmMvTWFrZWZpbGUtNy1vYmotJChDT05GSUdfTkZDX05DSSkgKz0gbmNpL1xcbi0tXFxubmV0L25mYy9NYWtlZmlsZT05PW9iai0kKENPTkZJR19ORkNfRElHSVRBTCkgKz0gbmZjX2RpZ2l0YWwub1xcbm5ldC9uZmMvTWFrZWZpbGUtMTAtXFxubmV0L25mYy9NYWtlZmlsZToxMTpuZmMtb2JqcyA6PSBjb3JlLm8gbmV0bGluay5vIGFmX25mYy5vIHJhd3NvY2subyBsbGNwX2NvcmUubyBsbGNwX2NvbW1hbmRzLm8gXFxcXFxcbm5ldC9uZmMvTWFrZWZpbGUtMTItXFx0XFx0bGxjcF9zb2NrLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6MTk6MzMuNTAzNTIyMTc5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ2MDg2NzU3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGV2YWx1YXRpbmcgdGhpcyBORkMgY29uZmlndXJhdGlvbjpcblxuKipBbmFseXppbmcgTkZDIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCBORkMgY29uZmlndXJhdGlvbiwgYW5kIGBDT05GSUdfTkZDYCBpcyB0aGUgbWFpbiB0b2dnbGUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgZWxzZSBpcyB0aWVkIHRvIGl0LiBMZXQncyBzZWUgaWYgdGhlcmUgYXJlIGFueSB2aXJ0dWFsIGRyaXZlcnMgdG8gY29uc2lkZXIuIEFyZSB3ZSB1c2luZyBhIHNpbXVsYXRlZCBvciB2aXJ0dWFsIE5GQyBpbnRlcmZhY2U/IEkgbmVlZCB0byBjaGVjayBmb3IgYENPTkZJR19ORkNfVklSVFVBTF9OQ0lgIG9yIHBlcmhhcHMgYENPTkZJR19ORkNfU0lNYCwgdGhvc2UgYXJlIHVzdWFsbHkgdGhlIGtleSB2aXJ0dWFsIG9wdGlvbnMuXG5cbkknbGwgbmVlZCB0byBkcmlsbCBkb3duIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgdG8gZ2V0IGEgZ29vZCBoYW5kbGUgb24gdGhpcy4gVGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgaXMgdGhlIGBkcml2ZXJzL25mYy9gIGRpcmVjdG9yeS4gVGhhdCdzIHdoZXJlIGFsbCB0aGUgTkZDLXJlbGF0ZWQgZHJpdmVycyBhbmQgbW9kdWxlcyBzaG91bGQgYmUuIFRoYXQgZGlyZWN0b3J5IHNob3VsZCBhbHNvIGhvbGQgdGhlIGZpbGVzIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hhdCBvcHRpb25zIGFyZSBhdmFpbGFibGUgYW5kIGhvdyB0aGV5J3JlIHJlbGF0ZWQgdG8gYENPTkZJR19ORkNgLiBOb3csIGxldCdzIHNlZSB3aGF0J3MgaW4gdGhhdCBkaXJlY3RvcnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MTIsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMToxOTozNi45NjQzOTE2MjZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzE1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmZjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJtZWlfcGh5LmNcIixcbiAgICBcIm1laV9waHkuaFwiLFxuICAgIFwibmZjc2ltLmNcIixcbiAgICBcInBvcnQxMDAuY1wiLFxuICAgIFwidHJmNzk3MGEuY1wiLFxuICAgIFwidmlydHVhbF9uY2lkZXYuY1wiXG4gIF0sXG4gIFwiU3ViZGlyc1wiOiBbXG4gICAgXCJmZHBcIixcbiAgICBcIm1pY3JvcmVhZFwiLFxuICAgIFwibmZjbXJ2bFwiLFxuICAgIFwibnhwLW5jaVwiLFxuICAgIFwicG41MzNcIixcbiAgICBcInBuNTQ0XCIsXG4gICAgXCJzM2Z3cm41XCIsXG4gICAgXCJzdC1uY2lcIixcbiAgICBcInN0MjFuZmNhXCIsXG4gICAgXCJzdDk1aGZcIlxuICBdXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMToxOTozNi45NjQ0NjAzMTZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA2MTMxODAwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIFZpcnR1YWwgTkZDIERyaXZlcnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgbmZjc2ltLmNgIGFuZCBgdmlydHVhbF9uY2lkZXYuY2AuIFRoZSBuYW1pbmcgY29udmVudGlvbiBzdHJvbmdseSBzdWdnZXN0cyB0aGVzZSBhcmUgdmlydHVhbCBkcml2ZXJzIGZvciBORkMgZGV2aWNlcywgd2hpY2ggaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBNeSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gYXNwZWN0cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBwYXJhbWV0ZXJzIGFuZCBzZXR0aW5ncyB0aGVzZSBkcml2ZXJzIGFyZSBleHBlY3RpbmcuIFRoYXQgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgcHJvcGVyIGludGVncmF0aW9uLCBlbXVsYXRpb24gc2V0dXAsIGFuZCBkZWJ1Z2dpbmcuIExldCdzIHNlZSB3aGF0IHRoZSBjb25maWd1cmF0aW9ucyByZXZlYWwgYWJvdXQgdGhlaXIgaW50ZW5kZWQgdXNlIGNhc2VzIGFuZCB1bmRlcmx5aW5nIGFzc3VtcHRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODU0LCJPdXRwdXRUb2tlbnMiOjYzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjE5OjQwLjAyNTc3OTk5MloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjUwNjk5MDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZjc2ltLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZmMvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZmMvTWFrZWZpbGU9MTA9b2JqLSQoQ09ORklHX05GQ19NRUlfUEhZKVxcdCs9IG1laV9waHkub1xcbmRyaXZlcnMvbmZjL01ha2VmaWxlOjExOm9iai0kKENPTkZJR19ORkNfU0lNKVxcdFxcdCs9IG5mY3NpbS5vXFxuZHJpdmVycy9uZmMvTWFrZWZpbGUtMTItb2JqLSQoQ09ORklHX05GQ19QT1JUMTAwKVxcdCs9IHBvcnQxMDAub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMToxOTo0MC4wOTA4NTQxMTdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0NDYyODc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZpcnR1YWxfbmNpZGV2Lm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZmMvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZmMvTWFrZWZpbGU9MTk9b2JqLSQoQ09ORklHX05GQ19TVDk1SEYpXFx0Kz0gc3Q5NWhmL1xcbmRyaXZlcnMvbmZjL01ha2VmaWxlOjIwOm9iai0kKENPTkZJR19ORkNfVklSVFVBTF9OQ0kpXFx0Kz0gdmlydHVhbF9uY2lkZXYub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMToxOTo0MC4xNDUzMjYxNTNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTY4MTE3MDczNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipORkMgRnV6emluZyBDb25maWd1cmF0aW9uIFRob3VnaHRzKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nLCB0byBnZXQgYSBzb2xpZCBORkMgZnV6emluZyBzZXR1cCBnb2luZywgSSBzaG91bGQgZGVmaW5pdGVseSBlbmFibGUgYENPTkZJR19ORkNfU0lNYCBhbmQgYENPTkZJR19ORkNfVklSVFVBTF9OQ0lgLiBUaG9zZSBzZWVtIGxpa2UgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnRzLiBUaGV5IHNob3VsZCBnaXZlIG1lIHNvbWUgc29saWQgdG9vbHMgdG8gd29yayB3aXRoIGZvciB0ZXN0aW5nLiBCdXQgYmVmb3JlIEkgZ28gdG9vIGZhciBkb3duIHRoYXQgcm9hZCwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBzb21ldGhpbmcuIExldCdzIG1ha2Ugc3VyZSB0aGF0IGBORkNfU0lNYCBvciBgTkZDX1ZJUlRVQUxfTkNJYCBkb24ndCBoYXZlIGEgZGlyZWN0IGRlcGVuZGVuY3kgb24gYE5GQ2AgaXRzZWxmLiBJIG5lZWQgdG8ga25vdyBpZiBJJ2xsIG5lZWQgdG8gZW5hYmxlIHRoYXQgdG9wLWxldmVsIGNvbmZpZyBmaXJzdC4gR290dGEgY292ZXIgYWxsIHRoZSBiYXNlcyB0byBhdm9pZCBhbnkgdW5leHBlY3RlZCBidWlsZCBlcnJvcnMgb3Igc2V0dXAgaXNzdWVzIGxhdGVyIG9uLiBOZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZm91bmRhdGlvbnMgYXJlIHN0YWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDI0NSwiT3V0cHV0VG9rZW5zIjo2NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciIsImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMToxOTo0NS44MjY0OTkwNDhaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk1OTg4NjIzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORkNfU0lNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmZjL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZmMvS2NvbmZpZz0yMT1jb25maWcgTkZDX01FSV9QSFlcXG4tLVxcbmRyaXZlcnMvbmZjL0tjb25maWctMzAtXFxuZHJpdmVycy9uZmMvS2NvbmZpZzozMTpjb25maWcgTkZDX1NJTVxcbmRyaXZlcnMvbmZjL0tjb25maWctMzItXFx0dHJpc3RhdGUgXFxcIk5GQyBoYXJkd2FyZSBzaW11bGF0b3IgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMToxOTo0NS45MjI0OTE0MDFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0Nzg1MjA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORkNfVklSVFVBTF9OQ0lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZmMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25mYy9LY29uZmlnPTQyPWNvbmZpZyBORkNfUE9SVDEwMFxcbi0tXFxuZHJpdmVycy9uZmMvS2NvbmZpZy01MS1cXG5kcml2ZXJzL25mYy9LY29uZmlnOjUyOmNvbmZpZyBORkNfVklSVFVBTF9OQ0lcXG5kcml2ZXJzL25mYy9LY29uZmlnLTUzLVxcdHRyaXN0YXRlIFxcXCJOQ0kgZGV2aWNlIHNpbXVsYXRvciBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjE5OjQ1Ljk3NzI4MTY5N1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODk1Nzk0ODE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIFJlY2VpdmluZyBGdW5jdGlvbnMgaW4gTExDUCoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgcmVjZWl2aW5nIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIExMQ1AgaW1wbGVtZW50YXRpb24uIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IGRhdGEgaXMgaGFuZGxlZCBhdCB0aGUgbG93ZXIgbGF5ZXJzIG9mIHRoZSBORkMgc3RhY2suIFNwZWNpZmljYWxseSwgSSB3YW50IHRvIHRha2UgYSBjbG9zZSBsb29rIGF0IGBfX25mY19sbGNwX3JlY3ZgIGFuZCBgbmZjX2xsY3BfcmVjdmAuIEknbSBjdXJpb3VzIGFib3V0IHRoZSBkaXN0aW5jdGlvbiBhbmQgaW50ZXJwbGF5IGJldHdlZW4gdGhvc2UgZnVuY3Rpb24gbmFtZXMuIEFyZSB3ZSBsb29raW5nIGF0IGEgbG93LWxldmVsLCBpbnRlcm5hbCBoZWxwZXIgdmVyc3VzIGEgaGlnaGVyLWxldmVsLCBtb3JlIHVzZXItZmFjaW5nIGVudHJ5IHBvaW50PyBJJ2xsIHByb2JhYmx5IGNoZWNrIHRoZSBjb250ZXh0IHRoZXkncmUgdXNlZCBpbiB3aXRoaW4gdGhlIGRyaXZlciB0byBkZXRlcm1pbmUgdGhlaXIgZGlzdGluY3Rpb24uIFdoYXQncyB0aGUgcXVldWUgbWFuYWdlbWVudCBsaWtlPyBJbnRlcnJ1cHQgaGFuZGxpbmc/IEVycm9yIGNvbmRpdGlvbnM/IEhvdyBkb2VzIHRoZSBjb3JlIGxvZ2ljIGRpZmZlciBiZXR3ZWVuIHRoZXNlIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9ucz8gSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCBJIGFtIHVwIHRvIGRhdGUgd2l0aCB0aGUgcmVjZWl2aW5nIGZsb3cuIEkgd2lsbCBiZWdpbiBieSBleGFtaW5pbmcgdGhlIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3MjQsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6MTk6NDkuODczMDc4MjIyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDcwNzc4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX25mY19sbGNwX3JlY3ZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25mYy9sbGNwX2NvcmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL2xsY3BfY29yZS5jPTE1NDM9c3RhdGljIHZvaWQgbmZjX2xsY3Bfcnhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1NjUtXFxubmV0L25mYy9sbGNwX2NvcmUuYzoxNTY2OnN0YXRpYyB2b2lkIF9fbmZjX2xsY3BfcmVjdihzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTU2Ny17XFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jPTE1Nzg9dm9pZCBuZmNfbGxjcF9yZWN2KHZvaWQgKmRhdGEsIHN0cnVjdCBza19idWZmICpza2IsIGludCBlcnIpXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1ODYtXFxubmV0L25mYy9sbGNwX2NvcmUuYzoxNTg3OlxcdF9fbmZjX2xsY3BfcmVjdihsb2NhbCwgc2tiKTtcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1ODgtfVxcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYz0xNTkwPWludCBuZmNfbGxjcF9kYXRhX3JlY2VpdmVkKHN0cnVjdCBuZmNfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1OTktXFxubmV0L25mYy9sbGNwX2NvcmUuYzoxNjAwOlxcdF9fbmZjX2xsY3BfcmVjdihsb2NhbCwgc2tiKTtcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE2MDEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjE5OjQ5LjkyNzc5MTQ2OFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjY0MDMyMjgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUgd2hhdCBJJ20gdGhpbmtpbmcgaGVyZS5cblxuKipUcmFjaW5nIHRoZSBDYWxsIFBhdGggb2YgYG5mY19sbGNwX3JlY3ZgKipcblxuQWxyaWdodCwgc28gYF9fbmZjX2xsY3BfcmVjdmAgaXMgb24gdGhlIHJlY2VpdmluZyBlbmQsIGNhbGxlZCBieSBib3RoIGBuZmNfbGxjcF9yZWN2YCBhbmQgYG5mY19sbGNwX2RhdGFfcmVjZWl2ZWRgLiBUaGF0IG11Y2ggaXMgY2xlYXIuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCwgaW4gbXkgbGluZSBvZiBpbnZlc3RpZ2F0aW9uLCBpcyB0byB1bmRlcnN0YW5kIHRoZSBvcmlnaW4gb2YgKnRob3NlKiBjYWxscy4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSBgbmZjX2xsY3BfcmVjdmAgdG8gZmlndXJlIG91dCB3aGVyZSBpdCdzIGJlaW5nIGludm9rZWQuIEtub3dpbmcgdGhlIGNhbGwgZ3JhcGggd2lsbCBnaXZlIG1lIHRoZSBiaWdnZXIgcGljdHVyZSBvZiB0aGUgZGF0YSBmbG93IGFuZCBob3cgdGhpcyBmdW5jdGlvbiBmaXRzIGludG8gdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLiBUaW1lIHRvIGRpZyBhIGJpdCBkZWVwZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzNjUsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMToxOTo1My4xOTE4MjU3NTlaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5ODEwMzQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mY19sbGNwX3JlY3ZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25mYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9sbGNwLmg9MjIzPWludCBuZmNfbGxjcF9wYXJzZV9jb25uZWN0aW9uX3RsdihzdHJ1Y3QgbmZjX2xsY3Bfc29jayAqc29jayxcXG4tLVxcbm5ldC9uZmMvbGxjcC5oLTIyNi0vKiBDb21tYW5kcyBBUEkgKi9cXG5uZXQvbmZjL2xsY3AuaDoyMjc6dm9pZCBuZmNfbGxjcF9yZWN2KHZvaWQgKmRhdGEsIHN0cnVjdCBza19idWZmICpza2IsIGludCBlcnIpO1xcbm5ldC9uZmMvbGxjcC5oLTIyOC11OCAqbmZjX2xsY3BfYnVpbGRfdGx2KHU4IHR5cGUsIGNvbnN0IHU4ICp2YWx1ZSwgdTggdmFsdWVfbGVuZ3RoLCB1OCAqdGx2X2xlbmd0aCk7XFxuLS1cXG5uZXQvbmZjL2xsY3AuaD0yMzM9dm9pZCBuZmNfbGxjcF9mcmVlX3NkcF90bHZfbGlzdChzdHJ1Y3QgaGxpc3RfaGVhZCAqc2RwX2hlYWQpO1xcbm5ldC9uZmMvbGxjcC5oOjIzNDp2b2lkIG5mY19sbGNwX3JlY3Yodm9pZCAqZGF0YSwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGVycik7XFxubmV0L25mYy9sbGNwLmgtMjM1LWludCBuZmNfbGxjcF9zZW5kX3N5bW0oc3RydWN0IG5mY19kZXYgKmRldik7XFxuLS1cXG5uZXQvbmZjL2xsY3BfY29tbWFuZHMuYz0zNzE9aW50IG5mY19sbGNwX3NlbmRfc3ltbShzdHJ1Y3QgbmZjX2RldiAqZGV2KVxcbi0tXFxubmV0L25mYy9sbGNwX2NvbW1hbmRzLmMtMzk5LVxcdGVyciA9IG5mY19kYXRhX2V4Y2hhbmdlKGRldiwgbG9jYWwtXFx1MDAzZXRhcmdldF9pZHgsIHNrYixcXG5uZXQvbmZjL2xsY3BfY29tbWFuZHMuYzo0MDA6XFx0XFx0XFx0XFx0IG5mY19sbGNwX3JlY3YsIGxvY2FsKTtcXG5uZXQvbmZjL2xsY3BfY29tbWFuZHMuYy00MDEtb3V0Olxcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYz03NjE9c3RhdGljIHZvaWQgbmZjX2xsY3BfdHhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTc5Ny1cXHRcXHRcXHRyZXQgPSBuZmNfZGF0YV9leGNoYW5nZShsb2NhbC1cXHUwMDNlZGV2LCBsb2NhbC1cXHUwMDNldGFyZ2V0X2lkeCxcXG5uZXQvbmZjL2xsY3BfY29yZS5jOjc5ODpcXHRcXHRcXHRcXHRcXHRcXHRza2IsIG5mY19sbGNwX3JlY3YsIGxvY2FsKTtcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTc5OS1cXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM9ODQ5PXN0YXRpYyBjb25zdCB1OCAqbmZjX2xsY3BfY29ubmVjdF9zbihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzaXplX3QgKnNuX2xlbilcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtODcyLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM6ODczOnN0YXRpYyB2b2lkIG5mY19sbGNwX3JlY3ZfdWkoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCxcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTg3NC1cXHRcXHRcXHQgICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTkwOC1cXG5uZXQvbmZjL2xsY3BfY29yZS5jOjkwOTpzdGF0aWMgdm9pZCBuZmNfbGxjcF9yZWN2X2Nvbm5lY3Qoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCxcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTkxMC1cXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jPTEwNDA9aW50IG5mY19sbGNwX3F1ZXVlX2lfZnJhbWVzKHN0cnVjdCBuZmNfbGxjcF9zb2NrICpzb2NrKVxcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYy0xMDY3LVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTA2ODpzdGF0aWMgdm9pZCBuZmNfbGxjcF9yZWN2X2hkbGMoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCxcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTEwNjktXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTExNTUtXFxubmV0L25mYy9sbGNwX2NvcmUuYzoxMTU2OnN0YXRpYyB2b2lkIG5mY19sbGNwX3JlY3ZfZGlzYyhzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLFxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTE1Ny1cXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTIwMC1cXG5uZXQvbmZjL2xsY3BfY29yZS5jOjEyMDE6c3RhdGljIHZvaWQgbmZjX2xsY3BfcmVjdl9jYyhzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLFxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTIwMi1cXHRcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTEyNDUtXFxubmV0L25mYy9sbGNwX2NvcmUuYzoxMjQ2OnN0YXRpYyB2b2lkIG5mY19sbGNwX3JlY3ZfZG0oc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCxcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTEyNDctXFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYy0xMjgzLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTI4NDpzdGF0aWMgdm9pZCBuZmNfbGxjcF9yZWN2X3NubChzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLFxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTI4NS1cXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNDM1LVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTQzNjpzdGF0aWMgdm9pZCBuZmNfbGxjcF9yZWN2X2FnZihzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTQzNy17XFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jPTE0ODA9c3RhdGljIHZvaWQgbmZjX2xsY3Bfcnhfc2tiKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1MDAtXFx0XFx0cHJfZGVidWcoXFxcIlVJXFxcXG5cXFwiKTtcXG5uZXQvbmZjL2xsY3BfY29yZS5jOjE1MDE6XFx0XFx0bmZjX2xsY3BfcmVjdl91aShsb2NhbCwgc2tiKTtcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1MDItXFx0XFx0YnJlYWs7XFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1MDUtXFx0XFx0cHJfZGVidWcoXFxcIkNPTk5FQ1RcXFxcblxcXCIpO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTUwNjpcXHRcXHRuZmNfbGxjcF9yZWN2X2Nvbm5lY3QobG9jYWwsIHNrYik7XFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTA3LVxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTEwLVxcdFxcdHByX2RlYnVnKFxcXCJESVNDXFxcXG5cXFwiKTtcXG5uZXQvbmZjL2xsY3BfY29yZS5jOjE1MTE6XFx0XFx0bmZjX2xsY3BfcmVjdl9kaXNjKGxvY2FsLCBza2IpO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTUxMi1cXHRcXHRicmVhaztcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTUxNS1cXHRcXHRwcl9kZWJ1ZyhcXFwiQ0NcXFxcblxcXCIpO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTUxNjpcXHRcXHRuZmNfbGxjcF9yZWN2X2NjKGxvY2FsLCBza2IpO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTUxNy1cXHRcXHRicmVhaztcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTUyMC1cXHRcXHRwcl9kZWJ1ZyhcXFwiRE1cXFxcblxcXCIpO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTUyMTpcXHRcXHRuZmNfbGxjcF9yZWN2X2RtKGxvY2FsLCBza2IpO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTUyMi1cXHRcXHRicmVhaztcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTUyNS1cXHRcXHRwcl9kZWJ1ZyhcXFwiU05MXFxcXG5cXFwiKTtcXG5uZXQvbmZjL2xsY3BfY29yZS5jOjE1MjY6XFx0XFx0bmZjX2xsY3BfcmVjdl9zbmwobG9jYWwsIHNrYik7XFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTI3LVxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTMyLVxcdFxcdHByX2RlYnVnKFxcXCJJIGZyYW1lXFxcXG5cXFwiKTtcXG5uZXQvbmZjL2xsY3BfY29yZS5jOjE1MzM6XFx0XFx0bmZjX2xsY3BfcmVjdl9oZGxjKGxvY2FsLCBza2IpO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTUzNC1cXHRcXHRicmVhaztcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTUzNy1cXHRcXHRwcl9kZWJ1ZyhcXFwiQUdGIGZyYW1lXFxcXG5cXFwiKTtcXG5uZXQvbmZjL2xsY3BfY29yZS5jOjE1Mzg6XFx0XFx0bmZjX2xsY3BfcmVjdl9hZ2YobG9jYWwsIHNrYik7XFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTM5LVxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYz0xNTQzPXN0YXRpYyB2b2lkIG5mY19sbGNwX3J4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTY1LVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTU2NjpzdGF0aWMgdm9pZCBfX25mY19sbGNwX3JlY3Yoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1Njcte1xcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTc3LVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTU3ODp2b2lkIG5mY19sbGNwX3JlY3Yodm9pZCAqZGF0YSwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGVycilcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1Nzkte1xcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTg2LVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTU4NzpcXHRfX25mY19sbGNwX3JlY3YobG9jYWwsIHNrYik7XFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTg4LX1cXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM9MTU5MD1pbnQgbmZjX2xsY3BfZGF0YV9yZWNlaXZlZChzdHJ1Y3QgbmZjX2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTk5LVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTYwMDpcXHRfX25mY19sbGNwX3JlY3YobG9jYWwsIHNrYik7XFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNjAxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMToxOTo1My4yOTE2NDM1MDJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY1NzA3Mjk0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRoZSBleHBlcnQ6XG5cbioqVW5kZXJzdGFuZGluZyB0aGUgTExDUCBEYXRhIEZsb3cqKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIHBpbiBkb3duIHRoZSBkYXRhIGVudHJ5IHBvaW50cyBmb3IgdGhlIExMQ1AgKExpbmsgTGF5ZXIgQ29udHJvbCBQcm90b2NvbCkgaW4gdGhpcyBORkMgaW1wbGVtZW50YXRpb24uIEknbSBmb2N1c2luZyBvbiB0aGUgZGF0YSByZWNlcHRpb24gcGF0aC4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gaGluZ2Ugb24gdHdvIGZ1bmN0aW9uczogYG5mY19sbGNwX2RhdGFfcmVjZWl2ZWRgIGFuZCBgbmZjX2xsY3BfcmVjdmAuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCBgbmZjX2xsY3BfZGF0YV9yZWNlaXZlZGAgd2FzIGxpa2VseSBhIGNhbGxiYWNrIHRyaWdnZXJlZCBkdXJpbmcgZGF0YSBleGNoYW5nZSwgbWF5YmUgb3JpZ2luYXRpbmcgZnJvbSBzb21ldGhpbmcgbGlrZSBgbmZjX2RhdGFfZXhjaGFuZ2VgLiBCdXQgdGhhdCdzIG5vdCBxdWl0ZSByaWdodC4gQWZ0ZXIgYSBxdWljayBsb29rLCBpdCdzIGFjdHVhbGx5IGFuIGV4cG9ydGVkIGZ1bmN0aW9uLCB3aGljaCBjaGFuZ2VzIHRoZSBwaWN0dXJlIHNsaWdodGx5LCBhbmQgdGVsbHMgbWUgdGhlIGRlc2lnbiBpcyBhIGJpdCBkaWZmZXJlbnQuIEknbGwgbmVlZCB0byBnbyBkZWVwZXIgaW50byB0aGUgY2FsbCBoaWVyYXJjaHkgdG8gdW5kZXJzdGFuZCAqaG93KiBpdCdzIGJlaW5nIGNhbGxlZCwgYnV0IHRoaXMgYXQgbGVhc3QgZ2l2ZXMgbWUgYSBrZXkgZW50cnkgcG9pbnQgdG8gdHJhY2UgdGhlIGRhdGEgZmxvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODA3NywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjE5OjU2Ljk0ODcxODU2NFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjA5MjI2MzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZjX2xsY3BfZGF0YV9yZWNlaXZlZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL2NvcmUuYz02NTU9aW50IG5mY190bV9kYXRhX3JlY2VpdmVkKHN0cnVjdCBuZmNfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbmZjL2NvcmUuYy02NjItXFxubmV0L25mYy9jb3JlLmM6NjYzOlxcdHJldHVybiBuZmNfbGxjcF9kYXRhX3JlY2VpdmVkKGRldiwgc2tiKTtcXG5uZXQvbmZjL2NvcmUuYy02NjQtfVxcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYz0xNTc4PXZvaWQgbmZjX2xsY3BfcmVjdih2b2lkICpkYXRhLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgZXJyKVxcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTg5LVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTU5MDppbnQgbmZjX2xsY3BfZGF0YV9yZWNlaXZlZChzdHJ1Y3QgbmZjX2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTU5MS17XFxuLS1cXG5uZXQvbmZjL25mYy5oPTUyPXU4ICpuZmNfbGxjcF9nZW5lcmFsX2J5dGVzKHN0cnVjdCBuZmNfZGV2ICpkZXYsIHNpemVfdCAqZ2VuZXJhbF9ieXRlc19sZW4pO1xcbm5ldC9uZmMvbmZjLmg6NTM6aW50IG5mY19sbGNwX2RhdGFfcmVjZWl2ZWQoc3RydWN0IG5mY19kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxubmV0L25mYy9uZmMuaC01NC1zdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKm5mY19sbGNwX2ZpbmRfbG9jYWwoc3RydWN0IG5mY19kZXYgKmRldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjE5OjU3LjAwOTY0Njc1WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNjk3ODM0MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkRlY29uc3RydWN0aW5nIHRoZSBEYXRhIEZsb3cqKlxuXG5SaWdodCwgc28gSSdtIHRyeWluZyB0byBnZXQgYSBoYW5kbGUgb24gdGhpcyBzeXN0ZW0uIEl0J3MgY2xlYXIgdGhhdCBgbmZjX3RtX2RhdGFfcmVjZWl2ZWRgIGlzIGEgY3JpdGljYWwgZnVuY3Rpb24uIFRoZSBpbXBsaWNhdGlvbiBoZXJlIGlzIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyAqdHJpZ2dlcmVkKiBvciAqaW52b2tlZCogZnJvbSB3aXRoaW4gdGhlIGRyaXZlcnMgdGhlbXNlbHZlcy4gVGhpcyBpcyBzaWduaWZpY2FudC4gSXQgdGVsbHMgbWUgdGhhdCB0aGUgbG93LWxldmVsIGludGVyYWN0aW9uIHdpdGggdGhlIE5GQyBoYXJkd2FyZSwgdGhlIGFjdHVhbCBieXRlLWxldmVsIGNvbW11bmljYXRpb24sIGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGVzZSBkcml2ZXJzLiBUaGUgZGF0YSBwcm9jZXNzaW5nIGFuZCBpbnRlcnByZXRhdGlvbiBsaWtlbHkgYmVnaW5zIHdpdGhpbiB0aGUgZHJpdmVyLCB0aGVuIGNhbGxzIHRoaXMgYG5mY190bV9kYXRhX3JlY2VpdmVkYCBmdW5jdGlvbiB0byBwYXNzIHRoZSByZWxldmFudCBpbmZvcm1hdGlvbiB1cHdhcmRzLiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoYXQgZnVuY3Rpb24gY2FsbCB0byB0aGUgc3BlY2lmaWMgZHJpdmVyKHMpIGludm9sdmVkIHRvIHJlYWxseSB1bmRlcnN0YW5kIHRoZSBkYXRhIHBpcGVsaW5lLiBVbmRlcnN0YW5kaW5nIHRoaXMgd2lsbCBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg3NDgsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMToyMDowMC4yNzk0MzIxOVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg1NjY5MzA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mY190bV9kYXRhX3JlY2VpdmVkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmZjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25mYy9taWNyb3JlYWQvbWljcm9yZWFkLmM9NTQ3PXN0YXRpYyBpbnQgbWljcm9yZWFkX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldiwgdTggcGlwZSxcXG4tLVxcbmRyaXZlcnMvbmZjL21pY3JvcmVhZC9taWNyb3JlYWQuYy01NzMtXFxuZHJpdmVycy9uZmMvbWljcm9yZWFkL21pY3JvcmVhZC5jOjU3NDpcXHRcXHRyID0gbmZjX3RtX2RhdGFfcmVjZWl2ZWQoaGRldi1cXHUwMDNlbmRldiwgc2tiKTtcXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvbWljcm9yZWFkLmMtNTc1LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZmMvbWljcm9yZWFkL21pY3JvcmVhZC5jLTYwMi1cXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvbWljcm9yZWFkLmM6NjAzOlxcdFxcdHIgPSBuZmNfdG1fZGF0YV9yZWNlaXZlZChoZGV2LVxcdTAwM2VuZGV2LCBza2IpO1xcbmRyaXZlcnMvbmZjL21pY3JvcmVhZC9taWNyb3JlYWQuYy02MDQtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25mYy9wbjUzMy9wbjUzMy5jPTEwNzE9c3RhdGljIGludCBwbjUzM190bV9nZXRfZGF0YV9jb21wbGV0ZShzdHJ1Y3QgcG41MzMgKmRldiwgdm9pZCAqYXJnLFxcbi0tXFxuZHJpdmVycy9uZmMvcG41MzMvcG41MzMuYy0xMTA3LVxcbmRyaXZlcnMvbmZjL3BuNTMzL3BuNTMzLmM6MTEwODpcXHRyZXR1cm4gbmZjX3RtX2RhdGFfcmVjZWl2ZWQoZGV2LVxcdTAwM2VuZmNfZGV2LCBza2IpO1xcbmRyaXZlcnMvbmZjL3BuNTMzL3BuNTMzLmMtMTEwOS1cXG4tLVxcbmRyaXZlcnMvbmZjL3BuNTQ0L3BuNTQ0LmM9NzE1PXN0YXRpYyBpbnQgcG41NDRfaGNpX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldiwgdTggcGlwZSwgdTggZXZlbnQsXFxuLS1cXG5kcml2ZXJzL25mYy9wbjU0NC9wbjU0NC5jLTc1OC1cXHRcXHRza2JfcHVsbChza2IsIDIpO1xcbmRyaXZlcnMvbmZjL3BuNTQ0L3BuNTQ0LmM6NzU5OlxcdFxcdHJldHVybiBuZmNfdG1fZGF0YV9yZWNlaXZlZChoZGV2LVxcdTAwM2VuZGV2LCBza2IpO1xcbmRyaXZlcnMvbmZjL3BuNTQ0L3BuNTQ0LmMtNzYwLVxcdGRlZmF1bHQ6XFxuLS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYz0zMDQ9c3RhdGljIGludCBzdDIxbmZjYV90bV9yZWN2X2RlcF9yZXEoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LFxcbi0tXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmMtMzQyLVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jOjM0MzpcXHRyZXR1cm4gbmZjX3RtX2RhdGFfcmVjZWl2ZWQoaGRldi1cXHUwMDNlbmRldiwgc2tiKTtcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYy0zNDQtfVxcbi0tXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmM9NTUzPXN0YXRpYyB2b2lkIHN0MjFuZmNhX2ltX3JlY3ZfZGVwX3Jlc19jYih2b2lkICpjb250ZXh0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmMtNTk0LVxcdFxcdFxcdHNrYl9wdWxsKHNrYiwgc2l6ZSk7XFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmM6NTk1OlxcdFxcdFxcdG5mY190bV9kYXRhX3JlY2VpdmVkKGluZm8tXFx1MDAzZWhkZXYtXFx1MDAzZW5kZXYsIHNrYik7XFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmMtNTk2LVxcdFxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMToyMDowMC40NjUxMDczMzdaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcyNDI4NTgxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgRGF0YSBGbG93IGluIE5GQyBSZWNlcHRpb24qKlxuXG5SaWdodCwgc28gYG5mY190bV9kYXRhX3JlY2VpdmVkYCBpcyB0aGUgY3J1Y2lhbCBmdW5jdGlvbiwgdGhlIGVudHJ5IHBvaW50IGZvciBoYW5kbGluZyBpbmNvbWluZyBkYXRhIGZyb20gdGhlIHBoeXNpY2FsIE5GQyBkcml2ZXJzLiBUaGF0J3MgY2xlYXIuIEJ1dCBub3cgSSBuZWVkIHRvIHRyYWNlICphbGwqIHRoZSBwb3NzaWJsZSBkYXRhIHBhdGhzLiBJJ3ZlIGdvdCB0byBjb25zaWRlciBub3QganVzdCB0aGUgb2J2aW91cyBoYXJkd2FyZSBpbnRlcmFjdGlvbnMgYnV0IGFsc28gdGhlIHNpbXVsYXRpb24gZW52aXJvbm1lbnRzLiBTcGVjaWZpY2FsbHksIHdoYXQgYWJvdXQgdGhlIHNpbXVsYXRlZCBORkMgbGF5ZXJzPyBIb3cgZG9lcyB0aGUgZGF0YSBwcm9wYWdhdGUgdGhyb3VnaCBgbmZjc2ltYCBvciBgdmlydHVhbF9uY2lkZXZgPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGV5IGFsc28gY2FsbCBgbmZjX3RtX2RhdGFfcmVjZWl2ZWRgIChvciBhbiBlcXVpdmFsZW50KSBhbmQgaG93IHRoZWlyIGRhdGEgZ2V0cyBwYXNzZWQgdG8gdGhhdCBwb2ludC4gVGhpcyBpcyBjcnVjaWFsIGZvciB2ZXJpZnlpbmcgdGhlIHJvYnVzdG5lc3Mgb2YgdGhlIHN5c3RlbTsgdG8gZW5zdXJlIHRoYXQgYWxsIGRhdGEgaXMgaGFuZGxlZCBjb25zaXN0ZW50bHksIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBvcmlnaW5hdGVzIGZyb20gYSBwaHlzaWNhbCBjaGlwIG9yIGEgc2ltdWxhdGlvbi4gVGhpcyBpcyB0aGUga2V5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5Nzc3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6MjA6MDQuMTg5Mzk1MjM0WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODQ1Nzk5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZmNfdG1fZGF0YV9yZWNlaXZlZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL2NvcmUuYz02NTM9RVhQT1JUX1NZTUJPTChuZmNfZ2V0X2xvY2FsX2dlbmVyYWxfYnl0ZXMpO1xcbm5ldC9uZmMvY29yZS5jLTY1NC1cXG5uZXQvbmZjL2NvcmUuYzo2NTU6aW50IG5mY190bV9kYXRhX3JlY2VpdmVkKHN0cnVjdCBuZmNfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L25mYy9jb3JlLmMtNjU2LXtcXG4tLVxcbm5ldC9uZmMvY29yZS5jLTY2NC19XFxubmV0L25mYy9jb3JlLmM6NjY1OkVYUE9SVF9TWU1CT0wobmZjX3RtX2RhdGFfcmVjZWl2ZWQpO1xcbm5ldC9uZmMvY29yZS5jLTY2Ni1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDc3PXN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMjc0LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMjc1OlxcdHJjID0gbmZjX3RtX2RhdGFfcmVjZWl2ZWQoZGRldi1cXHUwMDNlbmZjX2RldiwgcmVzcCk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEyNzYtXFx0aWYgKHJjKVxcbi0tXFxubmV0L25mYy9uY2kvZGF0YS5jPTIxND1zdGF0aWMgdm9pZCBuY2lfYWRkX3J4X2RhdGFfZnJhZyhzdHJ1Y3QgbmNpX2RldiAqbmRldixcXG4tLVxcbm5ldC9uZmMvbmNpL2RhdGEuYy0yNjEtXFx0XFx0LyogRGF0YSByZWNlaXZlZCBpbiBUYXJnZXQgbW9kZSwgZm9yd2FyZCB0byBuZmMgY29yZSAqL1xcbm5ldC9uZmMvbmNpL2RhdGEuYzoyNjI6XFx0XFx0ZXJyID0gbmZjX3RtX2RhdGFfcmVjZWl2ZWQobmRldi1cXHUwMDNlbmZjX2Rldiwgc2tiKTtcXG5uZXQvbmZjL25jaS9kYXRhLmMtMjYzLVxcdFxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjIwOjA0LjI1Nzg1ODc5OVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MzcyMjc2OTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBORkMgRGF0YSBSZWNlcHRpb24gUGF0aHMqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIE5GQyBkYXRhIHJlY2VwdGlvbiBhbmQgdHJ5aW5nIHRvIGlkZW50aWZ5IGtleSBlbnRyeSBwb2ludHMuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIHRha2VzIG1lIHRocm91Z2ggYG5jaV9hZGRfcnhfZGF0YV9mcmFnYCBpbiBgbmV0L25mYy9uY2kvZGF0YS5jYC4gSSBzZWUgaXQgdWx0aW1hdGVseSBjYWxscyBgbmZjX3RtX2RhdGFfcmVjZWl2ZWRgLiBTaW5jZSBgbmNpX2FkZF9yeF9kYXRhX2ZyYWdgIGlzIHBhcnQgb2YgdGhlIE5DSSBsYXllciwgd2hpY2ggY2FuIGJlIGluc3RhbnRpYXRlZCBieSBzb21ldGhpbmcgbGlrZSBgdmlydHVhbF9uY2lkZXZgLCBJJ20gbG9va2luZyBmb3IgYSBjb25maWd1cmF0aW9uIHRoYXQgaW5jbHVkZXMgZWl0aGVyIGBDT05GSUdfTkZDX1ZJUlRVQUxfTkNJYCBvciBgQ09ORklHX05GQ19OQ0lgLiBUaG9zZSBzZWVtIGxpa2Ugc29saWQgb3B0aW9ucyB0byBzdGFydCB3aXRoLlxuXG5JIGFsc28gc2VlIHRoYXQgYENPTkZJR19ORkNfU0lNYCB1dGlsaXplcyB0aGUgYG5mY19kaWdpdGFsYCBtb2R1bGUuIEluIHRoYXQgbW9kdWxlLCBgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXFgIGFsc28gY2FsbHMgYG5mY190bV9kYXRhX3JlY2VpdmVkYC4gU28sIGBDT05GSUdfTkZDX1NJTWAgYW5kIGBDT05GSUdfTkZDX0RJR0lUQUxgIGFyZSB3b3J0aCBjb25zaWRlcmluZyBhcyB3ZWxsLlxuXG5Ob3csIEknbSBzaGlmdGluZyBteSBhdHRlbnRpb24gdG8gTExDUCBhbmQgaXRzIHJvbGUgaW4gaGFuZGxpbmcgcmVjZWl2ZWQgZGF0YS4gTGV0J3Mgc2VlLi4uSSdtIGdvaW5nIHRvIGxvb2sgYXQgYF9fbmZjX2xsY3BfcmVjdmAgYW5kIGBuZmNfbGxjcF9yZWN2YC4gSSBrbm93IHRoYXQgYG5mY19sbGNwX3JlY3ZgIGlzIHRyaWdnZXJlZCBhcyBhIGNhbGxiYWNrIGZyb20gYG5mY19kYXRhX2V4Y2hhbmdlYC4gTm93LCB3aGVyZSBpcyBgbmZjX2RhdGFfZXhjaGFuZ2VgIGJlaW5nIGNhbGxlZD8gQWgsIGl0IGlzIGNhbGxlZCBmcm9tIGBuZmNfbGxjcF90eF93b3JrYCBhbmQgYG5mY19sbGNwX3NlbmRfc3ltbWAuIEFscmlnaHQsIHRoaXMgc3VnZ2VzdHMgYSBtb3JlIHNwZWNpZmljIHNldCBvZiBmdW5jdGlvbiBzeW1ib2xzIHRvIGZvY3VzIG9uIGhlcmUuXG5cbkJhc2VkIG9uIHRoaXMgdHJhdmVyc2FsLCBteSBjb3JlIGZvY3VzIHN5bWJvbHMgc2hvdWxkIGJlOiBgbmZjX2xsY3BfcmVjdmAsIGBuZmNfbGxjcF9kYXRhX3JlY2VpdmVkYCwgYF9fbmZjX2xsY3BfcmVjdmAsIGBuZmNfbGxjcF9yeF93b3JrYCwgYW5kIGBuZmNfbGxjcF9yeF9za2JgLlxuXG5Ob3csIGJlZm9yZSBJIG1vdmUgb24sIEkgd2FudCB0byB2ZXJpZnkgdGhhdCBgbmZjX2xsY3Bfcnhfc2tiYCBpcywgaW4gZmFjdCwgYSByZWxldmFudCBmb2N1cyBzeW1ib2wgdG8gcmV2aWV3LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDQ3MSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMToyMDoxMC42MzAxMzg3ODNaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzMDEwNDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mY19sbGNwX3J4X3NrYlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjL2xsY3BfY29yZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvbGxjcF9jb3JlLmM9MjE9c3RhdGljIERFRklORV9TUElOTE9DSyhsbGNwX2RldmljZXNfbG9jayk7XFxubmV0L25mYy9sbGNwX2NvcmUuYy0yMi1cXG5uZXQvbmZjL2xsY3BfY29yZS5jOjIzOnN0YXRpYyB2b2lkIG5mY19sbGNwX3J4X3NrYihzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTI0LVxcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYz0xNDM2PXN0YXRpYyB2b2lkIG5mY19sbGNwX3JlY3ZfYWdmKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE0NzEtXFxubmV0L25mYy9sbGNwX2NvcmUuYzoxNDcyOlxcdFxcdG5mY19sbGNwX3J4X3NrYihsb2NhbCwgbmV3X3NrYik7XFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNDczLVxcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNDc5LVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTQ4MDpzdGF0aWMgdm9pZCBuZmNfbGxjcF9yeF9za2Ioc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE0ODEte1xcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYz0xNTQzPXN0YXRpYyB2b2lkIG5mY19sbGNwX3J4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTU4LVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTU1OTpcXHRuZmNfbGxjcF9yeF9za2IobG9jYWwsIHNrYik7XFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTYwLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMToyMDoxMC42OTMxNTQ5NjlaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzA4MTk5OTE2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipMTENQIFBhY2tldCBSZWNlcHRpb24gRmxvdyoqXG5cbk9rYXksIHNvIEknbSB6ZXJvaW5nIGluIG9uIHRoZSBjb3JlIG9mIGhvdyBMTENQIHBhY2tldHMgYXJlIGhhbmRsZWQgb24gdGhpcyBzeXN0ZW0uIEl0IGxvb2tzIGxpa2UgYG5mY19sbGNwX3J4X3NrYmAgaXMgdGhlIGJpZyBrYWh1bmEsIHRoZSBtYWluIGRpc3BhdGNoZXIgZm9yIGFueSBpbmNvbWluZyBMTENQIHBhY2tldHMuIFRoYXQgbWFrZXMgc2Vuc2U7IGl0J3MgdGhlIHVsdGltYXRlIGRlc3RpbmF0aW9uLiBOb3csIGBuZmNfbGxjcF9yeF93b3JrYCBpcyBpbnRlcmVzdGluZ+KAlGl0IGRlcXVldWVzIHRoZSBgc2tiYCBhbmQgKnRoZW4qIGNhbGxzIGBuZmNfbGxjcF9yeF9za2JgLiBTbywgaXQgYWN0cyBhcyBhIHdvcmsgcXVldWUgaGFuZGxlciwgcHJvY2Vzc2luZyB0aGUgcmVjZWl2ZWQgZGF0YS4gQW5kIHRoZSBwb2ludCBvZiBlbnRyeSBzZWVtcyB0byBiZSBgX19uZmNfbGxjcF9yZWN2YCwgd2hpY2ggcXVldWVzIHRoZSBgc2tiYCBhbmQgc2NoZWR1bGVzIHRoZSB3b3JrcXVldWUgdGhyb3VnaCBgbmZjX2xsY3Bfcnhfd29ya2AuIFRoYXQgaW1tZWRpYXRlbHkgZ2l2ZXMgbWUgYSBnb29kIGlkZWEgb2YgdGhlIGV4ZWN1dGlvbiBwYXRoLlxuXG5HaXZlbiB0aGlzLCBJIHNob3VsZCBwcm9iYWJseSBmb2N1cyBteSBhdHRlbnRpb24gb24gdGhlc2Ugc3ltYm9sczogYF9fbmZjX2xsY3BfcmVjdmAsIGBuZmNfbGxjcF9yZWN2YCwgYG5mY19sbGNwX2RhdGFfcmVjZWl2ZWRgLCBgbmZjX2xsY3Bfcnhfd29ya2AsIGFuZCB0aGUgYWxsLWltcG9ydGFudCBgbmZjX2xsY3Bfcnhfc2tiYC4gVGhleSBmb3JtIHRoZSBjcml0aWNhbCBwYXRoLCBhbmQgdW5kZXJzdGFuZGluZyB0aGVpciBpbnRlcmFjdGlvbnMgaXMgZ29pbmcgdG8gYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGZ1bGwgc3lzdGVtLlxuXG5KdXN0IHRvIGJlIHN1cmUsIEkgc2hvdWxkIHZlcmlmeSB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBMb29rcyBsaWtlIEknbGwgbmVlZCB0byBjaGVjayB0aGUgZm9sbG93aW5nIGNvbmZpZ3MsIGp1c3QgaW4gY2FzZTogYENPTkZJR19ORkNgLCBgQ09ORklHX05GQ19OQ0lgLCBgQ09ORklHX05GQ19WSVJUVUFMX05DSWAsIGBDT05GSUdfTkZDX1NJTWAsIGFuZCBgQ09ORklHX05GQ19ESUdJVEFMYC4gSSdsbCBhbHNvIGhhdmUgYSBsb29rIGF0IGBuZXQvbmZjL0tjb25maWdgIHRvIHNlZSBpZiBgTkZDX0xMQ1BgIGlzIGEgZGlzY3JldGUsIHNlcGFyYXRlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRoYXQgY291bGQgaW1wYWN0IGhvdyB0aGluZ3MgYXJlIGJ1aWx0LiBHb3R0YSBjb3ZlciBhbGwgbXkgYmFzZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNzY4LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjIwOjE3Ljc3NTE1NjgyMVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzAyNTU3MzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9LY29uZmlnLTUtXFxubmV0L25mYy9LY29uZmlnOjY6bWVudWNvbmZpZyBORkNcXG5uZXQvbmZjL0tjb25maWctNy1cXHRkZXBlbmRzIG9uIFJGS0lMTCB8fCAhUkZLSUxMXFxuLS1cXG5uZXQvbmZjL0tjb25maWctMTYtXFxubmV0L25mYy9LY29uZmlnOjE3OmNvbmZpZyBORkNfRElHSVRBTFxcbm5ldC9uZmMvS2NvbmZpZy0xOC1cXHRkZXBlbmRzIG9uIE5GQ1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMToyMDoxNy44NDU0MTkyMTVaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE2ODIxMzk0NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipOYXZpZ2F0aW5nIHRoZSBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqXG5cbk9rYXksIGxldCdzIHNlZS4uLiBJJ20gZGl2aW5nIGludG8gdGhpcyBjb25maWd1cmF0aW9uIGFuZCB0aGUgZmlyc3QgcXVlc3Rpb24gdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpcyB3aGV0aGVyIHRoZXJlJ3MgYSBkZWRpY2F0ZWQgYE5GQ19MTENQYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gSXQncyBhIGtleSBwcm90b2NvbCwgc28gaXQgKnNob3VsZCogYmUgdGhlcmUsIGJ1dCBJIG5lZWQgdG8gYmUgc3VyZS4gSSdtIG1lbnRhbGx5IHNjYW5uaW5nIHRoZSB1c3VhbCBzdXNwZWN0cyBpbiB0aGUgY29uZmlndXJhdGlvbiBmaWxlcywgdGhpbmtpbmcgYWJvdXQgd2hlcmUgaXQgd291bGQgbG9naWNhbGx5IHJlc2lkZSB3aXRoaW4gdGhlIGV4aXN0aW5nIHN0cnVjdHVyZS4gSXMgaXQgdW5kZXIgdGhlIE5GQyB1bWJyZWxsYSwgb3IgcGVyaGFwcyB0dWNrZWQgYXdheSB1bmRlciBhIG1vcmUgZ2VuZXJpYyBuZXR3b3JraW5nIHNlY3Rpb24/IE9yIG1heWJlIGl0J3MgZGVwZW5kZW50IG9uIHNvbWUgb3RoZXIgc2V0dGluZywgbWFraW5nIGl0cyBwcmVzZW5jZSBjb25kaXRpb25hbC4gSSBuZWVkIHRvIGtub3cgcXVpY2tseSB3aGV0aGVyIEkgbmVlZCB0byBnbyBodW50aW5nIGVsc2V3aGVyZSBvciBpZiBpdCdzIHJpZ2h0IGluIGZyb250IG9mIG15IGZhY2UuIEtub3dpbmcgd2hldGhlciB0aGlzIHNldHRpbmcgZXhpc3RzIHdpbGwgaW5mb3JtIG15IG5leHQgc3RlcHMsIGFuZCB3aGF0IHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNTQ3LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6MjA6MjkuNTI3NTYxMjUxWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODU3NTU2NSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTkZDX0xMQ1BcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25mYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMToyMDoyOS41OTYxNDQ3MzZaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzE1NTA3ODc1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyBgbGxjcF9jb3JlLm9gIEJ1aWxkIENvbmRpdGlvbmFsaXR5KipcblxuUmlnaHQsIHNvLCBJIG5lZWQgdG8gY2xlYXIgdGhpcyB1cC4gTXkgaW5pdGlhbCBhc3N1bXB0aW9uIGFib3V0IGBsbGNwX2NvcmUub2AncyBidWlsZCBjb25kaXRpb25hbGl0eSBpcyB3cm9uZy4gSXQncyBkZWZpbml0ZWx5IGJ1aWx0IHVuY29uZGl0aW9uYWxseSB3aGVuIGBDT05GSUdfTkZDYCBpcyBlbmFibGVkLCBhbmQgdGhhdCdzIHRocm91Z2ggdGhlIGBuZmMtb2Jqc2AgbWVjaGFuaXNtLCBvZiBjb3Vyc2UuIFRpbWUgdG8gY29uZmlybSBteSB1bmRlcnN0YW5kaW5nIGFuZCBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBzb21ldGhpbmcgc3R1cGlkLiBMZXQgbWUgZ28gYmFjayBhbmQgZG91YmxlIGNoZWNrIHRoZSBgbmV0L25mYy9NYWtlZmlsZWAgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBJdCB3b3VsZCBiZSBlYXN5IHRvIG92ZXJsb29rIHNvbWV0aGluZyBpbiBhIE1ha2VmaWxlISBHb3R0YSBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI3OTAsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMToyMDozNi43NTEyMjY3MDNaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNTkwMDk2MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJsbGNwX2NvcmUub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvTWFrZWZpbGU9OT1vYmotJChDT05GSUdfTkZDX0RJR0lUQUwpICs9IG5mY19kaWdpdGFsLm9cXG5uZXQvbmZjL01ha2VmaWxlLTEwLVxcbm5ldC9uZmMvTWFrZWZpbGU6MTE6bmZjLW9ianMgOj0gY29yZS5vIG5ldGxpbmsubyBhZl9uZmMubyByYXdzb2NrLm8gbGxjcF9jb3JlLm8gbGxjcF9jb21tYW5kcy5vIFxcXFxcXG5uZXQvbmZjL01ha2VmaWxlLTEyLVxcdFxcdGxsY3Bfc29jay5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjIwOjM2Ljg2NzEzMzE3NVoiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjU3MzE5OTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBORkMgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdGhlIGBuZmMtb2Jqc2AgYnVpbGQgcHJvY2VzcyB3b3JrcyBpbiByZWxhdGlvbiB0byB0aGUgTkZDIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHllcywgdGhlIGBuZmMtb2Jqc2AgbW9kdWxlIGlzIGRlZmluaXRlbHkgYnVpbHQgd2hlbiB0aGUgbWFpbiBgQ09ORklHX05GQ2Agb3B0aW9uIGlzIGVuYWJsZWQsIHRoYXQncyB0aGUgYmFzZSByZXF1aXJlbWVudC4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGEgYml0IGJldHRlci5cblxuSSBzZWUgYSBmZXcgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gTkZDOiBgTkZDYCwgYE5GQ19OQ0lgLCBgTkZDX1ZJUlRVQUxfTkNJYCwgYW5kIGBORkNfU0lNYC4gVGhlc2UgYXJlIHRoZSBrZXkgdmFyaWFibGVzLiBOb3csIEkgd2FudCB0byBzcGVjaWZpY2FsbHkgY2hlY2sgaG93IGBORkNfTkNJYCBpcyBzZWxlY3RlZCB3aXRoaW4gdGhpcyBzZXR1cC4gSSBuZWVkIHRvIGRldGVybWluZSBpZiBgTkZDX1ZJUlRVQUxfTkNJYCBoYXMgYW55IGluZmx1ZW5jZSBvbiB0aGUgYE5GQ19OQ0lgIGNvbmZpZ3VyYXRpb24sIEkgbmVlZCB0byBrbm93IHRoZSByZWxhdGlvbnNoaXBzLiBJJ2xsIG5lZWQgdG8gZGlnIGEgbGl0dGxlIGRlZXBlciBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIHRvIGNvbmZpcm0gdGhhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMxMzMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMToyMDo0MC41MjQ0NTkwMjdaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0NjgwNjM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORkNfVklSVFVBTF9OQ0lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZmMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25mYy9LY29uZmlnPTQyPWNvbmZpZyBORkNfUE9SVDEwMFxcbi0tXFxuZHJpdmVycy9uZmMvS2NvbmZpZy01MS1cXG5kcml2ZXJzL25mYy9LY29uZmlnOjUyOmNvbmZpZyBORkNfVklSVFVBTF9OQ0lcXG5kcml2ZXJzL25mYy9LY29uZmlnLTUzLVxcdHRyaXN0YXRlIFxcXCJOQ0kgZGV2aWNlIHNpbXVsYXRvciBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjIwOjQwLjU4OTE0ODgwMloiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTMzODg5OTE1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgZm9jdXNpbmcgb24gdGhlIGRlcGVuZGVuY2llcyBvZiBgTkZDX1ZJUlRVQUxfTkNJYDpcblxuKipEZWNvbnN0cnVjdGluZyBEZXBlbmRlbmNpZXM6IE5GQ19WSVJUVUFMX05DSSoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgZGVwZW5kZW5jaWVzIG9mIGBORkNfVklSVFVBTF9OQ0lgLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBtYXAgb3V0IHRoZSBsYW5kc2NhcGUuIFdoYXQgb3RoZXIgY29tcG9uZW50cywgZHJpdmVycywgb3IgbW9kdWxlcyBpcyB0aGlzIHNwZWNpZmljIHZpcnR1YWwgTkNJIGxheWVyIGJ1aWx0IHVwb24/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBmb3VuZGF0aW9uLiBJcyBpdCByZWxpYW50IG9uIGEgc3BlY2lmaWMgaGFyZHdhcmUgYWJzdHJhY3Rpb24gbGF5ZXIgKEhBTCk/IERvZXMgaXQgaW50ZXJmYWNlIHdpdGggcGFydGljdWxhciBrZXJuZWwgbW9kdWxlcyBvciB1c2VyLXNwYWNlIHNlcnZpY2VzP1xuXG5JJ20gdGhpbmtpbmcsIGFyZSB0aGVyZSBhbnkgb2J2aW91cyBrZXJuZWwgbW9kdWxlcyB0aGF0IGFyZSBjcml0aWNhbCBmb3IgaXRzIG9wZXJhdGlvbiwgc3VjaCBhcyB0aG9zZSByZWxhdGVkIHRvIHNlY3VyZSBlbGVtZW50cywgcmVhZGVyL3dyaXRlciBtb2Rlcywgb3IgcGVlci10by1wZWVyIGNvbW11bmljYXRpb24/IEkgbmVlZCB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gdGhlICpkaXJlY3QqIGRlcGVuZGVuY2llcywgdGhvc2UgaXQgZXhwbGljaXRseSBjYWxscyB1cG9uLCBhbmQgdGhlICppbmRpcmVjdCogb25lcywgd2hpY2ggYXJlIGZ1bmRhbWVudGFsIHRvIGl0cyBlbnZpcm9ubWVudC4gRm9yIGV4YW1wbGUsIGlzIGl0IGRlcGVuZGVudCBvbiBhIHBhcnRpY3VsYXIgdmVyc2lvbiBvZiB0aGUgTkZDIHN0YWNrPyBBcmUgdGhlcmUgc3BlY2lmaWMgc2VjdXJpdHkgcG9saWNpZXMgaXQgbXVzdCBhZGhlcmUgdG8/XG5cbk1vcmUgaW1wb3J0YW50bHksIGhvdyBkb2VzIGl0IGhhbmRsZSBjb25jdXJyZW5jeSBhbmQgcmVzb3VyY2UgY29udGVudGlvbiB3aXRoIG90aGVyIE5GQyBjb21wb25lbnRzPyBUaGF0J3MgYWx3YXlzIGEgY3JpdGljYWwgYXNwZWN0IGluIHZpcnR1YWxpemVkIHN5c3RlbXMuIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IGl0cyBsb2NraW5nIG1lY2hhbmlzbXMsIGl0cyBpbnRlcnJ1cHQgaGFuZGxpbmcsIGFuZCBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucy5cblxuTXkgYW5hbHlzaXMgbmVlZHMgdG8gYmUgY29tcHJlaGVuc2l2ZS4gSSdtIGxvb2tpbmcgZm9yIGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgcm9sZSBpbiB0aGUgZ3JlYXRlciBORkMgYXJjaGl0ZWN0dXJlIGFuZCBpdHMgcG9pbnRzIG9mIGNvbnRhY3QuIFVuZGVyc3RhbmRpbmcgdGhlc2UgZGVwZW5kZW5jaWVzIGlzIGtleSB0byBhbnkgZGVlcGVyIGludmVzdGlnYXRpb24sIGVzcGVjaWFsbHkgaWYgSSBuZWVkIHRvIGRlYnVnLCBvcHRpbWl6ZSwgb3IgbW9kaWZ5IHRoaXMgY29tcG9uZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzU1MSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjIwOjUxLjkyODA1MTc0MloiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDk5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25mYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUyLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDUyOlxcdGNvbmZpZyBORkNfVklSVFVBTF9OQ0lcXG4gIDUzOlxcdFxcdHRyaXN0YXRlIFxcXCJOQ0kgZGV2aWNlIHNpbXVsYXRvciBkcml2ZXJcXFwiXFxuICA1NDpcXHRcXHRkZXBlbmRzIG9uIE5GQ19OQ0lcXG4gIDU1OlxcdFxcdGhlbHBcXG4gIDU2OlxcdFxcdCAgTkNJIHZpcnR1YWwgZGV2aWNlIHNpbXVsYXRlcyBhIE5DSSBkZXZpY2UgdG8gdGhlIHVzZXIuXFxuICA1NzpcXHRcXHQgIEl0IGNhbiBiZSB1c2VkIHRvIHZhbGlkYXRlIHRoZSBOQ0kgbW9kdWxlIGFuZCBhcHBsaWNhdGlvbnMuXFxuICA1ODpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIGNvbW11bmljYXRpb24gYmV0d2VlbiB0aGUgdmlydHVhbCBOQ0kgZGV2aWNlIGFuZFxcbiAgNTk6XFx0XFx0ICBtb2R1bGUuXFxuICA2MDpcXHRcXG4gIDYxOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6MjA6NTEuOTI4MTM0ODAyWiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNzU4MTkxMzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkNvbnNpZGVyaW5nIE5GQyBJbXBsZW1lbnRhdGlvbiBDaG9pY2VzKipcblxuQWxyaWdodCwgc28gdGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byByZXZvbHZlIGFyb3VuZCBORkMgaW1wbGVtZW50YXRpb24sIGFuZCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyBcIlllcywgaXQgKmRlZmluaXRlbHkqIGhpbmdlcyBvbiB0aGUgYE5GQ19OQ0lgIGNvbXBvbmVudC5cIiBUaGF0J3MgdGhlIE5ldHdvcmsgQ29udHJvbGxlciBJbnRlcmZhY2UsIGFuZCBpdOKAmXMgdGhlIGJlZHJvY2sgb2YgaG93IHdlIGFjdHVhbGx5IHRhbGsgdG8gdGhlIE5GQyBoYXJkd2FyZSBhdCBhIGxvd2VyIGxldmVsLiBNeSBhcmNoaXRlY3R1cmUgaXMgZnVuZGFtZW50YWxseSBzaGFwZWQgYnkgaG93IHdlbGwgdGhhdCdzIGRlc2lnbmVkIGFuZCBpbXBsZW1lbnRlZC4gQnV0IEkgY2FuJ3Qgc3RvcCB0aGVyZS5cblxuTXkgbWluZCBpbW1lZGlhdGVseSBicmFuY2hlcyB0byBjb25zaWRlciBgTkZDX1NJTWAuIEkgY2FuJ3QganVzdCBnbG9zcyBvdmVyIHRoZSBTZWN1cmUgRWxlbWVudCBhc3BlY3QuIFRoZSB3aG9sZSBhcmNoaXRlY3R1cmUgY291bGQgcGl2b3Qgb24gd2hldGhlciB3ZSdyZSB0YWxraW5nIGFib3V0IGEgVUlDQywgYW4gZW1iZWRkZWQgU0UsIG9yIGV2ZW4gYSBzb2Z0d2FyZS1iYXNlZCBzb2x1dGlvbi4gVGhlIHNlY3VyaXR5IHByb2ZpbGUsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzLCBhbmQgb3ZlcmFsbCBkZXNpZ24gY29tcGxleGl0eSBhcmUgYWxsIGdvaW5nIHRvIGNoYW5nZSBkZXBlbmRpbmcgb24gKnRoYXQqIHZhcmlhYmxlLiBJIG5lZWQgdG8ga2VlcCB0aGUgU0lNIGNhcmQgaW1wbGljYXRpb25zIHRvcCBvZiBtaW5kIHdoZW4gdGhpbmtpbmcgdGhyb3VnaCB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDA3MywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6MjA6NTYuMTAzOTU3NDU2WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY3MDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmZjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzEsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMzE6XFx0Y29uZmlnIE5GQ19TSU1cXG4gIDMyOlxcdFxcdHRyaXN0YXRlIFxcXCJORkMgaGFyZHdhcmUgc2ltdWxhdG9yIGRyaXZlclxcXCJcXG4gIDMzOlxcdFxcdGRlcGVuZHMgb24gTkZDX0RJR0lUQUxcXG4gIDM0OlxcdFxcdGhlbHBcXG4gIDM1OlxcdFxcdCAgVGhpcyBkcml2ZXIgZGVjbGFyZXMgdHdvIHZpcnR1YWwgTkZDIGRldmljZXMgc3VwcG9ydGluZyBORkMtREVQXFxuICAzNjpcXHRcXHQgIHByb3RvY29sLiBBbiBMTENQIGNvbm5lY3Rpb24gY2FuIGJlIGVzdGFibGlzaGVkIGJldHdlZW4gdGhlbSBhbmRcXG4gIDM3OlxcdFxcdCAgYWxsIHBhY2tldHMgc2VudCBmcm9tIG9uZSBkZXZpY2UgaXMgc2VudCBiYWNrIHRvIHRoZSBvdGhlciwgYWN0aW5nIGFzXFxuICAzODpcXHRcXHQgIGxvb3BiYWNrIGRldmljZXMuXFxuICAzOTpcXHRcXG4gIDQwOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6MjA6NTYuMTA0MDI1ODA2WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzODM1NjkzNTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTkZDIExMQ1AgUGFja2V0IFZ1bG5lcmFiaWxpdHkgQXNzZXNzbWVudCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgTkZDIGNvZGUgYW5kIGl0J3MgY29udGluZ2VudCBvbiBgTkZDX0RJR0lUQUxgLiBUaGF0IG1lYW5zIHRvIHByb3Blcmx5IGNvbmZpZ3VyZSB0aGUgTkZDIHN5c3RlbSwgSSdsbCBuZWVkIHRvIGVuYWJsZSBgTkZDYCwgYE5GQ19OQ0lgLCBgTkZDX1ZJUlRVQUxfTkNJYCwgYE5GQ19ESUdJVEFMYCwgYW5kIGBORkNfU0lNYC5cblxuVGhlIGNvcmUgb2YgdGhlIG1hdHRlciBzZWVtcyB0byBiZSB0aGlzIHBhdGNoIHRoYXQgaW50cm9kdWNlcyBhIGxlbmd0aCBjaGVjayAoYHNrYi1cdTAwM2VsZW4gXHUwMDNjIExMQ1BfSEVBREVSX1NJWkVgKSB3aXRoaW4gYF9fbmZjX2xsY3BfcmVjdmAuIFJpZ2h0IGF3YXksIEkgcmVjb2duaXplIHRoaXMgYXMgYSBmdW5jdGlvbmFsIGZpeCwgYWRkcmVzc2luZyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQgb3Igc2ltaWxhciB2dWxuZXJhYmlsaXR5IHdoZW4gaGFuZGxpbmcgaW5jb21pbmcgTkZDIExMQ1AgcGFja2V0cy4gVGhpcyBhYnNvbHV0ZWx5IHdhcnJhbnRzIGZ1enppbmc7IGl04oCZcyBhIGNsYXNzaWMgc2NlbmFyaW8gZm9yIHVuY292ZXJpbmcgZWRnZSBjYXNlcy5cblxuSSBuZWVkIHRvIGZvY3VzIG15IGF0dGVudGlvbiBvbiB0aGVzZSBzeW1ib2xzOiBgX19uZmNfbGxjcF9yZWN2YCwgYG5mY19sbGNwX3JlY3ZgLCBgbmZjX2xsY3BfZGF0YV9yZWNlaXZlZGAsIGBuZmNfbGxjcF9yeF93b3JrYCwgYW5kIGBuZmNfbGxjcF9yeF9za2JgLlxuXG5CZWZvcmUgSSBkaXZlIHRvbyBkZWVwLCBJIHNob3VsZCBxdWlja2x5IHZlcmlmeSBpZiBgbmZjX2xsY3BfcmVjdmAgYW5kIGBuZmNfbGxjcF9kYXRhX3JlY2VpdmVkYCBhcmUgcGVyZm9ybWFuY2UtY3JpdGljYWwgcGF0aHMuIENvbnNpZGVyaW5nIHRoZSBnZW5lcmFsIG5hdHVyZSBvZiBORkMsIGl0J3MgdW5saWtlbHkgdGhlc2UgYXJlIGhvdHNwb3RzLiBUaGV5IGFyZSBub3QuXG5cbkFscmlnaHQsIHdpdGggdGhhdCBhc3Nlc3NtZW50IGNvbXBsZXRlLCBJ4oCZbGwgZG9jdW1lbnQgbXkgZmluZGluZ3MgYW5kIG1hcmsgdGhpcyBhcyByZWFkeSB0byBtb3ZlIGZvcndhcmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NDg0LCJPdXRwdXRUb2tlbnMiOjIxNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjIxOjAyLjQ4NzU5NzA1OVoiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5Mzk1MjEzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORkNcIixcbiAgICBcIk5GQ19OQ0lcIixcbiAgICBcIk5GQ19WSVJUVUFMX05DSVwiLFxuICAgIFwiTkZDX0RJR0lUQUxcIixcbiAgICBcIk5GQ19TSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX25mY19sbGNwX3JlY3ZcIixcbiAgICBcIm5mY19sbGNwX3JlY3ZcIixcbiAgICBcIm5mY19sbGNwX2RhdGFfcmVjZWl2ZWRcIixcbiAgICBcIm5mY19sbGNwX3J4X3dvcmtcIixcbiAgICBcIm5mY19sbGNwX3J4X3NrYlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgdG8gYF9fbmZjX2xsY3BfcmVjdmAgdG8gZW5zdXJlIHRoZSByZWNlaXZlZCBza2IgaXMgYXQgbGVhc3QgYExMQ1BfSEVBREVSX1NJWkVgIGJ5dGVzIGxvbmcgYmVmb3JlIHByb2Nlc3NpbmcgaXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIG90aGVyIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlcyB3aGVuIGhhbmRsaW5nIG1hbGZvcm1lZCBORkMgTExDUCBwYWNrZXRzLiBGdXp6aW5nIHRoaXMgY29kZSBwYXRoIGlzIGhpZ2hseSByZWNvbW1lbmRlZCB0byBlbnN1cmUgdGhlIHJvYnVzdG5lc3Mgb2YgdGhlIE5GQyBMTENQIGltcGxlbWVudGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GQ1wiLFxuICAgIFwiTkZDX05DSVwiLFxuICAgIFwiTkZDX1ZJUlRVQUxfTkNJXCIsXG4gICAgXCJORkNfRElHSVRBTFwiLFxuICAgIFwiTkZDX1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fbmZjX2xsY3BfcmVjdlwiLFxuICAgIFwibmZjX2xsY3BfcmVjdlwiLFxuICAgIFwibmZjX2xsY3BfZGF0YV9yZWNlaXZlZFwiLFxuICAgIFwibmZjX2xsY3Bfcnhfd29ya1wiLFxuICAgIFwibmZjX2xsY3Bfcnhfc2tiXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayB0byBgX19uZmNfbGxjcF9yZWN2YCB0byBlbnN1cmUgdGhlIHJlY2VpdmVkIHNrYiBpcyBhdCBsZWFzdCBgTExDUF9IRUFERVJfU0laRWAgYnl0ZXMgbG9uZyBiZWZvcmUgcHJvY2Vzc2luZyBpdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgcmVhZHMgb3Igb3RoZXIgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzIHdoZW4gaGFuZGxpbmcgbWFsZm9ybWVkIE5GQyBMTENQIHBhY2tldHMuIEZ1enppbmcgdGhpcyBjb2RlIHBhdGggaXMgaGlnaGx5IHJlY29tbWVuZGVkIHRvIGVuc3VyZSB0aGUgcm9idXN0bmVzcyBvZiB0aGUgTkZDIExMQ1AgaW1wbGVtZW50YXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowmpf9d[1] Phase: Succeeded StartedAt: 2026-07-13 21:21:14 +0000 UTC FinishedAt: 2026-07-13 21:21:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmpf9d[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-13 21:21:14 +0000 UTC FinishedAt: 2026-07-13 21:21:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmpf9d[2] Phase: Succeeded StartedAt: 2026-07-13 21:21:14 +0000 UTC FinishedAt: 2026-07-14 01:24:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmpf9d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nfc_llcp_recv","nfc_llcp_recv","nfc_llcp_data_received","nfc_llcp_rx_work","nfc_llcp_rx_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"f7f493ca-4ebc-4062-89ee-2a5e9fe37c5e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-13 21:21:14 +0000 UTC FinishedAt: 2026-07-14 01:24:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nfc_llcp_recv","nfc_llcp_recv","nfc_llcp_data_received","nfc_llcp_rx_work","nfc_llcp_rx_skb"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"f7f493ca-4ebc-4062-89ee-2a5e9fe37c5e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowmpf9d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nfc_llcp_recv","nfc_llcp_recv","nfc_llcp_data_received","nfc_llcp_rx_work","nfc_llcp_rx_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"f7f493ca-4ebc-4062-89ee-2a5e9fe37c5e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-13 21:21:14 +0000 UTC FinishedAt: 2026-07-13 21:21:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmpf9d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nfc_llcp_recv","nfc_llcp_recv","nfc_llcp_data_received","nfc_llcp_rx_work","nfc_llcp_rx_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"f7f493ca-4ebc-4062-89ee-2a5e9fe37c5e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-13 21:21:14 +0000 UTC FinishedAt: 2026-07-13 21:21:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmpf9d/series-workflowmpf9d-convert-artifact-67321428/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmpf9d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nfc_llcp_recv","nfc_llcp_recv","nfc_llcp_data_received","nfc_llcp_rx_work","nfc_llcp_rx_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"f7f493ca-4ebc-4062-89ee-2a5e9fe37c5e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-13 21:21:24 +0000 UTC FinishedAt: 2026-07-13 21:53:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmpf9d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nfc_llcp_recv","nfc_llcp_recv","nfc_llcp_data_received","nfc_llcp_rx_work","nfc_llcp_rx_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"f7f493ca-4ebc-4062-89ee-2a5e9fe37c5e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-13 21:21:24 +0000 UTC FinishedAt: 2026-07-13 21:53:04 +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:*ecb10c0e-fbe9-4918-a5e2-26f7d2aea450,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-workflowmpf9d/series-workflowmpf9d-convert-artifact-67321428/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": "2da96271-e00c-4a8b-ac8f-7a89206333ec", "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-workflowmpf9d/series-workflowmpf9d-build-action-2219538898/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmpf9d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nfc_llcp_recv","nfc_llcp_recv","nfc_llcp_data_received","nfc_llcp_rx_work","nfc_llcp_rx_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"f7f493ca-4ebc-4062-89ee-2a5e9fe37c5e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-13 21:21:24 +0000 UTC FinishedAt: 2026-07-13 21:52:54 +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:*ecb10c0e-fbe9-4918-a5e2-26f7d2aea450,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-workflowmpf9d/series-workflowmpf9d-convert-artifact-67321428/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": "2da96271-e00c-4a8b-ac8f-7a89206333ec", "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-workflowmpf9d/series-workflowmpf9d-build-action-2219538898/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmpf9d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nfc_llcp_recv","nfc_llcp_recv","nfc_llcp_data_received","nfc_llcp_rx_work","nfc_llcp_rx_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"f7f493ca-4ebc-4062-89ee-2a5e9fe37c5e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-13 21:53:04 +0000 UTC FinishedAt: 2026-07-13 21:53:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmpf9d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nfc_llcp_recv","nfc_llcp_recv","nfc_llcp_data_received","nfc_llcp_rx_work","nfc_llcp_rx_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"f7f493ca-4ebc-4062-89ee-2a5e9fe37c5e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-13 21:53:04 +0000 UTC FinishedAt: 2026-07-13 21:53:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmpf9d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nfc_llcp_recv","nfc_llcp_recv","nfc_llcp_data_received","nfc_llcp_rx_work","nfc_llcp_rx_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"f7f493ca-4ebc-4062-89ee-2a5e9fe37c5e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-13 21:53:04 +0000 UTC FinishedAt: 2026-07-13 21:53:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmpf9d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nfc_llcp_recv","nfc_llcp_recv","nfc_llcp_data_received","nfc_llcp_rx_work","nfc_llcp_rx_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"f7f493ca-4ebc-4062-89ee-2a5e9fe37c5e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-13 21:53:04 +0000 UTC FinishedAt: 2026-07-13 21:53:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"f7f493ca-4ebc-4062-89ee-2a5e9fe37c5e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmpf9d/series-workflowmpf9d-convert-artifact-821662995/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmpf9d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nfc_llcp_recv","nfc_llcp_recv","nfc_llcp_data_received","nfc_llcp_rx_work","nfc_llcp_rx_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"f7f493ca-4ebc-4062-89ee-2a5e9fe37c5e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-13 21:53:14 +0000 UTC FinishedAt: 2026-07-13 21:55:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmpf9d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nfc_llcp_recv","nfc_llcp_recv","nfc_llcp_data_received","nfc_llcp_rx_work","nfc_llcp_rx_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"f7f493ca-4ebc-4062-89ee-2a5e9fe37c5e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-13 21:53:14 +0000 UTC FinishedAt: 2026-07-13 21:55:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*2da96271-e00c-4a8b-ac8f-7a89206333ec,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-workflowmpf9d/series-workflowmpf9d-build-action-2219538898/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-workflowmpf9d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nfc_llcp_recv","nfc_llcp_recv","nfc_llcp_data_received","nfc_llcp_rx_work","nfc_llcp_rx_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"f7f493ca-4ebc-4062-89ee-2a5e9fe37c5e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-13 21:55:31 +0000 UTC FinishedAt: 2026-07-13 21:55:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmpf9d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nfc_llcp_recv","nfc_llcp_recv","nfc_llcp_data_received","nfc_llcp_rx_work","nfc_llcp_rx_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"f7f493ca-4ebc-4062-89ee-2a5e9fe37c5e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-13 21:55:31 +0000 UTC FinishedAt: 2026-07-13 21:55:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmpf9d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nfc_llcp_recv","nfc_llcp_recv","nfc_llcp_data_received","nfc_llcp_rx_work","nfc_llcp_rx_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"f7f493ca-4ebc-4062-89ee-2a5e9fe37c5e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-13 21:55:31 +0000 UTC FinishedAt: 2026-07-13 22:19:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmpf9d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nfc_llcp_recv","nfc_llcp_recv","nfc_llcp_data_received","nfc_llcp_rx_work","nfc_llcp_rx_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"f7f493ca-4ebc-4062-89ee-2a5e9fe37c5e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-13 21:55:31 +0000 UTC FinishedAt: 2026-07-13 22:19:12 +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:*ecb10c0e-fbe9-4918-a5e2-26f7d2aea450,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-workflowmpf9d/series-workflowmpf9d-convert-artifact-821662995/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": "f6400716-01dd-4992-bc10-40d67ac26448", "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-workflowmpf9d/series-workflowmpf9d-build-action-181955399/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmpf9d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nfc_llcp_recv","nfc_llcp_recv","nfc_llcp_data_received","nfc_llcp_rx_work","nfc_llcp_rx_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"f7f493ca-4ebc-4062-89ee-2a5e9fe37c5e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-13 21:55:31 +0000 UTC FinishedAt: 2026-07-13 22:18:25 +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:*ecb10c0e-fbe9-4918-a5e2-26f7d2aea450,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-workflowmpf9d/series-workflowmpf9d-convert-artifact-821662995/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": "f6400716-01dd-4992-bc10-40d67ac26448", "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-workflowmpf9d/series-workflowmpf9d-build-action-181955399/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmpf9d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nfc_llcp_recv","nfc_llcp_recv","nfc_llcp_data_received","nfc_llcp_rx_work","nfc_llcp_rx_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"f7f493ca-4ebc-4062-89ee-2a5e9fe37c5e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-13 22:19:12 +0000 UTC FinishedAt: 2026-07-13 22:19:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmpf9d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nfc_llcp_recv","nfc_llcp_recv","nfc_llcp_data_received","nfc_llcp_rx_work","nfc_llcp_rx_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"f7f493ca-4ebc-4062-89ee-2a5e9fe37c5e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-13 22:19:12 +0000 UTC FinishedAt: 2026-07-13 22:19:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmpf9d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nfc_llcp_recv","nfc_llcp_recv","nfc_llcp_data_received","nfc_llcp_rx_work","nfc_llcp_rx_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"f7f493ca-4ebc-4062-89ee-2a5e9fe37c5e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-13 22:19:12 +0000 UTC FinishedAt: 2026-07-13 22:21:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmpf9d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nfc_llcp_recv","nfc_llcp_recv","nfc_llcp_data_received","nfc_llcp_rx_work","nfc_llcp_rx_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"f7f493ca-4ebc-4062-89ee-2a5e9fe37c5e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-13 22:19:12 +0000 UTC FinishedAt: 2026-07-13 22:21:22 +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:*f6400716-01dd-4992-bc10-40d67ac26448,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-workflowmpf9d/series-workflowmpf9d-build-action-181955399/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-workflowmpf9d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nfc_llcp_recv","nfc_llcp_recv","nfc_llcp_data_received","nfc_llcp_rx_work","nfc_llcp_rx_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"f7f493ca-4ebc-4062-89ee-2a5e9fe37c5e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-13 22:21:32 +0000 UTC FinishedAt: 2026-07-14 01:24:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmpf9d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nfc_llcp_recv","nfc_llcp_recv","nfc_llcp_data_received","nfc_llcp_rx_work","nfc_llcp_rx_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"f7f493ca-4ebc-4062-89ee-2a5e9fe37c5e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-13 22:21:32 +0000 UTC FinishedAt: 2026-07-14 01:24:06 +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":["__nfc_llcp_recv","nfc_llcp_recv","nfc_llcp_data_received","nfc_llcp_rx_work","nfc_llcp_rx_skb"],"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:*2da96271-e00c-4a8b-ac8f-7a89206333ec,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f6400716-01dd-4992-bc10-40d67ac26448,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-workflowmpf9d/series-workflowmpf9d-build-action-2219538898/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-workflowmpf9d/series-workflowmpf9d-build-action-181955399/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowmpf9d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nfc_llcp_recv","nfc_llcp_recv","nfc_llcp_data_received","nfc_llcp_rx_work","nfc_llcp_rx_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"f7f493ca-4ebc-4062-89ee-2a5e9fe37c5e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-13 22:21:32 +0000 UTC FinishedAt: 2026-07-13 22:22:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmpf9d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nfc_llcp_recv","nfc_llcp_recv","nfc_llcp_data_received","nfc_llcp_rx_work","nfc_llcp_rx_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"f7f493ca-4ebc-4062-89ee-2a5e9fe37c5e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-13 22:21:32 +0000 UTC FinishedAt: 2026-07-13 22:22:25 +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":["__nfc_llcp_recv","nfc_llcp_recv","nfc_llcp_data_received","nfc_llcp_rx_work","nfc_llcp_rx_skb"],"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-workflowmpf9d/series-workflowmpf9d-convert-artifact-1883138700/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmpf9d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nfc_llcp_recv","nfc_llcp_recv","nfc_llcp_data_received","nfc_llcp_rx_work","nfc_llcp_rx_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"f7f493ca-4ebc-4062-89ee-2a5e9fe37c5e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-13 22:21:32 +0000 UTC FinishedAt: 2026-07-13 22:21:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmpf9d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nfc_llcp_recv","nfc_llcp_recv","nfc_llcp_data_received","nfc_llcp_rx_work","nfc_llcp_rx_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"f7f493ca-4ebc-4062-89ee-2a5e9fe37c5e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-13 22:21:32 +0000 UTC FinishedAt: 2026-07-13 22:21:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmpf9d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nfc_llcp_recv","nfc_llcp_recv","nfc_llcp_data_received","nfc_llcp_rx_work","nfc_llcp_rx_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"f7f493ca-4ebc-4062-89ee-2a5e9fe37c5e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-13 22:21:32 +0000 UTC FinishedAt: 2026-07-13 22:21:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmpf9d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nfc_llcp_recv","nfc_llcp_recv","nfc_llcp_data_received","nfc_llcp_rx_work","nfc_llcp_rx_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"f7f493ca-4ebc-4062-89ee-2a5e9fe37c5e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-13 22:22:53 +0000 UTC FinishedAt: 2026-07-14 01:24:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmpf9d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nfc_llcp_recv","nfc_llcp_recv","nfc_llcp_data_received","nfc_llcp_rx_work","nfc_llcp_rx_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI","NFC_DIGITAL","NFC_SIM"],"series_id":"f7f493ca-4ebc-4062-89ee-2a5e9fe37c5e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-13 22:22:53 +0000 UTC FinishedAt: 2026-07-14 01:23:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*2da96271-e00c-4a8b-ac8f-7a89206333ec,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f6400716-01dd-4992-bc10-40d67ac26448,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-workflowmpf9d/series-workflowmpf9d-build-action-2219538898/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-workflowmpf9d/series-workflowmpf9d-build-action-181955399/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-workflowmpf9d/series-workflowmpf9d-convert-artifact-1883138700/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}