Name: series-workflow9gldg Phase: Succeeded StartedAt: 2026-07-16 22:43:18 +0000 UTC FinishedAt: 2026-07-17 00:58:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9gldg[0] Phase: Succeeded StartedAt: 2026-07-16 22:43:18 +0000 UTC FinishedAt: 2026-07-16 23:03:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9gldg[0].run-triage Phase: Succeeded StartedAt: 2026-07-16 22:43:18 +0000 UTC FinishedAt: 2026-07-16 23:03:57 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAP8211R_PHY" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAP8211R_PHY" ], "series_id": "13f17809-c9d8-412d-8303-e2dbfac3e231" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "dap8211r_config_init", "dap8211r_read_ext", "dap8211r_modify_ext" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE2IDIzOjAyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBUDgyMTFSX1BIWSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RhcDgyMTFyX2NvbmZpZ19pbml0JiMzNDssCiAgICAmIzM0O2RhcDgyMTFyX3JlYWRfZXh0JiMzNDssCiAgICAmIzM0O2RhcDgyMTFyX21vZGlmeV9leHQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG5ldyBQSFkgZHJpdmVyIGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZLiBUaGUgZHJpdmVyIGltcGxlbWVudHMgaW5pdGlhbGl6YXRpb24gbG9naWMgYW5kIGV4dGVuZGVkIHJlZ2lzdGVyIGFjY2Vzcy4gSXQgY2FuIGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGJ5IGVtdWxhdGluZyBhbiBNRElPIGJ1cyAoZS5nLiwgdmlhIFVTQiBldGhlcm5ldCBhZGFwdGVycyBsaWtlIHNtc2M5NXh4KSBhbmQgcHJlc2VudGluZyB0aGUgbWF0Y2hpbmcgUEhZIElEICgweDAwMDgwMTFCKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMzowMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDY2NDRjNzg5NDAzMmE1OGRkYmIzNWRmNGJlMzJlNjcyNTdmNzE2NDRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAxNiAyMzowMjozMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RhcHUsZGFwODIxMXIueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZGFwdSxkYXA4MjExci55YW1sXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmQ0MDEyZmExN2ExZTExXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RhcHUsZGFwODIxMXIueWFtbFxuQEAgLTAsMCAmIzQzOzEsNzMgQEBcbiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjAtb25seSBPUiBCU0QtMi1DbGF1c2UpXG4mIzQzOyVZQU1MIDEuMlxuJiM0MzstLS1cbiYjNDM7JGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9uZXQvZGFwdSxkYXA4MjExci55YW1sI1xuJiM0Mzskc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcbiYjNDM7XG4mIzQzO3RpdGxlOiBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFlcbiYjNDM7XG4mIzQzO21haW50YWluZXJzOlxuJiM0MzsgIC0gQXJ0ZW0gU2hpbWtvIFx1MDAzY2Euc2hpbWtvLmRldkBnbWFpbC5jb21cdTAwM2VcbiYjNDM7XG4mIzQzO2Rlc2NyaXB0aW9uOiB8XG4mIzQzOyAgVGhlIERBUDgyMTFSKEkpIGlzIGEgR2lnYWJpdCBFdGhlcm5ldCBQSFkgd2l0aCBSR01JSSBpbnRlcmZhY2UsXG4mIzQzOyAgc3VwcG9ydGluZyBJRUVFIDgwMi4zYXogRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldCwgSUVFRSAxNTg4IFN5bmNFLFxuJiM0MzsgIGFuZCBhbiBpbnRlcm5hbCBwYWNrZXQgZ2VuZXJhdG9yIGZvciBkaWFnbm9zdGljcy5cbiYjNDM7XG4mIzQzOyAgU3BlY2lmaWNhdGlvbnM6XG4mIzQzOyAgICAtIDEwQkFTRS1UZSwgMTAwQkFTRS1UWCwgMTAwMEJBU0UtVFxuJiM0MzsgICAgLSBSR01JSSB3aXRoIGNvbmZpZ3VyYWJsZSBUWC9SWCBjbG9jayBkZWxheXMgKDE1MCBwcyBzdGVwcywgMC0yMjUwIHBzKVxuJiM0MzsgICAgLSBJRUVFIDgwMi4zYXotMjAxMCBFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0XG4mIzQzOyAgICAtIElFRUUgMTU4OCBTeW5jRSBzdXBwb3J0XG4mIzQzOyAgICAtIEludGVybmFsIHBhY2tldCBnZW5lcmF0b3IgYW5kIGNoZWNrZXIgZm9yIGxpbmsgZGlhZ25vc3RpY3NcbiYjNDM7XG4mIzQzO2FsbE9mOlxuJiM0MzsgIC0gJHJlZjogZXRoZXJuZXQtcGh5LnlhbWwjXG4mIzQzO1xuJiM0Mztwcm9wZXJ0aWVzOlxuJiM0MzsgIGNvbXBhdGlibGU6XG4mIzQzOyAgICBjb25zdDogZXRoZXJuZXQtcGh5LWlkMDAwOC4wMTFiXG4mIzQzO1xuJiM0MzsgIHJlZzpcbiYjNDM7ICAgIG1heEl0ZW1zOiAxXG4mIzQzO1xuJiM0MzsgIHJ4LWludGVybmFsLWRlbGF5LXBzOlxuJiM0MzsgICAgZGVzY3JpcHRpb246XG4mIzQzOyAgICAgIFJHTUlJIFJYIGNsb2NrIGRlbGF5IGluIHBpY29zZWNvbmRzICgwIHRvIG1heGltdW0pLlxuJiM0MzsgICAgbXVsdGlwbGVPZjogMTUwXG4mIzQzOyAgICBtYXhpbXVtOiAyMjUwXG4mIzQzOyAgICBkZWZhdWx0OiAxOTUwXG4mIzQzO1xuJiM0MzsgIHR4LWludGVybmFsLWRlbGF5LXBzOlxuJiM0MzsgICAgZGVzY3JpcHRpb246XG4mIzQzOyAgICAgIFJHTUlJIFRYIGNsb2NrIGRlbGF5IGluIHBpY29zZWNvbmRzICgwIHRvIG1heGltdW0pLlxuJiM0MzsgICAgbXVsdGlwbGVPZjogMTUwXG4mIzQzOyAgICBtYXhpbXVtOiAyMjUwXG4mIzQzOyAgICBkZWZhdWx0OiAxOTUwXG4mIzQzO1xuJiM0MzsgIGRhcHUsdHgtaW52ZXJ0ZWQtY2xrOlxuJiM0MzsgICAgJHJlZjogL3NjaGVtYXMvdHlwZXMueWFtbCMvZGVmaW5pdGlvbnMvZmxhZ1xuJiM0MzsgICAgZGVzY3JpcHRpb246XG4mIzQzOyAgICAgIElmIHByZXNlbnQsIHRoZSBSR01JSSBUWCBjbG9jayB0byB0aGUgTUFDIGlzIGludmVydGVkICgxODAgZGVncmVlXG4mIzQzOyAgICAgIHBoYXNlIHNoaWZ0IHJlbGF0aXZlIHRvIHRoZSBkYXRhIGxpbmVzKS4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpY1xuJiM0MzsgICAgICBleHRlbnNpb24gZm9yIGJvYXJkcyB3aGVyZSBQQ0IgdHJhY2UgbGVuZ3RoIG9yIE1BQyByZXF1aXJlbWVudHNcbiYjNDM7ICAgICAgbmVjZXNzaXRhdGUgY2xvY2sgaW52ZXJzaW9uLiBPbmx5IHVzZSB0aGlzIHByb3BlcnR5IGFmdGVyIGhhcmR3YXJlXG4mIzQzOyAgICAgIHNpZ25hbCBpbnRlZ3JpdHkgdmFsaWRhdGlvbi5cbiYjNDM7XG4mIzQzO3VuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2VcbiYjNDM7XG4mIzQzO2V4YW1wbGVzOlxuJiM0MzsgIC0gfFxuJiM0MzsgICAgbWRpbyB7XG4mIzQzOyAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuJiM0MzsgICAgICAgICNzaXplLWNlbGxzID0gXHUwMDNjMFx1MDAzZTtcbiYjNDM7XG4mIzQzOyAgICAgICAgZXRoZXJuZXQtcGh5QDEge1xuJiM0MzsgICAgICAgICAgICBjb21wYXRpYmxlID0gXCYjMzQ7ZXRoZXJuZXQtcGh5LWlkMDAwOC4wMTFiXCYjMzQ7O1xuJiM0MzsgICAgICAgICAgICByZWcgPSBcdTAwM2MxXHUwMDNlO1xuJiM0MzsgICAgICAgICAgICByeC1pbnRlcm5hbC1kZWxheS1wcyA9IFx1MDAzYzIxMDBcdTAwM2U7XG4mIzQzOyAgICAgICAgICAgIHR4LWludGVybmFsLWRlbGF5LXBzID0gXHUwMDNjMjEwMFx1MDAzZTtcbiYjNDM7ICAgICAgICAgICAgZGFwdSx0eC1pbnZlcnRlZC1jbGs7XG4mIzQzOyAgICAgICAgfTtcbiYjNDM7ICAgIH07XG4mIzQzO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnIGIvZHJpdmVycy9uZXQvcGh5L0tjb25maWdcbmluZGV4IDA5OWYyNWRjZWFiYmM3Li40NTc2ZjcwN2FjOTQ0NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvS2NvbmZpZ1xuQEAgLTIzNyw2ICYjNDM7MjM3LDE2IEBAIGNvbmZpZyBEQVZJQ09NX1BIWVxuIFx0aGVscFxuIFx0ICBDdXJyZW50bHkgc3VwcG9ydHMgZG05MTYxZSBhbmQgZG05MTMxXG4gXG4mIzQzO2NvbmZpZyBEQVA4MjExUl9QSFlcbiYjNDM7XHR0cmlzdGF0ZSBcJiMzNDtEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFlcJiMzNDtcbiYjNDM7XHRkZXBlbmRzIG9uIE9GXG4mIzQzO1x0aGVscFxuJiM0MztcdCAgU3VwcG9ydCBmb3IgdGhlIERBUFUgVGVsZWNvbSBEQVA4MjExUihJKSBHaWdhYml0IEV0aGVybmV0IFBIWS5cbiYjNDM7XHQgIFRoaXMgUEhZIGlzIGRlc2lnbmVkIGZvciBlbnRlcnByaXNlIGFuZCBpbmR1c3RyaWFsIG5ldHdvcmtpbmdcbiYjNDM7XHQgIGFwcGxpY2F0aW9ucywgc3VwcG9ydGluZyAxMC8xMDAvMTAwMCBNYnBzIG9wZXJhdGlvbi5cbiYjNDM7XHQgIFJHTUlJIHdpdGg6IGNvbmZpZ3VyYWJsZSBUWC9SWCBjbG9jayBkZWxheXMsIG9wdGlvbmFsIGZsYWcgdG8gZW5hYmxlXG4mIzQzO1x0ICAxODAtZGVncmVlIFRYIGNsb2NrIHBoYXNlIHNoaWZ0IGFuZCBpbnRlcm5hbCBwYWNrZXQgZ2VuZXJhdG9yLlxuJiM0MztcbiBjb25maWcgSUNQTFVTX1BIWVxuIFx0dHJpc3RhdGUgXCYjMzQ7SUNQbHVzIFBIWXNcJiMzNDtcbiBcdGhlbHBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGVcbmluZGV4IGRlNjYwYWU5NDk0NTNkLi5hZDM1NzMzZWI0YmI2MSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZVxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlXG5AQCAtNTMsNiAmIzQzOzUzLDcgQEAgb2JqLSQoQ09ORklHX0JST0FEQ09NX1BIWSlcdCYjNDM7PSBicm9hZGNvbS5vXG4gb2JqLSQoQ09ORklHX0NJQ0FEQV9QSFkpXHQmIzQzOz0gY2ljYWRhLm9cbiBvYmotJChDT05GSUdfQ09SVElOQV9QSFkpXHQmIzQzOz0gY29ydGluYS5vXG4gb2JqLSQoQ09ORklHX0RBVklDT01fUEhZKVx0JiM0Mzs9IGRhdmljb20ub1xuJiM0MztvYmotJChDT05GSUdfREFQODIxMVJfUEhZKVx0JiM0Mzs9IGRhcDgyMTFyLm9cbiBvYmotJChDT05GSUdfRFA4MzY0MF9QSFkpXHQmIzQzOz0gZHA4MzY0MC5vXG4gb2JqLSQoQ09ORklHX0RQODM4MjJfUEhZKVx0JiM0Mzs9IGRwODM4MjIub1xuIG9iai0kKENPTkZJR19EUDgzODQ4X1BIWSlcdCYjNDM7PSBkcDgzODQ4Lm9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYyBiL2RyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmU2MzgxZmQ4Yzk4YzIwXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuY1xuQEAgLTAsMCAmIzQzOzEsMTkxIEBAXG4mIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUExcbiYjNDM7LypcbiYjNDM7ICogRHJpdmVyIGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZLlxuJiM0MzsgKlxuJiM0MzsgKiBTcGVjaWZpY2F0aW9uczpcbiYjNDM7ICogICAtIElFRUUgODAyLjMgMTBCQVNFLVRlLCAxMDBCQVNFLVRYLCAxMDAwQkFTRS1UXG4mIzQzOyAqICAgLSBJRUVFIDgwMi4zYXotMjAxMCBFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0XG4mIzQzOyAqICAgLSBJRUVFIDE1ODggU3luY0Ugc3VwcG9ydFxuJiM0MzsgKiAgIC0gUkdNSUlcbiYjNDM7ICpcbiYjNDM7ICogQXV0aG9yOiBBcnRlbSBTaGlta28gXHUwMDNjYS5zaGlta28uZGV2QGdtYWlsLmNvbVx1MDAzZVxuJiM0MzsgKi9cbiYjNDM7XG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2JpdGZpZWxkLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvZXJybm8uaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9ldGh0b29sLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvaW9wb2xsLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvbWlpLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvbmV0ZGV2aWNlLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9waHkuaFx1MDAzZVxuJiM0MztcbiYjNDM7I2RlZmluZSBEQVA4MjExUl9QSFlfSURcdFx0XHQweDAwMDgwMTFCXG4mIzQzOyNkZWZpbmUgREFQODIxMVJfUEhZX0lEX01BU0tcdFx0MHhGRkZGRkZGRlxuJiM0MztcbiYjNDM7I2RlZmluZSBEQVA4MjExUl9FWFRfQUREXHRcdDB4MUVcbiYjNDM7I2RlZmluZSBEQVA4MjExUl9FWFRfREFUQVx0XHQweDFGXG4mIzQzO1xuJiM0MzsjZGVmaW5lIERBUDgyMTFSX1BIWV9DT05cdFx0MHhBMDAxXG4mIzQzOyNkZWZpbmUgREFQODIxMVJfUEhZX1NXX1JTVFx0XHRCSVQoMTUpXG4mIzQzO1xuJiM0MzsjZGVmaW5lIERBUDgyMTFSX1JHTUlJX0NPTlx0XHQweEEwMDNcbiYjNDM7LyogRGVmYXVsdCBpbml0aWFsIFRYIGRlbGF5IHZhbHVlIGJ5IGRhdGFzaGVldC4gKi9cbiYjNDM7I2RlZmluZSBEQVA4MjExUl9JTklUX1RYX0RFTF9WQUxcdDFcbiYjNDM7I2RlZmluZSBEQVA4MjExUl9SR01JSV9UWF9ERUxfTUFTS1x0R0VOTUFTSygzLCAwKVxuJiM0MzsjZGVmaW5lIERBUDgyMTFSX1JHTUlJX1JYX0RFTF9NQVNLXHRHRU5NQVNLKDEzLCAxMClcbiYjNDM7I2RlZmluZSBEQVA4MjExUl9SR01JSV9DTEtfSU5WRVJUXHRCSVQoMTQpXG4mIzQzO1xuJiM0MzsjZGVmaW5lIERBUDgyMTFSX1JHTUlJX0NPTkZJR19NQVNLXHQoREFQODIxMVJfUkdNSUlfQ0xLX0lOVkVSVCB8IFxcXG4mIzQzO1x0XHRcdFx0XHREQVA4MjExUl9SR01JSV9SWF9ERUxfTUFTSyB8IFxcXG4mIzQzO1x0XHRcdFx0XHREQVA4MjExUl9SR01JSV9UWF9ERUxfTUFTSylcbiYjNDM7XG4mIzQzOy8qIERlZmF1bHQgUkdNSUkgZGVsYXk6IDEzICogMTUwID09IDEuOTVucyAqL1xuJiM0MzsjZGVmaW5lIERBUDgyMTFSX0RFRkFVTFRfREVMX1NFTFx0MHhEXG4mIzQzO1xuJiM0MztzdGF0aWMgY29uc3QgaW50IGRhcDgyMTFyX2ludGVybmFsX2RlbGF5W10gPSB7MCwgMTUwLCAzMDAsIDQ1MCwgNjAwLCA3NTAsIDkwMCxcbiYjNDM7XHRcdFx0XHRcdCAgICAgIDEwNTAsIDEyMDAsIDEzNTAsIDE1MDAsIDE2NTAsIDE4MDAsXG4mIzQzO1x0XHRcdFx0XHQgICAgICAxOTUwLCAyMTAwLCAyMjUwfTtcbiYjNDM7XG4mIzQzOyNkZWZpbmUgREFQODIxMVJfREVMQVlfU0laRVx0QVJSQVlfU0laRShkYXA4MjExcl9pbnRlcm5hbF9kZWxheSlcbiYjNDM7XG4mIzQzOy8qKlxuJiM0MzsgKiBkYXA4MjExcl9yZWFkX2V4dCgpIC0gUmVhZCBleHRlbmRlZCByZWdpc3RlclxuJiM0MzsgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHN0cnVjdHVyZVxuJiM0MzsgKiBAcmVnOiBFeHRlbmRlZCByZWdpc3RlciBhZGRyZXNzXG4mIzQzOyAqXG4mIzQzOyAqIFJlYWRzIGEgUEhZIGV4dGVuZGVkIHJlZ2lzdGVyIHVzaW5nIHRoZSBpbmRpcmVjdCBhY2Nlc3MgbWV0aG9kLlxuJiM0MzsgKiBUaGUgY2FsbGVyIG11c3QgaG9sZCB0aGUgTURJTyBidXMgbG9jay5cbiYjNDM7ICpcbiYjNDM7ICogUmV0dXJuOiBSZWdpc3RlciB2YWx1ZSBvbiBzdWNjZXNzLCBvciBuZWdhdGl2ZSBlcnJvciBjb2RlXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgaW50IGRhcDgyMTFyX3JlYWRfZXh0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUxNiByZWcpXG4mIzQzO3tcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuJiM0MztcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgREFQODIxMVJfRVhUX0FERCwgcmVnKTtcbiYjNDM7XHRpZiAocmV0IFx1MDAzYyAwKVxuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1xuJiM0MztcdHJldCA9IF9fcGh5X3JlYWQocGh5ZGV2LCBEQVA4MjExUl9FWFRfREFUQSk7XG4mIzQzO291dDpcbiYjNDM7XHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7LyoqXG4mIzQzOyAqIGRhcDgyMTFyX21vZGlmeV9leHQoKSAtIE1vZGlmeSBleHRlbmRlZCByZWdpc3RlciBiaXRzXG4mIzQzOyAqIEBwaHlkZXY6IFBIWSBkZXZpY2Ugc3RydWN0dXJlXG4mIzQzOyAqIEByZWc6IEV4dGVuZGVkIHJlZ2lzdGVyIGFkZHJlc3NcbiYjNDM7ICogQG1hc2s6IEJpdCBtYXNrIG9mIGJpdHMgdG8gY2xlYXJcbiYjNDM7ICogQHNldDogQml0IG1hc2sgb2YgYml0cyB0byBzZXRcbiYjNDM7ICpcbiYjNDM7ICogTW9kaWZpZXMgYSBQSFkgZXh0ZW5kZWQgcmVnaXN0ZXIgdXNpbmcgdGhlIGluZGlyZWN0IGFjY2VzcyBtZXRob2QuXG4mIzQzOyAqIE5ldyB2YWx1ZSA9IChvbGQgdmFsdWUgXHUwMDI2IH5tYXNrKSB8IHNldC5cbiYjNDM7ICogVGhlIGNhbGxlciBtdXN0IGhvbGQgdGhlIE1ESU8gYnVzIGxvY2suXG4mIzQzOyAqXG4mIzQzOyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBvciBuZWdhdGl2ZSBlcnJvciBjb2RlXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgaW50IGRhcDgyMTFyX21vZGlmeV9leHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZywgdTE2IG1hc2ssIHUxNiBzZXQpXG4mIzQzO3tcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuJiM0MztcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgREFQODIxMVJfRVhUX0FERCwgcmVnKTtcbiYjNDM7XHRpZiAocmV0IFx1MDAzYyAwKVxuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1xuJiM0MztcdHJldCA9IF9fcGh5X21vZGlmeShwaHlkZXYsIERBUDgyMTFSX0VYVF9EQVRBLCBtYXNrLCBzZXQpO1xuJiM0MztvdXQ6XG4mIzQzO1x0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuJiM0MztcdHJldHVybiByZXQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qKlxuJiM0MzsgKiBkYXA4MjExcl9jb25maWdfaW5pdCgpIC0gSW5pdGlhbGl6ZSBQSFlcbiYjNDM7ICogQHBoeWRldjogUEhZIGRldmljZSBzdHJ1Y3R1cmVcbiYjNDM7ICpcbiYjNDM7ICogQ29uZmlndXJlcyB0aGUgUEhZIGR1cmluZyBpbml0aWFsaXphdGlvbjpcbiYjNDM7ICogLSBUWCBjbG9jayBpbnZlcnRpb25cbiYjNDM7ICogLSBSR01JSSBkZWxheXMgYmFzZWQgb24gaW50ZXJmYWNlIG1vZGVcbiYjNDM7ICogLSBTb2Z0d2FyZSByZXNldCB0byBhcHBseSBzZXR0aW5ncyAobG93IGFjdGl2ZSwgc2VsZiBjbGVhcilcbiYjNDM7ICpcbiYjNDM7ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG9yIG5lZ2F0aXZlIGVycm9yIGNvZGVcbiYjNDM7ICovXG4mIzQzO3N0YXRpYyBpbnQgZGFwODIxMXJfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqcGh5ZGV2X25vZGUgPSBwaHlkZXYtXHUwMDNlbWRpby5kZXYub2Zfbm9kZTtcbiYjNDM7XHR1MTYgc2V0ID0gMCwgdmFsID0gMDtcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcdHMzMiBpbnRlcm5hbF9kZWxheTtcbiYjNDM7XG4mIzQzO1x0aWYgKG9mX3Byb3BlcnR5X3JlYWRfYm9vbChwaHlkZXZfbm9kZSwgXCYjMzQ7ZGFwdSx0eC1pbnZlcnRlZC1jbGtcJiMzNDspKVxuJiM0MztcdFx0c2V0IHw9IERBUDgyMTFSX1JHTUlJX0NMS19JTlZFUlQ7XG4mIzQzO1xuJiM0MztcdGludGVybmFsX2RlbGF5ID0gcGh5X2dldF9pbnRlcm5hbF9kZWxheShwaHlkZXYsIGRhcDgyMTFyX2ludGVybmFsX2RlbGF5LFxuJiM0MztcdFx0XHRcdFx0XHREQVA4MjExUl9ERUxBWV9TSVpFLCB0cnVlKTtcbiYjNDM7XHRpZiAoaW50ZXJuYWxfZGVsYXkgXHUwMDNjIDApIHtcbiYjNDM7XHRcdGlmIChwaHlkZXYtXHUwMDNlaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSSlcbiYjNDM7XHRcdFx0aW50ZXJuYWxfZGVsYXkgPSAwO1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRpbnRlcm5hbF9kZWxheSA9IERBUDgyMTFSX0RFRkFVTFRfREVMX1NFTDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHNldCB8PSBGSUVMRF9QUkVQKERBUDgyMTFSX1JHTUlJX1JYX0RFTF9NQVNLLCBpbnRlcm5hbF9kZWxheSk7XG4mIzQzO1xuJiM0MztcdGludGVybmFsX2RlbGF5ID0gcGh5X2dldF9pbnRlcm5hbF9kZWxheShwaHlkZXYsIGRhcDgyMTFyX2ludGVybmFsX2RlbGF5LFxuJiM0MztcdFx0XHRcdFx0XHREQVA4MjExUl9ERUxBWV9TSVpFLCBmYWxzZSk7XG4mIzQzO1x0aWYgKGludGVybmFsX2RlbGF5IFx1MDAzYyAwKSB7XG4mIzQzO1x0XHRpZiAocGh5ZGV2LVx1MDAzZWludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUkpXG4mIzQzO1x0XHRcdGludGVybmFsX2RlbGF5ID0gREFQODIxMVJfSU5JVF9UWF9ERUxfVkFMO1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRpbnRlcm5hbF9kZWxheSA9IERBUDgyMTFSX0RFRkFVTFRfREVMX1NFTDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHNldCB8PSBGSUVMRF9QUkVQKERBUDgyMTFSX1JHTUlJX1RYX0RFTF9NQVNLLCBpbnRlcm5hbF9kZWxheSk7XG4mIzQzO1xuJiM0MztcdHJldCA9IGRhcDgyMTFyX21vZGlmeV9leHQocGh5ZGV2LCBEQVA4MjExUl9QSFlfQ09OLCBEQVA4MjExUl9QSFlfU1dfUlNULCAwKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0LyogV2FpdCBmb3IgcmVzZXQgc2VsZi1jbGVhciAobWF4IDIwMCB1cykgKi9cbiYjNDM7XHRyZXQgPSByZWFkX3BvbGxfdGltZW91dChkYXA4MjExcl9yZWFkX2V4dCwgdmFsLFxuJiM0MztcdFx0XHRcdCh2YWwgXHUwMDI2IERBUDgyMTFSX1BIWV9TV19SU1QpLFxuJiM0MztcdFx0XHRcdDIwLCAyMDAsIGZhbHNlLCBwaHlkZXYsIERBUDgyMTFSX1BIWV9DT04pO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHRyZXQgPSBkYXA4MjExcl9tb2RpZnlfZXh0KHBoeWRldiwgREFQODIxMVJfUkdNSUlfQ09OLCBEQVA4MjExUl9SR01JSV9DT05GSUdfTUFTSywgc2V0KTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkYXA4MjExcl9kcml2ZXJbXSA9IHtcbiYjNDM7XHR7XG4mIzQzO1x0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoREFQODIxMVJfUEhZX0lEKSxcbiYjNDM7XHRcdC5uYW1lXHRcdD0gXCYjMzQ7REFQODIxMVIgR2lnYWJpdCBFdGhlcm5ldFwmIzM0OyxcbiYjNDM7XHRcdC5jb25maWdfaW5pdFx0PSBkYXA4MjExcl9jb25maWdfaW5pdCxcbiYjNDM7XHRcdC5yZWFkX3N0YXR1c1x0PSBnZW5waHlfcmVhZF9zdGF0dXMsXG4mIzQzO1x0XHQuc2V0X2xvb3BiYWNrXHQ9IGdlbnBoeV9sb29wYmFjayxcbiYjNDM7XHRcdC5jb25maWdfYW5lZ1x0PSBnZW5waHlfY29uZmlnX2FuZWcsXG4mIzQzO1x0XHQuc3VzcGVuZFx0PSBnZW5waHlfc3VzcGVuZCxcbiYjNDM7XHRcdC5yZXN1bWVcdFx0PSBnZW5waHlfcmVzdW1lLFxuJiM0MztcdH0sXG4mIzQzO307XG4mIzQzO21vZHVsZV9waHlfZHJpdmVyKGRhcDgyMTFyX2RyaXZlcik7XG4mIzQzO1xuJiM0MztNT0RVTEVfREVTQ1JJUFRJT04oXCYjMzQ7REFQODIxMVIgR2lnYWJpdCBFdGhlcm5ldCBQSFkgZHJpdmVyXCYjMzQ7KTtcbiYjNDM7TU9EVUxFX0FVVEhPUihcJiMzNDtBcnRlbSBTaGlta28gXHUwMDNjYS5zaGlta28uZGV2QGdtYWlsLmNvbVx1MDAzZVwmIzM0Oyk7XG4mIzQzO01PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG4mIzQzO1xuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIGRhcDgyMTFyX3RiW10gPSB7XG4mIzQzO1x0eyBEQVA4MjExUl9QSFlfSUQsIERBUDgyMTFSX1BIWV9JRF9NQVNLIH0sXG4mIzQzO1x0eyAvKiBzZW50aW5lbCAqLyB9XG4mIzQzO307XG4mIzQzO01PRFVMRV9ERVZJQ0VfVEFCTEUobWRpbywgZGFwODIxMXJfdGIpO1xuJiM0MztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMzowMjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEQVA4MjExUl9QSFkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYXA4MjExcl9jb25maWdfaW5pdCYjMzQ7LAogICAgJiMzNDtkYXA4MjExcl9yZWFkX2V4dCYjMzQ7LAogICAgJiMzNDtkYXA4MjExcl9tb2RpZnlfZXh0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBuZXcgUEhZIGRyaXZlciBmb3IgdGhlIERBUFUgVGVsZWNvbSBEQVA4MjExUihJKSBHaWdhYml0IEV0aGVybmV0IFBIWS4gVGhlIGRyaXZlciBpbXBsZW1lbnRzIGluaXRpYWxpemF0aW9uIGxvZ2ljIGFuZCBleHRlbmRlZCByZWdpc3RlciBhY2Nlc3MuIEl0IGNhbiBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBieSBlbXVsYXRpbmcgYW4gTURJTyBidXMgKGUuZy4sIHZpYSBVU0IgZXRoZXJuZXQgYWRhcHRlcnMgbGlrZSBzbXNjOTV4eCkgYW5kIHByZXNlbnRpbmcgdGhlIG1hdGNoaW5nIFBIWSBJRCAoMHgwMDA4MDExQikuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDY2NDRjNzg5NDAzMmE1OGRkYmIzNWRmNGJlMzJlNjcyNTdmNzE2NDQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCAxNiAyMzowMjozMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZGFwdSxkYXA4MjExci55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kYXB1LGRhcDgyMTFyLnlhbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLmQ0MDEyZmExN2ExZTExCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kYXB1LGRhcDgyMTFyLnlhbWwKQEAgLTAsMCAmIzQzOzEsNzMgQEAKJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiAoR1BMLTIuMC1vbmx5IE9SIEJTRC0yLUNsYXVzZSkKJiM0MzslWUFNTCAxLjIKJiM0MzstLS0KJiM0MzskaWQ6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9zY2hlbWFzL25ldC9kYXB1LGRhcDgyMTFyLnlhbWwjCiYjNDM7JHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjCiYjNDM7CiYjNDM7dGl0bGU6IERBUFUgVGVsZWNvbSBEQVA4MjExUihJKSBHaWdhYml0IEV0aGVybmV0IFBIWQomIzQzOwomIzQzO21haW50YWluZXJzOgomIzQzOyAgLSBBcnRlbSBTaGlta28gJmx0O2Euc2hpbWtvLmRldkBnbWFpbC5jb20mZ3Q7CiYjNDM7CiYjNDM7ZGVzY3JpcHRpb246IHwKJiM0MzsgIFRoZSBEQVA4MjExUihJKSBpcyBhIEdpZ2FiaXQgRXRoZXJuZXQgUEhZIHdpdGggUkdNSUkgaW50ZXJmYWNlLAomIzQzOyAgc3VwcG9ydGluZyBJRUVFIDgwMi4zYXogRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldCwgSUVFRSAxNTg4IFN5bmNFLAomIzQzOyAgYW5kIGFuIGludGVybmFsIHBhY2tldCBnZW5lcmF0b3IgZm9yIGRpYWdub3N0aWNzLgomIzQzOwomIzQzOyAgU3BlY2lmaWNhdGlvbnM6CiYjNDM7ICAgIC0gMTBCQVNFLVRlLCAxMDBCQVNFLVRYLCAxMDAwQkFTRS1UCiYjNDM7ICAgIC0gUkdNSUkgd2l0aCBjb25maWd1cmFibGUgVFgvUlggY2xvY2sgZGVsYXlzICgxNTAgcHMgc3RlcHMsIDAtMjI1MCBwcykKJiM0MzsgICAgLSBJRUVFIDgwMi4zYXotMjAxMCBFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0CiYjNDM7ICAgIC0gSUVFRSAxNTg4IFN5bmNFIHN1cHBvcnQKJiM0MzsgICAgLSBJbnRlcm5hbCBwYWNrZXQgZ2VuZXJhdG9yIGFuZCBjaGVja2VyIGZvciBsaW5rIGRpYWdub3N0aWNzCiYjNDM7CiYjNDM7YWxsT2Y6CiYjNDM7ICAtICRyZWY6IGV0aGVybmV0LXBoeS55YW1sIwomIzQzOwomIzQzO3Byb3BlcnRpZXM6CiYjNDM7ICBjb21wYXRpYmxlOgomIzQzOyAgICBjb25zdDogZXRoZXJuZXQtcGh5LWlkMDAwOC4wMTFiCiYjNDM7CiYjNDM7ICByZWc6CiYjNDM7ICAgIG1heEl0ZW1zOiAxCiYjNDM7CiYjNDM7ICByeC1pbnRlcm5hbC1kZWxheS1wczoKJiM0MzsgICAgZGVzY3JpcHRpb246CiYjNDM7ICAgICAgUkdNSUkgUlggY2xvY2sgZGVsYXkgaW4gcGljb3NlY29uZHMgKDAgdG8gbWF4aW11bSkuCiYjNDM7ICAgIG11bHRpcGxlT2Y6IDE1MAomIzQzOyAgICBtYXhpbXVtOiAyMjUwCiYjNDM7ICAgIGRlZmF1bHQ6IDE5NTAKJiM0MzsKJiM0MzsgIHR4LWludGVybmFsLWRlbGF5LXBzOgomIzQzOyAgICBkZXNjcmlwdGlvbjoKJiM0MzsgICAgICBSR01JSSBUWCBjbG9jayBkZWxheSBpbiBwaWNvc2Vjb25kcyAoMCB0byBtYXhpbXVtKS4KJiM0MzsgICAgbXVsdGlwbGVPZjogMTUwCiYjNDM7ICAgIG1heGltdW06IDIyNTAKJiM0MzsgICAgZGVmYXVsdDogMTk1MAomIzQzOwomIzQzOyAgZGFwdSx0eC1pbnZlcnRlZC1jbGs6CiYjNDM7ICAgICRyZWY6IC9zY2hlbWFzL3R5cGVzLnlhbWwjL2RlZmluaXRpb25zL2ZsYWcKJiM0MzsgICAgZGVzY3JpcHRpb246CiYjNDM7ICAgICAgSWYgcHJlc2VudCwgdGhlIFJHTUlJIFRYIGNsb2NrIHRvIHRoZSBNQUMgaXMgaW52ZXJ0ZWQgKDE4MCBkZWdyZWUKJiM0MzsgICAgICBwaGFzZSBzaGlmdCByZWxhdGl2ZSB0byB0aGUgZGF0YSBsaW5lcykuIFRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMKJiM0MzsgICAgICBleHRlbnNpb24gZm9yIGJvYXJkcyB3aGVyZSBQQ0IgdHJhY2UgbGVuZ3RoIG9yIE1BQyByZXF1aXJlbWVudHMKJiM0MzsgICAgICBuZWNlc3NpdGF0ZSBjbG9jayBpbnZlcnNpb24uIE9ubHkgdXNlIHRoaXMgcHJvcGVydHkgYWZ0ZXIgaGFyZHdhcmUKJiM0MzsgICAgICBzaWduYWwgaW50ZWdyaXR5IHZhbGlkYXRpb24uCiYjNDM7CiYjNDM7dW5ldmFsdWF0ZWRQcm9wZXJ0aWVzOiBmYWxzZQomIzQzOwomIzQzO2V4YW1wbGVzOgomIzQzOyAgLSB8CiYjNDM7ICAgIG1kaW8gewomIzQzOyAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSAmbHQ7MSZndDs7CiYjNDM7ICAgICAgICAjc2l6ZS1jZWxscyA9ICZsdDswJmd0OzsKJiM0MzsKJiM0MzsgICAgICAgIGV0aGVybmV0LXBoeUAxIHsKJiM0MzsgICAgICAgICAgICBjb21wYXRpYmxlID0gJiMzNDtldGhlcm5ldC1waHktaWQwMDA4LjAxMWImIzM0OzsKJiM0MzsgICAgICAgICAgICByZWcgPSAmbHQ7MSZndDs7CiYjNDM7ICAgICAgICAgICAgcngtaW50ZXJuYWwtZGVsYXktcHMgPSAmbHQ7MjEwMCZndDs7CiYjNDM7ICAgICAgICAgICAgdHgtaW50ZXJuYWwtZGVsYXktcHMgPSAmbHQ7MjEwMCZndDs7CiYjNDM7ICAgICAgICAgICAgZGFwdSx0eC1pbnZlcnRlZC1jbGs7CiYjNDM7ICAgICAgICB9OwomIzQzOyAgICB9OwomIzQzOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L0tjb25maWcgYi9kcml2ZXJzL25ldC9waHkvS2NvbmZpZwppbmRleCAwOTlmMjVkY2VhYmJjNy4uNDU3NmY3MDdhYzk0NDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnCkBAIC0yMzcsNiAmIzQzOzIzNywxNiBAQCBjb25maWcgREFWSUNPTV9QSFkKIAloZWxwCiAJICBDdXJyZW50bHkgc3VwcG9ydHMgZG05MTYxZSBhbmQgZG05MTMxCiAKJiM0Mztjb25maWcgREFQODIxMVJfUEhZCiYjNDM7CXRyaXN0YXRlICYjMzQ7REFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZJiMzNDsKJiM0MzsJZGVwZW5kcyBvbiBPRgomIzQzOwloZWxwCiYjNDM7CSAgU3VwcG9ydCBmb3IgdGhlIERBUFUgVGVsZWNvbSBEQVA4MjExUihJKSBHaWdhYml0IEV0aGVybmV0IFBIWS4KJiM0MzsJICBUaGlzIFBIWSBpcyBkZXNpZ25lZCBmb3IgZW50ZXJwcmlzZSBhbmQgaW5kdXN0cmlhbCBuZXR3b3JraW5nCiYjNDM7CSAgYXBwbGljYXRpb25zLCBzdXBwb3J0aW5nIDEwLzEwMC8xMDAwIE1icHMgb3BlcmF0aW9uLgomIzQzOwkgIFJHTUlJIHdpdGg6IGNvbmZpZ3VyYWJsZSBUWC9SWCBjbG9jayBkZWxheXMsIG9wdGlvbmFsIGZsYWcgdG8gZW5hYmxlCiYjNDM7CSAgMTgwLWRlZ3JlZSBUWCBjbG9jayBwaGFzZSBzaGlmdCBhbmQgaW50ZXJuYWwgcGFja2V0IGdlbmVyYXRvci4KJiM0MzsKIGNvbmZpZyBJQ1BMVVNfUEhZCiAJdHJpc3RhdGUgJiMzNDtJQ1BsdXMgUEhZcyYjMzQ7CiAJaGVscApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlIGIvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlCmluZGV4IGRlNjYwYWU5NDk0NTNkLi5hZDM1NzMzZWI0YmI2MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZQpAQCAtNTMsNiAmIzQzOzUzLDcgQEAgb2JqLSQoQ09ORklHX0JST0FEQ09NX1BIWSkJJiM0Mzs9IGJyb2FkY29tLm8KIG9iai0kKENPTkZJR19DSUNBREFfUEhZKQkmIzQzOz0gY2ljYWRhLm8KIG9iai0kKENPTkZJR19DT1JUSU5BX1BIWSkJJiM0Mzs9IGNvcnRpbmEubwogb2JqLSQoQ09ORklHX0RBVklDT01fUEhZKQkmIzQzOz0gZGF2aWNvbS5vCiYjNDM7b2JqLSQoQ09ORklHX0RBUDgyMTFSX1BIWSkJJiM0Mzs9IGRhcDgyMTFyLm8KIG9iai0kKENPTkZJR19EUDgzNjQwX1BIWSkJJiM0Mzs9IGRwODM2NDAubwogb2JqLSQoQ09ORklHX0RQODM4MjJfUEhZKQkmIzQzOz0gZHA4MzgyMi5vCiBvYmotJChDT05GSUdfRFA4Mzg0OF9QSFkpCSYjNDM7PSBkcDgzODQ4Lm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jIGIvZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLmU2MzgxZmQ4Yzk4YzIwCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMKQEAgLTAsMCAmIzQzOzEsMTkxIEBACiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTAomIzQzOy8qCiYjNDM7ICogRHJpdmVyIGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZLgomIzQzOyAqCiYjNDM7ICogU3BlY2lmaWNhdGlvbnM6CiYjNDM7ICogICAtIElFRUUgODAyLjMgMTBCQVNFLVRlLCAxMDBCQVNFLVRYLCAxMDAwQkFTRS1UCiYjNDM7ICogICAtIElFRUUgODAyLjNhei0yMDEwIEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQKJiM0MzsgKiAgIC0gSUVFRSAxNTg4IFN5bmNFIHN1cHBvcnQKJiM0MzsgKiAgIC0gUkdNSUkKJiM0MzsgKgomIzQzOyAqIEF1dGhvcjogQXJ0ZW0gU2hpbWtvICZsdDthLnNoaW1rby5kZXZAZ21haWwuY29tJmd0OwomIzQzOyAqLwomIzQzOwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9iaXRmaWVsZC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9lcnJuby5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9ldGh0b29sLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2tlcm5lbC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9pb3BvbGwuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvbWlpLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L21vZHVsZS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9uZXRkZXZpY2UuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvb2YuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcGh5LmgmZ3Q7CiYjNDM7CiYjNDM7I2RlZmluZSBEQVA4MjExUl9QSFlfSUQJCQkweDAwMDgwMTFCCiYjNDM7I2RlZmluZSBEQVA4MjExUl9QSFlfSURfTUFTSwkJMHhGRkZGRkZGRgomIzQzOwomIzQzOyNkZWZpbmUgREFQODIxMVJfRVhUX0FERAkJMHgxRQomIzQzOyNkZWZpbmUgREFQODIxMVJfRVhUX0RBVEEJCTB4MUYKJiM0MzsKJiM0MzsjZGVmaW5lIERBUDgyMTFSX1BIWV9DT04JCTB4QTAwMQomIzQzOyNkZWZpbmUgREFQODIxMVJfUEhZX1NXX1JTVAkJQklUKDE1KQomIzQzOwomIzQzOyNkZWZpbmUgREFQODIxMVJfUkdNSUlfQ09OCQkweEEwMDMKJiM0MzsvKiBEZWZhdWx0IGluaXRpYWwgVFggZGVsYXkgdmFsdWUgYnkgZGF0YXNoZWV0LiAqLwomIzQzOyNkZWZpbmUgREFQODIxMVJfSU5JVF9UWF9ERUxfVkFMCTEKJiM0MzsjZGVmaW5lIERBUDgyMTFSX1JHTUlJX1RYX0RFTF9NQVNLCUdFTk1BU0soMywgMCkKJiM0MzsjZGVmaW5lIERBUDgyMTFSX1JHTUlJX1JYX0RFTF9NQVNLCUdFTk1BU0soMTMsIDEwKQomIzQzOyNkZWZpbmUgREFQODIxMVJfUkdNSUlfQ0xLX0lOVkVSVAlCSVQoMTQpCiYjNDM7CiYjNDM7I2RlZmluZSBEQVA4MjExUl9SR01JSV9DT05GSUdfTUFTSwkoREFQODIxMVJfUkdNSUlfQ0xLX0lOVkVSVCB8IFwKJiM0MzsJCQkJCURBUDgyMTFSX1JHTUlJX1JYX0RFTF9NQVNLIHwgXAomIzQzOwkJCQkJREFQODIxMVJfUkdNSUlfVFhfREVMX01BU0spCiYjNDM7CiYjNDM7LyogRGVmYXVsdCBSR01JSSBkZWxheTogMTMgKiAxNTAgPT0gMS45NW5zICovCiYjNDM7I2RlZmluZSBEQVA4MjExUl9ERUZBVUxUX0RFTF9TRUwJMHhECiYjNDM7CiYjNDM7c3RhdGljIGNvbnN0IGludCBkYXA4MjExcl9pbnRlcm5hbF9kZWxheVtdID0gezAsIDE1MCwgMzAwLCA0NTAsIDYwMCwgNzUwLCA5MDAsCiYjNDM7CQkJCQkgICAgICAxMDUwLCAxMjAwLCAxMzUwLCAxNTAwLCAxNjUwLCAxODAwLAomIzQzOwkJCQkJICAgICAgMTk1MCwgMjEwMCwgMjI1MH07CiYjNDM7CiYjNDM7I2RlZmluZSBEQVA4MjExUl9ERUxBWV9TSVpFCUFSUkFZX1NJWkUoZGFwODIxMXJfaW50ZXJuYWxfZGVsYXkpCiYjNDM7CiYjNDM7LyoqCiYjNDM7ICogZGFwODIxMXJfcmVhZF9leHQoKSAtIFJlYWQgZXh0ZW5kZWQgcmVnaXN0ZXIKJiM0MzsgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHN0cnVjdHVyZQomIzQzOyAqIEByZWc6IEV4dGVuZGVkIHJlZ2lzdGVyIGFkZHJlc3MKJiM0MzsgKgomIzQzOyAqIFJlYWRzIGEgUEhZIGV4dGVuZGVkIHJlZ2lzdGVyIHVzaW5nIHRoZSBpbmRpcmVjdCBhY2Nlc3MgbWV0aG9kLgomIzQzOyAqIFRoZSBjYWxsZXIgbXVzdCBob2xkIHRoZSBNRElPIGJ1cyBsb2NrLgomIzQzOyAqCiYjNDM7ICogUmV0dXJuOiBSZWdpc3RlciB2YWx1ZSBvbiBzdWNjZXNzLCBvciBuZWdhdGl2ZSBlcnJvciBjb2RlCiYjNDM7ICovCiYjNDM7c3RhdGljIGludCBkYXA4MjExcl9yZWFkX2V4dChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnKQomIzQzO3sKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJcGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTsKJiM0MzsJcmV0ID0gX19waHlfd3JpdGUocGh5ZGV2LCBEQVA4MjExUl9FWFRfQURELCByZWcpOwomIzQzOwlpZiAocmV0ICZsdDsgMCkKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwomIzQzOwlyZXQgPSBfX3BoeV9yZWFkKHBoeWRldiwgREFQODIxMVJfRVhUX0RBVEEpOwomIzQzO291dDoKJiM0MzsJcGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpOwomIzQzOwlyZXR1cm4gcmV0OwomIzQzO30KJiM0MzsKJiM0MzsvKioKJiM0MzsgKiBkYXA4MjExcl9tb2RpZnlfZXh0KCkgLSBNb2RpZnkgZXh0ZW5kZWQgcmVnaXN0ZXIgYml0cwomIzQzOyAqIEBwaHlkZXY6IFBIWSBkZXZpY2Ugc3RydWN0dXJlCiYjNDM7ICogQHJlZzogRXh0ZW5kZWQgcmVnaXN0ZXIgYWRkcmVzcwomIzQzOyAqIEBtYXNrOiBCaXQgbWFzayBvZiBiaXRzIHRvIGNsZWFyCiYjNDM7ICogQHNldDogQml0IG1hc2sgb2YgYml0cyB0byBzZXQKJiM0MzsgKgomIzQzOyAqIE1vZGlmaWVzIGEgUEhZIGV4dGVuZGVkIHJlZ2lzdGVyIHVzaW5nIHRoZSBpbmRpcmVjdCBhY2Nlc3MgbWV0aG9kLgomIzQzOyAqIE5ldyB2YWx1ZSA9IChvbGQgdmFsdWUgJmFtcDsgfm1hc2spIHwgc2V0LgomIzQzOyAqIFRoZSBjYWxsZXIgbXVzdCBob2xkIHRoZSBNRElPIGJ1cyBsb2NrLgomIzQzOyAqCiYjNDM7ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG9yIG5lZ2F0aXZlIGVycm9yIGNvZGUKJiM0MzsgKi8KJiM0MztzdGF0aWMgaW50IGRhcDgyMTFyX21vZGlmeV9leHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZywgdTE2IG1hc2ssIHUxNiBzZXQpCiYjNDM7ewomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwlwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpOwomIzQzOwlyZXQgPSBfX3BoeV93cml0ZShwaHlkZXYsIERBUDgyMTFSX0VYVF9BREQsIHJlZyk7CiYjNDM7CWlmIChyZXQgJmx0OyAwKQomIzQzOwkJZ290byBvdXQ7CiYjNDM7CiYjNDM7CXJldCA9IF9fcGh5X21vZGlmeShwaHlkZXYsIERBUDgyMTFSX0VYVF9EQVRBLCBtYXNrLCBzZXQpOwomIzQzO291dDoKJiM0MzsJcGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpOwomIzQzOwlyZXR1cm4gcmV0OwomIzQzO30KJiM0MzsKJiM0MzsvKioKJiM0MzsgKiBkYXA4MjExcl9jb25maWdfaW5pdCgpIC0gSW5pdGlhbGl6ZSBQSFkKJiM0MzsgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHN0cnVjdHVyZQomIzQzOyAqCiYjNDM7ICogQ29uZmlndXJlcyB0aGUgUEhZIGR1cmluZyBpbml0aWFsaXphdGlvbjoKJiM0MzsgKiAtIFRYIGNsb2NrIGludmVydGlvbgomIzQzOyAqIC0gUkdNSUkgZGVsYXlzIGJhc2VkIG9uIGludGVyZmFjZSBtb2RlCiYjNDM7ICogLSBTb2Z0d2FyZSByZXNldCB0byBhcHBseSBzZXR0aW5ncyAobG93IGFjdGl2ZSwgc2VsZiBjbGVhcikKJiM0MzsgKgomIzQzOyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBvciBuZWdhdGl2ZSBlcnJvciBjb2RlCiYjNDM7ICovCiYjNDM7c3RhdGljIGludCBkYXA4MjExcl9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQomIzQzO3sKJiM0MzsJc3RydWN0IGRldmljZV9ub2RlICpwaHlkZXZfbm9kZSA9IHBoeWRldi0mZ3Q7bWRpby5kZXYub2Zfbm9kZTsKJiM0MzsJdTE2IHNldCA9IDAsIHZhbCA9IDA7CiYjNDM7CWludCByZXQ7CiYjNDM7CXMzMiBpbnRlcm5hbF9kZWxheTsKJiM0MzsKJiM0MzsJaWYgKG9mX3Byb3BlcnR5X3JlYWRfYm9vbChwaHlkZXZfbm9kZSwgJiMzNDtkYXB1LHR4LWludmVydGVkLWNsayYjMzQ7KSkKJiM0MzsJCXNldCB8PSBEQVA4MjExUl9SR01JSV9DTEtfSU5WRVJUOwomIzQzOwomIzQzOwlpbnRlcm5hbF9kZWxheSA9IHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkocGh5ZGV2LCBkYXA4MjExcl9pbnRlcm5hbF9kZWxheSwKJiM0MzsJCQkJCQlEQVA4MjExUl9ERUxBWV9TSVpFLCB0cnVlKTsKJiM0MzsJaWYgKGludGVybmFsX2RlbGF5ICZsdDsgMCkgewomIzQzOwkJaWYgKHBoeWRldi0mZ3Q7aW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSSkKJiM0MzsJCQlpbnRlcm5hbF9kZWxheSA9IDA7CiYjNDM7CQllbHNlCiYjNDM7CQkJaW50ZXJuYWxfZGVsYXkgPSBEQVA4MjExUl9ERUZBVUxUX0RFTF9TRUw7CiYjNDM7CX0KJiM0MzsKJiM0MzsJc2V0IHw9IEZJRUxEX1BSRVAoREFQODIxMVJfUkdNSUlfUlhfREVMX01BU0ssIGludGVybmFsX2RlbGF5KTsKJiM0MzsKJiM0MzsJaW50ZXJuYWxfZGVsYXkgPSBwaHlfZ2V0X2ludGVybmFsX2RlbGF5KHBoeWRldiwgZGFwODIxMXJfaW50ZXJuYWxfZGVsYXksCiYjNDM7CQkJCQkJREFQODIxMVJfREVMQVlfU0laRSwgZmFsc2UpOwomIzQzOwlpZiAoaW50ZXJuYWxfZGVsYXkgJmx0OyAwKSB7CiYjNDM7CQlpZiAocGh5ZGV2LSZndDtpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJKQomIzQzOwkJCWludGVybmFsX2RlbGF5ID0gREFQODIxMVJfSU5JVF9UWF9ERUxfVkFMOwomIzQzOwkJZWxzZQomIzQzOwkJCWludGVybmFsX2RlbGF5ID0gREFQODIxMVJfREVGQVVMVF9ERUxfU0VMOwomIzQzOwl9CiYjNDM7CiYjNDM7CXNldCB8PSBGSUVMRF9QUkVQKERBUDgyMTFSX1JHTUlJX1RYX0RFTF9NQVNLLCBpbnRlcm5hbF9kZWxheSk7CiYjNDM7CiYjNDM7CXJldCA9IGRhcDgyMTFyX21vZGlmeV9leHQocGh5ZGV2LCBEQVA4MjExUl9QSFlfQ09OLCBEQVA4MjExUl9QSFlfU1dfUlNULCAwKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiYjNDM7CS8qIFdhaXQgZm9yIHJlc2V0IHNlbGYtY2xlYXIgKG1heCAyMDAgdXMpICovCiYjNDM7CXJldCA9IHJlYWRfcG9sbF90aW1lb3V0KGRhcDgyMTFyX3JlYWRfZXh0LCB2YWwsCiYjNDM7CQkJCSh2YWwgJmFtcDsgREFQODIxMVJfUEhZX1NXX1JTVCksCiYjNDM7CQkJCTIwLCAyMDAsIGZhbHNlLCBwaHlkZXYsIERBUDgyMTFSX1BIWV9DT04pOwomIzQzOwlpZiAocmV0KQomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsKJiM0MzsJcmV0ID0gZGFwODIxMXJfbW9kaWZ5X2V4dChwaHlkZXYsIERBUDgyMTFSX1JHTUlJX0NPTiwgREFQODIxMVJfUkdNSUlfQ09ORklHX01BU0ssIHNldCk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGRhcDgyMTFyX2RyaXZlcltdID0gewomIzQzOwl7CiYjNDM7CQlQSFlfSURfTUFUQ0hfRVhBQ1QoREFQODIxMVJfUEhZX0lEKSwKJiM0MzsJCS5uYW1lCQk9ICYjMzQ7REFQODIxMVIgR2lnYWJpdCBFdGhlcm5ldCYjMzQ7LAomIzQzOwkJLmNvbmZpZ19pbml0CT0gZGFwODIxMXJfY29uZmlnX2luaXQsCiYjNDM7CQkucmVhZF9zdGF0dXMJPSBnZW5waHlfcmVhZF9zdGF0dXMsCiYjNDM7CQkuc2V0X2xvb3BiYWNrCT0gZ2VucGh5X2xvb3BiYWNrLAomIzQzOwkJLmNvbmZpZ19hbmVnCT0gZ2VucGh5X2NvbmZpZ19hbmVnLAomIzQzOwkJLnN1c3BlbmQJPSBnZW5waHlfc3VzcGVuZCwKJiM0MzsJCS5yZXN1bWUJCT0gZ2VucGh5X3Jlc3VtZSwKJiM0MzsJfSwKJiM0Mzt9OwomIzQzO21vZHVsZV9waHlfZHJpdmVyKGRhcDgyMTFyX2RyaXZlcik7CiYjNDM7CiYjNDM7TU9EVUxFX0RFU0NSSVBUSU9OKCYjMzQ7REFQODIxMVIgR2lnYWJpdCBFdGhlcm5ldCBQSFkgZHJpdmVyJiMzNDspOwomIzQzO01PRFVMRV9BVVRIT1IoJiMzNDtBcnRlbSBTaGlta28gJmx0O2Euc2hpbWtvLmRldkBnbWFpbC5jb20mZ3Q7JiMzNDspOwomIzQzO01PRFVMRV9MSUNFTlNFKCYjMzQ7R1BMJiMzNDspOwomIzQzOwomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgZGFwODIxMXJfdGJbXSA9IHsKJiM0MzsJeyBEQVA4MjExUl9QSFlfSUQsIERBUDgyMTFSX1BIWV9JRF9NQVNLIH0sCiYjNDM7CXsgLyogc2VudGluZWwgKi8gfQomIzQzO307CiYjNDM7TU9EVUxFX0RFVklDRV9UQUJMRShtZGlvLCBkYXA4MjExcl90Yik7CiYjNDM7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIzOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2NDAKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxMTIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgREFQODIxMVIgR2lnYWJpdCBFdGhlcm5ldCBQSFkgRHJpdmVyKioKCk9rYXksIHNvIHdlIGhhdmUgYSBuZXcgUEhZIGRyaXZlciBoZXJlIGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpLiBMb29rcyBsaWtlIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBhZGRpdGlvbjogbmV3IGJpbmRpbmdzLCBLY29uZmlnLCBNYWtlZmlsZSBlbnRyeSwgYW5kIHRoZSBkcml2ZXIgaXRzZWxmLiBNeSBpbml0aWFsIHRob3VnaHRzIGFyZSBhcm91bmQgaG93IHdlIGNhbiBhY3R1YWxseSB0ZXN0IHRoaXMgdGhpbmcgZWZmZWN0aXZlbHkuCgpGaXJzdCwgSSBuZWVkIHRvIGtub3cgaWYgaXQmIzM5O3MgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVS4gUEhZIGRyaXZlcnMgYXJlIHR5cGljYWxseSBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBNRElPIGJ1cy4gRW5hYmxpbmcgYENPTkZJR19EQVA4MjExUl9QSFlgIHdpbGwgcmVnaXN0ZXIgdGhlIGRyaXZlciwgd2hpY2ggaXMgc3RlcCBvbmUuIEJ1dCB3aWxsIGl0IGdldCAqcHJvYmVkKj8gQ2FuIHdlIGZ1enogaXQ/CgpUcmFkaXRpb25hbGx5LCB5b3UmIzM5O2QgbmVlZCBhIHZpcnR1YWwgTURJTyBidXMgc2V0IHVwLCBtYXliZSB0aHJvdWdoIHNvbWV0aGluZyBsaWtlIGBtYWNiYCBvciBhIGR1bW15IE1ESU8gYnVzLCBvciBhbiBlbXVsYXRlZCBOSUMuIE5vdywgU3l6a2FsbGVyICp1c3VhbGx5KiBkb2VzbiYjMzk7dCBoYXZlIGEgZ2VuZXJpYyB3YXkgdG8ganVzdCBpbnN0YW50aWF0ZSBhcmJpdHJhcnkgUEhZcyBvdXQgb2YgdGhlIGJsdWUsIHVubGVzcyB3ZSBjYW4gaW5qZWN0IGFuIE1ESU8gZGV2aWNlIG9yIGlmIGl0JiMzOTtzIHBhcnQgb2YgYSBuZXR3b3JrIGRldmljZSB0aGF0IGNhbiBiZSBpbnN0YW50aWF0ZWQuIFdhaXQsIGRpZG4mIzM5O3QgSSByZWFkIHNvbWV0aGluZyBhYm91dCBTeXprYWxsZXIgaGF2aW5nICpzb21lKiBzdXBwb3J0IHZpYSBuZXRsaW5rIG9yIGlvY3RsIGlmIHRoZSBQSFkgaXMgKmF0dGFjaGVkKj8gQnV0IHRvIGF0dGFjaCBhIHNwZWNpZmljIFBIWSwgeW91IGVpdGhlciBuZWVkIGEgRFQgb3ZlcmxheSBvciBhIGRyaXZlciB0aGF0ICpwcm9iZXMqIGl0IGluIHRoZSBmaXJzdCBwbGFjZSwgb3IuLi4gY291bGQgU3l6a2FsbGVyIGNyZWF0ZSBpdHMgb3duIHZpcnR1YWwgTURJTyBidXM/IEhtbSwgbm8sIGJ1dCB0aGVyZSBpcyB0aGUgYG1kaW9gIGJ1cyBhbmQgdGhlIGBwaHlgIHN1YnN5c3RlbS4KCkxldCYjMzk7cyBzZWUgaWYgdGhlcmUmIzM5O3MgYSBzcGVjaWZpYyBwYXRoIHRvIHRyaWdnZXIgdGhpcyBkcml2ZXIuIFRoZSBkcml2ZXIgcmVnaXN0ZXJzIGl0c2VsZiB1c2luZyBgbW9kdWxlX3BoeV9kcml2ZXIoZGFwODIxMXJfZHJpdmVyKWAuIFRoZSBwcm9iaW5nIGhhcHBlbnMgYmFzZWQgb24gUEhZIElEcyBvbiB0aGUgTURJTyBidXMuIFNvLCB0aGUgcXVlc3Rpb24gaXM6IGNhbiB3ZSB0cmlnZ2VyIGBkYXA4MjExcl9jb25maWdfaW5pdGA/CgpJZiB3ZSBjYW4gY3JlYXRlIGEgZHVtbXkgTURJTyBkZXZpY2Ugd2l0aCB0aGUgcmlnaHQgUEhZIElEIOKAkyBgMHgwMDA4MDExQmAg4oCTIHRoZSBQSFkgbWFjaGluZXJ5IHNob3VsZCBwcm9iZSBpdCBhbmQgY2FsbCBgY29uZmlnX2luaXRgLiBJdCBsb29rcyBsaWtlIGl0IGNvdWxkIGJlIHdvcnRoIHRyeWluZyB0byBmdXp6LCBldmVuIHRob3VnaCBpdCYjMzk7cyBhIHNpbXBsZSBQSFkgZHJpdmVyLiBMZXQmIzM5O3MgZGlnIGludG8gYGRhcDgyMTFyX2NvbmZpZ19pbml0YCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBhdHRhY2sgc3VyZmFjZS4KCmBgYGMKc3RhdGljIGludCBkYXA4MjExcl9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQp7CglzdHJ1Y3QgZGV2aWNlX25vZGUgKnBoeWRldl9ub2RlID0gcGh5ZGV2LSZndDttZGlvLmRldi5vZl9ub2RlOwouLi4KCWlmIChvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wocGh5ZGV2X25vZGUsICYjMzQ7ZGFwdSx0eC1pbnZlcnRlZC1jbGsmIzM0OykpCi4uLgoJaW50ZXJuYWxfZGVsYXkgPSBwaHlfZ2V0X2ludGVybmFsX2RlbGF5KHBoeWRldiwgZGFwODIxMXJfaW50ZXJuYWxfZGVsYXksCgkJCQkJCURBUDgyMTFSX0RFTEFZX1NJWkUsIHRydWUpOwouLi4KCXJldCA9IGRhcDgyMTFyX21vZGlmeV9leHQocGh5ZGV2LCBEQVA4MjExUl9QSFlfQ09OLCBEQVA4MjExUl9QSFlfU1dfUlNULCAwKTsKLi4uCglyZXQgPSByZWFkX3BvbGxfdGltZW91dChkYXA4MjExcl9yZWFkX2V4dCwgdmFsLAoJCQkJKHZhbCAmYW1wOyBEQVA4MjExUl9QSFlfU1dfUlNUKSwKCQkJCTIwLCAyMDAsIGZhbHNlLCBwaHlkZXYsIERBUDgyMTFSX1BIWV9DT04pOwouLi4KCXJldCA9IGRhcDgyMTFyX21vZGlmeV9leHQocGh5ZGV2LCBEQVA4MjExUl9SR01JSV9DT04sIERBUDgyMTFSX1JHTUlJX0NPTkZJR19NQVNLLCBzZXQpOwouLi4KfQpgYGAKCkl0JiMzOTtzIHByZXR0eSBzdGFuZGFyZCwgcmlnaHQ/IERUIHByb3BlcnRpZXMsIGEgZmV3IE1ESU8gcmVhZHMgYW5kIHdyaXRlcy4gTm90IGEgaHVnZSBhdHRhY2sgc3VyZmFjZSwgYnV0IHN0aWxsIHdvcnRoIGludmVzdGlnYXRpbmcuCgpTbyB0aGUgcmVhbCBxdWVzdGlvbiBpczogQ2FuIHdlIG1ha2UgdGhpcyBkcml2ZXIgcmVhY2hhYmxlIGluIFFFTVU/IFllcywgaWYgd2UgY2FuIGluc3RhbnRpYXRlIE1ESU8gZGV2aWNlcy4gU3l6a2FsbGVyIGRvZXNuJiMzOTt0IGhhdmUgYSAqZ2VuZXJpYyogTURJTyBkZXZpY2UgaW5zdGFudGlhdG9yLCBidXQgdGhlcmUgbWlnaHQgYmUgb3RoZXIgd2F5cy4gSSByZW1lbWJlciBzb21ldGhpbmcgYWJvdXQgYHN5el9nZW5ldGxpbmtgLi4uIGJ1dCBmb3IgUEhZcyB0aGVyZSYjMzk7cyBhbHNvIGBpb2N0bChTSU9DU01JSVJFRylgLiBUaGF0IGNvdWxkIGJlIGhlbHBmdWwsIGJ1dCB3ZSBzdGlsbCBuZWVkIHRoZSBNRElPIGJ1cyB3aXRoIHRoYXQgbWFnaWMgSUQ6IGAweDAwMDgwMTFCYC4KCkkgcmVjYWxsIHNvbWV0aGluZyBhYm91dCBgZHJpdmVycy9uZXQvcGh5L21kaW8tbW9ja3VwLmNgLiBJIGhhdmUgdG8gY2hlY2suIENhbiBTeXprYWxsZXIgY3JlYXRlICpzdWNoKiBhIGRldmljZT8gVGltZSB0byB1c2UgbXkgQVBJIGtub3dsZWRnZS4gSSYjMzk7bGwgdXNlIGBkZWZhdWx0X2FwaTpncmVwcGVyYCB0byBzZWFyY2ggZm9yICYjMzQ7bWRpbyYjMzQ7IG9yICYjMzQ7cGh5JiMzNDsgaW5qZWN0aW9uIGluIGJvdGggU3l6a2FsbGVyIGFuZCB0aGUga2VybmVsIGl0c2VsZi4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgYW5zd2VycyBJIG5lZWQuCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMzowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21kaW8uKm1vY2t1cCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMjM6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzgyMAoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcml6ZWQgdGhvdWdodCBwcm9jZXNzLCBwcmVzZW50ZWQgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOgoKKipNRElPIERyaXZlciBJbnZlc3RpZ2F0aW9uKioKCkFscmlnaHQsIGJlZm9yZSBkaXZpbmcgdG9vIGRlZXAsIEkgc2hvdWxkIHByb2JhYmx5IHRha2UgYSBxdWljayBsb29rIHRvIHNlZSBpZiBhIHZpcnR1YWwgTURJTyBkcml2ZXIgaXMgZXZlbiBwcmVzZW50LiBJdCYjMzk7cyBhbHdheXMgYmVzdCB0byBzdGFydCB3aXRoIHRoZSBiYXNpY3MgYW5kIHJ1bGUgb3V0IHRoZSBzaW1wbGVzdCBleHBsYW5hdGlvbnMgZmlyc3QuIElmIG9uZSAqaXMqIGF2YWlsYWJsZSwgaXQgbWlnaHQgc2F2ZSBtZSBhIGxvdCBvZiB0aW1lIGRpZ2dpbmcgYXJvdW5kIGluIG1vcmUgY29tcGxleCBhcmVhcy4gVGhhdCYjMzk7cyB1c3VhbGx5IG15IGdvLXRvIGZpcnN0IHN0ZXAgZm9yIGRlYnVnZ2luZyB0aGlzIGtpbmQgb2YgdGhpbmcsIHNvIGxldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290IGluIHRoYXQgc3BhY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMjM6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmlydHVhbC4qbWRpbyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21kaW8tZ3Bpby55YW1sPTE3PXByb3BlcnRpZXM6XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tZGlvLWdwaW8ueWFtbC0xOS0gICAgZW51bTpcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWRpby1ncGlvLnlhbWw6MjA6ICAgICAgLSB2aXJ0dWFsLG1kaW8tZ3Bpb1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tZGlvLWdwaW8ueWFtbC0yMS0gICAgICAtIG1pY3JvY2hpcCxtZGlvLXNtaTBcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21kaW8tZ3Bpby55YW1sPTQxPWV4YW1wbGVzOlxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWRpby1ncGlvLnlhbWwtNDctICAgIG1kaW8wOiBtZGlvIHtcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWRpby1ncGlvLnlhbWw6NDg6ICAgICAgY29tcGF0aWJsZSA9IFwmIzM0O3ZpcnR1YWwsbWRpby1ncGlvXCYjMzQ7O1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tZGlvLWdwaW8ueWFtbC00OS0gICAgICAjYWRkcmVzcy1jZWxscyA9IFx1MDAzYzFcdTAwM2U7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1kbGluay1kbnMtMzEzLmR0cz0xNTI9XHRtZGlvMDogbWRpbyB7XG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLWRsaW5rLWRucy0zMTMuZHRzOjE1MzpcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3ZpcnR1YWwsbWRpby1ncGlvXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1kbGluay1kbnMtMzEzLmR0cy0xNTQtXHRcdC8qIFVzZXMgTURDIGFuZCBNRElPICovXG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1uYXM0MjEwYi5kdHM9Njc9XHRtZGlvMDogbWRpbyB7XG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLW5hczQyMTBiLmR0czo2ODpcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3ZpcnR1YWwsbWRpby1ncGlvXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1uYXM0MjEwYi5kdHMtNjktXHRcdGdwaW9zID0gXHUwMDNjXHUwMDI2Z3BpbzAgMjIgR1BJT19BQ1RJVkVfSElHSFx1MDAzZSwgLyogTURDICovXG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1uYXM0MjIwYi5kdHM9NjY9XHRtZGlvMDogbWRpbyB7XG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLW5hczQyMjBiLmR0czo2NzpcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3ZpcnR1YWwsbWRpby1ncGlvXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1uYXM0MjIwYi5kdHMtNjgtXHRcdGdwaW9zID0gXHUwMDNjXHUwMDI2Z3BpbzAgMjIgR1BJT19BQ1RJVkVfSElHSFx1MDAzZSwgLyogTURDICovXG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1uczI1MDIuZHRzPTMyPVx0bWRpbzA6IG1kaW8ge1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1uczI1MDIuZHRzOjMzOlx0XHRjb21wYXRpYmxlID0gXCYjMzQ7dmlydHVhbCxtZGlvLWdwaW9cJiMzNDs7XG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLW5zMjUwMi5kdHMtMzQtXHRcdGdwaW9zID0gXHUwMDNjXHUwMDI2Z3BpbzAgMjIgR1BJT19BQ1RJVkVfSElHSFx1MDAzZSwgLyogTURDICovXG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1ydXQxeHguZHRzPTU5PVx0bWRpbzA6IG1kaW8ge1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1ydXQxeHguZHRzOjYwOlx0XHRjb21wYXRpYmxlID0gXCYjMzQ7dmlydHVhbCxtZGlvLWdwaW9cJiMzNDs7XG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXJ1dDF4eC5kdHMtNjEtXHRcdGdwaW9zID0gXHUwMDNjXHUwMDI2Z3BpbzAgMjIgR1BJT19BQ1RJVkVfSElHSFx1MDAzZSwgLyogTURDICovXG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1zbDkzNTEyci5kdHM9NzE9XHRtZGlvMDogbWRpbyB7XG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXNsOTM1MTJyLmR0czo3MjpcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3ZpcnR1YWwsbWRpby1ncGlvXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1zbDkzNTEyci5kdHMtNzMtXHRcdC8qIFVzZXMgTURDIGFuZCBNRElPICovXG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1zcTIwMS5kdHM9NTY9XHRtZGlvMDogbWRpbyB7XG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXNxMjAxLmR0czo1NzpcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3ZpcnR1YWwsbWRpby1ncGlvXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1zcTIwMS5kdHMtNTgtXHRcdC8qIFVzZXMgTURDIGFuZCBNRElPICovXG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1zc2kxMzI4LmR0cz0zMj1cdG1kaW8wOiBtZGlvIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktc3NpMTMyOC5kdHM6MzM6XHRcdGNvbXBhdGlibGUgPSBcJiMzNDt2aXJ0dWFsLG1kaW8tZ3Bpb1wmIzM0OztcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktc3NpMTMyOC5kdHMtMzQtXHRcdGdwaW9zID0gXHUwMDNjXHUwMDI2Z3BpbzAgMjIgR1BJT19BQ1RJVkVfSElHSFx1MDAzZSwgLyogTURDICovXG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS12ZXJiYXRpbS1zMDh2MTkwMS1kMS5kdHM9NTc9XHRtZGlvMDogbWRpbyB7XG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXZlcmJhdGltLXMwOHYxOTAxLWQxLmR0czo1ODpcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3ZpcnR1YWwsbWRpby1ncGlvXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS12ZXJiYXRpbS1zMDh2MTkwMS1kMS5kdHMtNTktXHRcdC8qIFVzZXMgTURDIGFuZCBNRElPICovXG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS13YmQxMTEuZHRzPTcxPVx0bWRpbzA6IG1kaW8ge1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS13YmQxMTEuZHRzOjcyOlx0XHRjb21wYXRpYmxlID0gXCYjMzQ7dmlydHVhbCxtZGlvLWdwaW9cJiMzNDs7XG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXdiZDExMS5kdHMtNzMtXHRcdGdwaW9zID0gXHUwMDNjXHUwMDI2Z3BpbzAgMjIgR1BJT19BQ1RJVkVfSElHSFx1MDAzZSwgLyogTURDICovXG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS13YmQyMjIuZHRzPTcwPVx0bWRpbzA6IG1kaW8ge1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS13YmQyMjIuZHRzOjcxOlx0XHRjb21wYXRpYmxlID0gXCYjMzQ7dmlydHVhbCxtZGlvLWdwaW9cJiMzNDs7XG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXdiZDIyMi5kdHMtNzItXHRcdGdwaW9zID0gXHUwMDNjXHUwMDI2Z3BpbzAgMjIgR1BJT19BQ1RJVkVfSElHSFx1MDAzZSwgLyogTURDICovXG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg1MS16aWktcmR1MS5kdHM9MTYzPVx0bWRpb19ncGlvOiBtZGlvIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NTEtemlpLXJkdTEuZHRzOjE2NDpcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3ZpcnR1YWwsbWRpby1ncGlvXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg1MS16aWktcmR1MS5kdHMtMTY1LVx0XHRwaW5jdHJsLW5hbWVzID0gXCYjMzQ7ZGVmYXVsdFwmIzM0Oztcbi0tXG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDUxLXppaS1zY3UyLW1lenouZHRzPTQwPVx0bWRpb19ncGlvOiBtZGlvIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NTEtemlpLXNjdTItbWV6ei5kdHM6NDE6XHRcdGNvbXBhdGlibGUgPSBcJiMzNDt2aXJ0dWFsLG1kaW8tZ3Bpb1wmIzM0OztcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NTEtemlpLXNjdTItbWV6ei5kdHMtNDItXHRcdHBpbmN0cmwtbmFtZXMgPSBcJiMzNDtkZWZhdWx0XCYjMzQ7O1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NnEtYng1MHYzLmR0c2k9OTc9XHRtZGlvMDogbWRpbyB7XG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZxLWJ4NTB2My5kdHNpOjk4Olx0XHRjb21wYXRpYmxlID0gXCYjMzQ7dmlydHVhbCxtZGlvLWdwaW9cJiMzNDs7XG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZxLWJ4NTB2My5kdHNpLTk5LVx0XHRncGlvcyA9IFx1MDAzY1x1MDAyNmdwaW8yIDUgR1BJT19BQ1RJVkVfSElHSFx1MDAzZSwgLyogbWRjICovXG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg2cWRsLXppaS1yZHUyLmR0c2k9MTk9XHRtZGlvMTogbWRpbyB7XG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZxZGwtemlpLXJkdTIuZHRzaToyMDpcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3ZpcnR1YWwsbWRpby1ncGlvXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg2cWRsLXppaS1yZHUyLmR0c2ktMjEtXHRcdCNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbi0tXG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZxcC1wcnR3ZDMuZHRzPTUzPVx0bWRpbyB7XG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZxcC1wcnR3ZDMuZHRzOjU0Olx0XHRjb21wYXRpYmxlID0gXCYjMzQ7dmlydHVhbCxtZGlvLWdwaW9cJiMzNDs7XG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZxcC1wcnR3ZDMuZHRzLTU1LVx0XHRwaW5jdHJsLW5hbWVzID0gXCYjMzQ7ZGVmYXVsdFwmIzM0Oztcbi0tXG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC1yYjMwMTEuZHRzPTU1PVx0bWRpbzA6IG1kaW8tMCB7XG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC1yYjMwMTEuZHRzLTU2LVx0XHRzdGF0dXMgPSBcJiMzNDtva2F5XCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQtcmIzMDExLmR0czo1NzpcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3ZpcnR1YWwsbWRpby1ncGlvXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQtcmIzMDExLmR0cy01OC1cdFx0Z3Bpb3MgPSBcdTAwM2NcdTAwMjZxY29tX3Bpbm11eCAxIEdQSU9fQUNUSVZFX0hJR0hcdTAwM2UsXG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQtcmIzMDExLmR0cz0xODA9XHRtZGlvMTogbWRpby0xIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LXJiMzAxMS5kdHMtMTgxLVx0XHRzdGF0dXMgPSBcJiMzNDtva2F5XCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQtcmIzMDExLmR0czoxODI6XHRcdGNvbXBhdGlibGUgPSBcJiMzNDt2aXJ0dWFsLG1kaW8tZ3Bpb1wmIzM0OztcbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LXJiMzAxMS5kdHMtMTgzLVx0XHRncGlvcyA9IFx1MDAzY1x1MDAyNnFjb21fcGlubXV4IDExIEdQSU9fQUNUSVZFX0hJR0hcdTAwM2UsXG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDEzM2MtcHJpaG1iLmR0cz0xMTg9XHRtZGlvMDogbWRpbyB7XG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTMzYy1wcmlobWIuZHRzOjExOTpcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3ZpcnR1YWwsbWRpby1ncGlvXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDEzM2MtcHJpaG1iLmR0cy0xMjAtXHRcdCNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbi0tXG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTUxYS1wcnR0MWMuZHRzPTM4PVx0bWRpbzA6IG1kaW8ge1xuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDE1MWEtcHJ0dDFjLmR0czozOTpcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3ZpcnR1YWwsbWRpby1ncGlvXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDE1MWEtcHJ0dDFjLmR0cy00MC1cdFx0I2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxNTFhLXBydHQxbC5kdHNpPTQ0PVx0bWRpbzA6IG1kaW8ge1xuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDE1MWEtcHJ0dDFsLmR0c2k6NDU6XHRcdGNvbXBhdGlibGUgPSBcJiMzNDt2aXJ0dWFsLG1kaW8tZ3Bpb1wmIzM0OztcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxNTFhLXBydHQxbC5kdHNpLTQ2LVx0XHQjYWRkcmVzcy1jZWxscyA9IFx1MDAzYzFcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OG1xLXppaS11bHRyYS5kdHNpPTE4PVx0bWRpbzA6IG1kaW8ge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OG1xLXppaS11bHRyYS5kdHNpOjE5Olx0XHRjb21wYXRpYmxlID0gXCYjMzQ7dmlydHVhbCxtZGlvLWdwaW9cJiMzNDs7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg4bXEtemlpLXVsdHJhLmR0c2ktMjAtXHRcdHBpbmN0cmwtbmFtZXMgPSBcJiMzNDtkZWZhdWx0XCYjMzQ7O1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM9MTk3PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG1kaW9fZ3Bpb19vZl9tYXRjaFtdID0ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzoxOTg6XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7dmlydHVhbCxtZGlvLWdwaW9cJiMzNDssIH0sXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTE5OS1cdHsgLmNvbXBhdGlibGUgPSBcJiMzNDttaWNyb2NoaXAsbWRpby1zbWkwXCYjMzQ7IH0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMjM6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyNjYKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAyNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ3VycmVudCBBc3Nlc3NtZW50IG9mIHRoZSBQSFkgRHJpdmVyIFByb2JlIFNpdHVhdGlvbioqCgpPa2F5LCBzbyB0aGUgYHZpcnR1YWwsbWRpby1ncGlvYCBkcml2ZXIgaXNuJiMzOTt0IGEgKnJlYWwqIHZpcnR1YWwgYnVzOyBpdCBqdXN0IGJpdC1iYW5ncyBNRElPIG92ZXIgR1BJT3MuIFRoYXQmIzM5O3Mgbm90IGhlbHBmdWwgaW4gdGhpcyBzY2VuYXJpby4gTXkgcHJpbWFyeSBjb25jZXJuIHJpZ2h0IG5vdyBpcyBmaWd1cmluZyBvdXQgaG93IHRvIHByb2JlIHRoaXMgUEhZIGRyaXZlciAoYGRhcDgyMTFyX2NvbmZpZ19pbml0YCB0byBiZSBwcmVjaXNlKSAqd2l0aG91dCogYW4gYWN0dWFsIGhhcmR3YXJlIFBIWS4gSSBuZWVkIGEgd2F5IHRvIGdldCB0aGUgZHJpdmVyJiMzOTtzIGNvZGUgZXhlY3V0ZWQuCgpJIGNvbnNpZGVyZWQgYGRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuY2AsIGJ1dCBpdCBqdXN0IGRlZmluZXMgYSAqZml4ZWQqIFBIWSwgcmVnaXN0ZXJzIGl0IHdpdGggaXRzICpvd24qIFBIWSBJRCwgYW5kIGRvZXNuJiMzOTt0IG9mZmVyIGEgbWVjaGFuaXNtIHRvIHByb2JlIGFuIGFyYml0cmFyeSBkcml2ZXIuIFRoYXQgd29uJiMzOTt0IGRvIGl0LiBJJiMzOTttIHN0dWNrLCBJIG5lZWQgdG8gZmluZCBhIHdheSB0byByZWFjaCB0aGUgYGRhcDgyMTFyX2NvbmZpZ19pbml0YCBmdW5jdGlvbiB3aXRob3V0IGFuIGluc3RhbnRpYXRlZCBQSFkuCgpUaGVuIEkgaGFkIGEgc3BhcmsuLi5zeXprYWxsZXIgaGFzIGBzeXpfdXNiX2Nvbm5lY3RgLiBDb3VsZCBhIFVTQi10by1NRElPIGJyaWRnZSBiZSB0aGUga2V5PyBUaGF0IG1pZ2h0IHdvcmsgaWYgSSBrbmV3IHRoZSBQSFkgSUQsIGJ1dCB0aGF0JiMzOTtzIHN0aWxsIGFuIGFzc3VtcHRpb24uCgpTbywgYXJlIHRoZXJlIGFueSBnZW5lcmljIE1ESU8gYnVzIGVtdWxhdGlvbnMgb3IgZHVtbXkgZHJpdmVycyBpbiB0aGUga2VybmVsIGFueXdoZXJlPyBJIG5lZWQgdG8gY2hlY2sgdGhlIGBkcml2ZXJzL25ldC9waHkvYCBkaXJlY3RvcnkgZm9yIGFueSBzb3J0IG9mIG1vY2t1cCB0aGF0IEkgY291bGQgdXNlLiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIG5leHQgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMzowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDthZGluLmMmIzM0OywKICAgICYjMzQ7YWRpbjExMDAuYyYjMzQ7LAogICAgJiMzNDthaXJfYW44ODAxLmMmIzM0OywKICAgICYjMzQ7YWlyX2VuODgxMWguYyYjMzQ7LAogICAgJiMzNDthaXJfcGh5X2xpYi5jJiMzNDssCiAgICAmIzM0O2Fpcl9waHlfbGliLmgmIzM0OywKICAgICYjMzQ7YW1kLmMmIzM0OywKICAgICYjMzQ7YXMyMXh4eC5jJiMzNDssCiAgICAmIzM0O2F4ODg3OTZiLmMmIzM0OywKICAgICYjMzQ7YXg4ODc5NmJfcnVzdC5ycyYjMzQ7LAogICAgJiMzNDtiY20tY3lnbnVzLmMmIzM0OywKICAgICYjMzQ7YmNtLXBoeS1saWIuYyYjMzQ7LAogICAgJiMzNDtiY20tcGh5LWxpYi5oJiMzNDssCiAgICAmIzM0O2JjbS1waHktcHRwLmMmIzM0OywKICAgICYjMzQ7YmNtNTQxNDAuYyYjMzQ7LAogICAgJiMzNDtiY202M3h4LmMmIzM0OywKICAgICYjMzQ7YmNtN3h4eC5jJiMzNDssCiAgICAmIzM0O2JjbTg0ODgxLmMmIzM0OywKICAgICYjMzQ7YmNtODd4eC5jJiMzNDssCiAgICAmIzM0O2Jyb2FkY29tLmMmIzM0OywKICAgICYjMzQ7Y2ljYWRhLmMmIzM0OywKICAgICYjMzQ7Y29ydGluYS5jJiMzNDssCiAgICAmIzM0O2RhcDgyMTFyLmMmIzM0OywKICAgICYjMzQ7ZGF2aWNvbS5jJiMzNDssCiAgICAmIzM0O2RwODM2NDAuYyYjMzQ7LAogICAgJiMzNDtkcDgzNjQwX3JlZy5oJiMzNDssCiAgICAmIzM0O2RwODM4MjIuYyYjMzQ7LAogICAgJiMzNDtkcDgzODQ4LmMmIzM0OywKICAgICYjMzQ7ZHA4Mzg2Ny5jJiMzNDssCiAgICAmIzM0O2RwODM4NjkuYyYjMzQ7LAogICAgJiMzNDtkcDgzdGM4MTEuYyYjMzQ7LAogICAgJiMzNDtkcDgzdGQ1MTAuYyYjMzQ7LAogICAgJiMzNDtkcDgzdGc3MjAuYyYjMzQ7LAogICAgJiMzNDtldDEwMTFjLmMmIzM0OywKICAgICYjMzQ7Zml4ZWRfcGh5LmMmIzM0OywKICAgICYjMzQ7aWNwbHVzLmMmIzM0OywKICAgICYjMzQ7aW50ZWwteHdheS5jJiMzNDssCiAgICAmIzM0O2xpbmttb2RlLmMmIzM0OywKICAgICYjMzQ7bHh0LmMmIzM0OywKICAgICYjMzQ7bWFydmVsbC04OHEyeHh4LmMmIzM0OywKICAgICYjMzQ7bWFydmVsbC04OHgyMjIyLmMmIzM0OywKICAgICYjMzQ7bWFydmVsbC5jJiMzNDssCiAgICAmIzM0O21hcnZlbGwxMGcuYyYjMzQ7LAogICAgJiMzNDttZGlvLW9wZW4tYWxsaWFuY2UuaCYjMzQ7LAogICAgJiMzNDttZGlvX2J1cy5jJiMzNDssCiAgICAmIzM0O21kaW9fYnVzX3Byb3ZpZGVyLmMmIzM0OywKICAgICYjMzQ7bWRpb19kZXZpY2UuYyYjMzQ7LAogICAgJiMzNDttZGlvX2RldnJlcy5jJiMzNDssCiAgICAmIzM0O21lc29uLWd4bC5jJiMzNDssCiAgICAmIzM0O21pY3JlbC5jJiMzNDssCiAgICAmIzM0O21pY3JvY2hpcC5jJiMzNDssCiAgICAmIzM0O21pY3JvY2hpcF9yZHNfcHRwLmMmIzM0OywKICAgICYjMzQ7bWljcm9jaGlwX3Jkc19wdHAuaCYjMzQ7LAogICAgJiMzNDttaWNyb2NoaXBfdDEuYyYjMzQ7LAogICAgJiMzNDttaWNyb2NoaXBfdDFzLmMmIzM0OywKICAgICYjMzQ7bWlpX3RpbWVzdGFtcGVyLmMmIzM0OywKICAgICYjMzQ7bW90b3Jjb21tLmMmIzM0OywKICAgICYjMzQ7bXhsLTg2MTEwLmMmIzM0OywKICAgICYjMzQ7bXhsLWdweS5jJiMzNDssCiAgICAmIzM0O25hdGlvbmFsLmMmIzM0OywKICAgICYjMzQ7bmNuMjYwMDAuYyYjMzQ7LAogICAgJiMzNDtueHAtYzQ1LXRqYTExeHgtbWFjc2VjLmMmIzM0OywKICAgICYjMzQ7bnhwLWM0NS10amExMXh4LmMmIzM0OywKICAgICYjMzQ7bnhwLWM0NS10amExMXh4LmgmIzM0OywKICAgICYjMzQ7bnhwLWNidHguYyYjMzQ7LAogICAgJiMzNDtueHAtdGphMTF4eC5jJiMzNDssCiAgICAmIzM0O29wZW5fYWxsaWFuY2VfaGVscGVycy5jJiMzNDssCiAgICAmIzM0O29wZW5fYWxsaWFuY2VfaGVscGVycy5oJiMzNDssCiAgICAmIzM0O3BoeS1jNDUuYyYjMzQ7LAogICAgJiMzNDtwaHktY2Fwcy5oJiMzNDssCiAgICAmIzM0O3BoeS1jb3JlLmMmIzM0OywKICAgICYjMzQ7cGh5LmMmIzM0OywKICAgICYjMzQ7cGh5X2NhcHMuYyYjMzQ7LAogICAgJiMzNDtwaHlfZGV2aWNlLmMmIzM0OywKICAgICYjMzQ7cGh5X2xlZF90cmlnZ2Vycy5jJiMzNDssCiAgICAmIzM0O3BoeV9saW5rX3RvcG9sb2d5LmMmIzM0OywKICAgICYjMzQ7cGh5X3BhY2thZ2UuYyYjMzQ7LAogICAgJiMzNDtwaHlfcG9ydC5jJiMzNDssCiAgICAmIzM0O3BoeWxpYi1pbnRlcm5hbC5oJiMzNDssCiAgICAmIzM0O3BoeWxpYi5oJiMzNDssCiAgICAmIzM0O3BoeWxpbmsuYyYjMzQ7LAogICAgJiMzNDtxc2VtaS5jJiMzNDssCiAgICAmIzM0O3F0MjAyNS5ycyYjMzQ7LAogICAgJiMzNDtyb2NrY2hpcC5jJiMzNDssCiAgICAmIzM0O3NmcC1idXMuYyYjMzQ7LAogICAgJiMzNDtzZnAuYyYjMzQ7LAogICAgJiMzNDtzZnAuaCYjMzQ7LAogICAgJiMzNDtzbXNjLmMmIzM0OywKICAgICYjMzQ7c3RlMTBYcC5jJiMzNDssCiAgICAmIzM0O3N0dWJzLmMmIzM0OywKICAgICYjMzQ7c3dwaHkuYyYjMzQ7LAogICAgJiMzNDtzd3BoeS5oJiMzNDssCiAgICAmIzM0O3RlcmFuZXRpY3MuYyYjMzQ7LAogICAgJiMzNDt1UEQ2MDYyMC5jJiMzNDssCiAgICAmIzM0O3ZpdGVzc2UuYyYjMzQ7LAogICAgJiMzNDt4aWxpbnhfZ21paTJyZ21paS5jJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBbCiAgICAmIzM0O2FxdWFudGlhJiMzNDssCiAgICAmIzM0O21lZGlhdGVrJiMzNDssCiAgICAmIzM0O21zY2MmIzM0OywKICAgICYjMzQ7cWNvbSYjMzQ7LAogICAgJiMzNDtyZWFsdGVrJiMzNDsKICBdCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMzowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjgzMgoJCQkJCQkJb3V0cHV0OiAxNgoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgY29kZToKCioqQW5hbHl6aW5nIFBvdGVudGlhbCBQSFkgSW1wbGVtZW50YXRpb24qKgoKT2theSwgdGhlIG1lbnRpb24gb2YgYGZpeGVkX3BoeS5jYCBhbmQgYHN3cGh5LmNgIGltbWVkaWF0ZWx5IGZsYWdzIG15IGF0dGVudGlvbi4gSXQmIzM5O3MgYSBjbGFzc2ljIHNjZW5hcmlvLCB1c3VhbGx5IGluZGljYXRpbmcgZWl0aGVyIGEgaGFyZC1jb2RlZCBwaHlzaWNhbCBsYXllciAoUEhZKSBvciBvbmUgaW1wbGVtZW50ZWQsIGF0IGxlYXN0IGluIHBhcnQsIGluIHNvZnR3YXJlLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBtb3N0IGludGVyZXN0aW5nIGFuZCBsaWtlbHkgcGxhY2UgdG8gc3RhcnQgbG9va2luZyB0byB1bmRlcnN0YW5kIHRoaXMgaXMgdGhlIHNvZnR3YXJlIFBIWSBpbXBsZW1lbnRhdGlvbi4gU28sIG15IGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIGBzd3BoeS5jYCBmaXJzdC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgY29yZSBsb2dpYyB3aWxsIGxpa2VseSByZXNpZGUsIGFuZCB1bmRlcnN0YW5kaW5nICp0aGF0KiB3aWxsIHByb2JhYmx5IGVsdWNpZGF0ZSB0aGUgbGFyZ2VyIGFyY2hpdGVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMjM6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3dwaHkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvYXJyb3cseHJzNzAweC55YW1sPTM4PWV4YW1wbGVzOlxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL2Fycm93LHhyczcwMHgueWFtbC01Mi0gICAgICAgICAgICAgICAgICAgIGxhYmVsID0gXCYjMzQ7bGFuMFwmIzM0OztcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL2Fycm93LHhyczcwMHgueWFtbDo1MzogICAgICAgICAgICAgICAgICAgIHBoeS1oYW5kbGUgPSBcdTAwM2NcdTAwMjZzd3BoeTBcdTAwM2U7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9hcnJvdyx4cnM3MDB4LnlhbWwtNTQtICAgICAgICAgICAgICAgICAgICBwaHktbW9kZSA9IFwmIzM0O3JnbWlpLWlkXCYjMzQ7O1xuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL2Fycm93LHhyczcwMHgueWFtbC01OC0gICAgICAgICAgICAgICAgICAgIGxhYmVsID0gXCYjMzQ7bGFuMVwmIzM0OztcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL2Fycm93LHhyczcwMHgueWFtbDo1OTogICAgICAgICAgICAgICAgICAgIHBoeS1oYW5kbGUgPSBcdTAwM2NcdTAwMjZzd3BoeTFcdTAwM2U7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9hcnJvdyx4cnM3MDB4LnlhbWwtNjAtICAgICAgICAgICAgICAgICAgICBwaHktbW9kZSA9IFwmIzM0O3JnbWlpLWlkXCYjMzQ7O1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHM9MzE5PVx0XHRcdHN3cG9ydDE6IGV0aGVybmV0LXBvcnRAMSB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS03MDQwLW1vY2hhYmluLmR0cy0zMjEtXHRcdFx0XHRsYWJlbCA9IFwmIzM0O2xhbjBcJiMzNDs7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTcwNDAtbW9jaGFiaW4uZHRzOjMyMjpcdFx0XHRcdHBoeS1oYW5kbGUgPSBcdTAwM2NcdTAwMjZzd3BoeTFcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTcwNDAtbW9jaGFiaW4uZHRzLTMyMy1cdFx0XHR9O1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHM9MzI1PVx0XHRcdHN3cG9ydDI6IGV0aGVybmV0LXBvcnRAMiB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS03MDQwLW1vY2hhYmluLmR0cy0zMjctXHRcdFx0XHRsYWJlbCA9IFwmIzM0O2xhbjFcJiMzNDs7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTcwNDAtbW9jaGFiaW4uZHRzOjMyODpcdFx0XHRcdHBoeS1oYW5kbGUgPSBcdTAwM2NcdTAwMjZzd3BoeTJcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTcwNDAtbW9jaGFiaW4uZHRzLTMyOS1cdFx0XHR9O1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHM9MzMxPVx0XHRcdHN3cG9ydDM6IGV0aGVybmV0LXBvcnRAMyB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS03MDQwLW1vY2hhYmluLmR0cy0zMzMtXHRcdFx0XHRsYWJlbCA9IFwmIzM0O2xhbjJcJiMzNDs7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTcwNDAtbW9jaGFiaW4uZHRzOjMzNDpcdFx0XHRcdHBoeS1oYW5kbGUgPSBcdTAwM2NcdTAwMjZzd3BoeTNcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTcwNDAtbW9jaGFiaW4uZHRzLTMzNS1cdFx0XHR9O1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHM9MzM3PVx0XHRcdHN3cG9ydDQ6IGV0aGVybmV0LXBvcnRANCB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS03MDQwLW1vY2hhYmluLmR0cy0zMzktXHRcdFx0XHRsYWJlbCA9IFwmIzM0O2xhbjNcJiMzNDs7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTcwNDAtbW9jaGFiaW4uZHRzOjM0MDpcdFx0XHRcdHBoeS1oYW5kbGUgPSBcdTAwM2NcdTAwMjZzd3BoeTRcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTcwNDAtbW9jaGFiaW4uZHRzLTM0MS1cdFx0XHR9O1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHM9MzUyPVx0XHRtZGlvIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTcwNDAtbW9jaGFiaW4uZHRzLTM1NS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHM6MzU2Olx0XHRcdHN3cGh5MTogZXRoZXJuZXQtcGh5QDE3IHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHMtMzU3LVx0XHRcdFx0cmVnID0gXHUwMDNjMTdcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS03MDQwLW1vY2hhYmluLmR0cy0zNTktXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTcwNDAtbW9jaGFiaW4uZHRzOjM2MDpcdFx0XHRzd3BoeTI6IGV0aGVybmV0LXBoeUAxOCB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTcwNDAtbW9jaGFiaW4uZHRzLTM2MS1cdFx0XHRcdHJlZyA9IFx1MDAzYzE4XHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHMtMzYzLVxuYXJjaC9hcm02NC9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS03MDQwLW1vY2hhYmluLmR0czozNjQ6XHRcdFx0c3dwaHkzOiBldGhlcm5ldC1waHlAMTkge1xuYXJjaC9hcm02NC9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS03MDQwLW1vY2hhYmluLmR0cy0zNjUtXHRcdFx0XHRyZWcgPSBcdTAwM2MxOVx1MDAzZTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTcwNDAtbW9jaGFiaW4uZHRzLTM2Ny1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHM6MzY4Olx0XHRcdHN3cGh5NDogZXRoZXJuZXQtcGh5QDIwIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHMtMzY5LVx0XHRcdFx0cmVnID0gXHUwMDNjMjBcdTAwM2U7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmM9MTk5Mz1zdGF0aWMgaW5saW5lIGludCBiY21fZW5ldF9wb3J0X2lzX3JnbWlpKGludCBwb3J0aWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmMtMjAwMC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jOjIwMDE6c3RhdGljIHZvaWQgc3dwaHlfcG9sbF90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTIwMDIte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmM6MjAwMzpcdHN0cnVjdCBiY21fZW5ldF9wcml2ICpwcml2ID0gdGltZXJfY29udGFpbmVyX29mKHByaXYsIHQsIHN3cGh5X3BvbGwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmMtMjAwNC1cdHVuc2lnbmVkIGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTIwOTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYzoyMDkyOlx0cHJpdi1cdTAwM2Vzd3BoeV9wb2xsLmV4cGlyZXMgPSBqaWZmaWVzICYjNDM7IEhaO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmM6MjA5MzpcdGFkZF90aW1lcihcdTAwMjZwcml2LVx1MDAzZXN3cGh5X3BvbGwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmMtMjA5NC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmM9MjA5OT1zdGF0aWMgaW50IGJjbV9lbmV0c3dfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTIzMDgtXHQvKiBzdGFydCBwaHkgcG9sbGluZyB0aW1lciAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmM6MjMwOTpcdHRpbWVyX3NldHVwKFx1MDAyNnByaXYtXHUwMDNlc3dwaHlfcG9sbCwgc3dwaHlfcG9sbF90aW1lciwgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYzoyMzEwOlx0bW9kX3RpbWVyKFx1MDAyNnByaXYtXHUwMDNlc3dwaHlfcG9sbCwgamlmZmllcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYy0yMzExLVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmM9MjMzOT1zdGF0aWMgaW50IGJjbV9lbmV0c3dfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTIzNDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYzoyMzQ3Olx0dGltZXJfZGVsZXRlX3N5bmMoXHUwMDI2cHJpdi1cdTAwM2Vzd3BoeV9wb2xsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTIzNDgtXHRuZXRpZl9zdG9wX3F1ZXVlKGRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0Lmg9MTk0PXN0cnVjdCBiY21fZW5ldF9wcml2IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuaC0zNDEtXHQvKiB1c2VkIHRvIHBvbGwgc3dpdGNoIHBvcnQgc3RhdGUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5oOjM0MjpcdHN0cnVjdCB0aW1lcl9saXN0IHN3cGh5X3BvbGw7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuaC0zNDMtXHRzcGlubG9ja190IGVuZXRzd19tZGlvX2xvY2s7XG4tLVxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTEyPWVuZGlmXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtMTMtXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MTQ6bGlicGh5LSQoQ09ORklHX1NXUEhZKVx0XHQmIzQzOz0gc3dwaHkub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTE1LWxpYnBoeS0kKENPTkZJR19MRURfVFJJR0dFUl9QSFkpXHQmIzQzOz0gcGh5X2xlZF90cmlnZ2Vycy5vXG4tLVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTIwLVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jOjIxOiNpbmNsdWRlIFwmIzM0O3N3cGh5LmhcJiMzNDtcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0yMi1cbi0tXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM9NjE9c3RhdGljIGludCBmaXhlZF9tZGlvX3JlYWQoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9hZGRyLCBpbnQgcmVnX251bSlcbi0tXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtNzEtXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM6NzI6XHRyZXR1cm4gc3dwaHlfcmVhZF9yZWcocmVnX251bSwgXHUwMDI2ZnAtXHUwMDNlc3RhdHVzKTtcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy03My19XG4tLVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jPTEzMT1zdHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBmaXhlZF9waHlfc3RhdHVzICpzdGF0dXMsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTEzNy1cbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYzoxMzg6XHRyZXQgPSBzd3BoeV92YWxpZGF0ZV9zdGF0ZShzdGF0dXMpO1xuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTEzOS1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNC0jaW5jbHVkZSBcJiMzNDtzZnAuaFwmIzM0O1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNTojaW5jbHVkZSBcJiMzNDtzd3BoeS5oXCYjMzQ7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzM2MD1zdGF0aWMgaW50IHBoeWxpbmtfbWlpX2VtdWxfcmVhZCh1bnNpZ25lZCBpbnQgcmVnLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzM3Mi1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzM3MzpcdHZhbCA9IHN3cGh5X3JlYWRfcmVnKHJlZywgXHUwMDI2ZnMpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzc0LVx0aWYgKHJlZyA9PSBNSUlfQk1TUikge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jLTE2LVxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmM6MTc6I2luY2x1ZGUgXCYjMzQ7c3dwaHkuaFwmIzM0O1xuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmMtMTgtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmM9NTY9c3RhdGljIGNvbnN0IHN0cnVjdCBzd21paV9yZWdzIGR1cGxleFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jLTcwLVxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmM6NzE6c3RhdGljIGludCBzd3BoeV9kZWNvZGVfc3BlZWQoaW50IHNwZWVkKVxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmMtNzIte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jLTg1LS8qKlxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmM6ODY6ICogc3dwaHlfdmFsaWRhdGVfc3RhdGUgLSB2YWxpZGF0ZSB0aGUgc29mdHdhcmUgcGh5IHN0YXR1c1xuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmMtODctICogQHN0YXRlOiBzb2Z0d2FyZSBwaHkgc3RhdHVzXG4tLVxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmMtOTItICovXG5kcml2ZXJzL25ldC9waHkvc3dwaHkuYzo5MzppbnQgc3dwaHlfdmFsaWRhdGVfc3RhdGUoY29uc3Qgc3RydWN0IGZpeGVkX3BoeV9zdGF0dXMgKnN0YXRlKVxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmMtOTQte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jLTk3LVx0aWYgKHN0YXRlLVx1MDAzZWxpbmspIHtcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jOjk4Olx0XHRlcnIgPSBzd3BoeV9kZWNvZGVfc3BlZWQoc3RhdGUtXHUwMDNlc3BlZWQpO1xuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmMtOTktXHRcdGlmIChlcnIgXHUwMDNjIDApIHtcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jOjEwMDpcdFx0XHRwcl93YXJuKFwmIzM0O3N3cGh5OiB1bmtub3duIHNwZWVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jLTEwMS1cdFx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC9waHkvc3dwaHkuYy0xMDUtfVxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmM6MTA2OkVYUE9SVF9TWU1CT0xfR1BMKHN3cGh5X3ZhbGlkYXRlX3N0YXRlKTtcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jLTEwNy1cbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jLTEwOC0vKipcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jOjEwOTogKiBzd3BoeV9yZWFkX3JlZyAtIHJldHVybiBhIE1JSSByZWdpc3RlciBmcm9tIHRoZSBmaXhlZCBwaHkgc3RhdGVcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jLTExMC0gKiBAcmVnOiBNSUkgcmVnaXN0ZXJcbi0tXG5kcml2ZXJzL25ldC9waHkvc3dwaHkuYy0xMTQtICovXG5kcml2ZXJzL25ldC9waHkvc3dwaHkuYzoxMTU6aW50IHN3cGh5X3JlYWRfcmVnKGludCByZWcsIGNvbnN0IHN0cnVjdCBmaXhlZF9waHlfc3RhdHVzICpzdGF0ZSlcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jLTExNi17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmMtMTI1LVxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmM6MTI2Olx0c3BlZWRfaW5kZXggPSBzd3BoeV9kZWNvZGVfc3BlZWQoc3RhdGUtXHUwMDNlc3BlZWQpO1xuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmMtMTI3LVx0aWYgKFdBUk5fT04oc3BlZWRfaW5kZXggXHUwMDNjIDApKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jLTE3NC19XG5kcml2ZXJzL25ldC9waHkvc3dwaHkuYzoxNzU6RVhQT1JUX1NZTUJPTF9HUEwoc3dwaHlfcmVhZF9yZWcpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5oPTU9c3RydWN0IGZpeGVkX3BoeV9zdGF0dXM7XG5kcml2ZXJzL25ldC9waHkvc3dwaHkuaC02LVxuZHJpdmVycy9uZXQvcGh5L3N3cGh5Lmg6NzppbnQgc3dwaHlfdmFsaWRhdGVfc3RhdGUoY29uc3Qgc3RydWN0IGZpeGVkX3BoeV9zdGF0dXMgKnN0YXRlKTtcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5oOjg6aW50IHN3cGh5X3JlYWRfcmVnKGludCByZWcsIGNvbnN0IHN0cnVjdCBmaXhlZF9waHlfc3RhdHVzICpzdGF0ZSk7XG5kcml2ZXJzL25ldC9waHkvc3dwaHkuaC05LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMzowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjc3NAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDM3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDdXJyZW50IExpbmUgb2YgUmVhc29uaW5nKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHRvIGludGVncmF0ZSBhIHJlYWwgUEhZIGRyaXZlciwgc3BlY2lmaWNhbGx5IGBkYXA4MjExcmAsIGludG8gYSB0ZXN0aW5nIGVudmlyb25tZW50LCBzcGVjaWZpY2FsbHkgYSB2aXJ0dWFsIE1ESU8gYnVzLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIGFib3V0IGBzd3BoeWAgLSBjbGVhcmx5LCBzb2Z0d2FyZSBQSFlzIC0gYnV0IEkmIzM5O20gbG9va2luZyBmb3Igc29tZXRoaW5nIG1vcmUgY29uY3JldGUuIENhbiBJICppbmplY3QqIGBkYXA4MjExcmAgaW50byBhIHZpcnR1YWwgTURJTyBidXM/CgpUaGUgbmV4dCBkaXJlY3Rpb24sIGFuZCBwcm9iYWJseSB0aGUgbW9zdCBmcnVpdGZ1bCwgaXMgdG8gY29uc2lkZXIgaG93IG5ldHdvcmsgZGV2aWNlcyBhcmUgZW11bGF0ZWQgd2l0aGluIFFFTVUuIFNwZWNpZmljYWxseSwgZW11bGF0ZWQgbmV0d29yayBkZXZpY2VzIHN1Y2ggYXMgYG1hY2JgLCBgZmVjYCwgYW5kIG90aGVycywgZnJlcXVlbnRseSBjb21lIHdpdGggYW4gTURJTyBidXMgYXMgcGFydCBvZiB0aGUgZW11bGF0ZWQgaGFyZHdhcmUuIFFFTVUgZW11bGF0ZXMgYSB3aWRlIGFycmF5IG9mIGRldmljZXMgbGlrZSBgZTEwMDBgLCBgcnRsODEzOWAsIGB2aXJ0aW8tbmV0YCwgYHBjbmV0YCwgYG5lMmtfcGNpYCwgYHR1bGlwYCwgYW5kIGB2bXhuZXQzYC4gIEl0IG9jY3VycyB0byBtZSwgc29tZSBvZiB0aGVzZSBtaWdodCBhY3R1YWxseSAqaGF2ZSogYW4gTURJTyBidXMgYWNjZXNzaWJsZSBpbiB0aGUgdmlydHVhbCBlbnZpcm9ubWVudC4gSXQmIzM5O3MgYWxzbyB3b3J0aCBub3RpbmcgUUVNVSBlbXVsYXRlcyBgaW14LmZlY2Agd2hpY2ggZGVmaW5pdGVseSBoYXMgYW4gTURJTyBidXMuCgpIb3dldmVyLCBTeXprYWxsZXIsIHdoaWNoIEkmIzM5O20gZmFtaWxpYXIgd2l0aCwgcHJlZG9taW5hbnRseSBydW5zIG9uIGB4ODZfNjRgIGFuZCBsZWFucyB0b3dhcmRzIGB2aXJ0aW8tbmV0YCBvciBgZTEwMDBgIGZvciBuZXR3b3JrIHRlc3RpbmcuIFN0aWxsLCBzeXprYWxsZXIgaGFzIHRoZSBmbGV4aWJpbGl0eSB0byB1c2UgYHZrbXNgIGZvciBEUk0sIGBtYWM4MDIxMV9od3NpbWAgZm9yIHdpZmksIGFuZCBgdmhjaWAgZm9yIFVTQi4gIFRoaXMgaXMgbGVhZGluZyBtZSB0byBjb25zaWRlcjogSXMgdGhlcmUgYSB3YXkgdG8gbGV2ZXJhZ2UgVVNCIGZvciBwcm9iaW5nIFBIWSBkcml2ZXJzPwoKQWgsIHRoYXQmIzM5O3MgaXQhIFVTQi10by1FdGhlcm5ldCBhZGFwdGVycywgdGhleSB1c2UgUEhZcyEgYHNtc2M5NXh4YCB1c2VzIGVpdGhlciBhbiBpbnRlcm5hbCBvciBleHRlcm5hbCBQSFkuIEFsc28sIGBhc2l4YCwgYGF4ODgxNzlfMTc4YWAsIGFuZCBgcjgxNTJgIGFyZSBvdGhlciBleGFtcGxlcyBvZiBVU0IgZXRoZXJuZXQgZHJpdmVycyB0aGF0IHV0aWxpemUgUEhZcy4KClRoZXJlZm9yZSwgdGhlIGtleSBsaWVzIGluIGhvdyBzeXprYWxsZXIgYXBwcm9hY2hlcyBVU0IgZnV6emluZy4gSWYgSSBjYW4gY3JlYXRlIGFuIGVtdWxhdGVkIFVTQiBkZXZpY2UgdGhhdCBwcmVzZW50cyBhbiBNRElPIGJ1cyBhbmQgKnJlcG9ydHMqIHRoZSBQSFkgSUQgb2YgYGRhcDgyMTFyYCAod2hpY2ggaXMgYDB4MDAwODAxMUJgKSwgSSBjb3VsZCBwb3RlbnRpYWxseSBjcmVhdGUgYSBwZXJmZWN0IHRlc3Rpbmcgc2V0dXAuIFRoZSBuZXh0IHRoaW5nIEkgbmVlZCB0byBkbyBpcyB0byBkZXRlcm1pbmUgaWYgYW55IG9mIHRoZXNlIFVTQiBldGhlcm5ldCBkcml2ZXJzIGFyZSB1c2luZyB0aGUgZ2VuZXJpYyBQSFkgZnJhbWV3b3JrLCBwaHlsaWIuIFRoaXMgd2lsbCBnaXZlIG1lIGEgZm9vdGhvbGQgaW4gaG93IHRvIHByb2JlIGFuZCBjb250cm9sIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMzowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZGlvYnVzX3JlZ2lzdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz02Njk9c3RhdGljIGludCBheDg4NzcyX2luaXRfbWRpbyhzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY4Ni1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2ODc6XHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKHByaXYtXHUwMDNlbWRpbyk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjg4LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jPTYxPXN0YXRpYyBpbnQgYXg4ODE3MmFfaW5pdF9tZGlvKHN0cnVjdCB1c2JuZXQgKmRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy03OS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjgwOlx0cmV0ID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVx1MDAzZW1kaW8pO1xuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtODEtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0yMDkxPXN0YXRpYyBpbnQgbGFuNzh4eF9tZGlvX2luaXQoc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMTIxLVx0bm9kZSA9IG9mX2dldF9jaGlsZF9ieV9uYW1lKGRldi1cdTAwM2V1ZGV2LVx1MDAzZWRldi5vZl9ub2RlLCBcJiMzNDttZGlvXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjEyMjpcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoZGV2LVx1MDAzZW1kaW9idXMsIG5vZGUpO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMTIzLVx0b2Zfbm9kZV9wdXQobm9kZSk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmM9MTE0Nz1zdGF0aWMgaW50IHNtc2M5NXh4X2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYy0xMjQxLVxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmM6MTI0MjpcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIocGRhdGEtXHUwMDNlbWRpb2J1cyk7XG5kcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYy0xMjQzLVx0aWYgKHJldCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMzowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODI2NwoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDQ3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFjaGluZyB0aGUgZGFwODIxMXIgUEhZIERyaXZlciB2aWEgVVNCIEZ1enppbmcqKgoKT2theSwgdGhpcyBpcyBleGNlbGxlbnQhIEl0IGNsaWNrczogdGhlIGBzbXNjOTV4eGAsIGBsYW43OHh4YCwgYGF4ODgxNzJhYCwgYW5kIGBhc2l4X2RldmljZXNgIGFsbCByZWdpc3RlciBhbiBNRElPIGJ1cy4gQW5kIHN5emthbGxlciYjMzk7cyBVU0IgZGV2aWNlIGVtdWxhdGlvbiBjYW4gKmludGVyY2VwdCogdGhvc2UgTURJTyByZWFkcy4gSWYgdGhlIGVtdWxhdGVkIFVTQiBkZXZpY2UgcmVzcG9uZHMgdG8gTURJTyByZWFkIHJlcXVlc3RzIGF0IHJlZ2lzdGVycyAyIGFuZCAzIHdpdGggdGhlIHNwZWNpZmljIFBIWSBJRCB2YWx1ZXMgYDB4MDAwOGAgYW5kIGAweDAxMUJgLCB0aGUga2VybmVsIHdpbGwgbG9hZCB0aGUgYGRhcDgyMTFyYCBQSFkgZHJpdmVyISBCb29tLiBXZSYjMzk7dmUgZ290IGEgcmVhY2hhYmxlIGRyaXZlciBoZXJlISBUaGlzIG1lYW5zIHdlIGNhbiByZWFjaCB0aGUgZHJpdmVyIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgdmlhIFVTQiBmdXp6aW5nIHRoYXQgc3l6a2FsbGVyIGFscmVhZHkgaGFzIHRocm91Z2ggYGR1bW15X2hjZGAgYW5kIGBzeXpfdXNiX2Nvbm5lY3RgLgoKQWxyaWdodCwgdGltZSB0byByZXZpZXcgdGhlIHBhdGNoIGFnYWluIHdpdGggdGhpcyBpbiBtaW5kLiBJdCYjMzk7cyBhZGRpbmcgdGhlIGBkYXA4MjExcmAgUEhZIGRyaXZlciwgbW9kaWZ5aW5nIHRoZSBgS2NvbmZpZ2AgYW5kIGBNYWtlZmlsZWAuIFRoZSBhY3R1YWwgZHJpdmVyIGltcGxlbWVudHMgYGRhcDgyMTFyX2NvbmZpZ19pbml0YCwgYGRhcDgyMTFyX3JlYWRfZXh0YCwgYW5kIGBkYXA4MjExcl9tb2RpZnlfZXh0YC4gVGhlIHBhdGNoIGlzIGZ1bmN0aW9uYWwgYW5kIGRlZmluaXRlbHkgZnV6emFibGUuCgpOb3csIHdoYXQgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIHRvICpyZWFsbHkqIGZvY3VzIG9uIGR1cmluZyBmdXp6aW5nPyBMZXQmIzM5O3Mgem9vbSBpbjogYGRhcDgyMTFyX2NvbmZpZ19pbml0YCwgYGRhcDgyMTFyX3JlYWRfZXh0YCwgYW5kIGBkYXA4MjExcl9tb2RpZnlfZXh0YC4KCldhaXQgYSBzZWNvbmQuIEhhbmcgb24uLi4gYGRhcDgyMTFyX3JlYWRfZXh0YCBhbmQgYGRhcDgyMTFyX21vZGlmeV9leHRgIGFyZSAqc3RhdGljKiBoZWxwZXIgZnVuY3Rpb25zLiBUaGUgb25seSB0aGluZyBleHBvcnRlZCBhbmQgKnJlZ2lzdGVyZWQqIGlzIGBkYXA4MjExcl9jb25maWdfaW5pdGAuIFRoZSBvdGhlciBmdW5jdGlvbnMgYXJlIGp1c3QgYm9nLXN0YW5kYXJkIGBnZW5waHlfKmAgZnVuY3Rpb25zLCB3aGljaCBhcmUgbGlrZWx5IGFscmVhZHkgd2VsbC1mdXp6ZWQgYW5kIG5vdCByZWFsbHkgc3BlY2lmaWMgdG8gdGhpcyBwYXRjaC4gU28sIG15IGBGb2N1c1N5bWJvbHNgIGVudHJ5IHNob3VsZCBqdXN0IGJlOgotIGBkYXA4MjExcl9jb25maWdfaW5pdGAKLSBgZGFwODIxMXJfcmVhZF9leHRgCi0gYGRhcDgyMTFyX21vZGlmeV9leHRgCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0IG1lIGNoZWNrIGZvciBhbnkgb3RoZXIgZnVuY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMzowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtec3RhdGljLipkYXA4MjExcl8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYy00Ny1cbmRyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jOjQ4OnN0YXRpYyBjb25zdCBpbnQgZGFwODIxMXJfaW50ZXJuYWxfZGVsYXlbXSA9IHswLCAxNTAsIDMwMCwgNDUwLCA2MDAsIDc1MCwgOTAwLFxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMtNDktXHRcdFx0XHRcdCAgICAgIDEwNTAsIDEyMDAsIDEzNTAsIDE1MDAsIDE2NTAsIDE4MDAsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMtNjMtICovXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYzo2NDpzdGF0aWMgaW50IGRhcDgyMTFyX3JlYWRfZXh0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUxNiByZWcpXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYy02NS17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMtOTEtICovXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYzo5MjpzdGF0aWMgaW50IGRhcDgyMTFyX21vZGlmeV9leHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZywgdTE2IG1hc2ssIHUxNiBzZXQpXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYy05My17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMtMTE3LSAqL1xuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmM6MTE4OnN0YXRpYyBpbnQgZGFwODIxMXJfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jLTExOS17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMtMTY3LVxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmM6MTY4OnN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkYXA4MjExcl9kcml2ZXJbXSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jLTE2OS1cdHtcbi0tXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYz0xODQ9TU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jLTE4NS1cbmRyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jOjE4NjpzdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIGRhcDgyMTFyX3RiW10gPSB7XG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYy0xODctXHR7IERBUDgyMTFSX1BIWV9JRCwgREFQODIxMVJfUEhZX0lEX01BU0sgfSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMjM6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk5NjYKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA2MTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQ29uZmlndXJhdGlvbiBBbmFseXNpcyBmb3IgdGhlIERBUDgyMTFSIFBIWSBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgREFQODIxMVIgUEhZIGRyaXZlciBjb2RlLCBzcGVjaWZpY2FsbHkgdGhlIGZ1bmN0aW9ucyBgZGFwODIxMXJfcmVhZF9leHRgLCBgZGFwODIxMXJfbW9kaWZ5X2V4dGAsIGFuZCBgZGFwODIxMXJfY29uZmlnX2luaXRgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB3aGF0IGNvbmZpZ3VyYXRpb25zIGFyZSBhY3R1YWxseSAqcmVxdWlyZWQqLiBUaGUgb2J2aW91cyBvbmUgaXMgYENPTkZJR19EQVA4MjExUl9QSFlgLiBCdXQgd2FpdCwgdGhhdCBkZXBlbmRzIG9uIGBPRmAsIHJpZ2h0PyBJIG5lZWQgdG8gY29uZmlybSB0aGF0LiBMZXQgbWUgcXVpY2tseSBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L3BoeS9LY29uZmlnYCBmaWxlLi4uIFllcCwgdGhlcmUgaXQgaXM6IGBjb25maWcgREFQODIxMVJfUEhZIC4uLiBkZXBlbmRzIG9uIE9GYC4gT2theSwgc28gd2UgZGVmaW5pdGVseSBuZWVkIGJvdGggYENPTkZJR19EQVA4MjExUl9QSFlgIGFuZCBgQ09ORklHX09GYC4gYENPTkZJR19PRmAgaXMgcHJldHR5IGNvbW1vbiwgc28gaXQmIzM5O3MgcHJvYmFibHkgYWxyZWFkeSBlbmFibGVkIG9uIG1vc3QgYXJjaGl0ZWN0dXJlcywgYnV0IHdlIHN0aWxsIG5lZWQgdG8gZXhwbGljaXRseSBzZXQgYERBUDgyMTFSX1BIWWAuIEFueXRoaW5nIGVsc2U/IE5vLCB0aGF0IHNlZW1zIHRvIGJlIGl0IGZvciB0aGUgZXhwbGljaXQgY29uZmlncy4KCk5vdywgYSBjcml0aWNhbCB0aG91Z2h0OiBob3cgcm9idXN0IGlzIGBkYXA4MjExcl9jb25maWdfaW5pdGAgaWYgdGhlIGRldmljZSB0cmVlIGlzICpub3QqIHVzZWQ/IFNwZWNpZmljYWxseSwgd2hhdCBoYXBwZW5zIGlmIGBPRmAgaXNuJiMzOTt0IGFjdGl2ZSwgb3IsIG1vcmUgc3VidGx5LCBpZiB0aGUgZGV2aWNlIGlzbiYjMzk7dCBpbnN0YW50aWF0ZWQgZnJvbSB0aGUgRFQgKGUuZy4sIGNvbm5lY3RlZCB2aWEgYSBVU0IgTURJTyBidXMgYW5kIGRvZXNuJiMzOTt0IGhhdmUgYW4gT0Ygbm9kZSk/IExldCYjMzk7cyBkaXZlIGludG8gdGhlIGNvZGUuLi4gQWgsIEkgc2VlOiBgcGh5ZGV2LSZndDttZGlvLmRldi5vZl9ub2RlYCBjYW4gYmUgTlVMTCBpbiB0aG9zZSBzY2VuYXJpb3MuIFRoaXMgdHJpZ2dlcnMgYSBmZXcgY2hlY2tzIHVzaW5nIGBvZl9wcm9wZXJ0eV9yZWFkX2Jvb2xgIGFuZCBgcGh5X2dldF9pbnRlcm5hbF9kZWxheWAuIEV4Y2VsbGVudCEgYG9mX3Byb3BlcnR5X3JlYWRfYm9vbGAgaGFuZGxlcyBhIE5VTEwgYG5wYCBncmFjZWZ1bGx5LCByZXR1cm5pbmcgZmFsc2UuIEFuZCBgcGh5X2dldF9pbnRlcm5hbF9kZWxheWAgYWxzbyBoYW5kbGVzIGEgTlVMTCBgb2Zfbm9kZWAgZ3JhY2VmdWxseSByZXR1cm5pbmcgYW4gZXJyb3IgY29kZS4gVGhpcyBtZWFucyB0aGUgZHJpdmVyICp3b24mIzM5O3QqIGNyYXNoLiBJdCYjMzk7bGwgaW5zdGVhZCBleGVjdXRlIGZhbGxiYWNrIHBhdGhzLiBTcGVjaWZpY2FsbHksIGl0IHVzZXMgYHBoeV9nZXRfaW50ZXJuYWxfZGVsYXlgIHdoaWNoLCBpZiBpdCBmYWlscywgZmFsbHMgYmFjayB0byBhIGRlZmF1bHQgdmFsdWUsIG9yIHplcm8uCgpgYGBjCglpbnRlcm5hbF9kZWxheSA9IHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkocGh5ZGV2LCBkYXA4MjExcl9pbnRlcm5hbF9kZWxheSwKCQkJCQkJREFQODIxMVJfREVMQVlfU0laRSwgdHJ1ZSk7CglpZiAoaW50ZXJuYWxfZGVsYXkgJmx0OyAwKSB7CgkJaWYgKHBoeWRldi0mZ3Q7aW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSSkKCQkJaW50ZXJuYWxfZGVsYXkgPSAwOwoJCWVsc2UKCQkJaW50ZXJuYWxfZGVsYXkgPSBEQVA4MjExUl9ERUZBVUxUX0RFTF9TRUw7Cgl9CmBgYAoKVGhpcyBpcyAqZXhhY3RseSogd2hhdCBJIHdhbnQgdG8gc2VlLCBhbmQgaXQgbWVhbnMgdGhlIGRyaXZlciBpcyByb2J1c3QgYW5kIGZ1enphYmxlIGV2ZW4gaW4gdGhlIGFic2VuY2Ugb2YgYSBkZXZpY2UgdHJlZSBub2RlLiBJIG5lZWQgdG8gdmVyaWZ5IGBwaHlfZ2V0X2ludGVybmFsX2RlbGF5YCYjMzk7cyBiZWhhdmlvciB3aXRoIGEgTlVMTCBgb2Zfbm9kZWAsIGJ1dCBJIGFtIG5vdCBleHBlY3RpbmcgYW55IHN1cnByaXNlcy4gT3ZlcmFsbCwgdGhpcyBjb2RlIGxvb2tzIHdlbGwtd3JpdHRlbiwgd2l0aCBnb29kIGRlZmVuc2l2ZSBwcm9ncmFtbWluZyBhZ2FpbnN0IHRoZSBwb3NzaWJpbGl0eSBvZiB0aGUgZGV2aWNlIHRyZWUgbm90IGJlaW5nIHByZXNlbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIzOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeV9nZXRfaW50ZXJuYWxfZGVsYXkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jPTExOD1zdGF0aWMgaW50IGRhcDgyMTFyX2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMtMTI3LVxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmM6MTI4Olx0aW50ZXJuYWxfZGVsYXkgPSBwaHlfZ2V0X2ludGVybmFsX2RlbGF5KHBoeWRldiwgZGFwODIxMXJfaW50ZXJuYWxfZGVsYXksXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYy0xMjktXHRcdFx0XHRcdFx0REFQODIxMVJfREVMQVlfU0laRSwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMtMTM4LVxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmM6MTM5Olx0aW50ZXJuYWxfZGVsYXkgPSBwaHlfZ2V0X2ludGVybmFsX2RlbGF5KHBoeWRldiwgZGFwODIxMXJfaW50ZXJuYWxfZGVsYXksXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYy0xNDAtXHRcdFx0XHRcdFx0REFQODIxMVJfREVMQVlfU0laRSwgZmFsc2UpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmM9NTE4PXN0YXRpYyBpbnQgZHA4MzgyMl9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtNTUyLVx0aWYgKHBoeV9pbnRlcmZhY2VfaXNfcmdtaWkocGh5ZGV2KSkge1xuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYzo1NTM6XHRcdHJ4X2ludF9kZWxheSA9IHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkocGh5ZGV2LCBOVUxMLCAwLCB0cnVlKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtNTU0LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtNTU4LVxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYzo1NTk6XHRcdHR4X2ludF9kZWxheSA9IHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkocGh5ZGV2LCBOVUxMLCAwLCBmYWxzZSk7XG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jLTU2MC1cbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jPTU0Mj1zdGF0aWMgaW50IGRwODM4Njlfb2ZfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtNTk5LVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYzo2MDA6XHRkcDgzODY5LVx1MDAzZXJ4X2ludF9kZWxheSA9IHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkocGh5ZGV2LFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy02MDEtXHRcdFx0XHRcdFx0ICAgICAgIFx1MDAyNmRwODM4NjlfaW50ZXJuYWxfZGVsYXlbMF0sXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy02MDUtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jOjYwNjpcdGRwODM4NjktXHUwMDNldHhfaW50X2RlbGF5ID0gcGh5X2dldF9pbnRlcm5hbF9kZWxheShwaHlkZXYsXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTYwNy1cdFx0XHRcdFx0XHQgICAgICAgXHUwMDI2ZHA4Mzg2OV9pbnRlcm5hbF9kZWxheVswXSxcbi0tXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jPTE4ND1zdGF0aWMgaW50IHh3YXlfZ3BoeV9yZ21paV9pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy0yMTctXHQgICAgcGh5ZGV2LVx1MDAzZWludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfUlhJRCkge1xuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYzoyMTg6XHRcdGludF9kZWxheSA9IHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkocGh5ZGV2LCB4d2F5X2ludGVybmFsX2RlbGF5LFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy0yMTktXHRcdFx0XHRcdFx0ICAgZGVsYXlfc2l6ZSwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy0yMjktXHQgICAgcGh5ZGV2LVx1MDAzZWludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfVFhJRCkge1xuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYzoyMzA6XHRcdGludF9kZWxheSA9IHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkocGh5ZGV2LCB4d2F5X2ludGVybmFsX2RlbGF5LFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy0yMzEtXHRcdFx0XHRcdFx0ICAgZGVsYXlfc2l6ZSwgZmFsc2UpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jPTU0Nj1zdGF0aWMgaW50IHZzYzg1eHhfdXBkYXRlX3JnbWlpX2NudGwoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTMyIHJnbWlpX2NudGwsXG4tLVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtNTcwLVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmM6NTcxOlx0cnhfZGVsYXkgPSBwaHlfZ2V0X2ludGVybmFsX2RlbGF5KHBoeWRldiwgdnNjODV4eF9pbnRlcm5hbF9kZWxheSxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jLTU3Mi1cdFx0XHRcdFx0ICBkZWxheV9zaXplLCB0cnVlKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYy01ODAtXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYzo1ODE6XHR0eF9kZWxheSA9IHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkocGh5ZGV2LCB2c2M4NXh4X2ludGVybmFsX2RlbGF5LFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtNTgyLVx0XHRcdFx0XHQgIGRlbGF5X3NpemUsIGZhbHNlKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTMwODI9c3RhdGljIGludCBwaHlfZ2V0X3UzMl9wcm9wZXJ0eShzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKm5hbWUsIHUzMiAqdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzA4OC0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MzA4OTogKiBwaHlfZ2V0X2ludGVybmFsX2RlbGF5IC0gcmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGludGVybmFsIGRlbGF5XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTMwOTAtICogQHBoeWRldjogcGh5X2RldmljZSBzdHJ1Y3Rcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTMxMDItICovXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjMxMDM6czMyIHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgY29uc3QgaW50ICpkZWxheV92YWx1ZXMsXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTMxMDQtXHRcdFx0ICAgaW50IHNpemUsIGJvb2wgaXNfcngpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zMTY0LX1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MzE2NTpFWFBPUlRfU1lNQk9MKHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkpO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zMTY2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMzowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjg0MQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gcGh5X2dldF9pbnRlcm5hbF9kZWxheSoqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSBhbmQgcmVhbGx5IHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgd2l0aCBgcGh5X2dldF9pbnRlcm5hbF9kZWxheWAuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgc3BlY2lmaWNzIG9mICp0aGlzKiBpbXBsZW1lbnRhdGlvbi4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdGhlIG51YW5jZXMgaGVyZSwgZ2l2ZW4gdGhlIGxpa2VseSBjb250ZXh0LXNwZWNpZmljIG5hdHVyZS4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGF0IGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgc3BlY2lmaWMgUEhZIHR5cGUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCwgYW5kIHdoYXQgYXNzdW1wdGlvbnMgaXQmIzM5O3MgbWFraW5nIGFib3V0IHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLiBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBnb3RjaGFzIG9yIG9wdGltaXphdGlvbnMgSSBzaG91bGQgYmUgYXdhcmUgb2YgaW1tZWRpYXRlbHk/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgZGVsYXkgY2FsY3VsYXRpb24gdGhvcm91Z2hseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMjM6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzEwMywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszMTAzOlx0czMyIHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgY29uc3QgaW50ICpkZWxheV92YWx1ZXMsXG4zMTA0Olx0XHRcdFx0ICAgaW50IHNpemUsIGJvb2wgaXNfcngpXG4zMTA1Olx0e1xuMzEwNjpcdFx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2O1xuMzEwNzpcdFx0aW50IGksIHJldDtcbjMxMDg6XHRcdHUzMiBkZWxheTtcbjMxMDk6XHRcbjMxMTA6XHRcdGlmIChpc19yeCkge1xuMzExMTpcdFx0XHRyZXQgPSBwaHlfZ2V0X3UzMl9wcm9wZXJ0eShkZXYsIFwmIzM0O3J4LWludGVybmFsLWRlbGF5LXBzXCYjMzQ7LCBcdTAwMjZkZWxheSk7XG4zMTEyOlx0XHRcdGlmIChyZXQgXHUwMDNjIDAgXHUwMDI2XHUwMDI2IHNpemUgPT0gMCkge1xuMzExMzpcdFx0XHRcdGlmIChwaHlkZXYtXHUwMDNlaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9JRCB8fFxuMzExNDpcdFx0XHRcdCAgICBwaHlkZXYtXHUwMDNlaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9SWElEKVxuMzExNTpcdFx0XHRcdFx0cmV0dXJuIDE7XG4zMTE2Olx0XHRcdFx0ZWxzZVxuMzExNzpcdFx0XHRcdFx0cmV0dXJuIDA7XG4zMTE4Olx0XHRcdH1cbjMxMTk6XHRcbjMxMjA6XHRcdH0gZWxzZSB7XG4zMTIxOlx0XHRcdHJldCA9IHBoeV9nZXRfdTMyX3Byb3BlcnR5KGRldiwgXCYjMzQ7dHgtaW50ZXJuYWwtZGVsYXktcHNcJiMzNDssIFx1MDAyNmRlbGF5KTtcbjMxMjI6XHRcdFx0aWYgKHJldCBcdTAwM2MgMCBcdTAwMjZcdTAwMjYgc2l6ZSA9PSAwKSB7XG4zMTIzOlx0XHRcdFx0aWYgKHBoeWRldi1cdTAwM2VpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX0lEIHx8XG4zMTI0Olx0XHRcdFx0ICAgIHBoeWRldi1cdTAwM2VpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1RYSUQpXG4zMTI1Olx0XHRcdFx0XHRyZXR1cm4gMTtcbjMxMjY6XHRcdFx0XHRlbHNlXG4zMTI3Olx0XHRcdFx0XHRyZXR1cm4gMDtcbjMxMjg6XHRcdFx0fVxuMzEyOTpcdFx0fVxuMzEzMDpcdFxuMzEzMTpcdFx0aWYgKHJldCBcdTAwM2MgMClcbjMxMzI6XHRcdFx0cmV0dXJuIHJldDtcbjMxMzM6XHRcbjMxMzQ6XHRcdGlmIChzaXplID09IDApXG4zMTM1Olx0XHRcdHJldHVybiBkZWxheTtcbjMxMzY6XHRcbjMxMzc6XHRcdGlmIChkZWxheSBcdTAwM2MgZGVsYXlfdmFsdWVzWzBdIHx8IGRlbGF5IFx1MDAzZSBkZWxheV92YWx1ZXNbc2l6ZSAtIDFdKSB7XG4zMTM4Olx0XHRcdHBoeWRldl9lcnIocGh5ZGV2LCBcJiMzNDtEZWxheSAlZCBpcyBvdXQgb2YgcmFuZ2VcXG5cJiMzNDssIGRlbGF5KTtcbjMxMzk6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4zMTQwOlx0XHR9XG4zMTQxOlx0XG4zMTQyOlx0XHRpZiAoZGVsYXkgPT0gZGVsYXlfdmFsdWVzWzBdKVxuMzE0MzpcdFx0XHRyZXR1cm4gMDtcbjMxNDQ6XHRcbjMxNDU6XHRcdGZvciAoaSA9IDE7IGkgXHUwMDNjIHNpemU7IGkmIzQzOyYjNDM7KSB7XG4zMTQ2Olx0XHRcdGlmIChkZWxheSA9PSBkZWxheV92YWx1ZXNbaV0pXG4zMTQ3Olx0XHRcdFx0cmV0dXJuIGk7XG4zMTQ4Olx0XG4zMTQ5Olx0XHRcdC8qIEZpbmQgYW4gYXBwcm94aW1hdGUgaW5kZXggYnkgbG9va2luZyB1cCB0aGUgdGFibGUgKi9cbjMxNTA6XHRcdFx0aWYgKGRlbGF5IFx1MDAzZSBkZWxheV92YWx1ZXNbaSAtIDFdIFx1MDAyNlx1MDAyNlxuMzE1MTpcdFx0XHQgICAgZGVsYXkgXHUwMDNjIGRlbGF5X3ZhbHVlc1tpXSkge1xuMzE1MjpcdFx0XHRcdGlmIChkZWxheSAtIGRlbGF5X3ZhbHVlc1tpIC0gMV0gXHUwMDNjXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIzOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzODExCgkJCQkJCQlvdXRwdXQ6IDE2NwoJCQkJCQkJdGhvdWdodHM6IDc3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgREFQODIxMVIgUEhZIERyaXZlciBmb3IgRnV6emluZyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBgcGh5X2dldF9pbnRlcm5hbF9kZWxheWAgZnVuY3Rpb24gd2l0aGluIHRoZSBuZXcgREFQODIxMVIgZHJpdmVyLiBUaGlzIGZ1bmN0aW9uIGF0dGVtcHRzIHRvIHJldHJpZXZlIGEgZGVsYXkgdmFsdWUgZnJvbSB0aGUgZGV2aWNlIHRyZWUgKERUKSB1c2luZyBgcGh5X2dldF91MzJfcHJvcGVydHlgLiBUaGUgY3J1Y2lhbCBwb2ludCBoZXJlIGlzIHRoYXQgaWYgYGRldi0mZ3Q7b2Zfbm9kZWAgaXMgTlVMTCAobWVhbmluZyBubyBEVCBpcyBwcmVzZW50KSwgYHBoeV9nZXRfdTMyX3Byb3BlcnR5YCB3aWxsIHJldHVybiBhbiBlcnJvci4gSG93ZXZlciwgdGhlIGBkYXA4MjExcl9jb25maWdfaW5pdGAgZnVuY3Rpb24gKmhhbmRsZXMqIHRoaXMgZXJyb3IgZ3JhY2VmdWxseS4gSXQgY2hlY2tzIGlmIHRoZSByZXR1cm5lZCBkZWxheSB2YWx1ZSBpcyBsZXNzIHRoYW4gMCwgYW5kIGlmIHNvLCBpdCBkZWZhdWx0cyB0byBlaXRoZXIgMCAoaWYgUkdNSUkpIG9yIGEgZGVmYXVsdCBzZWxlY3Rpb24gdmFsdWUuCgpUaGlzIGlzIHNpZ25pZmljYW50LiBJdCBtZWFucyB0aGUgZHJpdmVyIGNhbiBmdW5jdGlvbiBldmVuIHdpdGhvdXQgYSBkZXZpY2UgdHJlZSwgd2hpY2ggaXMgZXhjZWxsZW50IG5ld3MgZm9yIGZ1enppbmcsIGFzIGl0IGluY3JlYXNlcyB0aGUgcG90ZW50aWFsIHRhcmdldHMgYW5kIGRvZXNuJiMzOTt0IHJlc3RyaWN0IGl0IHRvIERULWVuYWJsZWQgZW52aXJvbm1lbnRzLgoKTm93LCB0byBkZXRlcm1pbmUgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGZvciBmdXp6aW5nLiBJIHNlZSBgQ09ORklHX0RBUDgyMTFSX1BIWWAgaXMgdGhlIHByaW1hcnkgb25lLCBidXQgaXQgKmRlcGVuZHMqIG9uIGBDT05GSUdfT0ZgLiBUaGVyZWZvcmUsIGlmIEkgd2FudCB0byB0YXJnZXQgdGhlIG5ldyBkcml2ZXIsIEkgbXVzdCBzcGVjaWZ5IGBEQVA4MjExUl9QSFlgLiBIb3dldmVyLCBnaXZlbiB0aGUgcHJvamVjdCBndWlkZWxpbmVzIHRoYXQgZGlzY291cmFnZSBvdmVybHkgZ2VuZXJpYyBjb25maWd1cmF0aW9ucyBhbmQgdGhlIGFzc3VtcHRpb24gdGhhdCBgT0ZgIGlzIGNvbW1vbiwgSSYjMzk7bGwgb25seSBsaXN0IHRoZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHJlbGF0ZWQgdG8gdGhlIGNvZGUgY2hhbmdlcy4KCkxldCYjMzk7cyBjb25zb2xpZGF0ZSB0aGUga2V5IGluZm9ybWF0aW9uIGZvciB0aGUgZnV6emluZyBzZXR1cDoKCiogICAqKldvcnRoRnV6emluZzoqKiBUcnVlIC0gYmVjYXVzZSB0aGUgZHJpdmVyIGNhbiBvcGVyYXRlIHdpdGhvdXQgYSBEVC4KKiAgICoqRm9jdXNTeW1ib2xzOioqIGBkYXA4MjExcl9jb25maWdfaW5pdGAsIGBkYXA4MjExcl9yZWFkX2V4dGAsIGFuZCBgZGFwODIxMXJfbW9kaWZ5X2V4dGAuIFRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIHNwZWNpZmljIHRvIHRoZSBuZXcgREFQODIxMVIgZHJpdmVyLgoqICAgKipFbmFibGVDb25maWdzOioqIGBEQVA4MjExUl9QSFlgLgoqICAgKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIGludHJvZHVjZXMgYSBQSFkgZHJpdmVyIGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpLiBJdCBpbmNsdWRlcyBpbml0aWFsaXphdGlvbiBhbmQgZXh0ZW5kZWQgcmVnaXN0ZXIgYWNjZXNzIGxvZ2ljLCBhbmQgaXQmIzM5O3MgcmVhY2hhYmxlIHRocm91Z2ggYW4gTURJTyBidXMgZW11bGF0aW9uIChlLmcuLCB1c2luZyBVU0IgRXRoZXJuZXQgYWRhcHRlcnMpLgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhlIHNjb3BlLiBJIGV4YW1pbmVkIHRoZSBgZGFwODIxMXJfZHJpdmVyYCBhbmQgY29uZmlybWVkIHRoYXQgdGhlIGRyaXZlciB1dGlsaXplcyBzdGFuZGFyZCBQSFkgZnVuY3Rpb25zIChgZ2VucGh5X3JlYWRfc3RhdHVzYCwgYGdlbnBoeV9sb29wYmFja2AsIGBnZW5waHlfY29uZmlnX2FuZWdgLCBgZ2VucGh5X3N1c3BlbmRgLCBgZ2VucGh5X3Jlc3VtZWApIHdoaWNoIGFyZSBnZW5lcmljIGFuZCBsZXNzIGludGVyZXN0aW5nIGZvciB0YXJnZXRlZCBmdXp6aW5nLiBUaGUga2V5IGZ1bmN0aW9ucyBhcmUgaW5kZWVkIHRoZSBpbml0aWFsaXphdGlvbiAoYGRhcDgyMTFyX2NvbmZpZ19pbml0YCksIGV4dGVuZGVkIHJlYWQgKGBkYXA4MjExcl9yZWFkX2V4dGApLCBhbmQgZXh0ZW5kZWQgbW9kaWZ5IChgZGFwODIxMXJfbW9kaWZ5X2V4dGApLgoKRmluYWxseSwgSSBjaGVja2VkIGFsbCByZWxhdGVkIGZpbGVzOiBgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kYXB1LGRhcDgyMTFyLnlhbWxgLCBgZHJpdmVycy9uZXQvcGh5L0tjb25maWdgLCBgZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlYCwgYW5kIGBkcml2ZXJzL25ldC9waHkvZGFwODIxMXIuY2AuIEJhc2VkIG9uIHRoaXMgcmV2aWV3LCBJJiMzOTttIGNvbmZpZGVudCB3aXRoIHRoaXMgYXNzZXNzbWVudC4gTGV0JiMzOTtzIHByb2NlZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIzOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEQVA4MjExUl9QSFkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYXA4MjExcl9jb25maWdfaW5pdCYjMzQ7LAogICAgJiMzNDtkYXA4MjExcl9yZWFkX2V4dCYjMzQ7LAogICAgJiMzNDtkYXA4MjExcl9tb2RpZnlfZXh0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBuZXcgUEhZIGRyaXZlciBmb3IgdGhlIERBUFUgVGVsZWNvbSBEQVA4MjExUihJKSBHaWdhYml0IEV0aGVybmV0IFBIWS4gVGhlIGRyaXZlciBpbXBsZW1lbnRzIGluaXRpYWxpemF0aW9uIGxvZ2ljIGFuZCBleHRlbmRlZCByZWdpc3RlciBhY2Nlc3MuIEl0IGNhbiBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBieSBlbXVsYXRpbmcgYW4gTURJTyBidXMgKGUuZy4sIHZpYSBVU0IgZXRoZXJuZXQgYWRhcHRlcnMgbGlrZSBzbXNjOTV4eCkgYW5kIHByZXNlbnRpbmcgdGhlIG1hdGNoaW5nIFBIWSBJRCAoMHgwMDA4MDExQikuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBUDgyMTFSX1BIWSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RhcDgyMTFyX2NvbmZpZ19pbml0JiMzNDssCiAgICAmIzM0O2RhcDgyMTFyX3JlYWRfZXh0JiMzNDssCiAgICAmIzM0O2RhcDgyMTFyX21vZGlmeV9leHQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG5ldyBQSFkgZHJpdmVyIGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZLiBUaGUgZHJpdmVyIGltcGxlbWVudHMgaW5pdGlhbGl6YXRpb24gbG9naWMgYW5kIGV4dGVuZGVkIHJlZ2lzdGVyIGFjY2Vzcy4gSXQgY2FuIGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGJ5IGVtdWxhdGluZyBhbiBNRElPIGJ1cyAoZS5nLiwgdmlhIFVTQiBldGhlcm5ldCBhZGFwdGVycyBsaWtlIHNtc2M5NXh4KSBhbmQgcHJlc2VudGluZyB0aGUgbWF0Y2hpbmcgUEhZIElEICgweDAwMDgwMTFCKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIzOjAyOjMyLjkwMjI1MTU4OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczNjAyOTY5NTgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBUDgyMTFSX1BIWVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhcDgyMTFyX2NvbmZpZ19pbml0XCIsXG4gICAgXCJkYXA4MjExcl9yZWFkX2V4dFwiLFxuICAgIFwiZGFwODIxMXJfbW9kaWZ5X2V4dFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBuZXcgUEhZIGRyaXZlciBmb3IgdGhlIERBUFUgVGVsZWNvbSBEQVA4MjExUihJKSBHaWdhYml0IEV0aGVybmV0IFBIWS4gVGhlIGRyaXZlciBpbXBsZW1lbnRzIGluaXRpYWxpemF0aW9uIGxvZ2ljIGFuZCBleHRlbmRlZCByZWdpc3RlciBhY2Nlc3MuIEl0IGNhbiBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBieSBlbXVsYXRpbmcgYW4gTURJTyBidXMgKGUuZy4sIHZpYSBVU0IgZXRoZXJuZXQgYWRhcHRlcnMgbGlrZSBzbXNjOTV4eCkgYW5kIHByZXNlbnRpbmcgdGhlIG1hdGNoaW5nIFBIWSBJRCAoMHgwMDA4MDExQikuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIzOjAyOjMyLjkwMjI1ODk1OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ0NTYzNzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNjY0NGM3ODk0MDMyYTU4ZGRiYjM1ZGY0YmUzMmU2NzI1N2Y3MTY0NFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCAxNiAyMzowMjozMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RhcHUsZGFwODIxMXIueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZGFwdSxkYXA4MjExci55YW1sXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uZDQwMTJmYTE3YTFlMTFcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kYXB1LGRhcDgyMTFyLnlhbWxcXG5AQCAtMCwwICsxLDczIEBAXFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IChHUEwtMi4wLW9ubHkgT1IgQlNELTItQ2xhdXNlKVxcbislWUFNTCAxLjJcXG4rLS0tXFxuKyRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L2RhcHUsZGFwODIxMXIueWFtbCNcXG4rJHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXFxuK1xcbit0aXRsZTogREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZXFxuK1xcbittYWludGFpbmVyczpcXG4rICAtIEFydGVtIFNoaW1rbyBcXHUwMDNjYS5zaGlta28uZGV2QGdtYWlsLmNvbVxcdTAwM2VcXG4rXFxuK2Rlc2NyaXB0aW9uOiB8XFxuKyAgVGhlIERBUDgyMTFSKEkpIGlzIGEgR2lnYWJpdCBFdGhlcm5ldCBQSFkgd2l0aCBSR01JSSBpbnRlcmZhY2UsXFxuKyAgc3VwcG9ydGluZyBJRUVFIDgwMi4zYXogRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldCwgSUVFRSAxNTg4IFN5bmNFLFxcbisgIGFuZCBhbiBpbnRlcm5hbCBwYWNrZXQgZ2VuZXJhdG9yIGZvciBkaWFnbm9zdGljcy5cXG4rXFxuKyAgU3BlY2lmaWNhdGlvbnM6XFxuKyAgICAtIDEwQkFTRS1UZSwgMTAwQkFTRS1UWCwgMTAwMEJBU0UtVFxcbisgICAgLSBSR01JSSB3aXRoIGNvbmZpZ3VyYWJsZSBUWC9SWCBjbG9jayBkZWxheXMgKDE1MCBwcyBzdGVwcywgMC0yMjUwIHBzKVxcbisgICAgLSBJRUVFIDgwMi4zYXotMjAxMCBFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0XFxuKyAgICAtIElFRUUgMTU4OCBTeW5jRSBzdXBwb3J0XFxuKyAgICAtIEludGVybmFsIHBhY2tldCBnZW5lcmF0b3IgYW5kIGNoZWNrZXIgZm9yIGxpbmsgZGlhZ25vc3RpY3NcXG4rXFxuK2FsbE9mOlxcbisgIC0gJHJlZjogZXRoZXJuZXQtcGh5LnlhbWwjXFxuK1xcbitwcm9wZXJ0aWVzOlxcbisgIGNvbXBhdGlibGU6XFxuKyAgICBjb25zdDogZXRoZXJuZXQtcGh5LWlkMDAwOC4wMTFiXFxuK1xcbisgIHJlZzpcXG4rICAgIG1heEl0ZW1zOiAxXFxuK1xcbisgIHJ4LWludGVybmFsLWRlbGF5LXBzOlxcbisgICAgZGVzY3JpcHRpb246XFxuKyAgICAgIFJHTUlJIFJYIGNsb2NrIGRlbGF5IGluIHBpY29zZWNvbmRzICgwIHRvIG1heGltdW0pLlxcbisgICAgbXVsdGlwbGVPZjogMTUwXFxuKyAgICBtYXhpbXVtOiAyMjUwXFxuKyAgICBkZWZhdWx0OiAxOTUwXFxuK1xcbisgIHR4LWludGVybmFsLWRlbGF5LXBzOlxcbisgICAgZGVzY3JpcHRpb246XFxuKyAgICAgIFJHTUlJIFRYIGNsb2NrIGRlbGF5IGluIHBpY29zZWNvbmRzICgwIHRvIG1heGltdW0pLlxcbisgICAgbXVsdGlwbGVPZjogMTUwXFxuKyAgICBtYXhpbXVtOiAyMjUwXFxuKyAgICBkZWZhdWx0OiAxOTUwXFxuK1xcbisgIGRhcHUsdHgtaW52ZXJ0ZWQtY2xrOlxcbisgICAgJHJlZjogL3NjaGVtYXMvdHlwZXMueWFtbCMvZGVmaW5pdGlvbnMvZmxhZ1xcbisgICAgZGVzY3JpcHRpb246XFxuKyAgICAgIElmIHByZXNlbnQsIHRoZSBSR01JSSBUWCBjbG9jayB0byB0aGUgTUFDIGlzIGludmVydGVkICgxODAgZGVncmVlXFxuKyAgICAgIHBoYXNlIHNoaWZ0IHJlbGF0aXZlIHRvIHRoZSBkYXRhIGxpbmVzKS4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpY1xcbisgICAgICBleHRlbnNpb24gZm9yIGJvYXJkcyB3aGVyZSBQQ0IgdHJhY2UgbGVuZ3RoIG9yIE1BQyByZXF1aXJlbWVudHNcXG4rICAgICAgbmVjZXNzaXRhdGUgY2xvY2sgaW52ZXJzaW9uLiBPbmx5IHVzZSB0aGlzIHByb3BlcnR5IGFmdGVyIGhhcmR3YXJlXFxuKyAgICAgIHNpZ25hbCBpbnRlZ3JpdHkgdmFsaWRhdGlvbi5cXG4rXFxuK3VuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2VcXG4rXFxuK2V4YW1wbGVzOlxcbisgIC0gfFxcbisgICAgbWRpbyB7XFxuKyAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSBcXHUwMDNjMVxcdTAwM2U7XFxuKyAgICAgICAgI3NpemUtY2VsbHMgPSBcXHUwMDNjMFxcdTAwM2U7XFxuK1xcbisgICAgICAgIGV0aGVybmV0LXBoeUAxIHtcXG4rICAgICAgICAgICAgY29tcGF0aWJsZSA9IFxcXCJldGhlcm5ldC1waHktaWQwMDA4LjAxMWJcXFwiO1xcbisgICAgICAgICAgICByZWcgPSBcXHUwMDNjMVxcdTAwM2U7XFxuKyAgICAgICAgICAgIHJ4LWludGVybmFsLWRlbGF5LXBzID0gXFx1MDAzYzIxMDBcXHUwMDNlO1xcbisgICAgICAgICAgICB0eC1pbnRlcm5hbC1kZWxheS1wcyA9IFxcdTAwM2MyMTAwXFx1MDAzZTtcXG4rICAgICAgICAgICAgZGFwdSx0eC1pbnZlcnRlZC1jbGs7XFxuKyAgICAgICAgfTtcXG4rICAgIH07XFxuK1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvS2NvbmZpZyBiL2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnXFxuaW5kZXggMDk5ZjI1ZGNlYWJiYzcuLjQ1NzZmNzA3YWM5NDQ1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L0tjb25maWdcXG5AQCAtMjM3LDYgKzIzNywxNiBAQCBjb25maWcgREFWSUNPTV9QSFlcXG4gXFx0aGVscFxcbiBcXHQgIEN1cnJlbnRseSBzdXBwb3J0cyBkbTkxNjFlIGFuZCBkbTkxMzFcXG4gXFxuK2NvbmZpZyBEQVA4MjExUl9QSFlcXG4rXFx0dHJpc3RhdGUgXFxcIkRBUFUgVGVsZWNvbSBEQVA4MjExUihJKSBHaWdhYml0IEV0aGVybmV0IFBIWVxcXCJcXG4rXFx0ZGVwZW5kcyBvbiBPRlxcbitcXHRoZWxwXFxuK1xcdCAgU3VwcG9ydCBmb3IgdGhlIERBUFUgVGVsZWNvbSBEQVA4MjExUihJKSBHaWdhYml0IEV0aGVybmV0IFBIWS5cXG4rXFx0ICBUaGlzIFBIWSBpcyBkZXNpZ25lZCBmb3IgZW50ZXJwcmlzZSBhbmQgaW5kdXN0cmlhbCBuZXR3b3JraW5nXFxuK1xcdCAgYXBwbGljYXRpb25zLCBzdXBwb3J0aW5nIDEwLzEwMC8xMDAwIE1icHMgb3BlcmF0aW9uLlxcbitcXHQgIFJHTUlJIHdpdGg6IGNvbmZpZ3VyYWJsZSBUWC9SWCBjbG9jayBkZWxheXMsIG9wdGlvbmFsIGZsYWcgdG8gZW5hYmxlXFxuK1xcdCAgMTgwLWRlZ3JlZSBUWCBjbG9jayBwaGFzZSBzaGlmdCBhbmQgaW50ZXJuYWwgcGFja2V0IGdlbmVyYXRvci5cXG4rXFxuIGNvbmZpZyBJQ1BMVVNfUEhZXFxuIFxcdHRyaXN0YXRlIFxcXCJJQ1BsdXMgUEhZc1xcXCJcXG4gXFx0aGVscFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGVcXG5pbmRleCBkZTY2MGFlOTQ5NDUzZC4uYWQzNTczM2ViNGJiNjEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlXFxuQEAgLTUzLDYgKzUzLDcgQEAgb2JqLSQoQ09ORklHX0JST0FEQ09NX1BIWSlcXHQrPSBicm9hZGNvbS5vXFxuIG9iai0kKENPTkZJR19DSUNBREFfUEhZKVxcdCs9IGNpY2FkYS5vXFxuIG9iai0kKENPTkZJR19DT1JUSU5BX1BIWSlcXHQrPSBjb3J0aW5hLm9cXG4gb2JqLSQoQ09ORklHX0RBVklDT01fUEhZKVxcdCs9IGRhdmljb20ub1xcbitvYmotJChDT05GSUdfREFQODIxMVJfUEhZKVxcdCs9IGRhcDgyMTFyLm9cXG4gb2JqLSQoQ09ORklHX0RQODM2NDBfUEhZKVxcdCs9IGRwODM2NDAub1xcbiBvYmotJChDT05GSUdfRFA4MzgyMl9QSFkpXFx0Kz0gZHA4MzgyMi5vXFxuIG9iai0kKENPTkZJR19EUDgzODQ4X1BIWSlcXHQrPSBkcDgzODQ4Lm9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMgYi9kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuY1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmU2MzgxZmQ4Yzk4YzIwXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jXFxuQEAgLTAsMCArMSwxOTEgQEBcXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTFxcbisvKlxcbisgKiBEcml2ZXIgZm9yIHRoZSBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFkuXFxuKyAqXFxuKyAqIFNwZWNpZmljYXRpb25zOlxcbisgKiAgIC0gSUVFRSA4MDIuMyAxMEJBU0UtVGUsIDEwMEJBU0UtVFgsIDEwMDBCQVNFLVRcXG4rICogICAtIElFRUUgODAyLjNhei0yMDEwIEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXRcXG4rICogICAtIElFRUUgMTU4OCBTeW5jRSBzdXBwb3J0XFxuKyAqICAgLSBSR01JSVxcbisgKlxcbisgKiBBdXRob3I6IEFydGVtIFNoaW1rbyBcXHUwMDNjYS5zaGlta28uZGV2QGdtYWlsLmNvbVxcdTAwM2VcXG4rICovXFxuK1xcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvYml0ZmllbGQuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Vycm5vLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9ldGh0b29sLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9rZXJuZWwuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lvcG9sbC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvbWlpLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb2R1bGUuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L25ldGRldmljZS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvb2YuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BoeS5oXFx1MDAzZVxcbitcXG4rI2RlZmluZSBEQVA4MjExUl9QSFlfSURcXHRcXHRcXHQweDAwMDgwMTFCXFxuKyNkZWZpbmUgREFQODIxMVJfUEhZX0lEX01BU0tcXHRcXHQweEZGRkZGRkZGXFxuK1xcbisjZGVmaW5lIERBUDgyMTFSX0VYVF9BRERcXHRcXHQweDFFXFxuKyNkZWZpbmUgREFQODIxMVJfRVhUX0RBVEFcXHRcXHQweDFGXFxuK1xcbisjZGVmaW5lIERBUDgyMTFSX1BIWV9DT05cXHRcXHQweEEwMDFcXG4rI2RlZmluZSBEQVA4MjExUl9QSFlfU1dfUlNUXFx0XFx0QklUKDE1KVxcbitcXG4rI2RlZmluZSBEQVA4MjExUl9SR01JSV9DT05cXHRcXHQweEEwMDNcXG4rLyogRGVmYXVsdCBpbml0aWFsIFRYIGRlbGF5IHZhbHVlIGJ5IGRhdGFzaGVldC4gKi9cXG4rI2RlZmluZSBEQVA4MjExUl9JTklUX1RYX0RFTF9WQUxcXHQxXFxuKyNkZWZpbmUgREFQODIxMVJfUkdNSUlfVFhfREVMX01BU0tcXHRHRU5NQVNLKDMsIDApXFxuKyNkZWZpbmUgREFQODIxMVJfUkdNSUlfUlhfREVMX01BU0tcXHRHRU5NQVNLKDEzLCAxMClcXG4rI2RlZmluZSBEQVA4MjExUl9SR01JSV9DTEtfSU5WRVJUXFx0QklUKDE0KVxcbitcXG4rI2RlZmluZSBEQVA4MjExUl9SR01JSV9DT05GSUdfTUFTS1xcdChEQVA4MjExUl9SR01JSV9DTEtfSU5WRVJUIHwgXFxcXFxcbitcXHRcXHRcXHRcXHRcXHREQVA4MjExUl9SR01JSV9SWF9ERUxfTUFTSyB8IFxcXFxcXG4rXFx0XFx0XFx0XFx0XFx0REFQODIxMVJfUkdNSUlfVFhfREVMX01BU0spXFxuK1xcbisvKiBEZWZhdWx0IFJHTUlJIGRlbGF5OiAxMyAqIDE1MCA9PSAxLjk1bnMgKi9cXG4rI2RlZmluZSBEQVA4MjExUl9ERUZBVUxUX0RFTF9TRUxcXHQweERcXG4rXFxuK3N0YXRpYyBjb25zdCBpbnQgZGFwODIxMXJfaW50ZXJuYWxfZGVsYXlbXSA9IHswLCAxNTAsIDMwMCwgNDUwLCA2MDAsIDc1MCwgOTAwLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICAxMDUwLCAxMjAwLCAxMzUwLCAxNTAwLCAxNjUwLCAxODAwLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICAxOTUwLCAyMTAwLCAyMjUwfTtcXG4rXFxuKyNkZWZpbmUgREFQODIxMVJfREVMQVlfU0laRVxcdEFSUkFZX1NJWkUoZGFwODIxMXJfaW50ZXJuYWxfZGVsYXkpXFxuK1xcbisvKipcXG4rICogZGFwODIxMXJfcmVhZF9leHQoKSAtIFJlYWQgZXh0ZW5kZWQgcmVnaXN0ZXJcXG4rICogQHBoeWRldjogUEhZIGRldmljZSBzdHJ1Y3R1cmVcXG4rICogQHJlZzogRXh0ZW5kZWQgcmVnaXN0ZXIgYWRkcmVzc1xcbisgKlxcbisgKiBSZWFkcyBhIFBIWSBleHRlbmRlZCByZWdpc3RlciB1c2luZyB0aGUgaW5kaXJlY3QgYWNjZXNzIG1ldGhvZC5cXG4rICogVGhlIGNhbGxlciBtdXN0IGhvbGQgdGhlIE1ESU8gYnVzIGxvY2suXFxuKyAqXFxuKyAqIFJldHVybjogUmVnaXN0ZXIgdmFsdWUgb24gc3VjY2Vzcywgb3IgbmVnYXRpdmUgZXJyb3IgY29kZVxcbisgKi9cXG4rc3RhdGljIGludCBkYXA4MjExcl9yZWFkX2V4dChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnKVxcbit7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbitcXHRyZXQgPSBfX3BoeV93cml0ZShwaHlkZXYsIERBUDgyMTFSX0VYVF9BREQsIHJlZyk7XFxuK1xcdGlmIChyZXQgXFx1MDAzYyAwKVxcbitcXHRcXHRnb3RvIG91dDtcXG4rXFxuK1xcdHJldCA9IF9fcGh5X3JlYWQocGh5ZGV2LCBEQVA4MjExUl9FWFRfREFUQSk7XFxuK291dDpcXG4rXFx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbitcXHRyZXR1cm4gcmV0O1xcbit9XFxuK1xcbisvKipcXG4rICogZGFwODIxMXJfbW9kaWZ5X2V4dCgpIC0gTW9kaWZ5IGV4dGVuZGVkIHJlZ2lzdGVyIGJpdHNcXG4rICogQHBoeWRldjogUEhZIGRldmljZSBzdHJ1Y3R1cmVcXG4rICogQHJlZzogRXh0ZW5kZWQgcmVnaXN0ZXIgYWRkcmVzc1xcbisgKiBAbWFzazogQml0IG1hc2sgb2YgYml0cyB0byBjbGVhclxcbisgKiBAc2V0OiBCaXQgbWFzayBvZiBiaXRzIHRvIHNldFxcbisgKlxcbisgKiBNb2RpZmllcyBhIFBIWSBleHRlbmRlZCByZWdpc3RlciB1c2luZyB0aGUgaW5kaXJlY3QgYWNjZXNzIG1ldGhvZC5cXG4rICogTmV3IHZhbHVlID0gKG9sZCB2YWx1ZSBcXHUwMDI2IH5tYXNrKSB8IHNldC5cXG4rICogVGhlIGNhbGxlciBtdXN0IGhvbGQgdGhlIE1ESU8gYnVzIGxvY2suXFxuKyAqXFxuKyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBvciBuZWdhdGl2ZSBlcnJvciBjb2RlXFxuKyAqL1xcbitzdGF0aWMgaW50IGRhcDgyMTFyX21vZGlmeV9leHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZywgdTE2IG1hc2ssIHUxNiBzZXQpXFxuK3tcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuK1xcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgREFQODIxMVJfRVhUX0FERCwgcmVnKTtcXG4rXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXG4rXFx0cmV0ID0gX19waHlfbW9kaWZ5KHBoeWRldiwgREFQODIxMVJfRVhUX0RBVEEsIG1hc2ssIHNldCk7XFxuK291dDpcXG4rXFx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbitcXHRyZXR1cm4gcmV0O1xcbit9XFxuK1xcbisvKipcXG4rICogZGFwODIxMXJfY29uZmlnX2luaXQoKSAtIEluaXRpYWxpemUgUEhZXFxuKyAqIEBwaHlkZXY6IFBIWSBkZXZpY2Ugc3RydWN0dXJlXFxuKyAqXFxuKyAqIENvbmZpZ3VyZXMgdGhlIFBIWSBkdXJpbmcgaW5pdGlhbGl6YXRpb246XFxuKyAqIC0gVFggY2xvY2sgaW52ZXJ0aW9uXFxuKyAqIC0gUkdNSUkgZGVsYXlzIGJhc2VkIG9uIGludGVyZmFjZSBtb2RlXFxuKyAqIC0gU29mdHdhcmUgcmVzZXQgdG8gYXBwbHkgc2V0dGluZ3MgKGxvdyBhY3RpdmUsIHNlbGYgY2xlYXIpXFxuKyAqXFxuKyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBvciBuZWdhdGl2ZSBlcnJvciBjb2RlXFxuKyAqL1xcbitzdGF0aWMgaW50IGRhcDgyMTFyX2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuK3tcXG4rXFx0c3RydWN0IGRldmljZV9ub2RlICpwaHlkZXZfbm9kZSA9IHBoeWRldi1cXHUwMDNlbWRpby5kZXYub2Zfbm9kZTtcXG4rXFx0dTE2IHNldCA9IDAsIHZhbCA9IDA7XFxuK1xcdGludCByZXQ7XFxuK1xcdHMzMiBpbnRlcm5hbF9kZWxheTtcXG4rXFxuK1xcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wocGh5ZGV2X25vZGUsIFxcXCJkYXB1LHR4LWludmVydGVkLWNsa1xcXCIpKVxcbitcXHRcXHRzZXQgfD0gREFQODIxMVJfUkdNSUlfQ0xLX0lOVkVSVDtcXG4rXFxuK1xcdGludGVybmFsX2RlbGF5ID0gcGh5X2dldF9pbnRlcm5hbF9kZWxheShwaHlkZXYsIGRhcDgyMTFyX2ludGVybmFsX2RlbGF5LFxcbitcXHRcXHRcXHRcXHRcXHRcXHREQVA4MjExUl9ERUxBWV9TSVpFLCB0cnVlKTtcXG4rXFx0aWYgKGludGVybmFsX2RlbGF5IFxcdTAwM2MgMCkge1xcbitcXHRcXHRpZiAocGh5ZGV2LVxcdTAwM2VpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJKVxcbitcXHRcXHRcXHRpbnRlcm5hbF9kZWxheSA9IDA7XFxuK1xcdFxcdGVsc2VcXG4rXFx0XFx0XFx0aW50ZXJuYWxfZGVsYXkgPSBEQVA4MjExUl9ERUZBVUxUX0RFTF9TRUw7XFxuK1xcdH1cXG4rXFxuK1xcdHNldCB8PSBGSUVMRF9QUkVQKERBUDgyMTFSX1JHTUlJX1JYX0RFTF9NQVNLLCBpbnRlcm5hbF9kZWxheSk7XFxuK1xcbitcXHRpbnRlcm5hbF9kZWxheSA9IHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkocGh5ZGV2LCBkYXA4MjExcl9pbnRlcm5hbF9kZWxheSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0REFQODIxMVJfREVMQVlfU0laRSwgZmFsc2UpO1xcbitcXHRpZiAoaW50ZXJuYWxfZGVsYXkgXFx1MDAzYyAwKSB7XFxuK1xcdFxcdGlmIChwaHlkZXYtXFx1MDAzZWludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUkpXFxuK1xcdFxcdFxcdGludGVybmFsX2RlbGF5ID0gREFQODIxMVJfSU5JVF9UWF9ERUxfVkFMO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdGludGVybmFsX2RlbGF5ID0gREFQODIxMVJfREVGQVVMVF9ERUxfU0VMO1xcbitcXHR9XFxuK1xcbitcXHRzZXQgfD0gRklFTERfUFJFUChEQVA4MjExUl9SR01JSV9UWF9ERUxfTUFTSywgaW50ZXJuYWxfZGVsYXkpO1xcbitcXG4rXFx0cmV0ID0gZGFwODIxMXJfbW9kaWZ5X2V4dChwaHlkZXYsIERBUDgyMTFSX1BIWV9DT04sIERBUDgyMTFSX1BIWV9TV19SU1QsIDApO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0LyogV2FpdCBmb3IgcmVzZXQgc2VsZi1jbGVhciAobWF4IDIwMCB1cykgKi9cXG4rXFx0cmV0ID0gcmVhZF9wb2xsX3RpbWVvdXQoZGFwODIxMXJfcmVhZF9leHQsIHZhbCxcXG4rXFx0XFx0XFx0XFx0KHZhbCBcXHUwMDI2IERBUDgyMTFSX1BIWV9TV19SU1QpLFxcbitcXHRcXHRcXHRcXHQyMCwgMjAwLCBmYWxzZSwgcGh5ZGV2LCBEQVA4MjExUl9QSFlfQ09OKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdHJldCA9IGRhcDgyMTFyX21vZGlmeV9leHQocGh5ZGV2LCBEQVA4MjExUl9SR01JSV9DT04sIERBUDgyMTFSX1JHTUlJX0NPTkZJR19NQVNLLCBzZXQpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkYXA4MjExcl9kcml2ZXJbXSA9IHtcXG4rXFx0e1xcbitcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoREFQODIxMVJfUEhZX0lEKSxcXG4rXFx0XFx0Lm5hbWVcXHRcXHQ9IFxcXCJEQVA4MjExUiBHaWdhYml0IEV0aGVybmV0XFxcIixcXG4rXFx0XFx0LmNvbmZpZ19pbml0XFx0PSBkYXA4MjExcl9jb25maWdfaW5pdCxcXG4rXFx0XFx0LnJlYWRfc3RhdHVzXFx0PSBnZW5waHlfcmVhZF9zdGF0dXMsXFxuK1xcdFxcdC5zZXRfbG9vcGJhY2tcXHQ9IGdlbnBoeV9sb29wYmFjayxcXG4rXFx0XFx0LmNvbmZpZ19hbmVnXFx0PSBnZW5waHlfY29uZmlnX2FuZWcsXFxuK1xcdFxcdC5zdXNwZW5kXFx0PSBnZW5waHlfc3VzcGVuZCxcXG4rXFx0XFx0LnJlc3VtZVxcdFxcdD0gZ2VucGh5X3Jlc3VtZSxcXG4rXFx0fSxcXG4rfTtcXG4rbW9kdWxlX3BoeV9kcml2ZXIoZGFwODIxMXJfZHJpdmVyKTtcXG4rXFxuK01PRFVMRV9ERVNDUklQVElPTihcXFwiREFQODIxMVIgR2lnYWJpdCBFdGhlcm5ldCBQSFkgZHJpdmVyXFxcIik7XFxuK01PRFVMRV9BVVRIT1IoXFxcIkFydGVtIFNoaW1rbyBcXHUwMDNjYS5zaGlta28uZGV2QGdtYWlsLmNvbVxcdTAwM2VcXFwiKTtcXG4rTU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcbitcXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBkYXA4MjExcl90YltdID0ge1xcbitcXHR7IERBUDgyMTFSX1BIWV9JRCwgREFQODIxMVJfUEhZX0lEX01BU0sgfSxcXG4rXFx0eyAvKiBzZW50aW5lbCAqLyB9XFxuK307XFxuK01PRFVMRV9ERVZJQ0VfVEFCTEUobWRpbywgZGFwODIxMXJfdGIpO1xcbitcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMjM6MDI6MzMuNDQ3NTIzNzM4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MzA1NzY4ODE3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQVA4MjExUl9QSFlcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYXA4MjExcl9jb25maWdfaW5pdFwiLFxuICAgIFwiZGFwODIxMXJfcmVhZF9leHRcIixcbiAgICBcImRhcDgyMTFyX21vZGlmeV9leHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbmV3IFBIWSBkcml2ZXIgZm9yIHRoZSBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFkuIFRoZSBkcml2ZXIgaW1wbGVtZW50cyBpbml0aWFsaXphdGlvbiBsb2dpYyBhbmQgZXh0ZW5kZWQgcmVnaXN0ZXIgYWNjZXNzLiBJdCBjYW4gYmUgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYnkgZW11bGF0aW5nIGFuIE1ESU8gYnVzIChlLmcuLCB2aWEgVVNCIGV0aGVybmV0IGFkYXB0ZXJzIGxpa2Ugc21zYzk1eHgpIGFuZCBwcmVzZW50aW5nIHRoZSBtYXRjaGluZyBQSFkgSUQgKDB4MDAwODAxMUIpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDY2NDRjNzg5NDAzMmE1OGRkYmIzNWRmNGJlMzJlNjcyNTdmNzE2NDRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAxNiAyMzowMjozMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZGFwdSxkYXA4MjExci55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kYXB1LGRhcDgyMTFyLnlhbWxcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uZDQwMTJmYTE3YTFlMTFcbi0tLSAvZGV2L251bGxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZGFwdSxkYXA4MjExci55YW1sXG5AQCAtMCwwICsxLDczIEBAXG4rIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjAtb25seSBPUiBCU0QtMi1DbGF1c2UpXG4rJVlBTUwgMS4yXG4rLS0tXG4rJGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9uZXQvZGFwdSxkYXA4MjExci55YW1sI1xuKyRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuK1xuK3RpdGxlOiBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFlcbitcbittYWludGFpbmVyczpcbisgIC0gQXJ0ZW0gU2hpbWtvIFx1MDAzY2Euc2hpbWtvLmRldkBnbWFpbC5jb21cdTAwM2VcbitcbitkZXNjcmlwdGlvbjogfFxuKyAgVGhlIERBUDgyMTFSKEkpIGlzIGEgR2lnYWJpdCBFdGhlcm5ldCBQSFkgd2l0aCBSR01JSSBpbnRlcmZhY2UsXG4rICBzdXBwb3J0aW5nIElFRUUgODAyLjNheiBFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0LCBJRUVFIDE1ODggU3luY0UsXG4rICBhbmQgYW4gaW50ZXJuYWwgcGFja2V0IGdlbmVyYXRvciBmb3IgZGlhZ25vc3RpY3MuXG4rXG4rICBTcGVjaWZpY2F0aW9uczpcbisgICAgLSAxMEJBU0UtVGUsIDEwMEJBU0UtVFgsIDEwMDBCQVNFLVRcbisgICAgLSBSR01JSSB3aXRoIGNvbmZpZ3VyYWJsZSBUWC9SWCBjbG9jayBkZWxheXMgKDE1MCBwcyBzdGVwcywgMC0yMjUwIHBzKVxuKyAgICAtIElFRUUgODAyLjNhei0yMDEwIEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXRcbisgICAgLSBJRUVFIDE1ODggU3luY0Ugc3VwcG9ydFxuKyAgICAtIEludGVybmFsIHBhY2tldCBnZW5lcmF0b3IgYW5kIGNoZWNrZXIgZm9yIGxpbmsgZGlhZ25vc3RpY3NcbitcbithbGxPZjpcbisgIC0gJHJlZjogZXRoZXJuZXQtcGh5LnlhbWwjXG4rXG4rcHJvcGVydGllczpcbisgIGNvbXBhdGlibGU6XG4rICAgIGNvbnN0OiBldGhlcm5ldC1waHktaWQwMDA4LjAxMWJcbitcbisgIHJlZzpcbisgICAgbWF4SXRlbXM6IDFcbitcbisgIHJ4LWludGVybmFsLWRlbGF5LXBzOlxuKyAgICBkZXNjcmlwdGlvbjpcbisgICAgICBSR01JSSBSWCBjbG9jayBkZWxheSBpbiBwaWNvc2Vjb25kcyAoMCB0byBtYXhpbXVtKS5cbisgICAgbXVsdGlwbGVPZjogMTUwXG4rICAgIG1heGltdW06IDIyNTBcbisgICAgZGVmYXVsdDogMTk1MFxuK1xuKyAgdHgtaW50ZXJuYWwtZGVsYXktcHM6XG4rICAgIGRlc2NyaXB0aW9uOlxuKyAgICAgIFJHTUlJIFRYIGNsb2NrIGRlbGF5IGluIHBpY29zZWNvbmRzICgwIHRvIG1heGltdW0pLlxuKyAgICBtdWx0aXBsZU9mOiAxNTBcbisgICAgbWF4aW11bTogMjI1MFxuKyAgICBkZWZhdWx0OiAxOTUwXG4rXG4rICBkYXB1LHR4LWludmVydGVkLWNsazpcbisgICAgJHJlZjogL3NjaGVtYXMvdHlwZXMueWFtbCMvZGVmaW5pdGlvbnMvZmxhZ1xuKyAgICBkZXNjcmlwdGlvbjpcbisgICAgICBJZiBwcmVzZW50LCB0aGUgUkdNSUkgVFggY2xvY2sgdG8gdGhlIE1BQyBpcyBpbnZlcnRlZCAoMTgwIGRlZ3JlZVxuKyAgICAgIHBoYXNlIHNoaWZ0IHJlbGF0aXZlIHRvIHRoZSBkYXRhIGxpbmVzKS4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpY1xuKyAgICAgIGV4dGVuc2lvbiBmb3IgYm9hcmRzIHdoZXJlIFBDQiB0cmFjZSBsZW5ndGggb3IgTUFDIHJlcXVpcmVtZW50c1xuKyAgICAgIG5lY2Vzc2l0YXRlIGNsb2NrIGludmVyc2lvbi4gT25seSB1c2UgdGhpcyBwcm9wZXJ0eSBhZnRlciBoYXJkd2FyZVxuKyAgICAgIHNpZ25hbCBpbnRlZ3JpdHkgdmFsaWRhdGlvbi5cbitcbit1bmV2YWx1YXRlZFByb3BlcnRpZXM6IGZhbHNlXG4rXG4rZXhhbXBsZXM6XG4rICAtIHxcbisgICAgbWRpbyB7XG4rICAgICAgICAjYWRkcmVzcy1jZWxscyA9IFx1MDAzYzFcdTAwM2U7XG4rICAgICAgICAjc2l6ZS1jZWxscyA9IFx1MDAzYzBcdTAwM2U7XG4rXG4rICAgICAgICBldGhlcm5ldC1waHlAMSB7XG4rICAgICAgICAgICAgY29tcGF0aWJsZSA9IFwiZXRoZXJuZXQtcGh5LWlkMDAwOC4wMTFiXCI7XG4rICAgICAgICAgICAgcmVnID0gXHUwMDNjMVx1MDAzZTtcbisgICAgICAgICAgICByeC1pbnRlcm5hbC1kZWxheS1wcyA9IFx1MDAzYzIxMDBcdTAwM2U7XG4rICAgICAgICAgICAgdHgtaW50ZXJuYWwtZGVsYXktcHMgPSBcdTAwM2MyMTAwXHUwMDNlO1xuKyAgICAgICAgICAgIGRhcHUsdHgtaW52ZXJ0ZWQtY2xrO1xuKyAgICAgICAgfTtcbisgICAgfTtcbitcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvS2NvbmZpZyBiL2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnXG5pbmRleCAwOTlmMjVkY2VhYmJjNy4uNDU3NmY3MDdhYzk0NDUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvS2NvbmZpZ1xuKysrIGIvZHJpdmVycy9uZXQvcGh5L0tjb25maWdcbkBAIC0yMzcsNiArMjM3LDE2IEBAIGNvbmZpZyBEQVZJQ09NX1BIWVxuIFx0aGVscFxuIFx0ICBDdXJyZW50bHkgc3VwcG9ydHMgZG05MTYxZSBhbmQgZG05MTMxXG4gXG4rY29uZmlnIERBUDgyMTFSX1BIWVxuK1x0dHJpc3RhdGUgXCJEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFlcIlxuK1x0ZGVwZW5kcyBvbiBPRlxuK1x0aGVscFxuK1x0ICBTdXBwb3J0IGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZLlxuK1x0ICBUaGlzIFBIWSBpcyBkZXNpZ25lZCBmb3IgZW50ZXJwcmlzZSBhbmQgaW5kdXN0cmlhbCBuZXR3b3JraW5nXG4rXHQgIGFwcGxpY2F0aW9ucywgc3VwcG9ydGluZyAxMC8xMDAvMTAwMCBNYnBzIG9wZXJhdGlvbi5cbitcdCAgUkdNSUkgd2l0aDogY29uZmlndXJhYmxlIFRYL1JYIGNsb2NrIGRlbGF5cywgb3B0aW9uYWwgZmxhZyB0byBlbmFibGVcbitcdCAgMTgwLWRlZ3JlZSBUWCBjbG9jayBwaGFzZSBzaGlmdCBhbmQgaW50ZXJuYWwgcGFja2V0IGdlbmVyYXRvci5cbitcbiBjb25maWcgSUNQTFVTX1BIWVxuIFx0dHJpc3RhdGUgXCJJQ1BsdXMgUEhZc1wiXG4gXHRoZWxwXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlIGIvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlXG5pbmRleCBkZTY2MGFlOTQ5NDUzZC4uYWQzNTczM2ViNGJiNjEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGVcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZVxuQEAgLTUzLDYgKzUzLDcgQEAgb2JqLSQoQ09ORklHX0JST0FEQ09NX1BIWSlcdCs9IGJyb2FkY29tLm9cbiBvYmotJChDT05GSUdfQ0lDQURBX1BIWSlcdCs9IGNpY2FkYS5vXG4gb2JqLSQoQ09ORklHX0NPUlRJTkFfUEhZKVx0Kz0gY29ydGluYS5vXG4gb2JqLSQoQ09ORklHX0RBVklDT01fUEhZKVx0Kz0gZGF2aWNvbS5vXG4rb2JqLSQoQ09ORklHX0RBUDgyMTFSX1BIWSlcdCs9IGRhcDgyMTFyLm9cbiBvYmotJChDT05GSUdfRFA4MzY0MF9QSFkpXHQrPSBkcDgzNjQwLm9cbiBvYmotJChDT05GSUdfRFA4MzgyMl9QSFkpXHQrPSBkcDgzODIyLm9cbiBvYmotJChDT05GSUdfRFA4Mzg0OF9QSFkpXHQrPSBkcDgzODQ4Lm9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYyBiL2RyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmU2MzgxZmQ4Yzk4YzIwXG4tLS0gL2Rldi9udWxsXG4rKysgYi9kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuY1xuQEAgLTAsMCArMSwxOTEgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMXG4rLypcbisgKiBEcml2ZXIgZm9yIHRoZSBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFkuXG4rICpcbisgKiBTcGVjaWZpY2F0aW9uczpcbisgKiAgIC0gSUVFRSA4MDIuMyAxMEJBU0UtVGUsIDEwMEJBU0UtVFgsIDEwMDBCQVNFLVRcbisgKiAgIC0gSUVFRSA4MDIuM2F6LTIwMTAgRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldFxuKyAqICAgLSBJRUVFIDE1ODggU3luY0Ugc3VwcG9ydFxuKyAqICAgLSBSR01JSVxuKyAqXG4rICogQXV0aG9yOiBBcnRlbSBTaGlta28gXHUwMDNjYS5zaGlta28uZGV2QGdtYWlsLmNvbVx1MDAzZVxuKyAqL1xuK1xuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2JpdGZpZWxkLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9lcnJuby5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvZXRodG9vbC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9pb3BvbGwuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L21paS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9uZXRkZXZpY2UuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L29mLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9waHkuaFx1MDAzZVxuK1xuKyNkZWZpbmUgREFQODIxMVJfUEhZX0lEXHRcdFx0MHgwMDA4MDExQlxuKyNkZWZpbmUgREFQODIxMVJfUEhZX0lEX01BU0tcdFx0MHhGRkZGRkZGRlxuK1xuKyNkZWZpbmUgREFQODIxMVJfRVhUX0FERFx0XHQweDFFXG4rI2RlZmluZSBEQVA4MjExUl9FWFRfREFUQVx0XHQweDFGXG4rXG4rI2RlZmluZSBEQVA4MjExUl9QSFlfQ09OXHRcdDB4QTAwMVxuKyNkZWZpbmUgREFQODIxMVJfUEhZX1NXX1JTVFx0XHRCSVQoMTUpXG4rXG4rI2RlZmluZSBEQVA4MjExUl9SR01JSV9DT05cdFx0MHhBMDAzXG4rLyogRGVmYXVsdCBpbml0aWFsIFRYIGRlbGF5IHZhbHVlIGJ5IGRhdGFzaGVldC4gKi9cbisjZGVmaW5lIERBUDgyMTFSX0lOSVRfVFhfREVMX1ZBTFx0MVxuKyNkZWZpbmUgREFQODIxMVJfUkdNSUlfVFhfREVMX01BU0tcdEdFTk1BU0soMywgMClcbisjZGVmaW5lIERBUDgyMTFSX1JHTUlJX1JYX0RFTF9NQVNLXHRHRU5NQVNLKDEzLCAxMClcbisjZGVmaW5lIERBUDgyMTFSX1JHTUlJX0NMS19JTlZFUlRcdEJJVCgxNClcbitcbisjZGVmaW5lIERBUDgyMTFSX1JHTUlJX0NPTkZJR19NQVNLXHQoREFQODIxMVJfUkdNSUlfQ0xLX0lOVkVSVCB8IFxcXG4rXHRcdFx0XHRcdERBUDgyMTFSX1JHTUlJX1JYX0RFTF9NQVNLIHwgXFxcbitcdFx0XHRcdFx0REFQODIxMVJfUkdNSUlfVFhfREVMX01BU0spXG4rXG4rLyogRGVmYXVsdCBSR01JSSBkZWxheTogMTMgKiAxNTAgPT0gMS45NW5zICovXG4rI2RlZmluZSBEQVA4MjExUl9ERUZBVUxUX0RFTF9TRUxcdDB4RFxuK1xuK3N0YXRpYyBjb25zdCBpbnQgZGFwODIxMXJfaW50ZXJuYWxfZGVsYXlbXSA9IHswLCAxNTAsIDMwMCwgNDUwLCA2MDAsIDc1MCwgOTAwLFxuK1x0XHRcdFx0XHQgICAgICAxMDUwLCAxMjAwLCAxMzUwLCAxNTAwLCAxNjUwLCAxODAwLFxuK1x0XHRcdFx0XHQgICAgICAxOTUwLCAyMTAwLCAyMjUwfTtcbitcbisjZGVmaW5lIERBUDgyMTFSX0RFTEFZX1NJWkVcdEFSUkFZX1NJWkUoZGFwODIxMXJfaW50ZXJuYWxfZGVsYXkpXG4rXG4rLyoqXG4rICogZGFwODIxMXJfcmVhZF9leHQoKSAtIFJlYWQgZXh0ZW5kZWQgcmVnaXN0ZXJcbisgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHN0cnVjdHVyZVxuKyAqIEByZWc6IEV4dGVuZGVkIHJlZ2lzdGVyIGFkZHJlc3NcbisgKlxuKyAqIFJlYWRzIGEgUEhZIGV4dGVuZGVkIHJlZ2lzdGVyIHVzaW5nIHRoZSBpbmRpcmVjdCBhY2Nlc3MgbWV0aG9kLlxuKyAqIFRoZSBjYWxsZXIgbXVzdCBob2xkIHRoZSBNRElPIGJ1cyBsb2NrLlxuKyAqXG4rICogUmV0dXJuOiBSZWdpc3RlciB2YWx1ZSBvbiBzdWNjZXNzLCBvciBuZWdhdGl2ZSBlcnJvciBjb2RlXG4rICovXG4rc3RhdGljIGludCBkYXA4MjExcl9yZWFkX2V4dChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnKVxuK3tcbitcdGludCByZXQ7XG4rXG4rXHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuK1x0cmV0ID0gX19waHlfd3JpdGUocGh5ZGV2LCBEQVA4MjExUl9FWFRfQURELCByZWcpO1xuK1x0aWYgKHJldCBcdTAwM2MgMClcbitcdFx0Z290byBvdXQ7XG4rXG4rXHRyZXQgPSBfX3BoeV9yZWFkKHBoeWRldiwgREFQODIxMVJfRVhUX0RBVEEpO1xuK291dDpcbitcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcbitcdHJldHVybiByZXQ7XG4rfVxuK1xuKy8qKlxuKyAqIGRhcDgyMTFyX21vZGlmeV9leHQoKSAtIE1vZGlmeSBleHRlbmRlZCByZWdpc3RlciBiaXRzXG4rICogQHBoeWRldjogUEhZIGRldmljZSBzdHJ1Y3R1cmVcbisgKiBAcmVnOiBFeHRlbmRlZCByZWdpc3RlciBhZGRyZXNzXG4rICogQG1hc2s6IEJpdCBtYXNrIG9mIGJpdHMgdG8gY2xlYXJcbisgKiBAc2V0OiBCaXQgbWFzayBvZiBiaXRzIHRvIHNldFxuKyAqXG4rICogTW9kaWZpZXMgYSBQSFkgZXh0ZW5kZWQgcmVnaXN0ZXIgdXNpbmcgdGhlIGluZGlyZWN0IGFjY2VzcyBtZXRob2QuXG4rICogTmV3IHZhbHVlID0gKG9sZCB2YWx1ZSBcdTAwMjYgfm1hc2spIHwgc2V0LlxuKyAqIFRoZSBjYWxsZXIgbXVzdCBob2xkIHRoZSBNRElPIGJ1cyBsb2NrLlxuKyAqXG4rICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG9yIG5lZ2F0aXZlIGVycm9yIGNvZGVcbisgKi9cbitzdGF0aWMgaW50IGRhcDgyMTFyX21vZGlmeV9leHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZywgdTE2IG1hc2ssIHUxNiBzZXQpXG4re1xuK1x0aW50IHJldDtcbitcbitcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XG4rXHRyZXQgPSBfX3BoeV93cml0ZShwaHlkZXYsIERBUDgyMTFSX0VYVF9BREQsIHJlZyk7XG4rXHRpZiAocmV0IFx1MDAzYyAwKVxuK1x0XHRnb3RvIG91dDtcbitcbitcdHJldCA9IF9fcGh5X21vZGlmeShwaHlkZXYsIERBUDgyMTFSX0VYVF9EQVRBLCBtYXNrLCBzZXQpO1xuK291dDpcbitcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcbitcdHJldHVybiByZXQ7XG4rfVxuK1xuKy8qKlxuKyAqIGRhcDgyMTFyX2NvbmZpZ19pbml0KCkgLSBJbml0aWFsaXplIFBIWVxuKyAqIEBwaHlkZXY6IFBIWSBkZXZpY2Ugc3RydWN0dXJlXG4rICpcbisgKiBDb25maWd1cmVzIHRoZSBQSFkgZHVyaW5nIGluaXRpYWxpemF0aW9uOlxuKyAqIC0gVFggY2xvY2sgaW52ZXJ0aW9uXG4rICogLSBSR01JSSBkZWxheXMgYmFzZWQgb24gaW50ZXJmYWNlIG1vZGVcbisgKiAtIFNvZnR3YXJlIHJlc2V0IHRvIGFwcGx5IHNldHRpbmdzIChsb3cgYWN0aXZlLCBzZWxmIGNsZWFyKVxuKyAqXG4rICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG9yIG5lZ2F0aXZlIGVycm9yIGNvZGVcbisgKi9cbitzdGF0aWMgaW50IGRhcDgyMTFyX2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4re1xuK1x0c3RydWN0IGRldmljZV9ub2RlICpwaHlkZXZfbm9kZSA9IHBoeWRldi1cdTAwM2VtZGlvLmRldi5vZl9ub2RlO1xuK1x0dTE2IHNldCA9IDAsIHZhbCA9IDA7XG4rXHRpbnQgcmV0O1xuK1x0czMyIGludGVybmFsX2RlbGF5O1xuK1xuK1x0aWYgKG9mX3Byb3BlcnR5X3JlYWRfYm9vbChwaHlkZXZfbm9kZSwgXCJkYXB1LHR4LWludmVydGVkLWNsa1wiKSlcbitcdFx0c2V0IHw9IERBUDgyMTFSX1JHTUlJX0NMS19JTlZFUlQ7XG4rXG4rXHRpbnRlcm5hbF9kZWxheSA9IHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkocGh5ZGV2LCBkYXA4MjExcl9pbnRlcm5hbF9kZWxheSxcbitcdFx0XHRcdFx0XHREQVA4MjExUl9ERUxBWV9TSVpFLCB0cnVlKTtcbitcdGlmIChpbnRlcm5hbF9kZWxheSBcdTAwM2MgMCkge1xuK1x0XHRpZiAocGh5ZGV2LVx1MDAzZWludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUkpXG4rXHRcdFx0aW50ZXJuYWxfZGVsYXkgPSAwO1xuK1x0XHRlbHNlXG4rXHRcdFx0aW50ZXJuYWxfZGVsYXkgPSBEQVA4MjExUl9ERUZBVUxUX0RFTF9TRUw7XG4rXHR9XG4rXG4rXHRzZXQgfD0gRklFTERfUFJFUChEQVA4MjExUl9SR01JSV9SWF9ERUxfTUFTSywgaW50ZXJuYWxfZGVsYXkpO1xuK1xuK1x0aW50ZXJuYWxfZGVsYXkgPSBwaHlfZ2V0X2ludGVybmFsX2RlbGF5KHBoeWRldiwgZGFwODIxMXJfaW50ZXJuYWxfZGVsYXksXG4rXHRcdFx0XHRcdFx0REFQODIxMVJfREVMQVlfU0laRSwgZmFsc2UpO1xuK1x0aWYgKGludGVybmFsX2RlbGF5IFx1MDAzYyAwKSB7XG4rXHRcdGlmIChwaHlkZXYtXHUwMDNlaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSSlcbitcdFx0XHRpbnRlcm5hbF9kZWxheSA9IERBUDgyMTFSX0lOSVRfVFhfREVMX1ZBTDtcbitcdFx0ZWxzZVxuK1x0XHRcdGludGVybmFsX2RlbGF5ID0gREFQODIxMVJfREVGQVVMVF9ERUxfU0VMO1xuK1x0fVxuK1xuK1x0c2V0IHw9IEZJRUxEX1BSRVAoREFQODIxMVJfUkdNSUlfVFhfREVMX01BU0ssIGludGVybmFsX2RlbGF5KTtcbitcbitcdHJldCA9IGRhcDgyMTFyX21vZGlmeV9leHQocGh5ZGV2LCBEQVA4MjExUl9QSFlfQ09OLCBEQVA4MjExUl9QSFlfU1dfUlNULCAwKTtcbitcdGlmIChyZXQpXG4rXHRcdHJldHVybiByZXQ7XG4rXG4rXHQvKiBXYWl0IGZvciByZXNldCBzZWxmLWNsZWFyIChtYXggMjAwIHVzKSAqL1xuK1x0cmV0ID0gcmVhZF9wb2xsX3RpbWVvdXQoZGFwODIxMXJfcmVhZF9leHQsIHZhbCxcbitcdFx0XHRcdCh2YWwgXHUwMDI2IERBUDgyMTFSX1BIWV9TV19SU1QpLFxuK1x0XHRcdFx0MjAsIDIwMCwgZmFsc2UsIHBoeWRldiwgREFQODIxMVJfUEhZX0NPTik7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuK1x0cmV0ID0gZGFwODIxMXJfbW9kaWZ5X2V4dChwaHlkZXYsIERBUDgyMTFSX1JHTUlJX0NPTiwgREFQODIxMVJfUkdNSUlfQ09ORklHX01BU0ssIHNldCk7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3N0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkYXA4MjExcl9kcml2ZXJbXSA9IHtcbitcdHtcbitcdFx0UEhZX0lEX01BVENIX0VYQUNUKERBUDgyMTFSX1BIWV9JRCksXG4rXHRcdC5uYW1lXHRcdD0gXCJEQVA4MjExUiBHaWdhYml0IEV0aGVybmV0XCIsXG4rXHRcdC5jb25maWdfaW5pdFx0PSBkYXA4MjExcl9jb25maWdfaW5pdCxcbitcdFx0LnJlYWRfc3RhdHVzXHQ9IGdlbnBoeV9yZWFkX3N0YXR1cyxcbitcdFx0LnNldF9sb29wYmFja1x0PSBnZW5waHlfbG9vcGJhY2ssXG4rXHRcdC5jb25maWdfYW5lZ1x0PSBnZW5waHlfY29uZmlnX2FuZWcsXG4rXHRcdC5zdXNwZW5kXHQ9IGdlbnBoeV9zdXNwZW5kLFxuK1x0XHQucmVzdW1lXHRcdD0gZ2VucGh5X3Jlc3VtZSxcbitcdH0sXG4rfTtcbittb2R1bGVfcGh5X2RyaXZlcihkYXA4MjExcl9kcml2ZXIpO1xuK1xuK01PRFVMRV9ERVNDUklQVElPTihcIkRBUDgyMTFSIEdpZ2FiaXQgRXRoZXJuZXQgUEhZIGRyaXZlclwiKTtcbitNT0RVTEVfQVVUSE9SKFwiQXJ0ZW0gU2hpbWtvIFx1MDAzY2Euc2hpbWtvLmRldkBnbWFpbC5jb21cdTAwM2VcIik7XG4rTU9EVUxFX0xJQ0VOU0UoXCJHUExcIik7XG4rXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBkYXA4MjExcl90YltdID0ge1xuK1x0eyBEQVA4MjExUl9QSFlfSUQsIERBUDgyMTFSX1BIWV9JRF9NQVNLIH0sXG4rXHR7IC8qIHNlbnRpbmVsICovIH1cbit9O1xuK01PRFVMRV9ERVZJQ0VfVEFCTEUobWRpbywgZGFwODIxMXJfdGIpO1xuK1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMjM6MDI6MzMuNDQ3NTI1NDU4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQ0MTQ5NjI4NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEQVA4MjExUiBHaWdhYml0IEV0aGVybmV0IFBIWSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB3ZSBoYXZlIGEgbmV3IFBIWSBkcml2ZXIgaGVyZSBmb3IgdGhlIERBUFUgVGVsZWNvbSBEQVA4MjExUihJKS4gTG9va3MgbGlrZSBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgYWRkaXRpb246IG5ldyBiaW5kaW5ncywgS2NvbmZpZywgTWFrZWZpbGUgZW50cnksIGFuZCB0aGUgZHJpdmVyIGl0c2VsZi4gTXkgaW5pdGlhbCB0aG91Z2h0cyBhcmUgYXJvdW5kIGhvdyB3ZSBjYW4gYWN0dWFsbHkgdGVzdCB0aGlzIHRoaW5nIGVmZmVjdGl2ZWx5LlxuXG5GaXJzdCwgSSBuZWVkIHRvIGtub3cgaWYgaXQncyBldmVuICpyZWFjaGFibGUqIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VLiBQSFkgZHJpdmVycyBhcmUgdHlwaWNhbGx5IGFjY2Vzc2VkIHRocm91Z2ggdGhlIE1ESU8gYnVzLiBFbmFibGluZyBgQ09ORklHX0RBUDgyMTFSX1BIWWAgd2lsbCByZWdpc3RlciB0aGUgZHJpdmVyLCB3aGljaCBpcyBzdGVwIG9uZS4gQnV0IHdpbGwgaXQgZ2V0ICpwcm9iZWQqPyBDYW4gd2UgZnV6eiBpdD9cblxuVHJhZGl0aW9uYWxseSwgeW91J2QgbmVlZCBhIHZpcnR1YWwgTURJTyBidXMgc2V0IHVwLCBtYXliZSB0aHJvdWdoIHNvbWV0aGluZyBsaWtlIGBtYWNiYCBvciBhIGR1bW15IE1ESU8gYnVzLCBvciBhbiBlbXVsYXRlZCBOSUMuIE5vdywgU3l6a2FsbGVyICp1c3VhbGx5KiBkb2Vzbid0IGhhdmUgYSBnZW5lcmljIHdheSB0byBqdXN0IGluc3RhbnRpYXRlIGFyYml0cmFyeSBQSFlzIG91dCBvZiB0aGUgYmx1ZSwgdW5sZXNzIHdlIGNhbiBpbmplY3QgYW4gTURJTyBkZXZpY2Ugb3IgaWYgaXQncyBwYXJ0IG9mIGEgbmV0d29yayBkZXZpY2UgdGhhdCBjYW4gYmUgaW5zdGFudGlhdGVkLiBXYWl0LCBkaWRuJ3QgSSByZWFkIHNvbWV0aGluZyBhYm91dCBTeXprYWxsZXIgaGF2aW5nICpzb21lKiBzdXBwb3J0IHZpYSBuZXRsaW5rIG9yIGlvY3RsIGlmIHRoZSBQSFkgaXMgKmF0dGFjaGVkKj8gQnV0IHRvIGF0dGFjaCBhIHNwZWNpZmljIFBIWSwgeW91IGVpdGhlciBuZWVkIGEgRFQgb3ZlcmxheSBvciBhIGRyaXZlciB0aGF0ICpwcm9iZXMqIGl0IGluIHRoZSBmaXJzdCBwbGFjZSwgb3IuLi4gY291bGQgU3l6a2FsbGVyIGNyZWF0ZSBpdHMgb3duIHZpcnR1YWwgTURJTyBidXM/IEhtbSwgbm8sIGJ1dCB0aGVyZSBpcyB0aGUgYG1kaW9gIGJ1cyBhbmQgdGhlIGBwaHlgIHN1YnN5c3RlbS5cblxuTGV0J3Mgc2VlIGlmIHRoZXJlJ3MgYSBzcGVjaWZpYyBwYXRoIHRvIHRyaWdnZXIgdGhpcyBkcml2ZXIuIFRoZSBkcml2ZXIgcmVnaXN0ZXJzIGl0c2VsZiB1c2luZyBgbW9kdWxlX3BoeV9kcml2ZXIoZGFwODIxMXJfZHJpdmVyKWAuIFRoZSBwcm9iaW5nIGhhcHBlbnMgYmFzZWQgb24gUEhZIElEcyBvbiB0aGUgTURJTyBidXMuIFNvLCB0aGUgcXVlc3Rpb24gaXM6IGNhbiB3ZSB0cmlnZ2VyIGBkYXA4MjExcl9jb25maWdfaW5pdGA/XG5cbklmIHdlIGNhbiBjcmVhdGUgYSBkdW1teSBNRElPIGRldmljZSB3aXRoIHRoZSByaWdodCBQSFkgSUQg4oCTIGAweDAwMDgwMTFCYCDigJMgdGhlIFBIWSBtYWNoaW5lcnkgc2hvdWxkIHByb2JlIGl0IGFuZCBjYWxsIGBjb25maWdfaW5pdGAuIEl0IGxvb2tzIGxpa2UgaXQgY291bGQgYmUgd29ydGggdHJ5aW5nIHRvIGZ1enosIGV2ZW4gdGhvdWdoIGl0J3MgYSBzaW1wbGUgUEhZIGRyaXZlci4gTGV0J3MgZGlnIGludG8gYGRhcDgyMTFyX2NvbmZpZ19pbml0YCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBhdHRhY2sgc3VyZmFjZS5cblxuYGBgY1xuc3RhdGljIGludCBkYXA4MjExcl9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxue1xuXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKnBoeWRldl9ub2RlID0gcGh5ZGV2LVx1MDAzZW1kaW8uZGV2Lm9mX25vZGU7XG4uLi5cblx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfYm9vbChwaHlkZXZfbm9kZSwgXCJkYXB1LHR4LWludmVydGVkLWNsa1wiKSlcbi4uLlxuXHRpbnRlcm5hbF9kZWxheSA9IHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkocGh5ZGV2LCBkYXA4MjExcl9pbnRlcm5hbF9kZWxheSxcblx0XHRcdFx0XHRcdERBUDgyMTFSX0RFTEFZX1NJWkUsIHRydWUpO1xuLi4uXG5cdHJldCA9IGRhcDgyMTFyX21vZGlmeV9leHQocGh5ZGV2LCBEQVA4MjExUl9QSFlfQ09OLCBEQVA4MjExUl9QSFlfU1dfUlNULCAwKTtcbi4uLlxuXHRyZXQgPSByZWFkX3BvbGxfdGltZW91dChkYXA4MjExcl9yZWFkX2V4dCwgdmFsLFxuXHRcdFx0XHQodmFsIFx1MDAyNiBEQVA4MjExUl9QSFlfU1dfUlNUKSxcblx0XHRcdFx0MjAsIDIwMCwgZmFsc2UsIHBoeWRldiwgREFQODIxMVJfUEhZX0NPTik7XG4uLi5cblx0cmV0ID0gZGFwODIxMXJfbW9kaWZ5X2V4dChwaHlkZXYsIERBUDgyMTFSX1JHTUlJX0NPTiwgREFQODIxMVJfUkdNSUlfQ09ORklHX01BU0ssIHNldCk7XG4uLi5cbn1cbmBgYFxuXG5JdCdzIHByZXR0eSBzdGFuZGFyZCwgcmlnaHQ/IERUIHByb3BlcnRpZXMsIGEgZmV3IE1ESU8gcmVhZHMgYW5kIHdyaXRlcy4gTm90IGEgaHVnZSBhdHRhY2sgc3VyZmFjZSwgYnV0IHN0aWxsIHdvcnRoIGludmVzdGlnYXRpbmcuXG5cblNvIHRoZSByZWFsIHF1ZXN0aW9uIGlzOiBDYW4gd2UgbWFrZSB0aGlzIGRyaXZlciByZWFjaGFibGUgaW4gUUVNVT8gWWVzLCBpZiB3ZSBjYW4gaW5zdGFudGlhdGUgTURJTyBkZXZpY2VzLiBTeXprYWxsZXIgZG9lc24ndCBoYXZlIGEgKmdlbmVyaWMqIE1ESU8gZGV2aWNlIGluc3RhbnRpYXRvciwgYnV0IHRoZXJlIG1pZ2h0IGJlIG90aGVyIHdheXMuIEkgcmVtZW1iZXIgc29tZXRoaW5nIGFib3V0IGBzeXpfZ2VuZXRsaW5rYC4uLiBidXQgZm9yIFBIWXMgdGhlcmUncyBhbHNvIGBpb2N0bChTSU9DU01JSVJFRylgLiBUaGF0IGNvdWxkIGJlIGhlbHBmdWwsIGJ1dCB3ZSBzdGlsbCBuZWVkIHRoZSBNRElPIGJ1cyB3aXRoIHRoYXQgbWFnaWMgSUQ6IGAweDAwMDgwMTFCYC5cblxuSSByZWNhbGwgc29tZXRoaW5nIGFib3V0IGBkcml2ZXJzL25ldC9waHkvbWRpby1tb2NrdXAuY2AuIEkgaGF2ZSB0byBjaGVjay4gQ2FuIFN5emthbGxlciBjcmVhdGUgKnN1Y2gqIGEgZGV2aWNlPyBUaW1lIHRvIHVzZSBteSBBUEkga25vd2xlZGdlLiBJJ2xsIHVzZSBgZGVmYXVsdF9hcGk6Z3JlcHBlcmAgdG8gc2VhcmNoIGZvciBcIm1kaW9cIiBvciBcInBoeVwiIGluamVjdGlvbiBpbiBib3RoIFN5emthbGxlciBhbmQgdGhlIGtlcm5lbCBpdHNlbGYuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGFuc3dlcnMgSSBuZWVkLlxuXG4iLCJJbnB1dFRva2VucyI6NTY0MCwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMjIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMzowMjo0Ny44NjI0OTA3MTRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU0NDI0OTQxOSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpby4qbW9ja3VwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMzowMjo1MC40MDY3NTE3MDJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjAxNzkzMzM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyaXplZCB0aG91Z2h0IHByb2Nlc3MsIHByZXNlbnRlZCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6XG5cbioqTURJTyBEcml2ZXIgSW52ZXN0aWdhdGlvbioqXG5cbkFscmlnaHQsIGJlZm9yZSBkaXZpbmcgdG9vIGRlZXAsIEkgc2hvdWxkIHByb2JhYmx5IHRha2UgYSBxdWljayBsb29rIHRvIHNlZSBpZiBhIHZpcnR1YWwgTURJTyBkcml2ZXIgaXMgZXZlbiBwcmVzZW50LiBJdCdzIGFsd2F5cyBiZXN0IHRvIHN0YXJ0IHdpdGggdGhlIGJhc2ljcyBhbmQgcnVsZSBvdXQgdGhlIHNpbXBsZXN0IGV4cGxhbmF0aW9ucyBmaXJzdC4gSWYgb25lICppcyogYXZhaWxhYmxlLCBpdCBtaWdodCBzYXZlIG1lIGEgbG90IG9mIHRpbWUgZGlnZ2luZyBhcm91bmQgaW4gbW9yZSBjb21wbGV4IGFyZWFzLiBUaGF0J3MgdXN1YWxseSBteSBnby10byBmaXJzdCBzdGVwIGZvciBkZWJ1Z2dpbmcgdGhpcyBraW5kIG9mIHRoaW5nLCBzbyBsZXQncyBzZWUgd2hhdCB3ZSd2ZSBnb3QgaW4gdGhhdCBzcGFjZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzgyMCwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIzOjAyOjUzLjAwODU0Njg0OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjI5MzI5NjI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZpcnR1YWwuKm1kaW9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tZGlvLWdwaW8ueWFtbD0xNz1wcm9wZXJ0aWVzOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tZGlvLWdwaW8ueWFtbC0xOS0gICAgZW51bTpcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21kaW8tZ3Bpby55YW1sOjIwOiAgICAgIC0gdmlydHVhbCxtZGlvLWdwaW9cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21kaW8tZ3Bpby55YW1sLTIxLSAgICAgIC0gbWljcm9jaGlwLG1kaW8tc21pMFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tZGlvLWdwaW8ueWFtbD00MT1leGFtcGxlczpcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWRpby1ncGlvLnlhbWwtNDctICAgIG1kaW8wOiBtZGlvIHtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21kaW8tZ3Bpby55YW1sOjQ4OiAgICAgIGNvbXBhdGlibGUgPSBcXFwidmlydHVhbCxtZGlvLWdwaW9cXFwiO1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWRpby1ncGlvLnlhbWwtNDktICAgICAgI2FkZHJlc3MtY2VsbHMgPSBcXHUwMDNjMVxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLWRsaW5rLWRucy0zMTMuZHRzPTE1Mj1cXHRtZGlvMDogbWRpbyB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1kbGluay1kbnMtMzEzLmR0czoxNTM6XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJ2aXJ0dWFsLG1kaW8tZ3Bpb1xcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1kbGluay1kbnMtMzEzLmR0cy0xNTQtXFx0XFx0LyogVXNlcyBNREMgYW5kIE1ESU8gKi9cXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktbmFzNDIxMGIuZHRzPTY3PVxcdG1kaW8wOiBtZGlvIHtcXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLW5hczQyMTBiLmR0czo2ODpcXHRcXHRjb21wYXRpYmxlID0gXFxcInZpcnR1YWwsbWRpby1ncGlvXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLW5hczQyMTBiLmR0cy02OS1cXHRcXHRncGlvcyA9IFxcdTAwM2NcXHUwMDI2Z3BpbzAgMjIgR1BJT19BQ1RJVkVfSElHSFxcdTAwM2UsIC8qIE1EQyAqL1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1uYXM0MjIwYi5kdHM9NjY9XFx0bWRpbzA6IG1kaW8ge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktbmFzNDIyMGIuZHRzOjY3OlxcdFxcdGNvbXBhdGlibGUgPSBcXFwidmlydHVhbCxtZGlvLWdwaW9cXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktbmFzNDIyMGIuZHRzLTY4LVxcdFxcdGdwaW9zID0gXFx1MDAzY1xcdTAwMjZncGlvMCAyMiBHUElPX0FDVElWRV9ISUdIXFx1MDAzZSwgLyogTURDICovXFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLW5zMjUwMi5kdHM9MzI9XFx0bWRpbzA6IG1kaW8ge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktbnMyNTAyLmR0czozMzpcXHRcXHRjb21wYXRpYmxlID0gXFxcInZpcnR1YWwsbWRpby1ncGlvXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLW5zMjUwMi5kdHMtMzQtXFx0XFx0Z3Bpb3MgPSBcXHUwMDNjXFx1MDAyNmdwaW8wIDIyIEdQSU9fQUNUSVZFX0hJR0hcXHUwMDNlLCAvKiBNREMgKi9cXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktcnV0MXh4LmR0cz01OT1cXHRtZGlvMDogbWRpbyB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1ydXQxeHguZHRzOjYwOlxcdFxcdGNvbXBhdGlibGUgPSBcXFwidmlydHVhbCxtZGlvLWdwaW9cXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktcnV0MXh4LmR0cy02MS1cXHRcXHRncGlvcyA9IFxcdTAwM2NcXHUwMDI2Z3BpbzAgMjIgR1BJT19BQ1RJVkVfSElHSFxcdTAwM2UsIC8qIE1EQyAqL1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1zbDkzNTEyci5kdHM9NzE9XFx0bWRpbzA6IG1kaW8ge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktc2w5MzUxMnIuZHRzOjcyOlxcdFxcdGNvbXBhdGlibGUgPSBcXFwidmlydHVhbCxtZGlvLWdwaW9cXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktc2w5MzUxMnIuZHRzLTczLVxcdFxcdC8qIFVzZXMgTURDIGFuZCBNRElPICovXFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXNxMjAxLmR0cz01Nj1cXHRtZGlvMDogbWRpbyB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1zcTIwMS5kdHM6NTc6XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJ2aXJ0dWFsLG1kaW8tZ3Bpb1xcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1zcTIwMS5kdHMtNTgtXFx0XFx0LyogVXNlcyBNREMgYW5kIE1ESU8gKi9cXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktc3NpMTMyOC5kdHM9MzI9XFx0bWRpbzA6IG1kaW8ge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktc3NpMTMyOC5kdHM6MzM6XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJ2aXJ0dWFsLG1kaW8tZ3Bpb1xcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1zc2kxMzI4LmR0cy0zNC1cXHRcXHRncGlvcyA9IFxcdTAwM2NcXHUwMDI2Z3BpbzAgMjIgR1BJT19BQ1RJVkVfSElHSFxcdTAwM2UsIC8qIE1EQyAqL1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS12ZXJiYXRpbS1zMDh2MTkwMS1kMS5kdHM9NTc9XFx0bWRpbzA6IG1kaW8ge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktdmVyYmF0aW0tczA4djE5MDEtZDEuZHRzOjU4OlxcdFxcdGNvbXBhdGlibGUgPSBcXFwidmlydHVhbCxtZGlvLWdwaW9cXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktdmVyYmF0aW0tczA4djE5MDEtZDEuZHRzLTU5LVxcdFxcdC8qIFVzZXMgTURDIGFuZCBNRElPICovXFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXdiZDExMS5kdHM9NzE9XFx0bWRpbzA6IG1kaW8ge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktd2JkMTExLmR0czo3MjpcXHRcXHRjb21wYXRpYmxlID0gXFxcInZpcnR1YWwsbWRpby1ncGlvXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXdiZDExMS5kdHMtNzMtXFx0XFx0Z3Bpb3MgPSBcXHUwMDNjXFx1MDAyNmdwaW8wIDIyIEdQSU9fQUNUSVZFX0hJR0hcXHUwMDNlLCAvKiBNREMgKi9cXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktd2JkMjIyLmR0cz03MD1cXHRtZGlvMDogbWRpbyB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS13YmQyMjIuZHRzOjcxOlxcdFxcdGNvbXBhdGlibGUgPSBcXFwidmlydHVhbCxtZGlvLWdwaW9cXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktd2JkMjIyLmR0cy03Mi1cXHRcXHRncGlvcyA9IFxcdTAwM2NcXHUwMDI2Z3BpbzAgMjIgR1BJT19BQ1RJVkVfSElHSFxcdTAwM2UsIC8qIE1EQyAqL1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg1MS16aWktcmR1MS5kdHM9MTYzPVxcdG1kaW9fZ3BpbzogbWRpbyB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg1MS16aWktcmR1MS5kdHM6MTY0OlxcdFxcdGNvbXBhdGlibGUgPSBcXFwidmlydHVhbCxtZGlvLWdwaW9cXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NTEtemlpLXJkdTEuZHRzLTE2NS1cXHRcXHRwaW5jdHJsLW5hbWVzID0gXFxcImRlZmF1bHRcXFwiO1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg1MS16aWktc2N1Mi1tZXp6LmR0cz00MD1cXHRtZGlvX2dwaW86IG1kaW8ge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NTEtemlpLXNjdTItbWV6ei5kdHM6NDE6XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJ2aXJ0dWFsLG1kaW8tZ3Bpb1xcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg1MS16aWktc2N1Mi1tZXp6LmR0cy00Mi1cXHRcXHRwaW5jdHJsLW5hbWVzID0gXFxcImRlZmF1bHRcXFwiO1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg2cS1ieDUwdjMuZHRzaT05Nz1cXHRtZGlvMDogbWRpbyB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg2cS1ieDUwdjMuZHRzaTo5ODpcXHRcXHRjb21wYXRpYmxlID0gXFxcInZpcnR1YWwsbWRpby1ncGlvXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZxLWJ4NTB2My5kdHNpLTk5LVxcdFxcdGdwaW9zID0gXFx1MDAzY1xcdTAwMjZncGlvMiA1IEdQSU9fQUNUSVZFX0hJR0hcXHUwMDNlLCAvKiBtZGMgKi9cXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NnFkbC16aWktcmR1Mi5kdHNpPTE5PVxcdG1kaW8xOiBtZGlvIHtcXG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZxZGwtemlpLXJkdTIuZHRzaToyMDpcXHRcXHRjb21wYXRpYmxlID0gXFxcInZpcnR1YWwsbWRpby1ncGlvXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZxZGwtemlpLXJkdTIuZHRzaS0yMS1cXHRcXHQjYWRkcmVzcy1jZWxscyA9IFxcdTAwM2MxXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NnFwLXBydHdkMy5kdHM9NTM9XFx0bWRpbyB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg2cXAtcHJ0d2QzLmR0czo1NDpcXHRcXHRjb21wYXRpYmxlID0gXFxcInZpcnR1YWwsbWRpby1ncGlvXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZxcC1wcnR3ZDMuZHRzLTU1LVxcdFxcdHBpbmN0cmwtbmFtZXMgPSBcXFwiZGVmYXVsdFxcXCI7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC1yYjMwMTEuZHRzPTU1PVxcdG1kaW8wOiBtZGlvLTAge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LXJiMzAxMS5kdHMtNTYtXFx0XFx0c3RhdHVzID0gXFxcIm9rYXlcXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LXJiMzAxMS5kdHM6NTc6XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJ2aXJ0dWFsLG1kaW8tZ3Bpb1xcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQtcmIzMDExLmR0cy01OC1cXHRcXHRncGlvcyA9IFxcdTAwM2NcXHUwMDI2cWNvbV9waW5tdXggMSBHUElPX0FDVElWRV9ISUdIXFx1MDAzZSxcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LXJiMzAxMS5kdHM9MTgwPVxcdG1kaW8xOiBtZGlvLTEge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LXJiMzAxMS5kdHMtMTgxLVxcdFxcdHN0YXR1cyA9IFxcXCJva2F5XFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC1yYjMwMTEuZHRzOjE4MjpcXHRcXHRjb21wYXRpYmxlID0gXFxcInZpcnR1YWwsbWRpby1ncGlvXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC1yYjMwMTEuZHRzLTE4My1cXHRcXHRncGlvcyA9IFxcdTAwM2NcXHUwMDI2cWNvbV9waW5tdXggMTEgR1BJT19BQ1RJVkVfSElHSFxcdTAwM2UsXFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTMzYy1wcmlobWIuZHRzPTExOD1cXHRtZGlvMDogbWRpbyB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDEzM2MtcHJpaG1iLmR0czoxMTk6XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJ2aXJ0dWFsLG1kaW8tZ3Bpb1xcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDEzM2MtcHJpaG1iLmR0cy0xMjAtXFx0XFx0I2FkZHJlc3MtY2VsbHMgPSBcXHUwMDNjMVxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTUxYS1wcnR0MWMuZHRzPTM4PVxcdG1kaW8wOiBtZGlvIHtcXG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTUxYS1wcnR0MWMuZHRzOjM5OlxcdFxcdGNvbXBhdGlibGUgPSBcXFwidmlydHVhbCxtZGlvLWdwaW9cXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxNTFhLXBydHQxYy5kdHMtNDAtXFx0XFx0I2FkZHJlc3MtY2VsbHMgPSBcXHUwMDNjMVxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTUxYS1wcnR0MWwuZHRzaT00ND1cXHRtZGlvMDogbWRpbyB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDE1MWEtcHJ0dDFsLmR0c2k6NDU6XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJ2aXJ0dWFsLG1kaW8tZ3Bpb1xcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDE1MWEtcHJ0dDFsLmR0c2ktNDYtXFx0XFx0I2FkZHJlc3MtY2VsbHMgPSBcXHUwMDNjMVxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg4bXEtemlpLXVsdHJhLmR0c2k9MTg9XFx0bWRpbzA6IG1kaW8ge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDhtcS16aWktdWx0cmEuZHRzaToxOTpcXHRcXHRjb21wYXRpYmxlID0gXFxcInZpcnR1YWwsbWRpby1ncGlvXFxcIjtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg4bXEtemlpLXVsdHJhLmR0c2ktMjAtXFx0XFx0cGluY3RybC1uYW1lcyA9IFxcXCJkZWZhdWx0XFxcIjtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM9MTk3PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG1kaW9fZ3Bpb19vZl9tYXRjaFtdID0ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6MTk4OlxcdHsgLmNvbXBhdGlibGUgPSBcXFwidmlydHVhbCxtZGlvLWdwaW9cXFwiLCB9LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTk5LVxcdHsgLmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLG1kaW8tc21pMFxcXCIgfSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMjM6MDI6NTUuMjM3ODg0NjAzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMxMjY2MTYzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDdXJyZW50IEFzc2Vzc21lbnQgb2YgdGhlIFBIWSBEcml2ZXIgUHJvYmUgU2l0dWF0aW9uKipcblxuT2theSwgc28gdGhlIGB2aXJ0dWFsLG1kaW8tZ3Bpb2AgZHJpdmVyIGlzbid0IGEgKnJlYWwqIHZpcnR1YWwgYnVzOyBpdCBqdXN0IGJpdC1iYW5ncyBNRElPIG92ZXIgR1BJT3MuIFRoYXQncyBub3QgaGVscGZ1bCBpbiB0aGlzIHNjZW5hcmlvLiBNeSBwcmltYXJ5IGNvbmNlcm4gcmlnaHQgbm93IGlzIGZpZ3VyaW5nIG91dCBob3cgdG8gcHJvYmUgdGhpcyBQSFkgZHJpdmVyIChgZGFwODIxMXJfY29uZmlnX2luaXRgIHRvIGJlIHByZWNpc2UpICp3aXRob3V0KiBhbiBhY3R1YWwgaGFyZHdhcmUgUEhZLiBJIG5lZWQgYSB3YXkgdG8gZ2V0IHRoZSBkcml2ZXIncyBjb2RlIGV4ZWN1dGVkLlxuXG5JIGNvbnNpZGVyZWQgYGRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuY2AsIGJ1dCBpdCBqdXN0IGRlZmluZXMgYSAqZml4ZWQqIFBIWSwgcmVnaXN0ZXJzIGl0IHdpdGggaXRzICpvd24qIFBIWSBJRCwgYW5kIGRvZXNuJ3Qgb2ZmZXIgYSBtZWNoYW5pc20gdG8gcHJvYmUgYW4gYXJiaXRyYXJ5IGRyaXZlci4gVGhhdCB3b24ndCBkbyBpdC4gSSdtIHN0dWNrLCBJIG5lZWQgdG8gZmluZCBhIHdheSB0byByZWFjaCB0aGUgYGRhcDgyMTFyX2NvbmZpZ19pbml0YCBmdW5jdGlvbiB3aXRob3V0IGFuIGluc3RhbnRpYXRlZCBQSFkuXG5cblRoZW4gSSBoYWQgYSBzcGFyay4uLnN5emthbGxlciBoYXMgYHN5el91c2JfY29ubmVjdGAuIENvdWxkIGEgVVNCLXRvLU1ESU8gYnJpZGdlIGJlIHRoZSBrZXk/IFRoYXQgbWlnaHQgd29yayBpZiBJIGtuZXcgdGhlIFBIWSBJRCwgYnV0IHRoYXQncyBzdGlsbCBhbiBhc3N1bXB0aW9uLlxuXG5TbywgYXJlIHRoZXJlIGFueSBnZW5lcmljIE1ESU8gYnVzIGVtdWxhdGlvbnMgb3IgZHVtbXkgZHJpdmVycyBpbiB0aGUga2VybmVsIGFueXdoZXJlPyBJIG5lZWQgdG8gY2hlY2sgdGhlIGBkcml2ZXJzL25ldC9waHkvYCBkaXJlY3RvcnkgZm9yIGFueSBzb3J0IG9mIG1vY2t1cCB0aGF0IEkgY291bGQgdXNlLiBUaGF0J3MgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTI2NiwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMzowMzowMC41NTA1NDgwNjVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NjQyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L3BoeVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJhZGluLmNcIixcbiAgICBcImFkaW4xMTAwLmNcIixcbiAgICBcImFpcl9hbjg4MDEuY1wiLFxuICAgIFwiYWlyX2VuODgxMWguY1wiLFxuICAgIFwiYWlyX3BoeV9saWIuY1wiLFxuICAgIFwiYWlyX3BoeV9saWIuaFwiLFxuICAgIFwiYW1kLmNcIixcbiAgICBcImFzMjF4eHguY1wiLFxuICAgIFwiYXg4ODc5NmIuY1wiLFxuICAgIFwiYXg4ODc5NmJfcnVzdC5yc1wiLFxuICAgIFwiYmNtLWN5Z251cy5jXCIsXG4gICAgXCJiY20tcGh5LWxpYi5jXCIsXG4gICAgXCJiY20tcGh5LWxpYi5oXCIsXG4gICAgXCJiY20tcGh5LXB0cC5jXCIsXG4gICAgXCJiY201NDE0MC5jXCIsXG4gICAgXCJiY202M3h4LmNcIixcbiAgICBcImJjbTd4eHguY1wiLFxuICAgIFwiYmNtODQ4ODEuY1wiLFxuICAgIFwiYmNtODd4eC5jXCIsXG4gICAgXCJicm9hZGNvbS5jXCIsXG4gICAgXCJjaWNhZGEuY1wiLFxuICAgIFwiY29ydGluYS5jXCIsXG4gICAgXCJkYXA4MjExci5jXCIsXG4gICAgXCJkYXZpY29tLmNcIixcbiAgICBcImRwODM2NDAuY1wiLFxuICAgIFwiZHA4MzY0MF9yZWcuaFwiLFxuICAgIFwiZHA4MzgyMi5jXCIsXG4gICAgXCJkcDgzODQ4LmNcIixcbiAgICBcImRwODM4NjcuY1wiLFxuICAgIFwiZHA4Mzg2OS5jXCIsXG4gICAgXCJkcDgzdGM4MTEuY1wiLFxuICAgIFwiZHA4M3RkNTEwLmNcIixcbiAgICBcImRwODN0ZzcyMC5jXCIsXG4gICAgXCJldDEwMTFjLmNcIixcbiAgICBcImZpeGVkX3BoeS5jXCIsXG4gICAgXCJpY3BsdXMuY1wiLFxuICAgIFwiaW50ZWwteHdheS5jXCIsXG4gICAgXCJsaW5rbW9kZS5jXCIsXG4gICAgXCJseHQuY1wiLFxuICAgIFwibWFydmVsbC04OHEyeHh4LmNcIixcbiAgICBcIm1hcnZlbGwtODh4MjIyMi5jXCIsXG4gICAgXCJtYXJ2ZWxsLmNcIixcbiAgICBcIm1hcnZlbGwxMGcuY1wiLFxuICAgIFwibWRpby1vcGVuLWFsbGlhbmNlLmhcIixcbiAgICBcIm1kaW9fYnVzLmNcIixcbiAgICBcIm1kaW9fYnVzX3Byb3ZpZGVyLmNcIixcbiAgICBcIm1kaW9fZGV2aWNlLmNcIixcbiAgICBcIm1kaW9fZGV2cmVzLmNcIixcbiAgICBcIm1lc29uLWd4bC5jXCIsXG4gICAgXCJtaWNyZWwuY1wiLFxuICAgIFwibWljcm9jaGlwLmNcIixcbiAgICBcIm1pY3JvY2hpcF9yZHNfcHRwLmNcIixcbiAgICBcIm1pY3JvY2hpcF9yZHNfcHRwLmhcIixcbiAgICBcIm1pY3JvY2hpcF90MS5jXCIsXG4gICAgXCJtaWNyb2NoaXBfdDFzLmNcIixcbiAgICBcIm1paV90aW1lc3RhbXBlci5jXCIsXG4gICAgXCJtb3RvcmNvbW0uY1wiLFxuICAgIFwibXhsLTg2MTEwLmNcIixcbiAgICBcIm14bC1ncHkuY1wiLFxuICAgIFwibmF0aW9uYWwuY1wiLFxuICAgIFwibmNuMjYwMDAuY1wiLFxuICAgIFwibnhwLWM0NS10amExMXh4LW1hY3NlYy5jXCIsXG4gICAgXCJueHAtYzQ1LXRqYTExeHguY1wiLFxuICAgIFwibnhwLWM0NS10amExMXh4LmhcIixcbiAgICBcIm54cC1jYnR4LmNcIixcbiAgICBcIm54cC10amExMXh4LmNcIixcbiAgICBcIm9wZW5fYWxsaWFuY2VfaGVscGVycy5jXCIsXG4gICAgXCJvcGVuX2FsbGlhbmNlX2hlbHBlcnMuaFwiLFxuICAgIFwicGh5LWM0NS5jXCIsXG4gICAgXCJwaHktY2Fwcy5oXCIsXG4gICAgXCJwaHktY29yZS5jXCIsXG4gICAgXCJwaHkuY1wiLFxuICAgIFwicGh5X2NhcHMuY1wiLFxuICAgIFwicGh5X2RldmljZS5jXCIsXG4gICAgXCJwaHlfbGVkX3RyaWdnZXJzLmNcIixcbiAgICBcInBoeV9saW5rX3RvcG9sb2d5LmNcIixcbiAgICBcInBoeV9wYWNrYWdlLmNcIixcbiAgICBcInBoeV9wb3J0LmNcIixcbiAgICBcInBoeWxpYi1pbnRlcm5hbC5oXCIsXG4gICAgXCJwaHlsaWIuaFwiLFxuICAgIFwicGh5bGluay5jXCIsXG4gICAgXCJxc2VtaS5jXCIsXG4gICAgXCJxdDIwMjUucnNcIixcbiAgICBcInJvY2tjaGlwLmNcIixcbiAgICBcInNmcC1idXMuY1wiLFxuICAgIFwic2ZwLmNcIixcbiAgICBcInNmcC5oXCIsXG4gICAgXCJzbXNjLmNcIixcbiAgICBcInN0ZTEwWHAuY1wiLFxuICAgIFwic3R1YnMuY1wiLFxuICAgIFwic3dwaHkuY1wiLFxuICAgIFwic3dwaHkuaFwiLFxuICAgIFwidGVyYW5ldGljcy5jXCIsXG4gICAgXCJ1UEQ2MDYyMC5jXCIsXG4gICAgXCJ2aXRlc3NlLmNcIixcbiAgICBcInhpbGlueF9nbWlpMnJnbWlpLmNcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogW1xuICAgIFwiYXF1YW50aWFcIixcbiAgICBcIm1lZGlhdGVrXCIsXG4gICAgXCJtc2NjXCIsXG4gICAgXCJxY29tXCIsXG4gICAgXCJyZWFsdGVrXCJcbiAgXVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMjM6MDM6MDAuNTUwNzA2MDg1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE2NzU4ODQ1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgY29kZTpcblxuKipBbmFseXppbmcgUG90ZW50aWFsIFBIWSBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHRoZSBtZW50aW9uIG9mIGBmaXhlZF9waHkuY2AgYW5kIGBzd3BoeS5jYCBpbW1lZGlhdGVseSBmbGFncyBteSBhdHRlbnRpb24uIEl0J3MgYSBjbGFzc2ljIHNjZW5hcmlvLCB1c3VhbGx5IGluZGljYXRpbmcgZWl0aGVyIGEgaGFyZC1jb2RlZCBwaHlzaWNhbCBsYXllciAoUEhZKSBvciBvbmUgaW1wbGVtZW50ZWQsIGF0IGxlYXN0IGluIHBhcnQsIGluIHNvZnR3YXJlLiBMZXQncyBzZWUuLi4gdGhlIG1vc3QgaW50ZXJlc3RpbmcgYW5kIGxpa2VseSBwbGFjZSB0byBzdGFydCBsb29raW5nIHRvIHVuZGVyc3RhbmQgdGhpcyBpcyB0aGUgc29mdHdhcmUgUEhZIGltcGxlbWVudGF0aW9uLiBTbywgbXkgaW5zdGluY3QgaXMgdG8gZGlnIGludG8gYHN3cGh5LmNgIGZpcnN0LiBUaGF0J3Mgd2hlcmUgdGhlIGNvcmUgbG9naWMgd2lsbCBsaWtlbHkgcmVzaWRlLCBhbmQgdW5kZXJzdGFuZGluZyAqdGhhdCogd2lsbCBwcm9iYWJseSBlbHVjaWRhdGUgdGhlIGxhcmdlciBhcmNoaXRlY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyODMyLCJPdXRwdXRUb2tlbnMiOjE2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIzOjAzOjAzLjcxODI5NjQxM1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY4ODI2MTc2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzd3BoeVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9hcnJvdyx4cnM3MDB4LnlhbWw9Mzg9ZXhhbXBsZXM6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9hcnJvdyx4cnM3MDB4LnlhbWwtNTItICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFxcXCJsYW4wXFxcIjtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9hcnJvdyx4cnM3MDB4LnlhbWw6NTM6ICAgICAgICAgICAgICAgICAgICBwaHktaGFuZGxlID0gXFx1MDAzY1xcdTAwMjZzd3BoeTBcXHUwMDNlO1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL2Fycm93LHhyczcwMHgueWFtbC01NC0gICAgICAgICAgICAgICAgICAgIHBoeS1tb2RlID0gXFxcInJnbWlpLWlkXFxcIjtcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL2Fycm93LHhyczcwMHgueWFtbC01OC0gICAgICAgICAgICAgICAgICAgIGxhYmVsID0gXFxcImxhbjFcXFwiO1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL2Fycm93LHhyczcwMHgueWFtbDo1OTogICAgICAgICAgICAgICAgICAgIHBoeS1oYW5kbGUgPSBcXHUwMDNjXFx1MDAyNnN3cGh5MVxcdTAwM2U7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvYXJyb3cseHJzNzAweC55YW1sLTYwLSAgICAgICAgICAgICAgICAgICAgcGh5LW1vZGUgPSBcXFwicmdtaWktaWRcXFwiO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS03MDQwLW1vY2hhYmluLmR0cz0zMTk9XFx0XFx0XFx0c3dwb3J0MTogZXRoZXJuZXQtcG9ydEAxIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHMtMzIxLVxcdFxcdFxcdFxcdGxhYmVsID0gXFxcImxhbjBcXFwiO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHM6MzIyOlxcdFxcdFxcdFxcdHBoeS1oYW5kbGUgPSBcXHUwMDNjXFx1MDAyNnN3cGh5MVxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS03MDQwLW1vY2hhYmluLmR0cy0zMjMtXFx0XFx0XFx0fTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHM9MzI1PVxcdFxcdFxcdHN3cG9ydDI6IGV0aGVybmV0LXBvcnRAMiB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTcwNDAtbW9jaGFiaW4uZHRzLTMyNy1cXHRcXHRcXHRcXHRsYWJlbCA9IFxcXCJsYW4xXFxcIjtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTcwNDAtbW9jaGFiaW4uZHRzOjMyODpcXHRcXHRcXHRcXHRwaHktaGFuZGxlID0gXFx1MDAzY1xcdTAwMjZzd3BoeTJcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHMtMzI5LVxcdFxcdFxcdH07XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTcwNDAtbW9jaGFiaW4uZHRzPTMzMT1cXHRcXHRcXHRzd3BvcnQzOiBldGhlcm5ldC1wb3J0QDMge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS03MDQwLW1vY2hhYmluLmR0cy0zMzMtXFx0XFx0XFx0XFx0bGFiZWwgPSBcXFwibGFuMlxcXCI7XFxuYXJjaC9hcm02NC9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS03MDQwLW1vY2hhYmluLmR0czozMzQ6XFx0XFx0XFx0XFx0cGh5LWhhbmRsZSA9IFxcdTAwM2NcXHUwMDI2c3dwaHkzXFx1MDAzZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTcwNDAtbW9jaGFiaW4uZHRzLTMzNS1cXHRcXHRcXHR9O1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS03MDQwLW1vY2hhYmluLmR0cz0zMzc9XFx0XFx0XFx0c3dwb3J0NDogZXRoZXJuZXQtcG9ydEA0IHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHMtMzM5LVxcdFxcdFxcdFxcdGxhYmVsID0gXFxcImxhbjNcXFwiO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHM6MzQwOlxcdFxcdFxcdFxcdHBoeS1oYW5kbGUgPSBcXHUwMDNjXFx1MDAyNnN3cGh5NFxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS03MDQwLW1vY2hhYmluLmR0cy0zNDEtXFx0XFx0XFx0fTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHM9MzUyPVxcdFxcdG1kaW8ge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS03MDQwLW1vY2hhYmluLmR0cy0zNTUtXFxuYXJjaC9hcm02NC9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS03MDQwLW1vY2hhYmluLmR0czozNTY6XFx0XFx0XFx0c3dwaHkxOiBldGhlcm5ldC1waHlAMTcge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHMtMzU3LVxcdFxcdFxcdFxcdHJlZyA9IFxcdTAwM2MxN1xcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTcwNDAtbW9jaGFiaW4uZHRzLTM1OS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTcwNDAtbW9jaGFiaW4uZHRzOjM2MDpcXHRcXHRcXHRzd3BoeTI6IGV0aGVybmV0LXBoeUAxOCB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS03MDQwLW1vY2hhYmluLmR0cy0zNjEtXFx0XFx0XFx0XFx0cmVnID0gXFx1MDAzYzE4XFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHMtMzYzLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHM6MzY0OlxcdFxcdFxcdHN3cGh5MzogZXRoZXJuZXQtcGh5QDE5IHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTcwNDAtbW9jaGFiaW4uZHRzLTM2NS1cXHRcXHRcXHRcXHRyZWcgPSBcXHUwMDNjMTlcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS03MDQwLW1vY2hhYmluLmR0cy0zNjctXFxuYXJjaC9hcm02NC9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS03MDQwLW1vY2hhYmluLmR0czozNjg6XFx0XFx0XFx0c3dwaHk0OiBldGhlcm5ldC1waHlAMjAge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHMtMzY5LVxcdFxcdFxcdFxcdHJlZyA9IFxcdTAwM2MyMFxcdTAwM2U7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYz0xOTkzPXN0YXRpYyBpbmxpbmUgaW50IGJjbV9lbmV0X3BvcnRfaXNfcmdtaWkoaW50IHBvcnRpZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTIwMDAtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmM6MjAwMTpzdGF0aWMgdm9pZCBzd3BoeV9wb2xsX3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTIwMDIte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jOjIwMDM6XFx0c3RydWN0IGJjbV9lbmV0X3ByaXYgKnByaXYgPSB0aW1lcl9jb250YWluZXJfb2YocHJpdiwgdCwgc3dwaHlfcG9sbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmMtMjAwNC1cXHR1bnNpZ25lZCBpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTIwOTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmM6MjA5MjpcXHRwcml2LVxcdTAwM2Vzd3BoeV9wb2xsLmV4cGlyZXMgPSBqaWZmaWVzICsgSFo7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmM6MjA5MzpcXHRhZGRfdGltZXIoXFx1MDAyNnByaXYtXFx1MDAzZXN3cGh5X3BvbGwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTIwOTQtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmM9MjA5OT1zdGF0aWMgaW50IGJjbV9lbmV0c3dfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmMtMjMwOC1cXHQvKiBzdGFydCBwaHkgcG9sbGluZyB0aW1lciAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jOjIzMDk6XFx0dGltZXJfc2V0dXAoXFx1MDAyNnByaXYtXFx1MDAzZXN3cGh5X3BvbGwsIHN3cGh5X3BvbGxfdGltZXIsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jOjIzMTA6XFx0bW9kX3RpbWVyKFxcdTAwMjZwcml2LVxcdTAwM2Vzd3BoeV9wb2xsLCBqaWZmaWVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYy0yMzExLVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmM9MjMzOT1zdGF0aWMgaW50IGJjbV9lbmV0c3dfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmMtMjM0Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYzoyMzQ3OlxcdHRpbWVyX2RlbGV0ZV9zeW5jKFxcdTAwMjZwcml2LVxcdTAwM2Vzd3BoeV9wb2xsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYy0yMzQ4LVxcdG5ldGlmX3N0b3BfcXVldWUoZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5oPTE5ND1zdHJ1Y3QgYmNtX2VuZXRfcHJpdiB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuaC0zNDEtXFx0LyogdXNlZCB0byBwb2xsIHN3aXRjaCBwb3J0IHN0YXRlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0Lmg6MzQyOlxcdHN0cnVjdCB0aW1lcl9saXN0IHN3cGh5X3BvbGw7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmgtMzQzLVxcdHNwaW5sb2NrX3QgZW5ldHN3X21kaW9fbG9jaztcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT0xMj1lbmRpZlxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS0xMy1cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MTQ6bGlicGh5LSQoQ09ORklHX1NXUEhZKVxcdFxcdCs9IHN3cGh5Lm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtMTUtbGlicGh5LSQoQ09ORklHX0xFRF9UUklHR0VSX1BIWSlcXHQrPSBwaHlfbGVkX3RyaWdnZXJzLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0yMC1cXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM6MjE6I2luY2x1ZGUgXFxcInN3cGh5LmhcXFwiXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTIyLVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jPTYxPXN0YXRpYyBpbnQgZml4ZWRfbWRpb19yZWFkKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfYWRkciwgaW50IHJlZ19udW0pXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtNzEtXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jOjcyOlxcdHJldHVybiBzd3BoeV9yZWFkX3JlZyhyZWdfbnVtLCBcXHUwMDI2ZnAtXFx1MDAzZXN0YXR1cyk7XFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTczLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYz0xMzE9c3RydWN0IHBoeV9kZXZpY2UgKmZpeGVkX3BoeV9yZWdpc3Rlcihjb25zdCBzdHJ1Y3QgZml4ZWRfcGh5X3N0YXR1cyAqc3RhdHVzLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTEzNy1cXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM6MTM4OlxcdHJldCA9IHN3cGh5X3ZhbGlkYXRlX3N0YXRlKHN0YXR1cyk7XFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTEzOS1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQtI2luY2x1ZGUgXFxcInNmcC5oXFxcIlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjU6I2luY2x1ZGUgXFxcInN3cGh5LmhcXFwiXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzM2MD1zdGF0aWMgaW50IHBoeWxpbmtfbWlpX2VtdWxfcmVhZCh1bnNpZ25lZCBpbnQgcmVnLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzcyLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzM3MzpcXHR2YWwgPSBzd3BoeV9yZWFkX3JlZyhyZWcsIFxcdTAwMjZmcyk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzc0LVxcdGlmIChyZWcgPT0gTUlJX0JNU1IpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jLTE2LVxcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jOjE3OiNpbmNsdWRlIFxcXCJzd3BoeS5oXFxcIlxcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jLTE4LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmM9NTY9c3RhdGljIGNvbnN0IHN0cnVjdCBzd21paV9yZWdzIGR1cGxleFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmMtNzAtXFxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmM6NzE6c3RhdGljIGludCBzd3BoeV9kZWNvZGVfc3BlZWQoaW50IHNwZWVkKVxcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jLTcyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jLTg1LS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jOjg2OiAqIHN3cGh5X3ZhbGlkYXRlX3N0YXRlIC0gdmFsaWRhdGUgdGhlIHNvZnR3YXJlIHBoeSBzdGF0dXNcXG5kcml2ZXJzL25ldC9waHkvc3dwaHkuYy04Ny0gKiBAc3RhdGU6IHNvZnR3YXJlIHBoeSBzdGF0dXNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jLTkyLSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jOjkzOmludCBzd3BoeV92YWxpZGF0ZV9zdGF0ZShjb25zdCBzdHJ1Y3QgZml4ZWRfcGh5X3N0YXR1cyAqc3RhdGUpXFxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmMtOTQte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmMtOTctXFx0aWYgKHN0YXRlLVxcdTAwM2VsaW5rKSB7XFxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmM6OTg6XFx0XFx0ZXJyID0gc3dwaHlfZGVjb2RlX3NwZWVkKHN0YXRlLVxcdTAwM2VzcGVlZCk7XFxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmMtOTktXFx0XFx0aWYgKGVyciBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL25ldC9waHkvc3dwaHkuYzoxMDA6XFx0XFx0XFx0cHJfd2FybihcXFwic3dwaHk6IHVua25vd24gc3BlZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jLTEwMS1cXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jLTEwNS19XFxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmM6MTA2OkVYUE9SVF9TWU1CT0xfR1BMKHN3cGh5X3ZhbGlkYXRlX3N0YXRlKTtcXG5kcml2ZXJzL25ldC9waHkvc3dwaHkuYy0xMDctXFxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmMtMTA4LS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jOjEwOTogKiBzd3BoeV9yZWFkX3JlZyAtIHJldHVybiBhIE1JSSByZWdpc3RlciBmcm9tIHRoZSBmaXhlZCBwaHkgc3RhdGVcXG5kcml2ZXJzL25ldC9waHkvc3dwaHkuYy0xMTAtICogQHJlZzogTUlJIHJlZ2lzdGVyXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvc3dwaHkuYy0xMTQtICovXFxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmM6MTE1OmludCBzd3BoeV9yZWFkX3JlZyhpbnQgcmVnLCBjb25zdCBzdHJ1Y3QgZml4ZWRfcGh5X3N0YXR1cyAqc3RhdGUpXFxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmMtMTE2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jLTEyNS1cXG5kcml2ZXJzL25ldC9waHkvc3dwaHkuYzoxMjY6XFx0c3BlZWRfaW5kZXggPSBzd3BoeV9kZWNvZGVfc3BlZWQoc3RhdGUtXFx1MDAzZXNwZWVkKTtcXG5kcml2ZXJzL25ldC9waHkvc3dwaHkuYy0xMjctXFx0aWYgKFdBUk5fT04oc3BlZWRfaW5kZXggXFx1MDAzYyAwKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jLTE3NC19XFxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmM6MTc1OkVYUE9SVF9TWU1CT0xfR1BMKHN3cGh5X3JlYWRfcmVnKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5oPTU9c3RydWN0IGZpeGVkX3BoeV9zdGF0dXM7XFxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmgtNi1cXG5kcml2ZXJzL25ldC9waHkvc3dwaHkuaDo3OmludCBzd3BoeV92YWxpZGF0ZV9zdGF0ZShjb25zdCBzdHJ1Y3QgZml4ZWRfcGh5X3N0YXR1cyAqc3RhdGUpO1xcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5oOjg6aW50IHN3cGh5X3JlYWRfcmVnKGludCByZWcsIGNvbnN0IHN0cnVjdCBmaXhlZF9waHlfc3RhdHVzICpzdGF0ZSk7XFxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmgtOS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMjM6MDM6MDUuNDA2NTcxNzNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzU2Mzk0MTIyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDdXJyZW50IExpbmUgb2YgUmVhc29uaW5nKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGhvdyB0byBpbnRlZ3JhdGUgYSByZWFsIFBIWSBkcml2ZXIsIHNwZWNpZmljYWxseSBgZGFwODIxMXJgLCBpbnRvIGEgdGVzdGluZyBlbnZpcm9ubWVudCwgc3BlY2lmaWNhbGx5IGEgdmlydHVhbCBNRElPIGJ1cy4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyBhYm91dCBgc3dwaHlgIC0gY2xlYXJseSwgc29mdHdhcmUgUEhZcyAtIGJ1dCBJJ20gbG9va2luZyBmb3Igc29tZXRoaW5nIG1vcmUgY29uY3JldGUuIENhbiBJICppbmplY3QqIGBkYXA4MjExcmAgaW50byBhIHZpcnR1YWwgTURJTyBidXM/XG5cblRoZSBuZXh0IGRpcmVjdGlvbiwgYW5kIHByb2JhYmx5IHRoZSBtb3N0IGZydWl0ZnVsLCBpcyB0byBjb25zaWRlciBob3cgbmV0d29yayBkZXZpY2VzIGFyZSBlbXVsYXRlZCB3aXRoaW4gUUVNVS4gU3BlY2lmaWNhbGx5LCBlbXVsYXRlZCBuZXR3b3JrIGRldmljZXMgc3VjaCBhcyBgbWFjYmAsIGBmZWNgLCBhbmQgb3RoZXJzLCBmcmVxdWVudGx5IGNvbWUgd2l0aCBhbiBNRElPIGJ1cyBhcyBwYXJ0IG9mIHRoZSBlbXVsYXRlZCBoYXJkd2FyZS4gUUVNVSBlbXVsYXRlcyBhIHdpZGUgYXJyYXkgb2YgZGV2aWNlcyBsaWtlIGBlMTAwMGAsIGBydGw4MTM5YCwgYHZpcnRpby1uZXRgLCBgcGNuZXRgLCBgbmUya19wY2lgLCBgdHVsaXBgLCBhbmQgYHZteG5ldDNgLiAgSXQgb2NjdXJzIHRvIG1lLCBzb21lIG9mIHRoZXNlIG1pZ2h0IGFjdHVhbGx5ICpoYXZlKiBhbiBNRElPIGJ1cyBhY2Nlc3NpYmxlIGluIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50LiBJdCdzIGFsc28gd29ydGggbm90aW5nIFFFTVUgZW11bGF0ZXMgYGlteC5mZWNgIHdoaWNoIGRlZmluaXRlbHkgaGFzIGFuIE1ESU8gYnVzLlxuXG5Ib3dldmVyLCBTeXprYWxsZXIsIHdoaWNoIEknbSBmYW1pbGlhciB3aXRoLCBwcmVkb21pbmFudGx5IHJ1bnMgb24gYHg4Nl82NGAgYW5kIGxlYW5zIHRvd2FyZHMgYHZpcnRpby1uZXRgIG9yIGBlMTAwMGAgZm9yIG5ldHdvcmsgdGVzdGluZy4gU3RpbGwsIHN5emthbGxlciBoYXMgdGhlIGZsZXhpYmlsaXR5IHRvIHVzZSBgdmttc2AgZm9yIERSTSwgYG1hYzgwMjExX2h3c2ltYCBmb3Igd2lmaSwgYW5kIGB2aGNpYCBmb3IgVVNCLiAgVGhpcyBpcyBsZWFkaW5nIG1lIHRvIGNvbnNpZGVyOiBJcyB0aGVyZSBhIHdheSB0byBsZXZlcmFnZSBVU0IgZm9yIHByb2JpbmcgUEhZIGRyaXZlcnM/XG5cbkFoLCB0aGF0J3MgaXQhIFVTQi10by1FdGhlcm5ldCBhZGFwdGVycywgdGhleSB1c2UgUEhZcyEgYHNtc2M5NXh4YCB1c2VzIGVpdGhlciBhbiBpbnRlcm5hbCBvciBleHRlcm5hbCBQSFkuIEFsc28sIGBhc2l4YCwgYGF4ODgxNzlfMTc4YWAsIGFuZCBgcjgxNTJgIGFyZSBvdGhlciBleGFtcGxlcyBvZiBVU0IgZXRoZXJuZXQgZHJpdmVycyB0aGF0IHV0aWxpemUgUEhZcy5cblxuVGhlcmVmb3JlLCB0aGUga2V5IGxpZXMgaW4gaG93IHN5emthbGxlciBhcHByb2FjaGVzIFVTQiBmdXp6aW5nLiBJZiBJIGNhbiBjcmVhdGUgYW4gZW11bGF0ZWQgVVNCIGRldmljZSB0aGF0IHByZXNlbnRzIGFuIE1ESU8gYnVzIGFuZCAqcmVwb3J0cyogdGhlIFBIWSBJRCBvZiBgZGFwODIxMXJgICh3aGljaCBpcyBgMHgwMDA4MDExQmApLCBJIGNvdWxkIHBvdGVudGlhbGx5IGNyZWF0ZSBhIHBlcmZlY3QgdGVzdGluZyBzZXR1cC4gVGhlIG5leHQgdGhpbmcgSSBuZWVkIHRvIGRvIGlzIHRvIGRldGVybWluZSBpZiBhbnkgb2YgdGhlc2UgVVNCIGV0aGVybmV0IGRyaXZlcnMgYXJlIHVzaW5nIHRoZSBnZW5lcmljIFBIWSBmcmFtZXdvcmssIHBoeWxpYi4gVGhpcyB3aWxsIGdpdmUgbWUgYSBmb290aG9sZCBpbiBob3cgdG8gcHJvYmUgYW5kIGNvbnRyb2wgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2Nzc0LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzc1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIzOjAzOjEyLjk3MDUxNTcyM1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk2MTgwOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpb2J1c19yZWdpc3RlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC91c2JcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTY2OT1zdGF0aWMgaW50IGF4ODg3NzJfaW5pdF9tZGlvKHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy02ODYtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjY4NzpcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKHByaXYtXFx1MDAzZW1kaW8pO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy02ODgtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM9NjE9c3RhdGljIGludCBheDg4MTcyYV9pbml0X21kaW8oc3RydWN0IHVzYm5ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtNzktXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM6ODA6XFx0cmV0ID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVxcdTAwM2VtZGlvKTtcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy04MS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTIwOTE9c3RhdGljIGludCBsYW43OHh4X21kaW9faW5pdChzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjEyMS1cXHRub2RlID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUoZGV2LVxcdTAwM2V1ZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSwgXFxcIm1kaW9cXFwiKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjIxMjI6XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYtXFx1MDAzZW1kaW9idXMsIG5vZGUpO1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjEyMy1cXHRvZl9ub2RlX3B1dChub2RlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jPTExNDc9c3RhdGljIGludCBzbXNjOTV4eF9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYy0xMjQxLVxcbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jOjEyNDI6XFx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihwZGF0YS1cXHUwMDNlbWRpb2J1cyk7XFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMTI0My1cXHRpZiAocmV0KSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIzOjAzOjEzLjAzMDEzOTU0MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3OTI1NjA4OTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlYWNoaW5nIHRoZSBkYXA4MjExciBQSFkgRHJpdmVyIHZpYSBVU0IgRnV6emluZyoqXG5cbk9rYXksIHRoaXMgaXMgZXhjZWxsZW50ISBJdCBjbGlja3M6IHRoZSBgc21zYzk1eHhgLCBgbGFuNzh4eGAsIGBheDg4MTcyYWAsIGFuZCBgYXNpeF9kZXZpY2VzYCBhbGwgcmVnaXN0ZXIgYW4gTURJTyBidXMuIEFuZCBzeXprYWxsZXIncyBVU0IgZGV2aWNlIGVtdWxhdGlvbiBjYW4gKmludGVyY2VwdCogdGhvc2UgTURJTyByZWFkcy4gSWYgdGhlIGVtdWxhdGVkIFVTQiBkZXZpY2UgcmVzcG9uZHMgdG8gTURJTyByZWFkIHJlcXVlc3RzIGF0IHJlZ2lzdGVycyAyIGFuZCAzIHdpdGggdGhlIHNwZWNpZmljIFBIWSBJRCB2YWx1ZXMgYDB4MDAwOGAgYW5kIGAweDAxMUJgLCB0aGUga2VybmVsIHdpbGwgbG9hZCB0aGUgYGRhcDgyMTFyYCBQSFkgZHJpdmVyISBCb29tLiBXZSd2ZSBnb3QgYSByZWFjaGFibGUgZHJpdmVyIGhlcmUhIFRoaXMgbWVhbnMgd2UgY2FuIHJlYWNoIHRoZSBkcml2ZXIgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB2aWEgVVNCIGZ1enppbmcgdGhhdCBzeXprYWxsZXIgYWxyZWFkeSBoYXMgdGhyb3VnaCBgZHVtbXlfaGNkYCBhbmQgYHN5el91c2JfY29ubmVjdGAuXG5cbkFscmlnaHQsIHRpbWUgdG8gcmV2aWV3IHRoZSBwYXRjaCBhZ2FpbiB3aXRoIHRoaXMgaW4gbWluZC4gSXQncyBhZGRpbmcgdGhlIGBkYXA4MjExcmAgUEhZIGRyaXZlciwgbW9kaWZ5aW5nIHRoZSBgS2NvbmZpZ2AgYW5kIGBNYWtlZmlsZWAuIFRoZSBhY3R1YWwgZHJpdmVyIGltcGxlbWVudHMgYGRhcDgyMTFyX2NvbmZpZ19pbml0YCwgYGRhcDgyMTFyX3JlYWRfZXh0YCwgYW5kIGBkYXA4MjExcl9tb2RpZnlfZXh0YC4gVGhlIHBhdGNoIGlzIGZ1bmN0aW9uYWwgYW5kIGRlZmluaXRlbHkgZnV6emFibGUuXG5cbk5vdywgd2hhdCBhcmUgdGhlIGtleSBmdW5jdGlvbnMgdG8gKnJlYWxseSogZm9jdXMgb24gZHVyaW5nIGZ1enppbmc/IExldCdzIHpvb20gaW46IGBkYXA4MjExcl9jb25maWdfaW5pdGAsIGBkYXA4MjExcl9yZWFkX2V4dGAsIGFuZCBgZGFwODIxMXJfbW9kaWZ5X2V4dGAuXG5cbldhaXQgYSBzZWNvbmQuIEhhbmcgb24uLi4gYGRhcDgyMTFyX3JlYWRfZXh0YCBhbmQgYGRhcDgyMTFyX21vZGlmeV9leHRgIGFyZSAqc3RhdGljKiBoZWxwZXIgZnVuY3Rpb25zLiBUaGUgb25seSB0aGluZyBleHBvcnRlZCBhbmQgKnJlZ2lzdGVyZWQqIGlzIGBkYXA4MjExcl9jb25maWdfaW5pdGAuIFRoZSBvdGhlciBmdW5jdGlvbnMgYXJlIGp1c3QgYm9nLXN0YW5kYXJkIGBnZW5waHlfKmAgZnVuY3Rpb25zLCB3aGljaCBhcmUgbGlrZWx5IGFscmVhZHkgd2VsbC1mdXp6ZWQgYW5kIG5vdCByZWFsbHkgc3BlY2lmaWMgdG8gdGhpcyBwYXRjaC4gU28sIG15IGBGb2N1c1N5bWJvbHNgIGVudHJ5IHNob3VsZCBqdXN0IGJlOlxuLSBgZGFwODIxMXJfY29uZmlnX2luaXRgXG4tIGBkYXA4MjExcl9yZWFkX2V4dGBcbi0gYGRhcDgyMTFyX21vZGlmeV9leHRgXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBsZXQgbWUgY2hlY2sgZm9yIGFueSBvdGhlciBmdW5jdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MjY3LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIzOjAzOjIwLjk1NTc1MTU3OFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE1ODAzMTAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5zdGF0aWMuKmRhcDgyMTFyX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvZGFwODIxMXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYy00Ny1cXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYzo0ODpzdGF0aWMgY29uc3QgaW50IGRhcDgyMTFyX2ludGVybmFsX2RlbGF5W10gPSB7MCwgMTUwLCAzMDAsIDQ1MCwgNjAwLCA3NTAsIDkwMCxcXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYy00OS1cXHRcXHRcXHRcXHRcXHQgICAgICAxMDUwLCAxMjAwLCAxMzUwLCAxNTAwLCAxNjUwLCAxODAwLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMtNjMtICovXFxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmM6NjQ6c3RhdGljIGludCBkYXA4MjExcl9yZWFkX2V4dChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnKVxcbmRyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jLTY1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jLTkxLSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jOjkyOnN0YXRpYyBpbnQgZGFwODIxMXJfbW9kaWZ5X2V4dChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnLCB1MTYgbWFzaywgdTE2IHNldClcXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYy05My17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYy0xMTctICovXFxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmM6MTE4OnN0YXRpYyBpbnQgZGFwODIxMXJfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYy0xMTkte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMtMTY3LVxcbmRyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jOjE2ODpzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZGFwODIxMXJfZHJpdmVyW10gPSB7XFxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMtMTY5LVxcdHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jPTE4ND1NT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMtMTg1LVxcbmRyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jOjE4NjpzdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIGRhcDgyMTFyX3RiW10gPSB7XFxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMtMTg3LVxcdHsgREFQODIxMVJfUEhZX0lELCBEQVA4MjExUl9QSFlfSURfTUFTSyB9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMzowMzoyMS4zNzE1NjQwNVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDAyMjkzMTk3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipDb25maWd1cmF0aW9uIEFuYWx5c2lzIGZvciB0aGUgREFQODIxMVIgUEhZIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgREFQODIxMVIgUEhZIGRyaXZlciBjb2RlLCBzcGVjaWZpY2FsbHkgdGhlIGZ1bmN0aW9ucyBgZGFwODIxMXJfcmVhZF9leHRgLCBgZGFwODIxMXJfbW9kaWZ5X2V4dGAsIGFuZCBgZGFwODIxMXJfY29uZmlnX2luaXRgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB3aGF0IGNvbmZpZ3VyYXRpb25zIGFyZSBhY3R1YWxseSAqcmVxdWlyZWQqLiBUaGUgb2J2aW91cyBvbmUgaXMgYENPTkZJR19EQVA4MjExUl9QSFlgLiBCdXQgd2FpdCwgdGhhdCBkZXBlbmRzIG9uIGBPRmAsIHJpZ2h0PyBJIG5lZWQgdG8gY29uZmlybSB0aGF0LiBMZXQgbWUgcXVpY2tseSBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L3BoeS9LY29uZmlnYCBmaWxlLi4uIFllcCwgdGhlcmUgaXQgaXM6IGBjb25maWcgREFQODIxMVJfUEhZIC4uLiBkZXBlbmRzIG9uIE9GYC4gT2theSwgc28gd2UgZGVmaW5pdGVseSBuZWVkIGJvdGggYENPTkZJR19EQVA4MjExUl9QSFlgIGFuZCBgQ09ORklHX09GYC4gYENPTkZJR19PRmAgaXMgcHJldHR5IGNvbW1vbiwgc28gaXQncyBwcm9iYWJseSBhbHJlYWR5IGVuYWJsZWQgb24gbW9zdCBhcmNoaXRlY3R1cmVzLCBidXQgd2Ugc3RpbGwgbmVlZCB0byBleHBsaWNpdGx5IHNldCBgREFQODIxMVJfUEhZYC4gQW55dGhpbmcgZWxzZT8gTm8sIHRoYXQgc2VlbXMgdG8gYmUgaXQgZm9yIHRoZSBleHBsaWNpdCBjb25maWdzLlxuXG5Ob3csIGEgY3JpdGljYWwgdGhvdWdodDogaG93IHJvYnVzdCBpcyBgZGFwODIxMXJfY29uZmlnX2luaXRgIGlmIHRoZSBkZXZpY2UgdHJlZSBpcyAqbm90KiB1c2VkPyBTcGVjaWZpY2FsbHksIHdoYXQgaGFwcGVucyBpZiBgT0ZgIGlzbid0IGFjdGl2ZSwgb3IsIG1vcmUgc3VidGx5LCBpZiB0aGUgZGV2aWNlIGlzbid0IGluc3RhbnRpYXRlZCBmcm9tIHRoZSBEVCAoZS5nLiwgY29ubmVjdGVkIHZpYSBhIFVTQiBNRElPIGJ1cyBhbmQgZG9lc24ndCBoYXZlIGFuIE9GIG5vZGUpPyBMZXQncyBkaXZlIGludG8gdGhlIGNvZGUuLi4gQWgsIEkgc2VlOiBgcGh5ZGV2LVx1MDAzZW1kaW8uZGV2Lm9mX25vZGVgIGNhbiBiZSBOVUxMIGluIHRob3NlIHNjZW5hcmlvcy4gVGhpcyB0cmlnZ2VycyBhIGZldyBjaGVja3MgdXNpbmcgYG9mX3Byb3BlcnR5X3JlYWRfYm9vbGAgYW5kIGBwaHlfZ2V0X2ludGVybmFsX2RlbGF5YC4gRXhjZWxsZW50ISBgb2ZfcHJvcGVydHlfcmVhZF9ib29sYCBoYW5kbGVzIGEgTlVMTCBgbnBgIGdyYWNlZnVsbHksIHJldHVybmluZyBmYWxzZS4gQW5kIGBwaHlfZ2V0X2ludGVybmFsX2RlbGF5YCBhbHNvIGhhbmRsZXMgYSBOVUxMIGBvZl9ub2RlYCBncmFjZWZ1bGx5IHJldHVybmluZyBhbiBlcnJvciBjb2RlLiBUaGlzIG1lYW5zIHRoZSBkcml2ZXIgKndvbid0KiBjcmFzaC4gSXQnbGwgaW5zdGVhZCBleGVjdXRlIGZhbGxiYWNrIHBhdGhzLiBTcGVjaWZpY2FsbHksIGl0IHVzZXMgYHBoeV9nZXRfaW50ZXJuYWxfZGVsYXlgIHdoaWNoLCBpZiBpdCBmYWlscywgZmFsbHMgYmFjayB0byBhIGRlZmF1bHQgdmFsdWUsIG9yIHplcm8uXG5cbmBgYGNcblx0aW50ZXJuYWxfZGVsYXkgPSBwaHlfZ2V0X2ludGVybmFsX2RlbGF5KHBoeWRldiwgZGFwODIxMXJfaW50ZXJuYWxfZGVsYXksXG5cdFx0XHRcdFx0XHREQVA4MjExUl9ERUxBWV9TSVpFLCB0cnVlKTtcblx0aWYgKGludGVybmFsX2RlbGF5IFx1MDAzYyAwKSB7XG5cdFx0aWYgKHBoeWRldi1cdTAwM2VpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJKVxuXHRcdFx0aW50ZXJuYWxfZGVsYXkgPSAwO1xuXHRcdGVsc2Vcblx0XHRcdGludGVybmFsX2RlbGF5ID0gREFQODIxMVJfREVGQVVMVF9ERUxfU0VMO1xuXHR9XG5gYGBcblxuVGhpcyBpcyAqZXhhY3RseSogd2hhdCBJIHdhbnQgdG8gc2VlLCBhbmQgaXQgbWVhbnMgdGhlIGRyaXZlciBpcyByb2J1c3QgYW5kIGZ1enphYmxlIGV2ZW4gaW4gdGhlIGFic2VuY2Ugb2YgYSBkZXZpY2UgdHJlZSBub2RlLiBJIG5lZWQgdG8gdmVyaWZ5IGBwaHlfZ2V0X2ludGVybmFsX2RlbGF5YCdzIGJlaGF2aW9yIHdpdGggYSBOVUxMIGBvZl9ub2RlYCwgYnV0IEkgYW0gbm90IGV4cGVjdGluZyBhbnkgc3VycHJpc2VzLiBPdmVyYWxsLCB0aGlzIGNvZGUgbG9va3Mgd2VsbC13cml0dGVuLCB3aXRoIGdvb2QgZGVmZW5zaXZlIHByb2dyYW1taW5nIGFnYWluc3QgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZSBkZXZpY2UgdHJlZSBub3QgYmVpbmcgcHJlc2VudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk5NjYsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMjM6MDM6MzEuMzk0NDk4Njc1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MzkzNzU5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlfZ2V0X2ludGVybmFsX2RlbGF5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmM9MTE4PXN0YXRpYyBpbnQgZGFwODIxMXJfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jLTEyNy1cXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYzoxMjg6XFx0aW50ZXJuYWxfZGVsYXkgPSBwaHlfZ2V0X2ludGVybmFsX2RlbGF5KHBoeWRldiwgZGFwODIxMXJfaW50ZXJuYWxfZGVsYXksXFxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMtMTI5LVxcdFxcdFxcdFxcdFxcdFxcdERBUDgyMTFSX0RFTEFZX1NJWkUsIHRydWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMtMTM4LVxcbmRyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jOjEzOTpcXHRpbnRlcm5hbF9kZWxheSA9IHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkocGh5ZGV2LCBkYXA4MjExcl9pbnRlcm5hbF9kZWxheSxcXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYy0xNDAtXFx0XFx0XFx0XFx0XFx0XFx0REFQODIxMVJfREVMQVlfU0laRSwgZmFsc2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYz01MTg9c3RhdGljIGludCBkcDgzODIyX2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jLTU1Mi1cXHRpZiAocGh5X2ludGVyZmFjZV9pc19yZ21paShwaHlkZXYpKSB7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYzo1NTM6XFx0XFx0cnhfaW50X2RlbGF5ID0gcGh5X2dldF9pbnRlcm5hbF9kZWxheShwaHlkZXYsIE5VTEwsIDAsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtNTU0LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYy01NTgtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYzo1NTk6XFx0XFx0dHhfaW50X2RlbGF5ID0gcGh5X2dldF9pbnRlcm5hbF9kZWxheShwaHlkZXYsIE5VTEwsIDAsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jLTU2MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM9NTQyPXN0YXRpYyBpbnQgZHA4Mzg2OV9vZl9pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTU5OS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jOjYwMDpcXHRkcDgzODY5LVxcdTAwM2VyeF9pbnRfZGVsYXkgPSBwaHlfZ2V0X2ludGVybmFsX2RlbGF5KHBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTYwMS1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgXFx1MDAyNmRwODM4NjlfaW50ZXJuYWxfZGVsYXlbMF0sXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTYwNS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jOjYwNjpcXHRkcDgzODY5LVxcdTAwM2V0eF9pbnRfZGVsYXkgPSBwaHlfZ2V0X2ludGVybmFsX2RlbGF5KHBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTYwNy1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgXFx1MDAyNmRwODM4NjlfaW50ZXJuYWxfZGVsYXlbMF0sXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jPTE4ND1zdGF0aWMgaW50IHh3YXlfZ3BoeV9yZ21paV9pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTIxNy1cXHQgICAgcGh5ZGV2LVxcdTAwM2VpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1JYSUQpIHtcXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jOjIxODpcXHRcXHRpbnRfZGVsYXkgPSBwaHlfZ2V0X2ludGVybmFsX2RlbGF5KHBoeWRldiwgeHdheV9pbnRlcm5hbF9kZWxheSxcXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTIxOS1cXHRcXHRcXHRcXHRcXHRcXHQgICBkZWxheV9zaXplLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtMjI5LVxcdCAgICBwaHlkZXYtXFx1MDAzZWludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfVFhJRCkge1xcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6MjMwOlxcdFxcdGludF9kZWxheSA9IHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkocGh5ZGV2LCB4d2F5X2ludGVybmFsX2RlbGF5LFxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtMjMxLVxcdFxcdFxcdFxcdFxcdFxcdCAgIGRlbGF5X3NpemUsIGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jPTU0Nj1zdGF0aWMgaW50IHZzYzg1eHhfdXBkYXRlX3JnbWlpX2NudGwoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTMyIHJnbWlpX2NudGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYy01NzAtXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmM6NTcxOlxcdHJ4X2RlbGF5ID0gcGh5X2dldF9pbnRlcm5hbF9kZWxheShwaHlkZXYsIHZzYzg1eHhfaW50ZXJuYWxfZGVsYXksXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtNTcyLVxcdFxcdFxcdFxcdFxcdCAgZGVsYXlfc2l6ZSwgdHJ1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYy01ODAtXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmM6NTgxOlxcdHR4X2RlbGF5ID0gcGh5X2dldF9pbnRlcm5hbF9kZWxheShwaHlkZXYsIHZzYzg1eHhfaW50ZXJuYWxfZGVsYXksXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtNTgyLVxcdFxcdFxcdFxcdFxcdCAgZGVsYXlfc2l6ZSwgZmFsc2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0zMDgyPXN0YXRpYyBpbnQgcGh5X2dldF91MzJfcHJvcGVydHkoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBjaGFyICpuYW1lLCB1MzIgKnZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzA4OC0vKipcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjMwODk6ICogcGh5X2dldF9pbnRlcm5hbF9kZWxheSAtIHJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBpbnRlcm5hbCBkZWxheVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzA5MC0gKiBAcGh5ZGV2OiBwaHlfZGV2aWNlIHN0cnVjdFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zMTAyLSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MzEwMzpzMzIgcGh5X2dldF9pbnRlcm5hbF9kZWxheShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBjb25zdCBpbnQgKmRlbGF5X3ZhbHVlcyxcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTMxMDQtXFx0XFx0XFx0ICAgaW50IHNpemUsIGJvb2wgaXNfcngpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTMxNjQtfVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MzE2NTpFWFBPUlRfU1lNQk9MKHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzE2Ni1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMjM6MDM6MzEuNDY4NDQ3NTU0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNzEyODkwMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gcGh5X2dldF9pbnRlcm5hbF9kZWxheSoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IGFuZCByZWFsbHkgdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIHdpdGggYHBoeV9nZXRfaW50ZXJuYWxfZGVsYXlgLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIHNwZWNpZmljcyBvZiAqdGhpcyogaW1wbGVtZW50YXRpb24uIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdGhlIG51YW5jZXMgaGVyZSwgZ2l2ZW4gdGhlIGxpa2VseSBjb250ZXh0LXNwZWNpZmljIG5hdHVyZS4gSSdsbCBuZWVkIHRvIGxvb2sgYXQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBzcGVjaWZpYyBQSFkgdHlwZSB3ZSdyZSBkZWFsaW5nIHdpdGgsIGFuZCB3aGF0IGFzc3VtcHRpb25zIGl0J3MgbWFraW5nIGFib3V0IHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLiBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBnb3RjaGFzIG9yIG9wdGltaXphdGlvbnMgSSBzaG91bGQgYmUgYXdhcmUgb2YgaW1tZWRpYXRlbHk/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgZGVsYXkgY2FsY3VsYXRpb24gdGhvcm91Z2hseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI4NDEsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMzowMzozNC42Mzk3MzkyNDJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA4NDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzEwMyxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzEwMzpcXHRzMzIgcGh5X2dldF9pbnRlcm5hbF9kZWxheShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBjb25zdCBpbnQgKmRlbGF5X3ZhbHVlcyxcXG4zMTA0OlxcdFxcdFxcdFxcdCAgIGludCBzaXplLCBib29sIGlzX3J4KVxcbjMxMDU6XFx0e1xcbjMxMDY6XFx0XFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5kZXY7XFxuMzEwNzpcXHRcXHRpbnQgaSwgcmV0O1xcbjMxMDg6XFx0XFx0dTMyIGRlbGF5O1xcbjMxMDk6XFx0XFxuMzExMDpcXHRcXHRpZiAoaXNfcngpIHtcXG4zMTExOlxcdFxcdFxcdHJldCA9IHBoeV9nZXRfdTMyX3Byb3BlcnR5KGRldiwgXFxcInJ4LWludGVybmFsLWRlbGF5LXBzXFxcIiwgXFx1MDAyNmRlbGF5KTtcXG4zMTEyOlxcdFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwIFxcdTAwMjZcXHUwMDI2IHNpemUgPT0gMCkge1xcbjMxMTM6XFx0XFx0XFx0XFx0aWYgKHBoeWRldi1cXHUwMDNlaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9JRCB8fFxcbjMxMTQ6XFx0XFx0XFx0XFx0ICAgIHBoeWRldi1cXHUwMDNlaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9SWElEKVxcbjMxMTU6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIDE7XFxuMzExNjpcXHRcXHRcXHRcXHRlbHNlXFxuMzExNzpcXHRcXHRcXHRcXHRcXHRyZXR1cm4gMDtcXG4zMTE4OlxcdFxcdFxcdH1cXG4zMTE5OlxcdFxcbjMxMjA6XFx0XFx0fSBlbHNlIHtcXG4zMTIxOlxcdFxcdFxcdHJldCA9IHBoeV9nZXRfdTMyX3Byb3BlcnR5KGRldiwgXFxcInR4LWludGVybmFsLWRlbGF5LXBzXFxcIiwgXFx1MDAyNmRlbGF5KTtcXG4zMTIyOlxcdFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwIFxcdTAwMjZcXHUwMDI2IHNpemUgPT0gMCkge1xcbjMxMjM6XFx0XFx0XFx0XFx0aWYgKHBoeWRldi1cXHUwMDNlaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9JRCB8fFxcbjMxMjQ6XFx0XFx0XFx0XFx0ICAgIHBoeWRldi1cXHUwMDNlaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9UWElEKVxcbjMxMjU6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIDE7XFxuMzEyNjpcXHRcXHRcXHRcXHRlbHNlXFxuMzEyNzpcXHRcXHRcXHRcXHRcXHRyZXR1cm4gMDtcXG4zMTI4OlxcdFxcdFxcdH1cXG4zMTI5OlxcdFxcdH1cXG4zMTMwOlxcdFxcbjMxMzE6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuMzEzMjpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjMxMzM6XFx0XFxuMzEzNDpcXHRcXHRpZiAoc2l6ZSA9PSAwKVxcbjMxMzU6XFx0XFx0XFx0cmV0dXJuIGRlbGF5O1xcbjMxMzY6XFx0XFxuMzEzNzpcXHRcXHRpZiAoZGVsYXkgXFx1MDAzYyBkZWxheV92YWx1ZXNbMF0gfHwgZGVsYXkgXFx1MDAzZSBkZWxheV92YWx1ZXNbc2l6ZSAtIDFdKSB7XFxuMzEzODpcXHRcXHRcXHRwaHlkZXZfZXJyKHBoeWRldiwgXFxcIkRlbGF5ICVkIGlzIG91dCBvZiByYW5nZVxcXFxuXFxcIiwgZGVsYXkpO1xcbjMxMzk6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuMzE0MDpcXHRcXHR9XFxuMzE0MTpcXHRcXG4zMTQyOlxcdFxcdGlmIChkZWxheSA9PSBkZWxheV92YWx1ZXNbMF0pXFxuMzE0MzpcXHRcXHRcXHRyZXR1cm4gMDtcXG4zMTQ0OlxcdFxcbjMxNDU6XFx0XFx0Zm9yIChpID0gMTsgaSBcXHUwMDNjIHNpemU7IGkrKykge1xcbjMxNDY6XFx0XFx0XFx0aWYgKGRlbGF5ID09IGRlbGF5X3ZhbHVlc1tpXSlcXG4zMTQ3OlxcdFxcdFxcdFxcdHJldHVybiBpO1xcbjMxNDg6XFx0XFxuMzE0OTpcXHRcXHRcXHQvKiBGaW5kIGFuIGFwcHJveGltYXRlIGluZGV4IGJ5IGxvb2tpbmcgdXAgdGhlIHRhYmxlICovXFxuMzE1MDpcXHRcXHRcXHRpZiAoZGVsYXkgXFx1MDAzZSBkZWxheV92YWx1ZXNbaSAtIDFdIFxcdTAwMjZcXHUwMDI2XFxuMzE1MTpcXHRcXHRcXHQgICAgZGVsYXkgXFx1MDAzYyBkZWxheV92YWx1ZXNbaV0pIHtcXG4zMTUyOlxcdFxcdFxcdFxcdGlmIChkZWxheSAtIGRlbGF5X3ZhbHVlc1tpIC0gMV0gXFx1MDAzY1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMzowMzozNC42Mzk5NTAxMjJaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE3ODk2OTY0MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIERBUDgyMTFSIFBIWSBEcml2ZXIgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgZm9jdXMgaXMgb24gdGhlIGBwaHlfZ2V0X2ludGVybmFsX2RlbGF5YCBmdW5jdGlvbiB3aXRoaW4gdGhlIG5ldyBEQVA4MjExUiBkcml2ZXIuIFRoaXMgZnVuY3Rpb24gYXR0ZW1wdHMgdG8gcmV0cmlldmUgYSBkZWxheSB2YWx1ZSBmcm9tIHRoZSBkZXZpY2UgdHJlZSAoRFQpIHVzaW5nIGBwaHlfZ2V0X3UzMl9wcm9wZXJ0eWAuIFRoZSBjcnVjaWFsIHBvaW50IGhlcmUgaXMgdGhhdCBpZiBgZGV2LVx1MDAzZW9mX25vZGVgIGlzIE5VTEwgKG1lYW5pbmcgbm8gRFQgaXMgcHJlc2VudCksIGBwaHlfZ2V0X3UzMl9wcm9wZXJ0eWAgd2lsbCByZXR1cm4gYW4gZXJyb3IuIEhvd2V2ZXIsIHRoZSBgZGFwODIxMXJfY29uZmlnX2luaXRgIGZ1bmN0aW9uICpoYW5kbGVzKiB0aGlzIGVycm9yIGdyYWNlZnVsbHkuIEl0IGNoZWNrcyBpZiB0aGUgcmV0dXJuZWQgZGVsYXkgdmFsdWUgaXMgbGVzcyB0aGFuIDAsIGFuZCBpZiBzbywgaXQgZGVmYXVsdHMgdG8gZWl0aGVyIDAgKGlmIFJHTUlJKSBvciBhIGRlZmF1bHQgc2VsZWN0aW9uIHZhbHVlLlxuXG5UaGlzIGlzIHNpZ25pZmljYW50LiBJdCBtZWFucyB0aGUgZHJpdmVyIGNhbiBmdW5jdGlvbiBldmVuIHdpdGhvdXQgYSBkZXZpY2UgdHJlZSwgd2hpY2ggaXMgZXhjZWxsZW50IG5ld3MgZm9yIGZ1enppbmcsIGFzIGl0IGluY3JlYXNlcyB0aGUgcG90ZW50aWFsIHRhcmdldHMgYW5kIGRvZXNuJ3QgcmVzdHJpY3QgaXQgdG8gRFQtZW5hYmxlZCBlbnZpcm9ubWVudHMuXG5cbk5vdywgdG8gZGV0ZXJtaW5lIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBmb3IgZnV6emluZy4gSSBzZWUgYENPTkZJR19EQVA4MjExUl9QSFlgIGlzIHRoZSBwcmltYXJ5IG9uZSwgYnV0IGl0ICpkZXBlbmRzKiBvbiBgQ09ORklHX09GYC4gVGhlcmVmb3JlLCBpZiBJIHdhbnQgdG8gdGFyZ2V0IHRoZSBuZXcgZHJpdmVyLCBJIG11c3Qgc3BlY2lmeSBgREFQODIxMVJfUEhZYC4gSG93ZXZlciwgZ2l2ZW4gdGhlIHByb2plY3QgZ3VpZGVsaW5lcyB0aGF0IGRpc2NvdXJhZ2Ugb3Zlcmx5IGdlbmVyaWMgY29uZmlndXJhdGlvbnMgYW5kIHRoZSBhc3N1bXB0aW9uIHRoYXQgYE9GYCBpcyBjb21tb24sIEknbGwgb25seSBsaXN0IHRoZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHJlbGF0ZWQgdG8gdGhlIGNvZGUgY2hhbmdlcy5cblxuTGV0J3MgY29uc29saWRhdGUgdGhlIGtleSBpbmZvcm1hdGlvbiBmb3IgdGhlIGZ1enppbmcgc2V0dXA6XG5cbiogICAqKldvcnRoRnV6emluZzoqKiBUcnVlIC0gYmVjYXVzZSB0aGUgZHJpdmVyIGNhbiBvcGVyYXRlIHdpdGhvdXQgYSBEVC5cbiogICAqKkZvY3VzU3ltYm9sczoqKiBgZGFwODIxMXJfY29uZmlnX2luaXRgLCBgZGFwODIxMXJfcmVhZF9leHRgLCBhbmQgYGRhcDgyMTFyX21vZGlmeV9leHRgLiBUaGVzZSBhcmUgdGhlIGZ1bmN0aW9ucyBzcGVjaWZpYyB0byB0aGUgbmV3IERBUDgyMTFSIGRyaXZlci5cbiogICAqKkVuYWJsZUNvbmZpZ3M6KiogYERBUDgyMTFSX1BIWWAuXG4qICAgKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIGludHJvZHVjZXMgYSBQSFkgZHJpdmVyIGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpLiBJdCBpbmNsdWRlcyBpbml0aWFsaXphdGlvbiBhbmQgZXh0ZW5kZWQgcmVnaXN0ZXIgYWNjZXNzIGxvZ2ljLCBhbmQgaXQncyByZWFjaGFibGUgdGhyb3VnaCBhbiBNRElPIGJ1cyBlbXVsYXRpb24gKGUuZy4sIHVzaW5nIFVTQiBFdGhlcm5ldCBhZGFwdGVycykuXG5cbkkgbmVlZCB0byBjb25maXJtIHRoZSBzY29wZS4gSSBleGFtaW5lZCB0aGUgYGRhcDgyMTFyX2RyaXZlcmAgYW5kIGNvbmZpcm1lZCB0aGF0IHRoZSBkcml2ZXIgdXRpbGl6ZXMgc3RhbmRhcmQgUEhZIGZ1bmN0aW9ucyAoYGdlbnBoeV9yZWFkX3N0YXR1c2AsIGBnZW5waHlfbG9vcGJhY2tgLCBgZ2VucGh5X2NvbmZpZ19hbmVnYCwgYGdlbnBoeV9zdXNwZW5kYCwgYGdlbnBoeV9yZXN1bWVgKSB3aGljaCBhcmUgZ2VuZXJpYyBhbmQgbGVzcyBpbnRlcmVzdGluZyBmb3IgdGFyZ2V0ZWQgZnV6emluZy4gVGhlIGtleSBmdW5jdGlvbnMgYXJlIGluZGVlZCB0aGUgaW5pdGlhbGl6YXRpb24gKGBkYXA4MjExcl9jb25maWdfaW5pdGApLCBleHRlbmRlZCByZWFkIChgZGFwODIxMXJfcmVhZF9leHRgKSwgYW5kIGV4dGVuZGVkIG1vZGlmeSAoYGRhcDgyMTFyX21vZGlmeV9leHRgKS5cblxuRmluYWxseSwgSSBjaGVja2VkIGFsbCByZWxhdGVkIGZpbGVzOiBgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kYXB1LGRhcDgyMTFyLnlhbWxgLCBgZHJpdmVycy9uZXQvcGh5L0tjb25maWdgLCBgZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlYCwgYW5kIGBkcml2ZXJzL25ldC9waHkvZGFwODIxMXIuY2AuIEJhc2VkIG9uIHRoaXMgcmV2aWV3LCBJJ20gY29uZmlkZW50IHdpdGggdGhpcyBhc3Nlc3NtZW50LiBMZXQncyBwcm9jZWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzgxMSwiT3V0cHV0VG9rZW5zIjoxNjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NzEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMzowMzo0Ni40Mjk2NDk0NTNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTU1ODU1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiREFQODIxMVJfUEhZXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGFwODIxMXJfY29uZmlnX2luaXRcIixcbiAgICBcImRhcDgyMTFyX3JlYWRfZXh0XCIsXG4gICAgXCJkYXA4MjExcl9tb2RpZnlfZXh0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIG5ldyBQSFkgZHJpdmVyIGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZLiBUaGUgZHJpdmVyIGltcGxlbWVudHMgaW5pdGlhbGl6YXRpb24gbG9naWMgYW5kIGV4dGVuZGVkIHJlZ2lzdGVyIGFjY2Vzcy4gSXQgY2FuIGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGJ5IGVtdWxhdGluZyBhbiBNRElPIGJ1cyAoZS5nLiwgdmlhIFVTQiBldGhlcm5ldCBhZGFwdGVycyBsaWtlIHNtc2M5NXh4KSBhbmQgcHJlc2VudGluZyB0aGUgbWF0Y2hpbmcgUEhZIElEICgweDAwMDgwMTFCKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQVA4MjExUl9QSFlcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYXA4MjExcl9jb25maWdfaW5pdFwiLFxuICAgIFwiZGFwODIxMXJfcmVhZF9leHRcIixcbiAgICBcImRhcDgyMTFyX21vZGlmeV9leHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbmV3IFBIWSBkcml2ZXIgZm9yIHRoZSBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFkuIFRoZSBkcml2ZXIgaW1wbGVtZW50cyBpbml0aWFsaXphdGlvbiBsb2dpYyBhbmQgZXh0ZW5kZWQgcmVnaXN0ZXIgYWNjZXNzLiBJdCBjYW4gYmUgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYnkgZW11bGF0aW5nIGFuIE1ESU8gYnVzIChlLmcuLCB2aWEgVVNCIGV0aGVybmV0IGFkYXB0ZXJzIGxpa2Ugc21zYzk1eHgpIGFuZCBwcmVzZW50aW5nIHRoZSBtYXRjaGluZyBQSFkgSUQgKDB4MDAwODAxMUIpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow9gldg[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-16 22:43:18 +0000 UTC FinishedAt: 2026-07-16 23:03:48 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAP8211R_PHY" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAP8211R_PHY" ], "series_id": "13f17809-c9d8-412d-8303-e2dbfac3e231" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "dap8211r_config_init", "dap8211r_read_ext", "dap8211r_modify_ext" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE2IDIzOjAyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBUDgyMTFSX1BIWSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RhcDgyMTFyX2NvbmZpZ19pbml0JiMzNDssCiAgICAmIzM0O2RhcDgyMTFyX3JlYWRfZXh0JiMzNDssCiAgICAmIzM0O2RhcDgyMTFyX21vZGlmeV9leHQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG5ldyBQSFkgZHJpdmVyIGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZLiBUaGUgZHJpdmVyIGltcGxlbWVudHMgaW5pdGlhbGl6YXRpb24gbG9naWMgYW5kIGV4dGVuZGVkIHJlZ2lzdGVyIGFjY2Vzcy4gSXQgY2FuIGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGJ5IGVtdWxhdGluZyBhbiBNRElPIGJ1cyAoZS5nLiwgdmlhIFVTQiBldGhlcm5ldCBhZGFwdGVycyBsaWtlIHNtc2M5NXh4KSBhbmQgcHJlc2VudGluZyB0aGUgbWF0Y2hpbmcgUEhZIElEICgweDAwMDgwMTFCKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMzowMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDY2NDRjNzg5NDAzMmE1OGRkYmIzNWRmNGJlMzJlNjcyNTdmNzE2NDRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAxNiAyMzowMjozMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RhcHUsZGFwODIxMXIueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZGFwdSxkYXA4MjExci55YW1sXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmQ0MDEyZmExN2ExZTExXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RhcHUsZGFwODIxMXIueWFtbFxuQEAgLTAsMCAmIzQzOzEsNzMgQEBcbiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjAtb25seSBPUiBCU0QtMi1DbGF1c2UpXG4mIzQzOyVZQU1MIDEuMlxuJiM0MzstLS1cbiYjNDM7JGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9uZXQvZGFwdSxkYXA4MjExci55YW1sI1xuJiM0Mzskc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcbiYjNDM7XG4mIzQzO3RpdGxlOiBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFlcbiYjNDM7XG4mIzQzO21haW50YWluZXJzOlxuJiM0MzsgIC0gQXJ0ZW0gU2hpbWtvIFx1MDAzY2Euc2hpbWtvLmRldkBnbWFpbC5jb21cdTAwM2VcbiYjNDM7XG4mIzQzO2Rlc2NyaXB0aW9uOiB8XG4mIzQzOyAgVGhlIERBUDgyMTFSKEkpIGlzIGEgR2lnYWJpdCBFdGhlcm5ldCBQSFkgd2l0aCBSR01JSSBpbnRlcmZhY2UsXG4mIzQzOyAgc3VwcG9ydGluZyBJRUVFIDgwMi4zYXogRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldCwgSUVFRSAxNTg4IFN5bmNFLFxuJiM0MzsgIGFuZCBhbiBpbnRlcm5hbCBwYWNrZXQgZ2VuZXJhdG9yIGZvciBkaWFnbm9zdGljcy5cbiYjNDM7XG4mIzQzOyAgU3BlY2lmaWNhdGlvbnM6XG4mIzQzOyAgICAtIDEwQkFTRS1UZSwgMTAwQkFTRS1UWCwgMTAwMEJBU0UtVFxuJiM0MzsgICAgLSBSR01JSSB3aXRoIGNvbmZpZ3VyYWJsZSBUWC9SWCBjbG9jayBkZWxheXMgKDE1MCBwcyBzdGVwcywgMC0yMjUwIHBzKVxuJiM0MzsgICAgLSBJRUVFIDgwMi4zYXotMjAxMCBFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0XG4mIzQzOyAgICAtIElFRUUgMTU4OCBTeW5jRSBzdXBwb3J0XG4mIzQzOyAgICAtIEludGVybmFsIHBhY2tldCBnZW5lcmF0b3IgYW5kIGNoZWNrZXIgZm9yIGxpbmsgZGlhZ25vc3RpY3NcbiYjNDM7XG4mIzQzO2FsbE9mOlxuJiM0MzsgIC0gJHJlZjogZXRoZXJuZXQtcGh5LnlhbWwjXG4mIzQzO1xuJiM0Mztwcm9wZXJ0aWVzOlxuJiM0MzsgIGNvbXBhdGlibGU6XG4mIzQzOyAgICBjb25zdDogZXRoZXJuZXQtcGh5LWlkMDAwOC4wMTFiXG4mIzQzO1xuJiM0MzsgIHJlZzpcbiYjNDM7ICAgIG1heEl0ZW1zOiAxXG4mIzQzO1xuJiM0MzsgIHJ4LWludGVybmFsLWRlbGF5LXBzOlxuJiM0MzsgICAgZGVzY3JpcHRpb246XG4mIzQzOyAgICAgIFJHTUlJIFJYIGNsb2NrIGRlbGF5IGluIHBpY29zZWNvbmRzICgwIHRvIG1heGltdW0pLlxuJiM0MzsgICAgbXVsdGlwbGVPZjogMTUwXG4mIzQzOyAgICBtYXhpbXVtOiAyMjUwXG4mIzQzOyAgICBkZWZhdWx0OiAxOTUwXG4mIzQzO1xuJiM0MzsgIHR4LWludGVybmFsLWRlbGF5LXBzOlxuJiM0MzsgICAgZGVzY3JpcHRpb246XG4mIzQzOyAgICAgIFJHTUlJIFRYIGNsb2NrIGRlbGF5IGluIHBpY29zZWNvbmRzICgwIHRvIG1heGltdW0pLlxuJiM0MzsgICAgbXVsdGlwbGVPZjogMTUwXG4mIzQzOyAgICBtYXhpbXVtOiAyMjUwXG4mIzQzOyAgICBkZWZhdWx0OiAxOTUwXG4mIzQzO1xuJiM0MzsgIGRhcHUsdHgtaW52ZXJ0ZWQtY2xrOlxuJiM0MzsgICAgJHJlZjogL3NjaGVtYXMvdHlwZXMueWFtbCMvZGVmaW5pdGlvbnMvZmxhZ1xuJiM0MzsgICAgZGVzY3JpcHRpb246XG4mIzQzOyAgICAgIElmIHByZXNlbnQsIHRoZSBSR01JSSBUWCBjbG9jayB0byB0aGUgTUFDIGlzIGludmVydGVkICgxODAgZGVncmVlXG4mIzQzOyAgICAgIHBoYXNlIHNoaWZ0IHJlbGF0aXZlIHRvIHRoZSBkYXRhIGxpbmVzKS4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpY1xuJiM0MzsgICAgICBleHRlbnNpb24gZm9yIGJvYXJkcyB3aGVyZSBQQ0IgdHJhY2UgbGVuZ3RoIG9yIE1BQyByZXF1aXJlbWVudHNcbiYjNDM7ICAgICAgbmVjZXNzaXRhdGUgY2xvY2sgaW52ZXJzaW9uLiBPbmx5IHVzZSB0aGlzIHByb3BlcnR5IGFmdGVyIGhhcmR3YXJlXG4mIzQzOyAgICAgIHNpZ25hbCBpbnRlZ3JpdHkgdmFsaWRhdGlvbi5cbiYjNDM7XG4mIzQzO3VuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2VcbiYjNDM7XG4mIzQzO2V4YW1wbGVzOlxuJiM0MzsgIC0gfFxuJiM0MzsgICAgbWRpbyB7XG4mIzQzOyAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuJiM0MzsgICAgICAgICNzaXplLWNlbGxzID0gXHUwMDNjMFx1MDAzZTtcbiYjNDM7XG4mIzQzOyAgICAgICAgZXRoZXJuZXQtcGh5QDEge1xuJiM0MzsgICAgICAgICAgICBjb21wYXRpYmxlID0gXCYjMzQ7ZXRoZXJuZXQtcGh5LWlkMDAwOC4wMTFiXCYjMzQ7O1xuJiM0MzsgICAgICAgICAgICByZWcgPSBcdTAwM2MxXHUwMDNlO1xuJiM0MzsgICAgICAgICAgICByeC1pbnRlcm5hbC1kZWxheS1wcyA9IFx1MDAzYzIxMDBcdTAwM2U7XG4mIzQzOyAgICAgICAgICAgIHR4LWludGVybmFsLWRlbGF5LXBzID0gXHUwMDNjMjEwMFx1MDAzZTtcbiYjNDM7ICAgICAgICAgICAgZGFwdSx0eC1pbnZlcnRlZC1jbGs7XG4mIzQzOyAgICAgICAgfTtcbiYjNDM7ICAgIH07XG4mIzQzO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnIGIvZHJpdmVycy9uZXQvcGh5L0tjb25maWdcbmluZGV4IDA5OWYyNWRjZWFiYmM3Li40NTc2ZjcwN2FjOTQ0NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvS2NvbmZpZ1xuQEAgLTIzNyw2ICYjNDM7MjM3LDE2IEBAIGNvbmZpZyBEQVZJQ09NX1BIWVxuIFx0aGVscFxuIFx0ICBDdXJyZW50bHkgc3VwcG9ydHMgZG05MTYxZSBhbmQgZG05MTMxXG4gXG4mIzQzO2NvbmZpZyBEQVA4MjExUl9QSFlcbiYjNDM7XHR0cmlzdGF0ZSBcJiMzNDtEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFlcJiMzNDtcbiYjNDM7XHRkZXBlbmRzIG9uIE9GXG4mIzQzO1x0aGVscFxuJiM0MztcdCAgU3VwcG9ydCBmb3IgdGhlIERBUFUgVGVsZWNvbSBEQVA4MjExUihJKSBHaWdhYml0IEV0aGVybmV0IFBIWS5cbiYjNDM7XHQgIFRoaXMgUEhZIGlzIGRlc2lnbmVkIGZvciBlbnRlcnByaXNlIGFuZCBpbmR1c3RyaWFsIG5ldHdvcmtpbmdcbiYjNDM7XHQgIGFwcGxpY2F0aW9ucywgc3VwcG9ydGluZyAxMC8xMDAvMTAwMCBNYnBzIG9wZXJhdGlvbi5cbiYjNDM7XHQgIFJHTUlJIHdpdGg6IGNvbmZpZ3VyYWJsZSBUWC9SWCBjbG9jayBkZWxheXMsIG9wdGlvbmFsIGZsYWcgdG8gZW5hYmxlXG4mIzQzO1x0ICAxODAtZGVncmVlIFRYIGNsb2NrIHBoYXNlIHNoaWZ0IGFuZCBpbnRlcm5hbCBwYWNrZXQgZ2VuZXJhdG9yLlxuJiM0MztcbiBjb25maWcgSUNQTFVTX1BIWVxuIFx0dHJpc3RhdGUgXCYjMzQ7SUNQbHVzIFBIWXNcJiMzNDtcbiBcdGhlbHBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGVcbmluZGV4IGRlNjYwYWU5NDk0NTNkLi5hZDM1NzMzZWI0YmI2MSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZVxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlXG5AQCAtNTMsNiAmIzQzOzUzLDcgQEAgb2JqLSQoQ09ORklHX0JST0FEQ09NX1BIWSlcdCYjNDM7PSBicm9hZGNvbS5vXG4gb2JqLSQoQ09ORklHX0NJQ0FEQV9QSFkpXHQmIzQzOz0gY2ljYWRhLm9cbiBvYmotJChDT05GSUdfQ09SVElOQV9QSFkpXHQmIzQzOz0gY29ydGluYS5vXG4gb2JqLSQoQ09ORklHX0RBVklDT01fUEhZKVx0JiM0Mzs9IGRhdmljb20ub1xuJiM0MztvYmotJChDT05GSUdfREFQODIxMVJfUEhZKVx0JiM0Mzs9IGRhcDgyMTFyLm9cbiBvYmotJChDT05GSUdfRFA4MzY0MF9QSFkpXHQmIzQzOz0gZHA4MzY0MC5vXG4gb2JqLSQoQ09ORklHX0RQODM4MjJfUEhZKVx0JiM0Mzs9IGRwODM4MjIub1xuIG9iai0kKENPTkZJR19EUDgzODQ4X1BIWSlcdCYjNDM7PSBkcDgzODQ4Lm9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYyBiL2RyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmU2MzgxZmQ4Yzk4YzIwXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuY1xuQEAgLTAsMCAmIzQzOzEsMTkxIEBAXG4mIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUExcbiYjNDM7LypcbiYjNDM7ICogRHJpdmVyIGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZLlxuJiM0MzsgKlxuJiM0MzsgKiBTcGVjaWZpY2F0aW9uczpcbiYjNDM7ICogICAtIElFRUUgODAyLjMgMTBCQVNFLVRlLCAxMDBCQVNFLVRYLCAxMDAwQkFTRS1UXG4mIzQzOyAqICAgLSBJRUVFIDgwMi4zYXotMjAxMCBFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0XG4mIzQzOyAqICAgLSBJRUVFIDE1ODggU3luY0Ugc3VwcG9ydFxuJiM0MzsgKiAgIC0gUkdNSUlcbiYjNDM7ICpcbiYjNDM7ICogQXV0aG9yOiBBcnRlbSBTaGlta28gXHUwMDNjYS5zaGlta28uZGV2QGdtYWlsLmNvbVx1MDAzZVxuJiM0MzsgKi9cbiYjNDM7XG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2JpdGZpZWxkLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvZXJybm8uaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9ldGh0b29sLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvaW9wb2xsLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvbWlpLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvbmV0ZGV2aWNlLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9waHkuaFx1MDAzZVxuJiM0MztcbiYjNDM7I2RlZmluZSBEQVA4MjExUl9QSFlfSURcdFx0XHQweDAwMDgwMTFCXG4mIzQzOyNkZWZpbmUgREFQODIxMVJfUEhZX0lEX01BU0tcdFx0MHhGRkZGRkZGRlxuJiM0MztcbiYjNDM7I2RlZmluZSBEQVA4MjExUl9FWFRfQUREXHRcdDB4MUVcbiYjNDM7I2RlZmluZSBEQVA4MjExUl9FWFRfREFUQVx0XHQweDFGXG4mIzQzO1xuJiM0MzsjZGVmaW5lIERBUDgyMTFSX1BIWV9DT05cdFx0MHhBMDAxXG4mIzQzOyNkZWZpbmUgREFQODIxMVJfUEhZX1NXX1JTVFx0XHRCSVQoMTUpXG4mIzQzO1xuJiM0MzsjZGVmaW5lIERBUDgyMTFSX1JHTUlJX0NPTlx0XHQweEEwMDNcbiYjNDM7LyogRGVmYXVsdCBpbml0aWFsIFRYIGRlbGF5IHZhbHVlIGJ5IGRhdGFzaGVldC4gKi9cbiYjNDM7I2RlZmluZSBEQVA4MjExUl9JTklUX1RYX0RFTF9WQUxcdDFcbiYjNDM7I2RlZmluZSBEQVA4MjExUl9SR01JSV9UWF9ERUxfTUFTS1x0R0VOTUFTSygzLCAwKVxuJiM0MzsjZGVmaW5lIERBUDgyMTFSX1JHTUlJX1JYX0RFTF9NQVNLXHRHRU5NQVNLKDEzLCAxMClcbiYjNDM7I2RlZmluZSBEQVA4MjExUl9SR01JSV9DTEtfSU5WRVJUXHRCSVQoMTQpXG4mIzQzO1xuJiM0MzsjZGVmaW5lIERBUDgyMTFSX1JHTUlJX0NPTkZJR19NQVNLXHQoREFQODIxMVJfUkdNSUlfQ0xLX0lOVkVSVCB8IFxcXG4mIzQzO1x0XHRcdFx0XHREQVA4MjExUl9SR01JSV9SWF9ERUxfTUFTSyB8IFxcXG4mIzQzO1x0XHRcdFx0XHREQVA4MjExUl9SR01JSV9UWF9ERUxfTUFTSylcbiYjNDM7XG4mIzQzOy8qIERlZmF1bHQgUkdNSUkgZGVsYXk6IDEzICogMTUwID09IDEuOTVucyAqL1xuJiM0MzsjZGVmaW5lIERBUDgyMTFSX0RFRkFVTFRfREVMX1NFTFx0MHhEXG4mIzQzO1xuJiM0MztzdGF0aWMgY29uc3QgaW50IGRhcDgyMTFyX2ludGVybmFsX2RlbGF5W10gPSB7MCwgMTUwLCAzMDAsIDQ1MCwgNjAwLCA3NTAsIDkwMCxcbiYjNDM7XHRcdFx0XHRcdCAgICAgIDEwNTAsIDEyMDAsIDEzNTAsIDE1MDAsIDE2NTAsIDE4MDAsXG4mIzQzO1x0XHRcdFx0XHQgICAgICAxOTUwLCAyMTAwLCAyMjUwfTtcbiYjNDM7XG4mIzQzOyNkZWZpbmUgREFQODIxMVJfREVMQVlfU0laRVx0QVJSQVlfU0laRShkYXA4MjExcl9pbnRlcm5hbF9kZWxheSlcbiYjNDM7XG4mIzQzOy8qKlxuJiM0MzsgKiBkYXA4MjExcl9yZWFkX2V4dCgpIC0gUmVhZCBleHRlbmRlZCByZWdpc3RlclxuJiM0MzsgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHN0cnVjdHVyZVxuJiM0MzsgKiBAcmVnOiBFeHRlbmRlZCByZWdpc3RlciBhZGRyZXNzXG4mIzQzOyAqXG4mIzQzOyAqIFJlYWRzIGEgUEhZIGV4dGVuZGVkIHJlZ2lzdGVyIHVzaW5nIHRoZSBpbmRpcmVjdCBhY2Nlc3MgbWV0aG9kLlxuJiM0MzsgKiBUaGUgY2FsbGVyIG11c3QgaG9sZCB0aGUgTURJTyBidXMgbG9jay5cbiYjNDM7ICpcbiYjNDM7ICogUmV0dXJuOiBSZWdpc3RlciB2YWx1ZSBvbiBzdWNjZXNzLCBvciBuZWdhdGl2ZSBlcnJvciBjb2RlXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgaW50IGRhcDgyMTFyX3JlYWRfZXh0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUxNiByZWcpXG4mIzQzO3tcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuJiM0MztcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgREFQODIxMVJfRVhUX0FERCwgcmVnKTtcbiYjNDM7XHRpZiAocmV0IFx1MDAzYyAwKVxuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1xuJiM0MztcdHJldCA9IF9fcGh5X3JlYWQocGh5ZGV2LCBEQVA4MjExUl9FWFRfREFUQSk7XG4mIzQzO291dDpcbiYjNDM7XHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7LyoqXG4mIzQzOyAqIGRhcDgyMTFyX21vZGlmeV9leHQoKSAtIE1vZGlmeSBleHRlbmRlZCByZWdpc3RlciBiaXRzXG4mIzQzOyAqIEBwaHlkZXY6IFBIWSBkZXZpY2Ugc3RydWN0dXJlXG4mIzQzOyAqIEByZWc6IEV4dGVuZGVkIHJlZ2lzdGVyIGFkZHJlc3NcbiYjNDM7ICogQG1hc2s6IEJpdCBtYXNrIG9mIGJpdHMgdG8gY2xlYXJcbiYjNDM7ICogQHNldDogQml0IG1hc2sgb2YgYml0cyB0byBzZXRcbiYjNDM7ICpcbiYjNDM7ICogTW9kaWZpZXMgYSBQSFkgZXh0ZW5kZWQgcmVnaXN0ZXIgdXNpbmcgdGhlIGluZGlyZWN0IGFjY2VzcyBtZXRob2QuXG4mIzQzOyAqIE5ldyB2YWx1ZSA9IChvbGQgdmFsdWUgXHUwMDI2IH5tYXNrKSB8IHNldC5cbiYjNDM7ICogVGhlIGNhbGxlciBtdXN0IGhvbGQgdGhlIE1ESU8gYnVzIGxvY2suXG4mIzQzOyAqXG4mIzQzOyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBvciBuZWdhdGl2ZSBlcnJvciBjb2RlXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgaW50IGRhcDgyMTFyX21vZGlmeV9leHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZywgdTE2IG1hc2ssIHUxNiBzZXQpXG4mIzQzO3tcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuJiM0MztcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgREFQODIxMVJfRVhUX0FERCwgcmVnKTtcbiYjNDM7XHRpZiAocmV0IFx1MDAzYyAwKVxuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1xuJiM0MztcdHJldCA9IF9fcGh5X21vZGlmeShwaHlkZXYsIERBUDgyMTFSX0VYVF9EQVRBLCBtYXNrLCBzZXQpO1xuJiM0MztvdXQ6XG4mIzQzO1x0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuJiM0MztcdHJldHVybiByZXQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qKlxuJiM0MzsgKiBkYXA4MjExcl9jb25maWdfaW5pdCgpIC0gSW5pdGlhbGl6ZSBQSFlcbiYjNDM7ICogQHBoeWRldjogUEhZIGRldmljZSBzdHJ1Y3R1cmVcbiYjNDM7ICpcbiYjNDM7ICogQ29uZmlndXJlcyB0aGUgUEhZIGR1cmluZyBpbml0aWFsaXphdGlvbjpcbiYjNDM7ICogLSBUWCBjbG9jayBpbnZlcnRpb25cbiYjNDM7ICogLSBSR01JSSBkZWxheXMgYmFzZWQgb24gaW50ZXJmYWNlIG1vZGVcbiYjNDM7ICogLSBTb2Z0d2FyZSByZXNldCB0byBhcHBseSBzZXR0aW5ncyAobG93IGFjdGl2ZSwgc2VsZiBjbGVhcilcbiYjNDM7ICpcbiYjNDM7ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG9yIG5lZ2F0aXZlIGVycm9yIGNvZGVcbiYjNDM7ICovXG4mIzQzO3N0YXRpYyBpbnQgZGFwODIxMXJfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqcGh5ZGV2X25vZGUgPSBwaHlkZXYtXHUwMDNlbWRpby5kZXYub2Zfbm9kZTtcbiYjNDM7XHR1MTYgc2V0ID0gMCwgdmFsID0gMDtcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcdHMzMiBpbnRlcm5hbF9kZWxheTtcbiYjNDM7XG4mIzQzO1x0aWYgKG9mX3Byb3BlcnR5X3JlYWRfYm9vbChwaHlkZXZfbm9kZSwgXCYjMzQ7ZGFwdSx0eC1pbnZlcnRlZC1jbGtcJiMzNDspKVxuJiM0MztcdFx0c2V0IHw9IERBUDgyMTFSX1JHTUlJX0NMS19JTlZFUlQ7XG4mIzQzO1xuJiM0MztcdGludGVybmFsX2RlbGF5ID0gcGh5X2dldF9pbnRlcm5hbF9kZWxheShwaHlkZXYsIGRhcDgyMTFyX2ludGVybmFsX2RlbGF5LFxuJiM0MztcdFx0XHRcdFx0XHREQVA4MjExUl9ERUxBWV9TSVpFLCB0cnVlKTtcbiYjNDM7XHRpZiAoaW50ZXJuYWxfZGVsYXkgXHUwMDNjIDApIHtcbiYjNDM7XHRcdGlmIChwaHlkZXYtXHUwMDNlaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSSlcbiYjNDM7XHRcdFx0aW50ZXJuYWxfZGVsYXkgPSAwO1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRpbnRlcm5hbF9kZWxheSA9IERBUDgyMTFSX0RFRkFVTFRfREVMX1NFTDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHNldCB8PSBGSUVMRF9QUkVQKERBUDgyMTFSX1JHTUlJX1JYX0RFTF9NQVNLLCBpbnRlcm5hbF9kZWxheSk7XG4mIzQzO1xuJiM0MztcdGludGVybmFsX2RlbGF5ID0gcGh5X2dldF9pbnRlcm5hbF9kZWxheShwaHlkZXYsIGRhcDgyMTFyX2ludGVybmFsX2RlbGF5LFxuJiM0MztcdFx0XHRcdFx0XHREQVA4MjExUl9ERUxBWV9TSVpFLCBmYWxzZSk7XG4mIzQzO1x0aWYgKGludGVybmFsX2RlbGF5IFx1MDAzYyAwKSB7XG4mIzQzO1x0XHRpZiAocGh5ZGV2LVx1MDAzZWludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUkpXG4mIzQzO1x0XHRcdGludGVybmFsX2RlbGF5ID0gREFQODIxMVJfSU5JVF9UWF9ERUxfVkFMO1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRpbnRlcm5hbF9kZWxheSA9IERBUDgyMTFSX0RFRkFVTFRfREVMX1NFTDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHNldCB8PSBGSUVMRF9QUkVQKERBUDgyMTFSX1JHTUlJX1RYX0RFTF9NQVNLLCBpbnRlcm5hbF9kZWxheSk7XG4mIzQzO1xuJiM0MztcdHJldCA9IGRhcDgyMTFyX21vZGlmeV9leHQocGh5ZGV2LCBEQVA4MjExUl9QSFlfQ09OLCBEQVA4MjExUl9QSFlfU1dfUlNULCAwKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0LyogV2FpdCBmb3IgcmVzZXQgc2VsZi1jbGVhciAobWF4IDIwMCB1cykgKi9cbiYjNDM7XHRyZXQgPSByZWFkX3BvbGxfdGltZW91dChkYXA4MjExcl9yZWFkX2V4dCwgdmFsLFxuJiM0MztcdFx0XHRcdCh2YWwgXHUwMDI2IERBUDgyMTFSX1BIWV9TV19SU1QpLFxuJiM0MztcdFx0XHRcdDIwLCAyMDAsIGZhbHNlLCBwaHlkZXYsIERBUDgyMTFSX1BIWV9DT04pO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHRyZXQgPSBkYXA4MjExcl9tb2RpZnlfZXh0KHBoeWRldiwgREFQODIxMVJfUkdNSUlfQ09OLCBEQVA4MjExUl9SR01JSV9DT05GSUdfTUFTSywgc2V0KTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkYXA4MjExcl9kcml2ZXJbXSA9IHtcbiYjNDM7XHR7XG4mIzQzO1x0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoREFQODIxMVJfUEhZX0lEKSxcbiYjNDM7XHRcdC5uYW1lXHRcdD0gXCYjMzQ7REFQODIxMVIgR2lnYWJpdCBFdGhlcm5ldFwmIzM0OyxcbiYjNDM7XHRcdC5jb25maWdfaW5pdFx0PSBkYXA4MjExcl9jb25maWdfaW5pdCxcbiYjNDM7XHRcdC5yZWFkX3N0YXR1c1x0PSBnZW5waHlfcmVhZF9zdGF0dXMsXG4mIzQzO1x0XHQuc2V0X2xvb3BiYWNrXHQ9IGdlbnBoeV9sb29wYmFjayxcbiYjNDM7XHRcdC5jb25maWdfYW5lZ1x0PSBnZW5waHlfY29uZmlnX2FuZWcsXG4mIzQzO1x0XHQuc3VzcGVuZFx0PSBnZW5waHlfc3VzcGVuZCxcbiYjNDM7XHRcdC5yZXN1bWVcdFx0PSBnZW5waHlfcmVzdW1lLFxuJiM0MztcdH0sXG4mIzQzO307XG4mIzQzO21vZHVsZV9waHlfZHJpdmVyKGRhcDgyMTFyX2RyaXZlcik7XG4mIzQzO1xuJiM0MztNT0RVTEVfREVTQ1JJUFRJT04oXCYjMzQ7REFQODIxMVIgR2lnYWJpdCBFdGhlcm5ldCBQSFkgZHJpdmVyXCYjMzQ7KTtcbiYjNDM7TU9EVUxFX0FVVEhPUihcJiMzNDtBcnRlbSBTaGlta28gXHUwMDNjYS5zaGlta28uZGV2QGdtYWlsLmNvbVx1MDAzZVwmIzM0Oyk7XG4mIzQzO01PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG4mIzQzO1xuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIGRhcDgyMTFyX3RiW10gPSB7XG4mIzQzO1x0eyBEQVA4MjExUl9QSFlfSUQsIERBUDgyMTFSX1BIWV9JRF9NQVNLIH0sXG4mIzQzO1x0eyAvKiBzZW50aW5lbCAqLyB9XG4mIzQzO307XG4mIzQzO01PRFVMRV9ERVZJQ0VfVEFCTEUobWRpbywgZGFwODIxMXJfdGIpO1xuJiM0MztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMzowMjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEQVA4MjExUl9QSFkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYXA4MjExcl9jb25maWdfaW5pdCYjMzQ7LAogICAgJiMzNDtkYXA4MjExcl9yZWFkX2V4dCYjMzQ7LAogICAgJiMzNDtkYXA4MjExcl9tb2RpZnlfZXh0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBuZXcgUEhZIGRyaXZlciBmb3IgdGhlIERBUFUgVGVsZWNvbSBEQVA4MjExUihJKSBHaWdhYml0IEV0aGVybmV0IFBIWS4gVGhlIGRyaXZlciBpbXBsZW1lbnRzIGluaXRpYWxpemF0aW9uIGxvZ2ljIGFuZCBleHRlbmRlZCByZWdpc3RlciBhY2Nlc3MuIEl0IGNhbiBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBieSBlbXVsYXRpbmcgYW4gTURJTyBidXMgKGUuZy4sIHZpYSBVU0IgZXRoZXJuZXQgYWRhcHRlcnMgbGlrZSBzbXNjOTV4eCkgYW5kIHByZXNlbnRpbmcgdGhlIG1hdGNoaW5nIFBIWSBJRCAoMHgwMDA4MDExQikuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDY2NDRjNzg5NDAzMmE1OGRkYmIzNWRmNGJlMzJlNjcyNTdmNzE2NDQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCAxNiAyMzowMjozMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZGFwdSxkYXA4MjExci55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kYXB1LGRhcDgyMTFyLnlhbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLmQ0MDEyZmExN2ExZTExCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kYXB1LGRhcDgyMTFyLnlhbWwKQEAgLTAsMCAmIzQzOzEsNzMgQEAKJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiAoR1BMLTIuMC1vbmx5IE9SIEJTRC0yLUNsYXVzZSkKJiM0MzslWUFNTCAxLjIKJiM0MzstLS0KJiM0MzskaWQ6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9zY2hlbWFzL25ldC9kYXB1LGRhcDgyMTFyLnlhbWwjCiYjNDM7JHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjCiYjNDM7CiYjNDM7dGl0bGU6IERBUFUgVGVsZWNvbSBEQVA4MjExUihJKSBHaWdhYml0IEV0aGVybmV0IFBIWQomIzQzOwomIzQzO21haW50YWluZXJzOgomIzQzOyAgLSBBcnRlbSBTaGlta28gJmx0O2Euc2hpbWtvLmRldkBnbWFpbC5jb20mZ3Q7CiYjNDM7CiYjNDM7ZGVzY3JpcHRpb246IHwKJiM0MzsgIFRoZSBEQVA4MjExUihJKSBpcyBhIEdpZ2FiaXQgRXRoZXJuZXQgUEhZIHdpdGggUkdNSUkgaW50ZXJmYWNlLAomIzQzOyAgc3VwcG9ydGluZyBJRUVFIDgwMi4zYXogRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldCwgSUVFRSAxNTg4IFN5bmNFLAomIzQzOyAgYW5kIGFuIGludGVybmFsIHBhY2tldCBnZW5lcmF0b3IgZm9yIGRpYWdub3N0aWNzLgomIzQzOwomIzQzOyAgU3BlY2lmaWNhdGlvbnM6CiYjNDM7ICAgIC0gMTBCQVNFLVRlLCAxMDBCQVNFLVRYLCAxMDAwQkFTRS1UCiYjNDM7ICAgIC0gUkdNSUkgd2l0aCBjb25maWd1cmFibGUgVFgvUlggY2xvY2sgZGVsYXlzICgxNTAgcHMgc3RlcHMsIDAtMjI1MCBwcykKJiM0MzsgICAgLSBJRUVFIDgwMi4zYXotMjAxMCBFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0CiYjNDM7ICAgIC0gSUVFRSAxNTg4IFN5bmNFIHN1cHBvcnQKJiM0MzsgICAgLSBJbnRlcm5hbCBwYWNrZXQgZ2VuZXJhdG9yIGFuZCBjaGVja2VyIGZvciBsaW5rIGRpYWdub3N0aWNzCiYjNDM7CiYjNDM7YWxsT2Y6CiYjNDM7ICAtICRyZWY6IGV0aGVybmV0LXBoeS55YW1sIwomIzQzOwomIzQzO3Byb3BlcnRpZXM6CiYjNDM7ICBjb21wYXRpYmxlOgomIzQzOyAgICBjb25zdDogZXRoZXJuZXQtcGh5LWlkMDAwOC4wMTFiCiYjNDM7CiYjNDM7ICByZWc6CiYjNDM7ICAgIG1heEl0ZW1zOiAxCiYjNDM7CiYjNDM7ICByeC1pbnRlcm5hbC1kZWxheS1wczoKJiM0MzsgICAgZGVzY3JpcHRpb246CiYjNDM7ICAgICAgUkdNSUkgUlggY2xvY2sgZGVsYXkgaW4gcGljb3NlY29uZHMgKDAgdG8gbWF4aW11bSkuCiYjNDM7ICAgIG11bHRpcGxlT2Y6IDE1MAomIzQzOyAgICBtYXhpbXVtOiAyMjUwCiYjNDM7ICAgIGRlZmF1bHQ6IDE5NTAKJiM0MzsKJiM0MzsgIHR4LWludGVybmFsLWRlbGF5LXBzOgomIzQzOyAgICBkZXNjcmlwdGlvbjoKJiM0MzsgICAgICBSR01JSSBUWCBjbG9jayBkZWxheSBpbiBwaWNvc2Vjb25kcyAoMCB0byBtYXhpbXVtKS4KJiM0MzsgICAgbXVsdGlwbGVPZjogMTUwCiYjNDM7ICAgIG1heGltdW06IDIyNTAKJiM0MzsgICAgZGVmYXVsdDogMTk1MAomIzQzOwomIzQzOyAgZGFwdSx0eC1pbnZlcnRlZC1jbGs6CiYjNDM7ICAgICRyZWY6IC9zY2hlbWFzL3R5cGVzLnlhbWwjL2RlZmluaXRpb25zL2ZsYWcKJiM0MzsgICAgZGVzY3JpcHRpb246CiYjNDM7ICAgICAgSWYgcHJlc2VudCwgdGhlIFJHTUlJIFRYIGNsb2NrIHRvIHRoZSBNQUMgaXMgaW52ZXJ0ZWQgKDE4MCBkZWdyZWUKJiM0MzsgICAgICBwaGFzZSBzaGlmdCByZWxhdGl2ZSB0byB0aGUgZGF0YSBsaW5lcykuIFRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMKJiM0MzsgICAgICBleHRlbnNpb24gZm9yIGJvYXJkcyB3aGVyZSBQQ0IgdHJhY2UgbGVuZ3RoIG9yIE1BQyByZXF1aXJlbWVudHMKJiM0MzsgICAgICBuZWNlc3NpdGF0ZSBjbG9jayBpbnZlcnNpb24uIE9ubHkgdXNlIHRoaXMgcHJvcGVydHkgYWZ0ZXIgaGFyZHdhcmUKJiM0MzsgICAgICBzaWduYWwgaW50ZWdyaXR5IHZhbGlkYXRpb24uCiYjNDM7CiYjNDM7dW5ldmFsdWF0ZWRQcm9wZXJ0aWVzOiBmYWxzZQomIzQzOwomIzQzO2V4YW1wbGVzOgomIzQzOyAgLSB8CiYjNDM7ICAgIG1kaW8gewomIzQzOyAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSAmbHQ7MSZndDs7CiYjNDM7ICAgICAgICAjc2l6ZS1jZWxscyA9ICZsdDswJmd0OzsKJiM0MzsKJiM0MzsgICAgICAgIGV0aGVybmV0LXBoeUAxIHsKJiM0MzsgICAgICAgICAgICBjb21wYXRpYmxlID0gJiMzNDtldGhlcm5ldC1waHktaWQwMDA4LjAxMWImIzM0OzsKJiM0MzsgICAgICAgICAgICByZWcgPSAmbHQ7MSZndDs7CiYjNDM7ICAgICAgICAgICAgcngtaW50ZXJuYWwtZGVsYXktcHMgPSAmbHQ7MjEwMCZndDs7CiYjNDM7ICAgICAgICAgICAgdHgtaW50ZXJuYWwtZGVsYXktcHMgPSAmbHQ7MjEwMCZndDs7CiYjNDM7ICAgICAgICAgICAgZGFwdSx0eC1pbnZlcnRlZC1jbGs7CiYjNDM7ICAgICAgICB9OwomIzQzOyAgICB9OwomIzQzOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L0tjb25maWcgYi9kcml2ZXJzL25ldC9waHkvS2NvbmZpZwppbmRleCAwOTlmMjVkY2VhYmJjNy4uNDU3NmY3MDdhYzk0NDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnCkBAIC0yMzcsNiAmIzQzOzIzNywxNiBAQCBjb25maWcgREFWSUNPTV9QSFkKIAloZWxwCiAJICBDdXJyZW50bHkgc3VwcG9ydHMgZG05MTYxZSBhbmQgZG05MTMxCiAKJiM0Mztjb25maWcgREFQODIxMVJfUEhZCiYjNDM7CXRyaXN0YXRlICYjMzQ7REFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZJiMzNDsKJiM0MzsJZGVwZW5kcyBvbiBPRgomIzQzOwloZWxwCiYjNDM7CSAgU3VwcG9ydCBmb3IgdGhlIERBUFUgVGVsZWNvbSBEQVA4MjExUihJKSBHaWdhYml0IEV0aGVybmV0IFBIWS4KJiM0MzsJICBUaGlzIFBIWSBpcyBkZXNpZ25lZCBmb3IgZW50ZXJwcmlzZSBhbmQgaW5kdXN0cmlhbCBuZXR3b3JraW5nCiYjNDM7CSAgYXBwbGljYXRpb25zLCBzdXBwb3J0aW5nIDEwLzEwMC8xMDAwIE1icHMgb3BlcmF0aW9uLgomIzQzOwkgIFJHTUlJIHdpdGg6IGNvbmZpZ3VyYWJsZSBUWC9SWCBjbG9jayBkZWxheXMsIG9wdGlvbmFsIGZsYWcgdG8gZW5hYmxlCiYjNDM7CSAgMTgwLWRlZ3JlZSBUWCBjbG9jayBwaGFzZSBzaGlmdCBhbmQgaW50ZXJuYWwgcGFja2V0IGdlbmVyYXRvci4KJiM0MzsKIGNvbmZpZyBJQ1BMVVNfUEhZCiAJdHJpc3RhdGUgJiMzNDtJQ1BsdXMgUEhZcyYjMzQ7CiAJaGVscApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlIGIvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlCmluZGV4IGRlNjYwYWU5NDk0NTNkLi5hZDM1NzMzZWI0YmI2MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZQpAQCAtNTMsNiAmIzQzOzUzLDcgQEAgb2JqLSQoQ09ORklHX0JST0FEQ09NX1BIWSkJJiM0Mzs9IGJyb2FkY29tLm8KIG9iai0kKENPTkZJR19DSUNBREFfUEhZKQkmIzQzOz0gY2ljYWRhLm8KIG9iai0kKENPTkZJR19DT1JUSU5BX1BIWSkJJiM0Mzs9IGNvcnRpbmEubwogb2JqLSQoQ09ORklHX0RBVklDT01fUEhZKQkmIzQzOz0gZGF2aWNvbS5vCiYjNDM7b2JqLSQoQ09ORklHX0RBUDgyMTFSX1BIWSkJJiM0Mzs9IGRhcDgyMTFyLm8KIG9iai0kKENPTkZJR19EUDgzNjQwX1BIWSkJJiM0Mzs9IGRwODM2NDAubwogb2JqLSQoQ09ORklHX0RQODM4MjJfUEhZKQkmIzQzOz0gZHA4MzgyMi5vCiBvYmotJChDT05GSUdfRFA4Mzg0OF9QSFkpCSYjNDM7PSBkcDgzODQ4Lm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jIGIvZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLmU2MzgxZmQ4Yzk4YzIwCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMKQEAgLTAsMCAmIzQzOzEsMTkxIEBACiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTAomIzQzOy8qCiYjNDM7ICogRHJpdmVyIGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZLgomIzQzOyAqCiYjNDM7ICogU3BlY2lmaWNhdGlvbnM6CiYjNDM7ICogICAtIElFRUUgODAyLjMgMTBCQVNFLVRlLCAxMDBCQVNFLVRYLCAxMDAwQkFTRS1UCiYjNDM7ICogICAtIElFRUUgODAyLjNhei0yMDEwIEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQKJiM0MzsgKiAgIC0gSUVFRSAxNTg4IFN5bmNFIHN1cHBvcnQKJiM0MzsgKiAgIC0gUkdNSUkKJiM0MzsgKgomIzQzOyAqIEF1dGhvcjogQXJ0ZW0gU2hpbWtvICZsdDthLnNoaW1rby5kZXZAZ21haWwuY29tJmd0OwomIzQzOyAqLwomIzQzOwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9iaXRmaWVsZC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9lcnJuby5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9ldGh0b29sLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2tlcm5lbC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9pb3BvbGwuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvbWlpLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L21vZHVsZS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9uZXRkZXZpY2UuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvb2YuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcGh5LmgmZ3Q7CiYjNDM7CiYjNDM7I2RlZmluZSBEQVA4MjExUl9QSFlfSUQJCQkweDAwMDgwMTFCCiYjNDM7I2RlZmluZSBEQVA4MjExUl9QSFlfSURfTUFTSwkJMHhGRkZGRkZGRgomIzQzOwomIzQzOyNkZWZpbmUgREFQODIxMVJfRVhUX0FERAkJMHgxRQomIzQzOyNkZWZpbmUgREFQODIxMVJfRVhUX0RBVEEJCTB4MUYKJiM0MzsKJiM0MzsjZGVmaW5lIERBUDgyMTFSX1BIWV9DT04JCTB4QTAwMQomIzQzOyNkZWZpbmUgREFQODIxMVJfUEhZX1NXX1JTVAkJQklUKDE1KQomIzQzOwomIzQzOyNkZWZpbmUgREFQODIxMVJfUkdNSUlfQ09OCQkweEEwMDMKJiM0MzsvKiBEZWZhdWx0IGluaXRpYWwgVFggZGVsYXkgdmFsdWUgYnkgZGF0YXNoZWV0LiAqLwomIzQzOyNkZWZpbmUgREFQODIxMVJfSU5JVF9UWF9ERUxfVkFMCTEKJiM0MzsjZGVmaW5lIERBUDgyMTFSX1JHTUlJX1RYX0RFTF9NQVNLCUdFTk1BU0soMywgMCkKJiM0MzsjZGVmaW5lIERBUDgyMTFSX1JHTUlJX1JYX0RFTF9NQVNLCUdFTk1BU0soMTMsIDEwKQomIzQzOyNkZWZpbmUgREFQODIxMVJfUkdNSUlfQ0xLX0lOVkVSVAlCSVQoMTQpCiYjNDM7CiYjNDM7I2RlZmluZSBEQVA4MjExUl9SR01JSV9DT05GSUdfTUFTSwkoREFQODIxMVJfUkdNSUlfQ0xLX0lOVkVSVCB8IFwKJiM0MzsJCQkJCURBUDgyMTFSX1JHTUlJX1JYX0RFTF9NQVNLIHwgXAomIzQzOwkJCQkJREFQODIxMVJfUkdNSUlfVFhfREVMX01BU0spCiYjNDM7CiYjNDM7LyogRGVmYXVsdCBSR01JSSBkZWxheTogMTMgKiAxNTAgPT0gMS45NW5zICovCiYjNDM7I2RlZmluZSBEQVA4MjExUl9ERUZBVUxUX0RFTF9TRUwJMHhECiYjNDM7CiYjNDM7c3RhdGljIGNvbnN0IGludCBkYXA4MjExcl9pbnRlcm5hbF9kZWxheVtdID0gezAsIDE1MCwgMzAwLCA0NTAsIDYwMCwgNzUwLCA5MDAsCiYjNDM7CQkJCQkgICAgICAxMDUwLCAxMjAwLCAxMzUwLCAxNTAwLCAxNjUwLCAxODAwLAomIzQzOwkJCQkJICAgICAgMTk1MCwgMjEwMCwgMjI1MH07CiYjNDM7CiYjNDM7I2RlZmluZSBEQVA4MjExUl9ERUxBWV9TSVpFCUFSUkFZX1NJWkUoZGFwODIxMXJfaW50ZXJuYWxfZGVsYXkpCiYjNDM7CiYjNDM7LyoqCiYjNDM7ICogZGFwODIxMXJfcmVhZF9leHQoKSAtIFJlYWQgZXh0ZW5kZWQgcmVnaXN0ZXIKJiM0MzsgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHN0cnVjdHVyZQomIzQzOyAqIEByZWc6IEV4dGVuZGVkIHJlZ2lzdGVyIGFkZHJlc3MKJiM0MzsgKgomIzQzOyAqIFJlYWRzIGEgUEhZIGV4dGVuZGVkIHJlZ2lzdGVyIHVzaW5nIHRoZSBpbmRpcmVjdCBhY2Nlc3MgbWV0aG9kLgomIzQzOyAqIFRoZSBjYWxsZXIgbXVzdCBob2xkIHRoZSBNRElPIGJ1cyBsb2NrLgomIzQzOyAqCiYjNDM7ICogUmV0dXJuOiBSZWdpc3RlciB2YWx1ZSBvbiBzdWNjZXNzLCBvciBuZWdhdGl2ZSBlcnJvciBjb2RlCiYjNDM7ICovCiYjNDM7c3RhdGljIGludCBkYXA4MjExcl9yZWFkX2V4dChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnKQomIzQzO3sKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJcGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTsKJiM0MzsJcmV0ID0gX19waHlfd3JpdGUocGh5ZGV2LCBEQVA4MjExUl9FWFRfQURELCByZWcpOwomIzQzOwlpZiAocmV0ICZsdDsgMCkKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwomIzQzOwlyZXQgPSBfX3BoeV9yZWFkKHBoeWRldiwgREFQODIxMVJfRVhUX0RBVEEpOwomIzQzO291dDoKJiM0MzsJcGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpOwomIzQzOwlyZXR1cm4gcmV0OwomIzQzO30KJiM0MzsKJiM0MzsvKioKJiM0MzsgKiBkYXA4MjExcl9tb2RpZnlfZXh0KCkgLSBNb2RpZnkgZXh0ZW5kZWQgcmVnaXN0ZXIgYml0cwomIzQzOyAqIEBwaHlkZXY6IFBIWSBkZXZpY2Ugc3RydWN0dXJlCiYjNDM7ICogQHJlZzogRXh0ZW5kZWQgcmVnaXN0ZXIgYWRkcmVzcwomIzQzOyAqIEBtYXNrOiBCaXQgbWFzayBvZiBiaXRzIHRvIGNsZWFyCiYjNDM7ICogQHNldDogQml0IG1hc2sgb2YgYml0cyB0byBzZXQKJiM0MzsgKgomIzQzOyAqIE1vZGlmaWVzIGEgUEhZIGV4dGVuZGVkIHJlZ2lzdGVyIHVzaW5nIHRoZSBpbmRpcmVjdCBhY2Nlc3MgbWV0aG9kLgomIzQzOyAqIE5ldyB2YWx1ZSA9IChvbGQgdmFsdWUgJmFtcDsgfm1hc2spIHwgc2V0LgomIzQzOyAqIFRoZSBjYWxsZXIgbXVzdCBob2xkIHRoZSBNRElPIGJ1cyBsb2NrLgomIzQzOyAqCiYjNDM7ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG9yIG5lZ2F0aXZlIGVycm9yIGNvZGUKJiM0MzsgKi8KJiM0MztzdGF0aWMgaW50IGRhcDgyMTFyX21vZGlmeV9leHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZywgdTE2IG1hc2ssIHUxNiBzZXQpCiYjNDM7ewomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwlwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpOwomIzQzOwlyZXQgPSBfX3BoeV93cml0ZShwaHlkZXYsIERBUDgyMTFSX0VYVF9BREQsIHJlZyk7CiYjNDM7CWlmIChyZXQgJmx0OyAwKQomIzQzOwkJZ290byBvdXQ7CiYjNDM7CiYjNDM7CXJldCA9IF9fcGh5X21vZGlmeShwaHlkZXYsIERBUDgyMTFSX0VYVF9EQVRBLCBtYXNrLCBzZXQpOwomIzQzO291dDoKJiM0MzsJcGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpOwomIzQzOwlyZXR1cm4gcmV0OwomIzQzO30KJiM0MzsKJiM0MzsvKioKJiM0MzsgKiBkYXA4MjExcl9jb25maWdfaW5pdCgpIC0gSW5pdGlhbGl6ZSBQSFkKJiM0MzsgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHN0cnVjdHVyZQomIzQzOyAqCiYjNDM7ICogQ29uZmlndXJlcyB0aGUgUEhZIGR1cmluZyBpbml0aWFsaXphdGlvbjoKJiM0MzsgKiAtIFRYIGNsb2NrIGludmVydGlvbgomIzQzOyAqIC0gUkdNSUkgZGVsYXlzIGJhc2VkIG9uIGludGVyZmFjZSBtb2RlCiYjNDM7ICogLSBTb2Z0d2FyZSByZXNldCB0byBhcHBseSBzZXR0aW5ncyAobG93IGFjdGl2ZSwgc2VsZiBjbGVhcikKJiM0MzsgKgomIzQzOyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBvciBuZWdhdGl2ZSBlcnJvciBjb2RlCiYjNDM7ICovCiYjNDM7c3RhdGljIGludCBkYXA4MjExcl9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQomIzQzO3sKJiM0MzsJc3RydWN0IGRldmljZV9ub2RlICpwaHlkZXZfbm9kZSA9IHBoeWRldi0mZ3Q7bWRpby5kZXYub2Zfbm9kZTsKJiM0MzsJdTE2IHNldCA9IDAsIHZhbCA9IDA7CiYjNDM7CWludCByZXQ7CiYjNDM7CXMzMiBpbnRlcm5hbF9kZWxheTsKJiM0MzsKJiM0MzsJaWYgKG9mX3Byb3BlcnR5X3JlYWRfYm9vbChwaHlkZXZfbm9kZSwgJiMzNDtkYXB1LHR4LWludmVydGVkLWNsayYjMzQ7KSkKJiM0MzsJCXNldCB8PSBEQVA4MjExUl9SR01JSV9DTEtfSU5WRVJUOwomIzQzOwomIzQzOwlpbnRlcm5hbF9kZWxheSA9IHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkocGh5ZGV2LCBkYXA4MjExcl9pbnRlcm5hbF9kZWxheSwKJiM0MzsJCQkJCQlEQVA4MjExUl9ERUxBWV9TSVpFLCB0cnVlKTsKJiM0MzsJaWYgKGludGVybmFsX2RlbGF5ICZsdDsgMCkgewomIzQzOwkJaWYgKHBoeWRldi0mZ3Q7aW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSSkKJiM0MzsJCQlpbnRlcm5hbF9kZWxheSA9IDA7CiYjNDM7CQllbHNlCiYjNDM7CQkJaW50ZXJuYWxfZGVsYXkgPSBEQVA4MjExUl9ERUZBVUxUX0RFTF9TRUw7CiYjNDM7CX0KJiM0MzsKJiM0MzsJc2V0IHw9IEZJRUxEX1BSRVAoREFQODIxMVJfUkdNSUlfUlhfREVMX01BU0ssIGludGVybmFsX2RlbGF5KTsKJiM0MzsKJiM0MzsJaW50ZXJuYWxfZGVsYXkgPSBwaHlfZ2V0X2ludGVybmFsX2RlbGF5KHBoeWRldiwgZGFwODIxMXJfaW50ZXJuYWxfZGVsYXksCiYjNDM7CQkJCQkJREFQODIxMVJfREVMQVlfU0laRSwgZmFsc2UpOwomIzQzOwlpZiAoaW50ZXJuYWxfZGVsYXkgJmx0OyAwKSB7CiYjNDM7CQlpZiAocGh5ZGV2LSZndDtpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJKQomIzQzOwkJCWludGVybmFsX2RlbGF5ID0gREFQODIxMVJfSU5JVF9UWF9ERUxfVkFMOwomIzQzOwkJZWxzZQomIzQzOwkJCWludGVybmFsX2RlbGF5ID0gREFQODIxMVJfREVGQVVMVF9ERUxfU0VMOwomIzQzOwl9CiYjNDM7CiYjNDM7CXNldCB8PSBGSUVMRF9QUkVQKERBUDgyMTFSX1JHTUlJX1RYX0RFTF9NQVNLLCBpbnRlcm5hbF9kZWxheSk7CiYjNDM7CiYjNDM7CXJldCA9IGRhcDgyMTFyX21vZGlmeV9leHQocGh5ZGV2LCBEQVA4MjExUl9QSFlfQ09OLCBEQVA4MjExUl9QSFlfU1dfUlNULCAwKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiYjNDM7CS8qIFdhaXQgZm9yIHJlc2V0IHNlbGYtY2xlYXIgKG1heCAyMDAgdXMpICovCiYjNDM7CXJldCA9IHJlYWRfcG9sbF90aW1lb3V0KGRhcDgyMTFyX3JlYWRfZXh0LCB2YWwsCiYjNDM7CQkJCSh2YWwgJmFtcDsgREFQODIxMVJfUEhZX1NXX1JTVCksCiYjNDM7CQkJCTIwLCAyMDAsIGZhbHNlLCBwaHlkZXYsIERBUDgyMTFSX1BIWV9DT04pOwomIzQzOwlpZiAocmV0KQomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsKJiM0MzsJcmV0ID0gZGFwODIxMXJfbW9kaWZ5X2V4dChwaHlkZXYsIERBUDgyMTFSX1JHTUlJX0NPTiwgREFQODIxMVJfUkdNSUlfQ09ORklHX01BU0ssIHNldCk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGRhcDgyMTFyX2RyaXZlcltdID0gewomIzQzOwl7CiYjNDM7CQlQSFlfSURfTUFUQ0hfRVhBQ1QoREFQODIxMVJfUEhZX0lEKSwKJiM0MzsJCS5uYW1lCQk9ICYjMzQ7REFQODIxMVIgR2lnYWJpdCBFdGhlcm5ldCYjMzQ7LAomIzQzOwkJLmNvbmZpZ19pbml0CT0gZGFwODIxMXJfY29uZmlnX2luaXQsCiYjNDM7CQkucmVhZF9zdGF0dXMJPSBnZW5waHlfcmVhZF9zdGF0dXMsCiYjNDM7CQkuc2V0X2xvb3BiYWNrCT0gZ2VucGh5X2xvb3BiYWNrLAomIzQzOwkJLmNvbmZpZ19hbmVnCT0gZ2VucGh5X2NvbmZpZ19hbmVnLAomIzQzOwkJLnN1c3BlbmQJPSBnZW5waHlfc3VzcGVuZCwKJiM0MzsJCS5yZXN1bWUJCT0gZ2VucGh5X3Jlc3VtZSwKJiM0MzsJfSwKJiM0Mzt9OwomIzQzO21vZHVsZV9waHlfZHJpdmVyKGRhcDgyMTFyX2RyaXZlcik7CiYjNDM7CiYjNDM7TU9EVUxFX0RFU0NSSVBUSU9OKCYjMzQ7REFQODIxMVIgR2lnYWJpdCBFdGhlcm5ldCBQSFkgZHJpdmVyJiMzNDspOwomIzQzO01PRFVMRV9BVVRIT1IoJiMzNDtBcnRlbSBTaGlta28gJmx0O2Euc2hpbWtvLmRldkBnbWFpbC5jb20mZ3Q7JiMzNDspOwomIzQzO01PRFVMRV9MSUNFTlNFKCYjMzQ7R1BMJiMzNDspOwomIzQzOwomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgZGFwODIxMXJfdGJbXSA9IHsKJiM0MzsJeyBEQVA4MjExUl9QSFlfSUQsIERBUDgyMTFSX1BIWV9JRF9NQVNLIH0sCiYjNDM7CXsgLyogc2VudGluZWwgKi8gfQomIzQzO307CiYjNDM7TU9EVUxFX0RFVklDRV9UQUJMRShtZGlvLCBkYXA4MjExcl90Yik7CiYjNDM7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIzOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2NDAKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxMTIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgREFQODIxMVIgR2lnYWJpdCBFdGhlcm5ldCBQSFkgRHJpdmVyKioKCk9rYXksIHNvIHdlIGhhdmUgYSBuZXcgUEhZIGRyaXZlciBoZXJlIGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpLiBMb29rcyBsaWtlIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBhZGRpdGlvbjogbmV3IGJpbmRpbmdzLCBLY29uZmlnLCBNYWtlZmlsZSBlbnRyeSwgYW5kIHRoZSBkcml2ZXIgaXRzZWxmLiBNeSBpbml0aWFsIHRob3VnaHRzIGFyZSBhcm91bmQgaG93IHdlIGNhbiBhY3R1YWxseSB0ZXN0IHRoaXMgdGhpbmcgZWZmZWN0aXZlbHkuCgpGaXJzdCwgSSBuZWVkIHRvIGtub3cgaWYgaXQmIzM5O3MgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVS4gUEhZIGRyaXZlcnMgYXJlIHR5cGljYWxseSBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBNRElPIGJ1cy4gRW5hYmxpbmcgYENPTkZJR19EQVA4MjExUl9QSFlgIHdpbGwgcmVnaXN0ZXIgdGhlIGRyaXZlciwgd2hpY2ggaXMgc3RlcCBvbmUuIEJ1dCB3aWxsIGl0IGdldCAqcHJvYmVkKj8gQ2FuIHdlIGZ1enogaXQ/CgpUcmFkaXRpb25hbGx5LCB5b3UmIzM5O2QgbmVlZCBhIHZpcnR1YWwgTURJTyBidXMgc2V0IHVwLCBtYXliZSB0aHJvdWdoIHNvbWV0aGluZyBsaWtlIGBtYWNiYCBvciBhIGR1bW15IE1ESU8gYnVzLCBvciBhbiBlbXVsYXRlZCBOSUMuIE5vdywgU3l6a2FsbGVyICp1c3VhbGx5KiBkb2VzbiYjMzk7dCBoYXZlIGEgZ2VuZXJpYyB3YXkgdG8ganVzdCBpbnN0YW50aWF0ZSBhcmJpdHJhcnkgUEhZcyBvdXQgb2YgdGhlIGJsdWUsIHVubGVzcyB3ZSBjYW4gaW5qZWN0IGFuIE1ESU8gZGV2aWNlIG9yIGlmIGl0JiMzOTtzIHBhcnQgb2YgYSBuZXR3b3JrIGRldmljZSB0aGF0IGNhbiBiZSBpbnN0YW50aWF0ZWQuIFdhaXQsIGRpZG4mIzM5O3QgSSByZWFkIHNvbWV0aGluZyBhYm91dCBTeXprYWxsZXIgaGF2aW5nICpzb21lKiBzdXBwb3J0IHZpYSBuZXRsaW5rIG9yIGlvY3RsIGlmIHRoZSBQSFkgaXMgKmF0dGFjaGVkKj8gQnV0IHRvIGF0dGFjaCBhIHNwZWNpZmljIFBIWSwgeW91IGVpdGhlciBuZWVkIGEgRFQgb3ZlcmxheSBvciBhIGRyaXZlciB0aGF0ICpwcm9iZXMqIGl0IGluIHRoZSBmaXJzdCBwbGFjZSwgb3IuLi4gY291bGQgU3l6a2FsbGVyIGNyZWF0ZSBpdHMgb3duIHZpcnR1YWwgTURJTyBidXM/IEhtbSwgbm8sIGJ1dCB0aGVyZSBpcyB0aGUgYG1kaW9gIGJ1cyBhbmQgdGhlIGBwaHlgIHN1YnN5c3RlbS4KCkxldCYjMzk7cyBzZWUgaWYgdGhlcmUmIzM5O3MgYSBzcGVjaWZpYyBwYXRoIHRvIHRyaWdnZXIgdGhpcyBkcml2ZXIuIFRoZSBkcml2ZXIgcmVnaXN0ZXJzIGl0c2VsZiB1c2luZyBgbW9kdWxlX3BoeV9kcml2ZXIoZGFwODIxMXJfZHJpdmVyKWAuIFRoZSBwcm9iaW5nIGhhcHBlbnMgYmFzZWQgb24gUEhZIElEcyBvbiB0aGUgTURJTyBidXMuIFNvLCB0aGUgcXVlc3Rpb24gaXM6IGNhbiB3ZSB0cmlnZ2VyIGBkYXA4MjExcl9jb25maWdfaW5pdGA/CgpJZiB3ZSBjYW4gY3JlYXRlIGEgZHVtbXkgTURJTyBkZXZpY2Ugd2l0aCB0aGUgcmlnaHQgUEhZIElEIOKAkyBgMHgwMDA4MDExQmAg4oCTIHRoZSBQSFkgbWFjaGluZXJ5IHNob3VsZCBwcm9iZSBpdCBhbmQgY2FsbCBgY29uZmlnX2luaXRgLiBJdCBsb29rcyBsaWtlIGl0IGNvdWxkIGJlIHdvcnRoIHRyeWluZyB0byBmdXp6LCBldmVuIHRob3VnaCBpdCYjMzk7cyBhIHNpbXBsZSBQSFkgZHJpdmVyLiBMZXQmIzM5O3MgZGlnIGludG8gYGRhcDgyMTFyX2NvbmZpZ19pbml0YCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBhdHRhY2sgc3VyZmFjZS4KCmBgYGMKc3RhdGljIGludCBkYXA4MjExcl9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQp7CglzdHJ1Y3QgZGV2aWNlX25vZGUgKnBoeWRldl9ub2RlID0gcGh5ZGV2LSZndDttZGlvLmRldi5vZl9ub2RlOwouLi4KCWlmIChvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wocGh5ZGV2X25vZGUsICYjMzQ7ZGFwdSx0eC1pbnZlcnRlZC1jbGsmIzM0OykpCi4uLgoJaW50ZXJuYWxfZGVsYXkgPSBwaHlfZ2V0X2ludGVybmFsX2RlbGF5KHBoeWRldiwgZGFwODIxMXJfaW50ZXJuYWxfZGVsYXksCgkJCQkJCURBUDgyMTFSX0RFTEFZX1NJWkUsIHRydWUpOwouLi4KCXJldCA9IGRhcDgyMTFyX21vZGlmeV9leHQocGh5ZGV2LCBEQVA4MjExUl9QSFlfQ09OLCBEQVA4MjExUl9QSFlfU1dfUlNULCAwKTsKLi4uCglyZXQgPSByZWFkX3BvbGxfdGltZW91dChkYXA4MjExcl9yZWFkX2V4dCwgdmFsLAoJCQkJKHZhbCAmYW1wOyBEQVA4MjExUl9QSFlfU1dfUlNUKSwKCQkJCTIwLCAyMDAsIGZhbHNlLCBwaHlkZXYsIERBUDgyMTFSX1BIWV9DT04pOwouLi4KCXJldCA9IGRhcDgyMTFyX21vZGlmeV9leHQocGh5ZGV2LCBEQVA4MjExUl9SR01JSV9DT04sIERBUDgyMTFSX1JHTUlJX0NPTkZJR19NQVNLLCBzZXQpOwouLi4KfQpgYGAKCkl0JiMzOTtzIHByZXR0eSBzdGFuZGFyZCwgcmlnaHQ/IERUIHByb3BlcnRpZXMsIGEgZmV3IE1ESU8gcmVhZHMgYW5kIHdyaXRlcy4gTm90IGEgaHVnZSBhdHRhY2sgc3VyZmFjZSwgYnV0IHN0aWxsIHdvcnRoIGludmVzdGlnYXRpbmcuCgpTbyB0aGUgcmVhbCBxdWVzdGlvbiBpczogQ2FuIHdlIG1ha2UgdGhpcyBkcml2ZXIgcmVhY2hhYmxlIGluIFFFTVU/IFllcywgaWYgd2UgY2FuIGluc3RhbnRpYXRlIE1ESU8gZGV2aWNlcy4gU3l6a2FsbGVyIGRvZXNuJiMzOTt0IGhhdmUgYSAqZ2VuZXJpYyogTURJTyBkZXZpY2UgaW5zdGFudGlhdG9yLCBidXQgdGhlcmUgbWlnaHQgYmUgb3RoZXIgd2F5cy4gSSByZW1lbWJlciBzb21ldGhpbmcgYWJvdXQgYHN5el9nZW5ldGxpbmtgLi4uIGJ1dCBmb3IgUEhZcyB0aGVyZSYjMzk7cyBhbHNvIGBpb2N0bChTSU9DU01JSVJFRylgLiBUaGF0IGNvdWxkIGJlIGhlbHBmdWwsIGJ1dCB3ZSBzdGlsbCBuZWVkIHRoZSBNRElPIGJ1cyB3aXRoIHRoYXQgbWFnaWMgSUQ6IGAweDAwMDgwMTFCYC4KCkkgcmVjYWxsIHNvbWV0aGluZyBhYm91dCBgZHJpdmVycy9uZXQvcGh5L21kaW8tbW9ja3VwLmNgLiBJIGhhdmUgdG8gY2hlY2suIENhbiBTeXprYWxsZXIgY3JlYXRlICpzdWNoKiBhIGRldmljZT8gVGltZSB0byB1c2UgbXkgQVBJIGtub3dsZWRnZS4gSSYjMzk7bGwgdXNlIGBkZWZhdWx0X2FwaTpncmVwcGVyYCB0byBzZWFyY2ggZm9yICYjMzQ7bWRpbyYjMzQ7IG9yICYjMzQ7cGh5JiMzNDsgaW5qZWN0aW9uIGluIGJvdGggU3l6a2FsbGVyIGFuZCB0aGUga2VybmVsIGl0c2VsZi4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgYW5zd2VycyBJIG5lZWQuCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMzowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21kaW8uKm1vY2t1cCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMjM6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzgyMAoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcml6ZWQgdGhvdWdodCBwcm9jZXNzLCBwcmVzZW50ZWQgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOgoKKipNRElPIERyaXZlciBJbnZlc3RpZ2F0aW9uKioKCkFscmlnaHQsIGJlZm9yZSBkaXZpbmcgdG9vIGRlZXAsIEkgc2hvdWxkIHByb2JhYmx5IHRha2UgYSBxdWljayBsb29rIHRvIHNlZSBpZiBhIHZpcnR1YWwgTURJTyBkcml2ZXIgaXMgZXZlbiBwcmVzZW50LiBJdCYjMzk7cyBhbHdheXMgYmVzdCB0byBzdGFydCB3aXRoIHRoZSBiYXNpY3MgYW5kIHJ1bGUgb3V0IHRoZSBzaW1wbGVzdCBleHBsYW5hdGlvbnMgZmlyc3QuIElmIG9uZSAqaXMqIGF2YWlsYWJsZSwgaXQgbWlnaHQgc2F2ZSBtZSBhIGxvdCBvZiB0aW1lIGRpZ2dpbmcgYXJvdW5kIGluIG1vcmUgY29tcGxleCBhcmVhcy4gVGhhdCYjMzk7cyB1c3VhbGx5IG15IGdvLXRvIGZpcnN0IHN0ZXAgZm9yIGRlYnVnZ2luZyB0aGlzIGtpbmQgb2YgdGhpbmcsIHNvIGxldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290IGluIHRoYXQgc3BhY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMjM6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmlydHVhbC4qbWRpbyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21kaW8tZ3Bpby55YW1sPTE3PXByb3BlcnRpZXM6XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tZGlvLWdwaW8ueWFtbC0xOS0gICAgZW51bTpcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWRpby1ncGlvLnlhbWw6MjA6ICAgICAgLSB2aXJ0dWFsLG1kaW8tZ3Bpb1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tZGlvLWdwaW8ueWFtbC0yMS0gICAgICAtIG1pY3JvY2hpcCxtZGlvLXNtaTBcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21kaW8tZ3Bpby55YW1sPTQxPWV4YW1wbGVzOlxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWRpby1ncGlvLnlhbWwtNDctICAgIG1kaW8wOiBtZGlvIHtcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWRpby1ncGlvLnlhbWw6NDg6ICAgICAgY29tcGF0aWJsZSA9IFwmIzM0O3ZpcnR1YWwsbWRpby1ncGlvXCYjMzQ7O1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tZGlvLWdwaW8ueWFtbC00OS0gICAgICAjYWRkcmVzcy1jZWxscyA9IFx1MDAzYzFcdTAwM2U7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1kbGluay1kbnMtMzEzLmR0cz0xNTI9XHRtZGlvMDogbWRpbyB7XG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLWRsaW5rLWRucy0zMTMuZHRzOjE1MzpcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3ZpcnR1YWwsbWRpby1ncGlvXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1kbGluay1kbnMtMzEzLmR0cy0xNTQtXHRcdC8qIFVzZXMgTURDIGFuZCBNRElPICovXG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1uYXM0MjEwYi5kdHM9Njc9XHRtZGlvMDogbWRpbyB7XG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLW5hczQyMTBiLmR0czo2ODpcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3ZpcnR1YWwsbWRpby1ncGlvXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1uYXM0MjEwYi5kdHMtNjktXHRcdGdwaW9zID0gXHUwMDNjXHUwMDI2Z3BpbzAgMjIgR1BJT19BQ1RJVkVfSElHSFx1MDAzZSwgLyogTURDICovXG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1uYXM0MjIwYi5kdHM9NjY9XHRtZGlvMDogbWRpbyB7XG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLW5hczQyMjBiLmR0czo2NzpcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3ZpcnR1YWwsbWRpby1ncGlvXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1uYXM0MjIwYi5kdHMtNjgtXHRcdGdwaW9zID0gXHUwMDNjXHUwMDI2Z3BpbzAgMjIgR1BJT19BQ1RJVkVfSElHSFx1MDAzZSwgLyogTURDICovXG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1uczI1MDIuZHRzPTMyPVx0bWRpbzA6IG1kaW8ge1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1uczI1MDIuZHRzOjMzOlx0XHRjb21wYXRpYmxlID0gXCYjMzQ7dmlydHVhbCxtZGlvLWdwaW9cJiMzNDs7XG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLW5zMjUwMi5kdHMtMzQtXHRcdGdwaW9zID0gXHUwMDNjXHUwMDI2Z3BpbzAgMjIgR1BJT19BQ1RJVkVfSElHSFx1MDAzZSwgLyogTURDICovXG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1ydXQxeHguZHRzPTU5PVx0bWRpbzA6IG1kaW8ge1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1ydXQxeHguZHRzOjYwOlx0XHRjb21wYXRpYmxlID0gXCYjMzQ7dmlydHVhbCxtZGlvLWdwaW9cJiMzNDs7XG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXJ1dDF4eC5kdHMtNjEtXHRcdGdwaW9zID0gXHUwMDNjXHUwMDI2Z3BpbzAgMjIgR1BJT19BQ1RJVkVfSElHSFx1MDAzZSwgLyogTURDICovXG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1zbDkzNTEyci5kdHM9NzE9XHRtZGlvMDogbWRpbyB7XG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXNsOTM1MTJyLmR0czo3MjpcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3ZpcnR1YWwsbWRpby1ncGlvXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1zbDkzNTEyci5kdHMtNzMtXHRcdC8qIFVzZXMgTURDIGFuZCBNRElPICovXG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1zcTIwMS5kdHM9NTY9XHRtZGlvMDogbWRpbyB7XG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXNxMjAxLmR0czo1NzpcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3ZpcnR1YWwsbWRpby1ncGlvXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1zcTIwMS5kdHMtNTgtXHRcdC8qIFVzZXMgTURDIGFuZCBNRElPICovXG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1zc2kxMzI4LmR0cz0zMj1cdG1kaW8wOiBtZGlvIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktc3NpMTMyOC5kdHM6MzM6XHRcdGNvbXBhdGlibGUgPSBcJiMzNDt2aXJ0dWFsLG1kaW8tZ3Bpb1wmIzM0OztcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktc3NpMTMyOC5kdHMtMzQtXHRcdGdwaW9zID0gXHUwMDNjXHUwMDI2Z3BpbzAgMjIgR1BJT19BQ1RJVkVfSElHSFx1MDAzZSwgLyogTURDICovXG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS12ZXJiYXRpbS1zMDh2MTkwMS1kMS5kdHM9NTc9XHRtZGlvMDogbWRpbyB7XG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXZlcmJhdGltLXMwOHYxOTAxLWQxLmR0czo1ODpcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3ZpcnR1YWwsbWRpby1ncGlvXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS12ZXJiYXRpbS1zMDh2MTkwMS1kMS5kdHMtNTktXHRcdC8qIFVzZXMgTURDIGFuZCBNRElPICovXG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS13YmQxMTEuZHRzPTcxPVx0bWRpbzA6IG1kaW8ge1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS13YmQxMTEuZHRzOjcyOlx0XHRjb21wYXRpYmxlID0gXCYjMzQ7dmlydHVhbCxtZGlvLWdwaW9cJiMzNDs7XG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXdiZDExMS5kdHMtNzMtXHRcdGdwaW9zID0gXHUwMDNjXHUwMDI2Z3BpbzAgMjIgR1BJT19BQ1RJVkVfSElHSFx1MDAzZSwgLyogTURDICovXG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS13YmQyMjIuZHRzPTcwPVx0bWRpbzA6IG1kaW8ge1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS13YmQyMjIuZHRzOjcxOlx0XHRjb21wYXRpYmxlID0gXCYjMzQ7dmlydHVhbCxtZGlvLWdwaW9cJiMzNDs7XG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXdiZDIyMi5kdHMtNzItXHRcdGdwaW9zID0gXHUwMDNjXHUwMDI2Z3BpbzAgMjIgR1BJT19BQ1RJVkVfSElHSFx1MDAzZSwgLyogTURDICovXG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg1MS16aWktcmR1MS5kdHM9MTYzPVx0bWRpb19ncGlvOiBtZGlvIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NTEtemlpLXJkdTEuZHRzOjE2NDpcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3ZpcnR1YWwsbWRpby1ncGlvXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg1MS16aWktcmR1MS5kdHMtMTY1LVx0XHRwaW5jdHJsLW5hbWVzID0gXCYjMzQ7ZGVmYXVsdFwmIzM0Oztcbi0tXG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDUxLXppaS1zY3UyLW1lenouZHRzPTQwPVx0bWRpb19ncGlvOiBtZGlvIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NTEtemlpLXNjdTItbWV6ei5kdHM6NDE6XHRcdGNvbXBhdGlibGUgPSBcJiMzNDt2aXJ0dWFsLG1kaW8tZ3Bpb1wmIzM0OztcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NTEtemlpLXNjdTItbWV6ei5kdHMtNDItXHRcdHBpbmN0cmwtbmFtZXMgPSBcJiMzNDtkZWZhdWx0XCYjMzQ7O1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NnEtYng1MHYzLmR0c2k9OTc9XHRtZGlvMDogbWRpbyB7XG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZxLWJ4NTB2My5kdHNpOjk4Olx0XHRjb21wYXRpYmxlID0gXCYjMzQ7dmlydHVhbCxtZGlvLWdwaW9cJiMzNDs7XG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZxLWJ4NTB2My5kdHNpLTk5LVx0XHRncGlvcyA9IFx1MDAzY1x1MDAyNmdwaW8yIDUgR1BJT19BQ1RJVkVfSElHSFx1MDAzZSwgLyogbWRjICovXG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg2cWRsLXppaS1yZHUyLmR0c2k9MTk9XHRtZGlvMTogbWRpbyB7XG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZxZGwtemlpLXJkdTIuZHRzaToyMDpcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3ZpcnR1YWwsbWRpby1ncGlvXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg2cWRsLXppaS1yZHUyLmR0c2ktMjEtXHRcdCNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbi0tXG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZxcC1wcnR3ZDMuZHRzPTUzPVx0bWRpbyB7XG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZxcC1wcnR3ZDMuZHRzOjU0Olx0XHRjb21wYXRpYmxlID0gXCYjMzQ7dmlydHVhbCxtZGlvLWdwaW9cJiMzNDs7XG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZxcC1wcnR3ZDMuZHRzLTU1LVx0XHRwaW5jdHJsLW5hbWVzID0gXCYjMzQ7ZGVmYXVsdFwmIzM0Oztcbi0tXG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC1yYjMwMTEuZHRzPTU1PVx0bWRpbzA6IG1kaW8tMCB7XG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC1yYjMwMTEuZHRzLTU2LVx0XHRzdGF0dXMgPSBcJiMzNDtva2F5XCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQtcmIzMDExLmR0czo1NzpcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3ZpcnR1YWwsbWRpby1ncGlvXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQtcmIzMDExLmR0cy01OC1cdFx0Z3Bpb3MgPSBcdTAwM2NcdTAwMjZxY29tX3Bpbm11eCAxIEdQSU9fQUNUSVZFX0hJR0hcdTAwM2UsXG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQtcmIzMDExLmR0cz0xODA9XHRtZGlvMTogbWRpby0xIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LXJiMzAxMS5kdHMtMTgxLVx0XHRzdGF0dXMgPSBcJiMzNDtva2F5XCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQtcmIzMDExLmR0czoxODI6XHRcdGNvbXBhdGlibGUgPSBcJiMzNDt2aXJ0dWFsLG1kaW8tZ3Bpb1wmIzM0OztcbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LXJiMzAxMS5kdHMtMTgzLVx0XHRncGlvcyA9IFx1MDAzY1x1MDAyNnFjb21fcGlubXV4IDExIEdQSU9fQUNUSVZFX0hJR0hcdTAwM2UsXG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDEzM2MtcHJpaG1iLmR0cz0xMTg9XHRtZGlvMDogbWRpbyB7XG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTMzYy1wcmlobWIuZHRzOjExOTpcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3ZpcnR1YWwsbWRpby1ncGlvXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDEzM2MtcHJpaG1iLmR0cy0xMjAtXHRcdCNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbi0tXG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTUxYS1wcnR0MWMuZHRzPTM4PVx0bWRpbzA6IG1kaW8ge1xuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDE1MWEtcHJ0dDFjLmR0czozOTpcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O3ZpcnR1YWwsbWRpby1ncGlvXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDE1MWEtcHJ0dDFjLmR0cy00MC1cdFx0I2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxNTFhLXBydHQxbC5kdHNpPTQ0PVx0bWRpbzA6IG1kaW8ge1xuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDE1MWEtcHJ0dDFsLmR0c2k6NDU6XHRcdGNvbXBhdGlibGUgPSBcJiMzNDt2aXJ0dWFsLG1kaW8tZ3Bpb1wmIzM0OztcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxNTFhLXBydHQxbC5kdHNpLTQ2LVx0XHQjYWRkcmVzcy1jZWxscyA9IFx1MDAzYzFcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OG1xLXppaS11bHRyYS5kdHNpPTE4PVx0bWRpbzA6IG1kaW8ge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OG1xLXppaS11bHRyYS5kdHNpOjE5Olx0XHRjb21wYXRpYmxlID0gXCYjMzQ7dmlydHVhbCxtZGlvLWdwaW9cJiMzNDs7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg4bXEtemlpLXVsdHJhLmR0c2ktMjAtXHRcdHBpbmN0cmwtbmFtZXMgPSBcJiMzNDtkZWZhdWx0XCYjMzQ7O1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM9MTk3PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG1kaW9fZ3Bpb19vZl9tYXRjaFtdID0ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzoxOTg6XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7dmlydHVhbCxtZGlvLWdwaW9cJiMzNDssIH0sXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTE5OS1cdHsgLmNvbXBhdGlibGUgPSBcJiMzNDttaWNyb2NoaXAsbWRpby1zbWkwXCYjMzQ7IH0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMjM6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyNjYKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAyNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ3VycmVudCBBc3Nlc3NtZW50IG9mIHRoZSBQSFkgRHJpdmVyIFByb2JlIFNpdHVhdGlvbioqCgpPa2F5LCBzbyB0aGUgYHZpcnR1YWwsbWRpby1ncGlvYCBkcml2ZXIgaXNuJiMzOTt0IGEgKnJlYWwqIHZpcnR1YWwgYnVzOyBpdCBqdXN0IGJpdC1iYW5ncyBNRElPIG92ZXIgR1BJT3MuIFRoYXQmIzM5O3Mgbm90IGhlbHBmdWwgaW4gdGhpcyBzY2VuYXJpby4gTXkgcHJpbWFyeSBjb25jZXJuIHJpZ2h0IG5vdyBpcyBmaWd1cmluZyBvdXQgaG93IHRvIHByb2JlIHRoaXMgUEhZIGRyaXZlciAoYGRhcDgyMTFyX2NvbmZpZ19pbml0YCB0byBiZSBwcmVjaXNlKSAqd2l0aG91dCogYW4gYWN0dWFsIGhhcmR3YXJlIFBIWS4gSSBuZWVkIGEgd2F5IHRvIGdldCB0aGUgZHJpdmVyJiMzOTtzIGNvZGUgZXhlY3V0ZWQuCgpJIGNvbnNpZGVyZWQgYGRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuY2AsIGJ1dCBpdCBqdXN0IGRlZmluZXMgYSAqZml4ZWQqIFBIWSwgcmVnaXN0ZXJzIGl0IHdpdGggaXRzICpvd24qIFBIWSBJRCwgYW5kIGRvZXNuJiMzOTt0IG9mZmVyIGEgbWVjaGFuaXNtIHRvIHByb2JlIGFuIGFyYml0cmFyeSBkcml2ZXIuIFRoYXQgd29uJiMzOTt0IGRvIGl0LiBJJiMzOTttIHN0dWNrLCBJIG5lZWQgdG8gZmluZCBhIHdheSB0byByZWFjaCB0aGUgYGRhcDgyMTFyX2NvbmZpZ19pbml0YCBmdW5jdGlvbiB3aXRob3V0IGFuIGluc3RhbnRpYXRlZCBQSFkuCgpUaGVuIEkgaGFkIGEgc3BhcmsuLi5zeXprYWxsZXIgaGFzIGBzeXpfdXNiX2Nvbm5lY3RgLiBDb3VsZCBhIFVTQi10by1NRElPIGJyaWRnZSBiZSB0aGUga2V5PyBUaGF0IG1pZ2h0IHdvcmsgaWYgSSBrbmV3IHRoZSBQSFkgSUQsIGJ1dCB0aGF0JiMzOTtzIHN0aWxsIGFuIGFzc3VtcHRpb24uCgpTbywgYXJlIHRoZXJlIGFueSBnZW5lcmljIE1ESU8gYnVzIGVtdWxhdGlvbnMgb3IgZHVtbXkgZHJpdmVycyBpbiB0aGUga2VybmVsIGFueXdoZXJlPyBJIG5lZWQgdG8gY2hlY2sgdGhlIGBkcml2ZXJzL25ldC9waHkvYCBkaXJlY3RvcnkgZm9yIGFueSBzb3J0IG9mIG1vY2t1cCB0aGF0IEkgY291bGQgdXNlLiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIG5leHQgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMzowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDthZGluLmMmIzM0OywKICAgICYjMzQ7YWRpbjExMDAuYyYjMzQ7LAogICAgJiMzNDthaXJfYW44ODAxLmMmIzM0OywKICAgICYjMzQ7YWlyX2VuODgxMWguYyYjMzQ7LAogICAgJiMzNDthaXJfcGh5X2xpYi5jJiMzNDssCiAgICAmIzM0O2Fpcl9waHlfbGliLmgmIzM0OywKICAgICYjMzQ7YW1kLmMmIzM0OywKICAgICYjMzQ7YXMyMXh4eC5jJiMzNDssCiAgICAmIzM0O2F4ODg3OTZiLmMmIzM0OywKICAgICYjMzQ7YXg4ODc5NmJfcnVzdC5ycyYjMzQ7LAogICAgJiMzNDtiY20tY3lnbnVzLmMmIzM0OywKICAgICYjMzQ7YmNtLXBoeS1saWIuYyYjMzQ7LAogICAgJiMzNDtiY20tcGh5LWxpYi5oJiMzNDssCiAgICAmIzM0O2JjbS1waHktcHRwLmMmIzM0OywKICAgICYjMzQ7YmNtNTQxNDAuYyYjMzQ7LAogICAgJiMzNDtiY202M3h4LmMmIzM0OywKICAgICYjMzQ7YmNtN3h4eC5jJiMzNDssCiAgICAmIzM0O2JjbTg0ODgxLmMmIzM0OywKICAgICYjMzQ7YmNtODd4eC5jJiMzNDssCiAgICAmIzM0O2Jyb2FkY29tLmMmIzM0OywKICAgICYjMzQ7Y2ljYWRhLmMmIzM0OywKICAgICYjMzQ7Y29ydGluYS5jJiMzNDssCiAgICAmIzM0O2RhcDgyMTFyLmMmIzM0OywKICAgICYjMzQ7ZGF2aWNvbS5jJiMzNDssCiAgICAmIzM0O2RwODM2NDAuYyYjMzQ7LAogICAgJiMzNDtkcDgzNjQwX3JlZy5oJiMzNDssCiAgICAmIzM0O2RwODM4MjIuYyYjMzQ7LAogICAgJiMzNDtkcDgzODQ4LmMmIzM0OywKICAgICYjMzQ7ZHA4Mzg2Ny5jJiMzNDssCiAgICAmIzM0O2RwODM4NjkuYyYjMzQ7LAogICAgJiMzNDtkcDgzdGM4MTEuYyYjMzQ7LAogICAgJiMzNDtkcDgzdGQ1MTAuYyYjMzQ7LAogICAgJiMzNDtkcDgzdGc3MjAuYyYjMzQ7LAogICAgJiMzNDtldDEwMTFjLmMmIzM0OywKICAgICYjMzQ7Zml4ZWRfcGh5LmMmIzM0OywKICAgICYjMzQ7aWNwbHVzLmMmIzM0OywKICAgICYjMzQ7aW50ZWwteHdheS5jJiMzNDssCiAgICAmIzM0O2xpbmttb2RlLmMmIzM0OywKICAgICYjMzQ7bHh0LmMmIzM0OywKICAgICYjMzQ7bWFydmVsbC04OHEyeHh4LmMmIzM0OywKICAgICYjMzQ7bWFydmVsbC04OHgyMjIyLmMmIzM0OywKICAgICYjMzQ7bWFydmVsbC5jJiMzNDssCiAgICAmIzM0O21hcnZlbGwxMGcuYyYjMzQ7LAogICAgJiMzNDttZGlvLW9wZW4tYWxsaWFuY2UuaCYjMzQ7LAogICAgJiMzNDttZGlvX2J1cy5jJiMzNDssCiAgICAmIzM0O21kaW9fYnVzX3Byb3ZpZGVyLmMmIzM0OywKICAgICYjMzQ7bWRpb19kZXZpY2UuYyYjMzQ7LAogICAgJiMzNDttZGlvX2RldnJlcy5jJiMzNDssCiAgICAmIzM0O21lc29uLWd4bC5jJiMzNDssCiAgICAmIzM0O21pY3JlbC5jJiMzNDssCiAgICAmIzM0O21pY3JvY2hpcC5jJiMzNDssCiAgICAmIzM0O21pY3JvY2hpcF9yZHNfcHRwLmMmIzM0OywKICAgICYjMzQ7bWljcm9jaGlwX3Jkc19wdHAuaCYjMzQ7LAogICAgJiMzNDttaWNyb2NoaXBfdDEuYyYjMzQ7LAogICAgJiMzNDttaWNyb2NoaXBfdDFzLmMmIzM0OywKICAgICYjMzQ7bWlpX3RpbWVzdGFtcGVyLmMmIzM0OywKICAgICYjMzQ7bW90b3Jjb21tLmMmIzM0OywKICAgICYjMzQ7bXhsLTg2MTEwLmMmIzM0OywKICAgICYjMzQ7bXhsLWdweS5jJiMzNDssCiAgICAmIzM0O25hdGlvbmFsLmMmIzM0OywKICAgICYjMzQ7bmNuMjYwMDAuYyYjMzQ7LAogICAgJiMzNDtueHAtYzQ1LXRqYTExeHgtbWFjc2VjLmMmIzM0OywKICAgICYjMzQ7bnhwLWM0NS10amExMXh4LmMmIzM0OywKICAgICYjMzQ7bnhwLWM0NS10amExMXh4LmgmIzM0OywKICAgICYjMzQ7bnhwLWNidHguYyYjMzQ7LAogICAgJiMzNDtueHAtdGphMTF4eC5jJiMzNDssCiAgICAmIzM0O29wZW5fYWxsaWFuY2VfaGVscGVycy5jJiMzNDssCiAgICAmIzM0O29wZW5fYWxsaWFuY2VfaGVscGVycy5oJiMzNDssCiAgICAmIzM0O3BoeS1jNDUuYyYjMzQ7LAogICAgJiMzNDtwaHktY2Fwcy5oJiMzNDssCiAgICAmIzM0O3BoeS1jb3JlLmMmIzM0OywKICAgICYjMzQ7cGh5LmMmIzM0OywKICAgICYjMzQ7cGh5X2NhcHMuYyYjMzQ7LAogICAgJiMzNDtwaHlfZGV2aWNlLmMmIzM0OywKICAgICYjMzQ7cGh5X2xlZF90cmlnZ2Vycy5jJiMzNDssCiAgICAmIzM0O3BoeV9saW5rX3RvcG9sb2d5LmMmIzM0OywKICAgICYjMzQ7cGh5X3BhY2thZ2UuYyYjMzQ7LAogICAgJiMzNDtwaHlfcG9ydC5jJiMzNDssCiAgICAmIzM0O3BoeWxpYi1pbnRlcm5hbC5oJiMzNDssCiAgICAmIzM0O3BoeWxpYi5oJiMzNDssCiAgICAmIzM0O3BoeWxpbmsuYyYjMzQ7LAogICAgJiMzNDtxc2VtaS5jJiMzNDssCiAgICAmIzM0O3F0MjAyNS5ycyYjMzQ7LAogICAgJiMzNDtyb2NrY2hpcC5jJiMzNDssCiAgICAmIzM0O3NmcC1idXMuYyYjMzQ7LAogICAgJiMzNDtzZnAuYyYjMzQ7LAogICAgJiMzNDtzZnAuaCYjMzQ7LAogICAgJiMzNDtzbXNjLmMmIzM0OywKICAgICYjMzQ7c3RlMTBYcC5jJiMzNDssCiAgICAmIzM0O3N0dWJzLmMmIzM0OywKICAgICYjMzQ7c3dwaHkuYyYjMzQ7LAogICAgJiMzNDtzd3BoeS5oJiMzNDssCiAgICAmIzM0O3RlcmFuZXRpY3MuYyYjMzQ7LAogICAgJiMzNDt1UEQ2MDYyMC5jJiMzNDssCiAgICAmIzM0O3ZpdGVzc2UuYyYjMzQ7LAogICAgJiMzNDt4aWxpbnhfZ21paTJyZ21paS5jJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBbCiAgICAmIzM0O2FxdWFudGlhJiMzNDssCiAgICAmIzM0O21lZGlhdGVrJiMzNDssCiAgICAmIzM0O21zY2MmIzM0OywKICAgICYjMzQ7cWNvbSYjMzQ7LAogICAgJiMzNDtyZWFsdGVrJiMzNDsKICBdCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMzowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjgzMgoJCQkJCQkJb3V0cHV0OiAxNgoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgY29kZToKCioqQW5hbHl6aW5nIFBvdGVudGlhbCBQSFkgSW1wbGVtZW50YXRpb24qKgoKT2theSwgdGhlIG1lbnRpb24gb2YgYGZpeGVkX3BoeS5jYCBhbmQgYHN3cGh5LmNgIGltbWVkaWF0ZWx5IGZsYWdzIG15IGF0dGVudGlvbi4gSXQmIzM5O3MgYSBjbGFzc2ljIHNjZW5hcmlvLCB1c3VhbGx5IGluZGljYXRpbmcgZWl0aGVyIGEgaGFyZC1jb2RlZCBwaHlzaWNhbCBsYXllciAoUEhZKSBvciBvbmUgaW1wbGVtZW50ZWQsIGF0IGxlYXN0IGluIHBhcnQsIGluIHNvZnR3YXJlLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBtb3N0IGludGVyZXN0aW5nIGFuZCBsaWtlbHkgcGxhY2UgdG8gc3RhcnQgbG9va2luZyB0byB1bmRlcnN0YW5kIHRoaXMgaXMgdGhlIHNvZnR3YXJlIFBIWSBpbXBsZW1lbnRhdGlvbi4gU28sIG15IGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIGBzd3BoeS5jYCBmaXJzdC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgY29yZSBsb2dpYyB3aWxsIGxpa2VseSByZXNpZGUsIGFuZCB1bmRlcnN0YW5kaW5nICp0aGF0KiB3aWxsIHByb2JhYmx5IGVsdWNpZGF0ZSB0aGUgbGFyZ2VyIGFyY2hpdGVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMjM6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3dwaHkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvYXJyb3cseHJzNzAweC55YW1sPTM4PWV4YW1wbGVzOlxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL2Fycm93LHhyczcwMHgueWFtbC01Mi0gICAgICAgICAgICAgICAgICAgIGxhYmVsID0gXCYjMzQ7bGFuMFwmIzM0OztcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL2Fycm93LHhyczcwMHgueWFtbDo1MzogICAgICAgICAgICAgICAgICAgIHBoeS1oYW5kbGUgPSBcdTAwM2NcdTAwMjZzd3BoeTBcdTAwM2U7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9hcnJvdyx4cnM3MDB4LnlhbWwtNTQtICAgICAgICAgICAgICAgICAgICBwaHktbW9kZSA9IFwmIzM0O3JnbWlpLWlkXCYjMzQ7O1xuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL2Fycm93LHhyczcwMHgueWFtbC01OC0gICAgICAgICAgICAgICAgICAgIGxhYmVsID0gXCYjMzQ7bGFuMVwmIzM0OztcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL2Fycm93LHhyczcwMHgueWFtbDo1OTogICAgICAgICAgICAgICAgICAgIHBoeS1oYW5kbGUgPSBcdTAwM2NcdTAwMjZzd3BoeTFcdTAwM2U7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9hcnJvdyx4cnM3MDB4LnlhbWwtNjAtICAgICAgICAgICAgICAgICAgICBwaHktbW9kZSA9IFwmIzM0O3JnbWlpLWlkXCYjMzQ7O1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHM9MzE5PVx0XHRcdHN3cG9ydDE6IGV0aGVybmV0LXBvcnRAMSB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS03MDQwLW1vY2hhYmluLmR0cy0zMjEtXHRcdFx0XHRsYWJlbCA9IFwmIzM0O2xhbjBcJiMzNDs7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTcwNDAtbW9jaGFiaW4uZHRzOjMyMjpcdFx0XHRcdHBoeS1oYW5kbGUgPSBcdTAwM2NcdTAwMjZzd3BoeTFcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTcwNDAtbW9jaGFiaW4uZHRzLTMyMy1cdFx0XHR9O1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHM9MzI1PVx0XHRcdHN3cG9ydDI6IGV0aGVybmV0LXBvcnRAMiB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS03MDQwLW1vY2hhYmluLmR0cy0zMjctXHRcdFx0XHRsYWJlbCA9IFwmIzM0O2xhbjFcJiMzNDs7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTcwNDAtbW9jaGFiaW4uZHRzOjMyODpcdFx0XHRcdHBoeS1oYW5kbGUgPSBcdTAwM2NcdTAwMjZzd3BoeTJcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTcwNDAtbW9jaGFiaW4uZHRzLTMyOS1cdFx0XHR9O1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHM9MzMxPVx0XHRcdHN3cG9ydDM6IGV0aGVybmV0LXBvcnRAMyB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS03MDQwLW1vY2hhYmluLmR0cy0zMzMtXHRcdFx0XHRsYWJlbCA9IFwmIzM0O2xhbjJcJiMzNDs7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTcwNDAtbW9jaGFiaW4uZHRzOjMzNDpcdFx0XHRcdHBoeS1oYW5kbGUgPSBcdTAwM2NcdTAwMjZzd3BoeTNcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTcwNDAtbW9jaGFiaW4uZHRzLTMzNS1cdFx0XHR9O1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHM9MzM3PVx0XHRcdHN3cG9ydDQ6IGV0aGVybmV0LXBvcnRANCB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS03MDQwLW1vY2hhYmluLmR0cy0zMzktXHRcdFx0XHRsYWJlbCA9IFwmIzM0O2xhbjNcJiMzNDs7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTcwNDAtbW9jaGFiaW4uZHRzOjM0MDpcdFx0XHRcdHBoeS1oYW5kbGUgPSBcdTAwM2NcdTAwMjZzd3BoeTRcdTAwM2U7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTcwNDAtbW9jaGFiaW4uZHRzLTM0MS1cdFx0XHR9O1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHM9MzUyPVx0XHRtZGlvIHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTcwNDAtbW9jaGFiaW4uZHRzLTM1NS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHM6MzU2Olx0XHRcdHN3cGh5MTogZXRoZXJuZXQtcGh5QDE3IHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHMtMzU3LVx0XHRcdFx0cmVnID0gXHUwMDNjMTdcdTAwM2U7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS03MDQwLW1vY2hhYmluLmR0cy0zNTktXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTcwNDAtbW9jaGFiaW4uZHRzOjM2MDpcdFx0XHRzd3BoeTI6IGV0aGVybmV0LXBoeUAxOCB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTcwNDAtbW9jaGFiaW4uZHRzLTM2MS1cdFx0XHRcdHJlZyA9IFx1MDAzYzE4XHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHMtMzYzLVxuYXJjaC9hcm02NC9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS03MDQwLW1vY2hhYmluLmR0czozNjQ6XHRcdFx0c3dwaHkzOiBldGhlcm5ldC1waHlAMTkge1xuYXJjaC9hcm02NC9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS03MDQwLW1vY2hhYmluLmR0cy0zNjUtXHRcdFx0XHRyZWcgPSBcdTAwM2MxOVx1MDAzZTtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTcwNDAtbW9jaGFiaW4uZHRzLTM2Ny1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHM6MzY4Olx0XHRcdHN3cGh5NDogZXRoZXJuZXQtcGh5QDIwIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHMtMzY5LVx0XHRcdFx0cmVnID0gXHUwMDNjMjBcdTAwM2U7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmM9MTk5Mz1zdGF0aWMgaW5saW5lIGludCBiY21fZW5ldF9wb3J0X2lzX3JnbWlpKGludCBwb3J0aWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmMtMjAwMC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jOjIwMDE6c3RhdGljIHZvaWQgc3dwaHlfcG9sbF90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTIwMDIte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmM6MjAwMzpcdHN0cnVjdCBiY21fZW5ldF9wcml2ICpwcml2ID0gdGltZXJfY29udGFpbmVyX29mKHByaXYsIHQsIHN3cGh5X3BvbGwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmMtMjAwNC1cdHVuc2lnbmVkIGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTIwOTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYzoyMDkyOlx0cHJpdi1cdTAwM2Vzd3BoeV9wb2xsLmV4cGlyZXMgPSBqaWZmaWVzICYjNDM7IEhaO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmM6MjA5MzpcdGFkZF90aW1lcihcdTAwMjZwcml2LVx1MDAzZXN3cGh5X3BvbGwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmMtMjA5NC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmM9MjA5OT1zdGF0aWMgaW50IGJjbV9lbmV0c3dfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTIzMDgtXHQvKiBzdGFydCBwaHkgcG9sbGluZyB0aW1lciAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmM6MjMwOTpcdHRpbWVyX3NldHVwKFx1MDAyNnByaXYtXHUwMDNlc3dwaHlfcG9sbCwgc3dwaHlfcG9sbF90aW1lciwgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYzoyMzEwOlx0bW9kX3RpbWVyKFx1MDAyNnByaXYtXHUwMDNlc3dwaHlfcG9sbCwgamlmZmllcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYy0yMzExLVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmM9MjMzOT1zdGF0aWMgaW50IGJjbV9lbmV0c3dfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTIzNDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYzoyMzQ3Olx0dGltZXJfZGVsZXRlX3N5bmMoXHUwMDI2cHJpdi1cdTAwM2Vzd3BoeV9wb2xsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTIzNDgtXHRuZXRpZl9zdG9wX3F1ZXVlKGRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0Lmg9MTk0PXN0cnVjdCBiY21fZW5ldF9wcml2IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuaC0zNDEtXHQvKiB1c2VkIHRvIHBvbGwgc3dpdGNoIHBvcnQgc3RhdGUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5oOjM0MjpcdHN0cnVjdCB0aW1lcl9saXN0IHN3cGh5X3BvbGw7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuaC0zNDMtXHRzcGlubG9ja190IGVuZXRzd19tZGlvX2xvY2s7XG4tLVxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTEyPWVuZGlmXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtMTMtXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MTQ6bGlicGh5LSQoQ09ORklHX1NXUEhZKVx0XHQmIzQzOz0gc3dwaHkub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTE1LWxpYnBoeS0kKENPTkZJR19MRURfVFJJR0dFUl9QSFkpXHQmIzQzOz0gcGh5X2xlZF90cmlnZ2Vycy5vXG4tLVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTIwLVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jOjIxOiNpbmNsdWRlIFwmIzM0O3N3cGh5LmhcJiMzNDtcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0yMi1cbi0tXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM9NjE9c3RhdGljIGludCBmaXhlZF9tZGlvX3JlYWQoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9hZGRyLCBpbnQgcmVnX251bSlcbi0tXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtNzEtXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM6NzI6XHRyZXR1cm4gc3dwaHlfcmVhZF9yZWcocmVnX251bSwgXHUwMDI2ZnAtXHUwMDNlc3RhdHVzKTtcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy03My19XG4tLVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jPTEzMT1zdHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBmaXhlZF9waHlfc3RhdHVzICpzdGF0dXMsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTEzNy1cbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYzoxMzg6XHRyZXQgPSBzd3BoeV92YWxpZGF0ZV9zdGF0ZShzdGF0dXMpO1xuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTEzOS1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNC0jaW5jbHVkZSBcJiMzNDtzZnAuaFwmIzM0O1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNTojaW5jbHVkZSBcJiMzNDtzd3BoeS5oXCYjMzQ7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzM2MD1zdGF0aWMgaW50IHBoeWxpbmtfbWlpX2VtdWxfcmVhZCh1bnNpZ25lZCBpbnQgcmVnLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzM3Mi1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzM3MzpcdHZhbCA9IHN3cGh5X3JlYWRfcmVnKHJlZywgXHUwMDI2ZnMpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzc0LVx0aWYgKHJlZyA9PSBNSUlfQk1TUikge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jLTE2LVxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmM6MTc6I2luY2x1ZGUgXCYjMzQ7c3dwaHkuaFwmIzM0O1xuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmMtMTgtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmM9NTY9c3RhdGljIGNvbnN0IHN0cnVjdCBzd21paV9yZWdzIGR1cGxleFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jLTcwLVxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmM6NzE6c3RhdGljIGludCBzd3BoeV9kZWNvZGVfc3BlZWQoaW50IHNwZWVkKVxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmMtNzIte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jLTg1LS8qKlxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmM6ODY6ICogc3dwaHlfdmFsaWRhdGVfc3RhdGUgLSB2YWxpZGF0ZSB0aGUgc29mdHdhcmUgcGh5IHN0YXR1c1xuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmMtODctICogQHN0YXRlOiBzb2Z0d2FyZSBwaHkgc3RhdHVzXG4tLVxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmMtOTItICovXG5kcml2ZXJzL25ldC9waHkvc3dwaHkuYzo5MzppbnQgc3dwaHlfdmFsaWRhdGVfc3RhdGUoY29uc3Qgc3RydWN0IGZpeGVkX3BoeV9zdGF0dXMgKnN0YXRlKVxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmMtOTQte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jLTk3LVx0aWYgKHN0YXRlLVx1MDAzZWxpbmspIHtcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jOjk4Olx0XHRlcnIgPSBzd3BoeV9kZWNvZGVfc3BlZWQoc3RhdGUtXHUwMDNlc3BlZWQpO1xuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmMtOTktXHRcdGlmIChlcnIgXHUwMDNjIDApIHtcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jOjEwMDpcdFx0XHRwcl93YXJuKFwmIzM0O3N3cGh5OiB1bmtub3duIHNwZWVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jLTEwMS1cdFx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC9waHkvc3dwaHkuYy0xMDUtfVxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmM6MTA2OkVYUE9SVF9TWU1CT0xfR1BMKHN3cGh5X3ZhbGlkYXRlX3N0YXRlKTtcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jLTEwNy1cbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jLTEwOC0vKipcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jOjEwOTogKiBzd3BoeV9yZWFkX3JlZyAtIHJldHVybiBhIE1JSSByZWdpc3RlciBmcm9tIHRoZSBmaXhlZCBwaHkgc3RhdGVcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jLTExMC0gKiBAcmVnOiBNSUkgcmVnaXN0ZXJcbi0tXG5kcml2ZXJzL25ldC9waHkvc3dwaHkuYy0xMTQtICovXG5kcml2ZXJzL25ldC9waHkvc3dwaHkuYzoxMTU6aW50IHN3cGh5X3JlYWRfcmVnKGludCByZWcsIGNvbnN0IHN0cnVjdCBmaXhlZF9waHlfc3RhdHVzICpzdGF0ZSlcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jLTExNi17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmMtMTI1LVxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmM6MTI2Olx0c3BlZWRfaW5kZXggPSBzd3BoeV9kZWNvZGVfc3BlZWQoc3RhdGUtXHUwMDNlc3BlZWQpO1xuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmMtMTI3LVx0aWYgKFdBUk5fT04oc3BlZWRfaW5kZXggXHUwMDNjIDApKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jLTE3NC19XG5kcml2ZXJzL25ldC9waHkvc3dwaHkuYzoxNzU6RVhQT1JUX1NZTUJPTF9HUEwoc3dwaHlfcmVhZF9yZWcpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5oPTU9c3RydWN0IGZpeGVkX3BoeV9zdGF0dXM7XG5kcml2ZXJzL25ldC9waHkvc3dwaHkuaC02LVxuZHJpdmVycy9uZXQvcGh5L3N3cGh5Lmg6NzppbnQgc3dwaHlfdmFsaWRhdGVfc3RhdGUoY29uc3Qgc3RydWN0IGZpeGVkX3BoeV9zdGF0dXMgKnN0YXRlKTtcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5oOjg6aW50IHN3cGh5X3JlYWRfcmVnKGludCByZWcsIGNvbnN0IHN0cnVjdCBmaXhlZF9waHlfc3RhdHVzICpzdGF0ZSk7XG5kcml2ZXJzL25ldC9waHkvc3dwaHkuaC05LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMzowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjc3NAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDM3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDdXJyZW50IExpbmUgb2YgUmVhc29uaW5nKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHRvIGludGVncmF0ZSBhIHJlYWwgUEhZIGRyaXZlciwgc3BlY2lmaWNhbGx5IGBkYXA4MjExcmAsIGludG8gYSB0ZXN0aW5nIGVudmlyb25tZW50LCBzcGVjaWZpY2FsbHkgYSB2aXJ0dWFsIE1ESU8gYnVzLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIGFib3V0IGBzd3BoeWAgLSBjbGVhcmx5LCBzb2Z0d2FyZSBQSFlzIC0gYnV0IEkmIzM5O20gbG9va2luZyBmb3Igc29tZXRoaW5nIG1vcmUgY29uY3JldGUuIENhbiBJICppbmplY3QqIGBkYXA4MjExcmAgaW50byBhIHZpcnR1YWwgTURJTyBidXM/CgpUaGUgbmV4dCBkaXJlY3Rpb24sIGFuZCBwcm9iYWJseSB0aGUgbW9zdCBmcnVpdGZ1bCwgaXMgdG8gY29uc2lkZXIgaG93IG5ldHdvcmsgZGV2aWNlcyBhcmUgZW11bGF0ZWQgd2l0aGluIFFFTVUuIFNwZWNpZmljYWxseSwgZW11bGF0ZWQgbmV0d29yayBkZXZpY2VzIHN1Y2ggYXMgYG1hY2JgLCBgZmVjYCwgYW5kIG90aGVycywgZnJlcXVlbnRseSBjb21lIHdpdGggYW4gTURJTyBidXMgYXMgcGFydCBvZiB0aGUgZW11bGF0ZWQgaGFyZHdhcmUuIFFFTVUgZW11bGF0ZXMgYSB3aWRlIGFycmF5IG9mIGRldmljZXMgbGlrZSBgZTEwMDBgLCBgcnRsODEzOWAsIGB2aXJ0aW8tbmV0YCwgYHBjbmV0YCwgYG5lMmtfcGNpYCwgYHR1bGlwYCwgYW5kIGB2bXhuZXQzYC4gIEl0IG9jY3VycyB0byBtZSwgc29tZSBvZiB0aGVzZSBtaWdodCBhY3R1YWxseSAqaGF2ZSogYW4gTURJTyBidXMgYWNjZXNzaWJsZSBpbiB0aGUgdmlydHVhbCBlbnZpcm9ubWVudC4gSXQmIzM5O3MgYWxzbyB3b3J0aCBub3RpbmcgUUVNVSBlbXVsYXRlcyBgaW14LmZlY2Agd2hpY2ggZGVmaW5pdGVseSBoYXMgYW4gTURJTyBidXMuCgpIb3dldmVyLCBTeXprYWxsZXIsIHdoaWNoIEkmIzM5O20gZmFtaWxpYXIgd2l0aCwgcHJlZG9taW5hbnRseSBydW5zIG9uIGB4ODZfNjRgIGFuZCBsZWFucyB0b3dhcmRzIGB2aXJ0aW8tbmV0YCBvciBgZTEwMDBgIGZvciBuZXR3b3JrIHRlc3RpbmcuIFN0aWxsLCBzeXprYWxsZXIgaGFzIHRoZSBmbGV4aWJpbGl0eSB0byB1c2UgYHZrbXNgIGZvciBEUk0sIGBtYWM4MDIxMV9od3NpbWAgZm9yIHdpZmksIGFuZCBgdmhjaWAgZm9yIFVTQi4gIFRoaXMgaXMgbGVhZGluZyBtZSB0byBjb25zaWRlcjogSXMgdGhlcmUgYSB3YXkgdG8gbGV2ZXJhZ2UgVVNCIGZvciBwcm9iaW5nIFBIWSBkcml2ZXJzPwoKQWgsIHRoYXQmIzM5O3MgaXQhIFVTQi10by1FdGhlcm5ldCBhZGFwdGVycywgdGhleSB1c2UgUEhZcyEgYHNtc2M5NXh4YCB1c2VzIGVpdGhlciBhbiBpbnRlcm5hbCBvciBleHRlcm5hbCBQSFkuIEFsc28sIGBhc2l4YCwgYGF4ODgxNzlfMTc4YWAsIGFuZCBgcjgxNTJgIGFyZSBvdGhlciBleGFtcGxlcyBvZiBVU0IgZXRoZXJuZXQgZHJpdmVycyB0aGF0IHV0aWxpemUgUEhZcy4KClRoZXJlZm9yZSwgdGhlIGtleSBsaWVzIGluIGhvdyBzeXprYWxsZXIgYXBwcm9hY2hlcyBVU0IgZnV6emluZy4gSWYgSSBjYW4gY3JlYXRlIGFuIGVtdWxhdGVkIFVTQiBkZXZpY2UgdGhhdCBwcmVzZW50cyBhbiBNRElPIGJ1cyBhbmQgKnJlcG9ydHMqIHRoZSBQSFkgSUQgb2YgYGRhcDgyMTFyYCAod2hpY2ggaXMgYDB4MDAwODAxMUJgKSwgSSBjb3VsZCBwb3RlbnRpYWxseSBjcmVhdGUgYSBwZXJmZWN0IHRlc3Rpbmcgc2V0dXAuIFRoZSBuZXh0IHRoaW5nIEkgbmVlZCB0byBkbyBpcyB0byBkZXRlcm1pbmUgaWYgYW55IG9mIHRoZXNlIFVTQiBldGhlcm5ldCBkcml2ZXJzIGFyZSB1c2luZyB0aGUgZ2VuZXJpYyBQSFkgZnJhbWV3b3JrLCBwaHlsaWIuIFRoaXMgd2lsbCBnaXZlIG1lIGEgZm9vdGhvbGQgaW4gaG93IHRvIHByb2JlIGFuZCBjb250cm9sIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMzowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZGlvYnVzX3JlZ2lzdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz02Njk9c3RhdGljIGludCBheDg4NzcyX2luaXRfbWRpbyhzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY4Ni1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2ODc6XHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKHByaXYtXHUwMDNlbWRpbyk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjg4LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jPTYxPXN0YXRpYyBpbnQgYXg4ODE3MmFfaW5pdF9tZGlvKHN0cnVjdCB1c2JuZXQgKmRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy03OS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjgwOlx0cmV0ID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVx1MDAzZW1kaW8pO1xuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtODEtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0yMDkxPXN0YXRpYyBpbnQgbGFuNzh4eF9tZGlvX2luaXQoc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMTIxLVx0bm9kZSA9IG9mX2dldF9jaGlsZF9ieV9uYW1lKGRldi1cdTAwM2V1ZGV2LVx1MDAzZWRldi5vZl9ub2RlLCBcJiMzNDttZGlvXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjEyMjpcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoZGV2LVx1MDAzZW1kaW9idXMsIG5vZGUpO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMTIzLVx0b2Zfbm9kZV9wdXQobm9kZSk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmM9MTE0Nz1zdGF0aWMgaW50IHNtc2M5NXh4X2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYy0xMjQxLVxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmM6MTI0MjpcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIocGRhdGEtXHUwMDNlbWRpb2J1cyk7XG5kcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYy0xMjQzLVx0aWYgKHJldCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMzowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODI2NwoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDQ3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFjaGluZyB0aGUgZGFwODIxMXIgUEhZIERyaXZlciB2aWEgVVNCIEZ1enppbmcqKgoKT2theSwgdGhpcyBpcyBleGNlbGxlbnQhIEl0IGNsaWNrczogdGhlIGBzbXNjOTV4eGAsIGBsYW43OHh4YCwgYGF4ODgxNzJhYCwgYW5kIGBhc2l4X2RldmljZXNgIGFsbCByZWdpc3RlciBhbiBNRElPIGJ1cy4gQW5kIHN5emthbGxlciYjMzk7cyBVU0IgZGV2aWNlIGVtdWxhdGlvbiBjYW4gKmludGVyY2VwdCogdGhvc2UgTURJTyByZWFkcy4gSWYgdGhlIGVtdWxhdGVkIFVTQiBkZXZpY2UgcmVzcG9uZHMgdG8gTURJTyByZWFkIHJlcXVlc3RzIGF0IHJlZ2lzdGVycyAyIGFuZCAzIHdpdGggdGhlIHNwZWNpZmljIFBIWSBJRCB2YWx1ZXMgYDB4MDAwOGAgYW5kIGAweDAxMUJgLCB0aGUga2VybmVsIHdpbGwgbG9hZCB0aGUgYGRhcDgyMTFyYCBQSFkgZHJpdmVyISBCb29tLiBXZSYjMzk7dmUgZ290IGEgcmVhY2hhYmxlIGRyaXZlciBoZXJlISBUaGlzIG1lYW5zIHdlIGNhbiByZWFjaCB0aGUgZHJpdmVyIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgdmlhIFVTQiBmdXp6aW5nIHRoYXQgc3l6a2FsbGVyIGFscmVhZHkgaGFzIHRocm91Z2ggYGR1bW15X2hjZGAgYW5kIGBzeXpfdXNiX2Nvbm5lY3RgLgoKQWxyaWdodCwgdGltZSB0byByZXZpZXcgdGhlIHBhdGNoIGFnYWluIHdpdGggdGhpcyBpbiBtaW5kLiBJdCYjMzk7cyBhZGRpbmcgdGhlIGBkYXA4MjExcmAgUEhZIGRyaXZlciwgbW9kaWZ5aW5nIHRoZSBgS2NvbmZpZ2AgYW5kIGBNYWtlZmlsZWAuIFRoZSBhY3R1YWwgZHJpdmVyIGltcGxlbWVudHMgYGRhcDgyMTFyX2NvbmZpZ19pbml0YCwgYGRhcDgyMTFyX3JlYWRfZXh0YCwgYW5kIGBkYXA4MjExcl9tb2RpZnlfZXh0YC4gVGhlIHBhdGNoIGlzIGZ1bmN0aW9uYWwgYW5kIGRlZmluaXRlbHkgZnV6emFibGUuCgpOb3csIHdoYXQgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIHRvICpyZWFsbHkqIGZvY3VzIG9uIGR1cmluZyBmdXp6aW5nPyBMZXQmIzM5O3Mgem9vbSBpbjogYGRhcDgyMTFyX2NvbmZpZ19pbml0YCwgYGRhcDgyMTFyX3JlYWRfZXh0YCwgYW5kIGBkYXA4MjExcl9tb2RpZnlfZXh0YC4KCldhaXQgYSBzZWNvbmQuIEhhbmcgb24uLi4gYGRhcDgyMTFyX3JlYWRfZXh0YCBhbmQgYGRhcDgyMTFyX21vZGlmeV9leHRgIGFyZSAqc3RhdGljKiBoZWxwZXIgZnVuY3Rpb25zLiBUaGUgb25seSB0aGluZyBleHBvcnRlZCBhbmQgKnJlZ2lzdGVyZWQqIGlzIGBkYXA4MjExcl9jb25maWdfaW5pdGAuIFRoZSBvdGhlciBmdW5jdGlvbnMgYXJlIGp1c3QgYm9nLXN0YW5kYXJkIGBnZW5waHlfKmAgZnVuY3Rpb25zLCB3aGljaCBhcmUgbGlrZWx5IGFscmVhZHkgd2VsbC1mdXp6ZWQgYW5kIG5vdCByZWFsbHkgc3BlY2lmaWMgdG8gdGhpcyBwYXRjaC4gU28sIG15IGBGb2N1c1N5bWJvbHNgIGVudHJ5IHNob3VsZCBqdXN0IGJlOgotIGBkYXA4MjExcl9jb25maWdfaW5pdGAKLSBgZGFwODIxMXJfcmVhZF9leHRgCi0gYGRhcDgyMTFyX21vZGlmeV9leHRgCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0IG1lIGNoZWNrIGZvciBhbnkgb3RoZXIgZnVuY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMzowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtec3RhdGljLipkYXA4MjExcl8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYy00Ny1cbmRyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jOjQ4OnN0YXRpYyBjb25zdCBpbnQgZGFwODIxMXJfaW50ZXJuYWxfZGVsYXlbXSA9IHswLCAxNTAsIDMwMCwgNDUwLCA2MDAsIDc1MCwgOTAwLFxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMtNDktXHRcdFx0XHRcdCAgICAgIDEwNTAsIDEyMDAsIDEzNTAsIDE1MDAsIDE2NTAsIDE4MDAsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMtNjMtICovXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYzo2NDpzdGF0aWMgaW50IGRhcDgyMTFyX3JlYWRfZXh0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUxNiByZWcpXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYy02NS17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMtOTEtICovXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYzo5MjpzdGF0aWMgaW50IGRhcDgyMTFyX21vZGlmeV9leHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZywgdTE2IG1hc2ssIHUxNiBzZXQpXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYy05My17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMtMTE3LSAqL1xuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmM6MTE4OnN0YXRpYyBpbnQgZGFwODIxMXJfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jLTExOS17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMtMTY3LVxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmM6MTY4OnN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkYXA4MjExcl9kcml2ZXJbXSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jLTE2OS1cdHtcbi0tXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYz0xODQ9TU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jLTE4NS1cbmRyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jOjE4NjpzdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIGRhcDgyMTFyX3RiW10gPSB7XG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYy0xODctXHR7IERBUDgyMTFSX1BIWV9JRCwgREFQODIxMVJfUEhZX0lEX01BU0sgfSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMjM6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk5NjYKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA2MTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQ29uZmlndXJhdGlvbiBBbmFseXNpcyBmb3IgdGhlIERBUDgyMTFSIFBIWSBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgREFQODIxMVIgUEhZIGRyaXZlciBjb2RlLCBzcGVjaWZpY2FsbHkgdGhlIGZ1bmN0aW9ucyBgZGFwODIxMXJfcmVhZF9leHRgLCBgZGFwODIxMXJfbW9kaWZ5X2V4dGAsIGFuZCBgZGFwODIxMXJfY29uZmlnX2luaXRgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB3aGF0IGNvbmZpZ3VyYXRpb25zIGFyZSBhY3R1YWxseSAqcmVxdWlyZWQqLiBUaGUgb2J2aW91cyBvbmUgaXMgYENPTkZJR19EQVA4MjExUl9QSFlgLiBCdXQgd2FpdCwgdGhhdCBkZXBlbmRzIG9uIGBPRmAsIHJpZ2h0PyBJIG5lZWQgdG8gY29uZmlybSB0aGF0LiBMZXQgbWUgcXVpY2tseSBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L3BoeS9LY29uZmlnYCBmaWxlLi4uIFllcCwgdGhlcmUgaXQgaXM6IGBjb25maWcgREFQODIxMVJfUEhZIC4uLiBkZXBlbmRzIG9uIE9GYC4gT2theSwgc28gd2UgZGVmaW5pdGVseSBuZWVkIGJvdGggYENPTkZJR19EQVA4MjExUl9QSFlgIGFuZCBgQ09ORklHX09GYC4gYENPTkZJR19PRmAgaXMgcHJldHR5IGNvbW1vbiwgc28gaXQmIzM5O3MgcHJvYmFibHkgYWxyZWFkeSBlbmFibGVkIG9uIG1vc3QgYXJjaGl0ZWN0dXJlcywgYnV0IHdlIHN0aWxsIG5lZWQgdG8gZXhwbGljaXRseSBzZXQgYERBUDgyMTFSX1BIWWAuIEFueXRoaW5nIGVsc2U/IE5vLCB0aGF0IHNlZW1zIHRvIGJlIGl0IGZvciB0aGUgZXhwbGljaXQgY29uZmlncy4KCk5vdywgYSBjcml0aWNhbCB0aG91Z2h0OiBob3cgcm9idXN0IGlzIGBkYXA4MjExcl9jb25maWdfaW5pdGAgaWYgdGhlIGRldmljZSB0cmVlIGlzICpub3QqIHVzZWQ/IFNwZWNpZmljYWxseSwgd2hhdCBoYXBwZW5zIGlmIGBPRmAgaXNuJiMzOTt0IGFjdGl2ZSwgb3IsIG1vcmUgc3VidGx5LCBpZiB0aGUgZGV2aWNlIGlzbiYjMzk7dCBpbnN0YW50aWF0ZWQgZnJvbSB0aGUgRFQgKGUuZy4sIGNvbm5lY3RlZCB2aWEgYSBVU0IgTURJTyBidXMgYW5kIGRvZXNuJiMzOTt0IGhhdmUgYW4gT0Ygbm9kZSk/IExldCYjMzk7cyBkaXZlIGludG8gdGhlIGNvZGUuLi4gQWgsIEkgc2VlOiBgcGh5ZGV2LSZndDttZGlvLmRldi5vZl9ub2RlYCBjYW4gYmUgTlVMTCBpbiB0aG9zZSBzY2VuYXJpb3MuIFRoaXMgdHJpZ2dlcnMgYSBmZXcgY2hlY2tzIHVzaW5nIGBvZl9wcm9wZXJ0eV9yZWFkX2Jvb2xgIGFuZCBgcGh5X2dldF9pbnRlcm5hbF9kZWxheWAuIEV4Y2VsbGVudCEgYG9mX3Byb3BlcnR5X3JlYWRfYm9vbGAgaGFuZGxlcyBhIE5VTEwgYG5wYCBncmFjZWZ1bGx5LCByZXR1cm5pbmcgZmFsc2UuIEFuZCBgcGh5X2dldF9pbnRlcm5hbF9kZWxheWAgYWxzbyBoYW5kbGVzIGEgTlVMTCBgb2Zfbm9kZWAgZ3JhY2VmdWxseSByZXR1cm5pbmcgYW4gZXJyb3IgY29kZS4gVGhpcyBtZWFucyB0aGUgZHJpdmVyICp3b24mIzM5O3QqIGNyYXNoLiBJdCYjMzk7bGwgaW5zdGVhZCBleGVjdXRlIGZhbGxiYWNrIHBhdGhzLiBTcGVjaWZpY2FsbHksIGl0IHVzZXMgYHBoeV9nZXRfaW50ZXJuYWxfZGVsYXlgIHdoaWNoLCBpZiBpdCBmYWlscywgZmFsbHMgYmFjayB0byBhIGRlZmF1bHQgdmFsdWUsIG9yIHplcm8uCgpgYGBjCglpbnRlcm5hbF9kZWxheSA9IHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkocGh5ZGV2LCBkYXA4MjExcl9pbnRlcm5hbF9kZWxheSwKCQkJCQkJREFQODIxMVJfREVMQVlfU0laRSwgdHJ1ZSk7CglpZiAoaW50ZXJuYWxfZGVsYXkgJmx0OyAwKSB7CgkJaWYgKHBoeWRldi0mZ3Q7aW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSSkKCQkJaW50ZXJuYWxfZGVsYXkgPSAwOwoJCWVsc2UKCQkJaW50ZXJuYWxfZGVsYXkgPSBEQVA4MjExUl9ERUZBVUxUX0RFTF9TRUw7Cgl9CmBgYAoKVGhpcyBpcyAqZXhhY3RseSogd2hhdCBJIHdhbnQgdG8gc2VlLCBhbmQgaXQgbWVhbnMgdGhlIGRyaXZlciBpcyByb2J1c3QgYW5kIGZ1enphYmxlIGV2ZW4gaW4gdGhlIGFic2VuY2Ugb2YgYSBkZXZpY2UgdHJlZSBub2RlLiBJIG5lZWQgdG8gdmVyaWZ5IGBwaHlfZ2V0X2ludGVybmFsX2RlbGF5YCYjMzk7cyBiZWhhdmlvciB3aXRoIGEgTlVMTCBgb2Zfbm9kZWAsIGJ1dCBJIGFtIG5vdCBleHBlY3RpbmcgYW55IHN1cnByaXNlcy4gT3ZlcmFsbCwgdGhpcyBjb2RlIGxvb2tzIHdlbGwtd3JpdHRlbiwgd2l0aCBnb29kIGRlZmVuc2l2ZSBwcm9ncmFtbWluZyBhZ2FpbnN0IHRoZSBwb3NzaWJpbGl0eSBvZiB0aGUgZGV2aWNlIHRyZWUgbm90IGJlaW5nIHByZXNlbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIzOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeV9nZXRfaW50ZXJuYWxfZGVsYXkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jPTExOD1zdGF0aWMgaW50IGRhcDgyMTFyX2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMtMTI3LVxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmM6MTI4Olx0aW50ZXJuYWxfZGVsYXkgPSBwaHlfZ2V0X2ludGVybmFsX2RlbGF5KHBoeWRldiwgZGFwODIxMXJfaW50ZXJuYWxfZGVsYXksXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYy0xMjktXHRcdFx0XHRcdFx0REFQODIxMVJfREVMQVlfU0laRSwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMtMTM4LVxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmM6MTM5Olx0aW50ZXJuYWxfZGVsYXkgPSBwaHlfZ2V0X2ludGVybmFsX2RlbGF5KHBoeWRldiwgZGFwODIxMXJfaW50ZXJuYWxfZGVsYXksXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYy0xNDAtXHRcdFx0XHRcdFx0REFQODIxMVJfREVMQVlfU0laRSwgZmFsc2UpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmM9NTE4PXN0YXRpYyBpbnQgZHA4MzgyMl9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtNTUyLVx0aWYgKHBoeV9pbnRlcmZhY2VfaXNfcmdtaWkocGh5ZGV2KSkge1xuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYzo1NTM6XHRcdHJ4X2ludF9kZWxheSA9IHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkocGh5ZGV2LCBOVUxMLCAwLCB0cnVlKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtNTU0LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtNTU4LVxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYzo1NTk6XHRcdHR4X2ludF9kZWxheSA9IHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkocGh5ZGV2LCBOVUxMLCAwLCBmYWxzZSk7XG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jLTU2MC1cbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jPTU0Mj1zdGF0aWMgaW50IGRwODM4Njlfb2ZfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmMtNTk5LVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYzo2MDA6XHRkcDgzODY5LVx1MDAzZXJ4X2ludF9kZWxheSA9IHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkocGh5ZGV2LFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy02MDEtXHRcdFx0XHRcdFx0ICAgICAgIFx1MDAyNmRwODM4NjlfaW50ZXJuYWxfZGVsYXlbMF0sXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjkuYy02MDUtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jOjYwNjpcdGRwODM4NjktXHUwMDNldHhfaW50X2RlbGF5ID0gcGh5X2dldF9pbnRlcm5hbF9kZWxheShwaHlkZXYsXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTYwNy1cdFx0XHRcdFx0XHQgICAgICAgXHUwMDI2ZHA4Mzg2OV9pbnRlcm5hbF9kZWxheVswXSxcbi0tXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jPTE4ND1zdGF0aWMgaW50IHh3YXlfZ3BoeV9yZ21paV9pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy0yMTctXHQgICAgcGh5ZGV2LVx1MDAzZWludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfUlhJRCkge1xuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYzoyMTg6XHRcdGludF9kZWxheSA9IHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkocGh5ZGV2LCB4d2F5X2ludGVybmFsX2RlbGF5LFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy0yMTktXHRcdFx0XHRcdFx0ICAgZGVsYXlfc2l6ZSwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy0yMjktXHQgICAgcGh5ZGV2LVx1MDAzZWludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfVFhJRCkge1xuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYzoyMzA6XHRcdGludF9kZWxheSA9IHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkocGh5ZGV2LCB4d2F5X2ludGVybmFsX2RlbGF5LFxuZHJpdmVycy9uZXQvcGh5L2ludGVsLXh3YXkuYy0yMzEtXHRcdFx0XHRcdFx0ICAgZGVsYXlfc2l6ZSwgZmFsc2UpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jPTU0Nj1zdGF0aWMgaW50IHZzYzg1eHhfdXBkYXRlX3JnbWlpX2NudGwoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTMyIHJnbWlpX2NudGwsXG4tLVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtNTcwLVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmM6NTcxOlx0cnhfZGVsYXkgPSBwaHlfZ2V0X2ludGVybmFsX2RlbGF5KHBoeWRldiwgdnNjODV4eF9pbnRlcm5hbF9kZWxheSxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jLTU3Mi1cdFx0XHRcdFx0ICBkZWxheV9zaXplLCB0cnVlKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYy01ODAtXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYzo1ODE6XHR0eF9kZWxheSA9IHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkocGh5ZGV2LCB2c2M4NXh4X2ludGVybmFsX2RlbGF5LFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtNTgyLVx0XHRcdFx0XHQgIGRlbGF5X3NpemUsIGZhbHNlKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTMwODI9c3RhdGljIGludCBwaHlfZ2V0X3UzMl9wcm9wZXJ0eShzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKm5hbWUsIHUzMiAqdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzA4OC0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MzA4OTogKiBwaHlfZ2V0X2ludGVybmFsX2RlbGF5IC0gcmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGludGVybmFsIGRlbGF5XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTMwOTAtICogQHBoeWRldjogcGh5X2RldmljZSBzdHJ1Y3Rcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTMxMDItICovXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjMxMDM6czMyIHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgY29uc3QgaW50ICpkZWxheV92YWx1ZXMsXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTMxMDQtXHRcdFx0ICAgaW50IHNpemUsIGJvb2wgaXNfcngpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zMTY0LX1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MzE2NTpFWFBPUlRfU1lNQk9MKHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkpO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zMTY2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMzowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjg0MQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gcGh5X2dldF9pbnRlcm5hbF9kZWxheSoqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSBhbmQgcmVhbGx5IHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgd2l0aCBgcGh5X2dldF9pbnRlcm5hbF9kZWxheWAuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgc3BlY2lmaWNzIG9mICp0aGlzKiBpbXBsZW1lbnRhdGlvbi4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdGhlIG51YW5jZXMgaGVyZSwgZ2l2ZW4gdGhlIGxpa2VseSBjb250ZXh0LXNwZWNpZmljIG5hdHVyZS4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGF0IGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgc3BlY2lmaWMgUEhZIHR5cGUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCwgYW5kIHdoYXQgYXNzdW1wdGlvbnMgaXQmIzM5O3MgbWFraW5nIGFib3V0IHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLiBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBnb3RjaGFzIG9yIG9wdGltaXphdGlvbnMgSSBzaG91bGQgYmUgYXdhcmUgb2YgaW1tZWRpYXRlbHk/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgZGVsYXkgY2FsY3VsYXRpb24gdGhvcm91Z2hseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMjM6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzEwMywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszMTAzOlx0czMyIHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgY29uc3QgaW50ICpkZWxheV92YWx1ZXMsXG4zMTA0Olx0XHRcdFx0ICAgaW50IHNpemUsIGJvb2wgaXNfcngpXG4zMTA1Olx0e1xuMzEwNjpcdFx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2O1xuMzEwNzpcdFx0aW50IGksIHJldDtcbjMxMDg6XHRcdHUzMiBkZWxheTtcbjMxMDk6XHRcbjMxMTA6XHRcdGlmIChpc19yeCkge1xuMzExMTpcdFx0XHRyZXQgPSBwaHlfZ2V0X3UzMl9wcm9wZXJ0eShkZXYsIFwmIzM0O3J4LWludGVybmFsLWRlbGF5LXBzXCYjMzQ7LCBcdTAwMjZkZWxheSk7XG4zMTEyOlx0XHRcdGlmIChyZXQgXHUwMDNjIDAgXHUwMDI2XHUwMDI2IHNpemUgPT0gMCkge1xuMzExMzpcdFx0XHRcdGlmIChwaHlkZXYtXHUwMDNlaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9JRCB8fFxuMzExNDpcdFx0XHRcdCAgICBwaHlkZXYtXHUwMDNlaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9SWElEKVxuMzExNTpcdFx0XHRcdFx0cmV0dXJuIDE7XG4zMTE2Olx0XHRcdFx0ZWxzZVxuMzExNzpcdFx0XHRcdFx0cmV0dXJuIDA7XG4zMTE4Olx0XHRcdH1cbjMxMTk6XHRcbjMxMjA6XHRcdH0gZWxzZSB7XG4zMTIxOlx0XHRcdHJldCA9IHBoeV9nZXRfdTMyX3Byb3BlcnR5KGRldiwgXCYjMzQ7dHgtaW50ZXJuYWwtZGVsYXktcHNcJiMzNDssIFx1MDAyNmRlbGF5KTtcbjMxMjI6XHRcdFx0aWYgKHJldCBcdTAwM2MgMCBcdTAwMjZcdTAwMjYgc2l6ZSA9PSAwKSB7XG4zMTIzOlx0XHRcdFx0aWYgKHBoeWRldi1cdTAwM2VpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX0lEIHx8XG4zMTI0Olx0XHRcdFx0ICAgIHBoeWRldi1cdTAwM2VpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1RYSUQpXG4zMTI1Olx0XHRcdFx0XHRyZXR1cm4gMTtcbjMxMjY6XHRcdFx0XHRlbHNlXG4zMTI3Olx0XHRcdFx0XHRyZXR1cm4gMDtcbjMxMjg6XHRcdFx0fVxuMzEyOTpcdFx0fVxuMzEzMDpcdFxuMzEzMTpcdFx0aWYgKHJldCBcdTAwM2MgMClcbjMxMzI6XHRcdFx0cmV0dXJuIHJldDtcbjMxMzM6XHRcbjMxMzQ6XHRcdGlmIChzaXplID09IDApXG4zMTM1Olx0XHRcdHJldHVybiBkZWxheTtcbjMxMzY6XHRcbjMxMzc6XHRcdGlmIChkZWxheSBcdTAwM2MgZGVsYXlfdmFsdWVzWzBdIHx8IGRlbGF5IFx1MDAzZSBkZWxheV92YWx1ZXNbc2l6ZSAtIDFdKSB7XG4zMTM4Olx0XHRcdHBoeWRldl9lcnIocGh5ZGV2LCBcJiMzNDtEZWxheSAlZCBpcyBvdXQgb2YgcmFuZ2VcXG5cJiMzNDssIGRlbGF5KTtcbjMxMzk6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4zMTQwOlx0XHR9XG4zMTQxOlx0XG4zMTQyOlx0XHRpZiAoZGVsYXkgPT0gZGVsYXlfdmFsdWVzWzBdKVxuMzE0MzpcdFx0XHRyZXR1cm4gMDtcbjMxNDQ6XHRcbjMxNDU6XHRcdGZvciAoaSA9IDE7IGkgXHUwMDNjIHNpemU7IGkmIzQzOyYjNDM7KSB7XG4zMTQ2Olx0XHRcdGlmIChkZWxheSA9PSBkZWxheV92YWx1ZXNbaV0pXG4zMTQ3Olx0XHRcdFx0cmV0dXJuIGk7XG4zMTQ4Olx0XG4zMTQ5Olx0XHRcdC8qIEZpbmQgYW4gYXBwcm94aW1hdGUgaW5kZXggYnkgbG9va2luZyB1cCB0aGUgdGFibGUgKi9cbjMxNTA6XHRcdFx0aWYgKGRlbGF5IFx1MDAzZSBkZWxheV92YWx1ZXNbaSAtIDFdIFx1MDAyNlx1MDAyNlxuMzE1MTpcdFx0XHQgICAgZGVsYXkgXHUwMDNjIGRlbGF5X3ZhbHVlc1tpXSkge1xuMzE1MjpcdFx0XHRcdGlmIChkZWxheSAtIGRlbGF5X3ZhbHVlc1tpIC0gMV0gXHUwMDNjXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIzOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzODExCgkJCQkJCQlvdXRwdXQ6IDE2NwoJCQkJCQkJdGhvdWdodHM6IDc3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgREFQODIxMVIgUEhZIERyaXZlciBmb3IgRnV6emluZyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBgcGh5X2dldF9pbnRlcm5hbF9kZWxheWAgZnVuY3Rpb24gd2l0aGluIHRoZSBuZXcgREFQODIxMVIgZHJpdmVyLiBUaGlzIGZ1bmN0aW9uIGF0dGVtcHRzIHRvIHJldHJpZXZlIGEgZGVsYXkgdmFsdWUgZnJvbSB0aGUgZGV2aWNlIHRyZWUgKERUKSB1c2luZyBgcGh5X2dldF91MzJfcHJvcGVydHlgLiBUaGUgY3J1Y2lhbCBwb2ludCBoZXJlIGlzIHRoYXQgaWYgYGRldi0mZ3Q7b2Zfbm9kZWAgaXMgTlVMTCAobWVhbmluZyBubyBEVCBpcyBwcmVzZW50KSwgYHBoeV9nZXRfdTMyX3Byb3BlcnR5YCB3aWxsIHJldHVybiBhbiBlcnJvci4gSG93ZXZlciwgdGhlIGBkYXA4MjExcl9jb25maWdfaW5pdGAgZnVuY3Rpb24gKmhhbmRsZXMqIHRoaXMgZXJyb3IgZ3JhY2VmdWxseS4gSXQgY2hlY2tzIGlmIHRoZSByZXR1cm5lZCBkZWxheSB2YWx1ZSBpcyBsZXNzIHRoYW4gMCwgYW5kIGlmIHNvLCBpdCBkZWZhdWx0cyB0byBlaXRoZXIgMCAoaWYgUkdNSUkpIG9yIGEgZGVmYXVsdCBzZWxlY3Rpb24gdmFsdWUuCgpUaGlzIGlzIHNpZ25pZmljYW50LiBJdCBtZWFucyB0aGUgZHJpdmVyIGNhbiBmdW5jdGlvbiBldmVuIHdpdGhvdXQgYSBkZXZpY2UgdHJlZSwgd2hpY2ggaXMgZXhjZWxsZW50IG5ld3MgZm9yIGZ1enppbmcsIGFzIGl0IGluY3JlYXNlcyB0aGUgcG90ZW50aWFsIHRhcmdldHMgYW5kIGRvZXNuJiMzOTt0IHJlc3RyaWN0IGl0IHRvIERULWVuYWJsZWQgZW52aXJvbm1lbnRzLgoKTm93LCB0byBkZXRlcm1pbmUgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGZvciBmdXp6aW5nLiBJIHNlZSBgQ09ORklHX0RBUDgyMTFSX1BIWWAgaXMgdGhlIHByaW1hcnkgb25lLCBidXQgaXQgKmRlcGVuZHMqIG9uIGBDT05GSUdfT0ZgLiBUaGVyZWZvcmUsIGlmIEkgd2FudCB0byB0YXJnZXQgdGhlIG5ldyBkcml2ZXIsIEkgbXVzdCBzcGVjaWZ5IGBEQVA4MjExUl9QSFlgLiBIb3dldmVyLCBnaXZlbiB0aGUgcHJvamVjdCBndWlkZWxpbmVzIHRoYXQgZGlzY291cmFnZSBvdmVybHkgZ2VuZXJpYyBjb25maWd1cmF0aW9ucyBhbmQgdGhlIGFzc3VtcHRpb24gdGhhdCBgT0ZgIGlzIGNvbW1vbiwgSSYjMzk7bGwgb25seSBsaXN0IHRoZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHJlbGF0ZWQgdG8gdGhlIGNvZGUgY2hhbmdlcy4KCkxldCYjMzk7cyBjb25zb2xpZGF0ZSB0aGUga2V5IGluZm9ybWF0aW9uIGZvciB0aGUgZnV6emluZyBzZXR1cDoKCiogICAqKldvcnRoRnV6emluZzoqKiBUcnVlIC0gYmVjYXVzZSB0aGUgZHJpdmVyIGNhbiBvcGVyYXRlIHdpdGhvdXQgYSBEVC4KKiAgICoqRm9jdXNTeW1ib2xzOioqIGBkYXA4MjExcl9jb25maWdfaW5pdGAsIGBkYXA4MjExcl9yZWFkX2V4dGAsIGFuZCBgZGFwODIxMXJfbW9kaWZ5X2V4dGAuIFRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIHNwZWNpZmljIHRvIHRoZSBuZXcgREFQODIxMVIgZHJpdmVyLgoqICAgKipFbmFibGVDb25maWdzOioqIGBEQVA4MjExUl9QSFlgLgoqICAgKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIGludHJvZHVjZXMgYSBQSFkgZHJpdmVyIGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpLiBJdCBpbmNsdWRlcyBpbml0aWFsaXphdGlvbiBhbmQgZXh0ZW5kZWQgcmVnaXN0ZXIgYWNjZXNzIGxvZ2ljLCBhbmQgaXQmIzM5O3MgcmVhY2hhYmxlIHRocm91Z2ggYW4gTURJTyBidXMgZW11bGF0aW9uIChlLmcuLCB1c2luZyBVU0IgRXRoZXJuZXQgYWRhcHRlcnMpLgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhlIHNjb3BlLiBJIGV4YW1pbmVkIHRoZSBgZGFwODIxMXJfZHJpdmVyYCBhbmQgY29uZmlybWVkIHRoYXQgdGhlIGRyaXZlciB1dGlsaXplcyBzdGFuZGFyZCBQSFkgZnVuY3Rpb25zIChgZ2VucGh5X3JlYWRfc3RhdHVzYCwgYGdlbnBoeV9sb29wYmFja2AsIGBnZW5waHlfY29uZmlnX2FuZWdgLCBgZ2VucGh5X3N1c3BlbmRgLCBgZ2VucGh5X3Jlc3VtZWApIHdoaWNoIGFyZSBnZW5lcmljIGFuZCBsZXNzIGludGVyZXN0aW5nIGZvciB0YXJnZXRlZCBmdXp6aW5nLiBUaGUga2V5IGZ1bmN0aW9ucyBhcmUgaW5kZWVkIHRoZSBpbml0aWFsaXphdGlvbiAoYGRhcDgyMTFyX2NvbmZpZ19pbml0YCksIGV4dGVuZGVkIHJlYWQgKGBkYXA4MjExcl9yZWFkX2V4dGApLCBhbmQgZXh0ZW5kZWQgbW9kaWZ5IChgZGFwODIxMXJfbW9kaWZ5X2V4dGApLgoKRmluYWxseSwgSSBjaGVja2VkIGFsbCByZWxhdGVkIGZpbGVzOiBgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kYXB1LGRhcDgyMTFyLnlhbWxgLCBgZHJpdmVycy9uZXQvcGh5L0tjb25maWdgLCBgZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlYCwgYW5kIGBkcml2ZXJzL25ldC9waHkvZGFwODIxMXIuY2AuIEJhc2VkIG9uIHRoaXMgcmV2aWV3LCBJJiMzOTttIGNvbmZpZGVudCB3aXRoIHRoaXMgYXNzZXNzbWVudC4gTGV0JiMzOTtzIHByb2NlZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIzOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEQVA4MjExUl9QSFkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYXA4MjExcl9jb25maWdfaW5pdCYjMzQ7LAogICAgJiMzNDtkYXA4MjExcl9yZWFkX2V4dCYjMzQ7LAogICAgJiMzNDtkYXA4MjExcl9tb2RpZnlfZXh0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBuZXcgUEhZIGRyaXZlciBmb3IgdGhlIERBUFUgVGVsZWNvbSBEQVA4MjExUihJKSBHaWdhYml0IEV0aGVybmV0IFBIWS4gVGhlIGRyaXZlciBpbXBsZW1lbnRzIGluaXRpYWxpemF0aW9uIGxvZ2ljIGFuZCBleHRlbmRlZCByZWdpc3RlciBhY2Nlc3MuIEl0IGNhbiBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBieSBlbXVsYXRpbmcgYW4gTURJTyBidXMgKGUuZy4sIHZpYSBVU0IgZXRoZXJuZXQgYWRhcHRlcnMgbGlrZSBzbXNjOTV4eCkgYW5kIHByZXNlbnRpbmcgdGhlIG1hdGNoaW5nIFBIWSBJRCAoMHgwMDA4MDExQikuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBUDgyMTFSX1BIWSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RhcDgyMTFyX2NvbmZpZ19pbml0JiMzNDssCiAgICAmIzM0O2RhcDgyMTFyX3JlYWRfZXh0JiMzNDssCiAgICAmIzM0O2RhcDgyMTFyX21vZGlmeV9leHQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG5ldyBQSFkgZHJpdmVyIGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZLiBUaGUgZHJpdmVyIGltcGxlbWVudHMgaW5pdGlhbGl6YXRpb24gbG9naWMgYW5kIGV4dGVuZGVkIHJlZ2lzdGVyIGFjY2Vzcy4gSXQgY2FuIGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGJ5IGVtdWxhdGluZyBhbiBNRElPIGJ1cyAoZS5nLiwgdmlhIFVTQiBldGhlcm5ldCBhZGFwdGVycyBsaWtlIHNtc2M5NXh4KSBhbmQgcHJlc2VudGluZyB0aGUgbWF0Y2hpbmcgUEhZIElEICgweDAwMDgwMTFCKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIzOjAyOjMyLjkwMjI1MTU4OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczNjAyOTY5NTgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBUDgyMTFSX1BIWVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhcDgyMTFyX2NvbmZpZ19pbml0XCIsXG4gICAgXCJkYXA4MjExcl9yZWFkX2V4dFwiLFxuICAgIFwiZGFwODIxMXJfbW9kaWZ5X2V4dFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBuZXcgUEhZIGRyaXZlciBmb3IgdGhlIERBUFUgVGVsZWNvbSBEQVA4MjExUihJKSBHaWdhYml0IEV0aGVybmV0IFBIWS4gVGhlIGRyaXZlciBpbXBsZW1lbnRzIGluaXRpYWxpemF0aW9uIGxvZ2ljIGFuZCBleHRlbmRlZCByZWdpc3RlciBhY2Nlc3MuIEl0IGNhbiBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBieSBlbXVsYXRpbmcgYW4gTURJTyBidXMgKGUuZy4sIHZpYSBVU0IgZXRoZXJuZXQgYWRhcHRlcnMgbGlrZSBzbXNjOTV4eCkgYW5kIHByZXNlbnRpbmcgdGhlIG1hdGNoaW5nIFBIWSBJRCAoMHgwMDA4MDExQikuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIzOjAyOjMyLjkwMjI1ODk1OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ0NTYzNzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNjY0NGM3ODk0MDMyYTU4ZGRiYjM1ZGY0YmUzMmU2NzI1N2Y3MTY0NFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCAxNiAyMzowMjozMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RhcHUsZGFwODIxMXIueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZGFwdSxkYXA4MjExci55YW1sXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uZDQwMTJmYTE3YTFlMTFcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kYXB1LGRhcDgyMTFyLnlhbWxcXG5AQCAtMCwwICsxLDczIEBAXFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IChHUEwtMi4wLW9ubHkgT1IgQlNELTItQ2xhdXNlKVxcbislWUFNTCAxLjJcXG4rLS0tXFxuKyRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L2RhcHUsZGFwODIxMXIueWFtbCNcXG4rJHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXFxuK1xcbit0aXRsZTogREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZXFxuK1xcbittYWludGFpbmVyczpcXG4rICAtIEFydGVtIFNoaW1rbyBcXHUwMDNjYS5zaGlta28uZGV2QGdtYWlsLmNvbVxcdTAwM2VcXG4rXFxuK2Rlc2NyaXB0aW9uOiB8XFxuKyAgVGhlIERBUDgyMTFSKEkpIGlzIGEgR2lnYWJpdCBFdGhlcm5ldCBQSFkgd2l0aCBSR01JSSBpbnRlcmZhY2UsXFxuKyAgc3VwcG9ydGluZyBJRUVFIDgwMi4zYXogRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldCwgSUVFRSAxNTg4IFN5bmNFLFxcbisgIGFuZCBhbiBpbnRlcm5hbCBwYWNrZXQgZ2VuZXJhdG9yIGZvciBkaWFnbm9zdGljcy5cXG4rXFxuKyAgU3BlY2lmaWNhdGlvbnM6XFxuKyAgICAtIDEwQkFTRS1UZSwgMTAwQkFTRS1UWCwgMTAwMEJBU0UtVFxcbisgICAgLSBSR01JSSB3aXRoIGNvbmZpZ3VyYWJsZSBUWC9SWCBjbG9jayBkZWxheXMgKDE1MCBwcyBzdGVwcywgMC0yMjUwIHBzKVxcbisgICAgLSBJRUVFIDgwMi4zYXotMjAxMCBFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0XFxuKyAgICAtIElFRUUgMTU4OCBTeW5jRSBzdXBwb3J0XFxuKyAgICAtIEludGVybmFsIHBhY2tldCBnZW5lcmF0b3IgYW5kIGNoZWNrZXIgZm9yIGxpbmsgZGlhZ25vc3RpY3NcXG4rXFxuK2FsbE9mOlxcbisgIC0gJHJlZjogZXRoZXJuZXQtcGh5LnlhbWwjXFxuK1xcbitwcm9wZXJ0aWVzOlxcbisgIGNvbXBhdGlibGU6XFxuKyAgICBjb25zdDogZXRoZXJuZXQtcGh5LWlkMDAwOC4wMTFiXFxuK1xcbisgIHJlZzpcXG4rICAgIG1heEl0ZW1zOiAxXFxuK1xcbisgIHJ4LWludGVybmFsLWRlbGF5LXBzOlxcbisgICAgZGVzY3JpcHRpb246XFxuKyAgICAgIFJHTUlJIFJYIGNsb2NrIGRlbGF5IGluIHBpY29zZWNvbmRzICgwIHRvIG1heGltdW0pLlxcbisgICAgbXVsdGlwbGVPZjogMTUwXFxuKyAgICBtYXhpbXVtOiAyMjUwXFxuKyAgICBkZWZhdWx0OiAxOTUwXFxuK1xcbisgIHR4LWludGVybmFsLWRlbGF5LXBzOlxcbisgICAgZGVzY3JpcHRpb246XFxuKyAgICAgIFJHTUlJIFRYIGNsb2NrIGRlbGF5IGluIHBpY29zZWNvbmRzICgwIHRvIG1heGltdW0pLlxcbisgICAgbXVsdGlwbGVPZjogMTUwXFxuKyAgICBtYXhpbXVtOiAyMjUwXFxuKyAgICBkZWZhdWx0OiAxOTUwXFxuK1xcbisgIGRhcHUsdHgtaW52ZXJ0ZWQtY2xrOlxcbisgICAgJHJlZjogL3NjaGVtYXMvdHlwZXMueWFtbCMvZGVmaW5pdGlvbnMvZmxhZ1xcbisgICAgZGVzY3JpcHRpb246XFxuKyAgICAgIElmIHByZXNlbnQsIHRoZSBSR01JSSBUWCBjbG9jayB0byB0aGUgTUFDIGlzIGludmVydGVkICgxODAgZGVncmVlXFxuKyAgICAgIHBoYXNlIHNoaWZ0IHJlbGF0aXZlIHRvIHRoZSBkYXRhIGxpbmVzKS4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpY1xcbisgICAgICBleHRlbnNpb24gZm9yIGJvYXJkcyB3aGVyZSBQQ0IgdHJhY2UgbGVuZ3RoIG9yIE1BQyByZXF1aXJlbWVudHNcXG4rICAgICAgbmVjZXNzaXRhdGUgY2xvY2sgaW52ZXJzaW9uLiBPbmx5IHVzZSB0aGlzIHByb3BlcnR5IGFmdGVyIGhhcmR3YXJlXFxuKyAgICAgIHNpZ25hbCBpbnRlZ3JpdHkgdmFsaWRhdGlvbi5cXG4rXFxuK3VuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2VcXG4rXFxuK2V4YW1wbGVzOlxcbisgIC0gfFxcbisgICAgbWRpbyB7XFxuKyAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSBcXHUwMDNjMVxcdTAwM2U7XFxuKyAgICAgICAgI3NpemUtY2VsbHMgPSBcXHUwMDNjMFxcdTAwM2U7XFxuK1xcbisgICAgICAgIGV0aGVybmV0LXBoeUAxIHtcXG4rICAgICAgICAgICAgY29tcGF0aWJsZSA9IFxcXCJldGhlcm5ldC1waHktaWQwMDA4LjAxMWJcXFwiO1xcbisgICAgICAgICAgICByZWcgPSBcXHUwMDNjMVxcdTAwM2U7XFxuKyAgICAgICAgICAgIHJ4LWludGVybmFsLWRlbGF5LXBzID0gXFx1MDAzYzIxMDBcXHUwMDNlO1xcbisgICAgICAgICAgICB0eC1pbnRlcm5hbC1kZWxheS1wcyA9IFxcdTAwM2MyMTAwXFx1MDAzZTtcXG4rICAgICAgICAgICAgZGFwdSx0eC1pbnZlcnRlZC1jbGs7XFxuKyAgICAgICAgfTtcXG4rICAgIH07XFxuK1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvS2NvbmZpZyBiL2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnXFxuaW5kZXggMDk5ZjI1ZGNlYWJiYzcuLjQ1NzZmNzA3YWM5NDQ1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L0tjb25maWdcXG5AQCAtMjM3LDYgKzIzNywxNiBAQCBjb25maWcgREFWSUNPTV9QSFlcXG4gXFx0aGVscFxcbiBcXHQgIEN1cnJlbnRseSBzdXBwb3J0cyBkbTkxNjFlIGFuZCBkbTkxMzFcXG4gXFxuK2NvbmZpZyBEQVA4MjExUl9QSFlcXG4rXFx0dHJpc3RhdGUgXFxcIkRBUFUgVGVsZWNvbSBEQVA4MjExUihJKSBHaWdhYml0IEV0aGVybmV0IFBIWVxcXCJcXG4rXFx0ZGVwZW5kcyBvbiBPRlxcbitcXHRoZWxwXFxuK1xcdCAgU3VwcG9ydCBmb3IgdGhlIERBUFUgVGVsZWNvbSBEQVA4MjExUihJKSBHaWdhYml0IEV0aGVybmV0IFBIWS5cXG4rXFx0ICBUaGlzIFBIWSBpcyBkZXNpZ25lZCBmb3IgZW50ZXJwcmlzZSBhbmQgaW5kdXN0cmlhbCBuZXR3b3JraW5nXFxuK1xcdCAgYXBwbGljYXRpb25zLCBzdXBwb3J0aW5nIDEwLzEwMC8xMDAwIE1icHMgb3BlcmF0aW9uLlxcbitcXHQgIFJHTUlJIHdpdGg6IGNvbmZpZ3VyYWJsZSBUWC9SWCBjbG9jayBkZWxheXMsIG9wdGlvbmFsIGZsYWcgdG8gZW5hYmxlXFxuK1xcdCAgMTgwLWRlZ3JlZSBUWCBjbG9jayBwaGFzZSBzaGlmdCBhbmQgaW50ZXJuYWwgcGFja2V0IGdlbmVyYXRvci5cXG4rXFxuIGNvbmZpZyBJQ1BMVVNfUEhZXFxuIFxcdHRyaXN0YXRlIFxcXCJJQ1BsdXMgUEhZc1xcXCJcXG4gXFx0aGVscFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGVcXG5pbmRleCBkZTY2MGFlOTQ5NDUzZC4uYWQzNTczM2ViNGJiNjEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlXFxuQEAgLTUzLDYgKzUzLDcgQEAgb2JqLSQoQ09ORklHX0JST0FEQ09NX1BIWSlcXHQrPSBicm9hZGNvbS5vXFxuIG9iai0kKENPTkZJR19DSUNBREFfUEhZKVxcdCs9IGNpY2FkYS5vXFxuIG9iai0kKENPTkZJR19DT1JUSU5BX1BIWSlcXHQrPSBjb3J0aW5hLm9cXG4gb2JqLSQoQ09ORklHX0RBVklDT01fUEhZKVxcdCs9IGRhdmljb20ub1xcbitvYmotJChDT05GSUdfREFQODIxMVJfUEhZKVxcdCs9IGRhcDgyMTFyLm9cXG4gb2JqLSQoQ09ORklHX0RQODM2NDBfUEhZKVxcdCs9IGRwODM2NDAub1xcbiBvYmotJChDT05GSUdfRFA4MzgyMl9QSFkpXFx0Kz0gZHA4MzgyMi5vXFxuIG9iai0kKENPTkZJR19EUDgzODQ4X1BIWSlcXHQrPSBkcDgzODQ4Lm9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMgYi9kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuY1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmU2MzgxZmQ4Yzk4YzIwXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jXFxuQEAgLTAsMCArMSwxOTEgQEBcXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTFxcbisvKlxcbisgKiBEcml2ZXIgZm9yIHRoZSBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFkuXFxuKyAqXFxuKyAqIFNwZWNpZmljYXRpb25zOlxcbisgKiAgIC0gSUVFRSA4MDIuMyAxMEJBU0UtVGUsIDEwMEJBU0UtVFgsIDEwMDBCQVNFLVRcXG4rICogICAtIElFRUUgODAyLjNhei0yMDEwIEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXRcXG4rICogICAtIElFRUUgMTU4OCBTeW5jRSBzdXBwb3J0XFxuKyAqICAgLSBSR01JSVxcbisgKlxcbisgKiBBdXRob3I6IEFydGVtIFNoaW1rbyBcXHUwMDNjYS5zaGlta28uZGV2QGdtYWlsLmNvbVxcdTAwM2VcXG4rICovXFxuK1xcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvYml0ZmllbGQuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Vycm5vLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9ldGh0b29sLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9rZXJuZWwuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lvcG9sbC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvbWlpLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb2R1bGUuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L25ldGRldmljZS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvb2YuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BoeS5oXFx1MDAzZVxcbitcXG4rI2RlZmluZSBEQVA4MjExUl9QSFlfSURcXHRcXHRcXHQweDAwMDgwMTFCXFxuKyNkZWZpbmUgREFQODIxMVJfUEhZX0lEX01BU0tcXHRcXHQweEZGRkZGRkZGXFxuK1xcbisjZGVmaW5lIERBUDgyMTFSX0VYVF9BRERcXHRcXHQweDFFXFxuKyNkZWZpbmUgREFQODIxMVJfRVhUX0RBVEFcXHRcXHQweDFGXFxuK1xcbisjZGVmaW5lIERBUDgyMTFSX1BIWV9DT05cXHRcXHQweEEwMDFcXG4rI2RlZmluZSBEQVA4MjExUl9QSFlfU1dfUlNUXFx0XFx0QklUKDE1KVxcbitcXG4rI2RlZmluZSBEQVA4MjExUl9SR01JSV9DT05cXHRcXHQweEEwMDNcXG4rLyogRGVmYXVsdCBpbml0aWFsIFRYIGRlbGF5IHZhbHVlIGJ5IGRhdGFzaGVldC4gKi9cXG4rI2RlZmluZSBEQVA4MjExUl9JTklUX1RYX0RFTF9WQUxcXHQxXFxuKyNkZWZpbmUgREFQODIxMVJfUkdNSUlfVFhfREVMX01BU0tcXHRHRU5NQVNLKDMsIDApXFxuKyNkZWZpbmUgREFQODIxMVJfUkdNSUlfUlhfREVMX01BU0tcXHRHRU5NQVNLKDEzLCAxMClcXG4rI2RlZmluZSBEQVA4MjExUl9SR01JSV9DTEtfSU5WRVJUXFx0QklUKDE0KVxcbitcXG4rI2RlZmluZSBEQVA4MjExUl9SR01JSV9DT05GSUdfTUFTS1xcdChEQVA4MjExUl9SR01JSV9DTEtfSU5WRVJUIHwgXFxcXFxcbitcXHRcXHRcXHRcXHRcXHREQVA4MjExUl9SR01JSV9SWF9ERUxfTUFTSyB8IFxcXFxcXG4rXFx0XFx0XFx0XFx0XFx0REFQODIxMVJfUkdNSUlfVFhfREVMX01BU0spXFxuK1xcbisvKiBEZWZhdWx0IFJHTUlJIGRlbGF5OiAxMyAqIDE1MCA9PSAxLjk1bnMgKi9cXG4rI2RlZmluZSBEQVA4MjExUl9ERUZBVUxUX0RFTF9TRUxcXHQweERcXG4rXFxuK3N0YXRpYyBjb25zdCBpbnQgZGFwODIxMXJfaW50ZXJuYWxfZGVsYXlbXSA9IHswLCAxNTAsIDMwMCwgNDUwLCA2MDAsIDc1MCwgOTAwLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICAxMDUwLCAxMjAwLCAxMzUwLCAxNTAwLCAxNjUwLCAxODAwLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICAxOTUwLCAyMTAwLCAyMjUwfTtcXG4rXFxuKyNkZWZpbmUgREFQODIxMVJfREVMQVlfU0laRVxcdEFSUkFZX1NJWkUoZGFwODIxMXJfaW50ZXJuYWxfZGVsYXkpXFxuK1xcbisvKipcXG4rICogZGFwODIxMXJfcmVhZF9leHQoKSAtIFJlYWQgZXh0ZW5kZWQgcmVnaXN0ZXJcXG4rICogQHBoeWRldjogUEhZIGRldmljZSBzdHJ1Y3R1cmVcXG4rICogQHJlZzogRXh0ZW5kZWQgcmVnaXN0ZXIgYWRkcmVzc1xcbisgKlxcbisgKiBSZWFkcyBhIFBIWSBleHRlbmRlZCByZWdpc3RlciB1c2luZyB0aGUgaW5kaXJlY3QgYWNjZXNzIG1ldGhvZC5cXG4rICogVGhlIGNhbGxlciBtdXN0IGhvbGQgdGhlIE1ESU8gYnVzIGxvY2suXFxuKyAqXFxuKyAqIFJldHVybjogUmVnaXN0ZXIgdmFsdWUgb24gc3VjY2Vzcywgb3IgbmVnYXRpdmUgZXJyb3IgY29kZVxcbisgKi9cXG4rc3RhdGljIGludCBkYXA4MjExcl9yZWFkX2V4dChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnKVxcbit7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbitcXHRyZXQgPSBfX3BoeV93cml0ZShwaHlkZXYsIERBUDgyMTFSX0VYVF9BREQsIHJlZyk7XFxuK1xcdGlmIChyZXQgXFx1MDAzYyAwKVxcbitcXHRcXHRnb3RvIG91dDtcXG4rXFxuK1xcdHJldCA9IF9fcGh5X3JlYWQocGh5ZGV2LCBEQVA4MjExUl9FWFRfREFUQSk7XFxuK291dDpcXG4rXFx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbitcXHRyZXR1cm4gcmV0O1xcbit9XFxuK1xcbisvKipcXG4rICogZGFwODIxMXJfbW9kaWZ5X2V4dCgpIC0gTW9kaWZ5IGV4dGVuZGVkIHJlZ2lzdGVyIGJpdHNcXG4rICogQHBoeWRldjogUEhZIGRldmljZSBzdHJ1Y3R1cmVcXG4rICogQHJlZzogRXh0ZW5kZWQgcmVnaXN0ZXIgYWRkcmVzc1xcbisgKiBAbWFzazogQml0IG1hc2sgb2YgYml0cyB0byBjbGVhclxcbisgKiBAc2V0OiBCaXQgbWFzayBvZiBiaXRzIHRvIHNldFxcbisgKlxcbisgKiBNb2RpZmllcyBhIFBIWSBleHRlbmRlZCByZWdpc3RlciB1c2luZyB0aGUgaW5kaXJlY3QgYWNjZXNzIG1ldGhvZC5cXG4rICogTmV3IHZhbHVlID0gKG9sZCB2YWx1ZSBcXHUwMDI2IH5tYXNrKSB8IHNldC5cXG4rICogVGhlIGNhbGxlciBtdXN0IGhvbGQgdGhlIE1ESU8gYnVzIGxvY2suXFxuKyAqXFxuKyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBvciBuZWdhdGl2ZSBlcnJvciBjb2RlXFxuKyAqL1xcbitzdGF0aWMgaW50IGRhcDgyMTFyX21vZGlmeV9leHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZywgdTE2IG1hc2ssIHUxNiBzZXQpXFxuK3tcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuK1xcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgREFQODIxMVJfRVhUX0FERCwgcmVnKTtcXG4rXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXG4rXFx0cmV0ID0gX19waHlfbW9kaWZ5KHBoeWRldiwgREFQODIxMVJfRVhUX0RBVEEsIG1hc2ssIHNldCk7XFxuK291dDpcXG4rXFx0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbitcXHRyZXR1cm4gcmV0O1xcbit9XFxuK1xcbisvKipcXG4rICogZGFwODIxMXJfY29uZmlnX2luaXQoKSAtIEluaXRpYWxpemUgUEhZXFxuKyAqIEBwaHlkZXY6IFBIWSBkZXZpY2Ugc3RydWN0dXJlXFxuKyAqXFxuKyAqIENvbmZpZ3VyZXMgdGhlIFBIWSBkdXJpbmcgaW5pdGlhbGl6YXRpb246XFxuKyAqIC0gVFggY2xvY2sgaW52ZXJ0aW9uXFxuKyAqIC0gUkdNSUkgZGVsYXlzIGJhc2VkIG9uIGludGVyZmFjZSBtb2RlXFxuKyAqIC0gU29mdHdhcmUgcmVzZXQgdG8gYXBwbHkgc2V0dGluZ3MgKGxvdyBhY3RpdmUsIHNlbGYgY2xlYXIpXFxuKyAqXFxuKyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBvciBuZWdhdGl2ZSBlcnJvciBjb2RlXFxuKyAqL1xcbitzdGF0aWMgaW50IGRhcDgyMTFyX2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuK3tcXG4rXFx0c3RydWN0IGRldmljZV9ub2RlICpwaHlkZXZfbm9kZSA9IHBoeWRldi1cXHUwMDNlbWRpby5kZXYub2Zfbm9kZTtcXG4rXFx0dTE2IHNldCA9IDAsIHZhbCA9IDA7XFxuK1xcdGludCByZXQ7XFxuK1xcdHMzMiBpbnRlcm5hbF9kZWxheTtcXG4rXFxuK1xcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wocGh5ZGV2X25vZGUsIFxcXCJkYXB1LHR4LWludmVydGVkLWNsa1xcXCIpKVxcbitcXHRcXHRzZXQgfD0gREFQODIxMVJfUkdNSUlfQ0xLX0lOVkVSVDtcXG4rXFxuK1xcdGludGVybmFsX2RlbGF5ID0gcGh5X2dldF9pbnRlcm5hbF9kZWxheShwaHlkZXYsIGRhcDgyMTFyX2ludGVybmFsX2RlbGF5LFxcbitcXHRcXHRcXHRcXHRcXHRcXHREQVA4MjExUl9ERUxBWV9TSVpFLCB0cnVlKTtcXG4rXFx0aWYgKGludGVybmFsX2RlbGF5IFxcdTAwM2MgMCkge1xcbitcXHRcXHRpZiAocGh5ZGV2LVxcdTAwM2VpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJKVxcbitcXHRcXHRcXHRpbnRlcm5hbF9kZWxheSA9IDA7XFxuK1xcdFxcdGVsc2VcXG4rXFx0XFx0XFx0aW50ZXJuYWxfZGVsYXkgPSBEQVA4MjExUl9ERUZBVUxUX0RFTF9TRUw7XFxuK1xcdH1cXG4rXFxuK1xcdHNldCB8PSBGSUVMRF9QUkVQKERBUDgyMTFSX1JHTUlJX1JYX0RFTF9NQVNLLCBpbnRlcm5hbF9kZWxheSk7XFxuK1xcbitcXHRpbnRlcm5hbF9kZWxheSA9IHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkocGh5ZGV2LCBkYXA4MjExcl9pbnRlcm5hbF9kZWxheSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0REFQODIxMVJfREVMQVlfU0laRSwgZmFsc2UpO1xcbitcXHRpZiAoaW50ZXJuYWxfZGVsYXkgXFx1MDAzYyAwKSB7XFxuK1xcdFxcdGlmIChwaHlkZXYtXFx1MDAzZWludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUkpXFxuK1xcdFxcdFxcdGludGVybmFsX2RlbGF5ID0gREFQODIxMVJfSU5JVF9UWF9ERUxfVkFMO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdGludGVybmFsX2RlbGF5ID0gREFQODIxMVJfREVGQVVMVF9ERUxfU0VMO1xcbitcXHR9XFxuK1xcbitcXHRzZXQgfD0gRklFTERfUFJFUChEQVA4MjExUl9SR01JSV9UWF9ERUxfTUFTSywgaW50ZXJuYWxfZGVsYXkpO1xcbitcXG4rXFx0cmV0ID0gZGFwODIxMXJfbW9kaWZ5X2V4dChwaHlkZXYsIERBUDgyMTFSX1BIWV9DT04sIERBUDgyMTFSX1BIWV9TV19SU1QsIDApO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0LyogV2FpdCBmb3IgcmVzZXQgc2VsZi1jbGVhciAobWF4IDIwMCB1cykgKi9cXG4rXFx0cmV0ID0gcmVhZF9wb2xsX3RpbWVvdXQoZGFwODIxMXJfcmVhZF9leHQsIHZhbCxcXG4rXFx0XFx0XFx0XFx0KHZhbCBcXHUwMDI2IERBUDgyMTFSX1BIWV9TV19SU1QpLFxcbitcXHRcXHRcXHRcXHQyMCwgMjAwLCBmYWxzZSwgcGh5ZGV2LCBEQVA4MjExUl9QSFlfQ09OKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdHJldCA9IGRhcDgyMTFyX21vZGlmeV9leHQocGh5ZGV2LCBEQVA4MjExUl9SR01JSV9DT04sIERBUDgyMTFSX1JHTUlJX0NPTkZJR19NQVNLLCBzZXQpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkYXA4MjExcl9kcml2ZXJbXSA9IHtcXG4rXFx0e1xcbitcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoREFQODIxMVJfUEhZX0lEKSxcXG4rXFx0XFx0Lm5hbWVcXHRcXHQ9IFxcXCJEQVA4MjExUiBHaWdhYml0IEV0aGVybmV0XFxcIixcXG4rXFx0XFx0LmNvbmZpZ19pbml0XFx0PSBkYXA4MjExcl9jb25maWdfaW5pdCxcXG4rXFx0XFx0LnJlYWRfc3RhdHVzXFx0PSBnZW5waHlfcmVhZF9zdGF0dXMsXFxuK1xcdFxcdC5zZXRfbG9vcGJhY2tcXHQ9IGdlbnBoeV9sb29wYmFjayxcXG4rXFx0XFx0LmNvbmZpZ19hbmVnXFx0PSBnZW5waHlfY29uZmlnX2FuZWcsXFxuK1xcdFxcdC5zdXNwZW5kXFx0PSBnZW5waHlfc3VzcGVuZCxcXG4rXFx0XFx0LnJlc3VtZVxcdFxcdD0gZ2VucGh5X3Jlc3VtZSxcXG4rXFx0fSxcXG4rfTtcXG4rbW9kdWxlX3BoeV9kcml2ZXIoZGFwODIxMXJfZHJpdmVyKTtcXG4rXFxuK01PRFVMRV9ERVNDUklQVElPTihcXFwiREFQODIxMVIgR2lnYWJpdCBFdGhlcm5ldCBQSFkgZHJpdmVyXFxcIik7XFxuK01PRFVMRV9BVVRIT1IoXFxcIkFydGVtIFNoaW1rbyBcXHUwMDNjYS5zaGlta28uZGV2QGdtYWlsLmNvbVxcdTAwM2VcXFwiKTtcXG4rTU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcbitcXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBkYXA4MjExcl90YltdID0ge1xcbitcXHR7IERBUDgyMTFSX1BIWV9JRCwgREFQODIxMVJfUEhZX0lEX01BU0sgfSxcXG4rXFx0eyAvKiBzZW50aW5lbCAqLyB9XFxuK307XFxuK01PRFVMRV9ERVZJQ0VfVEFCTEUobWRpbywgZGFwODIxMXJfdGIpO1xcbitcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMjM6MDI6MzMuNDQ3NTIzNzM4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MzA1NzY4ODE3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQVA4MjExUl9QSFlcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYXA4MjExcl9jb25maWdfaW5pdFwiLFxuICAgIFwiZGFwODIxMXJfcmVhZF9leHRcIixcbiAgICBcImRhcDgyMTFyX21vZGlmeV9leHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbmV3IFBIWSBkcml2ZXIgZm9yIHRoZSBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFkuIFRoZSBkcml2ZXIgaW1wbGVtZW50cyBpbml0aWFsaXphdGlvbiBsb2dpYyBhbmQgZXh0ZW5kZWQgcmVnaXN0ZXIgYWNjZXNzLiBJdCBjYW4gYmUgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYnkgZW11bGF0aW5nIGFuIE1ESU8gYnVzIChlLmcuLCB2aWEgVVNCIGV0aGVybmV0IGFkYXB0ZXJzIGxpa2Ugc21zYzk1eHgpIGFuZCBwcmVzZW50aW5nIHRoZSBtYXRjaGluZyBQSFkgSUQgKDB4MDAwODAxMUIpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDY2NDRjNzg5NDAzMmE1OGRkYmIzNWRmNGJlMzJlNjcyNTdmNzE2NDRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAxNiAyMzowMjozMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZGFwdSxkYXA4MjExci55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kYXB1LGRhcDgyMTFyLnlhbWxcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uZDQwMTJmYTE3YTFlMTFcbi0tLSAvZGV2L251bGxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZGFwdSxkYXA4MjExci55YW1sXG5AQCAtMCwwICsxLDczIEBAXG4rIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjAtb25seSBPUiBCU0QtMi1DbGF1c2UpXG4rJVlBTUwgMS4yXG4rLS0tXG4rJGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9uZXQvZGFwdSxkYXA4MjExci55YW1sI1xuKyRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuK1xuK3RpdGxlOiBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFlcbitcbittYWludGFpbmVyczpcbisgIC0gQXJ0ZW0gU2hpbWtvIFx1MDAzY2Euc2hpbWtvLmRldkBnbWFpbC5jb21cdTAwM2VcbitcbitkZXNjcmlwdGlvbjogfFxuKyAgVGhlIERBUDgyMTFSKEkpIGlzIGEgR2lnYWJpdCBFdGhlcm5ldCBQSFkgd2l0aCBSR01JSSBpbnRlcmZhY2UsXG4rICBzdXBwb3J0aW5nIElFRUUgODAyLjNheiBFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0LCBJRUVFIDE1ODggU3luY0UsXG4rICBhbmQgYW4gaW50ZXJuYWwgcGFja2V0IGdlbmVyYXRvciBmb3IgZGlhZ25vc3RpY3MuXG4rXG4rICBTcGVjaWZpY2F0aW9uczpcbisgICAgLSAxMEJBU0UtVGUsIDEwMEJBU0UtVFgsIDEwMDBCQVNFLVRcbisgICAgLSBSR01JSSB3aXRoIGNvbmZpZ3VyYWJsZSBUWC9SWCBjbG9jayBkZWxheXMgKDE1MCBwcyBzdGVwcywgMC0yMjUwIHBzKVxuKyAgICAtIElFRUUgODAyLjNhei0yMDEwIEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXRcbisgICAgLSBJRUVFIDE1ODggU3luY0Ugc3VwcG9ydFxuKyAgICAtIEludGVybmFsIHBhY2tldCBnZW5lcmF0b3IgYW5kIGNoZWNrZXIgZm9yIGxpbmsgZGlhZ25vc3RpY3NcbitcbithbGxPZjpcbisgIC0gJHJlZjogZXRoZXJuZXQtcGh5LnlhbWwjXG4rXG4rcHJvcGVydGllczpcbisgIGNvbXBhdGlibGU6XG4rICAgIGNvbnN0OiBldGhlcm5ldC1waHktaWQwMDA4LjAxMWJcbitcbisgIHJlZzpcbisgICAgbWF4SXRlbXM6IDFcbitcbisgIHJ4LWludGVybmFsLWRlbGF5LXBzOlxuKyAgICBkZXNjcmlwdGlvbjpcbisgICAgICBSR01JSSBSWCBjbG9jayBkZWxheSBpbiBwaWNvc2Vjb25kcyAoMCB0byBtYXhpbXVtKS5cbisgICAgbXVsdGlwbGVPZjogMTUwXG4rICAgIG1heGltdW06IDIyNTBcbisgICAgZGVmYXVsdDogMTk1MFxuK1xuKyAgdHgtaW50ZXJuYWwtZGVsYXktcHM6XG4rICAgIGRlc2NyaXB0aW9uOlxuKyAgICAgIFJHTUlJIFRYIGNsb2NrIGRlbGF5IGluIHBpY29zZWNvbmRzICgwIHRvIG1heGltdW0pLlxuKyAgICBtdWx0aXBsZU9mOiAxNTBcbisgICAgbWF4aW11bTogMjI1MFxuKyAgICBkZWZhdWx0OiAxOTUwXG4rXG4rICBkYXB1LHR4LWludmVydGVkLWNsazpcbisgICAgJHJlZjogL3NjaGVtYXMvdHlwZXMueWFtbCMvZGVmaW5pdGlvbnMvZmxhZ1xuKyAgICBkZXNjcmlwdGlvbjpcbisgICAgICBJZiBwcmVzZW50LCB0aGUgUkdNSUkgVFggY2xvY2sgdG8gdGhlIE1BQyBpcyBpbnZlcnRlZCAoMTgwIGRlZ3JlZVxuKyAgICAgIHBoYXNlIHNoaWZ0IHJlbGF0aXZlIHRvIHRoZSBkYXRhIGxpbmVzKS4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpY1xuKyAgICAgIGV4dGVuc2lvbiBmb3IgYm9hcmRzIHdoZXJlIFBDQiB0cmFjZSBsZW5ndGggb3IgTUFDIHJlcXVpcmVtZW50c1xuKyAgICAgIG5lY2Vzc2l0YXRlIGNsb2NrIGludmVyc2lvbi4gT25seSB1c2UgdGhpcyBwcm9wZXJ0eSBhZnRlciBoYXJkd2FyZVxuKyAgICAgIHNpZ25hbCBpbnRlZ3JpdHkgdmFsaWRhdGlvbi5cbitcbit1bmV2YWx1YXRlZFByb3BlcnRpZXM6IGZhbHNlXG4rXG4rZXhhbXBsZXM6XG4rICAtIHxcbisgICAgbWRpbyB7XG4rICAgICAgICAjYWRkcmVzcy1jZWxscyA9IFx1MDAzYzFcdTAwM2U7XG4rICAgICAgICAjc2l6ZS1jZWxscyA9IFx1MDAzYzBcdTAwM2U7XG4rXG4rICAgICAgICBldGhlcm5ldC1waHlAMSB7XG4rICAgICAgICAgICAgY29tcGF0aWJsZSA9IFwiZXRoZXJuZXQtcGh5LWlkMDAwOC4wMTFiXCI7XG4rICAgICAgICAgICAgcmVnID0gXHUwMDNjMVx1MDAzZTtcbisgICAgICAgICAgICByeC1pbnRlcm5hbC1kZWxheS1wcyA9IFx1MDAzYzIxMDBcdTAwM2U7XG4rICAgICAgICAgICAgdHgtaW50ZXJuYWwtZGVsYXktcHMgPSBcdTAwM2MyMTAwXHUwMDNlO1xuKyAgICAgICAgICAgIGRhcHUsdHgtaW52ZXJ0ZWQtY2xrO1xuKyAgICAgICAgfTtcbisgICAgfTtcbitcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvS2NvbmZpZyBiL2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnXG5pbmRleCAwOTlmMjVkY2VhYmJjNy4uNDU3NmY3MDdhYzk0NDUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvS2NvbmZpZ1xuKysrIGIvZHJpdmVycy9uZXQvcGh5L0tjb25maWdcbkBAIC0yMzcsNiArMjM3LDE2IEBAIGNvbmZpZyBEQVZJQ09NX1BIWVxuIFx0aGVscFxuIFx0ICBDdXJyZW50bHkgc3VwcG9ydHMgZG05MTYxZSBhbmQgZG05MTMxXG4gXG4rY29uZmlnIERBUDgyMTFSX1BIWVxuK1x0dHJpc3RhdGUgXCJEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFlcIlxuK1x0ZGVwZW5kcyBvbiBPRlxuK1x0aGVscFxuK1x0ICBTdXBwb3J0IGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZLlxuK1x0ICBUaGlzIFBIWSBpcyBkZXNpZ25lZCBmb3IgZW50ZXJwcmlzZSBhbmQgaW5kdXN0cmlhbCBuZXR3b3JraW5nXG4rXHQgIGFwcGxpY2F0aW9ucywgc3VwcG9ydGluZyAxMC8xMDAvMTAwMCBNYnBzIG9wZXJhdGlvbi5cbitcdCAgUkdNSUkgd2l0aDogY29uZmlndXJhYmxlIFRYL1JYIGNsb2NrIGRlbGF5cywgb3B0aW9uYWwgZmxhZyB0byBlbmFibGVcbitcdCAgMTgwLWRlZ3JlZSBUWCBjbG9jayBwaGFzZSBzaGlmdCBhbmQgaW50ZXJuYWwgcGFja2V0IGdlbmVyYXRvci5cbitcbiBjb25maWcgSUNQTFVTX1BIWVxuIFx0dHJpc3RhdGUgXCJJQ1BsdXMgUEhZc1wiXG4gXHRoZWxwXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlIGIvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlXG5pbmRleCBkZTY2MGFlOTQ5NDUzZC4uYWQzNTczM2ViNGJiNjEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGVcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZVxuQEAgLTUzLDYgKzUzLDcgQEAgb2JqLSQoQ09ORklHX0JST0FEQ09NX1BIWSlcdCs9IGJyb2FkY29tLm9cbiBvYmotJChDT05GSUdfQ0lDQURBX1BIWSlcdCs9IGNpY2FkYS5vXG4gb2JqLSQoQ09ORklHX0NPUlRJTkFfUEhZKVx0Kz0gY29ydGluYS5vXG4gb2JqLSQoQ09ORklHX0RBVklDT01fUEhZKVx0Kz0gZGF2aWNvbS5vXG4rb2JqLSQoQ09ORklHX0RBUDgyMTFSX1BIWSlcdCs9IGRhcDgyMTFyLm9cbiBvYmotJChDT05GSUdfRFA4MzY0MF9QSFkpXHQrPSBkcDgzNjQwLm9cbiBvYmotJChDT05GSUdfRFA4MzgyMl9QSFkpXHQrPSBkcDgzODIyLm9cbiBvYmotJChDT05GSUdfRFA4Mzg0OF9QSFkpXHQrPSBkcDgzODQ4Lm9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYyBiL2RyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmU2MzgxZmQ4Yzk4YzIwXG4tLS0gL2Rldi9udWxsXG4rKysgYi9kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuY1xuQEAgLTAsMCArMSwxOTEgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMXG4rLypcbisgKiBEcml2ZXIgZm9yIHRoZSBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFkuXG4rICpcbisgKiBTcGVjaWZpY2F0aW9uczpcbisgKiAgIC0gSUVFRSA4MDIuMyAxMEJBU0UtVGUsIDEwMEJBU0UtVFgsIDEwMDBCQVNFLVRcbisgKiAgIC0gSUVFRSA4MDIuM2F6LTIwMTAgRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldFxuKyAqICAgLSBJRUVFIDE1ODggU3luY0Ugc3VwcG9ydFxuKyAqICAgLSBSR01JSVxuKyAqXG4rICogQXV0aG9yOiBBcnRlbSBTaGlta28gXHUwMDNjYS5zaGlta28uZGV2QGdtYWlsLmNvbVx1MDAzZVxuKyAqL1xuK1xuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2JpdGZpZWxkLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9lcnJuby5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvZXRodG9vbC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9pb3BvbGwuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L21paS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9uZXRkZXZpY2UuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L29mLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9waHkuaFx1MDAzZVxuK1xuKyNkZWZpbmUgREFQODIxMVJfUEhZX0lEXHRcdFx0MHgwMDA4MDExQlxuKyNkZWZpbmUgREFQODIxMVJfUEhZX0lEX01BU0tcdFx0MHhGRkZGRkZGRlxuK1xuKyNkZWZpbmUgREFQODIxMVJfRVhUX0FERFx0XHQweDFFXG4rI2RlZmluZSBEQVA4MjExUl9FWFRfREFUQVx0XHQweDFGXG4rXG4rI2RlZmluZSBEQVA4MjExUl9QSFlfQ09OXHRcdDB4QTAwMVxuKyNkZWZpbmUgREFQODIxMVJfUEhZX1NXX1JTVFx0XHRCSVQoMTUpXG4rXG4rI2RlZmluZSBEQVA4MjExUl9SR01JSV9DT05cdFx0MHhBMDAzXG4rLyogRGVmYXVsdCBpbml0aWFsIFRYIGRlbGF5IHZhbHVlIGJ5IGRhdGFzaGVldC4gKi9cbisjZGVmaW5lIERBUDgyMTFSX0lOSVRfVFhfREVMX1ZBTFx0MVxuKyNkZWZpbmUgREFQODIxMVJfUkdNSUlfVFhfREVMX01BU0tcdEdFTk1BU0soMywgMClcbisjZGVmaW5lIERBUDgyMTFSX1JHTUlJX1JYX0RFTF9NQVNLXHRHRU5NQVNLKDEzLCAxMClcbisjZGVmaW5lIERBUDgyMTFSX1JHTUlJX0NMS19JTlZFUlRcdEJJVCgxNClcbitcbisjZGVmaW5lIERBUDgyMTFSX1JHTUlJX0NPTkZJR19NQVNLXHQoREFQODIxMVJfUkdNSUlfQ0xLX0lOVkVSVCB8IFxcXG4rXHRcdFx0XHRcdERBUDgyMTFSX1JHTUlJX1JYX0RFTF9NQVNLIHwgXFxcbitcdFx0XHRcdFx0REFQODIxMVJfUkdNSUlfVFhfREVMX01BU0spXG4rXG4rLyogRGVmYXVsdCBSR01JSSBkZWxheTogMTMgKiAxNTAgPT0gMS45NW5zICovXG4rI2RlZmluZSBEQVA4MjExUl9ERUZBVUxUX0RFTF9TRUxcdDB4RFxuK1xuK3N0YXRpYyBjb25zdCBpbnQgZGFwODIxMXJfaW50ZXJuYWxfZGVsYXlbXSA9IHswLCAxNTAsIDMwMCwgNDUwLCA2MDAsIDc1MCwgOTAwLFxuK1x0XHRcdFx0XHQgICAgICAxMDUwLCAxMjAwLCAxMzUwLCAxNTAwLCAxNjUwLCAxODAwLFxuK1x0XHRcdFx0XHQgICAgICAxOTUwLCAyMTAwLCAyMjUwfTtcbitcbisjZGVmaW5lIERBUDgyMTFSX0RFTEFZX1NJWkVcdEFSUkFZX1NJWkUoZGFwODIxMXJfaW50ZXJuYWxfZGVsYXkpXG4rXG4rLyoqXG4rICogZGFwODIxMXJfcmVhZF9leHQoKSAtIFJlYWQgZXh0ZW5kZWQgcmVnaXN0ZXJcbisgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHN0cnVjdHVyZVxuKyAqIEByZWc6IEV4dGVuZGVkIHJlZ2lzdGVyIGFkZHJlc3NcbisgKlxuKyAqIFJlYWRzIGEgUEhZIGV4dGVuZGVkIHJlZ2lzdGVyIHVzaW5nIHRoZSBpbmRpcmVjdCBhY2Nlc3MgbWV0aG9kLlxuKyAqIFRoZSBjYWxsZXIgbXVzdCBob2xkIHRoZSBNRElPIGJ1cyBsb2NrLlxuKyAqXG4rICogUmV0dXJuOiBSZWdpc3RlciB2YWx1ZSBvbiBzdWNjZXNzLCBvciBuZWdhdGl2ZSBlcnJvciBjb2RlXG4rICovXG4rc3RhdGljIGludCBkYXA4MjExcl9yZWFkX2V4dChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnKVxuK3tcbitcdGludCByZXQ7XG4rXG4rXHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuK1x0cmV0ID0gX19waHlfd3JpdGUocGh5ZGV2LCBEQVA4MjExUl9FWFRfQURELCByZWcpO1xuK1x0aWYgKHJldCBcdTAwM2MgMClcbitcdFx0Z290byBvdXQ7XG4rXG4rXHRyZXQgPSBfX3BoeV9yZWFkKHBoeWRldiwgREFQODIxMVJfRVhUX0RBVEEpO1xuK291dDpcbitcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcbitcdHJldHVybiByZXQ7XG4rfVxuK1xuKy8qKlxuKyAqIGRhcDgyMTFyX21vZGlmeV9leHQoKSAtIE1vZGlmeSBleHRlbmRlZCByZWdpc3RlciBiaXRzXG4rICogQHBoeWRldjogUEhZIGRldmljZSBzdHJ1Y3R1cmVcbisgKiBAcmVnOiBFeHRlbmRlZCByZWdpc3RlciBhZGRyZXNzXG4rICogQG1hc2s6IEJpdCBtYXNrIG9mIGJpdHMgdG8gY2xlYXJcbisgKiBAc2V0OiBCaXQgbWFzayBvZiBiaXRzIHRvIHNldFxuKyAqXG4rICogTW9kaWZpZXMgYSBQSFkgZXh0ZW5kZWQgcmVnaXN0ZXIgdXNpbmcgdGhlIGluZGlyZWN0IGFjY2VzcyBtZXRob2QuXG4rICogTmV3IHZhbHVlID0gKG9sZCB2YWx1ZSBcdTAwMjYgfm1hc2spIHwgc2V0LlxuKyAqIFRoZSBjYWxsZXIgbXVzdCBob2xkIHRoZSBNRElPIGJ1cyBsb2NrLlxuKyAqXG4rICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG9yIG5lZ2F0aXZlIGVycm9yIGNvZGVcbisgKi9cbitzdGF0aWMgaW50IGRhcDgyMTFyX21vZGlmeV9leHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZywgdTE2IG1hc2ssIHUxNiBzZXQpXG4re1xuK1x0aW50IHJldDtcbitcbitcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XG4rXHRyZXQgPSBfX3BoeV93cml0ZShwaHlkZXYsIERBUDgyMTFSX0VYVF9BREQsIHJlZyk7XG4rXHRpZiAocmV0IFx1MDAzYyAwKVxuK1x0XHRnb3RvIG91dDtcbitcbitcdHJldCA9IF9fcGh5X21vZGlmeShwaHlkZXYsIERBUDgyMTFSX0VYVF9EQVRBLCBtYXNrLCBzZXQpO1xuK291dDpcbitcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcbitcdHJldHVybiByZXQ7XG4rfVxuK1xuKy8qKlxuKyAqIGRhcDgyMTFyX2NvbmZpZ19pbml0KCkgLSBJbml0aWFsaXplIFBIWVxuKyAqIEBwaHlkZXY6IFBIWSBkZXZpY2Ugc3RydWN0dXJlXG4rICpcbisgKiBDb25maWd1cmVzIHRoZSBQSFkgZHVyaW5nIGluaXRpYWxpemF0aW9uOlxuKyAqIC0gVFggY2xvY2sgaW52ZXJ0aW9uXG4rICogLSBSR01JSSBkZWxheXMgYmFzZWQgb24gaW50ZXJmYWNlIG1vZGVcbisgKiAtIFNvZnR3YXJlIHJlc2V0IHRvIGFwcGx5IHNldHRpbmdzIChsb3cgYWN0aXZlLCBzZWxmIGNsZWFyKVxuKyAqXG4rICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG9yIG5lZ2F0aXZlIGVycm9yIGNvZGVcbisgKi9cbitzdGF0aWMgaW50IGRhcDgyMTFyX2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4re1xuK1x0c3RydWN0IGRldmljZV9ub2RlICpwaHlkZXZfbm9kZSA9IHBoeWRldi1cdTAwM2VtZGlvLmRldi5vZl9ub2RlO1xuK1x0dTE2IHNldCA9IDAsIHZhbCA9IDA7XG4rXHRpbnQgcmV0O1xuK1x0czMyIGludGVybmFsX2RlbGF5O1xuK1xuK1x0aWYgKG9mX3Byb3BlcnR5X3JlYWRfYm9vbChwaHlkZXZfbm9kZSwgXCJkYXB1LHR4LWludmVydGVkLWNsa1wiKSlcbitcdFx0c2V0IHw9IERBUDgyMTFSX1JHTUlJX0NMS19JTlZFUlQ7XG4rXG4rXHRpbnRlcm5hbF9kZWxheSA9IHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkocGh5ZGV2LCBkYXA4MjExcl9pbnRlcm5hbF9kZWxheSxcbitcdFx0XHRcdFx0XHREQVA4MjExUl9ERUxBWV9TSVpFLCB0cnVlKTtcbitcdGlmIChpbnRlcm5hbF9kZWxheSBcdTAwM2MgMCkge1xuK1x0XHRpZiAocGh5ZGV2LVx1MDAzZWludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUkpXG4rXHRcdFx0aW50ZXJuYWxfZGVsYXkgPSAwO1xuK1x0XHRlbHNlXG4rXHRcdFx0aW50ZXJuYWxfZGVsYXkgPSBEQVA4MjExUl9ERUZBVUxUX0RFTF9TRUw7XG4rXHR9XG4rXG4rXHRzZXQgfD0gRklFTERfUFJFUChEQVA4MjExUl9SR01JSV9SWF9ERUxfTUFTSywgaW50ZXJuYWxfZGVsYXkpO1xuK1xuK1x0aW50ZXJuYWxfZGVsYXkgPSBwaHlfZ2V0X2ludGVybmFsX2RlbGF5KHBoeWRldiwgZGFwODIxMXJfaW50ZXJuYWxfZGVsYXksXG4rXHRcdFx0XHRcdFx0REFQODIxMVJfREVMQVlfU0laRSwgZmFsc2UpO1xuK1x0aWYgKGludGVybmFsX2RlbGF5IFx1MDAzYyAwKSB7XG4rXHRcdGlmIChwaHlkZXYtXHUwMDNlaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSSlcbitcdFx0XHRpbnRlcm5hbF9kZWxheSA9IERBUDgyMTFSX0lOSVRfVFhfREVMX1ZBTDtcbitcdFx0ZWxzZVxuK1x0XHRcdGludGVybmFsX2RlbGF5ID0gREFQODIxMVJfREVGQVVMVF9ERUxfU0VMO1xuK1x0fVxuK1xuK1x0c2V0IHw9IEZJRUxEX1BSRVAoREFQODIxMVJfUkdNSUlfVFhfREVMX01BU0ssIGludGVybmFsX2RlbGF5KTtcbitcbitcdHJldCA9IGRhcDgyMTFyX21vZGlmeV9leHQocGh5ZGV2LCBEQVA4MjExUl9QSFlfQ09OLCBEQVA4MjExUl9QSFlfU1dfUlNULCAwKTtcbitcdGlmIChyZXQpXG4rXHRcdHJldHVybiByZXQ7XG4rXG4rXHQvKiBXYWl0IGZvciByZXNldCBzZWxmLWNsZWFyIChtYXggMjAwIHVzKSAqL1xuK1x0cmV0ID0gcmVhZF9wb2xsX3RpbWVvdXQoZGFwODIxMXJfcmVhZF9leHQsIHZhbCxcbitcdFx0XHRcdCh2YWwgXHUwMDI2IERBUDgyMTFSX1BIWV9TV19SU1QpLFxuK1x0XHRcdFx0MjAsIDIwMCwgZmFsc2UsIHBoeWRldiwgREFQODIxMVJfUEhZX0NPTik7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuK1x0cmV0ID0gZGFwODIxMXJfbW9kaWZ5X2V4dChwaHlkZXYsIERBUDgyMTFSX1JHTUlJX0NPTiwgREFQODIxMVJfUkdNSUlfQ09ORklHX01BU0ssIHNldCk7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3N0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkYXA4MjExcl9kcml2ZXJbXSA9IHtcbitcdHtcbitcdFx0UEhZX0lEX01BVENIX0VYQUNUKERBUDgyMTFSX1BIWV9JRCksXG4rXHRcdC5uYW1lXHRcdD0gXCJEQVA4MjExUiBHaWdhYml0IEV0aGVybmV0XCIsXG4rXHRcdC5jb25maWdfaW5pdFx0PSBkYXA4MjExcl9jb25maWdfaW5pdCxcbitcdFx0LnJlYWRfc3RhdHVzXHQ9IGdlbnBoeV9yZWFkX3N0YXR1cyxcbitcdFx0LnNldF9sb29wYmFja1x0PSBnZW5waHlfbG9vcGJhY2ssXG4rXHRcdC5jb25maWdfYW5lZ1x0PSBnZW5waHlfY29uZmlnX2FuZWcsXG4rXHRcdC5zdXNwZW5kXHQ9IGdlbnBoeV9zdXNwZW5kLFxuK1x0XHQucmVzdW1lXHRcdD0gZ2VucGh5X3Jlc3VtZSxcbitcdH0sXG4rfTtcbittb2R1bGVfcGh5X2RyaXZlcihkYXA4MjExcl9kcml2ZXIpO1xuK1xuK01PRFVMRV9ERVNDUklQVElPTihcIkRBUDgyMTFSIEdpZ2FiaXQgRXRoZXJuZXQgUEhZIGRyaXZlclwiKTtcbitNT0RVTEVfQVVUSE9SKFwiQXJ0ZW0gU2hpbWtvIFx1MDAzY2Euc2hpbWtvLmRldkBnbWFpbC5jb21cdTAwM2VcIik7XG4rTU9EVUxFX0xJQ0VOU0UoXCJHUExcIik7XG4rXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBkYXA4MjExcl90YltdID0ge1xuK1x0eyBEQVA4MjExUl9QSFlfSUQsIERBUDgyMTFSX1BIWV9JRF9NQVNLIH0sXG4rXHR7IC8qIHNlbnRpbmVsICovIH1cbit9O1xuK01PRFVMRV9ERVZJQ0VfVEFCTEUobWRpbywgZGFwODIxMXJfdGIpO1xuK1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMjM6MDI6MzMuNDQ3NTI1NDU4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQ0MTQ5NjI4NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEQVA4MjExUiBHaWdhYml0IEV0aGVybmV0IFBIWSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB3ZSBoYXZlIGEgbmV3IFBIWSBkcml2ZXIgaGVyZSBmb3IgdGhlIERBUFUgVGVsZWNvbSBEQVA4MjExUihJKS4gTG9va3MgbGlrZSBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgYWRkaXRpb246IG5ldyBiaW5kaW5ncywgS2NvbmZpZywgTWFrZWZpbGUgZW50cnksIGFuZCB0aGUgZHJpdmVyIGl0c2VsZi4gTXkgaW5pdGlhbCB0aG91Z2h0cyBhcmUgYXJvdW5kIGhvdyB3ZSBjYW4gYWN0dWFsbHkgdGVzdCB0aGlzIHRoaW5nIGVmZmVjdGl2ZWx5LlxuXG5GaXJzdCwgSSBuZWVkIHRvIGtub3cgaWYgaXQncyBldmVuICpyZWFjaGFibGUqIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VLiBQSFkgZHJpdmVycyBhcmUgdHlwaWNhbGx5IGFjY2Vzc2VkIHRocm91Z2ggdGhlIE1ESU8gYnVzLiBFbmFibGluZyBgQ09ORklHX0RBUDgyMTFSX1BIWWAgd2lsbCByZWdpc3RlciB0aGUgZHJpdmVyLCB3aGljaCBpcyBzdGVwIG9uZS4gQnV0IHdpbGwgaXQgZ2V0ICpwcm9iZWQqPyBDYW4gd2UgZnV6eiBpdD9cblxuVHJhZGl0aW9uYWxseSwgeW91J2QgbmVlZCBhIHZpcnR1YWwgTURJTyBidXMgc2V0IHVwLCBtYXliZSB0aHJvdWdoIHNvbWV0aGluZyBsaWtlIGBtYWNiYCBvciBhIGR1bW15IE1ESU8gYnVzLCBvciBhbiBlbXVsYXRlZCBOSUMuIE5vdywgU3l6a2FsbGVyICp1c3VhbGx5KiBkb2Vzbid0IGhhdmUgYSBnZW5lcmljIHdheSB0byBqdXN0IGluc3RhbnRpYXRlIGFyYml0cmFyeSBQSFlzIG91dCBvZiB0aGUgYmx1ZSwgdW5sZXNzIHdlIGNhbiBpbmplY3QgYW4gTURJTyBkZXZpY2Ugb3IgaWYgaXQncyBwYXJ0IG9mIGEgbmV0d29yayBkZXZpY2UgdGhhdCBjYW4gYmUgaW5zdGFudGlhdGVkLiBXYWl0LCBkaWRuJ3QgSSByZWFkIHNvbWV0aGluZyBhYm91dCBTeXprYWxsZXIgaGF2aW5nICpzb21lKiBzdXBwb3J0IHZpYSBuZXRsaW5rIG9yIGlvY3RsIGlmIHRoZSBQSFkgaXMgKmF0dGFjaGVkKj8gQnV0IHRvIGF0dGFjaCBhIHNwZWNpZmljIFBIWSwgeW91IGVpdGhlciBuZWVkIGEgRFQgb3ZlcmxheSBvciBhIGRyaXZlciB0aGF0ICpwcm9iZXMqIGl0IGluIHRoZSBmaXJzdCBwbGFjZSwgb3IuLi4gY291bGQgU3l6a2FsbGVyIGNyZWF0ZSBpdHMgb3duIHZpcnR1YWwgTURJTyBidXM/IEhtbSwgbm8sIGJ1dCB0aGVyZSBpcyB0aGUgYG1kaW9gIGJ1cyBhbmQgdGhlIGBwaHlgIHN1YnN5c3RlbS5cblxuTGV0J3Mgc2VlIGlmIHRoZXJlJ3MgYSBzcGVjaWZpYyBwYXRoIHRvIHRyaWdnZXIgdGhpcyBkcml2ZXIuIFRoZSBkcml2ZXIgcmVnaXN0ZXJzIGl0c2VsZiB1c2luZyBgbW9kdWxlX3BoeV9kcml2ZXIoZGFwODIxMXJfZHJpdmVyKWAuIFRoZSBwcm9iaW5nIGhhcHBlbnMgYmFzZWQgb24gUEhZIElEcyBvbiB0aGUgTURJTyBidXMuIFNvLCB0aGUgcXVlc3Rpb24gaXM6IGNhbiB3ZSB0cmlnZ2VyIGBkYXA4MjExcl9jb25maWdfaW5pdGA/XG5cbklmIHdlIGNhbiBjcmVhdGUgYSBkdW1teSBNRElPIGRldmljZSB3aXRoIHRoZSByaWdodCBQSFkgSUQg4oCTIGAweDAwMDgwMTFCYCDigJMgdGhlIFBIWSBtYWNoaW5lcnkgc2hvdWxkIHByb2JlIGl0IGFuZCBjYWxsIGBjb25maWdfaW5pdGAuIEl0IGxvb2tzIGxpa2UgaXQgY291bGQgYmUgd29ydGggdHJ5aW5nIHRvIGZ1enosIGV2ZW4gdGhvdWdoIGl0J3MgYSBzaW1wbGUgUEhZIGRyaXZlci4gTGV0J3MgZGlnIGludG8gYGRhcDgyMTFyX2NvbmZpZ19pbml0YCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBhdHRhY2sgc3VyZmFjZS5cblxuYGBgY1xuc3RhdGljIGludCBkYXA4MjExcl9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxue1xuXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKnBoeWRldl9ub2RlID0gcGh5ZGV2LVx1MDAzZW1kaW8uZGV2Lm9mX25vZGU7XG4uLi5cblx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfYm9vbChwaHlkZXZfbm9kZSwgXCJkYXB1LHR4LWludmVydGVkLWNsa1wiKSlcbi4uLlxuXHRpbnRlcm5hbF9kZWxheSA9IHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkocGh5ZGV2LCBkYXA4MjExcl9pbnRlcm5hbF9kZWxheSxcblx0XHRcdFx0XHRcdERBUDgyMTFSX0RFTEFZX1NJWkUsIHRydWUpO1xuLi4uXG5cdHJldCA9IGRhcDgyMTFyX21vZGlmeV9leHQocGh5ZGV2LCBEQVA4MjExUl9QSFlfQ09OLCBEQVA4MjExUl9QSFlfU1dfUlNULCAwKTtcbi4uLlxuXHRyZXQgPSByZWFkX3BvbGxfdGltZW91dChkYXA4MjExcl9yZWFkX2V4dCwgdmFsLFxuXHRcdFx0XHQodmFsIFx1MDAyNiBEQVA4MjExUl9QSFlfU1dfUlNUKSxcblx0XHRcdFx0MjAsIDIwMCwgZmFsc2UsIHBoeWRldiwgREFQODIxMVJfUEhZX0NPTik7XG4uLi5cblx0cmV0ID0gZGFwODIxMXJfbW9kaWZ5X2V4dChwaHlkZXYsIERBUDgyMTFSX1JHTUlJX0NPTiwgREFQODIxMVJfUkdNSUlfQ09ORklHX01BU0ssIHNldCk7XG4uLi5cbn1cbmBgYFxuXG5JdCdzIHByZXR0eSBzdGFuZGFyZCwgcmlnaHQ/IERUIHByb3BlcnRpZXMsIGEgZmV3IE1ESU8gcmVhZHMgYW5kIHdyaXRlcy4gTm90IGEgaHVnZSBhdHRhY2sgc3VyZmFjZSwgYnV0IHN0aWxsIHdvcnRoIGludmVzdGlnYXRpbmcuXG5cblNvIHRoZSByZWFsIHF1ZXN0aW9uIGlzOiBDYW4gd2UgbWFrZSB0aGlzIGRyaXZlciByZWFjaGFibGUgaW4gUUVNVT8gWWVzLCBpZiB3ZSBjYW4gaW5zdGFudGlhdGUgTURJTyBkZXZpY2VzLiBTeXprYWxsZXIgZG9lc24ndCBoYXZlIGEgKmdlbmVyaWMqIE1ESU8gZGV2aWNlIGluc3RhbnRpYXRvciwgYnV0IHRoZXJlIG1pZ2h0IGJlIG90aGVyIHdheXMuIEkgcmVtZW1iZXIgc29tZXRoaW5nIGFib3V0IGBzeXpfZ2VuZXRsaW5rYC4uLiBidXQgZm9yIFBIWXMgdGhlcmUncyBhbHNvIGBpb2N0bChTSU9DU01JSVJFRylgLiBUaGF0IGNvdWxkIGJlIGhlbHBmdWwsIGJ1dCB3ZSBzdGlsbCBuZWVkIHRoZSBNRElPIGJ1cyB3aXRoIHRoYXQgbWFnaWMgSUQ6IGAweDAwMDgwMTFCYC5cblxuSSByZWNhbGwgc29tZXRoaW5nIGFib3V0IGBkcml2ZXJzL25ldC9waHkvbWRpby1tb2NrdXAuY2AuIEkgaGF2ZSB0byBjaGVjay4gQ2FuIFN5emthbGxlciBjcmVhdGUgKnN1Y2gqIGEgZGV2aWNlPyBUaW1lIHRvIHVzZSBteSBBUEkga25vd2xlZGdlLiBJJ2xsIHVzZSBgZGVmYXVsdF9hcGk6Z3JlcHBlcmAgdG8gc2VhcmNoIGZvciBcIm1kaW9cIiBvciBcInBoeVwiIGluamVjdGlvbiBpbiBib3RoIFN5emthbGxlciBhbmQgdGhlIGtlcm5lbCBpdHNlbGYuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGFuc3dlcnMgSSBuZWVkLlxuXG4iLCJJbnB1dFRva2VucyI6NTY0MCwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMjIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMzowMjo0Ny44NjI0OTA3MTRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU0NDI0OTQxOSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpby4qbW9ja3VwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMzowMjo1MC40MDY3NTE3MDJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjAxNzkzMzM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyaXplZCB0aG91Z2h0IHByb2Nlc3MsIHByZXNlbnRlZCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6XG5cbioqTURJTyBEcml2ZXIgSW52ZXN0aWdhdGlvbioqXG5cbkFscmlnaHQsIGJlZm9yZSBkaXZpbmcgdG9vIGRlZXAsIEkgc2hvdWxkIHByb2JhYmx5IHRha2UgYSBxdWljayBsb29rIHRvIHNlZSBpZiBhIHZpcnR1YWwgTURJTyBkcml2ZXIgaXMgZXZlbiBwcmVzZW50LiBJdCdzIGFsd2F5cyBiZXN0IHRvIHN0YXJ0IHdpdGggdGhlIGJhc2ljcyBhbmQgcnVsZSBvdXQgdGhlIHNpbXBsZXN0IGV4cGxhbmF0aW9ucyBmaXJzdC4gSWYgb25lICppcyogYXZhaWxhYmxlLCBpdCBtaWdodCBzYXZlIG1lIGEgbG90IG9mIHRpbWUgZGlnZ2luZyBhcm91bmQgaW4gbW9yZSBjb21wbGV4IGFyZWFzLiBUaGF0J3MgdXN1YWxseSBteSBnby10byBmaXJzdCBzdGVwIGZvciBkZWJ1Z2dpbmcgdGhpcyBraW5kIG9mIHRoaW5nLCBzbyBsZXQncyBzZWUgd2hhdCB3ZSd2ZSBnb3QgaW4gdGhhdCBzcGFjZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzgyMCwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIzOjAyOjUzLjAwODU0Njg0OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjI5MzI5NjI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZpcnR1YWwuKm1kaW9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tZGlvLWdwaW8ueWFtbD0xNz1wcm9wZXJ0aWVzOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tZGlvLWdwaW8ueWFtbC0xOS0gICAgZW51bTpcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21kaW8tZ3Bpby55YW1sOjIwOiAgICAgIC0gdmlydHVhbCxtZGlvLWdwaW9cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21kaW8tZ3Bpby55YW1sLTIxLSAgICAgIC0gbWljcm9jaGlwLG1kaW8tc21pMFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tZGlvLWdwaW8ueWFtbD00MT1leGFtcGxlczpcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWRpby1ncGlvLnlhbWwtNDctICAgIG1kaW8wOiBtZGlvIHtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21kaW8tZ3Bpby55YW1sOjQ4OiAgICAgIGNvbXBhdGlibGUgPSBcXFwidmlydHVhbCxtZGlvLWdwaW9cXFwiO1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWRpby1ncGlvLnlhbWwtNDktICAgICAgI2FkZHJlc3MtY2VsbHMgPSBcXHUwMDNjMVxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLWRsaW5rLWRucy0zMTMuZHRzPTE1Mj1cXHRtZGlvMDogbWRpbyB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1kbGluay1kbnMtMzEzLmR0czoxNTM6XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJ2aXJ0dWFsLG1kaW8tZ3Bpb1xcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1kbGluay1kbnMtMzEzLmR0cy0xNTQtXFx0XFx0LyogVXNlcyBNREMgYW5kIE1ESU8gKi9cXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktbmFzNDIxMGIuZHRzPTY3PVxcdG1kaW8wOiBtZGlvIHtcXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLW5hczQyMTBiLmR0czo2ODpcXHRcXHRjb21wYXRpYmxlID0gXFxcInZpcnR1YWwsbWRpby1ncGlvXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLW5hczQyMTBiLmR0cy02OS1cXHRcXHRncGlvcyA9IFxcdTAwM2NcXHUwMDI2Z3BpbzAgMjIgR1BJT19BQ1RJVkVfSElHSFxcdTAwM2UsIC8qIE1EQyAqL1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1uYXM0MjIwYi5kdHM9NjY9XFx0bWRpbzA6IG1kaW8ge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktbmFzNDIyMGIuZHRzOjY3OlxcdFxcdGNvbXBhdGlibGUgPSBcXFwidmlydHVhbCxtZGlvLWdwaW9cXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktbmFzNDIyMGIuZHRzLTY4LVxcdFxcdGdwaW9zID0gXFx1MDAzY1xcdTAwMjZncGlvMCAyMiBHUElPX0FDVElWRV9ISUdIXFx1MDAzZSwgLyogTURDICovXFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLW5zMjUwMi5kdHM9MzI9XFx0bWRpbzA6IG1kaW8ge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktbnMyNTAyLmR0czozMzpcXHRcXHRjb21wYXRpYmxlID0gXFxcInZpcnR1YWwsbWRpby1ncGlvXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLW5zMjUwMi5kdHMtMzQtXFx0XFx0Z3Bpb3MgPSBcXHUwMDNjXFx1MDAyNmdwaW8wIDIyIEdQSU9fQUNUSVZFX0hJR0hcXHUwMDNlLCAvKiBNREMgKi9cXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktcnV0MXh4LmR0cz01OT1cXHRtZGlvMDogbWRpbyB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1ydXQxeHguZHRzOjYwOlxcdFxcdGNvbXBhdGlibGUgPSBcXFwidmlydHVhbCxtZGlvLWdwaW9cXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktcnV0MXh4LmR0cy02MS1cXHRcXHRncGlvcyA9IFxcdTAwM2NcXHUwMDI2Z3BpbzAgMjIgR1BJT19BQ1RJVkVfSElHSFxcdTAwM2UsIC8qIE1EQyAqL1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1zbDkzNTEyci5kdHM9NzE9XFx0bWRpbzA6IG1kaW8ge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktc2w5MzUxMnIuZHRzOjcyOlxcdFxcdGNvbXBhdGlibGUgPSBcXFwidmlydHVhbCxtZGlvLWdwaW9cXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktc2w5MzUxMnIuZHRzLTczLVxcdFxcdC8qIFVzZXMgTURDIGFuZCBNRElPICovXFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXNxMjAxLmR0cz01Nj1cXHRtZGlvMDogbWRpbyB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1zcTIwMS5kdHM6NTc6XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJ2aXJ0dWFsLG1kaW8tZ3Bpb1xcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1zcTIwMS5kdHMtNTgtXFx0XFx0LyogVXNlcyBNREMgYW5kIE1ESU8gKi9cXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktc3NpMTMyOC5kdHM9MzI9XFx0bWRpbzA6IG1kaW8ge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktc3NpMTMyOC5kdHM6MzM6XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJ2aXJ0dWFsLG1kaW8tZ3Bpb1xcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS1zc2kxMzI4LmR0cy0zNC1cXHRcXHRncGlvcyA9IFxcdTAwM2NcXHUwMDI2Z3BpbzAgMjIgR1BJT19BQ1RJVkVfSElHSFxcdTAwM2UsIC8qIE1EQyAqL1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS12ZXJiYXRpbS1zMDh2MTkwMS1kMS5kdHM9NTc9XFx0bWRpbzA6IG1kaW8ge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktdmVyYmF0aW0tczA4djE5MDEtZDEuZHRzOjU4OlxcdFxcdGNvbXBhdGlibGUgPSBcXFwidmlydHVhbCxtZGlvLWdwaW9cXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktdmVyYmF0aW0tczA4djE5MDEtZDEuZHRzLTU5LVxcdFxcdC8qIFVzZXMgTURDIGFuZCBNRElPICovXFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXdiZDExMS5kdHM9NzE9XFx0bWRpbzA6IG1kaW8ge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktd2JkMTExLmR0czo3MjpcXHRcXHRjb21wYXRpYmxlID0gXFxcInZpcnR1YWwsbWRpby1ncGlvXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLXdiZDExMS5kdHMtNzMtXFx0XFx0Z3Bpb3MgPSBcXHUwMDNjXFx1MDAyNmdwaW8wIDIyIEdQSU9fQUNUSVZFX0hJR0hcXHUwMDNlLCAvKiBNREMgKi9cXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktd2JkMjIyLmR0cz03MD1cXHRtZGlvMDogbWRpbyB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS13YmQyMjIuZHRzOjcxOlxcdFxcdGNvbXBhdGlibGUgPSBcXFwidmlydHVhbCxtZGlvLWdwaW9cXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmktd2JkMjIyLmR0cy03Mi1cXHRcXHRncGlvcyA9IFxcdTAwM2NcXHUwMDI2Z3BpbzAgMjIgR1BJT19BQ1RJVkVfSElHSFxcdTAwM2UsIC8qIE1EQyAqL1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg1MS16aWktcmR1MS5kdHM9MTYzPVxcdG1kaW9fZ3BpbzogbWRpbyB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg1MS16aWktcmR1MS5kdHM6MTY0OlxcdFxcdGNvbXBhdGlibGUgPSBcXFwidmlydHVhbCxtZGlvLWdwaW9cXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NTEtemlpLXJkdTEuZHRzLTE2NS1cXHRcXHRwaW5jdHJsLW5hbWVzID0gXFxcImRlZmF1bHRcXFwiO1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg1MS16aWktc2N1Mi1tZXp6LmR0cz00MD1cXHRtZGlvX2dwaW86IG1kaW8ge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NTEtemlpLXNjdTItbWV6ei5kdHM6NDE6XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJ2aXJ0dWFsLG1kaW8tZ3Bpb1xcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg1MS16aWktc2N1Mi1tZXp6LmR0cy00Mi1cXHRcXHRwaW5jdHJsLW5hbWVzID0gXFxcImRlZmF1bHRcXFwiO1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg2cS1ieDUwdjMuZHRzaT05Nz1cXHRtZGlvMDogbWRpbyB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg2cS1ieDUwdjMuZHRzaTo5ODpcXHRcXHRjb21wYXRpYmxlID0gXFxcInZpcnR1YWwsbWRpby1ncGlvXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZxLWJ4NTB2My5kdHNpLTk5LVxcdFxcdGdwaW9zID0gXFx1MDAzY1xcdTAwMjZncGlvMiA1IEdQSU9fQUNUSVZFX0hJR0hcXHUwMDNlLCAvKiBtZGMgKi9cXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NnFkbC16aWktcmR1Mi5kdHNpPTE5PVxcdG1kaW8xOiBtZGlvIHtcXG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZxZGwtemlpLXJkdTIuZHRzaToyMDpcXHRcXHRjb21wYXRpYmxlID0gXFxcInZpcnR1YWwsbWRpby1ncGlvXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZxZGwtemlpLXJkdTIuZHRzaS0yMS1cXHRcXHQjYWRkcmVzcy1jZWxscyA9IFxcdTAwM2MxXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NnFwLXBydHdkMy5kdHM9NTM9XFx0bWRpbyB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg2cXAtcHJ0d2QzLmR0czo1NDpcXHRcXHRjb21wYXRpYmxlID0gXFxcInZpcnR1YWwsbWRpby1ncGlvXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZxcC1wcnR3ZDMuZHRzLTU1LVxcdFxcdHBpbmN0cmwtbmFtZXMgPSBcXFwiZGVmYXVsdFxcXCI7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC1yYjMwMTEuZHRzPTU1PVxcdG1kaW8wOiBtZGlvLTAge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LXJiMzAxMS5kdHMtNTYtXFx0XFx0c3RhdHVzID0gXFxcIm9rYXlcXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LXJiMzAxMS5kdHM6NTc6XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJ2aXJ0dWFsLG1kaW8tZ3Bpb1xcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvcWNvbS9xY29tLWlwcTgwNjQtcmIzMDExLmR0cy01OC1cXHRcXHRncGlvcyA9IFxcdTAwM2NcXHUwMDI2cWNvbV9waW5tdXggMSBHUElPX0FDVElWRV9ISUdIXFx1MDAzZSxcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LXJiMzAxMS5kdHM9MTgwPVxcdG1kaW8xOiBtZGlvLTEge1xcbmFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vcWNvbS1pcHE4MDY0LXJiMzAxMS5kdHMtMTgxLVxcdFxcdHN0YXR1cyA9IFxcXCJva2F5XFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC1yYjMwMTEuZHRzOjE4MjpcXHRcXHRjb21wYXRpYmxlID0gXFxcInZpcnR1YWwsbWRpby1ncGlvXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9xY29tL3Fjb20taXBxODA2NC1yYjMwMTEuZHRzLTE4My1cXHRcXHRncGlvcyA9IFxcdTAwM2NcXHUwMDI2cWNvbV9waW5tdXggMTEgR1BJT19BQ1RJVkVfSElHSFxcdTAwM2UsXFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTMzYy1wcmlobWIuZHRzPTExOD1cXHRtZGlvMDogbWRpbyB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDEzM2MtcHJpaG1iLmR0czoxMTk6XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJ2aXJ0dWFsLG1kaW8tZ3Bpb1xcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDEzM2MtcHJpaG1iLmR0cy0xMjAtXFx0XFx0I2FkZHJlc3MtY2VsbHMgPSBcXHUwMDNjMVxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTUxYS1wcnR0MWMuZHRzPTM4PVxcdG1kaW8wOiBtZGlvIHtcXG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTUxYS1wcnR0MWMuZHRzOjM5OlxcdFxcdGNvbXBhdGlibGUgPSBcXFwidmlydHVhbCxtZGlvLWdwaW9cXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL3N0L3N0bTMybXAxNTFhLXBydHQxYy5kdHMtNDAtXFx0XFx0I2FkZHJlc3MtY2VsbHMgPSBcXHUwMDNjMVxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMm1wMTUxYS1wcnR0MWwuZHRzaT00ND1cXHRtZGlvMDogbWRpbyB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDE1MWEtcHJ0dDFsLmR0c2k6NDU6XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJ2aXJ0dWFsLG1kaW8tZ3Bpb1xcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RtMzJtcDE1MWEtcHJ0dDFsLmR0c2ktNDYtXFx0XFx0I2FkZHJlc3MtY2VsbHMgPSBcXHUwMDNjMVxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg4bXEtemlpLXVsdHJhLmR0c2k9MTg9XFx0bWRpbzA6IG1kaW8ge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDhtcS16aWktdWx0cmEuZHRzaToxOTpcXHRcXHRjb21wYXRpYmxlID0gXFxcInZpcnR1YWwsbWRpby1ncGlvXFxcIjtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg4bXEtemlpLXVsdHJhLmR0c2ktMjAtXFx0XFx0cGluY3RybC1uYW1lcyA9IFxcXCJkZWZhdWx0XFxcIjtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM9MTk3PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG1kaW9fZ3Bpb19vZl9tYXRjaFtdID0ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6MTk4OlxcdHsgLmNvbXBhdGlibGUgPSBcXFwidmlydHVhbCxtZGlvLWdwaW9cXFwiLCB9LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTk5LVxcdHsgLmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLG1kaW8tc21pMFxcXCIgfSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMjM6MDI6NTUuMjM3ODg0NjAzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMxMjY2MTYzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDdXJyZW50IEFzc2Vzc21lbnQgb2YgdGhlIFBIWSBEcml2ZXIgUHJvYmUgU2l0dWF0aW9uKipcblxuT2theSwgc28gdGhlIGB2aXJ0dWFsLG1kaW8tZ3Bpb2AgZHJpdmVyIGlzbid0IGEgKnJlYWwqIHZpcnR1YWwgYnVzOyBpdCBqdXN0IGJpdC1iYW5ncyBNRElPIG92ZXIgR1BJT3MuIFRoYXQncyBub3QgaGVscGZ1bCBpbiB0aGlzIHNjZW5hcmlvLiBNeSBwcmltYXJ5IGNvbmNlcm4gcmlnaHQgbm93IGlzIGZpZ3VyaW5nIG91dCBob3cgdG8gcHJvYmUgdGhpcyBQSFkgZHJpdmVyIChgZGFwODIxMXJfY29uZmlnX2luaXRgIHRvIGJlIHByZWNpc2UpICp3aXRob3V0KiBhbiBhY3R1YWwgaGFyZHdhcmUgUEhZLiBJIG5lZWQgYSB3YXkgdG8gZ2V0IHRoZSBkcml2ZXIncyBjb2RlIGV4ZWN1dGVkLlxuXG5JIGNvbnNpZGVyZWQgYGRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuY2AsIGJ1dCBpdCBqdXN0IGRlZmluZXMgYSAqZml4ZWQqIFBIWSwgcmVnaXN0ZXJzIGl0IHdpdGggaXRzICpvd24qIFBIWSBJRCwgYW5kIGRvZXNuJ3Qgb2ZmZXIgYSBtZWNoYW5pc20gdG8gcHJvYmUgYW4gYXJiaXRyYXJ5IGRyaXZlci4gVGhhdCB3b24ndCBkbyBpdC4gSSdtIHN0dWNrLCBJIG5lZWQgdG8gZmluZCBhIHdheSB0byByZWFjaCB0aGUgYGRhcDgyMTFyX2NvbmZpZ19pbml0YCBmdW5jdGlvbiB3aXRob3V0IGFuIGluc3RhbnRpYXRlZCBQSFkuXG5cblRoZW4gSSBoYWQgYSBzcGFyay4uLnN5emthbGxlciBoYXMgYHN5el91c2JfY29ubmVjdGAuIENvdWxkIGEgVVNCLXRvLU1ESU8gYnJpZGdlIGJlIHRoZSBrZXk/IFRoYXQgbWlnaHQgd29yayBpZiBJIGtuZXcgdGhlIFBIWSBJRCwgYnV0IHRoYXQncyBzdGlsbCBhbiBhc3N1bXB0aW9uLlxuXG5TbywgYXJlIHRoZXJlIGFueSBnZW5lcmljIE1ESU8gYnVzIGVtdWxhdGlvbnMgb3IgZHVtbXkgZHJpdmVycyBpbiB0aGUga2VybmVsIGFueXdoZXJlPyBJIG5lZWQgdG8gY2hlY2sgdGhlIGBkcml2ZXJzL25ldC9waHkvYCBkaXJlY3RvcnkgZm9yIGFueSBzb3J0IG9mIG1vY2t1cCB0aGF0IEkgY291bGQgdXNlLiBUaGF0J3MgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTI2NiwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMzowMzowMC41NTA1NDgwNjVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NjQyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L3BoeVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJhZGluLmNcIixcbiAgICBcImFkaW4xMTAwLmNcIixcbiAgICBcImFpcl9hbjg4MDEuY1wiLFxuICAgIFwiYWlyX2VuODgxMWguY1wiLFxuICAgIFwiYWlyX3BoeV9saWIuY1wiLFxuICAgIFwiYWlyX3BoeV9saWIuaFwiLFxuICAgIFwiYW1kLmNcIixcbiAgICBcImFzMjF4eHguY1wiLFxuICAgIFwiYXg4ODc5NmIuY1wiLFxuICAgIFwiYXg4ODc5NmJfcnVzdC5yc1wiLFxuICAgIFwiYmNtLWN5Z251cy5jXCIsXG4gICAgXCJiY20tcGh5LWxpYi5jXCIsXG4gICAgXCJiY20tcGh5LWxpYi5oXCIsXG4gICAgXCJiY20tcGh5LXB0cC5jXCIsXG4gICAgXCJiY201NDE0MC5jXCIsXG4gICAgXCJiY202M3h4LmNcIixcbiAgICBcImJjbTd4eHguY1wiLFxuICAgIFwiYmNtODQ4ODEuY1wiLFxuICAgIFwiYmNtODd4eC5jXCIsXG4gICAgXCJicm9hZGNvbS5jXCIsXG4gICAgXCJjaWNhZGEuY1wiLFxuICAgIFwiY29ydGluYS5jXCIsXG4gICAgXCJkYXA4MjExci5jXCIsXG4gICAgXCJkYXZpY29tLmNcIixcbiAgICBcImRwODM2NDAuY1wiLFxuICAgIFwiZHA4MzY0MF9yZWcuaFwiLFxuICAgIFwiZHA4MzgyMi5jXCIsXG4gICAgXCJkcDgzODQ4LmNcIixcbiAgICBcImRwODM4NjcuY1wiLFxuICAgIFwiZHA4Mzg2OS5jXCIsXG4gICAgXCJkcDgzdGM4MTEuY1wiLFxuICAgIFwiZHA4M3RkNTEwLmNcIixcbiAgICBcImRwODN0ZzcyMC5jXCIsXG4gICAgXCJldDEwMTFjLmNcIixcbiAgICBcImZpeGVkX3BoeS5jXCIsXG4gICAgXCJpY3BsdXMuY1wiLFxuICAgIFwiaW50ZWwteHdheS5jXCIsXG4gICAgXCJsaW5rbW9kZS5jXCIsXG4gICAgXCJseHQuY1wiLFxuICAgIFwibWFydmVsbC04OHEyeHh4LmNcIixcbiAgICBcIm1hcnZlbGwtODh4MjIyMi5jXCIsXG4gICAgXCJtYXJ2ZWxsLmNcIixcbiAgICBcIm1hcnZlbGwxMGcuY1wiLFxuICAgIFwibWRpby1vcGVuLWFsbGlhbmNlLmhcIixcbiAgICBcIm1kaW9fYnVzLmNcIixcbiAgICBcIm1kaW9fYnVzX3Byb3ZpZGVyLmNcIixcbiAgICBcIm1kaW9fZGV2aWNlLmNcIixcbiAgICBcIm1kaW9fZGV2cmVzLmNcIixcbiAgICBcIm1lc29uLWd4bC5jXCIsXG4gICAgXCJtaWNyZWwuY1wiLFxuICAgIFwibWljcm9jaGlwLmNcIixcbiAgICBcIm1pY3JvY2hpcF9yZHNfcHRwLmNcIixcbiAgICBcIm1pY3JvY2hpcF9yZHNfcHRwLmhcIixcbiAgICBcIm1pY3JvY2hpcF90MS5jXCIsXG4gICAgXCJtaWNyb2NoaXBfdDFzLmNcIixcbiAgICBcIm1paV90aW1lc3RhbXBlci5jXCIsXG4gICAgXCJtb3RvcmNvbW0uY1wiLFxuICAgIFwibXhsLTg2MTEwLmNcIixcbiAgICBcIm14bC1ncHkuY1wiLFxuICAgIFwibmF0aW9uYWwuY1wiLFxuICAgIFwibmNuMjYwMDAuY1wiLFxuICAgIFwibnhwLWM0NS10amExMXh4LW1hY3NlYy5jXCIsXG4gICAgXCJueHAtYzQ1LXRqYTExeHguY1wiLFxuICAgIFwibnhwLWM0NS10amExMXh4LmhcIixcbiAgICBcIm54cC1jYnR4LmNcIixcbiAgICBcIm54cC10amExMXh4LmNcIixcbiAgICBcIm9wZW5fYWxsaWFuY2VfaGVscGVycy5jXCIsXG4gICAgXCJvcGVuX2FsbGlhbmNlX2hlbHBlcnMuaFwiLFxuICAgIFwicGh5LWM0NS5jXCIsXG4gICAgXCJwaHktY2Fwcy5oXCIsXG4gICAgXCJwaHktY29yZS5jXCIsXG4gICAgXCJwaHkuY1wiLFxuICAgIFwicGh5X2NhcHMuY1wiLFxuICAgIFwicGh5X2RldmljZS5jXCIsXG4gICAgXCJwaHlfbGVkX3RyaWdnZXJzLmNcIixcbiAgICBcInBoeV9saW5rX3RvcG9sb2d5LmNcIixcbiAgICBcInBoeV9wYWNrYWdlLmNcIixcbiAgICBcInBoeV9wb3J0LmNcIixcbiAgICBcInBoeWxpYi1pbnRlcm5hbC5oXCIsXG4gICAgXCJwaHlsaWIuaFwiLFxuICAgIFwicGh5bGluay5jXCIsXG4gICAgXCJxc2VtaS5jXCIsXG4gICAgXCJxdDIwMjUucnNcIixcbiAgICBcInJvY2tjaGlwLmNcIixcbiAgICBcInNmcC1idXMuY1wiLFxuICAgIFwic2ZwLmNcIixcbiAgICBcInNmcC5oXCIsXG4gICAgXCJzbXNjLmNcIixcbiAgICBcInN0ZTEwWHAuY1wiLFxuICAgIFwic3R1YnMuY1wiLFxuICAgIFwic3dwaHkuY1wiLFxuICAgIFwic3dwaHkuaFwiLFxuICAgIFwidGVyYW5ldGljcy5jXCIsXG4gICAgXCJ1UEQ2MDYyMC5jXCIsXG4gICAgXCJ2aXRlc3NlLmNcIixcbiAgICBcInhpbGlueF9nbWlpMnJnbWlpLmNcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogW1xuICAgIFwiYXF1YW50aWFcIixcbiAgICBcIm1lZGlhdGVrXCIsXG4gICAgXCJtc2NjXCIsXG4gICAgXCJxY29tXCIsXG4gICAgXCJyZWFsdGVrXCJcbiAgXVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMjM6MDM6MDAuNTUwNzA2MDg1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE2NzU4ODQ1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgY29kZTpcblxuKipBbmFseXppbmcgUG90ZW50aWFsIFBIWSBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHRoZSBtZW50aW9uIG9mIGBmaXhlZF9waHkuY2AgYW5kIGBzd3BoeS5jYCBpbW1lZGlhdGVseSBmbGFncyBteSBhdHRlbnRpb24uIEl0J3MgYSBjbGFzc2ljIHNjZW5hcmlvLCB1c3VhbGx5IGluZGljYXRpbmcgZWl0aGVyIGEgaGFyZC1jb2RlZCBwaHlzaWNhbCBsYXllciAoUEhZKSBvciBvbmUgaW1wbGVtZW50ZWQsIGF0IGxlYXN0IGluIHBhcnQsIGluIHNvZnR3YXJlLiBMZXQncyBzZWUuLi4gdGhlIG1vc3QgaW50ZXJlc3RpbmcgYW5kIGxpa2VseSBwbGFjZSB0byBzdGFydCBsb29raW5nIHRvIHVuZGVyc3RhbmQgdGhpcyBpcyB0aGUgc29mdHdhcmUgUEhZIGltcGxlbWVudGF0aW9uLiBTbywgbXkgaW5zdGluY3QgaXMgdG8gZGlnIGludG8gYHN3cGh5LmNgIGZpcnN0LiBUaGF0J3Mgd2hlcmUgdGhlIGNvcmUgbG9naWMgd2lsbCBsaWtlbHkgcmVzaWRlLCBhbmQgdW5kZXJzdGFuZGluZyAqdGhhdCogd2lsbCBwcm9iYWJseSBlbHVjaWRhdGUgdGhlIGxhcmdlciBhcmNoaXRlY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyODMyLCJPdXRwdXRUb2tlbnMiOjE2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIzOjAzOjAzLjcxODI5NjQxM1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY4ODI2MTc2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzd3BoeVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9hcnJvdyx4cnM3MDB4LnlhbWw9Mzg9ZXhhbXBsZXM6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9hcnJvdyx4cnM3MDB4LnlhbWwtNTItICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFxcXCJsYW4wXFxcIjtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9hcnJvdyx4cnM3MDB4LnlhbWw6NTM6ICAgICAgICAgICAgICAgICAgICBwaHktaGFuZGxlID0gXFx1MDAzY1xcdTAwMjZzd3BoeTBcXHUwMDNlO1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL2Fycm93LHhyczcwMHgueWFtbC01NC0gICAgICAgICAgICAgICAgICAgIHBoeS1tb2RlID0gXFxcInJnbWlpLWlkXFxcIjtcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL2Fycm93LHhyczcwMHgueWFtbC01OC0gICAgICAgICAgICAgICAgICAgIGxhYmVsID0gXFxcImxhbjFcXFwiO1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL2Fycm93LHhyczcwMHgueWFtbDo1OTogICAgICAgICAgICAgICAgICAgIHBoeS1oYW5kbGUgPSBcXHUwMDNjXFx1MDAyNnN3cGh5MVxcdTAwM2U7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvYXJyb3cseHJzNzAweC55YW1sLTYwLSAgICAgICAgICAgICAgICAgICAgcGh5LW1vZGUgPSBcXFwicmdtaWktaWRcXFwiO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS03MDQwLW1vY2hhYmluLmR0cz0zMTk9XFx0XFx0XFx0c3dwb3J0MTogZXRoZXJuZXQtcG9ydEAxIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHMtMzIxLVxcdFxcdFxcdFxcdGxhYmVsID0gXFxcImxhbjBcXFwiO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHM6MzIyOlxcdFxcdFxcdFxcdHBoeS1oYW5kbGUgPSBcXHUwMDNjXFx1MDAyNnN3cGh5MVxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS03MDQwLW1vY2hhYmluLmR0cy0zMjMtXFx0XFx0XFx0fTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHM9MzI1PVxcdFxcdFxcdHN3cG9ydDI6IGV0aGVybmV0LXBvcnRAMiB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTcwNDAtbW9jaGFiaW4uZHRzLTMyNy1cXHRcXHRcXHRcXHRsYWJlbCA9IFxcXCJsYW4xXFxcIjtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTcwNDAtbW9jaGFiaW4uZHRzOjMyODpcXHRcXHRcXHRcXHRwaHktaGFuZGxlID0gXFx1MDAzY1xcdTAwMjZzd3BoeTJcXHUwMDNlO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHMtMzI5LVxcdFxcdFxcdH07XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTcwNDAtbW9jaGFiaW4uZHRzPTMzMT1cXHRcXHRcXHRzd3BvcnQzOiBldGhlcm5ldC1wb3J0QDMge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS03MDQwLW1vY2hhYmluLmR0cy0zMzMtXFx0XFx0XFx0XFx0bGFiZWwgPSBcXFwibGFuMlxcXCI7XFxuYXJjaC9hcm02NC9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS03MDQwLW1vY2hhYmluLmR0czozMzQ6XFx0XFx0XFx0XFx0cGh5LWhhbmRsZSA9IFxcdTAwM2NcXHUwMDI2c3dwaHkzXFx1MDAzZTtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTcwNDAtbW9jaGFiaW4uZHRzLTMzNS1cXHRcXHRcXHR9O1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS03MDQwLW1vY2hhYmluLmR0cz0zMzc9XFx0XFx0XFx0c3dwb3J0NDogZXRoZXJuZXQtcG9ydEA0IHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHMtMzM5LVxcdFxcdFxcdFxcdGxhYmVsID0gXFxcImxhbjNcXFwiO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHM6MzQwOlxcdFxcdFxcdFxcdHBoeS1oYW5kbGUgPSBcXHUwMDNjXFx1MDAyNnN3cGh5NFxcdTAwM2U7XFxuYXJjaC9hcm02NC9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS03MDQwLW1vY2hhYmluLmR0cy0zNDEtXFx0XFx0XFx0fTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHM9MzUyPVxcdFxcdG1kaW8ge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS03MDQwLW1vY2hhYmluLmR0cy0zNTUtXFxuYXJjaC9hcm02NC9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS03MDQwLW1vY2hhYmluLmR0czozNTY6XFx0XFx0XFx0c3dwaHkxOiBldGhlcm5ldC1waHlAMTcge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHMtMzU3LVxcdFxcdFxcdFxcdHJlZyA9IFxcdTAwM2MxN1xcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTcwNDAtbW9jaGFiaW4uZHRzLTM1OS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTcwNDAtbW9jaGFiaW4uZHRzOjM2MDpcXHRcXHRcXHRzd3BoeTI6IGV0aGVybmV0LXBoeUAxOCB7XFxuYXJjaC9hcm02NC9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS03MDQwLW1vY2hhYmluLmR0cy0zNjEtXFx0XFx0XFx0XFx0cmVnID0gXFx1MDAzYzE4XFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHMtMzYzLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHM6MzY0OlxcdFxcdFxcdHN3cGh5MzogZXRoZXJuZXQtcGh5QDE5IHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTcwNDAtbW9jaGFiaW4uZHRzLTM2NS1cXHRcXHRcXHRcXHRyZWcgPSBcXHUwMDNjMTlcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS03MDQwLW1vY2hhYmluLmR0cy0zNjctXFxuYXJjaC9hcm02NC9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS03MDQwLW1vY2hhYmluLmR0czozNjg6XFx0XFx0XFx0c3dwaHk0OiBldGhlcm5ldC1waHlAMjAge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtNzA0MC1tb2NoYWJpbi5kdHMtMzY5LVxcdFxcdFxcdFxcdHJlZyA9IFxcdTAwM2MyMFxcdTAwM2U7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYz0xOTkzPXN0YXRpYyBpbmxpbmUgaW50IGJjbV9lbmV0X3BvcnRfaXNfcmdtaWkoaW50IHBvcnRpZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTIwMDAtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmM6MjAwMTpzdGF0aWMgdm9pZCBzd3BoeV9wb2xsX3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTIwMDIte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jOjIwMDM6XFx0c3RydWN0IGJjbV9lbmV0X3ByaXYgKnByaXYgPSB0aW1lcl9jb250YWluZXJfb2YocHJpdiwgdCwgc3dwaHlfcG9sbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmMtMjAwNC1cXHR1bnNpZ25lZCBpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTIwOTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmM6MjA5MjpcXHRwcml2LVxcdTAwM2Vzd3BoeV9wb2xsLmV4cGlyZXMgPSBqaWZmaWVzICsgSFo7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmM6MjA5MzpcXHRhZGRfdGltZXIoXFx1MDAyNnByaXYtXFx1MDAzZXN3cGh5X3BvbGwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTIwOTQtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmM9MjA5OT1zdGF0aWMgaW50IGJjbV9lbmV0c3dfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmMtMjMwOC1cXHQvKiBzdGFydCBwaHkgcG9sbGluZyB0aW1lciAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jOjIzMDk6XFx0dGltZXJfc2V0dXAoXFx1MDAyNnByaXYtXFx1MDAzZXN3cGh5X3BvbGwsIHN3cGh5X3BvbGxfdGltZXIsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jOjIzMTA6XFx0bW9kX3RpbWVyKFxcdTAwMjZwcml2LVxcdTAwM2Vzd3BoeV9wb2xsLCBqaWZmaWVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYy0yMzExLVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmM9MjMzOT1zdGF0aWMgaW50IGJjbV9lbmV0c3dfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmMtMjM0Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYzoyMzQ3OlxcdHRpbWVyX2RlbGV0ZV9zeW5jKFxcdTAwMjZwcml2LVxcdTAwM2Vzd3BoeV9wb2xsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYy0yMzQ4LVxcdG5ldGlmX3N0b3BfcXVldWUoZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5oPTE5ND1zdHJ1Y3QgYmNtX2VuZXRfcHJpdiB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuaC0zNDEtXFx0LyogdXNlZCB0byBwb2xsIHN3aXRjaCBwb3J0IHN0YXRlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0Lmg6MzQyOlxcdHN0cnVjdCB0aW1lcl9saXN0IHN3cGh5X3BvbGw7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmgtMzQzLVxcdHNwaW5sb2NrX3QgZW5ldHN3X21kaW9fbG9jaztcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT0xMj1lbmRpZlxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS0xMy1cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MTQ6bGlicGh5LSQoQ09ORklHX1NXUEhZKVxcdFxcdCs9IHN3cGh5Lm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtMTUtbGlicGh5LSQoQ09ORklHX0xFRF9UUklHR0VSX1BIWSlcXHQrPSBwaHlfbGVkX3RyaWdnZXJzLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0yMC1cXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM6MjE6I2luY2x1ZGUgXFxcInN3cGh5LmhcXFwiXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTIyLVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jPTYxPXN0YXRpYyBpbnQgZml4ZWRfbWRpb19yZWFkKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfYWRkciwgaW50IHJlZ19udW0pXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtNzEtXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jOjcyOlxcdHJldHVybiBzd3BoeV9yZWFkX3JlZyhyZWdfbnVtLCBcXHUwMDI2ZnAtXFx1MDAzZXN0YXR1cyk7XFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTczLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYz0xMzE9c3RydWN0IHBoeV9kZXZpY2UgKmZpeGVkX3BoeV9yZWdpc3Rlcihjb25zdCBzdHJ1Y3QgZml4ZWRfcGh5X3N0YXR1cyAqc3RhdHVzLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTEzNy1cXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM6MTM4OlxcdHJldCA9IHN3cGh5X3ZhbGlkYXRlX3N0YXRlKHN0YXR1cyk7XFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTEzOS1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQtI2luY2x1ZGUgXFxcInNmcC5oXFxcIlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjU6I2luY2x1ZGUgXFxcInN3cGh5LmhcXFwiXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzM2MD1zdGF0aWMgaW50IHBoeWxpbmtfbWlpX2VtdWxfcmVhZCh1bnNpZ25lZCBpbnQgcmVnLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzcyLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzM3MzpcXHR2YWwgPSBzd3BoeV9yZWFkX3JlZyhyZWcsIFxcdTAwMjZmcyk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzc0LVxcdGlmIChyZWcgPT0gTUlJX0JNU1IpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jLTE2LVxcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jOjE3OiNpbmNsdWRlIFxcXCJzd3BoeS5oXFxcIlxcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jLTE4LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmM9NTY9c3RhdGljIGNvbnN0IHN0cnVjdCBzd21paV9yZWdzIGR1cGxleFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmMtNzAtXFxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmM6NzE6c3RhdGljIGludCBzd3BoeV9kZWNvZGVfc3BlZWQoaW50IHNwZWVkKVxcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jLTcyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jLTg1LS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jOjg2OiAqIHN3cGh5X3ZhbGlkYXRlX3N0YXRlIC0gdmFsaWRhdGUgdGhlIHNvZnR3YXJlIHBoeSBzdGF0dXNcXG5kcml2ZXJzL25ldC9waHkvc3dwaHkuYy04Ny0gKiBAc3RhdGU6IHNvZnR3YXJlIHBoeSBzdGF0dXNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jLTkyLSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jOjkzOmludCBzd3BoeV92YWxpZGF0ZV9zdGF0ZShjb25zdCBzdHJ1Y3QgZml4ZWRfcGh5X3N0YXR1cyAqc3RhdGUpXFxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmMtOTQte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmMtOTctXFx0aWYgKHN0YXRlLVxcdTAwM2VsaW5rKSB7XFxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmM6OTg6XFx0XFx0ZXJyID0gc3dwaHlfZGVjb2RlX3NwZWVkKHN0YXRlLVxcdTAwM2VzcGVlZCk7XFxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmMtOTktXFx0XFx0aWYgKGVyciBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL25ldC9waHkvc3dwaHkuYzoxMDA6XFx0XFx0XFx0cHJfd2FybihcXFwic3dwaHk6IHVua25vd24gc3BlZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jLTEwMS1cXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jLTEwNS19XFxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmM6MTA2OkVYUE9SVF9TWU1CT0xfR1BMKHN3cGh5X3ZhbGlkYXRlX3N0YXRlKTtcXG5kcml2ZXJzL25ldC9waHkvc3dwaHkuYy0xMDctXFxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmMtMTA4LS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jOjEwOTogKiBzd3BoeV9yZWFkX3JlZyAtIHJldHVybiBhIE1JSSByZWdpc3RlciBmcm9tIHRoZSBmaXhlZCBwaHkgc3RhdGVcXG5kcml2ZXJzL25ldC9waHkvc3dwaHkuYy0xMTAtICogQHJlZzogTUlJIHJlZ2lzdGVyXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvc3dwaHkuYy0xMTQtICovXFxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmM6MTE1OmludCBzd3BoeV9yZWFkX3JlZyhpbnQgcmVnLCBjb25zdCBzdHJ1Y3QgZml4ZWRfcGh5X3N0YXR1cyAqc3RhdGUpXFxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmMtMTE2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jLTEyNS1cXG5kcml2ZXJzL25ldC9waHkvc3dwaHkuYzoxMjY6XFx0c3BlZWRfaW5kZXggPSBzd3BoeV9kZWNvZGVfc3BlZWQoc3RhdGUtXFx1MDAzZXNwZWVkKTtcXG5kcml2ZXJzL25ldC9waHkvc3dwaHkuYy0xMjctXFx0aWYgKFdBUk5fT04oc3BlZWRfaW5kZXggXFx1MDAzYyAwKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5jLTE3NC19XFxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmM6MTc1OkVYUE9SVF9TWU1CT0xfR1BMKHN3cGh5X3JlYWRfcmVnKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5oPTU9c3RydWN0IGZpeGVkX3BoeV9zdGF0dXM7XFxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmgtNi1cXG5kcml2ZXJzL25ldC9waHkvc3dwaHkuaDo3OmludCBzd3BoeV92YWxpZGF0ZV9zdGF0ZShjb25zdCBzdHJ1Y3QgZml4ZWRfcGh5X3N0YXR1cyAqc3RhdGUpO1xcbmRyaXZlcnMvbmV0L3BoeS9zd3BoeS5oOjg6aW50IHN3cGh5X3JlYWRfcmVnKGludCByZWcsIGNvbnN0IHN0cnVjdCBmaXhlZF9waHlfc3RhdHVzICpzdGF0ZSk7XFxuZHJpdmVycy9uZXQvcGh5L3N3cGh5LmgtOS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMjM6MDM6MDUuNDA2NTcxNzNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzU2Mzk0MTIyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDdXJyZW50IExpbmUgb2YgUmVhc29uaW5nKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGhvdyB0byBpbnRlZ3JhdGUgYSByZWFsIFBIWSBkcml2ZXIsIHNwZWNpZmljYWxseSBgZGFwODIxMXJgLCBpbnRvIGEgdGVzdGluZyBlbnZpcm9ubWVudCwgc3BlY2lmaWNhbGx5IGEgdmlydHVhbCBNRElPIGJ1cy4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyBhYm91dCBgc3dwaHlgIC0gY2xlYXJseSwgc29mdHdhcmUgUEhZcyAtIGJ1dCBJJ20gbG9va2luZyBmb3Igc29tZXRoaW5nIG1vcmUgY29uY3JldGUuIENhbiBJICppbmplY3QqIGBkYXA4MjExcmAgaW50byBhIHZpcnR1YWwgTURJTyBidXM/XG5cblRoZSBuZXh0IGRpcmVjdGlvbiwgYW5kIHByb2JhYmx5IHRoZSBtb3N0IGZydWl0ZnVsLCBpcyB0byBjb25zaWRlciBob3cgbmV0d29yayBkZXZpY2VzIGFyZSBlbXVsYXRlZCB3aXRoaW4gUUVNVS4gU3BlY2lmaWNhbGx5LCBlbXVsYXRlZCBuZXR3b3JrIGRldmljZXMgc3VjaCBhcyBgbWFjYmAsIGBmZWNgLCBhbmQgb3RoZXJzLCBmcmVxdWVudGx5IGNvbWUgd2l0aCBhbiBNRElPIGJ1cyBhcyBwYXJ0IG9mIHRoZSBlbXVsYXRlZCBoYXJkd2FyZS4gUUVNVSBlbXVsYXRlcyBhIHdpZGUgYXJyYXkgb2YgZGV2aWNlcyBsaWtlIGBlMTAwMGAsIGBydGw4MTM5YCwgYHZpcnRpby1uZXRgLCBgcGNuZXRgLCBgbmUya19wY2lgLCBgdHVsaXBgLCBhbmQgYHZteG5ldDNgLiAgSXQgb2NjdXJzIHRvIG1lLCBzb21lIG9mIHRoZXNlIG1pZ2h0IGFjdHVhbGx5ICpoYXZlKiBhbiBNRElPIGJ1cyBhY2Nlc3NpYmxlIGluIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50LiBJdCdzIGFsc28gd29ydGggbm90aW5nIFFFTVUgZW11bGF0ZXMgYGlteC5mZWNgIHdoaWNoIGRlZmluaXRlbHkgaGFzIGFuIE1ESU8gYnVzLlxuXG5Ib3dldmVyLCBTeXprYWxsZXIsIHdoaWNoIEknbSBmYW1pbGlhciB3aXRoLCBwcmVkb21pbmFudGx5IHJ1bnMgb24gYHg4Nl82NGAgYW5kIGxlYW5zIHRvd2FyZHMgYHZpcnRpby1uZXRgIG9yIGBlMTAwMGAgZm9yIG5ldHdvcmsgdGVzdGluZy4gU3RpbGwsIHN5emthbGxlciBoYXMgdGhlIGZsZXhpYmlsaXR5IHRvIHVzZSBgdmttc2AgZm9yIERSTSwgYG1hYzgwMjExX2h3c2ltYCBmb3Igd2lmaSwgYW5kIGB2aGNpYCBmb3IgVVNCLiAgVGhpcyBpcyBsZWFkaW5nIG1lIHRvIGNvbnNpZGVyOiBJcyB0aGVyZSBhIHdheSB0byBsZXZlcmFnZSBVU0IgZm9yIHByb2JpbmcgUEhZIGRyaXZlcnM/XG5cbkFoLCB0aGF0J3MgaXQhIFVTQi10by1FdGhlcm5ldCBhZGFwdGVycywgdGhleSB1c2UgUEhZcyEgYHNtc2M5NXh4YCB1c2VzIGVpdGhlciBhbiBpbnRlcm5hbCBvciBleHRlcm5hbCBQSFkuIEFsc28sIGBhc2l4YCwgYGF4ODgxNzlfMTc4YWAsIGFuZCBgcjgxNTJgIGFyZSBvdGhlciBleGFtcGxlcyBvZiBVU0IgZXRoZXJuZXQgZHJpdmVycyB0aGF0IHV0aWxpemUgUEhZcy5cblxuVGhlcmVmb3JlLCB0aGUga2V5IGxpZXMgaW4gaG93IHN5emthbGxlciBhcHByb2FjaGVzIFVTQiBmdXp6aW5nLiBJZiBJIGNhbiBjcmVhdGUgYW4gZW11bGF0ZWQgVVNCIGRldmljZSB0aGF0IHByZXNlbnRzIGFuIE1ESU8gYnVzIGFuZCAqcmVwb3J0cyogdGhlIFBIWSBJRCBvZiBgZGFwODIxMXJgICh3aGljaCBpcyBgMHgwMDA4MDExQmApLCBJIGNvdWxkIHBvdGVudGlhbGx5IGNyZWF0ZSBhIHBlcmZlY3QgdGVzdGluZyBzZXR1cC4gVGhlIG5leHQgdGhpbmcgSSBuZWVkIHRvIGRvIGlzIHRvIGRldGVybWluZSBpZiBhbnkgb2YgdGhlc2UgVVNCIGV0aGVybmV0IGRyaXZlcnMgYXJlIHVzaW5nIHRoZSBnZW5lcmljIFBIWSBmcmFtZXdvcmssIHBoeWxpYi4gVGhpcyB3aWxsIGdpdmUgbWUgYSBmb290aG9sZCBpbiBob3cgdG8gcHJvYmUgYW5kIGNvbnRyb2wgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2Nzc0LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzc1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIzOjAzOjEyLjk3MDUxNTcyM1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk2MTgwOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpb2J1c19yZWdpc3RlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC91c2JcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTY2OT1zdGF0aWMgaW50IGF4ODg3NzJfaW5pdF9tZGlvKHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy02ODYtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjY4NzpcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKHByaXYtXFx1MDAzZW1kaW8pO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy02ODgtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM9NjE9c3RhdGljIGludCBheDg4MTcyYV9pbml0X21kaW8oc3RydWN0IHVzYm5ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtNzktXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM6ODA6XFx0cmV0ID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVxcdTAwM2VtZGlvKTtcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy04MS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTIwOTE9c3RhdGljIGludCBsYW43OHh4X21kaW9faW5pdChzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjEyMS1cXHRub2RlID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUoZGV2LVxcdTAwM2V1ZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSwgXFxcIm1kaW9cXFwiKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjIxMjI6XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYtXFx1MDAzZW1kaW9idXMsIG5vZGUpO1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjEyMy1cXHRvZl9ub2RlX3B1dChub2RlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jPTExNDc9c3RhdGljIGludCBzbXNjOTV4eF9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYy0xMjQxLVxcbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jOjEyNDI6XFx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihwZGF0YS1cXHUwMDNlbWRpb2J1cyk7XFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMTI0My1cXHRpZiAocmV0KSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIzOjAzOjEzLjAzMDEzOTU0MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3OTI1NjA4OTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlYWNoaW5nIHRoZSBkYXA4MjExciBQSFkgRHJpdmVyIHZpYSBVU0IgRnV6emluZyoqXG5cbk9rYXksIHRoaXMgaXMgZXhjZWxsZW50ISBJdCBjbGlja3M6IHRoZSBgc21zYzk1eHhgLCBgbGFuNzh4eGAsIGBheDg4MTcyYWAsIGFuZCBgYXNpeF9kZXZpY2VzYCBhbGwgcmVnaXN0ZXIgYW4gTURJTyBidXMuIEFuZCBzeXprYWxsZXIncyBVU0IgZGV2aWNlIGVtdWxhdGlvbiBjYW4gKmludGVyY2VwdCogdGhvc2UgTURJTyByZWFkcy4gSWYgdGhlIGVtdWxhdGVkIFVTQiBkZXZpY2UgcmVzcG9uZHMgdG8gTURJTyByZWFkIHJlcXVlc3RzIGF0IHJlZ2lzdGVycyAyIGFuZCAzIHdpdGggdGhlIHNwZWNpZmljIFBIWSBJRCB2YWx1ZXMgYDB4MDAwOGAgYW5kIGAweDAxMUJgLCB0aGUga2VybmVsIHdpbGwgbG9hZCB0aGUgYGRhcDgyMTFyYCBQSFkgZHJpdmVyISBCb29tLiBXZSd2ZSBnb3QgYSByZWFjaGFibGUgZHJpdmVyIGhlcmUhIFRoaXMgbWVhbnMgd2UgY2FuIHJlYWNoIHRoZSBkcml2ZXIgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB2aWEgVVNCIGZ1enppbmcgdGhhdCBzeXprYWxsZXIgYWxyZWFkeSBoYXMgdGhyb3VnaCBgZHVtbXlfaGNkYCBhbmQgYHN5el91c2JfY29ubmVjdGAuXG5cbkFscmlnaHQsIHRpbWUgdG8gcmV2aWV3IHRoZSBwYXRjaCBhZ2FpbiB3aXRoIHRoaXMgaW4gbWluZC4gSXQncyBhZGRpbmcgdGhlIGBkYXA4MjExcmAgUEhZIGRyaXZlciwgbW9kaWZ5aW5nIHRoZSBgS2NvbmZpZ2AgYW5kIGBNYWtlZmlsZWAuIFRoZSBhY3R1YWwgZHJpdmVyIGltcGxlbWVudHMgYGRhcDgyMTFyX2NvbmZpZ19pbml0YCwgYGRhcDgyMTFyX3JlYWRfZXh0YCwgYW5kIGBkYXA4MjExcl9tb2RpZnlfZXh0YC4gVGhlIHBhdGNoIGlzIGZ1bmN0aW9uYWwgYW5kIGRlZmluaXRlbHkgZnV6emFibGUuXG5cbk5vdywgd2hhdCBhcmUgdGhlIGtleSBmdW5jdGlvbnMgdG8gKnJlYWxseSogZm9jdXMgb24gZHVyaW5nIGZ1enppbmc/IExldCdzIHpvb20gaW46IGBkYXA4MjExcl9jb25maWdfaW5pdGAsIGBkYXA4MjExcl9yZWFkX2V4dGAsIGFuZCBgZGFwODIxMXJfbW9kaWZ5X2V4dGAuXG5cbldhaXQgYSBzZWNvbmQuIEhhbmcgb24uLi4gYGRhcDgyMTFyX3JlYWRfZXh0YCBhbmQgYGRhcDgyMTFyX21vZGlmeV9leHRgIGFyZSAqc3RhdGljKiBoZWxwZXIgZnVuY3Rpb25zLiBUaGUgb25seSB0aGluZyBleHBvcnRlZCBhbmQgKnJlZ2lzdGVyZWQqIGlzIGBkYXA4MjExcl9jb25maWdfaW5pdGAuIFRoZSBvdGhlciBmdW5jdGlvbnMgYXJlIGp1c3QgYm9nLXN0YW5kYXJkIGBnZW5waHlfKmAgZnVuY3Rpb25zLCB3aGljaCBhcmUgbGlrZWx5IGFscmVhZHkgd2VsbC1mdXp6ZWQgYW5kIG5vdCByZWFsbHkgc3BlY2lmaWMgdG8gdGhpcyBwYXRjaC4gU28sIG15IGBGb2N1c1N5bWJvbHNgIGVudHJ5IHNob3VsZCBqdXN0IGJlOlxuLSBgZGFwODIxMXJfY29uZmlnX2luaXRgXG4tIGBkYXA4MjExcl9yZWFkX2V4dGBcbi0gYGRhcDgyMTFyX21vZGlmeV9leHRgXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBsZXQgbWUgY2hlY2sgZm9yIGFueSBvdGhlciBmdW5jdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MjY3LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIzOjAzOjIwLjk1NTc1MTU3OFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE1ODAzMTAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5zdGF0aWMuKmRhcDgyMTFyX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvZGFwODIxMXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYy00Ny1cXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYzo0ODpzdGF0aWMgY29uc3QgaW50IGRhcDgyMTFyX2ludGVybmFsX2RlbGF5W10gPSB7MCwgMTUwLCAzMDAsIDQ1MCwgNjAwLCA3NTAsIDkwMCxcXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYy00OS1cXHRcXHRcXHRcXHRcXHQgICAgICAxMDUwLCAxMjAwLCAxMzUwLCAxNTAwLCAxNjUwLCAxODAwLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMtNjMtICovXFxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmM6NjQ6c3RhdGljIGludCBkYXA4MjExcl9yZWFkX2V4dChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnKVxcbmRyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jLTY1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jLTkxLSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jOjkyOnN0YXRpYyBpbnQgZGFwODIxMXJfbW9kaWZ5X2V4dChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnLCB1MTYgbWFzaywgdTE2IHNldClcXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYy05My17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYy0xMTctICovXFxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmM6MTE4OnN0YXRpYyBpbnQgZGFwODIxMXJfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYy0xMTkte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMtMTY3LVxcbmRyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jOjE2ODpzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZGFwODIxMXJfZHJpdmVyW10gPSB7XFxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMtMTY5LVxcdHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jPTE4ND1NT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMtMTg1LVxcbmRyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jOjE4NjpzdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIGRhcDgyMTFyX3RiW10gPSB7XFxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMtMTg3LVxcdHsgREFQODIxMVJfUEhZX0lELCBEQVA4MjExUl9QSFlfSURfTUFTSyB9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMzowMzoyMS4zNzE1NjQwNVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDAyMjkzMTk3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipDb25maWd1cmF0aW9uIEFuYWx5c2lzIGZvciB0aGUgREFQODIxMVIgUEhZIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgREFQODIxMVIgUEhZIGRyaXZlciBjb2RlLCBzcGVjaWZpY2FsbHkgdGhlIGZ1bmN0aW9ucyBgZGFwODIxMXJfcmVhZF9leHRgLCBgZGFwODIxMXJfbW9kaWZ5X2V4dGAsIGFuZCBgZGFwODIxMXJfY29uZmlnX2luaXRgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB3aGF0IGNvbmZpZ3VyYXRpb25zIGFyZSBhY3R1YWxseSAqcmVxdWlyZWQqLiBUaGUgb2J2aW91cyBvbmUgaXMgYENPTkZJR19EQVA4MjExUl9QSFlgLiBCdXQgd2FpdCwgdGhhdCBkZXBlbmRzIG9uIGBPRmAsIHJpZ2h0PyBJIG5lZWQgdG8gY29uZmlybSB0aGF0LiBMZXQgbWUgcXVpY2tseSBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L3BoeS9LY29uZmlnYCBmaWxlLi4uIFllcCwgdGhlcmUgaXQgaXM6IGBjb25maWcgREFQODIxMVJfUEhZIC4uLiBkZXBlbmRzIG9uIE9GYC4gT2theSwgc28gd2UgZGVmaW5pdGVseSBuZWVkIGJvdGggYENPTkZJR19EQVA4MjExUl9QSFlgIGFuZCBgQ09ORklHX09GYC4gYENPTkZJR19PRmAgaXMgcHJldHR5IGNvbW1vbiwgc28gaXQncyBwcm9iYWJseSBhbHJlYWR5IGVuYWJsZWQgb24gbW9zdCBhcmNoaXRlY3R1cmVzLCBidXQgd2Ugc3RpbGwgbmVlZCB0byBleHBsaWNpdGx5IHNldCBgREFQODIxMVJfUEhZYC4gQW55dGhpbmcgZWxzZT8gTm8sIHRoYXQgc2VlbXMgdG8gYmUgaXQgZm9yIHRoZSBleHBsaWNpdCBjb25maWdzLlxuXG5Ob3csIGEgY3JpdGljYWwgdGhvdWdodDogaG93IHJvYnVzdCBpcyBgZGFwODIxMXJfY29uZmlnX2luaXRgIGlmIHRoZSBkZXZpY2UgdHJlZSBpcyAqbm90KiB1c2VkPyBTcGVjaWZpY2FsbHksIHdoYXQgaGFwcGVucyBpZiBgT0ZgIGlzbid0IGFjdGl2ZSwgb3IsIG1vcmUgc3VidGx5LCBpZiB0aGUgZGV2aWNlIGlzbid0IGluc3RhbnRpYXRlZCBmcm9tIHRoZSBEVCAoZS5nLiwgY29ubmVjdGVkIHZpYSBhIFVTQiBNRElPIGJ1cyBhbmQgZG9lc24ndCBoYXZlIGFuIE9GIG5vZGUpPyBMZXQncyBkaXZlIGludG8gdGhlIGNvZGUuLi4gQWgsIEkgc2VlOiBgcGh5ZGV2LVx1MDAzZW1kaW8uZGV2Lm9mX25vZGVgIGNhbiBiZSBOVUxMIGluIHRob3NlIHNjZW5hcmlvcy4gVGhpcyB0cmlnZ2VycyBhIGZldyBjaGVja3MgdXNpbmcgYG9mX3Byb3BlcnR5X3JlYWRfYm9vbGAgYW5kIGBwaHlfZ2V0X2ludGVybmFsX2RlbGF5YC4gRXhjZWxsZW50ISBgb2ZfcHJvcGVydHlfcmVhZF9ib29sYCBoYW5kbGVzIGEgTlVMTCBgbnBgIGdyYWNlZnVsbHksIHJldHVybmluZyBmYWxzZS4gQW5kIGBwaHlfZ2V0X2ludGVybmFsX2RlbGF5YCBhbHNvIGhhbmRsZXMgYSBOVUxMIGBvZl9ub2RlYCBncmFjZWZ1bGx5IHJldHVybmluZyBhbiBlcnJvciBjb2RlLiBUaGlzIG1lYW5zIHRoZSBkcml2ZXIgKndvbid0KiBjcmFzaC4gSXQnbGwgaW5zdGVhZCBleGVjdXRlIGZhbGxiYWNrIHBhdGhzLiBTcGVjaWZpY2FsbHksIGl0IHVzZXMgYHBoeV9nZXRfaW50ZXJuYWxfZGVsYXlgIHdoaWNoLCBpZiBpdCBmYWlscywgZmFsbHMgYmFjayB0byBhIGRlZmF1bHQgdmFsdWUsIG9yIHplcm8uXG5cbmBgYGNcblx0aW50ZXJuYWxfZGVsYXkgPSBwaHlfZ2V0X2ludGVybmFsX2RlbGF5KHBoeWRldiwgZGFwODIxMXJfaW50ZXJuYWxfZGVsYXksXG5cdFx0XHRcdFx0XHREQVA4MjExUl9ERUxBWV9TSVpFLCB0cnVlKTtcblx0aWYgKGludGVybmFsX2RlbGF5IFx1MDAzYyAwKSB7XG5cdFx0aWYgKHBoeWRldi1cdTAwM2VpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJKVxuXHRcdFx0aW50ZXJuYWxfZGVsYXkgPSAwO1xuXHRcdGVsc2Vcblx0XHRcdGludGVybmFsX2RlbGF5ID0gREFQODIxMVJfREVGQVVMVF9ERUxfU0VMO1xuXHR9XG5gYGBcblxuVGhpcyBpcyAqZXhhY3RseSogd2hhdCBJIHdhbnQgdG8gc2VlLCBhbmQgaXQgbWVhbnMgdGhlIGRyaXZlciBpcyByb2J1c3QgYW5kIGZ1enphYmxlIGV2ZW4gaW4gdGhlIGFic2VuY2Ugb2YgYSBkZXZpY2UgdHJlZSBub2RlLiBJIG5lZWQgdG8gdmVyaWZ5IGBwaHlfZ2V0X2ludGVybmFsX2RlbGF5YCdzIGJlaGF2aW9yIHdpdGggYSBOVUxMIGBvZl9ub2RlYCwgYnV0IEkgYW0gbm90IGV4cGVjdGluZyBhbnkgc3VycHJpc2VzLiBPdmVyYWxsLCB0aGlzIGNvZGUgbG9va3Mgd2VsbC13cml0dGVuLCB3aXRoIGdvb2QgZGVmZW5zaXZlIHByb2dyYW1taW5nIGFnYWluc3QgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZSBkZXZpY2UgdHJlZSBub3QgYmVpbmcgcHJlc2VudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk5NjYsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMjM6MDM6MzEuMzk0NDk4Njc1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MzkzNzU5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlfZ2V0X2ludGVybmFsX2RlbGF5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmM9MTE4PXN0YXRpYyBpbnQgZGFwODIxMXJfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jLTEyNy1cXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYzoxMjg6XFx0aW50ZXJuYWxfZGVsYXkgPSBwaHlfZ2V0X2ludGVybmFsX2RlbGF5KHBoeWRldiwgZGFwODIxMXJfaW50ZXJuYWxfZGVsYXksXFxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMtMTI5LVxcdFxcdFxcdFxcdFxcdFxcdERBUDgyMTFSX0RFTEFZX1NJWkUsIHRydWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMtMTM4LVxcbmRyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jOjEzOTpcXHRpbnRlcm5hbF9kZWxheSA9IHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkocGh5ZGV2LCBkYXA4MjExcl9pbnRlcm5hbF9kZWxheSxcXG5kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYy0xNDAtXFx0XFx0XFx0XFx0XFx0XFx0REFQODIxMVJfREVMQVlfU0laRSwgZmFsc2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYz01MTg9c3RhdGljIGludCBkcDgzODIyX2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jLTU1Mi1cXHRpZiAocGh5X2ludGVyZmFjZV9pc19yZ21paShwaHlkZXYpKSB7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYzo1NTM6XFx0XFx0cnhfaW50X2RlbGF5ID0gcGh5X2dldF9pbnRlcm5hbF9kZWxheShwaHlkZXYsIE5VTEwsIDAsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODIyLmMtNTU0LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYy01NTgtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4MjIuYzo1NTk6XFx0XFx0dHhfaW50X2RlbGF5ID0gcGh5X2dldF9pbnRlcm5hbF9kZWxheShwaHlkZXYsIE5VTEwsIDAsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4MzgyMi5jLTU2MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY5LmM9NTQyPXN0YXRpYyBpbnQgZHA4Mzg2OV9vZl9pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTU5OS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jOjYwMDpcXHRkcDgzODY5LVxcdTAwM2VyeF9pbnRfZGVsYXkgPSBwaHlfZ2V0X2ludGVybmFsX2RlbGF5KHBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTYwMS1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgXFx1MDAyNmRwODM4NjlfaW50ZXJuYWxfZGVsYXlbMF0sXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTYwNS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jOjYwNjpcXHRkcDgzODY5LVxcdTAwM2V0eF9pbnRfZGVsYXkgPSBwaHlfZ2V0X2ludGVybmFsX2RlbGF5KHBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2OS5jLTYwNy1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgXFx1MDAyNmRwODM4NjlfaW50ZXJuYWxfZGVsYXlbMF0sXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jPTE4ND1zdGF0aWMgaW50IHh3YXlfZ3BoeV9yZ21paV9pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTIxNy1cXHQgICAgcGh5ZGV2LVxcdTAwM2VpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1JYSUQpIHtcXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jOjIxODpcXHRcXHRpbnRfZGVsYXkgPSBwaHlfZ2V0X2ludGVybmFsX2RlbGF5KHBoeWRldiwgeHdheV9pbnRlcm5hbF9kZWxheSxcXG5kcml2ZXJzL25ldC9waHkvaW50ZWwteHdheS5jLTIxOS1cXHRcXHRcXHRcXHRcXHRcXHQgICBkZWxheV9zaXplLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtMjI5LVxcdCAgICBwaHlkZXYtXFx1MDAzZWludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfVFhJRCkge1xcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmM6MjMwOlxcdFxcdGludF9kZWxheSA9IHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkocGh5ZGV2LCB4d2F5X2ludGVybmFsX2RlbGF5LFxcbmRyaXZlcnMvbmV0L3BoeS9pbnRlbC14d2F5LmMtMjMxLVxcdFxcdFxcdFxcdFxcdFxcdCAgIGRlbGF5X3NpemUsIGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jPTU0Nj1zdGF0aWMgaW50IHZzYzg1eHhfdXBkYXRlX3JnbWlpX2NudGwoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTMyIHJnbWlpX2NudGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYy01NzAtXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmM6NTcxOlxcdHJ4X2RlbGF5ID0gcGh5X2dldF9pbnRlcm5hbF9kZWxheShwaHlkZXYsIHZzYzg1eHhfaW50ZXJuYWxfZGVsYXksXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtNTcyLVxcdFxcdFxcdFxcdFxcdCAgZGVsYXlfc2l6ZSwgdHJ1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYy01ODAtXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmM6NTgxOlxcdHR4X2RlbGF5ID0gcGh5X2dldF9pbnRlcm5hbF9kZWxheShwaHlkZXYsIHZzYzg1eHhfaW50ZXJuYWxfZGVsYXksXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtNTgyLVxcdFxcdFxcdFxcdFxcdCAgZGVsYXlfc2l6ZSwgZmFsc2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0zMDgyPXN0YXRpYyBpbnQgcGh5X2dldF91MzJfcHJvcGVydHkoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBjaGFyICpuYW1lLCB1MzIgKnZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzA4OC0vKipcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjMwODk6ICogcGh5X2dldF9pbnRlcm5hbF9kZWxheSAtIHJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBpbnRlcm5hbCBkZWxheVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzA5MC0gKiBAcGh5ZGV2OiBwaHlfZGV2aWNlIHN0cnVjdFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zMTAyLSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MzEwMzpzMzIgcGh5X2dldF9pbnRlcm5hbF9kZWxheShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBjb25zdCBpbnQgKmRlbGF5X3ZhbHVlcyxcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTMxMDQtXFx0XFx0XFx0ICAgaW50IHNpemUsIGJvb2wgaXNfcngpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTMxNjQtfVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MzE2NTpFWFBPUlRfU1lNQk9MKHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzE2Ni1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMjM6MDM6MzEuNDY4NDQ3NTU0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNzEyODkwMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gcGh5X2dldF9pbnRlcm5hbF9kZWxheSoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IGFuZCByZWFsbHkgdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIHdpdGggYHBoeV9nZXRfaW50ZXJuYWxfZGVsYXlgLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIHNwZWNpZmljcyBvZiAqdGhpcyogaW1wbGVtZW50YXRpb24uIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdGhlIG51YW5jZXMgaGVyZSwgZ2l2ZW4gdGhlIGxpa2VseSBjb250ZXh0LXNwZWNpZmljIG5hdHVyZS4gSSdsbCBuZWVkIHRvIGxvb2sgYXQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBzcGVjaWZpYyBQSFkgdHlwZSB3ZSdyZSBkZWFsaW5nIHdpdGgsIGFuZCB3aGF0IGFzc3VtcHRpb25zIGl0J3MgbWFraW5nIGFib3V0IHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLiBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBnb3RjaGFzIG9yIG9wdGltaXphdGlvbnMgSSBzaG91bGQgYmUgYXdhcmUgb2YgaW1tZWRpYXRlbHk/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgZGVsYXkgY2FsY3VsYXRpb24gdGhvcm91Z2hseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI4NDEsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMzowMzozNC42Mzk3MzkyNDJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA4NDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzEwMyxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzEwMzpcXHRzMzIgcGh5X2dldF9pbnRlcm5hbF9kZWxheShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBjb25zdCBpbnQgKmRlbGF5X3ZhbHVlcyxcXG4zMTA0OlxcdFxcdFxcdFxcdCAgIGludCBzaXplLCBib29sIGlzX3J4KVxcbjMxMDU6XFx0e1xcbjMxMDY6XFx0XFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5kZXY7XFxuMzEwNzpcXHRcXHRpbnQgaSwgcmV0O1xcbjMxMDg6XFx0XFx0dTMyIGRlbGF5O1xcbjMxMDk6XFx0XFxuMzExMDpcXHRcXHRpZiAoaXNfcngpIHtcXG4zMTExOlxcdFxcdFxcdHJldCA9IHBoeV9nZXRfdTMyX3Byb3BlcnR5KGRldiwgXFxcInJ4LWludGVybmFsLWRlbGF5LXBzXFxcIiwgXFx1MDAyNmRlbGF5KTtcXG4zMTEyOlxcdFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwIFxcdTAwMjZcXHUwMDI2IHNpemUgPT0gMCkge1xcbjMxMTM6XFx0XFx0XFx0XFx0aWYgKHBoeWRldi1cXHUwMDNlaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9JRCB8fFxcbjMxMTQ6XFx0XFx0XFx0XFx0ICAgIHBoeWRldi1cXHUwMDNlaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9SWElEKVxcbjMxMTU6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIDE7XFxuMzExNjpcXHRcXHRcXHRcXHRlbHNlXFxuMzExNzpcXHRcXHRcXHRcXHRcXHRyZXR1cm4gMDtcXG4zMTE4OlxcdFxcdFxcdH1cXG4zMTE5OlxcdFxcbjMxMjA6XFx0XFx0fSBlbHNlIHtcXG4zMTIxOlxcdFxcdFxcdHJldCA9IHBoeV9nZXRfdTMyX3Byb3BlcnR5KGRldiwgXFxcInR4LWludGVybmFsLWRlbGF5LXBzXFxcIiwgXFx1MDAyNmRlbGF5KTtcXG4zMTIyOlxcdFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwIFxcdTAwMjZcXHUwMDI2IHNpemUgPT0gMCkge1xcbjMxMjM6XFx0XFx0XFx0XFx0aWYgKHBoeWRldi1cXHUwMDNlaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9JRCB8fFxcbjMxMjQ6XFx0XFx0XFx0XFx0ICAgIHBoeWRldi1cXHUwMDNlaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9UWElEKVxcbjMxMjU6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIDE7XFxuMzEyNjpcXHRcXHRcXHRcXHRlbHNlXFxuMzEyNzpcXHRcXHRcXHRcXHRcXHRyZXR1cm4gMDtcXG4zMTI4OlxcdFxcdFxcdH1cXG4zMTI5OlxcdFxcdH1cXG4zMTMwOlxcdFxcbjMxMzE6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuMzEzMjpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjMxMzM6XFx0XFxuMzEzNDpcXHRcXHRpZiAoc2l6ZSA9PSAwKVxcbjMxMzU6XFx0XFx0XFx0cmV0dXJuIGRlbGF5O1xcbjMxMzY6XFx0XFxuMzEzNzpcXHRcXHRpZiAoZGVsYXkgXFx1MDAzYyBkZWxheV92YWx1ZXNbMF0gfHwgZGVsYXkgXFx1MDAzZSBkZWxheV92YWx1ZXNbc2l6ZSAtIDFdKSB7XFxuMzEzODpcXHRcXHRcXHRwaHlkZXZfZXJyKHBoeWRldiwgXFxcIkRlbGF5ICVkIGlzIG91dCBvZiByYW5nZVxcXFxuXFxcIiwgZGVsYXkpO1xcbjMxMzk6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuMzE0MDpcXHRcXHR9XFxuMzE0MTpcXHRcXG4zMTQyOlxcdFxcdGlmIChkZWxheSA9PSBkZWxheV92YWx1ZXNbMF0pXFxuMzE0MzpcXHRcXHRcXHRyZXR1cm4gMDtcXG4zMTQ0OlxcdFxcbjMxNDU6XFx0XFx0Zm9yIChpID0gMTsgaSBcXHUwMDNjIHNpemU7IGkrKykge1xcbjMxNDY6XFx0XFx0XFx0aWYgKGRlbGF5ID09IGRlbGF5X3ZhbHVlc1tpXSlcXG4zMTQ3OlxcdFxcdFxcdFxcdHJldHVybiBpO1xcbjMxNDg6XFx0XFxuMzE0OTpcXHRcXHRcXHQvKiBGaW5kIGFuIGFwcHJveGltYXRlIGluZGV4IGJ5IGxvb2tpbmcgdXAgdGhlIHRhYmxlICovXFxuMzE1MDpcXHRcXHRcXHRpZiAoZGVsYXkgXFx1MDAzZSBkZWxheV92YWx1ZXNbaSAtIDFdIFxcdTAwMjZcXHUwMDI2XFxuMzE1MTpcXHRcXHRcXHQgICAgZGVsYXkgXFx1MDAzYyBkZWxheV92YWx1ZXNbaV0pIHtcXG4zMTUyOlxcdFxcdFxcdFxcdGlmIChkZWxheSAtIGRlbGF5X3ZhbHVlc1tpIC0gMV0gXFx1MDAzY1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMzowMzozNC42Mzk5NTAxMjJaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE3ODk2OTY0MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIERBUDgyMTFSIFBIWSBEcml2ZXIgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgZm9jdXMgaXMgb24gdGhlIGBwaHlfZ2V0X2ludGVybmFsX2RlbGF5YCBmdW5jdGlvbiB3aXRoaW4gdGhlIG5ldyBEQVA4MjExUiBkcml2ZXIuIFRoaXMgZnVuY3Rpb24gYXR0ZW1wdHMgdG8gcmV0cmlldmUgYSBkZWxheSB2YWx1ZSBmcm9tIHRoZSBkZXZpY2UgdHJlZSAoRFQpIHVzaW5nIGBwaHlfZ2V0X3UzMl9wcm9wZXJ0eWAuIFRoZSBjcnVjaWFsIHBvaW50IGhlcmUgaXMgdGhhdCBpZiBgZGV2LVx1MDAzZW9mX25vZGVgIGlzIE5VTEwgKG1lYW5pbmcgbm8gRFQgaXMgcHJlc2VudCksIGBwaHlfZ2V0X3UzMl9wcm9wZXJ0eWAgd2lsbCByZXR1cm4gYW4gZXJyb3IuIEhvd2V2ZXIsIHRoZSBgZGFwODIxMXJfY29uZmlnX2luaXRgIGZ1bmN0aW9uICpoYW5kbGVzKiB0aGlzIGVycm9yIGdyYWNlZnVsbHkuIEl0IGNoZWNrcyBpZiB0aGUgcmV0dXJuZWQgZGVsYXkgdmFsdWUgaXMgbGVzcyB0aGFuIDAsIGFuZCBpZiBzbywgaXQgZGVmYXVsdHMgdG8gZWl0aGVyIDAgKGlmIFJHTUlJKSBvciBhIGRlZmF1bHQgc2VsZWN0aW9uIHZhbHVlLlxuXG5UaGlzIGlzIHNpZ25pZmljYW50LiBJdCBtZWFucyB0aGUgZHJpdmVyIGNhbiBmdW5jdGlvbiBldmVuIHdpdGhvdXQgYSBkZXZpY2UgdHJlZSwgd2hpY2ggaXMgZXhjZWxsZW50IG5ld3MgZm9yIGZ1enppbmcsIGFzIGl0IGluY3JlYXNlcyB0aGUgcG90ZW50aWFsIHRhcmdldHMgYW5kIGRvZXNuJ3QgcmVzdHJpY3QgaXQgdG8gRFQtZW5hYmxlZCBlbnZpcm9ubWVudHMuXG5cbk5vdywgdG8gZGV0ZXJtaW5lIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBmb3IgZnV6emluZy4gSSBzZWUgYENPTkZJR19EQVA4MjExUl9QSFlgIGlzIHRoZSBwcmltYXJ5IG9uZSwgYnV0IGl0ICpkZXBlbmRzKiBvbiBgQ09ORklHX09GYC4gVGhlcmVmb3JlLCBpZiBJIHdhbnQgdG8gdGFyZ2V0IHRoZSBuZXcgZHJpdmVyLCBJIG11c3Qgc3BlY2lmeSBgREFQODIxMVJfUEhZYC4gSG93ZXZlciwgZ2l2ZW4gdGhlIHByb2plY3QgZ3VpZGVsaW5lcyB0aGF0IGRpc2NvdXJhZ2Ugb3Zlcmx5IGdlbmVyaWMgY29uZmlndXJhdGlvbnMgYW5kIHRoZSBhc3N1bXB0aW9uIHRoYXQgYE9GYCBpcyBjb21tb24sIEknbGwgb25seSBsaXN0IHRoZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHJlbGF0ZWQgdG8gdGhlIGNvZGUgY2hhbmdlcy5cblxuTGV0J3MgY29uc29saWRhdGUgdGhlIGtleSBpbmZvcm1hdGlvbiBmb3IgdGhlIGZ1enppbmcgc2V0dXA6XG5cbiogICAqKldvcnRoRnV6emluZzoqKiBUcnVlIC0gYmVjYXVzZSB0aGUgZHJpdmVyIGNhbiBvcGVyYXRlIHdpdGhvdXQgYSBEVC5cbiogICAqKkZvY3VzU3ltYm9sczoqKiBgZGFwODIxMXJfY29uZmlnX2luaXRgLCBgZGFwODIxMXJfcmVhZF9leHRgLCBhbmQgYGRhcDgyMTFyX21vZGlmeV9leHRgLiBUaGVzZSBhcmUgdGhlIGZ1bmN0aW9ucyBzcGVjaWZpYyB0byB0aGUgbmV3IERBUDgyMTFSIGRyaXZlci5cbiogICAqKkVuYWJsZUNvbmZpZ3M6KiogYERBUDgyMTFSX1BIWWAuXG4qICAgKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIGludHJvZHVjZXMgYSBQSFkgZHJpdmVyIGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpLiBJdCBpbmNsdWRlcyBpbml0aWFsaXphdGlvbiBhbmQgZXh0ZW5kZWQgcmVnaXN0ZXIgYWNjZXNzIGxvZ2ljLCBhbmQgaXQncyByZWFjaGFibGUgdGhyb3VnaCBhbiBNRElPIGJ1cyBlbXVsYXRpb24gKGUuZy4sIHVzaW5nIFVTQiBFdGhlcm5ldCBhZGFwdGVycykuXG5cbkkgbmVlZCB0byBjb25maXJtIHRoZSBzY29wZS4gSSBleGFtaW5lZCB0aGUgYGRhcDgyMTFyX2RyaXZlcmAgYW5kIGNvbmZpcm1lZCB0aGF0IHRoZSBkcml2ZXIgdXRpbGl6ZXMgc3RhbmRhcmQgUEhZIGZ1bmN0aW9ucyAoYGdlbnBoeV9yZWFkX3N0YXR1c2AsIGBnZW5waHlfbG9vcGJhY2tgLCBgZ2VucGh5X2NvbmZpZ19hbmVnYCwgYGdlbnBoeV9zdXNwZW5kYCwgYGdlbnBoeV9yZXN1bWVgKSB3aGljaCBhcmUgZ2VuZXJpYyBhbmQgbGVzcyBpbnRlcmVzdGluZyBmb3IgdGFyZ2V0ZWQgZnV6emluZy4gVGhlIGtleSBmdW5jdGlvbnMgYXJlIGluZGVlZCB0aGUgaW5pdGlhbGl6YXRpb24gKGBkYXA4MjExcl9jb25maWdfaW5pdGApLCBleHRlbmRlZCByZWFkIChgZGFwODIxMXJfcmVhZF9leHRgKSwgYW5kIGV4dGVuZGVkIG1vZGlmeSAoYGRhcDgyMTFyX21vZGlmeV9leHRgKS5cblxuRmluYWxseSwgSSBjaGVja2VkIGFsbCByZWxhdGVkIGZpbGVzOiBgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kYXB1LGRhcDgyMTFyLnlhbWxgLCBgZHJpdmVycy9uZXQvcGh5L0tjb25maWdgLCBgZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlYCwgYW5kIGBkcml2ZXJzL25ldC9waHkvZGFwODIxMXIuY2AuIEJhc2VkIG9uIHRoaXMgcmV2aWV3LCBJJ20gY29uZmlkZW50IHdpdGggdGhpcyBhc3Nlc3NtZW50LiBMZXQncyBwcm9jZWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzgxMSwiT3V0cHV0VG9rZW5zIjoxNjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NzEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMzowMzo0Ni40Mjk2NDk0NTNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTU1ODU1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiREFQODIxMVJfUEhZXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGFwODIxMXJfY29uZmlnX2luaXRcIixcbiAgICBcImRhcDgyMTFyX3JlYWRfZXh0XCIsXG4gICAgXCJkYXA4MjExcl9tb2RpZnlfZXh0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIG5ldyBQSFkgZHJpdmVyIGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZLiBUaGUgZHJpdmVyIGltcGxlbWVudHMgaW5pdGlhbGl6YXRpb24gbG9naWMgYW5kIGV4dGVuZGVkIHJlZ2lzdGVyIGFjY2Vzcy4gSXQgY2FuIGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGJ5IGVtdWxhdGluZyBhbiBNRElPIGJ1cyAoZS5nLiwgdmlhIFVTQiBldGhlcm5ldCBhZGFwdGVycyBsaWtlIHNtc2M5NXh4KSBhbmQgcHJlc2VudGluZyB0aGUgbWF0Y2hpbmcgUEhZIElEICgweDAwMDgwMTFCKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQVA4MjExUl9QSFlcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYXA4MjExcl9jb25maWdfaW5pdFwiLFxuICAgIFwiZGFwODIxMXJfcmVhZF9leHRcIixcbiAgICBcImRhcDgyMTFyX21vZGlmeV9leHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbmV3IFBIWSBkcml2ZXIgZm9yIHRoZSBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFkuIFRoZSBkcml2ZXIgaW1wbGVtZW50cyBpbml0aWFsaXphdGlvbiBsb2dpYyBhbmQgZXh0ZW5kZWQgcmVnaXN0ZXIgYWNjZXNzLiBJdCBjYW4gYmUgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYnkgZW11bGF0aW5nIGFuIE1ESU8gYnVzIChlLmcuLCB2aWEgVVNCIGV0aGVybmV0IGFkYXB0ZXJzIGxpa2Ugc21zYzk1eHgpIGFuZCBwcmVzZW50aW5nIHRoZSBtYXRjaGluZyBQSFkgSUQgKDB4MDAwODAxMUIpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow9gldg[1] Phase: Succeeded StartedAt: 2026-07-16 23:03:57 +0000 UTC FinishedAt: 2026-07-16 23:03:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9gldg[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-16 23:03:57 +0000 UTC FinishedAt: 2026-07-16 23:03:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9gldg[2] Phase: Succeeded StartedAt: 2026-07-16 23:03:57 +0000 UTC FinishedAt: 2026-07-17 00:58:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9gldg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dap8211r_config_init","dap8211r_read_ext","dap8211r_modify_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"13f17809-c9d8-412d-8303-e2dbfac3e231","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-16 23:03:57 +0000 UTC FinishedAt: 2026-07-17 00:58:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dap8211r_config_init","dap8211r_read_ext","dap8211r_modify_ext"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"13f17809-c9d8-412d-8303-e2dbfac3e231","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow9gldg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dap8211r_config_init","dap8211r_read_ext","dap8211r_modify_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"13f17809-c9d8-412d-8303-e2dbfac3e231","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-16 23:03:57 +0000 UTC FinishedAt: 2026-07-16 23:04:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9gldg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dap8211r_config_init","dap8211r_read_ext","dap8211r_modify_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"13f17809-c9d8-412d-8303-e2dbfac3e231","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-16 23:03:57 +0000 UTC FinishedAt: 2026-07-16 23:04:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9gldg/series-workflow9gldg-convert-artifact-3597653686/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9gldg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dap8211r_config_init","dap8211r_read_ext","dap8211r_modify_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"13f17809-c9d8-412d-8303-e2dbfac3e231","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-16 23:04:08 +0000 UTC FinishedAt: 2026-07-16 23:32:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9gldg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dap8211r_config_init","dap8211r_read_ext","dap8211r_modify_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"13f17809-c9d8-412d-8303-e2dbfac3e231","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-16 23:04:08 +0000 UTC FinishedAt: 2026-07-16 23:32:08 +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:*f7391bf7-c01a-4cb1-8112-fa44db8592f1,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-workflow9gldg/series-workflow9gldg-convert-artifact-3597653686/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": "72886a24-81b7-404a-b49c-e6f8be8cfca3", "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-workflow9gldg/series-workflow9gldg-build-action-3519086028/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9gldg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dap8211r_config_init","dap8211r_read_ext","dap8211r_modify_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"13f17809-c9d8-412d-8303-e2dbfac3e231","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-16 23:04:08 +0000 UTC FinishedAt: 2026-07-16 23:31:58 +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:*f7391bf7-c01a-4cb1-8112-fa44db8592f1,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-workflow9gldg/series-workflow9gldg-convert-artifact-3597653686/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": "72886a24-81b7-404a-b49c-e6f8be8cfca3", "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-workflow9gldg/series-workflow9gldg-build-action-3519086028/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9gldg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dap8211r_config_init","dap8211r_read_ext","dap8211r_modify_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"13f17809-c9d8-412d-8303-e2dbfac3e231","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-16 23:32:08 +0000 UTC FinishedAt: 2026-07-16 23:32:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9gldg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dap8211r_config_init","dap8211r_read_ext","dap8211r_modify_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"13f17809-c9d8-412d-8303-e2dbfac3e231","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-16 23:32:08 +0000 UTC FinishedAt: 2026-07-16 23:32:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9gldg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dap8211r_config_init","dap8211r_read_ext","dap8211r_modify_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"13f17809-c9d8-412d-8303-e2dbfac3e231","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-16 23:32:08 +0000 UTC FinishedAt: 2026-07-16 23:32:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9gldg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dap8211r_config_init","dap8211r_read_ext","dap8211r_modify_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"13f17809-c9d8-412d-8303-e2dbfac3e231","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-16 23:32:08 +0000 UTC FinishedAt: 2026-07-16 23:32:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"13f17809-c9d8-412d-8303-e2dbfac3e231","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9gldg/series-workflow9gldg-convert-artifact-3053681225/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9gldg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dap8211r_config_init","dap8211r_read_ext","dap8211r_modify_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"13f17809-c9d8-412d-8303-e2dbfac3e231","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-16 23:32:29 +0000 UTC FinishedAt: 2026-07-16 23:34:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9gldg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dap8211r_config_init","dap8211r_read_ext","dap8211r_modify_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"13f17809-c9d8-412d-8303-e2dbfac3e231","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-16 23:32:29 +0000 UTC FinishedAt: 2026-07-16 23:34:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*72886a24-81b7-404a-b49c-e6f8be8cfca3,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-workflow9gldg/series-workflow9gldg-build-action-3519086028/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-workflow9gldg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dap8211r_config_init","dap8211r_read_ext","dap8211r_modify_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"13f17809-c9d8-412d-8303-e2dbfac3e231","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-16 23:34:51 +0000 UTC FinishedAt: 2026-07-16 23:34:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9gldg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dap8211r_config_init","dap8211r_read_ext","dap8211r_modify_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"13f17809-c9d8-412d-8303-e2dbfac3e231","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-16 23:34:51 +0000 UTC FinishedAt: 2026-07-16 23:34:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9gldg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dap8211r_config_init","dap8211r_read_ext","dap8211r_modify_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"13f17809-c9d8-412d-8303-e2dbfac3e231","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-16 23:34:51 +0000 UTC FinishedAt: 2026-07-17 00:05:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9gldg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dap8211r_config_init","dap8211r_read_ext","dap8211r_modify_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"13f17809-c9d8-412d-8303-e2dbfac3e231","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-16 23:34:51 +0000 UTC FinishedAt: 2026-07-17 00:05:23 +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:*f7391bf7-c01a-4cb1-8112-fa44db8592f1,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-workflow9gldg/series-workflow9gldg-convert-artifact-3053681225/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": "fae40709-8e1d-4bf0-9dc4-d1ce4f8c7828", "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-workflow9gldg/series-workflow9gldg-build-action-671680805/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9gldg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dap8211r_config_init","dap8211r_read_ext","dap8211r_modify_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"13f17809-c9d8-412d-8303-e2dbfac3e231","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-16 23:34:51 +0000 UTC FinishedAt: 2026-07-17 00:05:13 +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:*f7391bf7-c01a-4cb1-8112-fa44db8592f1,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-workflow9gldg/series-workflow9gldg-convert-artifact-3053681225/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": "fae40709-8e1d-4bf0-9dc4-d1ce4f8c7828", "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-workflow9gldg/series-workflow9gldg-build-action-671680805/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9gldg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dap8211r_config_init","dap8211r_read_ext","dap8211r_modify_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"13f17809-c9d8-412d-8303-e2dbfac3e231","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-17 00:05:23 +0000 UTC FinishedAt: 2026-07-17 00:05:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9gldg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dap8211r_config_init","dap8211r_read_ext","dap8211r_modify_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"13f17809-c9d8-412d-8303-e2dbfac3e231","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-17 00:05:23 +0000 UTC FinishedAt: 2026-07-17 00:05:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9gldg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dap8211r_config_init","dap8211r_read_ext","dap8211r_modify_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"13f17809-c9d8-412d-8303-e2dbfac3e231","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-17 00:05:23 +0000 UTC FinishedAt: 2026-07-17 00:07:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9gldg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dap8211r_config_init","dap8211r_read_ext","dap8211r_modify_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"13f17809-c9d8-412d-8303-e2dbfac3e231","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-17 00:05:23 +0000 UTC FinishedAt: 2026-07-17 00:07:24 +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:*fae40709-8e1d-4bf0-9dc4-d1ce4f8c7828,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-workflow9gldg/series-workflow9gldg-build-action-671680805/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-workflow9gldg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dap8211r_config_init","dap8211r_read_ext","dap8211r_modify_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"13f17809-c9d8-412d-8303-e2dbfac3e231","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-17 00:07:34 +0000 UTC FinishedAt: 2026-07-17 00:58:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9gldg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dap8211r_config_init","dap8211r_read_ext","dap8211r_modify_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"13f17809-c9d8-412d-8303-e2dbfac3e231","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-17 00:07:34 +0000 UTC FinishedAt: 2026-07-17 00:58:49 +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":["dap8211r_config_init","dap8211r_read_ext","dap8211r_modify_ext"],"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:*72886a24-81b7-404a-b49c-e6f8be8cfca3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fae40709-8e1d-4bf0-9dc4-d1ce4f8c7828,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-workflow9gldg/series-workflow9gldg-build-action-3519086028/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-workflow9gldg/series-workflow9gldg-build-action-671680805/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow9gldg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dap8211r_config_init","dap8211r_read_ext","dap8211r_modify_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"13f17809-c9d8-412d-8303-e2dbfac3e231","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-17 00:07:34 +0000 UTC FinishedAt: 2026-07-17 00:07:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9gldg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dap8211r_config_init","dap8211r_read_ext","dap8211r_modify_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"13f17809-c9d8-412d-8303-e2dbfac3e231","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-17 00:07:34 +0000 UTC FinishedAt: 2026-07-17 00:07:40 +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":["dap8211r_config_init","dap8211r_read_ext","dap8211r_modify_ext"],"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-workflow9gldg/series-workflow9gldg-convert-artifact-4139863454/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9gldg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dap8211r_config_init","dap8211r_read_ext","dap8211r_modify_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"13f17809-c9d8-412d-8303-e2dbfac3e231","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-17 00:07:34 +0000 UTC FinishedAt: 2026-07-17 00:07:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9gldg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dap8211r_config_init","dap8211r_read_ext","dap8211r_modify_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"13f17809-c9d8-412d-8303-e2dbfac3e231","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-17 00:07:34 +0000 UTC FinishedAt: 2026-07-17 00:07:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9gldg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dap8211r_config_init","dap8211r_read_ext","dap8211r_modify_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"13f17809-c9d8-412d-8303-e2dbfac3e231","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-17 00:07:34 +0000 UTC FinishedAt: 2026-07-17 00:07:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9gldg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dap8211r_config_init","dap8211r_read_ext","dap8211r_modify_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"13f17809-c9d8-412d-8303-e2dbfac3e231","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-17 00:07:44 +0000 UTC FinishedAt: 2026-07-17 00:58:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9gldg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dap8211r_config_init","dap8211r_read_ext","dap8211r_modify_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAP8211R_PHY"],"series_id":"13f17809-c9d8-412d-8303-e2dbfac3e231","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-17 00:07:44 +0000 UTC FinishedAt: 2026-07-17 00:58:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*72886a24-81b7-404a-b49c-e6f8be8cfca3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fae40709-8e1d-4bf0-9dc4-d1ce4f8c7828,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-workflow9gldg/series-workflow9gldg-build-action-3519086028/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-workflow9gldg/series-workflow9gldg-build-action-671680805/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-workflow9gldg/series-workflow9gldg-convert-artifact-4139863454/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,}