Name: series-workflow62rsm Phase: Succeeded StartedAt: 2026-09-09 00:04:41 +0000 UTC FinishedAt: 2026-09-09 02:05:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62rsm[0] Phase: Succeeded StartedAt: 2026-09-09 00:04:41 +0000 UTC FinishedAt: 2026-09-09 00:30:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62rsm[0].run-triage Phase: Succeeded StartedAt: 2026-09-09 00:04:41 +0000 UTC FinishedAt: 2026-09-09 00:30:07 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "f6d61fe4c19cf448e5cba6d8767b4e6966f58606", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PHYLIB", "DP83867_PHY" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "f6d61fe4c19cf448e5cba6d8767b4e6966f58606", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PHYLIB", "DP83867_PHY" ], "series_id": "8f1abd0d-bc91-4703-baa5-7eef20f825ea" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "dp83867_led_brightness_set", "dp83867_led_hw_control_set", "dp83867_led_polarity_set", "dp83867_config_init", "dp83867_probe" ], "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+CgkJCTx0ZD4yMDI2LzA5LzA5IDAwOjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BIWUxJQiYjMzQ7LAogICAgJiMzNDtEUDgzODY3X1BIWSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RwODM4NjdfbGVkX2JyaWdodG5lc3Nfc2V0JiMzNDssCiAgICAmIzM0O2RwODM4NjdfbGVkX2h3X2NvbnRyb2xfc2V0JiMzNDssCiAgICAmIzM0O2RwODM4NjdfbGVkX3BvbGFyaXR5X3NldCYjMzQ7LAogICAgJiMzNDtkcDgzODY3X2NvbmZpZ19pbml0JiMzNDssCiAgICAmIzM0O2RwODM4NjdfcHJvYmUmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgc2hhZG93IG1lY2hhbmlzbSBhbmQgbXV0ZXggbG9ja2luZyBmb3IgTEVEIHJlZ2lzdGVycyBpbiB0aGUgRFA4Mzg2NyBQSFkgZHJpdmVyIChkcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jKS4gVGhlIHByaXZhdGUgc3RydWN0dXJlIGBzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlYCBpcyBhbGxvY2F0ZWQgdXNpbmcgYGRldm1fa3phbGxvYygpYCwgZW5zdXJpbmcgdGhhdCBhbGwgbmV3bHkgaW50cm9kdWNlZCBmaWVsZHMgKGBsZWRfbG9ja2AsIGBsZWRjcjFgLCBgbGVkY3IxX21hc2tgLCBgbGVkY3IyYCwgYGxlZGNyMl9tYXNrYCkgYXJlIGZ1bGx5IHplcm8taW5pdGlhbGl6ZWQuIEFsbCBsb2NhbCB2YXJpYWJsZXMgYXJlIHByb3Blcmx5IGluaXRpYWxpemVkIGJlZm9yZSB1c2UuIE5vIGRhdGEgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgaXMgYWNjZXNzZWQgb3IgYnJhbmNoZWQgdXBvbiwgYW5kIGFueSBwb3RlbnRpYWwgbG9ja2luZyBvciByYWNlIGJ1Z3MgYXJlIGhhbmRsZWQgYnkgc3RhbmRhcmQgc2FuaXRpemVycyBzdWNoIGFzIExPQ0tERVAgYW5kIEtBU0FOLiBUaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFRleGFzIEluc3RydW1lbnRzIERQODM4NjcgUEhZIGRyaXZlciAoZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYykgYnkgaW50cm9kdWNpbmcgYSBuZXcgbXV0ZXggKGxlZF9sb2NrKSBhbmQgc2hhZG93IHJlZ2lzdGVycyB0byBwcm9wZXJseSByZXN0b3JlIExFRCBjb25maWd1cmF0aW9ucyBhY3Jvc3Mgc29mdCByZXNldHMsIGFsb25nIHdpdGggcnVudGltZSBhc3NlcnRpb25zIChXQVJOX09OX09OQ0UpLiBUaGUgZHJpdmVyIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBFdGhlcm5ldCBhZGFwdGVycyBleHBvc2luZyBNRElPIGJ1c2VzLiBGdXp6aW5nIGlzIHdhcnJhbnRlZCB0byB2ZXJpZnkgY29uY3VycmVuY3kgYW5kIHByb3BlciBzZXJpYWxpemF0aW9uIGJldHdlZW4gY29uZmlnX2luaXQgc29mdC1yZXNldCByZXN0b3JlIGFuZCBMRUQgY29udHJvbCBvcGVyYXRpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDAwOjI4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNDRjMTY1Y2FmMGNjOTAyNmI5MDcwMWRiZTIxYzRlNzcwODM2YWUyNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDkgMDA6Mjg6NTEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYyBiL2RyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmNcbmluZGV4IDg4MjU1ZTkyYjRjZGIuLmVlYjRjZDY0OGY3NDMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jXG5AQCAtOCw2ICYjNDM7OCw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9taWkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L211dGV4LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGh5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9kZWxheS5oXHUwMDNlXG5AQCAtMTk2LDYgJiM0MzsxOTcsMTYgQEAgc3RydWN0IGRwODM4NjdfcHJpdmF0ZSB7XG4gXHRib29sIHNldF9jbGtfb3V0cHV0O1xuIFx0dTMyIGNsa19vdXRwdXRfc2VsO1xuIFx0Ym9vbCBzZ21paV9yZWZfY2xrX2VuO1xuJiM0MztcbiYjNDM7XHQvKiBTaGFkb3cgb2YgdGhlIExFRCByZWdpc3RlcnMsIHJlcGxheWVkIGFmdGVyIGEgc29mdCByZXNldC4gbGVkX2xvY2tcbiYjNDM7XHQgKiBzZXJpYWxpemVzIHRoZSBzaGFkb3cgYW5kIGl0cyByZXBsYXkgYWdhaW5zdCB0aGUgTEVEIGNhbGxiYWNrcyxcbiYjNDM7XHQgKiBiZWNhdXNlIGRwODM4NjdfY29uZmlnX2luaXQoKSBkb2VzIHRoZSByZXBsYXkgb2ZmIHBoeWRldi1cdTAwM2Vsb2NrLlxuJiM0MztcdCAqL1xuJiM0MztcdHN0cnVjdCBtdXRleCBsZWRfbG9jaztcbiYjNDM7XHR1MTYgbGVkY3IxO1xuJiM0MztcdHUxNiBsZWRjcjFfbWFzaztcbiYjNDM7XHR1MTYgbGVkY3IyO1xuJiM0MztcdHUxNiBsZWRjcjJfbWFzaztcbiB9O1xuIFxuIHN0YXRpYyBpbnQgZHA4Mzg2N19hY2tfaW50ZXJydXB0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5AQCAtNzIyLDYgJiM0Mzs3MzMsNyBAQCBzdGF0aWMgaW50IGRwODM4NjdfcmVzdW1lKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gc3RhdGljIGludCBkcDgzODY3X3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4ge1xuIFx0c3RydWN0IGRwODM4NjdfcHJpdmF0ZSAqZHA4Mzg2NztcbiYjNDM7XHRpbnQgcmV0O1xuIFxuIFx0ZHA4Mzg2NyA9IGRldm1fa3phbGxvYyhcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYsIHNpemVvZigqZHA4Mzg2NyksXG4gXHRcdFx0ICAgICAgIEdGUF9LRVJORUwpO1xuQEAgLTczMCw5ICYjNDM7NzQyLDYwIEBAIHN0YXRpYyBpbnQgZHA4Mzg2N19wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFxuIFx0cGh5ZGV2LVx1MDAzZXByaXYgPSBkcDgzODY3O1xuIFxuJiM0MztcdHJldCA9IGRldm1fbXV0ZXhfaW5pdChcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYsIFx1MDAyNmRwODM4NjctXHUwMDNlbGVkX2xvY2spO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiBcdHJldHVybiBkcDgzODY3X29mX2luaXQocGh5ZGV2KTtcbiB9XG4gXG4mIzQzOy8qIFVwZGF0ZSBhbiBMRUQgcmVnaXN0ZXIgYW5kIG1pcnJvciB0aGUgY2hhbmdlIGludG8gdGhlIHNoYWRvdywgc28gdGhhdFxuJiM0MzsgKiBkcDgzODY3X2NvbmZpZ19pbml0KCkgY2FuIHJlcGxheSBpdCBhZnRlciBhIHNvZnQgcmVzZXQuIENhbGxlciBtdXN0IGhvbGRcbiYjNDM7ICogZHA4Mzg2Ny1cdTAwM2VsZWRfbG9jay5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyBpbnQgX19kcDgzODY3X2xlZF9tb2RpZnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTMyIHJlZyxcbiYjNDM7XHRcdFx0XHR1MTYgbWFzaywgdTE2IHZhbClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkcDgzODY3X3ByaXZhdGUgKmRwODM4NjcgPSBwaHlkZXYtXHUwMDNlcHJpdjtcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRyZXQgPSBwaHlfbW9kaWZ5KHBoeWRldiwgcmVnLCBtYXNrLCB2YWwpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHRpZiAocmVnID09IERQODM4NjdfTEVEQ1IxKSB7XG4mIzQzO1x0XHRkcDgzODY3LVx1MDAzZWxlZGNyMSA9IChkcDgzODY3LVx1MDAzZWxlZGNyMSBcdTAwMjYgfm1hc2spIHwgKHZhbCBcdTAwMjYgbWFzayk7XG4mIzQzO1x0XHRkcDgzODY3LVx1MDAzZWxlZGNyMV9tYXNrIHw9IG1hc2s7XG4mIzQzO1x0fSBlbHNlIGlmIChyZWcgPT0gRFA4Mzg2N19MRURDUjIpIHtcbiYjNDM7XHRcdGRwODM4NjctXHUwMDNlbGVkY3IyID0gKGRwODM4NjctXHUwMDNlbGVkY3IyIFx1MDAyNiB+bWFzaykgfCAodmFsIFx1MDAyNiBtYXNrKTtcbiYjNDM7XHRcdGRwODM4NjctXHUwMDNlbGVkY3IyX21hc2sgfD0gbWFzaztcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0V0FSTl9PTl9PTkNFKDEpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qIFJlc3RvcmUgdGhlIExFRCByZWdpc3RlcnMgdGhlIGRyaXZlciBoYXMgcHJvZ3JhbW1lZCwgY2xlYXJlZCBieSB0aGUgc29mdFxuJiM0MzsgKiByZXNldCBpbiBkcDgzODY3X3BoeV9yZXNldCgpLlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIGludCBkcDgzODY3X2xlZF9yZXN0b3JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlICpkcDgzODY3ID0gcGh5ZGV2LVx1MDAzZXByaXY7XG4mIzQzO1x0aW50IHJldCA9IDA7XG4mIzQzO1xuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2ZHA4Mzg2Ny1cdTAwM2VsZWRfbG9jayk7XG4mIzQzO1x0aWYgKGRwODM4NjctXHUwMDNlbGVkY3IxX21hc2spXG4mIzQzO1x0XHRyZXQgPSBwaHlfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjEsXG4mIzQzO1x0XHRcdFx0IGRwODM4NjctXHUwMDNlbGVkY3IxX21hc2ssIGRwODM4NjctXHUwMDNlbGVkY3IxKTtcbiYjNDM7XHRpZiAoIXJldCBcdTAwMjZcdTAwMjYgZHA4Mzg2Ny1cdTAwM2VsZWRjcjJfbWFzaylcbiYjNDM7XHRcdHJldCA9IHBoeV9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMixcbiYjNDM7XHRcdFx0XHQgZHA4Mzg2Ny1cdTAwM2VsZWRjcjJfbWFzaywgZHA4Mzg2Ny1cdTAwM2VsZWRjcjIpO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZkcDgzODY3LVx1MDAzZWxlZF9sb2NrKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IGRwODM4NjdfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiB7XG4gXHRzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlICpkcDgzODY3ID0gcGh5ZGV2LVx1MDAzZXByaXY7XG5AQCAtODk2LDYgJiM0Mzs5NTksMTAgQEAgc3RhdGljIGludCBkcDgzODY3X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRcdFx0ICAgICAgIG1hc2ssIHZhbCk7XG4gXHR9XG4gXG4mIzQzO1x0cmV0ID0gZHA4Mzg2N19sZWRfcmVzdG9yZShwaHlkZXYpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRwaHlkZXZfd2FybihwaHlkZXYsIFwmIzM0O2ZhaWxlZCB0byByZXN0b3JlIExFRCBjb25maWc6ICVkXFxuXCYjMzQ7LCByZXQpO1xuJiM0MztcbiBcdHJldHVybiAwO1xuIH1cbiBcbkBAIC0xMDA0LDcgJiM0MzsxMDcxLDkgQEAgc3RhdGljIGludFxuIGRwODM4NjdfbGVkX2JyaWdodG5lc3Nfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4gXHRcdFx0ICAgdTggaW5kZXgsIGVudW0gbGVkX2JyaWdodG5lc3MgYnJpZ2h0bmVzcylcbiB7XG4tXHR1MzIgdmFsO1xuJiM0MztcdHN0cnVjdCBkcDgzODY3X3ByaXZhdGUgKmRwODM4NjcgPSBwaHlkZXYtXHUwMDNlcHJpdjtcbiYjNDM7XHR1MTYgdmFsO1xuJiM0MztcdGludCByZXQ7XG4gXG4gXHRpZiAoaW5kZXggXHUwMDNlPSBEUDgzODY3X0xFRF9DT1VOVClcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG5AQCAtMTAxNSwxMCAmIzQzOzEwODQsMTMgQEAgZHA4Mzg2N19sZWRfYnJpZ2h0bmVzc19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbiBcdGlmIChicmlnaHRuZXNzKVxuIFx0XHR2YWwgfD0gRFA4Mzg2N19MRURfRFJWX1ZBTChpbmRleCk7XG4gXG4tXHRyZXR1cm4gcGh5X21vZGlmeShwaHlkZXYsIERQODM4NjdfTEVEQ1IyLFxuLVx0XHRcdCAgRFA4Mzg2N19MRURfRFJWX1ZBTChpbmRleCkgfFxuLVx0XHRcdCAgRFA4Mzg2N19MRURfRFJWX0VOKGluZGV4KSxcbi1cdFx0XHQgIHZhbCk7XG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZkcDgzODY3LVx1MDAzZWxlZF9sb2NrKTtcbiYjNDM7XHRyZXQgPSBfX2RwODM4NjdfbGVkX21vZGlmeShwaHlkZXYsIERQODM4NjdfTEVEQ1IyLFxuJiM0MztcdFx0XHRcdCAgIERQODM4NjdfTEVEX0RSVl9WQUwoaW5kZXgpIHxcbiYjNDM7XHRcdFx0XHQgICBEUDgzODY3X0xFRF9EUlZfRU4oaW5kZXgpLCB2YWwpO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZkcDgzODY3LVx1MDAzZWxlZF9sb2NrKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiB9XG4gXG4gc3RhdGljIGludCBkcDgzODY3X2xlZF9tb2RlKHU4IGluZGV4LCB1bnNpZ25lZCBsb25nIHJ1bGVzKVxuQEAgLTEwNjksMTggJiM0MzsxMTQxLDI0IEBAIHN0YXRpYyBpbnQgZHA4Mzg2N19sZWRfaHdfaXNfc3VwcG9ydGVkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuIHN0YXRpYyBpbnQgZHA4Mzg2N19sZWRfaHdfY29udHJvbF9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXG4gXHRcdFx0XHQgICAgICB1bnNpZ25lZCBsb25nIHJ1bGVzKVxuIHtcbiYjNDM7XHRzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlICpkcDgzODY3ID0gcGh5ZGV2LVx1MDAzZXByaXY7XG4gXHRpbnQgbW9kZSwgcmV0O1xuIFxuIFx0bW9kZSA9IGRwODM4NjdfbGVkX21vZGUoaW5kZXgsIHJ1bGVzKTtcbiBcdGlmIChtb2RlIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gbW9kZTtcbiBcbi1cdHJldCA9IHBoeV9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMSwgRFA4Mzg2N19MRURfRk5fTUFTSyhpbmRleCksXG4tXHRcdFx0IERQODM4NjdfTEVEX0ZOKGluZGV4LCBtb2RlKSk7XG4tXHRpZiAocmV0KVxuLVx0XHRyZXR1cm4gcmV0O1xuLVxuLVx0cmV0dXJuIHBoeV9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMiwgRFA4Mzg2N19MRURfRFJWX0VOKGluZGV4KSwgMCk7XG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZkcDgzODY3LVx1MDAzZWxlZF9sb2NrKTtcbiYjNDM7XHRyZXQgPSBfX2RwODM4NjdfbGVkX21vZGlmeShwaHlkZXYsIERQODM4NjdfTEVEQ1IxLFxuJiM0MztcdFx0XHRcdCAgIERQODM4NjdfTEVEX0ZOX01BU0soaW5kZXgpLFxuJiM0MztcdFx0XHRcdCAgIERQODM4NjdfTEVEX0ZOKGluZGV4LCBtb2RlKSk7XG4mIzQzO1x0aWYgKCFyZXQpXG4mIzQzO1x0XHRyZXQgPSBfX2RwODM4NjdfbGVkX21vZGlmeShwaHlkZXYsIERQODM4NjdfTEVEQ1IyLFxuJiM0MztcdFx0XHRcdFx0ICAgRFA4Mzg2N19MRURfRFJWX0VOKGluZGV4KSB8XG4mIzQzO1x0XHRcdFx0XHQgICBEUDgzODY3X0xFRF9EUlZfVkFMKGluZGV4KSwgMCk7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmRwODM4NjctXHUwMDNlbGVkX2xvY2spO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gcmV0O1xuIH1cbiBcbiBzdGF0aWMgaW50IGRwODM4NjdfbGVkX2h3X2NvbnRyb2xfZ2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuQEAgLTExNDEsOSAmIzQzOzEyMTksMTEgQEAgc3RhdGljIGludCBkcDgzODY3X2xlZF9od19jb250cm9sX2dldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcbiBzdGF0aWMgaW50IGRwODM4NjdfbGVkX3BvbGFyaXR5X3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgaW5kZXgsXG4gXHRcdFx0XHQgICAgdW5zaWduZWQgbG9uZyBtb2RlcylcbiB7XG4mIzQzO1x0c3RydWN0IGRwODM4NjdfcHJpdmF0ZSAqZHA4Mzg2NyA9IHBoeWRldi1cdTAwM2Vwcml2O1xuIFx0LyogRGVmYXVsdCBhY3RpdmUgaGlnaCAqL1xuIFx0dTE2IHBvbGFyaXR5ID0gRFA4Mzg2N19MRURfUE9MQVJJVFkoaW5kZXgpO1xuIFx0dTMyIG1vZGU7XG4mIzQzO1x0aW50IHJldDtcbiBcbiBcdGZvcl9lYWNoX3NldF9iaXQobW9kZSwgXHUwMDI2bW9kZXMsIF9fUEhZX0xFRF9NT0RFU19OVU0pIHtcbiBcdFx0c3dpdGNoIChtb2RlKSB7XG5AQCAtMTE1NCw4ICYjNDM7MTIzNCwxMyBAQCBzdGF0aWMgaW50IGRwODM4NjdfbGVkX3BvbGFyaXR5X3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgaW5kZXgsXG4gXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRcdH1cbiBcdH1cbi1cdHJldHVybiBwaHlfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjIsXG4tXHRcdFx0ICBEUDgzODY3X0xFRF9QT0xBUklUWShpbmRleCksIHBvbGFyaXR5KTtcbiYjNDM7XG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZkcDgzODY3LVx1MDAzZWxlZF9sb2NrKTtcbiYjNDM7XHRyZXQgPSBfX2RwODM4NjdfbGVkX21vZGlmeShwaHlkZXYsIERQODM4NjdfTEVEQ1IyLFxuJiM0MztcdFx0XHRcdCAgIERQODM4NjdfTEVEX1BPTEFSSVRZKGluZGV4KSwgcG9sYXJpdHkpO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZkcDgzODY3LVx1MDAzZWxlZF9sb2NrKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiB9XG4gXG4gc3RhdGljIHVuc2lnbmVkIGludCBkcDgzODY3X2luYmFuZF9jYXBzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMDA6Mjg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UEhZTElCJiMzNDssCiAgICAmIzM0O0RQODM4NjdfUEhZJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZHA4Mzg2N19sZWRfYnJpZ2h0bmVzc19zZXQmIzM0OywKICAgICYjMzQ7ZHA4Mzg2N19sZWRfaHdfY29udHJvbF9zZXQmIzM0OywKICAgICYjMzQ7ZHA4Mzg2N19sZWRfcG9sYXJpdHlfc2V0JiMzNDssCiAgICAmIzM0O2RwODM4NjdfY29uZmlnX2luaXQmIzM0OywKICAgICYjMzQ7ZHA4Mzg2N19wcm9iZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgVGV4YXMgSW5zdHJ1bWVudHMgRFA4Mzg2NyBQSFkgZHJpdmVyIChkcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jKSBieSBpbnRyb2R1Y2luZyBhIG5ldyBtdXRleCAobGVkX2xvY2spIGFuZCBzaGFkb3cgcmVnaXN0ZXJzIHRvIHByb3Blcmx5IHJlc3RvcmUgTEVEIGNvbmZpZ3VyYXRpb25zIGFjcm9zcyBzb2Z0IHJlc2V0cywgYWxvbmcgd2l0aCBydW50aW1lIGFzc2VydGlvbnMgKFdBUk5fT05fT05DRSkuIFRoZSBkcml2ZXIgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIEV0aGVybmV0IGFkYXB0ZXJzIGV4cG9zaW5nIE1ESU8gYnVzZXMuIEZ1enppbmcgaXMgd2FycmFudGVkIHRvIHZlcmlmeSBjb25jdXJyZW5jeSBhbmQgcHJvcGVyIHNlcmlhbGl6YXRpb24gYmV0d2VlbiBjb25maWdfaW5pdCBzb2Z0LXJlc2V0IHJlc3RvcmUgYW5kIExFRCBjb250cm9sIG9wZXJhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0NGMxNjVjYWYwY2M5MDI2YjkwNzAxZGJlMjFjNGU3NzA4MzZhZTI2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBTZXAgOSAwMDoyODo1MSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMgYi9kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jCmluZGV4IDg4MjU1ZTkyYjRjZGIuLmVlYjRjZDY0OGY3NDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYwpAQCAtOCw2ICYjNDM7OCw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgva2VybmVsLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbWlpLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbW9kdWxlLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L211dGV4LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvb2YuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9waHkuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9kZWxheS5oJmd0OwpAQCAtMTk2LDYgJiM0MzsxOTcsMTYgQEAgc3RydWN0IGRwODM4NjdfcHJpdmF0ZSB7CiAJYm9vbCBzZXRfY2xrX291dHB1dDsKIAl1MzIgY2xrX291dHB1dF9zZWw7CiAJYm9vbCBzZ21paV9yZWZfY2xrX2VuOwomIzQzOwomIzQzOwkvKiBTaGFkb3cgb2YgdGhlIExFRCByZWdpc3RlcnMsIHJlcGxheWVkIGFmdGVyIGEgc29mdCByZXNldC4gbGVkX2xvY2sKJiM0MzsJICogc2VyaWFsaXplcyB0aGUgc2hhZG93IGFuZCBpdHMgcmVwbGF5IGFnYWluc3QgdGhlIExFRCBjYWxsYmFja3MsCiYjNDM7CSAqIGJlY2F1c2UgZHA4Mzg2N19jb25maWdfaW5pdCgpIGRvZXMgdGhlIHJlcGxheSBvZmYgcGh5ZGV2LSZndDtsb2NrLgomIzQzOwkgKi8KJiM0MzsJc3RydWN0IG11dGV4IGxlZF9sb2NrOwomIzQzOwl1MTYgbGVkY3IxOwomIzQzOwl1MTYgbGVkY3IxX21hc2s7CiYjNDM7CXUxNiBsZWRjcjI7CiYjNDM7CXUxNiBsZWRjcjJfbWFzazsKIH07CiAKIHN0YXRpYyBpbnQgZHA4Mzg2N19hY2tfaW50ZXJydXB0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCkBAIC03MjIsNiAmIzQzOzczMyw3IEBAIHN0YXRpYyBpbnQgZHA4Mzg2N19yZXN1bWUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIHN0YXRpYyBpbnQgZHA4Mzg2N19wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogewogCXN0cnVjdCBkcDgzODY3X3ByaXZhdGUgKmRwODM4Njc7CiYjNDM7CWludCByZXQ7CiAKIAlkcDgzODY3ID0gZGV2bV9remFsbG9jKCZhbXA7cGh5ZGV2LSZndDttZGlvLmRldiwgc2l6ZW9mKCpkcDgzODY3KSwKIAkJCSAgICAgICBHRlBfS0VSTkVMKTsKQEAgLTczMCw5ICYjNDM7NzQyLDYwIEBAIHN0YXRpYyBpbnQgZHA4Mzg2N19wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogCiAJcGh5ZGV2LSZndDtwcml2ID0gZHA4Mzg2NzsKIAomIzQzOwlyZXQgPSBkZXZtX211dGV4X2luaXQoJmFtcDtwaHlkZXYtJmd0O21kaW8uZGV2LCAmYW1wO2RwODM4NjctJmd0O2xlZF9sb2NrKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiAJcmV0dXJuIGRwODM4Njdfb2ZfaW5pdChwaHlkZXYpOwogfQogCiYjNDM7LyogVXBkYXRlIGFuIExFRCByZWdpc3RlciBhbmQgbWlycm9yIHRoZSBjaGFuZ2UgaW50byB0aGUgc2hhZG93LCBzbyB0aGF0CiYjNDM7ICogZHA4Mzg2N19jb25maWdfaW5pdCgpIGNhbiByZXBsYXkgaXQgYWZ0ZXIgYSBzb2Z0IHJlc2V0LiBDYWxsZXIgbXVzdCBob2xkCiYjNDM7ICogZHA4Mzg2Ny0mZ3Q7bGVkX2xvY2suCiYjNDM7ICovCiYjNDM7c3RhdGljIGludCBfX2RwODM4NjdfbGVkX21vZGlmeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MzIgcmVnLAomIzQzOwkJCQl1MTYgbWFzaywgdTE2IHZhbCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkcDgzODY3X3ByaXZhdGUgKmRwODM4NjcgPSBwaHlkZXYtJmd0O3ByaXY7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CXJldCA9IHBoeV9tb2RpZnkocGh5ZGV2LCByZWcsIG1hc2ssIHZhbCk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwlpZiAocmVnID09IERQODM4NjdfTEVEQ1IxKSB7CiYjNDM7CQlkcDgzODY3LSZndDtsZWRjcjEgPSAoZHA4Mzg2Ny0mZ3Q7bGVkY3IxICZhbXA7IH5tYXNrKSB8ICh2YWwgJmFtcDsgbWFzayk7CiYjNDM7CQlkcDgzODY3LSZndDtsZWRjcjFfbWFzayB8PSBtYXNrOwomIzQzOwl9IGVsc2UgaWYgKHJlZyA9PSBEUDgzODY3X0xFRENSMikgewomIzQzOwkJZHA4Mzg2Ny0mZ3Q7bGVkY3IyID0gKGRwODM4NjctJmd0O2xlZGNyMiAmYW1wOyB+bWFzaykgfCAodmFsICZhbXA7IG1hc2spOwomIzQzOwkJZHA4Mzg2Ny0mZ3Q7bGVkY3IyX21hc2sgfD0gbWFzazsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCVdBUk5fT05fT05DRSgxKTsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7LyogUmVzdG9yZSB0aGUgTEVEIHJlZ2lzdGVycyB0aGUgZHJpdmVyIGhhcyBwcm9ncmFtbWVkLCBjbGVhcmVkIGJ5IHRoZSBzb2Z0CiYjNDM7ICogcmVzZXQgaW4gZHA4Mzg2N19waHlfcmVzZXQoKS4KJiM0MzsgKi8KJiM0MztzdGF0aWMgaW50IGRwODM4NjdfbGVkX3Jlc3RvcmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkcDgzODY3X3ByaXZhdGUgKmRwODM4NjcgPSBwaHlkZXYtJmd0O3ByaXY7CiYjNDM7CWludCByZXQgPSAwOwomIzQzOwomIzQzOwltdXRleF9sb2NrKCZhbXA7ZHA4Mzg2Ny0mZ3Q7bGVkX2xvY2spOwomIzQzOwlpZiAoZHA4Mzg2Ny0mZ3Q7bGVkY3IxX21hc2spCiYjNDM7CQlyZXQgPSBwaHlfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjEsCiYjNDM7CQkJCSBkcDgzODY3LSZndDtsZWRjcjFfbWFzaywgZHA4Mzg2Ny0mZ3Q7bGVkY3IxKTsKJiM0MzsJaWYgKCFyZXQgJmFtcDsmYW1wOyBkcDgzODY3LSZndDtsZWRjcjJfbWFzaykKJiM0MzsJCXJldCA9IHBoeV9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMiwKJiM0MzsJCQkJIGRwODM4NjctJmd0O2xlZGNyMl9tYXNrLCBkcDgzODY3LSZndDtsZWRjcjIpOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtkcDgzODY3LSZndDtsZWRfbG9jayk7CiYjNDM7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBkcDgzODY3X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiB7CiAJc3RydWN0IGRwODM4NjdfcHJpdmF0ZSAqZHA4Mzg2NyA9IHBoeWRldi0mZ3Q7cHJpdjsKQEAgLTg5Niw2ICYjNDM7OTU5LDEwIEBAIHN0YXRpYyBpbnQgZHA4Mzg2N19jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogCQkJICAgICAgIG1hc2ssIHZhbCk7CiAJfQogCiYjNDM7CXJldCA9IGRwODM4NjdfbGVkX3Jlc3RvcmUocGh5ZGV2KTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXBoeWRldl93YXJuKHBoeWRldiwgJiMzNDtmYWlsZWQgdG8gcmVzdG9yZSBMRUQgY29uZmlnOiAlZFxuJiMzNDssIHJldCk7CiYjNDM7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTEwMDQsNyAmIzQzOzEwNzEsOSBAQCBzdGF0aWMgaW50CiBkcDgzODY3X2xlZF9icmlnaHRuZXNzX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LAogCQkJICAgdTggaW5kZXgsIGVudW0gbGVkX2JyaWdodG5lc3MgYnJpZ2h0bmVzcykKIHsKLQl1MzIgdmFsOwomIzQzOwlzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlICpkcDgzODY3ID0gcGh5ZGV2LSZndDtwcml2OwomIzQzOwl1MTYgdmFsOwomIzQzOwlpbnQgcmV0OwogCiAJaWYgKGluZGV4ICZndDs9IERQODM4NjdfTEVEX0NPVU5UKQogCQlyZXR1cm4gLUVJTlZBTDsKQEAgLTEwMTUsMTAgJiM0MzsxMDg0LDEzIEBAIGRwODM4NjdfbGVkX2JyaWdodG5lc3Nfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsCiAJaWYgKGJyaWdodG5lc3MpCiAJCXZhbCB8PSBEUDgzODY3X0xFRF9EUlZfVkFMKGluZGV4KTsKIAotCXJldHVybiBwaHlfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjIsCi0JCQkgIERQODM4NjdfTEVEX0RSVl9WQUwoaW5kZXgpIHwKLQkJCSAgRFA4Mzg2N19MRURfRFJWX0VOKGluZGV4KSwKLQkJCSAgdmFsKTsKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO2RwODM4NjctJmd0O2xlZF9sb2NrKTsKJiM0MzsJcmV0ID0gX19kcDgzODY3X2xlZF9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMiwKJiM0MzsJCQkJICAgRFA4Mzg2N19MRURfRFJWX1ZBTChpbmRleCkgfAomIzQzOwkJCQkgICBEUDgzODY3X0xFRF9EUlZfRU4oaW5kZXgpLCB2YWwpOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtkcDgzODY3LSZndDtsZWRfbG9jayk7CiYjNDM7CiYjNDM7CXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBpbnQgZHA4Mzg2N19sZWRfbW9kZSh1OCBpbmRleCwgdW5zaWduZWQgbG9uZyBydWxlcykKQEAgLTEwNjksMTggJiM0MzsxMTQxLDI0IEBAIHN0YXRpYyBpbnQgZHA4Mzg2N19sZWRfaHdfaXNfc3VwcG9ydGVkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LAogc3RhdGljIGludCBkcDgzODY3X2xlZF9od19jb250cm9sX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCwKIAkJCQkgICAgICB1bnNpZ25lZCBsb25nIHJ1bGVzKQogewomIzQzOwlzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlICpkcDgzODY3ID0gcGh5ZGV2LSZndDtwcml2OwogCWludCBtb2RlLCByZXQ7CiAKIAltb2RlID0gZHA4Mzg2N19sZWRfbW9kZShpbmRleCwgcnVsZXMpOwogCWlmIChtb2RlICZsdDsgMCkKIAkJcmV0dXJuIG1vZGU7CiAKLQlyZXQgPSBwaHlfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjEsIERQODM4NjdfTEVEX0ZOX01BU0soaW5kZXgpLAotCQkJIERQODM4NjdfTEVEX0ZOKGluZGV4LCBtb2RlKSk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQotCXJldHVybiBwaHlfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjIsIERQODM4NjdfTEVEX0RSVl9FTihpbmRleCksIDApOwomIzQzOwltdXRleF9sb2NrKCZhbXA7ZHA4Mzg2Ny0mZ3Q7bGVkX2xvY2spOwomIzQzOwlyZXQgPSBfX2RwODM4NjdfbGVkX21vZGlmeShwaHlkZXYsIERQODM4NjdfTEVEQ1IxLAomIzQzOwkJCQkgICBEUDgzODY3X0xFRF9GTl9NQVNLKGluZGV4KSwKJiM0MzsJCQkJICAgRFA4Mzg2N19MRURfRk4oaW5kZXgsIG1vZGUpKTsKJiM0MzsJaWYgKCFyZXQpCiYjNDM7CQlyZXQgPSBfX2RwODM4NjdfbGVkX21vZGlmeShwaHlkZXYsIERQODM4NjdfTEVEQ1IyLAomIzQzOwkJCQkJICAgRFA4Mzg2N19MRURfRFJWX0VOKGluZGV4KSB8CiYjNDM7CQkJCQkgICBEUDgzODY3X0xFRF9EUlZfVkFMKGluZGV4KSwgMCk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2RwODM4NjctJmd0O2xlZF9sb2NrKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGludCBkcDgzODY3X2xlZF9od19jb250cm9sX2dldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCwKQEAgLTExNDEsOSAmIzQzOzEyMTksMTEgQEAgc3RhdGljIGludCBkcDgzODY3X2xlZF9od19jb250cm9sX2dldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCwKIHN0YXRpYyBpbnQgZHA4Mzg2N19sZWRfcG9sYXJpdHlfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpbmRleCwKIAkJCQkgICAgdW5zaWduZWQgbG9uZyBtb2RlcykKIHsKJiM0MzsJc3RydWN0IGRwODM4NjdfcHJpdmF0ZSAqZHA4Mzg2NyA9IHBoeWRldi0mZ3Q7cHJpdjsKIAkvKiBEZWZhdWx0IGFjdGl2ZSBoaWdoICovCiAJdTE2IHBvbGFyaXR5ID0gRFA4Mzg2N19MRURfUE9MQVJJVFkoaW5kZXgpOwogCXUzMiBtb2RlOwomIzQzOwlpbnQgcmV0OwogCiAJZm9yX2VhY2hfc2V0X2JpdChtb2RlLCAmYW1wO21vZGVzLCBfX1BIWV9MRURfTU9ERVNfTlVNKSB7CiAJCXN3aXRjaCAobW9kZSkgewpAQCAtMTE1NCw4ICYjNDM7MTIzNCwxMyBAQCBzdGF0aWMgaW50IGRwODM4NjdfbGVkX3BvbGFyaXR5X3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgaW5kZXgsCiAJCQlyZXR1cm4gLUVJTlZBTDsKIAkJfQogCX0KLQlyZXR1cm4gcGh5X21vZGlmeShwaHlkZXYsIERQODM4NjdfTEVEQ1IyLAotCQkJICBEUDgzODY3X0xFRF9QT0xBUklUWShpbmRleCksIHBvbGFyaXR5KTsKJiM0MzsKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO2RwODM4NjctJmd0O2xlZF9sb2NrKTsKJiM0MzsJcmV0ID0gX19kcDgzODY3X2xlZF9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMiwKJiM0MzsJCQkJICAgRFA4Mzg2N19MRURfUE9MQVJJVFkoaW5kZXgpLCBwb2xhcml0eSk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2RwODM4NjctJmd0O2xlZF9sb2NrKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIHVuc2lnbmVkIGludCBkcDgzODY3X2luYmFuZF9jYXBzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDAwOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0MzYKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA5OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBOZXR3b3JrIFBIWSBEcml2ZXIgQ2hhbmdlKioKCk9rYXksIHNvIHRoZSBwYXRjaCBJJiMzOTttIGxvb2tpbmcgYXQgc3BlY2lmaWNhbGx5IHRvdWNoZXMgYGRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmNgLiBNeSBpbml0aWFsIHJlYWN0aW9uIGlzIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0IHRoaXMgZHJpdmVyICppcyouIEFoLCBpdCYjMzk7cyB0aGUgVGV4YXMgSW5zdHJ1bWVudHMgRFA4Mzg2NyBHaWdhYml0IEV0aGVybmV0IFBIWSBkcml2ZXIuIFJpZ2h0LCBzbyB0aGUga2V5IHF1ZXN0aW9uIGhlcmUgaXMgd2hldGhlciBpdCYjMzk7cyBhbiBNRElPIFBIWSBkcml2ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCYjMzk7cyBpbnN0YW50aWF0ZWQgYW5kIHVzZWQuIENhbiBJIHRlc3QgdGhpcyB3aXRob3V0IHBoeXNpY2FsIGhhcmR3YXJlPyBEb2VzIGl0IGJlaGF2ZSB3ZWxsIHVuZGVyIHZpcnR1YWwgZW52aXJvbm1lbnRzLCB1c2luZyBzdGFuZGFyZCBRRU1VIHNldHVwLCBvciBkb2VzIGl0IGRlcGVuZCBvbiBhY3R1YWwgTURJTyBhY2Nlc3M/CgpUaW1lIHRvIGRpZyBpbnRvIHRoZSBkcml2ZXIgaXRzZWxmLiBJJiMzOTtsbCBwcm9iYWJseSBzdGFydCB3aXRoIGEgcXVpY2sgYGdyZXBgIHNlYXJjaCBmb3Iga2V5IHRlcm1zLCBidXQgdWx0aW1hdGVseSwgSSYjMzk7bGwgbmVlZCB0byByZWFkIHRoZSBjb2RlIGRpcmVjdGx5IHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlIHRvIGFzc2VzcyB0aGUgaW1wYWN0IG9mIHRoaXMgY2hhbmdlIHByb3Blcmx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDAwOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0RQODM4NjcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDgxNSBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc9NDQ2PWNvbmZpZyBEUDgzODQ4X1BIWVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTQ1MC1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjQ1MTpjb25maWcgRFA4Mzg2N19QSFlcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjQ1MjpcdHRyaXN0YXRlIFwmIzM0O1RleGFzIEluc3RydW1lbnRzIERQODM4NjcgR2lnYWJpdCBQSFlcJiMzNDtcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTQ1My1cdGhlbHBcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjQ1NDpcdCAgQ3VycmVudGx5IHN1cHBvcnRzIHRoZSBEUDgzODY3IFBIWS5cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTQ1NS1cbi0tXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU9NjA9b2JqLSQoQ09ORklHX0RQODM4NDhfUEhZKVx0JiM0Mzs9IGRwODM4NDgub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjYxOm9iai0kKENPTkZJR19EUDgzODY3X1BIWSlcdCYjNDM7PSBkcDgzODY3Lm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS02Mi1vYmotJChDT05GSUdfRFA4Mzg2OV9QSFkpXHQmIzQzOz0gZHA4Mzg2OS5vXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xLS8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI6LyogRHJpdmVyIGZvciB0aGUgVGV4YXMgSW5zdHJ1bWVudHMgRFA4Mzg2NyBQSFlcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMy0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjEtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjIyOiNkZWZpbmUgRFA4Mzg2N19QSFlfSURcdFx0MHgyMDAwYTIzMVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyMzojZGVmaW5lIERQODM4NjdfREVWQUREUlx0XHQweDFmXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI0LVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyNTojZGVmaW5lIE1JSV9EUDgzODY3X1BIWUNUUkxcdDB4MTBcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjY6I2RlZmluZSBNSUlfRFA4Mzg2N19QSFlTVFNcdDB4MTFcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6Mjc6I2RlZmluZSBNSUlfRFA4Mzg2N19NSUNSXHQweDEyXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI4OiNkZWZpbmUgTUlJX0RQODM4NjdfSVNSXHRcdDB4MTNcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6Mjk6I2RlZmluZSBEUDgzODY3X0NGRzJcdFx0MHgxNFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozMDojZGVmaW5lIERQODM4NjdfTEVEQ1IxXHRcdDB4MThcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MzE6I2RlZmluZSBEUDgzODY3X0xFRENSMlx0XHQweDE5XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjMyOiNkZWZpbmUgRFA4Mzg2N19DRkczXHRcdDB4MWVcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MzM6I2RlZmluZSBEUDgzODY3X0NUUkxcdFx0MHgxZlxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zNC1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMzUtLyogRXh0ZW5kZWQgUmVnaXN0ZXJzICovXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjM2OiNkZWZpbmUgRFA4Mzg2N19GTERfVEhSX0NGR1x0MHgwMDJlXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjM3OiNkZWZpbmUgRFA4Mzg2N19DRkc0XHRcdDB4MDAzMVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozODojZGVmaW5lIERQODM4NjdfQ0ZHNF9TR01JSV9BTkVHX01BU0sgKEJJVCg1KSB8IEJJVCg2KSlcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6Mzk6I2RlZmluZSBEUDgzODY3X0NGRzRfU0dNSUlfQU5FR19USU1FUl8xMU1TICAgKDMgXHUwMDNjXHUwMDNjIDUpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQwOiNkZWZpbmUgRFA4Mzg2N19DRkc0X1NHTUlJX0FORUdfVElNRVJfODAwVVMgICgyIFx1MDAzY1x1MDAzYyA1KVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0MTojZGVmaW5lIERQODM4NjdfQ0ZHNF9TR01JSV9BTkVHX1RJTUVSXzJVUyAgICAoMSBcdTAwM2NcdTAwM2MgNSlcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDI6I2RlZmluZSBEUDgzODY3X0NGRzRfU0dNSUlfQU5FR19USU1FUl8xNk1TICAgKDAgXHUwMDNjXHUwMDNjIDUpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQzLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0NDojZGVmaW5lIERQODM4NjdfUkdNSUlDVExcdDB4MDAzMlxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0NTojZGVmaW5lIERQODM4NjdfU1RSQVBfU1RTMVx0MHgwMDZFXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQ2OiNkZWZpbmUgRFA4Mzg2N19TVFJBUF9TVFMyXHQweDAwNmZcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDc6I2RlZmluZSBEUDgzODY3X1JHTUlJRENUTFx0MHgwMDg2XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQ4OiNkZWZpbmUgRFA4Mzg2N19EU1BfRkZFX0NGR1x0MHgwMTJjXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQ5OiNkZWZpbmUgRFA4Mzg2N19SWEZDRkdcdFx0MHgwMTM0XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjUwOiNkZWZpbmUgRFA4Mzg2N19SWEZQTUQxXHQweDAxMzZcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NTE6I2RlZmluZSBEUDgzODY3X1JYRlBNRDJcdDB4MDEzN1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo1MjojZGVmaW5lIERQODM4NjdfUlhGUE1EM1x0MHgwMTM4XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjUzOiNkZWZpbmUgRFA4Mzg2N19SWEZTT1AxXHQweDAxMzlcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NTQ6I2RlZmluZSBEUDgzODY3X1JYRlNPUDJcdDB4MDEzQVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo1NTojZGVmaW5lIERQODM4NjdfUlhGU09QM1x0MHgwMTNCXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjU2OiNkZWZpbmUgRFA4Mzg2N19JT19NVVhfQ0ZHXHQweDAxNzBcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NTc6I2RlZmluZSBEUDgzODY3X1NHTUlJQ1RMXHQweDAwRDNcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NTg6I2RlZmluZSBEUDgzODY3XzEwTV9TR01JSV9DRkcgICAweDAxNkZcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NTk6I2RlZmluZSBEUDgzODY3XzEwTV9TR01JSV9SQVRFX0FEQVBUX01BU0sgQklUKDcpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTYwLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo2MTojZGVmaW5lIERQODM4NjdfU1dfUkVTRVRcdEJJVCgxNSlcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NjI6I2RlZmluZSBEUDgzODY3X1NXX1JFU1RBUlRcdEJJVCgxNClcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNjMtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTY0LS8qIE1JQ1IgSW50ZXJydXB0IGJpdHMgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NjU6I2RlZmluZSBNSUlfRFA4Mzg2N19NSUNSX0FOX0VSUl9JTlRfRU5cdFx0QklUKDE1KVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo2NjojZGVmaW5lIE1JSV9EUDgzODY3X01JQ1JfU1BFRURfQ0hOR19JTlRfRU5cdEJJVCgxNClcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6Njc6I2RlZmluZSBNSUlfRFA4Mzg2N19NSUNSX0RVUF9NT0RFX0NITkdfSU5UX0VOXHRCSVQoMTMpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjY4OiNkZWZpbmUgTUlJX0RQODM4NjdfTUlDUl9QQUdFX1JYRF9JTlRfRU5cdEJJVCgxMilcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6Njk6I2RlZmluZSBNSUlfRFA4Mzg2N19NSUNSX0FVVE9ORUdfQ09NUF9JTlRfRU5cdEJJVCgxMSlcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NzA6I2RlZmluZSBNSUlfRFA4Mzg2N19NSUNSX0xJTktfU1RTX0NITkdfSU5UX0VOXHRCSVQoMTApXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjcxOiNkZWZpbmUgTUlJX0RQODM4NjdfTUlDUl9GQUxTRV9DQVJSSUVSX0lOVF9FTlx0QklUKDgpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjcyOiNkZWZpbmUgTUlJX0RQODM4NjdfTUlDUl9TTEVFUF9NT0RFX0NITkdfSU5UX0VOXHRCSVQoNClcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NzM6I2RlZmluZSBNSUlfRFA4Mzg2N19NSUNSX1dPTF9JTlRfRU5cdFx0QklUKDMpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjc0OiNkZWZpbmUgTUlJX0RQODM4NjdfTUlDUl9YR01JSV9FUlJfSU5UX0VOXHRCSVQoMilcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NzU6I2RlZmluZSBNSUlfRFA4Mzg2N19NSUNSX1BPTF9DSE5HX0lOVF9FTlx0QklUKDEpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjc2OiNkZWZpbmUgTUlJX0RQODM4NjdfTUlDUl9KQUJCRVJfSU5UX0VOXHRcdEJJVCgwKVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy03Ny1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNzgtLyogUkdNSUlDVEwgYml0cyAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo3OTojZGVmaW5lIERQODM4NjdfUkdNSUlfRU5cdFx0XHRCSVQoNylcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6ODA6I2RlZmluZSBEUDgzODY3X1JHTUlJX1RYX0NMS19ERUxBWV9FTlx0XHRCSVQoMSlcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6ODE6I2RlZmluZSBEUDgzODY3X1JHTUlJX1JYX0NMS19ERUxBWV9FTlx0XHRCSVQoMClcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtODItXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTgzLS8qIFNHTUlJQ1RMIGJpdHMgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6ODQ6I2RlZmluZSBEUDgzODY3X1NHTUlJX1RZUEVcdFx0QklUKDE0KVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy04NS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtODYtLyogUlhGQ0ZHIGJpdHMqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo4NzojZGVmaW5lIERQODM4NjdfV09MX01BR0lDX0VOXHRcdEJJVCgwKVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo4ODojZGVmaW5lIERQODM4NjdfV09MX0JDQVNUX0VOXHRcdEJJVCgyKVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo4OTojZGVmaW5lIERQODM4NjdfV09MX1VDQVNUX0VOXHRcdEJJVCg0KVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo5MDojZGVmaW5lIERQODM4NjdfV09MX1NFQ19FTlx0XHRCSVQoNSlcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6OTE6I2RlZmluZSBEUDgzODY3X1dPTF9FTkhfTUFDXHRcdEJJVCg3KVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy05Mi1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtOTMtLyogU1RSQVBfU1RTMSBiaXRzICovXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjk0OiNkZWZpbmUgRFA4Mzg2N19TVFJBUF9TVFMxX1JFU0VSVkVEXHRcdEJJVCgxMSlcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtOTUtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTk2LS8qIFNUUkFQX1NUUzIgYml0cyAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo5NzojZGVmaW5lIERQODM4NjdfU1RSQVBfU1RTMl9TVFJBUF9GTERcdFx0QklUKDEwKVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy05OC1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtOTktLyogUEhZIENUUkwgYml0cyAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMDA6I2RlZmluZSBEUDgzODY3X1BIWUNSX1RYX0ZJRk9fREVQVEhfU0hJRlRcdDE0XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjEwMTojZGVmaW5lIERQODM4NjdfUEhZQ1JfUlhfRklGT19ERVBUSF9TSElGVFx0MTJcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTAyOiNkZWZpbmUgRFA4Mzg2N19QSFlDUl9GSUZPX0RFUFRIX01BWFx0XHQweDAzXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjEwMzojZGVmaW5lIERQODM4NjdfUEhZQ1JfVFhfRklGT19ERVBUSF9NQVNLXHRHRU5NQVNLKDE1LCAxNClcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTA0OiNkZWZpbmUgRFA4Mzg2N19QSFlDUl9SWF9GSUZPX0RFUFRIX01BU0tcdEdFTk1BU0soMTMsIDEyKVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMDU6I2RlZmluZSBEUDgzODY3X1BIWUNSX1NHTUlJX0VOXHRcdFx0QklUKDExKVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMDY6I2RlZmluZSBEUDgzODY3X1BIWUNSX0ZPUkNFX0xJTktfR09PRFx0XHRCSVQoMTApXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjEwNzojZGVmaW5lIERQODM4NjdfUEhZQ1JfTURJWF9NQVNLXHRcdFx0R0VOTUFTSyg2LCA1KVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMDg6I2RlZmluZSBEUDgzODY3X1BIWUNSX01ESVhfTURJXHRcdFx0KDB4MCBcdTAwM2NcdTAwM2MgNSlcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTA5OiNkZWZpbmUgRFA4Mzg2N19QSFlDUl9NRElYX01ESVhcdFx0XHQoMHgxIFx1MDAzY1x1MDAzYyA1KVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMTA6I2RlZmluZSBEUDgzODY3X1BIWUNSX01ESVhfQVVUT1x0XHRcdCgweDMgXHUwMDNjXHUwMDNjIDUpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTExMS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMTEyLS8qIFJHTUlJRENUTCBiaXRzICovXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjExMzojZGVmaW5lIERQODM4NjdfUkdNSUlfVFhfQ0xLX0RFTEFZX01BWFx0XHQweGZcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTE0OiNkZWZpbmUgRFA4Mzg2N19SR01JSV9UWF9DTEtfREVMQVlfU0hJRlRcdDRcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTE1OiNkZWZpbmUgRFA4Mzg2N19SR01JSV9SWF9DTEtfREVMQVlfTUFYXHRcdDB4ZlxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMTY6I2RlZmluZSBEUDgzODY3X1JHTUlJX1JYX0NMS19ERUxBWV9TSElGVFx0MFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xMTctXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTExOC0vKiBJT19NVVhfQ0ZHIGJpdHMgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTE5OiNkZWZpbmUgRFA4Mzg2N19JT19NVVhfQ0ZHX0lPX0lNUEVEQU5DRV9NQVNLXHQweDFmXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjEyMDojZGVmaW5lIERQODM4NjdfSU9fTVVYX0NGR19JT19JTVBFREFOQ0VfTUFYXHQweDBcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTIxOiNkZWZpbmUgRFA4Mzg2N19JT19NVVhfQ0ZHX0lPX0lNUEVEQU5DRV9NSU5cdDB4MWZcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTIyOiNkZWZpbmUgRFA4Mzg2N19JT19NVVhfQ0ZHX0NMS19PX0RJU0FCTEVcdEJJVCg2KVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMjM6I2RlZmluZSBEUDgzODY3X0lPX01VWF9DRkdfQ0xLX09fU0VMX01BU0tcdCgweDFmIFx1MDAzY1x1MDAzYyA4KVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMjQ6I2RlZmluZSBEUDgzODY3X0lPX01VWF9DRkdfQ0xLX09fU0VMX1NISUZUXHQ4XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTEyNS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMTI2LS8qIFBIWSBTVFMgYml0cyAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMjc6I2RlZmluZSBEUDgzODY3X1BIWVNUU18xMDAwXHRcdFx0QklUKDE1KVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMjg6I2RlZmluZSBEUDgzODY3X1BIWVNUU18xMDBcdFx0XHRCSVQoMTQpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjEyOTojZGVmaW5lIERQODM4NjdfUEhZU1RTX0RVUExFWFx0XHRcdEJJVCgxMylcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTMwOiNkZWZpbmUgRFA4Mzg2N19QSFlTVFNfTElOS1x0XHRcdEJJVCgxMClcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTMxOiNkZWZpbmUgRFA4Mzg2N19QSFlTVFNfTURJWF9DRFx0XHRcdEJJVCg5KVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMzI6I2RlZmluZSBEUDgzODY3X1BIWVNUU19NRElYX0FCXHRcdFx0QklUKDgpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjEzMzojZGVmaW5lIERQODM4NjdfUEhZU1RTX01ESVhfTUFTS1x0XHQoRFA4Mzg2N19QSFlTVFNfTURJWF9BQiB8IFxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjEzNDpcdFx0XHRcdFx0XHREUDgzODY3X1BIWVNUU19NRElYX0NEKVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xMzUtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTEzNi0vKiBDRkcyIGJpdHMgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTM3OiNkZWZpbmUgRFA4Mzg2N19ET1dOU0hJRlRfRU5cdFx0KEJJVCg4KSB8IEJJVCg5KSlcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTM4OiNkZWZpbmUgRFA4Mzg2N19ET1dOU0hJRlRfQVRURU1QVF9NQVNLXHQoQklUKDEwKSB8IEJJVCgxMSkpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjEzOTojZGVmaW5lIERQODM4NjdfRE9XTlNISUZUXzFfQ09VTlRfVkFMXHQwXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE0MDojZGVmaW5lIERQODM4NjdfRE9XTlNISUZUXzJfQ09VTlRfVkFMXHQxXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE0MTojZGVmaW5lIERQODM4NjdfRE9XTlNISUZUXzRfQ09VTlRfVkFMXHQyXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE0MjojZGVmaW5lIERQODM4NjdfRE9XTlNISUZUXzhfQ09VTlRfVkFMXHQzXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE0MzojZGVmaW5lIERQODM4NjdfRE9XTlNISUZUXzFfQ09VTlRcdDFcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTQ0OiNkZWZpbmUgRFA4Mzg2N19ET1dOU0hJRlRfMl9DT1VOVFx0MlxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxNDU6I2RlZmluZSBEUDgzODY3X0RPV05TSElGVF80X0NPVU5UXHQ0XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE0NjojZGVmaW5lIERQODM4NjdfRE9XTlNISUZUXzhfQ09VTlRcdDhcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTQ3OiNkZWZpbmUgRFA4Mzg2N19TR01JSV9BVVRPTkVHX0VOXHRCSVQoNylcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMTQ4LVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xNDktLyogQ0ZHMyBiaXRzICovXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE1MDojZGVmaW5lIERQODM4NjdfQ0ZHM19JTlRfT0VcdFx0XHRCSVQoNylcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTUxOiNkZWZpbmUgRFA4Mzg2N19DRkczX1JPQlVTVF9BVVRPX01ESVhcdFx0QklUKDkpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTE1Mi1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMTUzLS8qIENGRzQgYml0cyAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxNTQ6I2RlZmluZSBEUDgzODY3X0NGRzRfUE9SVF9NSVJST1JfRU4gICAgICAgICAgICAgIEJJVCgwKVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xNTUtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTE1Ni0vKiBGTERfVEhSX0NGRyAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxNTc6I2RlZmluZSBEUDgzODY3X0ZMRF9USFJfQ0ZHX0VORVJHWV9MT1NUX1RIUl9NQVNLXHQweDdcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMTU4LVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxNTk6I2RlZmluZSBEUDgzODY3X0xFRF9DT1VOVFx0NFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xNjAtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTE2MS0vKiBMRURfRFJWIGJpdHMgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTYyOiNkZWZpbmUgRFA4Mzg2N19MRURfRFJWX0VOKHgpXHRCSVQoKHgpICogNClcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTYzOiNkZWZpbmUgRFA4Mzg2N19MRURfRFJWX1ZBTCh4KVx0QklUKCh4KSAqIDQgJiM0MzsgMSlcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTY0OiNkZWZpbmUgRFA4Mzg2N19MRURfUE9MQVJJVFkoeClcdEJJVCgoeCkgKiA0ICYjNDM7IDIpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTE2NS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTY2OiNkZWZpbmUgRFA4Mzg2N19MRURfRk4oaWR4LCB2YWwpXHQoKCh2YWwpIFx1MDAyNiAweGYpIFx1MDAzY1x1MDAzYyAoKGlkeCkgKiA0KSlcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTY3OiNkZWZpbmUgRFA4Mzg2N19MRURfRk5fTUFTSyhpZHgpXHQoMHhmIFx1MDAzY1x1MDAzYyAoKGlkeCkgKiA0KSlcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTY4OiNkZWZpbmUgRFA4Mzg2N19MRURfRk5fUlhfRVJSXHRcdDB4ZSAvKiBSZWNlaXZlIEVycm9yICovXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE2OTojZGVmaW5lIERQODM4NjdfTEVEX0ZOX1JYX1RYX0VSUlx0MHhkIC8qIFJlY2VpdmUgRXJyb3Igb3IgVHJhbnNtaXQgRXJyb3IgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTcwOiNkZWZpbmUgRFA4Mzg2N19MRURfRk5fTElOS19SWF9UWFx0MHhiIC8qIExpbmsgZXN0YWJsaXNoZWQsIGJsaW5rIGZvciByeCBvciB0eCBhY3Rpdml0eSAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxNzE6I2RlZmluZSBEUDgzODY3X0xFRF9GTl9GVUxMX0RVUExFWFx0MHhhIC8qIEZ1bGwgZHVwbGV4ICovXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE3MjojZGVmaW5lIERQODM4NjdfTEVEX0ZOX0xJTktfMTAwXzEwMDBfQlRcdDB4OSAvKiAxMDAvMTAwMEJUIGxpbmsgZXN0YWJsaXNoZWQgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTczOiNkZWZpbmUgRFA4Mzg2N19MRURfRk5fTElOS18xMF8xMDBfQlRcdDB4OCAvKiAxMC8xMDBCVCBsaW5rIGVzdGFibGlzaGVkICovXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE3NDojZGVmaW5lIERQODM4NjdfTEVEX0ZOX0xJTktfMTBfQlRcdDB4NyAvKiAxMEJUIGxpbmsgZXN0YWJsaXNoZWQgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTc1OiNkZWZpbmUgRFA4Mzg2N19MRURfRk5fTElOS18xMDBfQlRYXHQweDYgLyogMTAwIEJUWCBsaW5rIGVzdGFibGlzaGVkICovXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE3NjojZGVmaW5lIERQODM4NjdfTEVEX0ZOX0xJTktfMTAwMF9CVFx0MHg1IC8qIDEwMDAgQlQgbGluayBlc3RhYmxpc2hlZCAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxNzc6I2RlZmluZSBEUDgzODY3X0xFRF9GTl9DT0xMSVNJT05cdDB4NCAvKiBDb2xsaXNpb24gZGV0ZWN0ZWQgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTc4OiNkZWZpbmUgRFA4Mzg2N19MRURfRk5fUlhcdFx0MHgzIC8qIFJlY2VpdmUgYWN0aXZpdHkgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTc5OiNkZWZpbmUgRFA4Mzg2N19MRURfRk5fVFhcdFx0MHgyIC8qIFRyYW5zbWl0IGFjdGl2aXR5ICovXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE4MDojZGVmaW5lIERQODM4NjdfTEVEX0ZOX1JYX1RYXHRcdDB4MSAvKiBSZWNlaXZlIG9yIFRyYW5zbWl0IGFjdGl2aXR5ICovXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE4MTojZGVmaW5lIERQODM4NjdfTEVEX0ZOX0xJTktcdFx0MHgwIC8qIExpbmsgZXN0YWJsaXNoZWQgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMTgyLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYz0xODM9ZW51bSB7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE4NDpcdERQODM4NjdfUE9SVF9NSVJST0lOR19LRUVQLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxODU6XHREUDgzODY3X1BPUlRfTUlSUk9JTkdfRU4sXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE4NjpcdERQODM4NjdfUE9SVF9NSVJST0lOR19ESVMsXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTE4Ny19O1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM9MjEyPXN0YXRpYyBpbnQgZHA4Mzg2N19hY2tfaW50ZXJydXB0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTIxMy17XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjIxNDpcdGludCBlcnIgPSBwaHlfcmVhZChwaHlkZXYsIE1JSV9EUDgzODY3X0lTUik7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTIxNS1cbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jPTIyMj1zdGF0aWMgaW50IGRwODM4Njdfc2V0X3dvbChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjI4LVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyMjk6XHR2YWxfcnhjZmcgPSBwaHlfcmVhZF9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfUlhGQ0ZHKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjMwOlx0dmFsX21pY3IgPSBwaHlfcmVhZChwaHlkZXYsIE1JSV9EUDgzODY3X01JQ1IpO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yMzEtXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yMzMtXHRcdFx0ICAgIFdBS0VfQkNBU1QpKSB7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjIzNDpcdFx0dmFsX3J4Y2ZnIHw9IERQODM4NjdfV09MX0VOSF9NQUM7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjIzNTpcdFx0dmFsX21pY3IgfD0gTUlJX0RQODM4NjdfTUlDUl9XT0xfSU5UX0VOO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yMzYtXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yNDItXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI0MzpcdFx0XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JYRlBNRDEsXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI0NC1cdFx0XHRcdCAgICAgIChtYWNbMV0gXHUwMDNjXHUwMDNjIDggfCBtYWNbMF0pKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjQ1Olx0XHRcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfUlhGUE1EMixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjQ2LVx0XHRcdFx0ICAgICAgKG1hY1szXSBcdTAwM2NcdTAwM2MgOCB8IG1hY1syXSkpO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyNDc6XHRcdFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19SWEZQTUQzLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yNDgtXHRcdFx0XHQgICAgICAobWFjWzVdIFx1MDAzY1x1MDAzYyA4IHwgbWFjWzRdKSk7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI0OS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjUwOlx0XHRcdHZhbF9yeGNmZyB8PSBEUDgzODY3X1dPTF9NQUdJQ19FTjtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjUxLVx0XHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyNTI6XHRcdFx0dmFsX3J4Y2ZnIFx1MDAyNj0gfkRQODM4NjdfV09MX01BR0lDX0VOO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yNTMtXHRcdH1cbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI1NS1cdFx0aWYgKHdvbC1cdTAwM2V3b2xvcHRzIFx1MDAyNiBXQUtFX01BR0lDU0VDVVJFKSB7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI1NjpcdFx0XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JYRlNPUDEsXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI1Ny1cdFx0XHRcdCAgICAgICh3b2wtXHUwMDNlc29wYXNzWzFdIFx1MDAzY1x1MDAzYyA4KSB8IHdvbC1cdTAwM2Vzb3Bhc3NbMF0pO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyNTg6XHRcdFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19SWEZTT1AyLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yNTktXHRcdFx0XHQgICAgICAod29sLVx1MDAzZXNvcGFzc1szXSBcdTAwM2NcdTAwM2MgOCkgfCB3b2wtXHUwMDNlc29wYXNzWzJdKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjYwOlx0XHRcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfUlhGU09QMyxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjYxLVx0XHRcdFx0ICAgICAgKHdvbC1cdTAwM2Vzb3Bhc3NbNV0gXHUwMDNjXHUwMDNjIDgpIHwgd29sLVx1MDAzZXNvcGFzc1s0XSk7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI2Mi1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjYzOlx0XHRcdHZhbF9yeGNmZyB8PSBEUDgzODY3X1dPTF9TRUNfRU47XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI2NC1cdFx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjY1Olx0XHRcdHZhbF9yeGNmZyBcdTAwMjY9IH5EUDgzODY3X1dPTF9TRUNfRU47XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI2Ni1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjY4LVx0XHRpZiAod29sLVx1MDAzZXdvbG9wdHMgXHUwMDI2IFdBS0VfVUNBU1QpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI2OTpcdFx0XHR2YWxfcnhjZmcgfD0gRFA4Mzg2N19XT0xfVUNBU1RfRU47XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI3MC1cdFx0ZWxzZVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyNzE6XHRcdFx0dmFsX3J4Y2ZnIFx1MDAyNj0gfkRQODM4NjdfV09MX1VDQVNUX0VOO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yNzItXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI3My1cdFx0aWYgKHdvbC1cdTAwM2V3b2xvcHRzIFx1MDAyNiBXQUtFX0JDQVNUKVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyNzQ6XHRcdFx0dmFsX3J4Y2ZnIHw9IERQODM4NjdfV09MX0JDQVNUX0VOO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yNzUtXHRcdGVsc2VcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6Mjc2Olx0XHRcdHZhbF9yeGNmZyBcdTAwMjY9IH5EUDgzODY3X1dPTF9CQ0FTVF9FTjtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjc3LVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6Mjc4Olx0XHR2YWxfcnhjZmcgXHUwMDI2PSB+RFA4Mzg2N19XT0xfRU5IX01BQztcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6Mjc5Olx0XHR2YWxfbWljciBcdTAwMjY9IH5NSUlfRFA4Mzg2N19NSUNSX1dPTF9JTlRfRU47XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI4MC1cdH1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjgxLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyODI6XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JYRkNGRywgdmFsX3J4Y2ZnKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjgzOlx0cGh5X3dyaXRlKHBoeWRldiwgTUlJX0RQODM4NjdfTUlDUiwgdmFsX21pY3IpO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yODQtXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYz0yODg9c3RhdGljIHZvaWQgZHA4Mzg2N19nZXRfd29sKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yOTYtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI5NzpcdHZhbHVlID0gcGh5X3JlYWRfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JYRkNGRyk7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI5OC1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6Mjk5Olx0aWYgKHZhbHVlIFx1MDAyNiBEUDgzODY3X1dPTF9VQ0FTVF9FTilcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMzAwLVx0XHR3b2wtXHUwMDNld29sb3B0cyB8PSBXQUtFX1VDQVNUO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zMDEtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjMwMjpcdGlmICh2YWx1ZSBcdTAwMjYgRFA4Mzg2N19XT0xfQkNBU1RfRU4pXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTMwMy1cdFx0d29sLVx1MDAzZXdvbG9wdHMgfD0gV0FLRV9CQ0FTVDtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMzA0LVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozMDU6XHRpZiAodmFsdWUgXHUwMDI2IERQODM4NjdfV09MX01BR0lDX0VOKVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zMDYtXHRcdHdvbC1cdTAwM2V3b2xvcHRzIHw9IFdBS0VfTUFHSUM7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTMwNy1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MzA4Olx0aWYgKHZhbHVlIFx1MDAyNiBEUDgzODY3X1dPTF9TRUNfRU4pIHtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MzA5Olx0XHRzb3Bhc3NfdmFsID0gcGh5X3JlYWRfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozMTA6XHRcdFx0XHRcdCAgRFA4Mzg2N19SWEZTT1AxKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMzExLVx0XHR3b2wtXHUwMDNlc29wYXNzWzBdID0gKHNvcGFzc192YWwgXHUwMDI2IDB4ZmYpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMzEzLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozMTQ6XHRcdHNvcGFzc192YWwgPSBwaHlfcmVhZF9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjMxNTpcdFx0XHRcdFx0ICBEUDgzODY3X1JYRlNPUDIpO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zMTYtXHRcdHdvbC1cdTAwM2Vzb3Bhc3NbMl0gPSAoc29wYXNzX3ZhbCBcdTAwMjYgMHhmZik7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zMTgtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjMxOTpcdFx0c29wYXNzX3ZhbCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MzIwOlx0XHRcdFx0XHQgIERQODM4NjdfUlhGU09QMyk7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTMyMS1cdFx0d29sLVx1MDAzZXNvcGFzc1s0XSA9IChzb3Bhc3NfdmFsIFx1MDAyNiAweGZmKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTMyNi1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MzI3Olx0aWYgKCEodmFsdWUgXHUwMDI2IERQODM4NjdfV09MX0VOSF9NQUMpKVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zMjgtXHRcdHdvbC1cdTAwM2V3b2xvcHRzID0gMDtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jPTMzMT1zdGF0aWMgaW50IGRwODM4NjdfY29uZmlnX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTMzOS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MzQwOlx0XHRtaWNyX3N0YXR1cyA9IHBoeV9yZWFkKHBoeWRldiwgTUlJX0RQODM4NjdfTUlDUik7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTM0MS1cdFx0aWYgKG1pY3Jfc3RhdHVzIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMzQ0LVx0XHRtaWNyX3N0YXR1cyB8PVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozNDU6XHRcdFx0KE1JSV9EUDgzODY3X01JQ1JfQU5fRVJSX0lOVF9FTiB8XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjM0NjpcdFx0XHRNSUlfRFA4Mzg2N19NSUNSX1NQRUVEX0NITkdfSU5UX0VOIHxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MzQ3Olx0XHRcdE1JSV9EUDgzODY3X01JQ1JfQVVUT05FR19DT01QX0lOVF9FTiB8XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjM0ODpcdFx0XHRNSUlfRFA4Mzg2N19NSUNSX0xJTktfU1RTX0NITkdfSU5UX0VOIHxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MzQ5Olx0XHRcdE1JSV9EUDgzODY3X01JQ1JfRFVQX01PREVfQ0hOR19JTlRfRU4gfFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozNTA6XHRcdFx0TUlJX0RQODM4NjdfTUlDUl9TTEVFUF9NT0RFX0NITkdfSU5UX0VOKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMzUxLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozNTI6XHRcdGVyciA9IHBoeV93cml0ZShwaHlkZXYsIE1JSV9EUDgzODY3X01JQ1IsIG1pY3Jfc3RhdHVzKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMzUzLVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMzU0LVx0XHRtaWNyX3N0YXR1cyA9IDB4MDtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MzU1Olx0XHRlcnIgPSBwaHlfd3JpdGUocGh5ZGV2LCBNSUlfRFA4Mzg2N19NSUNSLCBtaWNyX3N0YXR1cyk7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTM1Ni1cdFx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jPTM2NT1zdGF0aWMgaXJxcmV0dXJuX3QgZHA4Mzg2N19oYW5kbGVfaW50ZXJydXB0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zNjgtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjM2OTpcdGlycV9zdGF0dXMgPSBwaHlfcmVhZChwaHlkZXYsIE1JSV9EUDgzODY3X0lTUik7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTM3MC1cdGlmIChpcnFfc3RhdHVzIFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zNzQtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjM3NTpcdGlycV9lbmFibGVkID0gcGh5X3JlYWQocGh5ZGV2LCBNSUlfRFA4Mzg2N19NSUNSKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMzc2LVx0aWYgKGlycV9lbmFibGVkIFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYz0zODk9c3RhdGljIGludCBkcDgzODY3X3JlYWRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTM5MC17XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjM5MTpcdGludCBzdGF0dXMgPSBwaHlfcmVhZChwaHlkZXYsIE1JSV9EUDgzODY3X1BIWVNUUyk7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTM5Mi1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00MDAtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQwMTpcdGlmIChzdGF0dXMgXHUwMDI2IERQODM4NjdfUEhZU1RTX0RVUExFWClcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNDAyLVx0XHRwaHlkZXYtXHUwMDNlZHVwbGV4ID0gRFVQTEVYX0ZVTEw7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00MDUtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQwNjpcdGlmIChzdGF0dXMgXHUwMDI2IERQODM4NjdfUEhZU1RTXzEwMDApXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQwNy1cdFx0cGh5ZGV2LVx1MDAzZXNwZWVkID0gU1BFRURfMTAwMDtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDA4Olx0ZWxzZSBpZiAoc3RhdHVzIFx1MDAyNiBEUDgzODY3X1BIWVNUU18xMDApXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQwOS1cdFx0cGh5ZGV2LVx1MDAzZXNwZWVkID0gU1BFRURfMTAwO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNDEyLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0MTM6XHRpZiAoIShzdGF0dXMgXHUwMDI2IERQODM4NjdfUEhZU1RTX0xJTkspKSB7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQxNC1cdFx0cGh5ZGV2LVx1MDAzZW1kaXggPSBFVEhfVFBfTURJX0lOVkFMSUQ7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQxNS1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQxNjpcdFx0c3dpdGNoIChzdGF0dXMgXHUwMDI2IERQODM4NjdfUEhZU1RTX01ESVhfTUFTSykge1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00MTctXHRcdGNhc2UgMDpcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQxOS1cdFx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDIwOlx0XHRjYXNlIERQODM4NjdfUEhZU1RTX01ESVhfTUFTSzpcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNDIxLVx0XHRcdHBoeWRldi1cdTAwM2VtZGl4ID0gRVRIX1RQX01ESV9YO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM9NDMyPXN0YXRpYyBpbnQgZHA4Mzg2N19nZXRfZG93bnNoaWZ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4ICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNDM1LVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0MzY6XHR2YWwgPSBwaHlfcmVhZChwaHlkZXYsIERQODM4NjdfQ0ZHMik7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQzNy1cdGlmICh2YWwgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00MzktXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQ0MDpcdGVuYWJsZSA9IEZJRUxEX0dFVChEUDgzODY3X0RPV05TSElGVF9FTiwgdmFsKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDQxOlx0Y250ID0gRklFTERfR0VUKERQODM4NjdfRE9XTlNISUZUX0FUVEVNUFRfTUFTSywgdmFsKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNDQyLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00NDMtXHRzd2l0Y2ggKGNudCkge1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0NDQ6XHRjYXNlIERQODM4NjdfRE9XTlNISUZUXzFfQ09VTlRfVkFMOlxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0NDU6XHRcdGNvdW50ID0gRFA4Mzg2N19ET1dOU0hJRlRfMV9DT1VOVDtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNDQ2LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDQ3Olx0Y2FzZSBEUDgzODY3X0RPV05TSElGVF8yX0NPVU5UX1ZBTDpcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDQ4Olx0XHRjb3VudCA9IERQODM4NjdfRE9XTlNISUZUXzJfQ09VTlQ7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQ0OS1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQ1MDpcdGNhc2UgRFA4Mzg2N19ET1dOU0hJRlRfNF9DT1VOVF9WQUw6XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQ1MTpcdFx0Y291bnQgPSBEUDgzODY3X0RPV05TSElGVF80X0NPVU5UO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00NTItXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0NTM6XHRjYXNlIERQODM4NjdfRE9XTlNISUZUXzhfQ09VTlRfVkFMOlxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0NTQ6XHRcdGNvdW50ID0gRFA4Mzg2N19ET1dOU0hJRlRfOF9DT1VOVDtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNDU1LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jPTQ2NT1zdGF0aWMgaW50IGRwODM4Njdfc2V0X2Rvd25zaGlmdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBjbnQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00NjgtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQ2OTpcdGlmIChjbnQgXHUwMDNlIERQODM4NjdfRE9XTlNISUZUXzhfQ09VTlQpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQ3MC1cdFx0cmV0dXJuIC1FMkJJRztcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQ3Mi1cdGlmICghY250KVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0NzM6XHRcdHJldHVybiBwaHlfY2xlYXJfYml0cyhwaHlkZXYsIERQODM4NjdfQ0ZHMixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDc0Olx0XHRcdFx0ICAgICAgRFA4Mzg2N19ET1dOU0hJRlRfRU4pO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00NzUtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQ3Ni1cdHN3aXRjaCAoY250KSB7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQ3NzpcdGNhc2UgRFA4Mzg2N19ET1dOU0hJRlRfMV9DT1VOVDpcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDc4Olx0XHRjb3VudCA9IERQODM4NjdfRE9XTlNISUZUXzFfQ09VTlRfVkFMO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00NzktXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0ODA6XHRjYXNlIERQODM4NjdfRE9XTlNISUZUXzJfQ09VTlQ6XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQ4MTpcdFx0Y291bnQgPSBEUDgzODY3X0RPV05TSElGVF8yX0NPVU5UX1ZBTDtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNDgyLVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDgzOlx0Y2FzZSBEUDgzODY3X0RPV05TSElGVF80X0NPVU5UOlxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0ODQ6XHRcdGNvdW50ID0gRFA4Mzg2N19ET1dOU0hJRlRfNF9DT1VOVF9WQUw7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQ4NS1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQ4NjpcdGNhc2UgRFA4Mzg2N19ET1dOU0hJRlRfOF9DT1VOVDpcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDg3Olx0XHRjb3VudCA9IERQODM4NjdfRE9XTlNISUZUXzhfQ09VTlRfVkFMO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00ODgtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNDk0LVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0OTU6XHR2YWwgPSBEUDgzODY3X0RPV05TSElGVF9FTjtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDk2Olx0dmFsIHw9IEZJRUxEX1BSRVAoRFA4Mzg2N19ET1dOU0hJRlRfQVRURU1QVF9NQVNLLCBjb3VudCk7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQ5Ny1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDk4Olx0cmV0dXJuIHBoeV9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0NGRzIsXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQ5OTpcdFx0XHQgIERQODM4NjdfRE9XTlNISUZUX0VOIHwgRFA4Mzg2N19ET1dOU0hJRlRfQVRURU1QVF9NQVNLLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy01MDAtXHRcdFx0ICB2YWwpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM9NTI1PXN0YXRpYyBpbnQgZHA4Mzg2N19jb25maWdfcG9ydF9taXJyb3Jpbmcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTUyOC1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NTI5Olx0aWYgKGRwODM4NjctXHUwMDNlcG9ydF9taXJyb3JpbmcgPT0gRFA4Mzg2N19QT1JUX01JUlJPSU5HX0VOKVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo1MzA6XHRcdHBoeV9zZXRfYml0c19tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfQ0ZHNCxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NTMxOlx0XHRcdFx0IERQODM4NjdfQ0ZHNF9QT1JUX01JUlJPUl9FTik7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTUzMi1cdGVsc2VcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NTMzOlx0XHRwaHlfY2xlYXJfYml0c19tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfQ0ZHNCxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NTM0Olx0XHRcdFx0ICAgRFA4Mzg2N19DRkc0X1BPUlRfTUlSUk9SX0VOKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNTM1LVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYz01Mzk9c3RhdGljIGludCBkcDgzODY3X29mX2luaXRfaW9faW1wZWRhbmNlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy01NTYtXHRcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wob2Zfbm9kZSwgXCYjMzQ7dGksbWF4LW91dHB1dC1pbXBlZGFuY2VcJiMzNDspKVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo1NTc6XHRcdFx0ZHA4Mzg2Ny1cdTAwM2Vpb19pbXBlZGFuY2UgPSBEUDgzODY3X0lPX01VWF9DRkdfSU9fSU1QRURBTkNFX01BWDtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNTU4LVx0XHRlbHNlIGlmIChvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wob2Zfbm9kZSwgXCYjMzQ7dGksbWluLW91dHB1dC1pbXBlZGFuY2VcJiMzNDspKVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo1NTk6XHRcdFx0ZHA4Mzg2Ny1cdTAwM2Vpb19pbXBlZGFuY2UgPSBEUDgzODY3X0lPX01VWF9DRkdfSU9fSU1QRURBTkNFX01JTjtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNTYwLVx0XHRlbHNlXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy01NzQtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjU3NTpcdGlmICgodmFsIFx1MDAyNiBEUDgzODY3X0lPX01VWF9DRkdfSU9fSU1QRURBTkNFX01BU0spICE9IHZhbCkge1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy01NzYtXHRcdHBoeWRldl9lcnIocGh5ZGV2LCBcJiMzNDtudm1lbSBjZWxsICYjMzk7aW9faW1wZWRhbmNlX2N0cmwmIzM5OyBjb250ZW50cyBvdXQgb2YgcmFuZ2VcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM9NTg0PXN0YXRpYyBpbnQgZHA4Mzg2N19vZl9pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy01OTktXHRcdGRwODM4NjctXHUwMDNlc2V0X2Nsa19vdXRwdXQgPSB0cnVlO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo2MDA6XHRcdC8qIFZhbGlkIHZhbHVlcyBhcmUgMCB0byBEUDgzODY3X0NMS19PX1NFTF9SRUZfQ0xLIG9yXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjYwMTpcdFx0ICogRFA4Mzg2N19DTEtfT19TRUxfT0ZGLlxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02MDItXHRcdCAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo2MDM6XHRcdGlmIChkcDgzODY3LVx1MDAzZWNsa19vdXRwdXRfc2VsIFx1MDAzZSBEUDgzODY3X0NMS19PX1NFTF9SRUZfQ0xLIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo2MDQ6XHRcdCAgICBkcDgzODY3LVx1MDAzZWNsa19vdXRwdXRfc2VsICE9IERQODM4NjdfQ0xLX09fU0VMX09GRikge1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02MDUtXHRcdFx0cGh5ZGV2X2VycihwaHlkZXYsIFwmIzM0O3RpLGNsay1vdXRwdXQtc2VsIHZhbHVlICV1IG91dCBvZiByYW5nZVxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTYyMC1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NjIxOlx0ZHA4Mzg2Ny1cdTAwM2VyeF9pZF9kZWxheSA9IERQODM4NjdfUkdNSUlEQ1RMXzJfMDBfTlM7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTYyMi1cdHJldCA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKG9mX25vZGUsIFwmIzM0O3RpLHJ4LWludGVybmFsLWRlbGF5XCYjMzQ7LFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02MjMtXHRcdFx0XHQgICBcdTAwMjZkcDgzODY3LVx1MDAzZXJ4X2lkX2RlbGF5KTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NjI0Olx0aWYgKCFyZXQgXHUwMDI2XHUwMDI2IGRwODM4NjctXHUwMDNlcnhfaWRfZGVsYXkgXHUwMDNlIERQODM4NjdfUkdNSUlfUlhfQ0xLX0RFTEFZX01BWCkge1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02MjUtXHRcdHBoeWRldl9lcnIocGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNjMwLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo2MzE6XHRkcDgzODY3LVx1MDAzZXR4X2lkX2RlbGF5ID0gRFA4Mzg2N19SR01JSURDVExfMl8wMF9OUztcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNjMyLVx0cmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzIob2Zfbm9kZSwgXCYjMzQ7dGksdHgtaW50ZXJuYWwtZGVsYXlcJiMzNDssXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTYzMy1cdFx0XHRcdCAgIFx1MDAyNmRwODM4NjctXHUwMDNldHhfaWRfZGVsYXkpO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo2MzQ6XHRpZiAoIXJldCBcdTAwMjZcdTAwMjYgZHA4Mzg2Ny1cdTAwM2V0eF9pZF9kZWxheSBcdTAwM2UgRFA4Mzg2N19SR01JSV9UWF9DTEtfREVMQVlfTUFYKSB7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTYzNS1cdFx0cGh5ZGV2X2VycihwaHlkZXYsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02NDEtXHRpZiAob2ZfcHJvcGVydHlfcmVhZF9ib29sKG9mX25vZGUsIFwmIzM0O2VuZXQtcGh5LWxhbmUtc3dhcFwmIzM0OykpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjY0MjpcdFx0ZHA4Mzg2Ny1cdTAwM2Vwb3J0X21pcnJvcmluZyA9IERQODM4NjdfUE9SVF9NSVJST0lOR19FTjtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNjQzLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02NDQtXHRpZiAob2ZfcHJvcGVydHlfcmVhZF9ib29sKG9mX25vZGUsIFwmIzM0O2VuZXQtcGh5LWxhbmUtbm8tc3dhcFwmIzM0OykpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjY0NTpcdFx0ZHA4Mzg2Ny1cdTAwM2Vwb3J0X21pcnJvcmluZyA9IERQODM4NjdfUE9SVF9NSVJST0lOR19ESVM7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTY0Ni1cbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTY1My1cdFx0XHRkcDgzODY3LVx1MDAzZXR4X2ZpZm9fZGVwdGggPVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo2NTQ6XHRcdFx0XHRcdERQODM4NjdfUEhZQ1JfRklGT19ERVBUSF80X0JfTklCO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02NTUtXHR9XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTY1Ni1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NjU3Olx0aWYgKGRwODM4NjctXHUwMDNldHhfZmlmb19kZXB0aCBcdTAwM2UgRFA4Mzg2N19QSFlDUl9GSUZPX0RFUFRIX01BWCkge1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02NTgtXHRcdHBoeWRldl9lcnIocGh5ZGV2LCBcJiMzNDt0eC1maWZvLWRlcHRoIHZhbHVlICV1IG91dCBvZiByYW5nZVxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTY2NS1cdGlmIChyZXQpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjY2NjpcdFx0ZHA4Mzg2Ny1cdTAwM2VyeF9maWZvX2RlcHRoID0gRFA4Mzg2N19QSFlDUl9GSUZPX0RFUFRIXzRfQl9OSUI7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTY2Ny1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NjY4Olx0aWYgKGRwODM4NjctXHUwMDNlcnhfZmlmb19kZXB0aCBcdTAwM2UgRFA4Mzg2N19QSFlDUl9GSUZPX0RFUFRIX01BWCkge1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02NjktXHRcdHBoeWRldl9lcnIocGh5ZGV2LCBcJiMzNDtyeC1maWZvLWRlcHRoIHZhbHVlICV1IG91dCBvZiByYW5nZVxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jPTY3Nz1zdGF0aWMgaW50IGRwODM4Njdfb2ZfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNjg2LVx0ICovXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjY4NzpcdGRlbGF5ID0gcGh5X3JlYWRfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JHTUlJRENUTCk7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjY4ODpcdGRwODM4NjctXHUwMDNlcnhfaWRfZGVsYXkgPSBkZWxheSBcdTAwMjYgRFA4Mzg2N19SR01JSV9SWF9DTEtfREVMQVlfTUFYO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo2ODk6XHRkcDgzODY3LVx1MDAzZXR4X2lkX2RlbGF5ID0gKGRlbGF5IFx1MDAzZVx1MDAzZSBEUDgzODY3X1JHTUlJX1RYX0NMS19ERUxBWV9TSElGVCkgXHUwMDI2XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjY5MDpcdFx0XHQgICAgICAgRFA4Mzg2N19SR01JSV9UWF9DTEtfREVMQVlfTUFYO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02OTEtXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02OTUtXHQgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6Njk2Olx0ZHA4Mzg2Ny1cdTAwM2Vpb19pbXBlZGFuY2UgPSBEUDgzODY3X0lPX01VWF9DRkdfSU9fSU1QRURBTkNFX01JTiAvIDI7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTY5Ny1cbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTcwMS1cdCAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo3MDI6XHRkcDgzODY3LVx1MDAzZXR4X2ZpZm9fZGVwdGggPSBEUDgzODY3X1BIWUNSX0ZJRk9fREVQVEhfNF9CX05JQjtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NzAzOlx0ZHA4Mzg2Ny1cdTAwM2VyeF9maWZvX2RlcHRoID0gRFA4Mzg2N19QSFlDUl9GSUZPX0RFUFRIXzRfQl9OSUI7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTcwNC1cbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jPTc1Nj1zdGF0aWMgaW50IF9fZHA4Mzg2N19sZWRfbW9kaWZ5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUzMiByZWcsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy03NjUtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjc2NjpcdGlmIChyZWcgPT0gRFA4Mzg2N19MRURDUjEpIHtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNzY3LVx0XHRkcDgzODY3LVx1MDAzZWxlZGNyMSA9IChkcDgzODY3LVx1MDAzZWxlZGNyMSBcdTAwMjYgfm1hc2spIHwgKHZhbCBcdTAwMjYgbWFzayk7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTc2OC1cdFx0ZHA4Mzg2Ny1cdTAwM2VsZWRjcjFfbWFzayB8PSBtYXNrO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo3Njk6XHR9IGVsc2UgaWYgKHJlZyA9PSBEUDgzODY3X0xFRENSMikge1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy03NzAtXHRcdGRwODM4NjctXHUwMDNlbGVkY3IyID0gKGRwODM4NjctXHUwMDNlbGVkY3IyIFx1MDAyNiB+bWFzaykgfCAodmFsIFx1MDAyNiBtYXNrKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jPTc4Mj1zdGF0aWMgaW50IGRwODM4NjdfbGVkX3Jlc3RvcmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTc4OC1cdGlmIChkcDgzODY3LVx1MDAzZWxlZGNyMV9tYXNrKVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo3ODk6XHRcdHJldCA9IHBoeV9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMSxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNzkwLVx0XHRcdFx0IGRwODM4NjctXHUwMDNlbGVkY3IxX21hc2ssIGRwODM4NjctXHUwMDNlbGVkY3IxKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNzkxLVx0aWYgKCFyZXQgXHUwMDI2XHUwMDI2IGRwODM4NjctXHUwMDNlbGVkY3IyX21hc2spXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjc5MjpcdFx0cmV0ID0gcGh5X21vZGlmeShwaHlkZXYsIERQODM4NjdfTEVEQ1IyLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy03OTMtXHRcdFx0XHQgZHA4Mzg2Ny1cdTAwM2VsZWRjcjJfbWFzaywgZHA4Mzg2Ny1cdTAwM2VsZWRjcjIpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM9Nzk5PXN0YXRpYyBpbnQgZHA4Mzg2N19jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtODA2LVx0LyogRm9yY2Ugc3BlZWQgb3B0aW1pemF0aW9uIGZvciB0aGUgUEhZIGV2ZW4gaWYgaXQgc3RyYXBwZWQgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6ODA3Olx0cmV0ID0gcGh5X21vZGlmeShwaHlkZXYsIERQODM4NjdfQ0ZHMiwgRFA4Mzg2N19ET1dOU0hJRlRfRU4sXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjgwODpcdFx0XHQgRFA4Mzg2N19ET1dOU0hJRlRfRU4pO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy04MDktXHRpZiAocmV0KVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMDA6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIwODcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBEUDgzODY3IFBIWSBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBkcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIGl0JiMzOTtzIGFuIE1ESU8gUEhZIGRyaXZlciBkZXNpZ25lZCBmb3IgdGhlIFRleGFzIEluc3RydW1lbnRzIERQODM4NjcgUEhZLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgaXRzIGludGVncmF0aW9uIHdpdGhpbiB0aGUgYnJvYWRlciBQSFkgZHJpdmVyIGFyY2hpdGVjdHVyZSBvZiBgZHJpdmVycy9uZXQvcGh5YC4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlc2UgUEhZIGRyaXZlcnMgYXJlIHR5cGljYWxseSBwcm9iZWQgYW5kIHV0aWxpemVkLiBBcmUgdGhleSBzdHJpY3RseSB0aWVkIHRvIHBoeXNpY2FsIEV0aGVybmV0IFBIWSBjaGlwcyBjb25uZWN0ZWQgdG8gTURJTyBidXNlcz8gT3IgaXMgdGhlcmUgYW55IGZsZXhpYmlsaXR5LCBhbnkgd2F5IHRvIGVtdWxhdGUgb3IgaW50ZXJmYWNlIHRoZW0gaW4gYSB2aXJ0dWFsIGVudmlyb25tZW50IGxpa2Ugc3l6a2FsbGVyIG9yIFFFTVU/CgpJJiMzOTttIHRoaW5raW5nIEkmIzM5O2xsIG5lZWQgdG8gYnJvYWRlbiBteSBzZWFyY2ggdGVybXMgdG8gaW5jbHVkZSByZWxhdGVkIGNvbmNlcHRzLiBTbywgSSBuZWVkIHRvIGxvb2sgaW50byBob3cgTURJTyBidXNlcywgTURJTyBiaXQtYmFuZ2luZywgTURJTy1HUElPLCB0aGUgY29uY2VwdCBvZiB2aXJ0dWFsIE1ESU8gaW50ZXJmYWNlcywgYW5kIGZpeGVkLVBIWSBjb25maWd1cmF0aW9ucyBmdW5jdGlvbiwgYXMgd2VsbCBhcyB0aGUgc3RydWN0dXJlcyBsaWtlIGBwaHlfZGV2aWNlYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRvIGludGVyYWN0IHdpdGggdGhpcyB0aGluZywgYmVjYXVzZSBJJiMzOTttIGFzc3VtaW5nIHRoYXQgaXQgd2lsbCBiZSBhIHBhaW4uCgpNeSBmaW5hbCB0aG91Z2h0IGlzIHRoYXQgSSBuZWVkIHRvIGRldGVybWluZSBpZiBhbnkgZXhpc3RpbmcgbmV0d29yayBkcml2ZXIgb3IgdmlydHVhbCBkcml2ZXIgcmVhZGlseSBpbnRlcmZhY2VzIHdpdGggdGhlIERQODM4NjcsIG9yIGlmIGl0IGhhcyBzcGVjaWZpYyBoYXJkd2FyZSBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBrbm93IGlmIHRoZSBoYXJkd2FyZSBpcyBmdWxseSByZXF1aXJlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwMDoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfcGh5X2RyaXZlci4qZHA4Mzg2NyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jPTEyNjU9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGRwODM4NjdfZHJpdmVyW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xMzAzLX07XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjEzMDQ6bW9kdWxlX3BoeV9kcml2ZXIoZHA4Mzg2N19kcml2ZXIpO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xMzA1LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDAwOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNzA3CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogNDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEludmVzdGlnYXRpb24gaW50byBEUDgzODY3IFBIWSBEcml2ZXIgUmVhY2hhYmlsaXR5KioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGBkcDgzODY3YCBQSFkgZHJpdmVyIGlzIGJlaW5nIHJlZ2lzdGVyZWQgYW5kIHdoZXRoZXIgaXQmIzM5O3Mgc29tZXRoaW5nIEkgY2FuIGFjdHVhbGx5IHdvcmsgd2l0aCBpbiB0aGlzIHNjZW5hcmlvLiBGaXJzdCwgSSYjMzk7bSBnb2luZyB0byBsb29rIGF0IHRoZSBjb2RlLiBMZXQmIzM5O3Mgc2VlIGhvdyBgcGh5X2RyaXZlcmAgZ2V0cyByZWdpc3RlcmVkLCBzcGVjaWZpY2FsbHkgaW4gYGRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmNgLiBBaCwgYG1vZHVsZV9waHlfZHJpdmVyKGRwODM4NjdfZHJpdmVyKWAg4oCTIHNvIGl0JiMzOTtzIHJlZ2lzdGVyaW5nIGEgYHBoeV9kcml2ZXJgIHRoYXQgbWF0Y2hlcyBgRFA4Mzg2N19QSFlfSURgLCB3aGljaCBpcyBgMHgyMDAwYTIzMWAuIE1ha2VzIHNlbnNlLgoKTm93LCB3aGVuIGRvZXMgdGhpcyBkcml2ZXIgKmFjdHVhbGx5KiBnZXQgcHJvYmVkPyBSaWdodCwgd2hlbiB0aGUgTURJTyBidXMgaXMgc2Nhbm5lZC4gU28sIGZ1bmN0aW9ucyBsaWtlIGBtZGlvYnVzX3NjYW5gIG9yIGBvZl9tZGlvYCBhcmUgdGhlIHRyaWdnZXJzLiBPciwgaWYgYSBgcGh5X2RldmljZWAgaXMgZXhwbGljaXRseSBjcmVhdGVkIHdpdGggdGhhdCBzcGVjaWZpYyBQSFkgSUQuIEdvb2QuCgpUaGUgY3JpdGljYWwgcXVlc3Rpb24gaGVyZSBpcyB3aGV0aGVyIFFFTVUgb3IgYW55IHN0YW5kYXJkIHZpcnR1YWwgZW52aXJvbm1lbnQgKmVtdWxhdGVzKiBhIERQODM4NjcgUEhZLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSBhcmUgdmlydHVhbCBidXNlcywgZW11bGF0ZWQgZGV2aWNlcywgYSBtb2NrIE1ESU8sIG9yIGlmIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggcHVyZWx5IHBoeXNpY2FsIGhhcmR3YXJlIGhlcmUuIFdhaXQsIHdoYXQgaXMgdGhlIERQODM4NjcgaW4gdGhlIHJlYWwgd29ybGQ/IE9oIHJpZ2h0LCBpdCYjMzk7cyBhIHBoeXNpY2FsIEV0aGVybmV0IFBIWSBjaGlwIGZyb20gVGV4YXMgSW5zdHJ1bWVudHMuCgpTbywgSSBuZWVkIHRvIGtub3cgaWYgUUVNVSBvciBzb21lIHZpcnR1YWwgYnVzICpzcGVjaWZpY2FsbHkqIGVtdWxhdGVzIHRoaXMuIElmIG5vdCwgaXQgY291bGQgYmUgYSBwaHlzaWNhbCBoYXJkd2FyZSBkZXBlbmRlbmN5LiBMZXQmIzM5O3Mgbm90IGZvcmdldCBzZWN0aW9uIDIgb2YgdGhlIGluc3RydWN0aW9uczogJiMzNDtTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuLi4mIzM0OyDigJMgdGhpbmdzIGxpa2Ugc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgTklDcywgYW5kIEdQVSBkcml2ZXJzLiBJdCBtZW50aW9ucyB0aG9zZSByZXF1aXJlIHBoeXNpY2FsIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBRRU1VLgoKQnV0Li4uIGFyZSBQSFkgZHJpdmVycyB0aGUgc2FtZT8gQXJlIHRoZXkgKnN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSo/IENhbiBJIGNyZWF0ZSBNRElPIGRldmljZXMgZnJvbSB1c2Vyc3BhY2UsIHVzZSB2aXJ0dWFsIGRldmljZXMsIG9yIGRvIEkgbmVlZCB0byBsb29rIGZvciBzeXNmcywgbmV0bGluaywgVVNCLCBvciBtb2NrIE1ESU8gbWV0aG9kcz8KCkkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgc2VhcmNoaW5nIHRoZSBrZXJuZWwgc291cmNlcyBmb3IgJiMzNDttZGlvLCYjMzQ7IHRoZW4gJiMzNDtwaHlfZGV2aWNlX2NyZWF0ZSwmIzM0OyB0aGVuICYjMzQ7bWRpb2J1c19yZWdpc3RlciwmIzM0OyBhbmQgdGhlbiAmIzM0O25ldGxpbmsgbWRpby4mIzM0OyBIb3BlZnVsbHksIHRoYXQgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZXNlIHZpcnR1YWwgZHJpdmVycyBtaWdodCBiZSBleHBvc2VkIGlmIGF0IGFsbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwMDoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlfZGV2aWNlX2NyZWF0ZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmM9MTE3PWludCBmd25vZGVfbWRpb2J1c19yZWdpc3Rlcl9waHkoc3RydWN0IG1paV9idXMgKmJ1cyxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmMtMTM0LVx0ZWxzZVxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jOjEzNTpcdFx0cGh5ID0gcGh5X2RldmljZV9jcmVhdGUoYnVzLCBhZGRyLCBwaHlfaWQsIDAsIE5VTEwpO1xuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jLTEzNi1cdGlmIChJU19FUlIocGh5KSkge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jPTU1MT1zdGF0aWMgdm9pZCB0amExMTAyX3AxX3JlZ2lzdGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYy01ODUtXHRcdC8qIFJlYWwgUEhZIElEIG9mIFBvcnQgMSBpcyAwICovXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYzo1ODY6XHRcdHBoeSA9IHBoeV9kZXZpY2VfY3JlYXRlKGJ1cywgYWRkciwgUEhZX0lEX1RKQTExMDIsIGZhbHNlLCBOVUxMKTtcbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jLTU4Ny1cdFx0aWYgKElTX0VSUihwaHkpKSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmMtNTkyLVxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmM6NTkzOlx0XHQvKiBPdmVyd3JpdGUgcGFyZW50IGRldmljZS4gcGh5X2RldmljZV9jcmVhdGUoKSBzZXQgcGFyZW50IHRvXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYy01OTQtXHRcdCAqIHRoZSBtaWlfYnVzLVx1MDAzZWRldiwgd2hpY2ggaXMgbm90IGNvcnJlY3QgaW4gY2FzZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTcyOD1zdGF0aWMgaW50IHBoeV9yZXF1ZXN0X2RyaXZlcl9tb2R1bGUoc3RydWN0IHBoeV9kZXZpY2UgKmRldiwgdTMyIHBoeV9pZClcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTc0Ny1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6NzQ4OnN0cnVjdCBwaHlfZGV2aWNlICpwaHlfZGV2aWNlX2NyZWF0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgdTMyIHBoeV9pZCxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNzQ5LVx0XHRcdFx0ICAgICBib29sIGlzX2M0NSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTgzOS19XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjg0MDpFWFBPUlRfU1lNQk9MKHBoeV9kZXZpY2VfY3JlYXRlKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtODQxLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTA3MT1zdHJ1Y3QgcGh5X2RldmljZSAqZ2V0X3BoeV9kZXZpY2Uoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGJvb2wgaXNfYzQ1KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTA5Ni1cdFx0aWYgKCFyKVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMDk3Olx0XHRcdHJldHVybiBwaHlfZGV2aWNlX2NyZWF0ZShidXMsIGFkZHIsIHBoeV9pZCxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTA5OC1cdFx0XHRcdFx0XHQgdHJ1ZSwgXHUwMDI2YzQ1X2lkcyk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMTAwLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMTAxOlx0cmV0dXJuIHBoeV9kZXZpY2VfY3JlYXRlKGJ1cywgYWRkciwgcGh5X2lkLCBpc19jNDUsIFx1MDAyNmM0NV9pZHMpO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMTAyLX1cbi0tXG5pbmNsdWRlL2xpbnV4L3BoeS5oPTIxNDk9aW50IHBoeV9tb2RpZnlfcGFnZWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IHBhZ2UsIHUzMiByZWdudW0sXG4tLVxuaW5jbHVkZS9saW51eC9waHkuaC0yMTUxLVxuaW5jbHVkZS9saW51eC9waHkuaDoyMTUyOnN0cnVjdCBwaHlfZGV2aWNlICpwaHlfZGV2aWNlX2NyZWF0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgdTMyIHBoeV9pZCxcbmluY2x1ZGUvbGludXgvcGh5LmgtMjE1My1cdFx0XHRcdCAgICAgYm9vbCBpc19jNDUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMDA6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ2MzcKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqSW52ZXN0aWdhdGluZyBVc2VyLVNwYWNlIFBIWS9NRElPIERldmljZSBDcmVhdGlvbioqCgpBbHJpZ2h0LCBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgc29tZXRoaW5nIG91dCBoZXJlLiBDYW4gYSB1c2VyLXNwYWNlIGFwcGxpY2F0aW9uIGFjdHVhbGx5ICpjcmVhdGUqIGEgUEhZIGRldmljZSBvbiBhbiBNRElPIGJ1cywgb3IgZXZlbiAqY3JlYXRlKiB0aGUgTURJTyBidXMgaXRzZWxmPyBJdCYjMzk7cyBhIGJpdCBvZiBhIHRyaWNreSBxdWVzdGlvbiwgYW5kIG15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byB0aGluayBhYm91dCB0aGUgcGVyaXBoZXJ5IG9mIHRoYXQuIEkmIzM5O20gd29uZGVyaW5nIGlmIHRoZXJlIGFyZSBhbnkgYW5hbG9nb3VzIG1lY2hhbmlzbXMgYWxyZWFkeSBpbiBwbGFjZSwgZm9yIGV4YW1wbGUgd2l0aCBVU0IgRXRoZXJuZXQgZG9uZ2xlcy4gRG8gdGhvc2UgdXRpbGl6ZSBNRElPIGJ1c2VzIG9yIFBIWSBkZXZpY2VzIGluIHRoZWlyIGRyaXZlciBpbXBsZW1lbnRhdGlvbj8gQW5kIGlmIHNvLCBob3c/CgpNeSBmaXJzdCBhcHByb2FjaCB3aWxsIGJlIHRvIHJlc2VhcmNoIGhvdyB0aGUgVVNCIEV0aGVybmV0IGRyaXZlcnMgYXJlIHN0cnVjdHVyZWQuIEl0IG1pZ2h0IGJlIHBvc3NpYmxlIHRoYXQgYSB2aXJ0dWFsIG5ldHdvcmsgZGV2aWNlIGV4cG9zZXMgc29tZXRoaW5nIGFraW4gdG8gYW4gTURJTyBidXMgb3IgUEhZIGRldmljZS4gU28sIHRoZSBuZXh0IHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBMaW51eCBrZXJuZWwgYW5kIGxvb2sgYXQgdGhlIFVTQiBFdGhlcm5ldCBkcml2ZXJzLCBwYXJ0aWN1bGFybHkgYW55IG9mIHRoZSB2aXJ0dWFsIGRyaXZlcnMuIEkmIzM5O20gZ29pbmcgdG8gZm9jdXMgbXkgc2VhcmNoLCBpbml0aWFsbHksIG9uIHNlZWluZyBob3cgdGhlc2UgZHJpdmVycyBpbnRlcmFjdCB3aXRoIE1ESU8uCgpUbyBtYWtlIHRoaXMgZWZmaWNpZW50LCBJIHRoaW5rIEkmIzM5O2xsIHVzZSBgZ3JlcGAgdG8gcXVpY2tseSBzZWFyY2ggdGhlIGBkcml2ZXJzL25ldC91c2JgIGRpcmVjdG9yeSBmb3IgYW55IGluc3RhbmNlcyBvZiBgbWRpb2J1c19yZWdpc3RlcmAuIFRoYXQgc2hvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBxdWlja2x5IGZpbmQgcmVsZXZhbnQgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMDA6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWRpb2J1c19yZWdpc3RlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NjY5PXN0YXRpYyBpbnQgYXg4ODc3Ml9pbml0X21kaW8oc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy02ODYtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6Njg3Olx0cmV0ID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVx1MDAzZW1kaW8pO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY4OC1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYz02MT1zdGF0aWMgaW50IGF4ODgxNzJhX2luaXRfbWRpbyhzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtNzktXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzo4MDpcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIocHJpdi1cdTAwM2VtZGlvKTtcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTgxLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9MjA5MT1zdGF0aWMgaW50IGxhbjc4eHhfbWRpb19pbml0KHN0cnVjdCBsYW43OHh4X25ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjEyMS1cdG5vZGUgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShkZXYtXHUwMDNldWRldi1cdTAwM2VkZXYub2Zfbm9kZSwgXCYjMzQ7bWRpb1wmIzM0Oyk7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjIxMjI6XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGRldi1cdTAwM2VtZGlvYnVzLCBub2RlKTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjEyMy1cdG9mX25vZGVfcHV0KG5vZGUpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jPTExNDc9c3RhdGljIGludCBzbXNjOTV4eF9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMTI0MS1cbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jOjEyNDI6XHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKHBkYXRhLVx1MDAzZW1kaW9idXMpO1xuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMTI0My1cdGlmIChyZXQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMDA6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU1NjEKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBVU0IgRXRoZXJuZXQgYW5kIE1ESU8gQnVzIEludGVyYWN0aW9uKioKCk9rYXksIHNvIGhlcmUmIzM5O3MgdGhlIHRob3VnaHQgcHJvY2VzczogSSYjMzk7bSBsb29raW5nIGF0IGhvdyBVU0IgRXRoZXJuZXQgZGV2aWNlcywgZXNwZWNpYWxseSB0aG9zZSB1c2luZyBlbXVsYXRpb24gbGlrZSBSYXctR2FkZ2V0IG9yIHRoZSBVU0IgZW11bGF0aW9uIHdpdGhpbiBTeXprYWxsZXIsIGludGVyYWN0IHdpdGggdGhlIE1ESU8gYnVzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGVzZSBlbXVsYXRlZCBkZXZpY2VzIGNhbiByZWdpc3RlciBhbiBNRElPIGJ1cy4gVGhlbiwgd2hlbiB0aGUgc3lzdGVtIHNjYW5zIHRoYXQgYnVzLCBpZiBpdCByZWNlaXZlcyBhIFBIWSBJRCBiYWNrIChwZXJoYXBzIHRocm91Z2ggVVNCIHJlc3BvbnNlcyksIHRoZSBrZXJuZWwgY2FsbHMgYHBoeV9kZXZpY2VfY3JlYXRlYCBhbmQgcG90ZW50aWFsbHkgbWF0Y2hlcyB1cCB3aXRoIGRyaXZlcnMgbGlrZSBgZHA4Mzg2N19kcml2ZXJgLgoKQnV0LCBsZXQmIzM5O3Mgc3RlcCBiYWNrIGFuZCBiZSBzdXJlLiBJIG5lZWQgdG8gdmVyaWZ5IHdoZXRoZXIgUmF3IEdhZGdldCBvciBVU0IgZnV6emluZyBhY3R1YWxseSBjYW4gZW11bGF0ZSB0aGVzZSBVU0IgRXRoZXJuZXQgZGV2aWNlcyAqd2l0aCogZnVuY3Rpb25hbCBNRElPIGJ1c2VzLiBPciwgY2FuIFN5emthbGxlciBwcm9iZSB0aGUgUEhZIGRyaXZlcnMgaW4gdGhpcyBjb25maWd1cmF0aW9uPyBUaGF0JiMzOTtzIHRoZSBjb3JlIHF1ZXN0aW9uLgoKTmV4dCwgSSBzaG91bGQgbG9vayBhdCBzb21lIGV4aXN0aW5nIFVTQiBFdGhlcm5ldCBkcml2ZXJzIGFuZCBob3cgdGhleSBpbnRlcmZhY2Ugd2l0aCB0aGUgTURJTyBidXMuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNvZGUgaW4gYGFzaXhfZGV2aWNlcy5jYCBhbmQgYHNtc2M5NXh4LmNgIHRvIHNlZSBwcmVjaXNlbHkgd2hhdCBoYXBwZW5zIHdoZW4gYG1kaW9idXNfcmVnaXN0ZXJgIGlzIGNhbGxlZCB3aXRoaW4gdGhvc2UgZHJpdmVycy4gVW5kZXJzdGFuZGluZyB0aGUgKnR5cGljYWwqIHJlZ2lzdHJhdGlvbiBwcm9jZXNzIGlzIGNyaXRpY2FsLgoKQW5kIGZpbmFsbHksIEkmIzM5O2xsIG5lZWQgdG8gaW52ZXN0aWdhdGUgdGhlIGNvcmUgTURJTyBidXMgaW1wbGVtZW50YXRpb24gaXRzZWxmLiBJIHNob3VsZCBkaXZlIGludG8gYG1kaW9idXNfcmVnaXN0ZXJgIGluIGBkcml2ZXJzL25ldC9waHkvbWRpb19idXMuY2AgdG8gY29uZmlybSB0aGUgTURJTyBidXMgY29uZmlndXJhdGlvbiwgYW5kIGRhdGEtZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMDA6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWRpb2J1c19zY2FuJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jPTM5Nj1zdGF0aWMgdm9pZCBvZl9tZGlvYnVzX2xpbmtfbWRpb2RldihzdHJ1Y3QgbWlpX2J1cyAqYnVzLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTQwNy1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjQwODpzdGF0aWMgc3RydWN0IHBoeV9kZXZpY2UgKm1kaW9idXNfc2NhbihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgYm9vbCBjNDUpXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy00MDkte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTQ0Ny0vKipcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjQ0ODogKiBtZGlvYnVzX3NjYW5fYzIyIC0gc2NhbiBvbmUgYWRkcmVzcyBvbiBhIGJ1cyBmb3IgQzIyIE1ESU8gZGV2aWNlcy5cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTQ0OS0gKiBAYnVzOiBtaWlfYnVzIHRvIHNjYW5cbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy00NTgtICovXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo0NTk6c3RydWN0IHBoeV9kZXZpY2UgKm1kaW9idXNfc2Nhbl9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIpXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy00NjAte1xuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NDYxOlx0cmV0dXJuIG1kaW9idXNfc2NhbihidXMsIGFkZHIsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTQ2Mi19XG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo0NjM6RVhQT1JUX1NZTUJPTChtZGlvYnVzX3NjYW5fYzIyKTtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTQ2NC1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTQ2NS0vKipcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjQ2NjogKiBtZGlvYnVzX3NjYW5fYzQ1IC0gc2NhbiBvbmUgYWRkcmVzcyBvbiBhIGJ1cyBmb3IgQzQ1IE1ESU8gZGV2aWNlcy5cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTQ2Ny0gKiBAYnVzOiBtaWlfYnVzIHRvIHNjYW5cbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy00NzYtICovXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo0Nzc6c3RhdGljIHN0cnVjdCBwaHlfZGV2aWNlICptZGlvYnVzX3NjYW5fYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyKVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNDc4LXtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjQ3OTpcdHJldHVybiBtZGlvYnVzX3NjYW4oYnVzLCBhZGRyLCB0cnVlKTtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTQ4MC19XG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy00ODEtXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo0ODI6c3RhdGljIGludCBtZGlvYnVzX3NjYW5fYnVzX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzKVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNDgzLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy00ODktXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo0OTA6XHRcdFx0cGh5ZGV2ID0gbWRpb2J1c19zY2FuX2MyMihidXMsIGkpO1xuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNDkxLVx0XHRcdGlmIChJU19FUlIocGh5ZGV2KSBcdTAwMjZcdTAwMjYgKFBUUl9FUlIocGh5ZGV2KSAhPSAtRU5PREVWKSlcbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy00OTctXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo0OTg6c3RhdGljIGludCBtZGlvYnVzX3NjYW5fYnVzX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzKVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNDk5LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy01MDktXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo1MTA6XHRcdFx0cGh5ZGV2ID0gbWRpb2J1c19zY2FuX2M0NShidXMsIGkpO1xuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNTExLVx0XHRcdGlmIChJU19FUlIocGh5ZGV2KSBcdTAwMjZcdTAwMjYgKFBUUl9FUlIocGh5ZGV2KSAhPSAtRU5PREVWKSlcbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYz01NTM9aW50IF9fbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBzdHJ1Y3QgbW9kdWxlICpvd25lcilcbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy02MzItXHRpZiAoYnVzLVx1MDAzZXJlYWQpIHtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjYzMzpcdFx0ZXJyID0gbWRpb2J1c19zY2FuX2J1c19jMjIoYnVzKTtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTYzNC1cdFx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy02NDAtXHRpZiAoIXByZXZlbnRfYzQ1X3NjYW4gXHUwMDI2XHUwMDI2IGJ1cy1cdTAwM2VyZWFkX2M0NSkge1xuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NjQxOlx0XHRlcnIgPSBtZGlvYnVzX3NjYW5fYnVzX2M0NShidXMpO1xuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNjQyLVx0XHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwMDoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzM4MAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDE1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERQODM4NjcgRHJpdmVyIEFjdGl2YXRpb24qKgoKT2theSwgaGVyZSYjMzk7cyB3aGF0JiMzOTtzIGNhdGNoaW5nIG15IGV5ZS4gSSYjMzk7bSBvYnNlcnZpbmcgdGhlIFVTQiBFdGhlcm5ldCBkZXZpY2UgcmVnaXN0cmF0aW9uIHByb2Nlc3MsIHNwZWNpZmljYWxseSBob3cgYF9fbWRpb2J1c19yZWdpc3RlcmAgaXMgdHJpZ2dlcmVkIHdoZW4gYSBVU0IgRXRoZXJuZXQgZGV2aWNlIGxpa2UgYW4gc21zYzk1eHggb3IgYXNpeCBjb21lcyBvbmxpbmUuIEkgbm90aWNlIHRoYXQgdGhpcyB0cmlnZ2VycyBhbiBNRElPIGJ1cyBzY2FuIGFuZCByZWFkcyB0aGUgUEhZIElEIHJlZ2lzdGVycy4gSW50ZXJlc3RpbmchIElmIHRoZSBkZXZpY2UgaGFwcGVucyB0byByZXR1cm4gdGhlIERQODM4NjcgUEhZIElELCB3aGljaCBpcyAweDIwMDBhMjMxLCB0aGUgRFA4Mzg2NyBkcml2ZXIgcHJvYmUgZ2V0cyBraWNrZWQgb2ZmIGF1dG9tYXRpY2FsbHkuIFRoYXQmIzM5O3MgZ29vZCBkZXNpZ24uCgpOb3csIEkmIzM5O20gYWxyZWFkeSB0aGlua2luZyBhYm91dCB0aGUgYmlnZ2VyIHBpY3R1cmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGNvbm5lY3RzIHRvIHRoZSBicm9hZGVyIG5ldHdvcmsgY29uZmlndXJhdGlvbi4gSG93IGFyZSB0aGUgc3lzZnMgaW50ZXJmYWNlcywgbmV0bGluaywgZXRodG9vbCwgYW5kIHRoZSBMRUQgc3lzZnMgaW50ZWdyYXRlZCBpbnRvIHRoaXMgcHJvY2Vzcz8gSSBuZWVkIHRvIGRyaWxsIGRvd24gaW50byB0aGUgZGV0YWlscyBvZiB0aGUgTEVEIG1hbmFnZW1lbnQsIHNvIEkgc2hvdWxkIHNlZSBob3cgdGhlIGNhbGxiYWNrcyBhcmUgaW1wbGVtZW50ZWQgd2l0aGluIHRoZSBgZHA4Mzg2N2AgZHJpdmVyLgoKTGV0IG1lIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGUgYGRwODM4NjcuY2Agc291cmNlIGNvZGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZXMgMTAwMCB0byAxMzAwLiBUaGF0JiMzOTtzIHRoZSBsaWtlbHkgYXJlYSB3aGVyZSBMRUQtcmVsYXRlZCBjYWxsYmFja3MgYXJlIGRlZmluZWQuIFRoaXMgd2lsbCBoZWxwIG1lIHRyYWNlIGhvdyB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBzeXN0ZW0gdG8gY29udHJvbCBsaW5rIHN0YXR1cyBhbmQgYWN0aXZpdHkgTEVEcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMDA6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTIwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTIwMDpcdFx0XHRicmVhaztcbjEyMDE6XHRcdGNhc2UgRFA4Mzg2N19MRURfRk5fTElOS18xMDBfMTAwMF9CVDpcbjEyMDI6XHRcdFx0KnJ1bGVzID0gQklUKFRSSUdHRVJfTkVUREVWX0xJTktfMTAwKSB8IEJJVChUUklHR0VSX05FVERFVl9MSU5LXzEwMDApO1xuMTIwMzpcdFx0XHRicmVhaztcbjEyMDQ6XHRcdGNhc2UgRFA4Mzg2N19MRURfRk5fTElOS18xMF8xMDBfQlQ6XG4xMjA1Olx0XHRcdCpydWxlcyA9IEJJVChUUklHR0VSX05FVERFVl9MSU5LXzEwKSB8IEJJVChUUklHR0VSX05FVERFVl9MSU5LXzEwMCk7XG4xMjA2Olx0XHRcdGJyZWFrO1xuMTIwNzpcdFx0Y2FzZSBEUDgzODY3X0xFRF9GTl9MSU5LX1JYX1RYOlxuMTIwODpcdFx0XHQqcnVsZXMgPSBCSVQoVFJJR0dFUl9ORVRERVZfTElOSykgfCBCSVQoVFJJR0dFUl9ORVRERVZfVFgpIHxcbjEyMDk6XHRcdFx0XHQgQklUKFRSSUdHRVJfTkVUREVWX1JYKTtcbjEyMTA6XHRcdFx0YnJlYWs7XG4xMjExOlx0XHRkZWZhdWx0OlxuMTIxMjpcdFx0XHQqcnVsZXMgPSAwO1xuMTIxMzpcdFx0XHRicmVhaztcbjEyMTQ6XHRcdH1cbjEyMTU6XHRcbjEyMTY6XHRcdHJldHVybiAwO1xuMTIxNzpcdH1cbjEyMTg6XHRcbjEyMTk6XHRzdGF0aWMgaW50IGRwODM4NjdfbGVkX3BvbGFyaXR5X3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgaW5kZXgsXG4xMjIwOlx0XHRcdFx0XHQgICAgdW5zaWduZWQgbG9uZyBtb2RlcylcbjEyMjE6XHR7XG4xMjIyOlx0XHRzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlICpkcDgzODY3ID0gcGh5ZGV2LVx1MDAzZXByaXY7XG4xMjIzOlx0XHQvKiBEZWZhdWx0IGFjdGl2ZSBoaWdoICovXG4xMjI0Olx0XHR1MTYgcG9sYXJpdHkgPSBEUDgzODY3X0xFRF9QT0xBUklUWShpbmRleCk7XG4xMjI1Olx0XHR1MzIgbW9kZTtcbjEyMjY6XHRcdGludCByZXQ7XG4xMjI3Olx0XG4xMjI4Olx0XHRmb3JfZWFjaF9zZXRfYml0KG1vZGUsIFx1MDAyNm1vZGVzLCBfX1BIWV9MRURfTU9ERVNfTlVNKSB7XG4xMjI5Olx0XHRcdHN3aXRjaCAobW9kZSkge1xuMTIzMDpcdFx0XHRjYXNlIFBIWV9MRURfQUNUSVZFX0xPVzpcbjEyMzE6XHRcdFx0XHRwb2xhcml0eSA9IDA7XG4xMjMyOlx0XHRcdFx0YnJlYWs7XG4xMjMzOlx0XHRcdGRlZmF1bHQ6XG4xMjM0Olx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4xMjM1Olx0XHRcdH1cbjEyMzY6XHRcdH1cbjEyMzc6XHRcbjEyMzg6XHRcdG11dGV4X2xvY2soXHUwMDI2ZHA4Mzg2Ny1cdTAwM2VsZWRfbG9jayk7XG4xMjM5Olx0XHRyZXQgPSBfX2RwODM4NjdfbGVkX21vZGlmeShwaHlkZXYsIERQODM4NjdfTEVEQ1IyLFxuMTI0MDpcdFx0XHRcdFx0ICAgRFA4Mzg2N19MRURfUE9MQVJJVFkoaW5kZXgpLCBwb2xhcml0eSk7XG4xMjQxOlx0XHRtdXRleF91bmxvY2soXHUwMDI2ZHA4Mzg2Ny1cdTAwM2VsZWRfbG9jayk7XG4xMjQyOlx0XG4xMjQzOlx0XHRyZXR1cm4gcmV0O1xuMTI0NDpcdH1cbjEyNDU6XHRcbjEyNDY6XHRzdGF0aWMgdW5zaWduZWQgaW50IGRwODM4NjdfaW5iYW5kX2NhcHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbjEyNDc6XHRcdFx0XHRcdFx0cGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbjEyNDg6XHR7XG4xMjQ5Olx0XHRpZiAoaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSlcbjEyNTA6XHRcdFx0cmV0dXJuIExJTktfSU5CQU5EX0VOQUJMRSB8IExJTktfSU5CQU5EX0RJU0FCTEU7XG4xMjUxOlx0XG4xMjUyOlx0XHRyZXR1cm4gMDtcbjEyNTM6XHR9XG4xMjU0Olx0XG4xMjU1Olx0c3RhdGljIGludCBkcDgzODY3X2NvbmZpZ19pbmJhbmQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdW5zaWduZWQgaW50IG1vZGVzKVxuMTI1NjpcdHtcbjEyNTc6XHRcdGludCB2YWwgPSAwO1xuMTI1ODpcdFxuMTI1OTpcdFx0aWYgKG1vZGVzID09IExJTktfSU5CQU5EX0VOQUJMRSlcbjEyNjA6XHRcdFx0dmFsID0gRFA4Mzg2N19TR01JSV9BVVRPTkVHX0VOO1xuMTI2MTpcdFxuMTI2MjpcdFx0cmV0dXJuIHBoeV9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0NGRzIsIERQODM4NjdfU0dNSUlfQVVUT05FR19FTiwgdmFsKTtcbjEyNjM6XHR9XG4xMjY0Olx0XG4xMjY1Olx0c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGRwODM4NjdfZHJpdmVyW10gPSB7XG4xMjY2Olx0XHR7XG4xMjY3Olx0XHRcdC5waHlfaWRcdFx0PSBEUDgzODY3X1BIWV9JRCxcbjEyNjg6XHRcdFx0LnBoeV9pZF9tYXNrXHQ9IDB4ZmZmZmZmZjAsXG4xMjY5Olx0XHRcdC5uYW1lXHRcdD0gXCYjMzQ7VEkgRFA4Mzg2N1wmIzM0OyxcbjEyNzA6XHRcdFx0LyogUEhZX0dCSVRfRkVBVFVSRVMgKi9cbjEyNzE6XHRcbjEyNzI6XHRcdFx0LnByb2JlICAgICAgICAgID0gZHA4Mzg2N19wcm9iZSxcbjEyNzM6XHRcdFx0LmNvbmZpZ19pbml0XHQ9IGRwODM4NjdfY29uZmlnX2luaXQsXG4xMjc0Olx0XHRcdC5jb25maWdfYW5lZ1x0PSBkcDgzODY3X2NvbmZpZ19hbmVnLFxuMTI3NTpcdFx0XHQuc29mdF9yZXNldFx0PSBkcDgzODY3X3BoeV9yZXNldCxcbjEyNzY6XHRcbjEyNzc6XHRcdFx0LnJlYWRfc3RhdHVzXHQ9IGRwODM4NjdfcmVhZF9zdGF0dXMsXG4xMjc4Olx0XHRcdC5nZXRfdHVuYWJsZVx0PSBkcDgzODY3X2dldF90dW5hYmxlLFxuMTI3OTpcdFx0XHQuc2V0X3R1bmFibGVcdD0gZHA4Mzg2N19zZXRfdHVuYWJsZSxcbjEyODA6XHRcbjEyODE6XHRcdFx0LmdldF93b2xcdD0gZHA4Mzg2N19nZXRfd29sLFxuMTI4MjpcdFx0XHQuc2V0X3dvbFx0PSBkcDgzODY3X3NldF93b2wsXG4xMjgzOlx0XG4xMjg0Olx0XHRcdC8qIElSUSByZWxhdGVkICovXG4xMjg1Olx0XHRcdC5jb25maWdfaW50clx0PSBkcDgzODY3X2NvbmZpZ19pbnRyLFxuMTI4NjpcdFx0XHQuaGFuZGxlX2ludGVycnVwdCA9IGRwODM4NjdfaGFuZGxlX2ludGVycnVwdCxcbjEyODc6XHRcbjEyODg6XHRcdFx0LnN1c3BlbmRcdD0gZHA4Mzg2N19zdXNwZW5kLFxuMTI4OTpcdFx0XHQucmVzdW1lXHRcdD0gZHA4Mzg2N19yZXN1bWUsXG4xMjkwOlx0XG4xMjkxOlx0XHRcdC5saW5rX2NoYW5nZV9ub3RpZnkgPSBkcDgzODY3X2xpbmtfY2hhbmdlX25vdGlmeSxcbjEyOTI6XHRcdFx0LnNldF9sb29wYmFja1x0PSBkcDgzODY3X2xvb3BiYWNrLFxuMTI5MzpcdFxuMTI5NDpcdFx0XHQubGVkX2JyaWdodG5lc3Nfc2V0ID0gZHA4Mzg2N19sZWRfYnJpZ2h0bmVzc19zZXQsXG4xMjk1Olx0XHRcdC5sZWRfaHdfaXNfc3VwcG9ydGVkID0gZHA4Mzg2N19sZWRfaHdfaXNfc3VwcG9ydGVkLFxuMTI5NjpcdFx0XHQubGVkX2h3X2NvbnRyb2xfc2V0ID0gZHA4Mzg2N19sZWRfaHdfY29udHJvbF9zZXQsXG4xMjk3Olx0XHRcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBkcDgzODY3X2xlZF9od19jb250cm9sX2dldCxcbjEyOTg6XHRcdFx0LmxlZF9wb2xhcml0eV9zZXQgPSBkcDgzODY3X2xlZF9wb2xhcml0eV9zZXQsXG4xMjk5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDAwOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NTkwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRFA4Mzg2NyBQSFkgTEVEIENvbnRyb2wgSW1wbGVtZW50YXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhpcyBjaGFuZ2Ugc2V0IGZvciB0aGUgRFA4Mzg2NyBQSFkgTEVEIGNvbnRyb2wuIEkgc2VlIHNldmVyYWwgZnVuY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIGFkZGVkIG9yIG1vZGlmaWVkOiBgZHA4Mzg2N19sZWRfYnJpZ2h0bmVzc19zZXRgLCBgZHA4Mzg2N19sZWRfaHdfY29udHJvbF9zZXRgLCBgZHA4Mzg2N19sZWRfcG9sYXJpdHlfc2V0YCwgYGRwODM4NjdfbGVkX3Jlc3RvcmVgLCBgX19kcDgzODY3X2xlZF9tb2RpZnlgLCBgZHA4Mzg2N19jb25maWdfaW5pdGAsIGFuZCBgZHA4Mzg2N19wcm9iZWAuCgpGaXJzdCwgSSBub3RpY2UgYSBuZXcgYHN0cnVjdCBkcDgzODY3X3ByaXZhdGVgIG1lbWJlcjogYSBgc3RydWN0IG11dGV4IGxlZF9sb2NrYCBhbmQgYSBmZXcgYHUxNmAgbWVtYmVycyBmb3Igc3RvcmluZyBMRUQgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgKGBsZWRjcjFgLCBgbGVkY3IxX21hc2tgLCBgbGVkY3IyYCwgYGxlZGNyMl9tYXNrYCkuIE9rYXksIGEgbXV0ZXggbWFrZXMgc2Vuc2UgdG8gcHJvdGVjdCBhY2Nlc3MgdG8gdGhlIExFRCBjb25maWd1cmF0aW9uIHJlZ2lzdGVycy4gSSBhbHNvIG5vdGUgdGhhdCB0aGUgbXV0ZXggaXMgaW5pdGlhbGl6ZWQgaW4gYGRwODM4NjdfcHJvYmVgLgoKTmV4dCwgdGhlIG5ldyBgX19kcDgzODY3X2xlZF9tb2RpZnlgIGZ1bmN0aW9uIGxvb2tzIGltcG9ydGFudC4gSXQgY29udGFpbnMgYSBgV0FSTl9PTl9PTkNFKDEpYCBpZiB3ZSBhcmUgbm90IG1vZGlmeWluZyBgRFA4Mzg2N19MRURDUjFgIG9yIGBEUDgzODY3X0xFRENSMmAuIFNlZW1zIGxpa2UgYSBzYWZlZ3VhcmQgdG8gY2F0Y2ggaW5jb3JyZWN0IHJlZ2lzdGVyIGFjY2Vzcy4gR29vZCwgd2Ugd2FudCB0byBwcmV2ZW50IHVuaW50ZW5kZWQgd3JpdGVzLgoKYGRwODM4NjdfbGVkX3Jlc3RvcmVgIGFwcGVhcnMgdG8gYmUgZm9yIHJlcGxheWluZyB0aGUgTEVEIGNvbmZpZ3VyYXRpb24uIFRoaXMgZnVuY3Rpb24gbG9ja3MgdGhlIGBsZWRfbG9ja2AgYW5kIHJlcGxheXMgdGhlIHJlZ2lzdGVycyBgbGVkY3IxYCBhbmQgYGxlZGNyMmAuIFRoYXQgc291bmRzIGxpa2UgaXQmIzM5O3MgZm9yIHJlc3RvcmluZyBMRUQgc2V0dGluZ3MgYWZ0ZXIgYSBwb3dlciBjeWNsZSBvciByZXNldC4gQW5kIGBkcDgzODY3X2NvbmZpZ19pbml0YCBjYWxscyBpdCwgcHJlc3VtYWJseSB0byBpbml0aWFsaXplIHRoZSBMRUQgY29uZmlndXJhdGlvbiBkdXJpbmcgUEhZIGluaXRpYWxpemF0aW9uLgoKRmluYWxseSwgYGRwODM4NjdfbGVkX2JyaWdodG5lc3Nfc2V0YCwgYGRwODM4NjdfbGVkX2h3X2NvbnRyb2xfc2V0YCwgYW5kIGBkcDgzODY3X2xlZF9wb2xhcml0eV9zZXRgIGFsbCB1c2UgdGhlIGBsZWRfbG9ja2AgYW5kIGNhbGwgYF9fZHA4Mzg2N19sZWRfbW9kaWZ5YC4gVGhpcyBpbmRpY2F0ZXMgcHJvcGVyIGxvY2tpbmcgZm9yIG1vZGlmeWluZyB0aGUgTEVEIHNldHRpbmdzLgoKTm93LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgdGhlIEtjb25maWcgZGVwZW5kZW5jaWVzIGZvciBgRFA4Mzg2N19QSFlgIHRvIGVuc3VyZSBldmVyeXRoaW5nIGlzIHNldCB1cCBjb3JyZWN0bHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDAwOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEUDgzODY3X1BIWSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZz00NDY9Y29uZmlnIERQODM4NDhfUEhZXG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNDUwLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6NDUxOmNvbmZpZyBEUDgzODY3X1BIWVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNDUyLVx0dHJpc3RhdGUgXCYjMzQ7VGV4YXMgSW5zdHJ1bWVudHMgRFA4Mzg2NyBHaWdhYml0IFBIWVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwMDoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDY5MAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqS2NvbmZpZyBMaW5lIDQ1MSBBbmFseXNpcyoqCgpPa2F5LCBsZXQmIzM5O3MgemVybyBpbiBvbiBsaW5lIDQ1MSBpbiB0aGUgS2NvbmZpZyBmaWxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyBhcm91bmQgdGhhdCBzcGVjaWZpYyBsaW5lIG9mIGNvZGUuIE15IGdvYWwgaXMgdG8gcXVpY2tseSBncmFzcCB0aGUgY29udGV4dCwgaWRlbnRpZnkgYW55IHBvdGVudGlhbCBpc3N1ZXMgb3IgaW50ZXJlc3RpbmcgY29uZmlndXJhdGlvbnMsIGFuZCByZWxhdGUgaXQgYmFjayB0byB0aGUgYnJvYWRlciBwcm9qZWN0LiBJJiMzOTtsbCBuZWVkIHRvIHJlYWQgdGhlIHN1cnJvdW5kaW5nIGxpbmVzLCBsb29raW5nIGZvciBkZXBlbmRlbmNpZXMsIGRlZmF1bHQgdmFsdWVzLCBwcm9tcHRzLCBhbmQgYW55IGNvbmRpdGlvbmFsIGxvZ2ljIHRoYXQmIzM5O3MgYmVpbmcgZW1wbG95ZWQuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlICp3aHkqIGFzIG11Y2ggYXMgdGhlICp3aGF0KiAtIFdoeSBpcyB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGRlZmluZWQgaGVyZT8gV2hhdCYjMzk7cyBpdHMgcHVycG9zZSB3aXRoaW4gdGhlIGxhcmdlciBmZWF0dXJlIHNldD8gSXMgaXQgZGVwZW5kZW50IG9uIG90aGVyIHZhcmlhYmxlcyBvciBvcHRpb25zPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgcmVkIGZsYWdzPyBJIGV4cGVjdCB0byBpZGVudGlmeSB0aGUgZnVuY3Rpb24gb2YgdGhpcyBsaW5lIHdpdGhpbiBhIGZldyByZWFkcyBvZiB0aGUgc3Vycm91bmRpbmcgS2NvbmZpZyBlbGVtZW50cy4gSSYjMzk7bSBwcmVwYXJlZCB0byBtb3ZlIG9uIHF1aWNrbHkgaWYgdGhpcyBpcyBhIGxvdy1pbXBhY3Qgb3Igd2VsbC11bmRlcnN0b29kIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBidXQgSSYjMzk7bGwgZGlnIGRlZXBlciBpZiBpdCBzZWVtcyBjb21wbGV4IG9yIHJlbGF0ZWQgdG8gYSBmZWF0dXJlIEkmIzM5O20gY3VycmVudGx5IHdvcmtpbmcgd2l0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMDA6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDQwOlx0XG4gNDQxOlx0Y29uZmlnIERQODNUQzgxMV9QSFlcbiA0NDI6XHRcdHRyaXN0YXRlIFwmIzM0O1RleGFzIEluc3RydW1lbnRzIERQODNUQzgxMSBQSFlcJiMzNDtcbiA0NDM6XHRcdGhlbHBcbiA0NDQ6XHRcdCAgU3VwcG9ydHMgdGhlIERQODNUQzgxMSBQSFkuXG4gNDQ1Olx0XG4gNDQ2Olx0Y29uZmlnIERQODM4NDhfUEhZXG4gNDQ3Olx0XHR0cmlzdGF0ZSBcJiMzNDtUZXhhcyBJbnN0cnVtZW50cyBEUDgzODQ4IFBIWVwmIzM0O1xuIDQ0ODpcdFx0aGVscFxuIDQ0OTpcdFx0ICBTdXBwb3J0cyB0aGUgRFA4Mzg0OCBQSFkuXG4gNDUwOlx0XG4gNDUxOlx0Y29uZmlnIERQODM4NjdfUEhZXG4gNDUyOlx0XHR0cmlzdGF0ZSBcJiMzNDtUZXhhcyBJbnN0cnVtZW50cyBEUDgzODY3IEdpZ2FiaXQgUEhZXCYjMzQ7XG4gNDUzOlx0XHRoZWxwXG4gNDU0Olx0XHQgIEN1cnJlbnRseSBzdXBwb3J0cyB0aGUgRFA4Mzg2NyBQSFkuXG4gNDU1Olx0XG4gNDU2Olx0Y29uZmlnIERQODM4NjlfUEhZXG4gNDU3Olx0XHR0cmlzdGF0ZSBcJiMzNDtUZXhhcyBJbnN0cnVtZW50cyBEUDgzODY5IEdpZ2FiaXQgUEhZXCYjMzQ7XG4gNDU4Olx0XHRoZWxwXG4gNDU5Olx0XHQgIEN1cnJlbnRseSBzdXBwb3J0cyB0aGUgRFA4Mzg2OSBQSFkuICBUaGlzIFBIWSBzdXBwb3J0cyBjb3BwZXIgYW5kXG4gNDYwOlx0XHQgIGZpYmVyIGNvbm5lY3Rpb25zLlxuIDQ2MTpcdFxuIDQ2MjpcdGNvbmZpZyBEUDgzVEQ1MTBfUEhZXG4gNDYzOlx0XHR0cmlzdGF0ZSBcJiMzNDtUZXhhcyBJbnN0cnVtZW50cyBEUDgzVEQ1MTAgRXRoZXJuZXQgMTBCYXNlLVQxTCBQSFlcJiMzNDtcbiA0NjQ6XHRcdGhlbHBcbiA0NjU6XHRcdCAgU3VwcG9ydCBmb3IgdGhlIERQODNURDUxMCBFdGhlcm5ldCAxMEJhc2UtVDFMIFBIWS4gVGhpcyBQSFkgc3VwcG9ydHNcbiA0NjY6XHRcdCAgYSAxME0gc2luZ2xlIHBhaXIgRXRoZXJuZXQgY29ubmVjdGlvbiBmb3IgdXAgdG8gMTAwMCBtZXRlciBjYWJsZS5cbiA0Njc6XHRcbiA0Njg6XHRjb25maWcgRFA4M1RHNzIwX1BIWVxuIDQ2OTpcdFx0dHJpc3RhdGUgXCYjMzQ7VGV4YXMgSW5zdHJ1bWVudHMgRFA4M1RHNzIwIEV0aGVybmV0IDEwMDBCYXNlLVQxIFBIWVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwMDoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTQ2NwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNoZWNraW5nIHRoZSBQSFkgS2NvbmZpZyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGlzIFBIWSBkcml2ZXIuIE15IGZpcnN0IG1vdmUgaXMgdG8gZ28gc3RyYWlnaHQgdG8gYGRyaXZlcnMvbmV0L3BoeS9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBjb25maWd1cmF0aW9uIGRlY2lzaW9ucyBhcmUgbWFkZSBmb3IgdGhlc2UgUEhZIGNvbXBvbmVudHMuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGRlcGVuZGVuY2llcywgc2VsZWN0IHN0YXRlbWVudHMsIGFuZCBvcHRpb24gZGVmaW5pdGlvbnMgdGhhdCBkaWN0YXRlIHdoYXQgZ2V0cyBidWlsdCBhbmQgaW5jbHVkZWQgaW4gdGhlIGtlcm5lbCBpbWFnZS4gS25vd2luZyB0aGUgS2NvbmZpZyBpcyBrZXkgdG8gbmF2aWdhdGluZyB0aGUgYnJvYWRlciBkcml2ZXIgYXJjaGl0ZWN0dXJlIGFuZCB1bmRlcnN0YW5kaW5nIGhvdyBkaWZmZXJlbnQgUEhZIHR5cGVzIGFyZSBlbmFibGVkIGFuZCBkaXNhYmxlZC4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIGFueSBpbi1kZXB0aCBjb25maWd1cmF0aW9uIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwMDoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgUEhZIExheWVyIENvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0Y29uZmlnIFBIWUxJTktcbiAgIDc6XHRcdHRyaXN0YXRlXG4gICA4Olx0XHRzZWxlY3QgUEhZTElCXG4gICA5Olx0XHRzZWxlY3QgU1dQSFlcbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgUEhZbGluayBtb2RlbHMgdGhlIGxpbmsgYmV0d2VlbiB0aGUgUEhZIGFuZCBNQUMsIGFsbG93aW5nIGZpeGVkXG4gIDEyOlx0XHQgIGNvbmZpZ3VyYXRpb24gbGlua3MsIFBIWXMsIGFuZCBTZXJkZXMgbGlua3Mgd2l0aCBNQUMgbGV2ZWxcbiAgMTM6XHRcdCAgYXV0b25lZ290aWF0aW9uIG1vZGVzLlxuICAxNDpcdFxuICAxNTpcdG1lbnVjb25maWcgUEhZTElCXG4gIDE2Olx0XHR0cmlzdGF0ZSBcJiMzNDtQSFkgRGV2aWNlIHN1cHBvcnQgYW5kIGluZnJhc3RydWN0dXJlXCYjMzQ7XG4gIDE3Olx0XHRoZWxwXG4gIDE4Olx0XHQgIEV0aGVybmV0IGNvbnRyb2xsZXJzIGFyZSB1c3VhbGx5IGF0dGFjaGVkIHRvIFBIWVxuICAxOTpcdFx0ICBkZXZpY2VzLiAgVGhpcyBvcHRpb24gcHJvdmlkZXMgaW5mcmFzdHJ1Y3R1cmUgZm9yXG4gIDIwOlx0XHQgIG1hbmFnaW5nIFBIWSBkZXZpY2VzLlxuICAyMTpcdFxuICAyMjpcdGlmIFBIWUxJQlxuICAyMzpcdFxuICAyNDpcdGNvbmZpZyBTV1BIWVxuICAyNTpcdFx0Ym9vbFxuICAyNjpcdFxuICAyNzpcdGNvbmZpZyBQSFlfUEFDS0FHRVxuICAyODpcdFx0IHRyaXN0YXRlXG4gIDI5Olx0XG4gIDMwOlx0Y29uZmlnIExFRF9UUklHR0VSX1BIWVxuICAzMTpcdFx0Ym9vbCBcJiMzNDtTdXBwb3J0IExFRCB0cmlnZ2VycyBmb3IgdHJhY2tpbmcgbGluayBzdGF0ZVwmIzM0O1xuICAzMjpcdFx0ZGVwZW5kcyBvbiBMRURTX1RSSUdHRVJTXG4gIDMzOlx0XHRoZWxwXG4gIDM0Olx0XHQgIEFkZHMgc3VwcG9ydCBmb3IgYSBzZXQgb2YgTEVEIHRyaWdnZXIgZXZlbnRzIHBlci1QSFkuICBMaW5rXG4gIDM1Olx0XHQgIHN0YXRlIGNoYW5nZSB3aWxsIHRyaWdnZXIgdGhlIGV2ZW50cywgZm9yIGNvbnN1bXB0aW9uIGJ5IGFuXG4gIDM2Olx0XHQgIExFRCBjbGFzcyBkcml2ZXIuICBUaGVyZSBhcmUgdHJpZ2dlcnMgZm9yIGVhY2ggbGluayBzcGVlZCBjdXJyZW50bHlcbiAgMzc6XHRcdCAgc3VwcG9ydGVkIGJ5IHRoZSBQSFkgYW5kIGFsc28gYSBvbmUgY29tbW9uIFwmIzM0O2xpbmtcJiMzNDsgdHJpZ2dlciBhcyBhXG4gIDM4Olx0XHQgIGxvZ2ljYWwtb3Igb2YgYWxsIHRoZSBsaW5rIHNwZWVkIG9uZXMuXG4gIDM5Olx0XHQgIEFsbCB0aGVzZSB0cmlnZ2VycyBhcmUgbmFtZWQgYWNjb3JkaW5nIHRvIHRoZSBmb2xsb3dpbmcgcGF0dGVybjpcbiAgNDA6XHRcdCAgICAgIFx1MDAzY21paSBidXMgaWRcdTAwM2U6XHUwMDNjcGh5XHUwMDNlOlx1MDAzY3NwZWVkXHUwMDNlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDAwOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyMTIwCgkJCQkJCQlvdXRwdXQ6IDIyMQoJCQkJCQkJdGhvdWdodHM6IDc4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBEUDgzODY3IFBIWSBEcml2ZXI6IEEgUmVhY2hhYmlsaXR5IEFuYWx5c2lzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgUEhZTElCYCBhbmQgdGhlIGBEUDgzODY3X1BIWWAgZHJpdmVyLiBUaGUgY3J1Y2lhbCBxdWVzdGlvbiBpczogQ2FuIEkgZXZlbiByZWFjaCB0aGUgYERQODM4NjdfUEhZYCB3aXRoaW4gYSBmdXp6aW5nIGNvbnRleHQ/IEkgbmVlZCB0byBhbmFseXplIGl0cyByZWFjaGFiaWxpdHkuIEl0IHNlZW1zIGxpa2UgYW4gTURJTyBQSFkgZHJpdmVyLCBzbyBsZXQmIzM5O3Mgc2VlIGhvdyB0aGF0IHdvcmtzIGluIHN5emthbGxlci4KClJpZ2h0LCBVU0IgRXRoZXJuZXQgZHJpdmVycyBsaWtlIGBhc2l4YCwgYGF4ODgxNzJhYCwgYHNtc2M5NXh4YCBhbmQgb3RoZXJzLCB0aGV5IGNyZWF0ZSBNRElPIGJ1c2VzIHZpYSBgbWRpb2J1c19yZWdpc3RlcmAuICBUaGF0JiMzOTtzIGtleS4gQW5kIGluIGEgc3RhbmRhcmQgc3l6a2FsbGVyIHNldHVwIHdpdGggcmF3LWdhZGdldCBvciBVU0IgZW11bGF0aW9uLCBzeXprYWxsZXIgY2FuIGVtdWxhdGUgVVNCIEV0aGVybmV0IGRldmljZXMuICBTbyBmYXIsIHNvIGdvb2QuCgpXaGVuIHRoaXMgTURJTyBidXMgaXMgcmVnaXN0ZXJlZCwgaXQgaW50ZXJyb2dhdGVzIE1JSSByZWdpc3RlcnMgMiBhbmQgMyDigJMgYE1JSV9QSFlTSUQxYCBhbmQgYE1JSV9QSFlTSUQyYC4gIElmIHRoZSBlbXVsYXRlZCBVU0IgZGV2aWNlICpyZXNwb25kcyogd2l0aCB0aGUgUEhZIElEIGZvciBgRFA4Mzg2N19QSFlfSURgICgweDIwMDBhMjMxKSwgdGhlbiB0aGUgUEhZIHN1YnN5c3RlbSB3aWxsIG1hdGNoIHRoZSBgZHA4Mzg2N19kcml2ZXJgLiBCaW5nby4gSXQgd2lsbCB0cmlnZ2VyIGBkcDgzODY3X3Byb2JlYCBhbmQgdGhlbiBgZHA4Mzg2N19jb25maWdfaW5pdGAuCgpPbmNlIHByb2JlZCwgdGhhdCBvcGVucyB0aGUgZG9vciB0byB1c2Vyc3BhY2UgaW50ZXJhY3Rpb24gdmlhIGludGVyZmFjZXMgbGlrZSBldGh0b29sLCBzeXNmcyBMRUQgY2xhc3MsIG9yIG5ldGxpbmsuIFRoYXQgY291bGQgdGhlbiB0cmlnZ2VyIGAubGVkX2JyaWdodG5lc3Nfc2V0YCwgYC5sZWRfaHdfY29udHJvbF9zZXRgLCBgLmxlZF9wb2xhcml0eV9zZXRgLCBldGMuIG9yIGV2ZW4gYSByZS1pbml0aWFsaXphdGlvbiB0aHJvdWdoIGEgc29mdCByZXNldC4gIFRoYXQmIzM5O3MgYWxsIHBvdGVudGlhbGx5IGZ1enphYmxlLgoKSSBhbHNvIHNlZSB0aGF0IHRoaXMgcGF0Y2ggYWRkcyBhIG11dGV4IGBsZWRfbG9ja2AsIHNoYWRvdyBzdGF0ZSB3aXRoIGBsZWRjcjFgL2BsZWRjcjJgIGFuZCwgaW1wb3J0YW50bHksIGEgYFdBUk5fT05fT05DRSgxKWAgYXNzZXJ0aW9uIHdpdGhpbiBhIHJlYWNoYWJsZSBwYXRoOiBgX19kcDgzODY3X2xlZF9tb2RpZnlgLiBUaGlzIGlzIGEgYmlnIHJlZCBmbGFnIOKAkyB0aGF0JiMzOTtzIGEgcGVyZmVjdCB0YXJnZXQuCgpOb3csIGxldCYjMzk7cyBsb29rIGF0IHRoZSBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gY2hhbmdlZDogYF9fZHA4Mzg2N19sZWRfbW9kaWZ5YCwgYGRwODM4NjdfbGVkX3Jlc3RvcmVgLCBgZHA4Mzg2N19wcm9iZWAsIGBkcDgzODY3X2NvbmZpZ19pbml0YCwgYGRwODM4NjdfbGVkX2JyaWdodG5lc3Nfc2V0YCwgYGRwODM4NjdfbGVkX2h3X2NvbnRyb2xfc2V0YCwgYW5kIGBkcDgzODY3X2xlZF9wb2xhcml0eV9zZXRgLiBUaG9zZSBhcmUgbXkgdGFyZ2V0IGZ1bmN0aW9ucy4KCkkgbmVlZCB0byBmb2N1cyBvbiB0aGVzZSwgZXNwZWNpYWxseSB0aGUgb25lcyB0aGF0IGFyZW4mIzM5O3Qgc3RhdGljIG9yIHNwZWNpZmljIGZ1bmN0aW9ucywgdGhhdCBhcmUgZXhwb3J0ZWQ6IGBkcDgzODY3X2xlZF9icmlnaHRuZXNzX3NldGAsIGBkcDgzODY3X2xlZF9od19jb250cm9sX3NldGAsIGBkcDgzODY3X2xlZF9wb2xhcml0eV9zZXRgLCBgZHA4Mzg2N19jb25maWdfaW5pdGAsIGFuZCBgZHA4Mzg2N19wcm9iZWAuCgpJIG5lZWQgdG8gZW5hYmxlIHRoZXNlIGNvbmZpZ3M6IGBQSFlMSUJgIGFuZCBgRFA4Mzg2N19QSFlgLgoKTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrOgoqICAgKipSZWFjaGFiaWxpdHk/KiogQ2hlY2suIFZpYSBVU0IgZ2FkZ2V0IGVtdWxhdGlvbiBhbmQgVVNCIGV0aGVybmV0IHdpdGggTURJTyBidXMuCiogICAqKk5ldy9Nb2RpZmllZCBBc3NlcnRpb25zPyoqIFllcywgdGhhdCBgV0FSTl9PTl9PTkNFKDEpYCBpcyBwcmltZS4KKiAgICoqV29ydGggRnV6emluZz8qKiBBYnNvbHV0ZWx5LgoKQWxyaWdodCwgdGhhdCBjb3ZlcnMgaXQuICBMZXQmIzM5O3MgcHV0IHRvZ2V0aGVyIHRoZSByZXN1bHRzIGFuZCBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDAwOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQSFlMSUImIzM0OywKICAgICYjMzQ7RFA4Mzg2N19QSFkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkcDgzODY3X2xlZF9icmlnaHRuZXNzX3NldCYjMzQ7LAogICAgJiMzNDtkcDgzODY3X2xlZF9od19jb250cm9sX3NldCYjMzQ7LAogICAgJiMzNDtkcDgzODY3X2xlZF9wb2xhcml0eV9zZXQmIzM0OywKICAgICYjMzQ7ZHA4Mzg2N19jb25maWdfaW5pdCYjMzQ7LAogICAgJiMzNDtkcDgzODY3X3Byb2JlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUZXhhcyBJbnN0cnVtZW50cyBEUDgzODY3IFBIWSBkcml2ZXIgKGRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMpIGJ5IGludHJvZHVjaW5nIGEgbmV3IG11dGV4IChsZWRfbG9jaykgYW5kIHNoYWRvdyByZWdpc3RlcnMgdG8gcHJvcGVybHkgcmVzdG9yZSBMRUQgY29uZmlndXJhdGlvbnMgYWNyb3NzIHNvZnQgcmVzZXRzLCBhbG9uZyB3aXRoIHJ1bnRpbWUgYXNzZXJ0aW9ucyAoV0FSTl9PTl9PTkNFKS4gVGhlIGRyaXZlciBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgRXRoZXJuZXQgYWRhcHRlcnMgZXhwb3NpbmcgTURJTyBidXNlcy4gRnV6emluZyBpcyB3YXJyYW50ZWQgdG8gdmVyaWZ5IGNvbmN1cnJlbmN5IGFuZCBwcm9wZXIgc2VyaWFsaXphdGlvbiBiZXR3ZWVuIGNvbmZpZ19pbml0IHNvZnQtcmVzZXQgcmVzdG9yZSBhbmQgTEVEIGNvbnRyb2wgb3BlcmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UEhZTElCJiMzNDssCiAgICAmIzM0O0RQODM4NjdfUEhZJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZHA4Mzg2N19sZWRfYnJpZ2h0bmVzc19zZXQmIzM0OywKICAgICYjMzQ7ZHA4Mzg2N19sZWRfaHdfY29udHJvbF9zZXQmIzM0OywKICAgICYjMzQ7ZHA4Mzg2N19sZWRfcG9sYXJpdHlfc2V0JiMzNDssCiAgICAmIzM0O2RwODM4NjdfY29uZmlnX2luaXQmIzM0OywKICAgICYjMzQ7ZHA4Mzg2N19wcm9iZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgVGV4YXMgSW5zdHJ1bWVudHMgRFA4Mzg2NyBQSFkgZHJpdmVyIChkcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jKSBieSBpbnRyb2R1Y2luZyBhIG5ldyBtdXRleCAobGVkX2xvY2spIGFuZCBzaGFkb3cgcmVnaXN0ZXJzIHRvIHByb3Blcmx5IHJlc3RvcmUgTEVEIGNvbmZpZ3VyYXRpb25zIGFjcm9zcyBzb2Z0IHJlc2V0cywgYWxvbmcgd2l0aCBydW50aW1lIGFzc2VydGlvbnMgKFdBUk5fT05fT05DRSkuIFRoZSBkcml2ZXIgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIEV0aGVybmV0IGFkYXB0ZXJzIGV4cG9zaW5nIE1ESU8gYnVzZXMuIEZ1enppbmcgaXMgd2FycmFudGVkIHRvIHZlcmlmeSBjb25jdXJyZW5jeSBhbmQgcHJvcGVyIHNlcmlhbGl6YXRpb24gYmV0d2VlbiBjb25maWdfaW5pdCBzb2Z0LXJlc2V0IHJlc3RvcmUgYW5kIExFRCBjb250cm9sIG9wZXJhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDAwOjI5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMDA6Mjk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgc2hhZG93IG1lY2hhbmlzbSBhbmQgbXV0ZXggbG9ja2luZyBmb3IgTEVEIHJlZ2lzdGVycyBpbiB0aGUgRFA4Mzg2NyBQSFkgZHJpdmVyIChkcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jKS4gVGhlIHByaXZhdGUgc3RydWN0dXJlIGBzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlYCBpcyBhbGxvY2F0ZWQgdXNpbmcgYGRldm1fa3phbGxvYygpYCwgZW5zdXJpbmcgdGhhdCBhbGwgbmV3bHkgaW50cm9kdWNlZCBmaWVsZHMgKGBsZWRfbG9ja2AsIGBsZWRjcjFgLCBgbGVkY3IxX21hc2tgLCBgbGVkY3IyYCwgYGxlZGNyMl9tYXNrYCkgYXJlIGZ1bGx5IHplcm8taW5pdGlhbGl6ZWQuIEFsbCBsb2NhbCB2YXJpYWJsZXMgYXJlIHByb3Blcmx5IGluaXRpYWxpemVkIGJlZm9yZSB1c2UuIE5vIGRhdGEgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgaXMgYWNjZXNzZWQgb3IgYnJhbmNoZWQgdXBvbiwgYW5kIGFueSBwb3RlbnRpYWwgbG9ja2luZyBvciByYWNlIGJ1Z3MgYXJlIGhhbmRsZWQgYnkgc3RhbmRhcmQgc2FuaXRpemVycyBzdWNoIGFzIExPQ0tERVAgYW5kIEtBU0FOLiBUaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDQ0YzE2NWNhZjBjYzkwMjZiOTA3MDFkYmUyMWM0ZTc3MDgzNmFlMjYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIFNlcCA5IDAwOjI4OjUxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYyBiL2RyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMKaW5kZXggODgyNTVlOTJiNGNkYi4uZWViNGNkNjQ4Zjc0MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jCkBAIC04LDYgJiM0Mzs4LDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9rZXJuZWwuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9taWkuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9tb2R1bGUuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvbXV0ZXguaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9vZi5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BoeS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2RlbGF5LmgmZ3Q7CkBAIC0xOTYsNiAmIzQzOzE5NywxNiBAQCBzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlIHsKIAlib29sIHNldF9jbGtfb3V0cHV0OwogCXUzMiBjbGtfb3V0cHV0X3NlbDsKIAlib29sIHNnbWlpX3JlZl9jbGtfZW47CiYjNDM7CiYjNDM7CS8qIFNoYWRvdyBvZiB0aGUgTEVEIHJlZ2lzdGVycywgcmVwbGF5ZWQgYWZ0ZXIgYSBzb2Z0IHJlc2V0LiBsZWRfbG9jawomIzQzOwkgKiBzZXJpYWxpemVzIHRoZSBzaGFkb3cgYW5kIGl0cyByZXBsYXkgYWdhaW5zdCB0aGUgTEVEIGNhbGxiYWNrcywKJiM0MzsJICogYmVjYXVzZSBkcDgzODY3X2NvbmZpZ19pbml0KCkgZG9lcyB0aGUgcmVwbGF5IG9mZiBwaHlkZXYtJmd0O2xvY2suCiYjNDM7CSAqLwomIzQzOwlzdHJ1Y3QgbXV0ZXggbGVkX2xvY2s7CiYjNDM7CXUxNiBsZWRjcjE7CiYjNDM7CXUxNiBsZWRjcjFfbWFzazsKJiM0MzsJdTE2IGxlZGNyMjsKJiM0MzsJdTE2IGxlZGNyMl9tYXNrOwogfTsKIAogc3RhdGljIGludCBkcDgzODY3X2Fja19pbnRlcnJ1cHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKQEAgLTcyMiw2ICYjNDM7NzMzLDcgQEAgc3RhdGljIGludCBkcDgzODY3X3Jlc3VtZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogc3RhdGljIGludCBkcDgzODY3X3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiB7CiAJc3RydWN0IGRwODM4NjdfcHJpdmF0ZSAqZHA4Mzg2NzsKJiM0MzsJaW50IHJldDsKIAogCWRwODM4NjcgPSBkZXZtX2t6YWxsb2MoJmFtcDtwaHlkZXYtJmd0O21kaW8uZGV2LCBzaXplb2YoKmRwODM4NjcpLAogCQkJICAgICAgIEdGUF9LRVJORUwpOwpAQCAtNzMwLDkgJiM0Mzs3NDIsNjAgQEAgc3RhdGljIGludCBkcDgzODY3X3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiAKIAlwaHlkZXYtJmd0O3ByaXYgPSBkcDgzODY3OwogCiYjNDM7CXJldCA9IGRldm1fbXV0ZXhfaW5pdCgmYW1wO3BoeWRldi0mZ3Q7bWRpby5kZXYsICZhbXA7ZHA4Mzg2Ny0mZ3Q7bGVkX2xvY2spOwomIzQzOwlpZiAocmV0KQomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsKIAlyZXR1cm4gZHA4Mzg2N19vZl9pbml0KHBoeWRldik7CiB9CiAKJiM0MzsvKiBVcGRhdGUgYW4gTEVEIHJlZ2lzdGVyIGFuZCBtaXJyb3IgdGhlIGNoYW5nZSBpbnRvIHRoZSBzaGFkb3csIHNvIHRoYXQKJiM0MzsgKiBkcDgzODY3X2NvbmZpZ19pbml0KCkgY2FuIHJlcGxheSBpdCBhZnRlciBhIHNvZnQgcmVzZXQuIENhbGxlciBtdXN0IGhvbGQKJiM0MzsgKiBkcDgzODY3LSZndDtsZWRfbG9jay4KJiM0MzsgKi8KJiM0MztzdGF0aWMgaW50IF9fZHA4Mzg2N19sZWRfbW9kaWZ5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUzMiByZWcsCiYjNDM7CQkJCXUxNiBtYXNrLCB1MTYgdmFsKQomIzQzO3sKJiM0MzsJc3RydWN0IGRwODM4NjdfcHJpdmF0ZSAqZHA4Mzg2NyA9IHBoeWRldi0mZ3Q7cHJpdjsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJcmV0ID0gcGh5X21vZGlmeShwaHlkZXYsIHJlZywgbWFzaywgdmFsKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiYjNDM7CWlmIChyZWcgPT0gRFA4Mzg2N19MRURDUjEpIHsKJiM0MzsJCWRwODM4NjctJmd0O2xlZGNyMSA9IChkcDgzODY3LSZndDtsZWRjcjEgJmFtcDsgfm1hc2spIHwgKHZhbCAmYW1wOyBtYXNrKTsKJiM0MzsJCWRwODM4NjctJmd0O2xlZGNyMV9tYXNrIHw9IG1hc2s7CiYjNDM7CX0gZWxzZSBpZiAocmVnID09IERQODM4NjdfTEVEQ1IyKSB7CiYjNDM7CQlkcDgzODY3LSZndDtsZWRjcjIgPSAoZHA4Mzg2Ny0mZ3Q7bGVkY3IyICZhbXA7IH5tYXNrKSB8ICh2YWwgJmFtcDsgbWFzayk7CiYjNDM7CQlkcDgzODY3LSZndDtsZWRjcjJfbWFzayB8PSBtYXNrOwomIzQzOwl9IGVsc2UgewomIzQzOwkJV0FSTl9PTl9PTkNFKDEpOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MzsvKiBSZXN0b3JlIHRoZSBMRUQgcmVnaXN0ZXJzIHRoZSBkcml2ZXIgaGFzIHByb2dyYW1tZWQsIGNsZWFyZWQgYnkgdGhlIHNvZnQKJiM0MzsgKiByZXNldCBpbiBkcDgzODY3X3BoeV9yZXNldCgpLgomIzQzOyAqLwomIzQzO3N0YXRpYyBpbnQgZHA4Mzg2N19sZWRfcmVzdG9yZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQomIzQzO3sKJiM0MzsJc3RydWN0IGRwODM4NjdfcHJpdmF0ZSAqZHA4Mzg2NyA9IHBoeWRldi0mZ3Q7cHJpdjsKJiM0MzsJaW50IHJldCA9IDA7CiYjNDM7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtkcDgzODY3LSZndDtsZWRfbG9jayk7CiYjNDM7CWlmIChkcDgzODY3LSZndDtsZWRjcjFfbWFzaykKJiM0MzsJCXJldCA9IHBoeV9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMSwKJiM0MzsJCQkJIGRwODM4NjctJmd0O2xlZGNyMV9tYXNrLCBkcDgzODY3LSZndDtsZWRjcjEpOwomIzQzOwlpZiAoIXJldCAmYW1wOyZhbXA7IGRwODM4NjctJmd0O2xlZGNyMl9tYXNrKQomIzQzOwkJcmV0ID0gcGh5X21vZGlmeShwaHlkZXYsIERQODM4NjdfTEVEQ1IyLAomIzQzOwkJCQkgZHA4Mzg2Ny0mZ3Q7bGVkY3IyX21hc2ssIGRwODM4NjctJmd0O2xlZGNyMik7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2RwODM4NjctJmd0O2xlZF9sb2NrKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJldDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IGRwODM4NjdfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIHsKIAlzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlICpkcDgzODY3ID0gcGh5ZGV2LSZndDtwcml2OwpAQCAtODk2LDYgJiM0Mzs5NTksMTAgQEAgc3RhdGljIGludCBkcDgzODY3X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiAJCQkgICAgICAgbWFzaywgdmFsKTsKIAl9CiAKJiM0MzsJcmV0ID0gZHA4Mzg2N19sZWRfcmVzdG9yZShwaHlkZXYpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJcGh5ZGV2X3dhcm4ocGh5ZGV2LCAmIzM0O2ZhaWxlZCB0byByZXN0b3JlIExFRCBjb25maWc6ICVkXG4mIzM0OywgcmV0KTsKJiM0MzsKIAlyZXR1cm4gMDsKIH0KIApAQCAtMTAwNCw3ICYjNDM7MTA3MSw5IEBAIHN0YXRpYyBpbnQKIGRwODM4NjdfbGVkX2JyaWdodG5lc3Nfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsCiAJCQkgICB1OCBpbmRleCwgZW51bSBsZWRfYnJpZ2h0bmVzcyBicmlnaHRuZXNzKQogewotCXUzMiB2YWw7CiYjNDM7CXN0cnVjdCBkcDgzODY3X3ByaXZhdGUgKmRwODM4NjcgPSBwaHlkZXYtJmd0O3ByaXY7CiYjNDM7CXUxNiB2YWw7CiYjNDM7CWludCByZXQ7CiAKIAlpZiAoaW5kZXggJmd0Oz0gRFA4Mzg2N19MRURfQ09VTlQpCiAJCXJldHVybiAtRUlOVkFMOwpAQCAtMTAxNSwxMCAmIzQzOzEwODQsMTMgQEAgZHA4Mzg2N19sZWRfYnJpZ2h0bmVzc19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwKIAlpZiAoYnJpZ2h0bmVzcykKIAkJdmFsIHw9IERQODM4NjdfTEVEX0RSVl9WQUwoaW5kZXgpOwogCi0JcmV0dXJuIHBoeV9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMiwKLQkJCSAgRFA4Mzg2N19MRURfRFJWX1ZBTChpbmRleCkgfAotCQkJICBEUDgzODY3X0xFRF9EUlZfRU4oaW5kZXgpLAotCQkJICB2YWwpOwomIzQzOwltdXRleF9sb2NrKCZhbXA7ZHA4Mzg2Ny0mZ3Q7bGVkX2xvY2spOwomIzQzOwlyZXQgPSBfX2RwODM4NjdfbGVkX21vZGlmeShwaHlkZXYsIERQODM4NjdfTEVEQ1IyLAomIzQzOwkJCQkgICBEUDgzODY3X0xFRF9EUlZfVkFMKGluZGV4KSB8CiYjNDM7CQkJCSAgIERQODM4NjdfTEVEX0RSVl9FTihpbmRleCksIHZhbCk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2RwODM4NjctJmd0O2xlZF9sb2NrKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGludCBkcDgzODY3X2xlZF9tb2RlKHU4IGluZGV4LCB1bnNpZ25lZCBsb25nIHJ1bGVzKQpAQCAtMTA2OSwxOCAmIzQzOzExNDEsMjQgQEAgc3RhdGljIGludCBkcDgzODY3X2xlZF9od19pc19zdXBwb3J0ZWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsCiBzdGF0aWMgaW50IGRwODM4NjdfbGVkX2h3X2NvbnRyb2xfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LAogCQkJCSAgICAgIHVuc2lnbmVkIGxvbmcgcnVsZXMpCiB7CiYjNDM7CXN0cnVjdCBkcDgzODY3X3ByaXZhdGUgKmRwODM4NjcgPSBwaHlkZXYtJmd0O3ByaXY7CiAJaW50IG1vZGUsIHJldDsKIAogCW1vZGUgPSBkcDgzODY3X2xlZF9tb2RlKGluZGV4LCBydWxlcyk7CiAJaWYgKG1vZGUgJmx0OyAwKQogCQlyZXR1cm4gbW9kZTsKIAotCXJldCA9IHBoeV9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMSwgRFA4Mzg2N19MRURfRk5fTUFTSyhpbmRleCksCi0JCQkgRFA4Mzg2N19MRURfRk4oaW5kZXgsIG1vZGUpKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCi0JcmV0dXJuIHBoeV9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMiwgRFA4Mzg2N19MRURfRFJWX0VOKGluZGV4KSwgMCk7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtkcDgzODY3LSZndDtsZWRfbG9jayk7CiYjNDM7CXJldCA9IF9fZHA4Mzg2N19sZWRfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjEsCiYjNDM7CQkJCSAgIERQODM4NjdfTEVEX0ZOX01BU0soaW5kZXgpLAomIzQzOwkJCQkgICBEUDgzODY3X0xFRF9GTihpbmRleCwgbW9kZSkpOwomIzQzOwlpZiAoIXJldCkKJiM0MzsJCXJldCA9IF9fZHA4Mzg2N19sZWRfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjIsCiYjNDM7CQkJCQkgICBEUDgzODY3X0xFRF9EUlZfRU4oaW5kZXgpIHwKJiM0MzsJCQkJCSAgIERQODM4NjdfTEVEX0RSVl9WQUwoaW5kZXgpLCAwKTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7ZHA4Mzg2Ny0mZ3Q7bGVkX2xvY2spOwomIzQzOwomIzQzOwlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgaW50IGRwODM4NjdfbGVkX2h3X2NvbnRyb2xfZ2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LApAQCAtMTE0MSw5ICYjNDM7MTIxOSwxMSBAQCBzdGF0aWMgaW50IGRwODM4NjdfbGVkX2h3X2NvbnRyb2xfZ2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LAogc3RhdGljIGludCBkcDgzODY3X2xlZF9wb2xhcml0eV9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGluZGV4LAogCQkJCSAgICB1bnNpZ25lZCBsb25nIG1vZGVzKQogewomIzQzOwlzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlICpkcDgzODY3ID0gcGh5ZGV2LSZndDtwcml2OwogCS8qIERlZmF1bHQgYWN0aXZlIGhpZ2ggKi8KIAl1MTYgcG9sYXJpdHkgPSBEUDgzODY3X0xFRF9QT0xBUklUWShpbmRleCk7CiAJdTMyIG1vZGU7CiYjNDM7CWludCByZXQ7CiAKIAlmb3JfZWFjaF9zZXRfYml0KG1vZGUsICZhbXA7bW9kZXMsIF9fUEhZX0xFRF9NT0RFU19OVU0pIHsKIAkJc3dpdGNoIChtb2RlKSB7CkBAIC0xMTU0LDggJiM0MzsxMjM0LDEzIEBAIHN0YXRpYyBpbnQgZHA4Mzg2N19sZWRfcG9sYXJpdHlfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpbmRleCwKIAkJCXJldHVybiAtRUlOVkFMOwogCQl9CiAJfQotCXJldHVybiBwaHlfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjIsCi0JCQkgIERQODM4NjdfTEVEX1BPTEFSSVRZKGluZGV4KSwgcG9sYXJpdHkpOwomIzQzOwomIzQzOwltdXRleF9sb2NrKCZhbXA7ZHA4Mzg2Ny0mZ3Q7bGVkX2xvY2spOwomIzQzOwlyZXQgPSBfX2RwODM4NjdfbGVkX21vZGlmeShwaHlkZXYsIERQODM4NjdfTEVEQ1IyLAomIzQzOwkJCQkgICBEUDgzODY3X0xFRF9QT0xBUklUWShpbmRleCksIHBvbGFyaXR5KTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7ZHA4Mzg2Ny0mZ3Q7bGVkX2xvY2spOwomIzQzOwomIzQzOwlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgdW5zaWduZWQgaW50IGRwODM4NjdfaW5iYW5kX2NhcHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDAwOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2NDgKCQkJCQkJCW91dHB1dDogMTkzCgkJCQkJCQl0aG91Z2h0czogODQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktNU0FOIEV2YWx1YXRpb246IGRwODM4NjcgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgdGFzayBpcyB0byBldmFsdWF0ZSB0aGlzIHBhdGNoIHRvIGBkcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jYCBhbmQgZGVjaWRlIGlmIGl0IHdhcnJhbnRzIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4gVGhlIHByaW1hcnkgY2hhbmdlIHNlZW1zIHRvIGJlIHRoZSBhZGRpdGlvbiBvZiBhIG11dGV4IChgbGVkX2xvY2tgKSBhbmQgc2hhZG93IHJlZ2lzdGVycyAoYGxlZGNyMWAsIGBsZWRjcjFfbWFza2AsIGBsZWRjcjJgLCBgbGVkY3IyX21hc2tgKSB3aXRoaW4gdGhlIGBkcDgzODY3X3ByaXZhdGVgIHN0cnVjdC4gVGhpcyBpcyBhbGwgYWJvdXQgbWFuYWdpbmcgTEVEIHJlZ2lzdGVyIHNldHRpbmdzIGluIHRoZSBQSFkgZHJpdmVyLCBpbmNsdWRpbmcgcmVnaXN0ZXIgY2FjaGluZyBhbmQgcmVzdG9yYXRpb24gYWZ0ZXIgc29mdCByZXNldHMsIGFuZCBlbnN1cmluZyBzeW5jaHJvbml6YXRpb24uCgpGaXJzdCwgSSBuZWVkIHRvIGNoZWNrIGZvciBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgbGVha3MuIFRoZSBwYXRjaCB1c2VzIGBkZXZtX2t6YWxsb2NgIHRvIGFsbG9jYXRlIHRoZSBgZHA4Mzg2N2Agc3RydWN0dXJlLCB3aGljaCBtZWFucyBhbGwgdGhlIG5ldyBmaWVsZHMsIGluY2x1ZGluZyB0aG9zZSByZWxhdGVkIHRvIHRoZSBMRUQgZnVuY3Rpb25hbGl0eSwgYXJlIGd1YXJhbnRlZWQgdG8gYmUgemVyby1pbml0aWFsaXplZC4gSSBzZWUgdGhhdCBgZHA4Mzg2N19sZWRfcmVzdG9yZWAgdXNlcyB0aGUgbWFzayBmaWVsZHMsIGJ1dCB0aGV5IGFyZSBlaXRoZXIgemVyby1pbml0aWFsaXplZCBvciB3cml0dGVuIHRvIGZpcnN0LiBJIGRvbiYjMzk7dCBzZWUgYW55IGRhdGEgYmVpbmcgY29waWVkIHRvIHVzZXJzcGFjZSB2aWEgYGNvcHlfdG9fdXNlcmAsIGlvY3RsLCBvciBuZXRsaW5rLCBlbGltaW5hdGluZyB0aGF0IHZlY3Rvci4gVGhlIGxvY2FsIHZhcmlhYmxlcyAoYHJldGAsIGBkcDgzODY3YCwgYHZhbGAsIGV0Yy4pIGFyZSBhbHNvIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgYmVmb3JlIHVzZSwgYSBzdGFuZGFyZCBwcmFjdGljZSBJIGV4cGVjdCB0byBzZWUsIHdoaWNoIGlzIGdvb2QuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2VzIGlzIGNlbnRlcmVkIGFyb3VuZCByZWdpc3RlciBhY2Nlc3MgYW5kIGxvY2tpbmcsIG5vdCBpbnRyb2R1Y2luZyBuZXcgZGF0YSBzdHJ1Y3R1cmVzIG9yIGNvbXBsZXggZmxvd3MgdGhhdCB3b3VsZCBiZSBhIHJlZCBmbGFnLgoKR2l2ZW4gdGhhdCB0aGUgY2hhbmdlIGZvY3VzZXMgb24gY2FjaGluZy9yZXN0b3JpbmcgaGFyZHdhcmUgcmVnaXN0ZXIgdmFsdWVzIGFuZCBhZGRpbmcgYSBtdXRleCwgdGhlcmUmIzM5O3Mgbm8gb2J2aW91cyBwYXRoIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLiBUaGUgYWxsb2NhdGlvbiBpcyB6ZXJvZWQsIG5vIHVzZXItc3BhY2UgZGF0YSBsZWFrcywgYW5kIGxvY2FsIHZhcmlhYmxlcyBhcmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuIExvY2tkZXAgYW5kIEtBU0FOIHdvdWxkIGNhdGNoIGFueSBjb25jdXJyZW5jeSBpc3N1ZXMuCgpMZXQmIzM5O3MgcXVpY2tseSByZS1pdGVyYXRlIHRoZSBmb3VyIGNyaXRlcmlhIHRvIGJlIGNlcnRhaW46CgoxLiAgS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlPyBOb3BlLgoyLiAgQ29uZGl0aW9uYWwgbG9naWMgZGVwZW5kaW5nIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzPyBOb3QgYSBjaGFuY2UuIFRoZSBga3phbGxvY2AgZ3VhcmFudGVlcyBpbml0aWFsaXphdGlvbiwgYW5kIHRoZSBsb2dpYyB1c2VzIGxvY2FsIHZhcmlhYmxlcy4KMy4gIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMgY291bGQgYmUgcmVhZCBsYXRlcj8gWmVyby1pbml0aWFsaXplZCwgc28gbm8uCjQuICBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyB0aGF0IGFjY2Vzc2VzIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycz8gTm90aGluZyBsaWtlIHRoYXQgaGVyZS4KClRoZXJlZm9yZSwgYWZ0ZXIgYSB0aG9yb3VnaCByZXZpZXcsIG15IGNvbmNsdXNpb24gaXMgdGhhdCB0aGlzIHBhdGNoICpkb2VzIG5vdCoganVzdGlmeSBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uLiBUaGUgYE5lZWRzS01TQU5gIGZsYWcgc2hvdWxkIGJlIHNldCB0byBgZmFsc2VgLiBUaW1lIHRvIGNvbnN0cnVjdCBteSByZXNwb25zZSBhbmQgc2V0IHRoZSByZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwMDoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgc2hhZG93IG1lY2hhbmlzbSBhbmQgbXV0ZXggbG9ja2luZyBmb3IgTEVEIHJlZ2lzdGVycyBpbiB0aGUgRFA4Mzg2NyBQSFkgZHJpdmVyIChkcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jKS4gVGhlIHByaXZhdGUgc3RydWN0dXJlIGBzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlYCBpcyBhbGxvY2F0ZWQgdXNpbmcgYGRldm1fa3phbGxvYygpYCwgZW5zdXJpbmcgdGhhdCBhbGwgbmV3bHkgaW50cm9kdWNlZCBmaWVsZHMgKGBsZWRfbG9ja2AsIGBsZWRjcjFgLCBgbGVkY3IxX21hc2tgLCBgbGVkY3IyYCwgYGxlZGNyMl9tYXNrYCkgYXJlIGZ1bGx5IHplcm8taW5pdGlhbGl6ZWQuIEFsbCBsb2NhbCB2YXJpYWJsZXMgYXJlIHByb3Blcmx5IGluaXRpYWxpemVkIGJlZm9yZSB1c2UuIE5vIGRhdGEgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgaXMgYWNjZXNzZWQgb3IgYnJhbmNoZWQgdXBvbiwgYW5kIGFueSBwb3RlbnRpYWwgbG9ja2luZyBvciByYWNlIGJ1Z3MgYXJlIGhhbmRsZWQgYnkgc3RhbmRhcmQgc2FuaXRpemVycyBzdWNoIGFzIExPQ0tERVAgYW5kIEtBU0FOLiBUaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBzaGFkb3cgbWVjaGFuaXNtIGFuZCBtdXRleCBsb2NraW5nIGZvciBMRUQgcmVnaXN0ZXJzIGluIHRoZSBEUDgzODY3IFBIWSBkcml2ZXIgKGRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMpLiBUaGUgcHJpdmF0ZSBzdHJ1Y3R1cmUgYHN0cnVjdCBkcDgzODY3X3ByaXZhdGVgIGlzIGFsbG9jYXRlZCB1c2luZyBgZGV2bV9remFsbG9jKClgLCBlbnN1cmluZyB0aGF0IGFsbCBuZXdseSBpbnRyb2R1Y2VkIGZpZWxkcyAoYGxlZF9sb2NrYCwgYGxlZGNyMWAsIGBsZWRjcjFfbWFza2AsIGBsZWRjcjJgLCBgbGVkY3IyX21hc2tgKSBhcmUgZnVsbHkgemVyby1pbml0aWFsaXplZC4gQWxsIGxvY2FsIHZhcmlhYmxlcyBhcmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQgYmVmb3JlIHVzZS4gTm8gZGF0YSBpcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgbm8gdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSBpcyBhY2Nlc3NlZCBvciBicmFuY2hlZCB1cG9uLCBhbmQgYW55IHBvdGVudGlhbCBsb2NraW5nIG9yIHJhY2UgYnVncyBhcmUgaGFuZGxlZCBieSBzdGFuZGFyZCBzYW5pdGl6ZXJzIHN1Y2ggYXMgTE9DS0RFUCBhbmQgS0FTQU4uIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wOVQwMDoyODo1Mi4wMzg1MzYwMDRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDI5ODAzMDg3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQSFlMSUJcIixcbiAgICBcIkRQODM4NjdfUEhZXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZHA4Mzg2N19sZWRfYnJpZ2h0bmVzc19zZXRcIixcbiAgICBcImRwODM4NjdfbGVkX2h3X2NvbnRyb2xfc2V0XCIsXG4gICAgXCJkcDgzODY3X2xlZF9wb2xhcml0eV9zZXRcIixcbiAgICBcImRwODM4NjdfY29uZmlnX2luaXRcIixcbiAgICBcImRwODM4NjdfcHJvYmVcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBzaGFkb3cgbWVjaGFuaXNtIGFuZCBtdXRleCBsb2NraW5nIGZvciBMRUQgcmVnaXN0ZXJzIGluIHRoZSBEUDgzODY3IFBIWSBkcml2ZXIgKGRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMpLiBUaGUgcHJpdmF0ZSBzdHJ1Y3R1cmUgYHN0cnVjdCBkcDgzODY3X3ByaXZhdGVgIGlzIGFsbG9jYXRlZCB1c2luZyBgZGV2bV9remFsbG9jKClgLCBlbnN1cmluZyB0aGF0IGFsbCBuZXdseSBpbnRyb2R1Y2VkIGZpZWxkcyAoYGxlZF9sb2NrYCwgYGxlZGNyMWAsIGBsZWRjcjFfbWFza2AsIGBsZWRjcjJgLCBgbGVkY3IyX21hc2tgKSBhcmUgZnVsbHkgemVyby1pbml0aWFsaXplZC4gQWxsIGxvY2FsIHZhcmlhYmxlcyBhcmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQgYmVmb3JlIHVzZS4gTm8gZGF0YSBpcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgbm8gdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSBpcyBhY2Nlc3NlZCBvciBicmFuY2hlZCB1cG9uLCBhbmQgYW55IHBvdGVudGlhbCBsb2NraW5nIG9yIHJhY2UgYnVncyBhcmUgaGFuZGxlZCBieSBzdGFuZGFyZCBzYW5pdGl6ZXJzIHN1Y2ggYXMgTE9DS0RFUCBhbmQgS0FTQU4uIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUZXhhcyBJbnN0cnVtZW50cyBEUDgzODY3IFBIWSBkcml2ZXIgKGRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMpIGJ5IGludHJvZHVjaW5nIGEgbmV3IG11dGV4IChsZWRfbG9jaykgYW5kIHNoYWRvdyByZWdpc3RlcnMgdG8gcHJvcGVybHkgcmVzdG9yZSBMRUQgY29uZmlndXJhdGlvbnMgYWNyb3NzIHNvZnQgcmVzZXRzLCBhbG9uZyB3aXRoIHJ1bnRpbWUgYXNzZXJ0aW9ucyAoV0FSTl9PTl9PTkNFKS4gVGhlIGRyaXZlciBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgRXRoZXJuZXQgYWRhcHRlcnMgZXhwb3NpbmcgTURJTyBidXNlcy4gRnV6emluZyBpcyB3YXJyYW50ZWQgdG8gdmVyaWZ5IGNvbmN1cnJlbmN5IGFuZCBwcm9wZXIgc2VyaWFsaXphdGlvbiBiZXR3ZWVuIGNvbmZpZ19pbml0IHNvZnQtcmVzZXQgcmVzdG9yZSBhbmQgTEVEIGNvbnRyb2wgb3BlcmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMDA6Mjg6NTIuMDM4NTQxMjA0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDQzNzc5NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0NGMxNjVjYWYwY2M5MDI2YjkwNzAxZGJlMjFjNGU3NzA4MzZhZTI2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgU2VwIDkgMDA6Mjg6NTEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYyBiL2RyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmNcXG5pbmRleCA4ODI1NWU5MmI0Y2RiLi5lZWI0Y2Q2NDhmNzQzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmNcXG4rKysgYi9kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jXFxuQEAgLTgsNiArOCw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9rZXJuZWwuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21paS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9tdXRleC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvb2YuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BoeS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZGVsYXkuaFxcdTAwM2VcXG5AQCAtMTk2LDYgKzE5NywxNiBAQCBzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlIHtcXG4gXFx0Ym9vbCBzZXRfY2xrX291dHB1dDtcXG4gXFx0dTMyIGNsa19vdXRwdXRfc2VsO1xcbiBcXHRib29sIHNnbWlpX3JlZl9jbGtfZW47XFxuK1xcbitcXHQvKiBTaGFkb3cgb2YgdGhlIExFRCByZWdpc3RlcnMsIHJlcGxheWVkIGFmdGVyIGEgc29mdCByZXNldC4gbGVkX2xvY2tcXG4rXFx0ICogc2VyaWFsaXplcyB0aGUgc2hhZG93IGFuZCBpdHMgcmVwbGF5IGFnYWluc3QgdGhlIExFRCBjYWxsYmFja3MsXFxuK1xcdCAqIGJlY2F1c2UgZHA4Mzg2N19jb25maWdfaW5pdCgpIGRvZXMgdGhlIHJlcGxheSBvZmYgcGh5ZGV2LVxcdTAwM2Vsb2NrLlxcbitcXHQgKi9cXG4rXFx0c3RydWN0IG11dGV4IGxlZF9sb2NrO1xcbitcXHR1MTYgbGVkY3IxO1xcbitcXHR1MTYgbGVkY3IxX21hc2s7XFxuK1xcdHUxNiBsZWRjcjI7XFxuK1xcdHUxNiBsZWRjcjJfbWFzaztcXG4gfTtcXG4gXFxuIHN0YXRpYyBpbnQgZHA4Mzg2N19hY2tfaW50ZXJydXB0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuQEAgLTcyMiw2ICs3MzMsNyBAQCBzdGF0aWMgaW50IGRwODM4NjdfcmVzdW1lKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuIHN0YXRpYyBpbnQgZHA4Mzg2N19wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiB7XFxuIFxcdHN0cnVjdCBkcDgzODY3X3ByaXZhdGUgKmRwODM4Njc7XFxuK1xcdGludCByZXQ7XFxuIFxcbiBcXHRkcDgzODY3ID0gZGV2bV9remFsbG9jKFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2LCBzaXplb2YoKmRwODM4NjcpLFxcbiBcXHRcXHRcXHQgICAgICAgR0ZQX0tFUk5FTCk7XFxuQEAgLTczMCw5ICs3NDIsNjAgQEAgc3RhdGljIGludCBkcDgzODY3X3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuIFxcbiBcXHRwaHlkZXYtXFx1MDAzZXByaXYgPSBkcDgzODY3O1xcbiBcXG4rXFx0cmV0ID0gZGV2bV9tdXRleF9pbml0KFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2LCBcXHUwMDI2ZHA4Mzg2Ny1cXHUwMDNlbGVkX2xvY2spO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4gXFx0cmV0dXJuIGRwODM4Njdfb2ZfaW5pdChwaHlkZXYpO1xcbiB9XFxuIFxcbisvKiBVcGRhdGUgYW4gTEVEIHJlZ2lzdGVyIGFuZCBtaXJyb3IgdGhlIGNoYW5nZSBpbnRvIHRoZSBzaGFkb3csIHNvIHRoYXRcXG4rICogZHA4Mzg2N19jb25maWdfaW5pdCgpIGNhbiByZXBsYXkgaXQgYWZ0ZXIgYSBzb2Z0IHJlc2V0LiBDYWxsZXIgbXVzdCBob2xkXFxuKyAqIGRwODM4NjctXFx1MDAzZWxlZF9sb2NrLlxcbisgKi9cXG4rc3RhdGljIGludCBfX2RwODM4NjdfbGVkX21vZGlmeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MzIgcmVnLFxcbitcXHRcXHRcXHRcXHR1MTYgbWFzaywgdTE2IHZhbClcXG4re1xcbitcXHRzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlICpkcDgzODY3ID0gcGh5ZGV2LVxcdTAwM2Vwcml2O1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0cmV0ID0gcGh5X21vZGlmeShwaHlkZXYsIHJlZywgbWFzaywgdmFsKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdGlmIChyZWcgPT0gRFA4Mzg2N19MRURDUjEpIHtcXG4rXFx0XFx0ZHA4Mzg2Ny1cXHUwMDNlbGVkY3IxID0gKGRwODM4NjctXFx1MDAzZWxlZGNyMSBcXHUwMDI2IH5tYXNrKSB8ICh2YWwgXFx1MDAyNiBtYXNrKTtcXG4rXFx0XFx0ZHA4Mzg2Ny1cXHUwMDNlbGVkY3IxX21hc2sgfD0gbWFzaztcXG4rXFx0fSBlbHNlIGlmIChyZWcgPT0gRFA4Mzg2N19MRURDUjIpIHtcXG4rXFx0XFx0ZHA4Mzg2Ny1cXHUwMDNlbGVkY3IyID0gKGRwODM4NjctXFx1MDAzZWxlZGNyMiBcXHUwMDI2IH5tYXNrKSB8ICh2YWwgXFx1MDAyNiBtYXNrKTtcXG4rXFx0XFx0ZHA4Mzg2Ny1cXHUwMDNlbGVkY3IyX21hc2sgfD0gbWFzaztcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0V0FSTl9PTl9PTkNFKDEpO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rLyogUmVzdG9yZSB0aGUgTEVEIHJlZ2lzdGVycyB0aGUgZHJpdmVyIGhhcyBwcm9ncmFtbWVkLCBjbGVhcmVkIGJ5IHRoZSBzb2Z0XFxuKyAqIHJlc2V0IGluIGRwODM4NjdfcGh5X3Jlc2V0KCkuXFxuKyAqL1xcbitzdGF0aWMgaW50IGRwODM4NjdfbGVkX3Jlc3RvcmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4re1xcbitcXHRzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlICpkcDgzODY3ID0gcGh5ZGV2LVxcdTAwM2Vwcml2O1xcbitcXHRpbnQgcmV0ID0gMDtcXG4rXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNmRwODM4NjctXFx1MDAzZWxlZF9sb2NrKTtcXG4rXFx0aWYgKGRwODM4NjctXFx1MDAzZWxlZGNyMV9tYXNrKVxcbitcXHRcXHRyZXQgPSBwaHlfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjEsXFxuK1xcdFxcdFxcdFxcdCBkcDgzODY3LVxcdTAwM2VsZWRjcjFfbWFzaywgZHA4Mzg2Ny1cXHUwMDNlbGVkY3IxKTtcXG4rXFx0aWYgKCFyZXQgXFx1MDAyNlxcdTAwMjYgZHA4Mzg2Ny1cXHUwMDNlbGVkY3IyX21hc2spXFxuK1xcdFxcdHJldCA9IHBoeV9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMixcXG4rXFx0XFx0XFx0XFx0IGRwODM4NjctXFx1MDAzZWxlZGNyMl9tYXNrLCBkcDgzODY3LVxcdTAwM2VsZWRjcjIpO1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNmRwODM4NjctXFx1MDAzZWxlZF9sb2NrKTtcXG4rXFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgZHA4Mzg2N19jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiB7XFxuIFxcdHN0cnVjdCBkcDgzODY3X3ByaXZhdGUgKmRwODM4NjcgPSBwaHlkZXYtXFx1MDAzZXByaXY7XFxuQEAgLTg5Niw2ICs5NTksMTAgQEAgc3RhdGljIGludCBkcDgzODY3X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuIFxcdFxcdFxcdCAgICAgICBtYXNrLCB2YWwpO1xcbiBcXHR9XFxuIFxcbitcXHRyZXQgPSBkcDgzODY3X2xlZF9yZXN0b3JlKHBoeWRldik7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdHBoeWRldl93YXJuKHBoeWRldiwgXFxcImZhaWxlZCB0byByZXN0b3JlIExFRCBjb25maWc6ICVkXFxcXG5cXFwiLCByZXQpO1xcbitcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuQEAgLTEwMDQsNyArMTA3MSw5IEBAIHN0YXRpYyBpbnRcXG4gZHA4Mzg2N19sZWRfYnJpZ2h0bmVzc19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4gXFx0XFx0XFx0ICAgdTggaW5kZXgsIGVudW0gbGVkX2JyaWdodG5lc3MgYnJpZ2h0bmVzcylcXG4ge1xcbi1cXHR1MzIgdmFsO1xcbitcXHRzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlICpkcDgzODY3ID0gcGh5ZGV2LVxcdTAwM2Vwcml2O1xcbitcXHR1MTYgdmFsO1xcbitcXHRpbnQgcmV0O1xcbiBcXG4gXFx0aWYgKGluZGV4IFxcdTAwM2U9IERQODM4NjdfTEVEX0NPVU5UKVxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG5AQCAtMTAxNSwxMCArMTA4NCwxMyBAQCBkcDgzODY3X2xlZF9icmlnaHRuZXNzX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbiBcXHRpZiAoYnJpZ2h0bmVzcylcXG4gXFx0XFx0dmFsIHw9IERQODM4NjdfTEVEX0RSVl9WQUwoaW5kZXgpO1xcbiBcXG4tXFx0cmV0dXJuIHBoeV9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMixcXG4tXFx0XFx0XFx0ICBEUDgzODY3X0xFRF9EUlZfVkFMKGluZGV4KSB8XFxuLVxcdFxcdFxcdCAgRFA4Mzg2N19MRURfRFJWX0VOKGluZGV4KSxcXG4tXFx0XFx0XFx0ICB2YWwpO1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZkcDgzODY3LVxcdTAwM2VsZWRfbG9jayk7XFxuK1xcdHJldCA9IF9fZHA4Mzg2N19sZWRfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjIsXFxuK1xcdFxcdFxcdFxcdCAgIERQODM4NjdfTEVEX0RSVl9WQUwoaW5kZXgpIHxcXG4rXFx0XFx0XFx0XFx0ICAgRFA4Mzg2N19MRURfRFJWX0VOKGluZGV4KSwgdmFsKTtcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkcDgzODY3LVxcdTAwM2VsZWRfbG9jayk7XFxuK1xcbitcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGRwODM4NjdfbGVkX21vZGUodTggaW5kZXgsIHVuc2lnbmVkIGxvbmcgcnVsZXMpXFxuQEAgLTEwNjksMTggKzExNDEsMjQgQEAgc3RhdGljIGludCBkcDgzODY3X2xlZF9od19pc19zdXBwb3J0ZWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXFxuIHN0YXRpYyBpbnQgZHA4Mzg2N19sZWRfaHdfY29udHJvbF9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXFxuIFxcdFxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIGxvbmcgcnVsZXMpXFxuIHtcXG4rXFx0c3RydWN0IGRwODM4NjdfcHJpdmF0ZSAqZHA4Mzg2NyA9IHBoeWRldi1cXHUwMDNlcHJpdjtcXG4gXFx0aW50IG1vZGUsIHJldDtcXG4gXFxuIFxcdG1vZGUgPSBkcDgzODY3X2xlZF9tb2RlKGluZGV4LCBydWxlcyk7XFxuIFxcdGlmIChtb2RlIFxcdTAwM2MgMClcXG4gXFx0XFx0cmV0dXJuIG1vZGU7XFxuIFxcbi1cXHRyZXQgPSBwaHlfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjEsIERQODM4NjdfTEVEX0ZOX01BU0soaW5kZXgpLFxcbi1cXHRcXHRcXHQgRFA4Mzg2N19MRURfRk4oaW5kZXgsIG1vZGUpKTtcXG4tXFx0aWYgKHJldClcXG4tXFx0XFx0cmV0dXJuIHJldDtcXG4tXFxuLVxcdHJldHVybiBwaHlfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjIsIERQODM4NjdfTEVEX0RSVl9FTihpbmRleCksIDApO1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZkcDgzODY3LVxcdTAwM2VsZWRfbG9jayk7XFxuK1xcdHJldCA9IF9fZHA4Mzg2N19sZWRfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjEsXFxuK1xcdFxcdFxcdFxcdCAgIERQODM4NjdfTEVEX0ZOX01BU0soaW5kZXgpLFxcbitcXHRcXHRcXHRcXHQgICBEUDgzODY3X0xFRF9GTihpbmRleCwgbW9kZSkpO1xcbitcXHRpZiAoIXJldClcXG4rXFx0XFx0cmV0ID0gX19kcDgzODY3X2xlZF9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgRFA4Mzg2N19MRURfRFJWX0VOKGluZGV4KSB8XFxuK1xcdFxcdFxcdFxcdFxcdCAgIERQODM4NjdfTEVEX0RSVl9WQUwoaW5kZXgpLCAwKTtcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkcDgzODY3LVxcdTAwM2VsZWRfbG9jayk7XFxuK1xcbitcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGRwODM4NjdfbGVkX2h3X2NvbnRyb2xfZ2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxcbkBAIC0xMTQxLDkgKzEyMTksMTEgQEAgc3RhdGljIGludCBkcDgzODY3X2xlZF9od19jb250cm9sX2dldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcXG4gc3RhdGljIGludCBkcDgzODY3X2xlZF9wb2xhcml0eV9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGluZGV4LFxcbiBcXHRcXHRcXHRcXHQgICAgdW5zaWduZWQgbG9uZyBtb2RlcylcXG4ge1xcbitcXHRzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlICpkcDgzODY3ID0gcGh5ZGV2LVxcdTAwM2Vwcml2O1xcbiBcXHQvKiBEZWZhdWx0IGFjdGl2ZSBoaWdoICovXFxuIFxcdHUxNiBwb2xhcml0eSA9IERQODM4NjdfTEVEX1BPTEFSSVRZKGluZGV4KTtcXG4gXFx0dTMyIG1vZGU7XFxuK1xcdGludCByZXQ7XFxuIFxcbiBcXHRmb3JfZWFjaF9zZXRfYml0KG1vZGUsIFxcdTAwMjZtb2RlcywgX19QSFlfTEVEX01PREVTX05VTSkge1xcbiBcXHRcXHRzd2l0Y2ggKG1vZGUpIHtcXG5AQCAtMTE1NCw4ICsxMjM0LDEzIEBAIHN0YXRpYyBpbnQgZHA4Mzg2N19sZWRfcG9sYXJpdHlfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpbmRleCxcXG4gXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcdFxcdH1cXG4gXFx0fVxcbi1cXHRyZXR1cm4gcGh5X21vZGlmeShwaHlkZXYsIERQODM4NjdfTEVEQ1IyLFxcbi1cXHRcXHRcXHQgIERQODM4NjdfTEVEX1BPTEFSSVRZKGluZGV4KSwgcG9sYXJpdHkpO1xcbitcXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2ZHA4Mzg2Ny1cXHUwMDNlbGVkX2xvY2spO1xcbitcXHRyZXQgPSBfX2RwODM4NjdfbGVkX21vZGlmeShwaHlkZXYsIERQODM4NjdfTEVEQ1IyLFxcbitcXHRcXHRcXHRcXHQgICBEUDgzODY3X0xFRF9QT0xBUklUWShpbmRleCksIHBvbGFyaXR5KTtcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkcDgzODY3LVxcdTAwM2VsZWRfbG9jayk7XFxuK1xcbitcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbiBzdGF0aWMgdW5zaWduZWQgaW50IGRwODM4NjdfaW5iYW5kX2NhcHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMDA6Mjg6NTIuNTQzNjM5MzI3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo1MjE4NjgyMTY2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQSFlMSUJcIixcbiAgICBcIkRQODM4NjdfUEhZXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZHA4Mzg2N19sZWRfYnJpZ2h0bmVzc19zZXRcIixcbiAgICBcImRwODM4NjdfbGVkX2h3X2NvbnRyb2xfc2V0XCIsXG4gICAgXCJkcDgzODY3X2xlZF9wb2xhcml0eV9zZXRcIixcbiAgICBcImRwODM4NjdfY29uZmlnX2luaXRcIixcbiAgICBcImRwODM4NjdfcHJvYmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgVGV4YXMgSW5zdHJ1bWVudHMgRFA4Mzg2NyBQSFkgZHJpdmVyIChkcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jKSBieSBpbnRyb2R1Y2luZyBhIG5ldyBtdXRleCAobGVkX2xvY2spIGFuZCBzaGFkb3cgcmVnaXN0ZXJzIHRvIHByb3Blcmx5IHJlc3RvcmUgTEVEIGNvbmZpZ3VyYXRpb25zIGFjcm9zcyBzb2Z0IHJlc2V0cywgYWxvbmcgd2l0aCBydW50aW1lIGFzc2VydGlvbnMgKFdBUk5fT05fT05DRSkuIFRoZSBkcml2ZXIgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIEV0aGVybmV0IGFkYXB0ZXJzIGV4cG9zaW5nIE1ESU8gYnVzZXMuIEZ1enppbmcgaXMgd2FycmFudGVkIHRvIHZlcmlmeSBjb25jdXJyZW5jeSBhbmQgcHJvcGVyIHNlcmlhbGl6YXRpb24gYmV0d2VlbiBjb25maWdfaW5pdCBzb2Z0LXJlc2V0IHJlc3RvcmUgYW5kIExFRCBjb250cm9sIG9wZXJhdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNDRjMTY1Y2FmMGNjOTAyNmI5MDcwMWRiZTIxYzRlNzcwODM2YWUyNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDkgMDA6Mjg6NTEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jIGIvZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuY1xuaW5kZXggODgyNTVlOTJiNGNkYi4uZWViNGNkNjQ4Zjc0MyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmNcbkBAIC04LDYgKzgsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbWlpLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L211dGV4LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGh5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9kZWxheS5oXHUwMDNlXG5AQCAtMTk2LDYgKzE5NywxNiBAQCBzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlIHtcbiBcdGJvb2wgc2V0X2Nsa19vdXRwdXQ7XG4gXHR1MzIgY2xrX291dHB1dF9zZWw7XG4gXHRib29sIHNnbWlpX3JlZl9jbGtfZW47XG4rXG4rXHQvKiBTaGFkb3cgb2YgdGhlIExFRCByZWdpc3RlcnMsIHJlcGxheWVkIGFmdGVyIGEgc29mdCByZXNldC4gbGVkX2xvY2tcbitcdCAqIHNlcmlhbGl6ZXMgdGhlIHNoYWRvdyBhbmQgaXRzIHJlcGxheSBhZ2FpbnN0IHRoZSBMRUQgY2FsbGJhY2tzLFxuK1x0ICogYmVjYXVzZSBkcDgzODY3X2NvbmZpZ19pbml0KCkgZG9lcyB0aGUgcmVwbGF5IG9mZiBwaHlkZXYtXHUwMDNlbG9jay5cbitcdCAqL1xuK1x0c3RydWN0IG11dGV4IGxlZF9sb2NrO1xuK1x0dTE2IGxlZGNyMTtcbitcdHUxNiBsZWRjcjFfbWFzaztcbitcdHUxNiBsZWRjcjI7XG4rXHR1MTYgbGVkY3IyX21hc2s7XG4gfTtcbiBcbiBzdGF0aWMgaW50IGRwODM4NjdfYWNrX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuQEAgLTcyMiw2ICs3MzMsNyBAQCBzdGF0aWMgaW50IGRwODM4NjdfcmVzdW1lKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gc3RhdGljIGludCBkcDgzODY3X3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4ge1xuIFx0c3RydWN0IGRwODM4NjdfcHJpdmF0ZSAqZHA4Mzg2NztcbitcdGludCByZXQ7XG4gXG4gXHRkcDgzODY3ID0gZGV2bV9remFsbG9jKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldiwgc2l6ZW9mKCpkcDgzODY3KSxcbiBcdFx0XHQgICAgICAgR0ZQX0tFUk5FTCk7XG5AQCAtNzMwLDkgKzc0Miw2MCBAQCBzdGF0aWMgaW50IGRwODM4NjdfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcbiBcdHBoeWRldi1cdTAwM2Vwcml2ID0gZHA4Mzg2NztcbiBcbitcdHJldCA9IGRldm1fbXV0ZXhfaW5pdChcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYsIFx1MDAyNmRwODM4NjctXHUwMDNlbGVkX2xvY2spO1xuK1x0aWYgKHJldClcbitcdFx0cmV0dXJuIHJldDtcbitcbiBcdHJldHVybiBkcDgzODY3X29mX2luaXQocGh5ZGV2KTtcbiB9XG4gXG4rLyogVXBkYXRlIGFuIExFRCByZWdpc3RlciBhbmQgbWlycm9yIHRoZSBjaGFuZ2UgaW50byB0aGUgc2hhZG93LCBzbyB0aGF0XG4rICogZHA4Mzg2N19jb25maWdfaW5pdCgpIGNhbiByZXBsYXkgaXQgYWZ0ZXIgYSBzb2Z0IHJlc2V0LiBDYWxsZXIgbXVzdCBob2xkXG4rICogZHA4Mzg2Ny1cdTAwM2VsZWRfbG9jay5cbisgKi9cbitzdGF0aWMgaW50IF9fZHA4Mzg2N19sZWRfbW9kaWZ5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUzMiByZWcsXG4rXHRcdFx0XHR1MTYgbWFzaywgdTE2IHZhbClcbit7XG4rXHRzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlICpkcDgzODY3ID0gcGh5ZGV2LVx1MDAzZXByaXY7XG4rXHRpbnQgcmV0O1xuK1xuK1x0cmV0ID0gcGh5X21vZGlmeShwaHlkZXYsIHJlZywgbWFzaywgdmFsKTtcbitcdGlmIChyZXQpXG4rXHRcdHJldHVybiByZXQ7XG4rXG4rXHRpZiAocmVnID09IERQODM4NjdfTEVEQ1IxKSB7XG4rXHRcdGRwODM4NjctXHUwMDNlbGVkY3IxID0gKGRwODM4NjctXHUwMDNlbGVkY3IxIFx1MDAyNiB+bWFzaykgfCAodmFsIFx1MDAyNiBtYXNrKTtcbitcdFx0ZHA4Mzg2Ny1cdTAwM2VsZWRjcjFfbWFzayB8PSBtYXNrO1xuK1x0fSBlbHNlIGlmIChyZWcgPT0gRFA4Mzg2N19MRURDUjIpIHtcbitcdFx0ZHA4Mzg2Ny1cdTAwM2VsZWRjcjIgPSAoZHA4Mzg2Ny1cdTAwM2VsZWRjcjIgXHUwMDI2IH5tYXNrKSB8ICh2YWwgXHUwMDI2IG1hc2spO1xuK1x0XHRkcDgzODY3LVx1MDAzZWxlZGNyMl9tYXNrIHw9IG1hc2s7XG4rXHR9IGVsc2Uge1xuK1x0XHRXQVJOX09OX09OQ0UoMSk7XG4rXHR9XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rLyogUmVzdG9yZSB0aGUgTEVEIHJlZ2lzdGVycyB0aGUgZHJpdmVyIGhhcyBwcm9ncmFtbWVkLCBjbGVhcmVkIGJ5IHRoZSBzb2Z0XG4rICogcmVzZXQgaW4gZHA4Mzg2N19waHlfcmVzZXQoKS5cbisgKi9cbitzdGF0aWMgaW50IGRwODM4NjdfbGVkX3Jlc3RvcmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbit7XG4rXHRzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlICpkcDgzODY3ID0gcGh5ZGV2LVx1MDAzZXByaXY7XG4rXHRpbnQgcmV0ID0gMDtcbitcbitcdG11dGV4X2xvY2soXHUwMDI2ZHA4Mzg2Ny1cdTAwM2VsZWRfbG9jayk7XG4rXHRpZiAoZHA4Mzg2Ny1cdTAwM2VsZWRjcjFfbWFzaylcbitcdFx0cmV0ID0gcGh5X21vZGlmeShwaHlkZXYsIERQODM4NjdfTEVEQ1IxLFxuK1x0XHRcdFx0IGRwODM4NjctXHUwMDNlbGVkY3IxX21hc2ssIGRwODM4NjctXHUwMDNlbGVkY3IxKTtcbitcdGlmICghcmV0IFx1MDAyNlx1MDAyNiBkcDgzODY3LVx1MDAzZWxlZGNyMl9tYXNrKVxuK1x0XHRyZXQgPSBwaHlfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjIsXG4rXHRcdFx0XHQgZHA4Mzg2Ny1cdTAwM2VsZWRjcjJfbWFzaywgZHA4Mzg2Ny1cdTAwM2VsZWRjcjIpO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmRwODM4NjctXHUwMDNlbGVkX2xvY2spO1xuK1xuK1x0cmV0dXJuIHJldDtcbit9XG4rXG4gc3RhdGljIGludCBkcDgzODY3X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4ge1xuIFx0c3RydWN0IGRwODM4NjdfcHJpdmF0ZSAqZHA4Mzg2NyA9IHBoeWRldi1cdTAwM2Vwcml2O1xuQEAgLTg5Niw2ICs5NTksMTAgQEAgc3RhdGljIGludCBkcDgzODY3X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRcdFx0ICAgICAgIG1hc2ssIHZhbCk7XG4gXHR9XG4gXG4rXHRyZXQgPSBkcDgzODY3X2xlZF9yZXN0b3JlKHBoeWRldik7XG4rXHRpZiAocmV0KVxuK1x0XHRwaHlkZXZfd2FybihwaHlkZXYsIFwiZmFpbGVkIHRvIHJlc3RvcmUgTEVEIGNvbmZpZzogJWRcXG5cIiwgcmV0KTtcbitcbiBcdHJldHVybiAwO1xuIH1cbiBcbkBAIC0xMDA0LDcgKzEwNzEsOSBAQCBzdGF0aWMgaW50XG4gZHA4Mzg2N19sZWRfYnJpZ2h0bmVzc19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbiBcdFx0XHQgICB1OCBpbmRleCwgZW51bSBsZWRfYnJpZ2h0bmVzcyBicmlnaHRuZXNzKVxuIHtcbi1cdHUzMiB2YWw7XG4rXHRzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlICpkcDgzODY3ID0gcGh5ZGV2LVx1MDAzZXByaXY7XG4rXHR1MTYgdmFsO1xuK1x0aW50IHJldDtcbiBcbiBcdGlmIChpbmRleCBcdTAwM2U9IERQODM4NjdfTEVEX0NPVU5UKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbkBAIC0xMDE1LDEwICsxMDg0LDEzIEBAIGRwODM4NjdfbGVkX2JyaWdodG5lc3Nfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4gXHRpZiAoYnJpZ2h0bmVzcylcbiBcdFx0dmFsIHw9IERQODM4NjdfTEVEX0RSVl9WQUwoaW5kZXgpO1xuIFxuLVx0cmV0dXJuIHBoeV9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMixcbi1cdFx0XHQgIERQODM4NjdfTEVEX0RSVl9WQUwoaW5kZXgpIHxcbi1cdFx0XHQgIERQODM4NjdfTEVEX0RSVl9FTihpbmRleCksXG4tXHRcdFx0ICB2YWwpO1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZkcDgzODY3LVx1MDAzZWxlZF9sb2NrKTtcbitcdHJldCA9IF9fZHA4Mzg2N19sZWRfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjIsXG4rXHRcdFx0XHQgICBEUDgzODY3X0xFRF9EUlZfVkFMKGluZGV4KSB8XG4rXHRcdFx0XHQgICBEUDgzODY3X0xFRF9EUlZfRU4oaW5kZXgpLCB2YWwpO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmRwODM4NjctXHUwMDNlbGVkX2xvY2spO1xuK1xuK1x0cmV0dXJuIHJldDtcbiB9XG4gXG4gc3RhdGljIGludCBkcDgzODY3X2xlZF9tb2RlKHU4IGluZGV4LCB1bnNpZ25lZCBsb25nIHJ1bGVzKVxuQEAgLTEwNjksMTggKzExNDEsMjQgQEAgc3RhdGljIGludCBkcDgzODY3X2xlZF9od19pc19zdXBwb3J0ZWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXG4gc3RhdGljIGludCBkcDgzODY3X2xlZF9od19jb250cm9sX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcbiBcdFx0XHRcdCAgICAgIHVuc2lnbmVkIGxvbmcgcnVsZXMpXG4ge1xuK1x0c3RydWN0IGRwODM4NjdfcHJpdmF0ZSAqZHA4Mzg2NyA9IHBoeWRldi1cdTAwM2Vwcml2O1xuIFx0aW50IG1vZGUsIHJldDtcbiBcbiBcdG1vZGUgPSBkcDgzODY3X2xlZF9tb2RlKGluZGV4LCBydWxlcyk7XG4gXHRpZiAobW9kZSBcdTAwM2MgMClcbiBcdFx0cmV0dXJuIG1vZGU7XG4gXG4tXHRyZXQgPSBwaHlfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjEsIERQODM4NjdfTEVEX0ZOX01BU0soaW5kZXgpLFxuLVx0XHRcdCBEUDgzODY3X0xFRF9GTihpbmRleCwgbW9kZSkpO1xuLVx0aWYgKHJldClcbi1cdFx0cmV0dXJuIHJldDtcbi1cbi1cdHJldHVybiBwaHlfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjIsIERQODM4NjdfTEVEX0RSVl9FTihpbmRleCksIDApO1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZkcDgzODY3LVx1MDAzZWxlZF9sb2NrKTtcbitcdHJldCA9IF9fZHA4Mzg2N19sZWRfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjEsXG4rXHRcdFx0XHQgICBEUDgzODY3X0xFRF9GTl9NQVNLKGluZGV4KSxcbitcdFx0XHRcdCAgIERQODM4NjdfTEVEX0ZOKGluZGV4LCBtb2RlKSk7XG4rXHRpZiAoIXJldClcbitcdFx0cmV0ID0gX19kcDgzODY3X2xlZF9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMixcbitcdFx0XHRcdFx0ICAgRFA4Mzg2N19MRURfRFJWX0VOKGluZGV4KSB8XG4rXHRcdFx0XHRcdCAgIERQODM4NjdfTEVEX0RSVl9WQUwoaW5kZXgpLCAwKTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZkcDgzODY3LVx1MDAzZWxlZF9sb2NrKTtcbitcbitcdHJldHVybiByZXQ7XG4gfVxuIFxuIHN0YXRpYyBpbnQgZHA4Mzg2N19sZWRfaHdfY29udHJvbF9nZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXG5AQCAtMTE0MSw5ICsxMjE5LDExIEBAIHN0YXRpYyBpbnQgZHA4Mzg2N19sZWRfaHdfY29udHJvbF9nZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXG4gc3RhdGljIGludCBkcDgzODY3X2xlZF9wb2xhcml0eV9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGluZGV4LFxuIFx0XHRcdFx0ICAgIHVuc2lnbmVkIGxvbmcgbW9kZXMpXG4ge1xuK1x0c3RydWN0IGRwODM4NjdfcHJpdmF0ZSAqZHA4Mzg2NyA9IHBoeWRldi1cdTAwM2Vwcml2O1xuIFx0LyogRGVmYXVsdCBhY3RpdmUgaGlnaCAqL1xuIFx0dTE2IHBvbGFyaXR5ID0gRFA4Mzg2N19MRURfUE9MQVJJVFkoaW5kZXgpO1xuIFx0dTMyIG1vZGU7XG4rXHRpbnQgcmV0O1xuIFxuIFx0Zm9yX2VhY2hfc2V0X2JpdChtb2RlLCBcdTAwMjZtb2RlcywgX19QSFlfTEVEX01PREVTX05VTSkge1xuIFx0XHRzd2l0Y2ggKG1vZGUpIHtcbkBAIC0xMTU0LDggKzEyMzQsMTMgQEAgc3RhdGljIGludCBkcDgzODY3X2xlZF9wb2xhcml0eV9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGluZGV4LFxuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHR9XG4gXHR9XG4tXHRyZXR1cm4gcGh5X21vZGlmeShwaHlkZXYsIERQODM4NjdfTEVEQ1IyLFxuLVx0XHRcdCAgRFA4Mzg2N19MRURfUE9MQVJJVFkoaW5kZXgpLCBwb2xhcml0eSk7XG4rXG4rXHRtdXRleF9sb2NrKFx1MDAyNmRwODM4NjctXHUwMDNlbGVkX2xvY2spO1xuK1x0cmV0ID0gX19kcDgzODY3X2xlZF9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMixcbitcdFx0XHRcdCAgIERQODM4NjdfTEVEX1BPTEFSSVRZKGluZGV4KSwgcG9sYXJpdHkpO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmRwODM4NjctXHUwMDNlbGVkX2xvY2spO1xuK1xuK1x0cmV0dXJuIHJldDtcbiB9XG4gXG4gc3RhdGljIHVuc2lnbmVkIGludCBkcDgzODY3X2luYmFuZF9jYXBzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQwMDoyODo1Mi41NDM2NDA4MzZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMTEzMzc3Nzg1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXR3b3JrIFBIWSBEcml2ZXIgQ2hhbmdlKipcblxuT2theSwgc28gdGhlIHBhdGNoIEknbSBsb29raW5nIGF0IHNwZWNpZmljYWxseSB0b3VjaGVzIGBkcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jYC4gTXkgaW5pdGlhbCByZWFjdGlvbiBpcyB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCB0aGlzIGRyaXZlciAqaXMqLiBBaCwgaXQncyB0aGUgVGV4YXMgSW5zdHJ1bWVudHMgRFA4Mzg2NyBHaWdhYml0IEV0aGVybmV0IFBIWSBkcml2ZXIuIFJpZ2h0LCBzbyB0aGUga2V5IHF1ZXN0aW9uIGhlcmUgaXMgd2hldGhlciBpdCdzIGFuIE1ESU8gUEhZIGRyaXZlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGl0J3MgaW5zdGFudGlhdGVkIGFuZCB1c2VkLiBDYW4gSSB0ZXN0IHRoaXMgd2l0aG91dCBwaHlzaWNhbCBoYXJkd2FyZT8gRG9lcyBpdCBiZWhhdmUgd2VsbCB1bmRlciB2aXJ0dWFsIGVudmlyb25tZW50cywgdXNpbmcgc3RhbmRhcmQgUUVNVSBzZXR1cCwgb3IgZG9lcyBpdCBkZXBlbmQgb24gYWN0dWFsIE1ESU8gYWNjZXNzP1xuXG5UaW1lIHRvIGRpZyBpbnRvIHRoZSBkcml2ZXIgaXRzZWxmLiBJJ2xsIHByb2JhYmx5IHN0YXJ0IHdpdGggYSBxdWljayBgZ3JlcGAgc2VhcmNoIGZvciBrZXkgdGVybXMsIGJ1dCB1bHRpbWF0ZWx5LCBJJ2xsIG5lZWQgdG8gcmVhZCB0aGUgY29kZSBkaXJlY3RseSB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSB0byBhc3Nlc3MgdGhlIGltcGFjdCBvZiB0aGlzIGNoYW5nZSBwcm9wZXJseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQzNiwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMDA6Mjk6MDMuNjc3NDIxNjgxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NzQwODI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkRQODM4NjdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgODE1IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz00NDY9Y29uZmlnIERQODM4NDhfUEhZXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy00NTAtXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6NDUxOmNvbmZpZyBEUDgzODY3X1BIWVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjQ1MjpcXHR0cmlzdGF0ZSBcXFwiVGV4YXMgSW5zdHJ1bWVudHMgRFA4Mzg2NyBHaWdhYml0IFBIWVxcXCJcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy00NTMtXFx0aGVscFxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjQ1NDpcXHQgIEN1cnJlbnRseSBzdXBwb3J0cyB0aGUgRFA4Mzg2NyBQSFkuXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNDU1LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTYwPW9iai0kKENPTkZJR19EUDgzODQ4X1BIWSlcXHQrPSBkcDgzODQ4Lm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NjE6b2JqLSQoQ09ORklHX0RQODM4NjdfUEhZKVxcdCs9IGRwODM4Njcub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS02Mi1vYmotJChDT05GSUdfRFA4Mzg2OV9QSFkpXFx0Kz0gZHA4Mzg2OS5vXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTEtLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI6LyogRHJpdmVyIGZvciB0aGUgVGV4YXMgSW5zdHJ1bWVudHMgRFA4Mzg2NyBQSFlcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTMtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjEtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyMjojZGVmaW5lIERQODM4NjdfUEhZX0lEXFx0XFx0MHgyMDAwYTIzMVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjM6I2RlZmluZSBEUDgzODY3X0RFVkFERFJcXHRcXHQweDFmXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yNC1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI1OiNkZWZpbmUgTUlJX0RQODM4NjdfUEhZQ1RSTFxcdDB4MTBcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI2OiNkZWZpbmUgTUlJX0RQODM4NjdfUEhZU1RTXFx0MHgxMVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6Mjc6I2RlZmluZSBNSUlfRFA4Mzg2N19NSUNSXFx0MHgxMlxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6Mjg6I2RlZmluZSBNSUlfRFA4Mzg2N19JU1JcXHRcXHQweDEzXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyOTojZGVmaW5lIERQODM4NjdfQ0ZHMlxcdFxcdDB4MTRcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjMwOiNkZWZpbmUgRFA4Mzg2N19MRURDUjFcXHRcXHQweDE4XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozMTojZGVmaW5lIERQODM4NjdfTEVEQ1IyXFx0XFx0MHgxOVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MzI6I2RlZmluZSBEUDgzODY3X0NGRzNcXHRcXHQweDFlXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozMzojZGVmaW5lIERQODM4NjdfQ1RSTFxcdFxcdDB4MWZcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTM0LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMzUtLyogRXh0ZW5kZWQgUmVnaXN0ZXJzICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozNjojZGVmaW5lIERQODM4NjdfRkxEX1RIUl9DRkdcXHQweDAwMmVcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjM3OiNkZWZpbmUgRFA4Mzg2N19DRkc0XFx0XFx0MHgwMDMxXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozODojZGVmaW5lIERQODM4NjdfQ0ZHNF9TR01JSV9BTkVHX01BU0sgKEJJVCg1KSB8IEJJVCg2KSlcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjM5OiNkZWZpbmUgRFA4Mzg2N19DRkc0X1NHTUlJX0FORUdfVElNRVJfMTFNUyAgICgzIFxcdTAwM2NcXHUwMDNjIDUpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0MDojZGVmaW5lIERQODM4NjdfQ0ZHNF9TR01JSV9BTkVHX1RJTUVSXzgwMFVTICAoMiBcXHUwMDNjXFx1MDAzYyA1KVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDE6I2RlZmluZSBEUDgzODY3X0NGRzRfU0dNSUlfQU5FR19USU1FUl8yVVMgICAgKDEgXFx1MDAzY1xcdTAwM2MgNSlcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQyOiNkZWZpbmUgRFA4Mzg2N19DRkc0X1NHTUlJX0FORUdfVElNRVJfMTZNUyAgICgwIFxcdTAwM2NcXHUwMDNjIDUpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00My1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQ0OiNkZWZpbmUgRFA4Mzg2N19SR01JSUNUTFxcdDB4MDAzMlxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDU6I2RlZmluZSBEUDgzODY3X1NUUkFQX1NUUzFcXHQweDAwNkVcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQ2OiNkZWZpbmUgRFA4Mzg2N19TVFJBUF9TVFMyXFx0MHgwMDZmXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0NzojZGVmaW5lIERQODM4NjdfUkdNSUlEQ1RMXFx0MHgwMDg2XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0ODojZGVmaW5lIERQODM4NjdfRFNQX0ZGRV9DRkdcXHQweDAxMmNcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQ5OiNkZWZpbmUgRFA4Mzg2N19SWEZDRkdcXHRcXHQweDAxMzRcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjUwOiNkZWZpbmUgRFA4Mzg2N19SWEZQTUQxXFx0MHgwMTM2XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo1MTojZGVmaW5lIERQODM4NjdfUlhGUE1EMlxcdDB4MDEzN1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NTI6I2RlZmluZSBEUDgzODY3X1JYRlBNRDNcXHQweDAxMzhcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjUzOiNkZWZpbmUgRFA4Mzg2N19SWEZTT1AxXFx0MHgwMTM5XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo1NDojZGVmaW5lIERQODM4NjdfUlhGU09QMlxcdDB4MDEzQVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NTU6I2RlZmluZSBEUDgzODY3X1JYRlNPUDNcXHQweDAxM0JcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjU2OiNkZWZpbmUgRFA4Mzg2N19JT19NVVhfQ0ZHXFx0MHgwMTcwXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo1NzojZGVmaW5lIERQODM4NjdfU0dNSUlDVExcXHQweDAwRDNcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjU4OiNkZWZpbmUgRFA4Mzg2N18xME1fU0dNSUlfQ0ZHICAgMHgwMTZGXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo1OTojZGVmaW5lIERQODM4NjdfMTBNX1NHTUlJX1JBVEVfQURBUFRfTUFTSyBCSVQoNylcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTYwLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NjE6I2RlZmluZSBEUDgzODY3X1NXX1JFU0VUXFx0QklUKDE1KVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NjI6I2RlZmluZSBEUDgzODY3X1NXX1JFU1RBUlRcXHRCSVQoMTQpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02My1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTY0LS8qIE1JQ1IgSW50ZXJydXB0IGJpdHMgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjY1OiNkZWZpbmUgTUlJX0RQODM4NjdfTUlDUl9BTl9FUlJfSU5UX0VOXFx0XFx0QklUKDE1KVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NjY6I2RlZmluZSBNSUlfRFA4Mzg2N19NSUNSX1NQRUVEX0NITkdfSU5UX0VOXFx0QklUKDE0KVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6Njc6I2RlZmluZSBNSUlfRFA4Mzg2N19NSUNSX0RVUF9NT0RFX0NITkdfSU5UX0VOXFx0QklUKDEzKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6Njg6I2RlZmluZSBNSUlfRFA4Mzg2N19NSUNSX1BBR0VfUlhEX0lOVF9FTlxcdEJJVCgxMilcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjY5OiNkZWZpbmUgTUlJX0RQODM4NjdfTUlDUl9BVVRPTkVHX0NPTVBfSU5UX0VOXFx0QklUKDExKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NzA6I2RlZmluZSBNSUlfRFA4Mzg2N19NSUNSX0xJTktfU1RTX0NITkdfSU5UX0VOXFx0QklUKDEwKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NzE6I2RlZmluZSBNSUlfRFA4Mzg2N19NSUNSX0ZBTFNFX0NBUlJJRVJfSU5UX0VOXFx0QklUKDgpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo3MjojZGVmaW5lIE1JSV9EUDgzODY3X01JQ1JfU0xFRVBfTU9ERV9DSE5HX0lOVF9FTlxcdEJJVCg0KVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NzM6I2RlZmluZSBNSUlfRFA4Mzg2N19NSUNSX1dPTF9JTlRfRU5cXHRcXHRCSVQoMylcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjc0OiNkZWZpbmUgTUlJX0RQODM4NjdfTUlDUl9YR01JSV9FUlJfSU5UX0VOXFx0QklUKDIpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo3NTojZGVmaW5lIE1JSV9EUDgzODY3X01JQ1JfUE9MX0NITkdfSU5UX0VOXFx0QklUKDEpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo3NjojZGVmaW5lIE1JSV9EUDgzODY3X01JQ1JfSkFCQkVSX0lOVF9FTlxcdFxcdEJJVCgwKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNzctXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy03OC0vKiBSR01JSUNUTCBiaXRzICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo3OTojZGVmaW5lIERQODM4NjdfUkdNSUlfRU5cXHRcXHRcXHRCSVQoNylcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjgwOiNkZWZpbmUgRFA4Mzg2N19SR01JSV9UWF9DTEtfREVMQVlfRU5cXHRcXHRCSVQoMSlcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjgxOiNkZWZpbmUgRFA4Mzg2N19SR01JSV9SWF9DTEtfREVMQVlfRU5cXHRcXHRCSVQoMClcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTgyLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtODMtLyogU0dNSUlDVEwgYml0cyAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6ODQ6I2RlZmluZSBEUDgzODY3X1NHTUlJX1RZUEVcXHRcXHRCSVQoMTQpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy04NS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTg2LS8qIFJYRkNGRyBiaXRzKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjg3OiNkZWZpbmUgRFA4Mzg2N19XT0xfTUFHSUNfRU5cXHRcXHRCSVQoMClcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjg4OiNkZWZpbmUgRFA4Mzg2N19XT0xfQkNBU1RfRU5cXHRcXHRCSVQoMilcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjg5OiNkZWZpbmUgRFA4Mzg2N19XT0xfVUNBU1RfRU5cXHRcXHRCSVQoNClcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjkwOiNkZWZpbmUgRFA4Mzg2N19XT0xfU0VDX0VOXFx0XFx0QklUKDUpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo5MTojZGVmaW5lIERQODM4NjdfV09MX0VOSF9NQUNcXHRcXHRCSVQoNylcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTkyLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtOTMtLyogU1RSQVBfU1RTMSBiaXRzICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo5NDojZGVmaW5lIERQODM4NjdfU1RSQVBfU1RTMV9SRVNFUlZFRFxcdFxcdEJJVCgxMSlcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTk1LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtOTYtLyogU1RSQVBfU1RTMiBiaXRzICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo5NzojZGVmaW5lIERQODM4NjdfU1RSQVBfU1RTMl9TVFJBUF9GTERcXHRcXHRCSVQoMTApXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy05OC1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTk5LS8qIFBIWSBDVFJMIGJpdHMgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjEwMDojZGVmaW5lIERQODM4NjdfUEhZQ1JfVFhfRklGT19ERVBUSF9TSElGVFxcdDE0XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMDE6I2RlZmluZSBEUDgzODY3X1BIWUNSX1JYX0ZJRk9fREVQVEhfU0hJRlRcXHQxMlxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTAyOiNkZWZpbmUgRFA4Mzg2N19QSFlDUl9GSUZPX0RFUFRIX01BWFxcdFxcdDB4MDNcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjEwMzojZGVmaW5lIERQODM4NjdfUEhZQ1JfVFhfRklGT19ERVBUSF9NQVNLXFx0R0VOTUFTSygxNSwgMTQpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMDQ6I2RlZmluZSBEUDgzODY3X1BIWUNSX1JYX0ZJRk9fREVQVEhfTUFTS1xcdEdFTk1BU0soMTMsIDEyKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTA1OiNkZWZpbmUgRFA4Mzg2N19QSFlDUl9TR01JSV9FTlxcdFxcdFxcdEJJVCgxMSlcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjEwNjojZGVmaW5lIERQODM4NjdfUEhZQ1JfRk9SQ0VfTElOS19HT09EXFx0XFx0QklUKDEwKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTA3OiNkZWZpbmUgRFA4Mzg2N19QSFlDUl9NRElYX01BU0tcXHRcXHRcXHRHRU5NQVNLKDYsIDUpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMDg6I2RlZmluZSBEUDgzODY3X1BIWUNSX01ESVhfTURJXFx0XFx0XFx0KDB4MCBcXHUwMDNjXFx1MDAzYyA1KVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTA5OiNkZWZpbmUgRFA4Mzg2N19QSFlDUl9NRElYX01ESVhcXHRcXHRcXHQoMHgxIFxcdTAwM2NcXHUwMDNjIDUpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMTA6I2RlZmluZSBEUDgzODY3X1BIWUNSX01ESVhfQVVUT1xcdFxcdFxcdCgweDMgXFx1MDAzY1xcdTAwM2MgNSlcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTExMS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTExMi0vKiBSR01JSURDVEwgYml0cyAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTEzOiNkZWZpbmUgRFA4Mzg2N19SR01JSV9UWF9DTEtfREVMQVlfTUFYXFx0XFx0MHhmXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMTQ6I2RlZmluZSBEUDgzODY3X1JHTUlJX1RYX0NMS19ERUxBWV9TSElGVFxcdDRcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjExNTojZGVmaW5lIERQODM4NjdfUkdNSUlfUlhfQ0xLX0RFTEFZX01BWFxcdFxcdDB4ZlxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTE2OiNkZWZpbmUgRFA4Mzg2N19SR01JSV9SWF9DTEtfREVMQVlfU0hJRlRcXHQwXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xMTctXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xMTgtLyogSU9fTVVYX0NGRyBiaXRzICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMTk6I2RlZmluZSBEUDgzODY3X0lPX01VWF9DRkdfSU9fSU1QRURBTkNFX01BU0tcXHQweDFmXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMjA6I2RlZmluZSBEUDgzODY3X0lPX01VWF9DRkdfSU9fSU1QRURBTkNFX01BWFxcdDB4MFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTIxOiNkZWZpbmUgRFA4Mzg2N19JT19NVVhfQ0ZHX0lPX0lNUEVEQU5DRV9NSU5cXHQweDFmXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMjI6I2RlZmluZSBEUDgzODY3X0lPX01VWF9DRkdfQ0xLX09fRElTQUJMRVxcdEJJVCg2KVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTIzOiNkZWZpbmUgRFA4Mzg2N19JT19NVVhfQ0ZHX0NMS19PX1NFTF9NQVNLXFx0KDB4MWYgXFx1MDAzY1xcdTAwM2MgOClcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjEyNDojZGVmaW5lIERQODM4NjdfSU9fTVVYX0NGR19DTEtfT19TRUxfU0hJRlRcXHQ4XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xMjUtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xMjYtLyogUEhZIFNUUyBiaXRzICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMjc6I2RlZmluZSBEUDgzODY3X1BIWVNUU18xMDAwXFx0XFx0XFx0QklUKDE1KVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTI4OiNkZWZpbmUgRFA4Mzg2N19QSFlTVFNfMTAwXFx0XFx0XFx0QklUKDE0KVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTI5OiNkZWZpbmUgRFA4Mzg2N19QSFlTVFNfRFVQTEVYXFx0XFx0XFx0QklUKDEzKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTMwOiNkZWZpbmUgRFA4Mzg2N19QSFlTVFNfTElOS1xcdFxcdFxcdEJJVCgxMClcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjEzMTojZGVmaW5lIERQODM4NjdfUEhZU1RTX01ESVhfQ0RcXHRcXHRcXHRCSVQoOSlcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjEzMjojZGVmaW5lIERQODM4NjdfUEhZU1RTX01ESVhfQUJcXHRcXHRcXHRCSVQoOClcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjEzMzojZGVmaW5lIERQODM4NjdfUEhZU1RTX01ESVhfTUFTS1xcdFxcdChEUDgzODY3X1BIWVNUU19NRElYX0FCIHwgXFxcXFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTM0OlxcdFxcdFxcdFxcdFxcdFxcdERQODM4NjdfUEhZU1RTX01ESVhfQ0QpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xMzUtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xMzYtLyogQ0ZHMiBiaXRzICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMzc6I2RlZmluZSBEUDgzODY3X0RPV05TSElGVF9FTlxcdFxcdChCSVQoOCkgfCBCSVQoOSkpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMzg6I2RlZmluZSBEUDgzODY3X0RPV05TSElGVF9BVFRFTVBUX01BU0tcXHQoQklUKDEwKSB8IEJJVCgxMSkpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMzk6I2RlZmluZSBEUDgzODY3X0RPV05TSElGVF8xX0NPVU5UX1ZBTFxcdDBcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE0MDojZGVmaW5lIERQODM4NjdfRE9XTlNISUZUXzJfQ09VTlRfVkFMXFx0MVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTQxOiNkZWZpbmUgRFA4Mzg2N19ET1dOU0hJRlRfNF9DT1VOVF9WQUxcXHQyXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxNDI6I2RlZmluZSBEUDgzODY3X0RPV05TSElGVF84X0NPVU5UX1ZBTFxcdDNcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE0MzojZGVmaW5lIERQODM4NjdfRE9XTlNISUZUXzFfQ09VTlRcXHQxXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxNDQ6I2RlZmluZSBEUDgzODY3X0RPV05TSElGVF8yX0NPVU5UXFx0MlxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTQ1OiNkZWZpbmUgRFA4Mzg2N19ET1dOU0hJRlRfNF9DT1VOVFxcdDRcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE0NjojZGVmaW5lIERQODM4NjdfRE9XTlNISUZUXzhfQ09VTlRcXHQ4XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxNDc6I2RlZmluZSBEUDgzODY3X1NHTUlJX0FVVE9ORUdfRU5cXHRCSVQoNylcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTE0OC1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTE0OS0vKiBDRkczIGJpdHMgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE1MDojZGVmaW5lIERQODM4NjdfQ0ZHM19JTlRfT0VcXHRcXHRcXHRCSVQoNylcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE1MTojZGVmaW5lIERQODM4NjdfQ0ZHM19ST0JVU1RfQVVUT19NRElYXFx0XFx0QklUKDkpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xNTItXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xNTMtLyogQ0ZHNCBiaXRzICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxNTQ6I2RlZmluZSBEUDgzODY3X0NGRzRfUE9SVF9NSVJST1JfRU4gICAgICAgICAgICAgIEJJVCgwKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMTU1LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMTU2LS8qIEZMRF9USFJfQ0ZHICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxNTc6I2RlZmluZSBEUDgzODY3X0ZMRF9USFJfQ0ZHX0VORVJHWV9MT1NUX1RIUl9NQVNLXFx0MHg3XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xNTgtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxNTk6I2RlZmluZSBEUDgzODY3X0xFRF9DT1VOVFxcdDRcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTE2MC1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTE2MS0vKiBMRURfRFJWIGJpdHMgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE2MjojZGVmaW5lIERQODM4NjdfTEVEX0RSVl9FTih4KVxcdEJJVCgoeCkgKiA0KVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTYzOiNkZWZpbmUgRFA4Mzg2N19MRURfRFJWX1ZBTCh4KVxcdEJJVCgoeCkgKiA0ICsgMSlcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE2NDojZGVmaW5lIERQODM4NjdfTEVEX1BPTEFSSVRZKHgpXFx0QklUKCh4KSAqIDQgKyAyKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMTY1LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTY2OiNkZWZpbmUgRFA4Mzg2N19MRURfRk4oaWR4LCB2YWwpXFx0KCgodmFsKSBcXHUwMDI2IDB4ZikgXFx1MDAzY1xcdTAwM2MgKChpZHgpICogNCkpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxNjc6I2RlZmluZSBEUDgzODY3X0xFRF9GTl9NQVNLKGlkeClcXHQoMHhmIFxcdTAwM2NcXHUwMDNjICgoaWR4KSAqIDQpKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTY4OiNkZWZpbmUgRFA4Mzg2N19MRURfRk5fUlhfRVJSXFx0XFx0MHhlIC8qIFJlY2VpdmUgRXJyb3IgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE2OTojZGVmaW5lIERQODM4NjdfTEVEX0ZOX1JYX1RYX0VSUlxcdDB4ZCAvKiBSZWNlaXZlIEVycm9yIG9yIFRyYW5zbWl0IEVycm9yICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxNzA6I2RlZmluZSBEUDgzODY3X0xFRF9GTl9MSU5LX1JYX1RYXFx0MHhiIC8qIExpbmsgZXN0YWJsaXNoZWQsIGJsaW5rIGZvciByeCBvciB0eCBhY3Rpdml0eSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTcxOiNkZWZpbmUgRFA4Mzg2N19MRURfRk5fRlVMTF9EVVBMRVhcXHQweGEgLyogRnVsbCBkdXBsZXggKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE3MjojZGVmaW5lIERQODM4NjdfTEVEX0ZOX0xJTktfMTAwXzEwMDBfQlRcXHQweDkgLyogMTAwLzEwMDBCVCBsaW5rIGVzdGFibGlzaGVkICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxNzM6I2RlZmluZSBEUDgzODY3X0xFRF9GTl9MSU5LXzEwXzEwMF9CVFxcdDB4OCAvKiAxMC8xMDBCVCBsaW5rIGVzdGFibGlzaGVkICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxNzQ6I2RlZmluZSBEUDgzODY3X0xFRF9GTl9MSU5LXzEwX0JUXFx0MHg3IC8qIDEwQlQgbGluayBlc3RhYmxpc2hlZCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTc1OiNkZWZpbmUgRFA4Mzg2N19MRURfRk5fTElOS18xMDBfQlRYXFx0MHg2IC8qIDEwMCBCVFggbGluayBlc3RhYmxpc2hlZCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTc2OiNkZWZpbmUgRFA4Mzg2N19MRURfRk5fTElOS18xMDAwX0JUXFx0MHg1IC8qIDEwMDAgQlQgbGluayBlc3RhYmxpc2hlZCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTc3OiNkZWZpbmUgRFA4Mzg2N19MRURfRk5fQ09MTElTSU9OXFx0MHg0IC8qIENvbGxpc2lvbiBkZXRlY3RlZCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTc4OiNkZWZpbmUgRFA4Mzg2N19MRURfRk5fUlhcXHRcXHQweDMgLyogUmVjZWl2ZSBhY3Rpdml0eSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTc5OiNkZWZpbmUgRFA4Mzg2N19MRURfRk5fVFhcXHRcXHQweDIgLyogVHJhbnNtaXQgYWN0aXZpdHkgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE4MDojZGVmaW5lIERQODM4NjdfTEVEX0ZOX1JYX1RYXFx0XFx0MHgxIC8qIFJlY2VpdmUgb3IgVHJhbnNtaXQgYWN0aXZpdHkgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE4MTojZGVmaW5lIERQODM4NjdfTEVEX0ZOX0xJTktcXHRcXHQweDAgLyogTGluayBlc3RhYmxpc2hlZCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMTgyLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM9MTgzPWVudW0ge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTg0OlxcdERQODM4NjdfUE9SVF9NSVJST0lOR19LRUVQLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTg1OlxcdERQODM4NjdfUE9SVF9NSVJST0lOR19FTixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE4NjpcXHREUDgzODY3X1BPUlRfTUlSUk9JTkdfRElTLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMTg3LX07XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jPTIxMj1zdGF0aWMgaW50IGRwODM4NjdfYWNrX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjEzLXtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjIxNDpcXHRpbnQgZXJyID0gcGh5X3JlYWQocGh5ZGV2LCBNSUlfRFA4Mzg2N19JU1IpO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjE1LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYz0yMjI9c3RhdGljIGludCBkcDgzODY3X3NldF93b2woc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjI4LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjI5OlxcdHZhbF9yeGNmZyA9IHBoeV9yZWFkX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19SWEZDRkcpO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjMwOlxcdHZhbF9taWNyID0gcGh5X3JlYWQocGh5ZGV2LCBNSUlfRFA4Mzg2N19NSUNSKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTIzMS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjMzLVxcdFxcdFxcdCAgICBXQUtFX0JDQVNUKSkge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjM0OlxcdFxcdHZhbF9yeGNmZyB8PSBEUDgzODY3X1dPTF9FTkhfTUFDO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjM1OlxcdFxcdHZhbF9taWNyIHw9IE1JSV9EUDgzODY3X01JQ1JfV09MX0lOVF9FTjtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTIzNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjQyLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjQzOlxcdFxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfUlhGUE1EMSxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI0NC1cXHRcXHRcXHRcXHQgICAgICAobWFjWzFdIFxcdTAwM2NcXHUwMDNjIDggfCBtYWNbMF0pKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI0NTpcXHRcXHRcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JYRlBNRDIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yNDYtXFx0XFx0XFx0XFx0ICAgICAgKG1hY1szXSBcXHUwMDNjXFx1MDAzYyA4IHwgbWFjWzJdKSk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyNDc6XFx0XFx0XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19SWEZQTUQzLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjQ4LVxcdFxcdFxcdFxcdCAgICAgIChtYWNbNV0gXFx1MDAzY1xcdTAwM2MgOCB8IG1hY1s0XSkpO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjQ5LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjUwOlxcdFxcdFxcdHZhbF9yeGNmZyB8PSBEUDgzODY3X1dPTF9NQUdJQ19FTjtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI1MS1cXHRcXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjUyOlxcdFxcdFxcdHZhbF9yeGNmZyBcXHUwMDI2PSB+RFA4Mzg2N19XT0xfTUFHSUNfRU47XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yNTMtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yNTUtXFx0XFx0aWYgKHdvbC1cXHUwMDNld29sb3B0cyBcXHUwMDI2IFdBS0VfTUFHSUNTRUNVUkUpIHtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI1NjpcXHRcXHRcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JYRlNPUDEsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yNTctXFx0XFx0XFx0XFx0ICAgICAgKHdvbC1cXHUwMDNlc29wYXNzWzFdIFxcdTAwM2NcXHUwMDNjIDgpIHwgd29sLVxcdTAwM2Vzb3Bhc3NbMF0pO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjU4OlxcdFxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfUlhGU09QMixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI1OS1cXHRcXHRcXHRcXHQgICAgICAod29sLVxcdTAwM2Vzb3Bhc3NbM10gXFx1MDAzY1xcdTAwM2MgOCkgfCB3b2wtXFx1MDAzZXNvcGFzc1syXSk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyNjA6XFx0XFx0XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19SWEZTT1AzLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjYxLVxcdFxcdFxcdFxcdCAgICAgICh3b2wtXFx1MDAzZXNvcGFzc1s1XSBcXHUwMDNjXFx1MDAzYyA4KSB8IHdvbC1cXHUwMDNlc29wYXNzWzRdKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI2Mi1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI2MzpcXHRcXHRcXHR2YWxfcnhjZmcgfD0gRFA4Mzg2N19XT0xfU0VDX0VOO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjY0LVxcdFxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyNjU6XFx0XFx0XFx0dmFsX3J4Y2ZnIFxcdTAwMjY9IH5EUDgzODY3X1dPTF9TRUNfRU47XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yNjYtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yNjgtXFx0XFx0aWYgKHdvbC1cXHUwMDNld29sb3B0cyBcXHUwMDI2IFdBS0VfVUNBU1QpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyNjk6XFx0XFx0XFx0dmFsX3J4Y2ZnIHw9IERQODM4NjdfV09MX1VDQVNUX0VOO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjcwLVxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI3MTpcXHRcXHRcXHR2YWxfcnhjZmcgXFx1MDAyNj0gfkRQODM4NjdfV09MX1VDQVNUX0VOO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjcyLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjczLVxcdFxcdGlmICh3b2wtXFx1MDAzZXdvbG9wdHMgXFx1MDAyNiBXQUtFX0JDQVNUKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6Mjc0OlxcdFxcdFxcdHZhbF9yeGNmZyB8PSBEUDgzODY3X1dPTF9CQ0FTVF9FTjtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI3NS1cXHRcXHRlbHNlXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyNzY6XFx0XFx0XFx0dmFsX3J4Y2ZnIFxcdTAwMjY9IH5EUDgzODY3X1dPTF9CQ0FTVF9FTjtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI3Ny1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6Mjc4OlxcdFxcdHZhbF9yeGNmZyBcXHUwMDI2PSB+RFA4Mzg2N19XT0xfRU5IX01BQztcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI3OTpcXHRcXHR2YWxfbWljciBcXHUwMDI2PSB+TUlJX0RQODM4NjdfTUlDUl9XT0xfSU5UX0VOO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjgwLVxcdH1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI4MS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI4MjpcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JYRkNGRywgdmFsX3J4Y2ZnKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI4MzpcXHRwaHlfd3JpdGUocGh5ZGV2LCBNSUlfRFA4Mzg2N19NSUNSLCB2YWxfbWljcik7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yODQtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jPTI4OD1zdGF0aWMgdm9pZCBkcDgzODY3X2dldF93b2woc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjk2LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6Mjk3OlxcdHZhbHVlID0gcGh5X3JlYWRfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JYRkNGRyk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yOTgtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyOTk6XFx0aWYgKHZhbHVlIFxcdTAwMjYgRFA4Mzg2N19XT0xfVUNBU1RfRU4pXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zMDAtXFx0XFx0d29sLVxcdTAwM2V3b2xvcHRzIHw9IFdBS0VfVUNBU1Q7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zMDEtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozMDI6XFx0aWYgKHZhbHVlIFxcdTAwMjYgRFA4Mzg2N19XT0xfQkNBU1RfRU4pXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zMDMtXFx0XFx0d29sLVxcdTAwM2V3b2xvcHRzIHw9IFdBS0VfQkNBU1Q7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zMDQtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozMDU6XFx0aWYgKHZhbHVlIFxcdTAwMjYgRFA4Mzg2N19XT0xfTUFHSUNfRU4pXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zMDYtXFx0XFx0d29sLVxcdTAwM2V3b2xvcHRzIHw9IFdBS0VfTUFHSUM7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zMDctXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozMDg6XFx0aWYgKHZhbHVlIFxcdTAwMjYgRFA4Mzg2N19XT0xfU0VDX0VOKSB7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozMDk6XFx0XFx0c29wYXNzX3ZhbCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjMxMDpcXHRcXHRcXHRcXHRcXHQgIERQODM4NjdfUlhGU09QMSk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zMTEtXFx0XFx0d29sLVxcdTAwM2Vzb3Bhc3NbMF0gPSAoc29wYXNzX3ZhbCBcXHUwMDI2IDB4ZmYpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zMTMtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozMTQ6XFx0XFx0c29wYXNzX3ZhbCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjMxNTpcXHRcXHRcXHRcXHRcXHQgIERQODM4NjdfUlhGU09QMik7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zMTYtXFx0XFx0d29sLVxcdTAwM2Vzb3Bhc3NbMl0gPSAoc29wYXNzX3ZhbCBcXHUwMDI2IDB4ZmYpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zMTgtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozMTk6XFx0XFx0c29wYXNzX3ZhbCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjMyMDpcXHRcXHRcXHRcXHRcXHQgIERQODM4NjdfUlhGU09QMyk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zMjEtXFx0XFx0d29sLVxcdTAwM2Vzb3Bhc3NbNF0gPSAoc29wYXNzX3ZhbCBcXHUwMDI2IDB4ZmYpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zMjYtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozMjc6XFx0aWYgKCEodmFsdWUgXFx1MDAyNiBEUDgzODY3X1dPTF9FTkhfTUFDKSlcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTMyOC1cXHRcXHR3b2wtXFx1MDAzZXdvbG9wdHMgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYz0zMzE9c3RhdGljIGludCBkcDgzODY3X2NvbmZpZ19pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTMzOS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjM0MDpcXHRcXHRtaWNyX3N0YXR1cyA9IHBoeV9yZWFkKHBoeWRldiwgTUlJX0RQODM4NjdfTUlDUik7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zNDEtXFx0XFx0aWYgKG1pY3Jfc3RhdHVzIFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMzQ0LVxcdFxcdG1pY3Jfc3RhdHVzIHw9XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozNDU6XFx0XFx0XFx0KE1JSV9EUDgzODY3X01JQ1JfQU5fRVJSX0lOVF9FTiB8XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozNDY6XFx0XFx0XFx0TUlJX0RQODM4NjdfTUlDUl9TUEVFRF9DSE5HX0lOVF9FTiB8XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozNDc6XFx0XFx0XFx0TUlJX0RQODM4NjdfTUlDUl9BVVRPTkVHX0NPTVBfSU5UX0VOIHxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjM0ODpcXHRcXHRcXHRNSUlfRFA4Mzg2N19NSUNSX0xJTktfU1RTX0NITkdfSU5UX0VOIHxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjM0OTpcXHRcXHRcXHRNSUlfRFA4Mzg2N19NSUNSX0RVUF9NT0RFX0NITkdfSU5UX0VOIHxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjM1MDpcXHRcXHRcXHRNSUlfRFA4Mzg2N19NSUNSX1NMRUVQX01PREVfQ0hOR19JTlRfRU4pO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMzUxLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MzUyOlxcdFxcdGVyciA9IHBoeV93cml0ZShwaHlkZXYsIE1JSV9EUDgzODY3X01JQ1IsIG1pY3Jfc3RhdHVzKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTM1My1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMzU0LVxcdFxcdG1pY3Jfc3RhdHVzID0gMHgwO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MzU1OlxcdFxcdGVyciA9IHBoeV93cml0ZShwaHlkZXYsIE1JSV9EUDgzODY3X01JQ1IsIG1pY3Jfc3RhdHVzKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTM1Ni1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYz0zNjU9c3RhdGljIGlycXJldHVybl90IGRwODM4NjdfaGFuZGxlX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zNjgtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozNjk6XFx0aXJxX3N0YXR1cyA9IHBoeV9yZWFkKHBoeWRldiwgTUlJX0RQODM4NjdfSVNSKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTM3MC1cXHRpZiAoaXJxX3N0YXR1cyBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMzc0LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6Mzc1OlxcdGlycV9lbmFibGVkID0gcGh5X3JlYWQocGh5ZGV2LCBNSUlfRFA4Mzg2N19NSUNSKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTM3Ni1cXHRpZiAoaXJxX2VuYWJsZWQgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jPTM4OT1zdGF0aWMgaW50IGRwODM4NjdfcmVhZF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTM5MC17XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozOTE6XFx0aW50IHN0YXR1cyA9IHBoeV9yZWFkKHBoeWRldiwgTUlJX0RQODM4NjdfUEhZU1RTKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTM5Mi1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00MDAtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0MDE6XFx0aWYgKHN0YXR1cyBcXHUwMDI2IERQODM4NjdfUEhZU1RTX0RVUExFWClcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQwMi1cXHRcXHRwaHlkZXYtXFx1MDAzZWR1cGxleCA9IERVUExFWF9GVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00MDUtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0MDY6XFx0aWYgKHN0YXR1cyBcXHUwMDI2IERQODM4NjdfUEhZU1RTXzEwMDApXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00MDctXFx0XFx0cGh5ZGV2LVxcdTAwM2VzcGVlZCA9IFNQRUVEXzEwMDA7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0MDg6XFx0ZWxzZSBpZiAoc3RhdHVzIFxcdTAwMjYgRFA4Mzg2N19QSFlTVFNfMTAwKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNDA5LVxcdFxcdHBoeWRldi1cXHUwMDNlc3BlZWQgPSBTUEVFRF8xMDA7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQxMi1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQxMzpcXHRpZiAoIShzdGF0dXMgXFx1MDAyNiBEUDgzODY3X1BIWVNUU19MSU5LKSkge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNDE0LVxcdFxcdHBoeWRldi1cXHUwMDNlbWRpeCA9IEVUSF9UUF9NRElfSU5WQUxJRDtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQxNS1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDE2OlxcdFxcdHN3aXRjaCAoc3RhdHVzIFxcdTAwMjYgRFA4Mzg2N19QSFlTVFNfTURJWF9NQVNLKSB7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00MTctXFx0XFx0Y2FzZSAwOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00MTktXFx0XFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0MjA6XFx0XFx0Y2FzZSBEUDgzODY3X1BIWVNUU19NRElYX01BU0s6XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00MjEtXFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2VtZGl4ID0gRVRIX1RQX01ESV9YO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYz00MzI9c3RhdGljIGludCBkcDgzODY3X2dldF9kb3duc2hpZnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQzNS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQzNjpcXHR2YWwgPSBwaHlfcmVhZChwaHlkZXYsIERQODM4NjdfQ0ZHMik7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00MzctXFx0aWYgKHZhbCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQzOS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQ0MDpcXHRlbmFibGUgPSBGSUVMRF9HRVQoRFA4Mzg2N19ET1dOU0hJRlRfRU4sIHZhbCk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0NDE6XFx0Y250ID0gRklFTERfR0VUKERQODM4NjdfRE9XTlNISUZUX0FUVEVNUFRfTUFTSywgdmFsKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQ0Mi1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQ0My1cXHRzd2l0Y2ggKGNudCkge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDQ0OlxcdGNhc2UgRFA4Mzg2N19ET1dOU0hJRlRfMV9DT1VOVF9WQUw6XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0NDU6XFx0XFx0Y291bnQgPSBEUDgzODY3X0RPV05TSElGVF8xX0NPVU5UO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNDQ2LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDQ3OlxcdGNhc2UgRFA4Mzg2N19ET1dOU0hJRlRfMl9DT1VOVF9WQUw6XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0NDg6XFx0XFx0Y291bnQgPSBEUDgzODY3X0RPV05TSElGVF8yX0NPVU5UO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNDQ5LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDUwOlxcdGNhc2UgRFA4Mzg2N19ET1dOU0hJRlRfNF9DT1VOVF9WQUw6XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0NTE6XFx0XFx0Y291bnQgPSBEUDgzODY3X0RPV05TSElGVF80X0NPVU5UO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNDUyLVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDUzOlxcdGNhc2UgRFA4Mzg2N19ET1dOU0hJRlRfOF9DT1VOVF9WQUw6XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0NTQ6XFx0XFx0Y291bnQgPSBEUDgzODY3X0RPV05TSElGVF84X0NPVU5UO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNDU1LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYz00NjU9c3RhdGljIGludCBkcDgzODY3X3NldF9kb3duc2hpZnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggY250KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00NjgtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0Njk6XFx0aWYgKGNudCBcXHUwMDNlIERQODM4NjdfRE9XTlNISUZUXzhfQ09VTlQpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00NzAtXFx0XFx0cmV0dXJuIC1FMkJJRztcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNDcyLVxcdGlmICghY250KVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDczOlxcdFxcdHJldHVybiBwaHlfY2xlYXJfYml0cyhwaHlkZXYsIERQODM4NjdfQ0ZHMixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQ3NDpcXHRcXHRcXHRcXHQgICAgICBEUDgzODY3X0RPV05TSElGVF9FTik7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00NzUtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00NzYtXFx0c3dpdGNoIChjbnQpIHtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQ3NzpcXHRjYXNlIERQODM4NjdfRE9XTlNISUZUXzFfQ09VTlQ6XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0Nzg6XFx0XFx0Y291bnQgPSBEUDgzODY3X0RPV05TSElGVF8xX0NPVU5UX1ZBTDtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQ3OS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQ4MDpcXHRjYXNlIERQODM4NjdfRE9XTlNISUZUXzJfQ09VTlQ6XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0ODE6XFx0XFx0Y291bnQgPSBEUDgzODY3X0RPV05TSElGVF8yX0NPVU5UX1ZBTDtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQ4Mi1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQ4MzpcXHRjYXNlIERQODM4NjdfRE9XTlNISUZUXzRfQ09VTlQ6XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0ODQ6XFx0XFx0Y291bnQgPSBEUDgzODY3X0RPV05TSElGVF80X0NPVU5UX1ZBTDtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQ4NS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQ4NjpcXHRjYXNlIERQODM4NjdfRE9XTlNISUZUXzhfQ09VTlQ6XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0ODc6XFx0XFx0Y291bnQgPSBEUDgzODY3X0RPV05TSElGVF84X0NPVU5UX1ZBTDtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQ4OC1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNDk0LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDk1OlxcdHZhbCA9IERQODM4NjdfRE9XTlNISUZUX0VOO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDk2OlxcdHZhbCB8PSBGSUVMRF9QUkVQKERQODM4NjdfRE9XTlNISUZUX0FUVEVNUFRfTUFTSywgY291bnQpO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNDk3LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDk4OlxcdHJldHVybiBwaHlfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19DRkcyLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDk5OlxcdFxcdFxcdCAgRFA4Mzg2N19ET1dOU0hJRlRfRU4gfCBEUDgzODY3X0RPV05TSElGVF9BVFRFTVBUX01BU0ssXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy01MDAtXFx0XFx0XFx0ICB2YWwpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYz01MjU9c3RhdGljIGludCBkcDgzODY3X2NvbmZpZ19wb3J0X21pcnJvcmluZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy01MjgtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo1Mjk6XFx0aWYgKGRwODM4NjctXFx1MDAzZXBvcnRfbWlycm9yaW5nID09IERQODM4NjdfUE9SVF9NSVJST0lOR19FTilcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjUzMDpcXHRcXHRwaHlfc2V0X2JpdHNfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X0NGRzQsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo1MzE6XFx0XFx0XFx0XFx0IERQODM4NjdfQ0ZHNF9QT1JUX01JUlJPUl9FTik7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy01MzItXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NTMzOlxcdFxcdHBoeV9jbGVhcl9iaXRzX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19DRkc0LFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NTM0OlxcdFxcdFxcdFxcdCAgIERQODM4NjdfQ0ZHNF9QT1JUX01JUlJPUl9FTik7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy01MzUtXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jPTUzOT1zdGF0aWMgaW50IGRwODM4Njdfb2ZfaW5pdF9pb19pbXBlZGFuY2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNTU2LVxcdFxcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wob2Zfbm9kZSwgXFxcInRpLG1heC1vdXRwdXQtaW1wZWRhbmNlXFxcIikpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo1NTc6XFx0XFx0XFx0ZHA4Mzg2Ny1cXHUwMDNlaW9faW1wZWRhbmNlID0gRFA4Mzg2N19JT19NVVhfQ0ZHX0lPX0lNUEVEQU5DRV9NQVg7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy01NTgtXFx0XFx0ZWxzZSBpZiAob2ZfcHJvcGVydHlfcmVhZF9ib29sKG9mX25vZGUsIFxcXCJ0aSxtaW4tb3V0cHV0LWltcGVkYW5jZVxcXCIpKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NTU5OlxcdFxcdFxcdGRwODM4NjctXFx1MDAzZWlvX2ltcGVkYW5jZSA9IERQODM4NjdfSU9fTVVYX0NGR19JT19JTVBFREFOQ0VfTUlOO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNTYwLVxcdFxcdGVsc2VcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNTc0LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NTc1OlxcdGlmICgodmFsIFxcdTAwMjYgRFA4Mzg2N19JT19NVVhfQ0ZHX0lPX0lNUEVEQU5DRV9NQVNLKSAhPSB2YWwpIHtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTU3Ni1cXHRcXHRwaHlkZXZfZXJyKHBoeWRldiwgXFxcIm52bWVtIGNlbGwgJ2lvX2ltcGVkYW5jZV9jdHJsJyBjb250ZW50cyBvdXQgb2YgcmFuZ2VcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYz01ODQ9c3RhdGljIGludCBkcDgzODY3X29mX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNTk5LVxcdFxcdGRwODM4NjctXFx1MDAzZXNldF9jbGtfb3V0cHV0ID0gdHJ1ZTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjYwMDpcXHRcXHQvKiBWYWxpZCB2YWx1ZXMgYXJlIDAgdG8gRFA4Mzg2N19DTEtfT19TRUxfUkVGX0NMSyBvclxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NjAxOlxcdFxcdCAqIERQODM4NjdfQ0xLX09fU0VMX09GRi5cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTYwMi1cXHRcXHQgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjYwMzpcXHRcXHRpZiAoZHA4Mzg2Ny1cXHUwMDNlY2xrX291dHB1dF9zZWwgXFx1MDAzZSBEUDgzODY3X0NMS19PX1NFTF9SRUZfQ0xLIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo2MDQ6XFx0XFx0ICAgIGRwODM4NjctXFx1MDAzZWNsa19vdXRwdXRfc2VsICE9IERQODM4NjdfQ0xLX09fU0VMX09GRikge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNjA1LVxcdFxcdFxcdHBoeWRldl9lcnIocGh5ZGV2LCBcXFwidGksY2xrLW91dHB1dC1zZWwgdmFsdWUgJXUgb3V0IG9mIHJhbmdlXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02MjAtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo2MjE6XFx0ZHA4Mzg2Ny1cXHUwMDNlcnhfaWRfZGVsYXkgPSBEUDgzODY3X1JHTUlJRENUTF8yXzAwX05TO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNjIyLVxcdHJldCA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKG9mX25vZGUsIFxcXCJ0aSxyeC1pbnRlcm5hbC1kZWxheVxcXCIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02MjMtXFx0XFx0XFx0XFx0ICAgXFx1MDAyNmRwODM4NjctXFx1MDAzZXJ4X2lkX2RlbGF5KTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjYyNDpcXHRpZiAoIXJldCBcXHUwMDI2XFx1MDAyNiBkcDgzODY3LVxcdTAwM2VyeF9pZF9kZWxheSBcXHUwMDNlIERQODM4NjdfUkdNSUlfUlhfQ0xLX0RFTEFZX01BWCkge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNjI1LVxcdFxcdHBoeWRldl9lcnIocGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02MzAtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo2MzE6XFx0ZHA4Mzg2Ny1cXHUwMDNldHhfaWRfZGVsYXkgPSBEUDgzODY3X1JHTUlJRENUTF8yXzAwX05TO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNjMyLVxcdHJldCA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKG9mX25vZGUsIFxcXCJ0aSx0eC1pbnRlcm5hbC1kZWxheVxcXCIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02MzMtXFx0XFx0XFx0XFx0ICAgXFx1MDAyNmRwODM4NjctXFx1MDAzZXR4X2lkX2RlbGF5KTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjYzNDpcXHRpZiAoIXJldCBcXHUwMDI2XFx1MDAyNiBkcDgzODY3LVxcdTAwM2V0eF9pZF9kZWxheSBcXHUwMDNlIERQODM4NjdfUkdNSUlfVFhfQ0xLX0RFTEFZX01BWCkge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNjM1LVxcdFxcdHBoeWRldl9lcnIocGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02NDEtXFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfYm9vbChvZl9ub2RlLCBcXFwiZW5ldC1waHktbGFuZS1zd2FwXFxcIikpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo2NDI6XFx0XFx0ZHA4Mzg2Ny1cXHUwMDNlcG9ydF9taXJyb3JpbmcgPSBEUDgzODY3X1BPUlRfTUlSUk9JTkdfRU47XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02NDMtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02NDQtXFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfYm9vbChvZl9ub2RlLCBcXFwiZW5ldC1waHktbGFuZS1uby1zd2FwXFxcIikpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo2NDU6XFx0XFx0ZHA4Mzg2Ny1cXHUwMDNlcG9ydF9taXJyb3JpbmcgPSBEUDgzODY3X1BPUlRfTUlSUk9JTkdfRElTO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNjQ2LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02NTMtXFx0XFx0XFx0ZHA4Mzg2Ny1cXHUwMDNldHhfZmlmb19kZXB0aCA9XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo2NTQ6XFx0XFx0XFx0XFx0XFx0RFA4Mzg2N19QSFlDUl9GSUZPX0RFUFRIXzRfQl9OSUI7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02NTUtXFx0fVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNjU2LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NjU3OlxcdGlmIChkcDgzODY3LVxcdTAwM2V0eF9maWZvX2RlcHRoIFxcdTAwM2UgRFA4Mzg2N19QSFlDUl9GSUZPX0RFUFRIX01BWCkge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNjU4LVxcdFxcdHBoeWRldl9lcnIocGh5ZGV2LCBcXFwidHgtZmlmby1kZXB0aCB2YWx1ZSAldSBvdXQgb2YgcmFuZ2VcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTY2NS1cXHRpZiAocmV0KVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NjY2OlxcdFxcdGRwODM4NjctXFx1MDAzZXJ4X2ZpZm9fZGVwdGggPSBEUDgzODY3X1BIWUNSX0ZJRk9fREVQVEhfNF9CX05JQjtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTY2Ny1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjY2ODpcXHRpZiAoZHA4Mzg2Ny1cXHUwMDNlcnhfZmlmb19kZXB0aCBcXHUwMDNlIERQODM4NjdfUEhZQ1JfRklGT19ERVBUSF9NQVgpIHtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTY2OS1cXHRcXHRwaHlkZXZfZXJyKHBoeWRldiwgXFxcInJ4LWZpZm8tZGVwdGggdmFsdWUgJXUgb3V0IG9mIHJhbmdlXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYz02Nzc9c3RhdGljIGludCBkcDgzODY3X29mX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNjg2LVxcdCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6Njg3OlxcdGRlbGF5ID0gcGh5X3JlYWRfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JHTUlJRENUTCk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo2ODg6XFx0ZHA4Mzg2Ny1cXHUwMDNlcnhfaWRfZGVsYXkgPSBkZWxheSBcXHUwMDI2IERQODM4NjdfUkdNSUlfUlhfQ0xLX0RFTEFZX01BWDtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjY4OTpcXHRkcDgzODY3LVxcdTAwM2V0eF9pZF9kZWxheSA9IChkZWxheSBcXHUwMDNlXFx1MDAzZSBEUDgzODY3X1JHTUlJX1RYX0NMS19ERUxBWV9TSElGVCkgXFx1MDAyNlxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NjkwOlxcdFxcdFxcdCAgICAgICBEUDgzODY3X1JHTUlJX1RYX0NMS19ERUxBWV9NQVg7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02OTEtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTY5NS1cXHQgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjY5NjpcXHRkcDgzODY3LVxcdTAwM2Vpb19pbXBlZGFuY2UgPSBEUDgzODY3X0lPX01VWF9DRkdfSU9fSU1QRURBTkNFX01JTiAvIDI7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02OTctXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTcwMS1cXHQgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjcwMjpcXHRkcDgzODY3LVxcdTAwM2V0eF9maWZvX2RlcHRoID0gRFA4Mzg2N19QSFlDUl9GSUZPX0RFUFRIXzRfQl9OSUI7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo3MDM6XFx0ZHA4Mzg2Ny1cXHUwMDNlcnhfZmlmb19kZXB0aCA9IERQODM4NjdfUEhZQ1JfRklGT19ERVBUSF80X0JfTklCO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNzA0LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYz03NTY9c3RhdGljIGludCBfX2RwODM4NjdfbGVkX21vZGlmeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MzIgcmVnLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy03NjUtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo3NjY6XFx0aWYgKHJlZyA9PSBEUDgzODY3X0xFRENSMSkge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNzY3LVxcdFxcdGRwODM4NjctXFx1MDAzZWxlZGNyMSA9IChkcDgzODY3LVxcdTAwM2VsZWRjcjEgXFx1MDAyNiB+bWFzaykgfCAodmFsIFxcdTAwMjYgbWFzayk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy03NjgtXFx0XFx0ZHA4Mzg2Ny1cXHUwMDNlbGVkY3IxX21hc2sgfD0gbWFzaztcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjc2OTpcXHR9IGVsc2UgaWYgKHJlZyA9PSBEUDgzODY3X0xFRENSMikge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNzcwLVxcdFxcdGRwODM4NjctXFx1MDAzZWxlZGNyMiA9IChkcDgzODY3LVxcdTAwM2VsZWRjcjIgXFx1MDAyNiB+bWFzaykgfCAodmFsIFxcdTAwMjYgbWFzayk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jPTc4Mj1zdGF0aWMgaW50IGRwODM4NjdfbGVkX3Jlc3RvcmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNzg4LVxcdGlmIChkcDgzODY3LVxcdTAwM2VsZWRjcjFfbWFzaylcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjc4OTpcXHRcXHRyZXQgPSBwaHlfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjEsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy03OTAtXFx0XFx0XFx0XFx0IGRwODM4NjctXFx1MDAzZWxlZGNyMV9tYXNrLCBkcDgzODY3LVxcdTAwM2VsZWRjcjEpO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNzkxLVxcdGlmICghcmV0IFxcdTAwMjZcXHUwMDI2IGRwODM4NjctXFx1MDAzZWxlZGNyMl9tYXNrKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NzkyOlxcdFxcdHJldCA9IHBoeV9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTc5My1cXHRcXHRcXHRcXHQgZHA4Mzg2Ny1cXHUwMDNlbGVkY3IyX21hc2ssIGRwODM4NjctXFx1MDAzZWxlZGNyMik7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jPTc5OT1zdGF0aWMgaW50IGRwODM4NjdfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtODA2LVxcdC8qIEZvcmNlIHNwZWVkIG9wdGltaXphdGlvbiBmb3IgdGhlIFBIWSBldmVuIGlmIGl0IHN0cmFwcGVkICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo4MDc6XFx0cmV0ID0gcGh5X21vZGlmeShwaHlkZXYsIERQODM4NjdfQ0ZHMiwgRFA4Mzg2N19ET1dOU0hJRlRfRU4sXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo4MDg6XFx0XFx0XFx0IERQODM4NjdfRE9XTlNISUZUX0VOKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTgwOS1cXHRpZiAocmV0KVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQwMDoyOTowMy43MjcxNjc3NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMwOTcxNDk4MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBEUDgzODY3IFBIWSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuY2AuIFJpZ2h0IG9mZiB0aGUgYmF0LCBpdCdzIGFuIE1ESU8gUEhZIGRyaXZlciBkZXNpZ25lZCBmb3IgdGhlIFRleGFzIEluc3RydW1lbnRzIERQODM4NjcgUEhZLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgaXRzIGludGVncmF0aW9uIHdpdGhpbiB0aGUgYnJvYWRlciBQSFkgZHJpdmVyIGFyY2hpdGVjdHVyZSBvZiBgZHJpdmVycy9uZXQvcGh5YC4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlc2UgUEhZIGRyaXZlcnMgYXJlIHR5cGljYWxseSBwcm9iZWQgYW5kIHV0aWxpemVkLiBBcmUgdGhleSBzdHJpY3RseSB0aWVkIHRvIHBoeXNpY2FsIEV0aGVybmV0IFBIWSBjaGlwcyBjb25uZWN0ZWQgdG8gTURJTyBidXNlcz8gT3IgaXMgdGhlcmUgYW55IGZsZXhpYmlsaXR5LCBhbnkgd2F5IHRvIGVtdWxhdGUgb3IgaW50ZXJmYWNlIHRoZW0gaW4gYSB2aXJ0dWFsIGVudmlyb25tZW50IGxpa2Ugc3l6a2FsbGVyIG9yIFFFTVU/XG5cbkknbSB0aGlua2luZyBJJ2xsIG5lZWQgdG8gYnJvYWRlbiBteSBzZWFyY2ggdGVybXMgdG8gaW5jbHVkZSByZWxhdGVkIGNvbmNlcHRzLiBTbywgSSBuZWVkIHRvIGxvb2sgaW50byBob3cgTURJTyBidXNlcywgTURJTyBiaXQtYmFuZ2luZywgTURJTy1HUElPLCB0aGUgY29uY2VwdCBvZiB2aXJ0dWFsIE1ESU8gaW50ZXJmYWNlcywgYW5kIGZpeGVkLVBIWSBjb25maWd1cmF0aW9ucyBmdW5jdGlvbiwgYXMgd2VsbCBhcyB0aGUgc3RydWN0dXJlcyBsaWtlIGBwaHlfZGV2aWNlYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRvIGludGVyYWN0IHdpdGggdGhpcyB0aGluZywgYmVjYXVzZSBJJ20gYXNzdW1pbmcgdGhhdCBpdCB3aWxsIGJlIGEgcGFpbi5cblxuTXkgZmluYWwgdGhvdWdodCBpcyB0aGF0IEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgYW55IGV4aXN0aW5nIG5ldHdvcmsgZHJpdmVyIG9yIHZpcnR1YWwgZHJpdmVyIHJlYWRpbHkgaW50ZXJmYWNlcyB3aXRoIHRoZSBEUDgzODY3LCBvciBpZiBpdCBoYXMgc3BlY2lmaWMgaGFyZHdhcmUgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8ga25vdyBpZiB0aGUgaGFyZHdhcmUgaXMgZnVsbHkgcmVxdWlyZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMDg3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDAwOjI5OjA2LjgyNDMxOTk2NFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTI2MTU2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfcGh5X2RyaXZlci4qZHA4Mzg2N1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYz0xMjY1PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkcDgzODY3X2RyaXZlcltdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xMzAzLX07XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMzA0Om1vZHVsZV9waHlfZHJpdmVyKGRwODM4NjdfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTEzMDUtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDAwOjI5OjA2Ljg3MzU4NzM1M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ0MDQwOTQ4MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW52ZXN0aWdhdGlvbiBpbnRvIERQODM4NjcgUEhZIERyaXZlciBSZWFjaGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhpcyBgZHA4Mzg2N2AgUEhZIGRyaXZlciBpcyBiZWluZyByZWdpc3RlcmVkIGFuZCB3aGV0aGVyIGl0J3Mgc29tZXRoaW5nIEkgY2FuIGFjdHVhbGx5IHdvcmsgd2l0aCBpbiB0aGlzIHNjZW5hcmlvLiBGaXJzdCwgSSdtIGdvaW5nIHRvIGxvb2sgYXQgdGhlIGNvZGUuIExldCdzIHNlZSBob3cgYHBoeV9kcml2ZXJgIGdldHMgcmVnaXN0ZXJlZCwgc3BlY2lmaWNhbGx5IGluIGBkcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jYC4gQWgsIGBtb2R1bGVfcGh5X2RyaXZlcihkcDgzODY3X2RyaXZlcilgIOKAkyBzbyBpdCdzIHJlZ2lzdGVyaW5nIGEgYHBoeV9kcml2ZXJgIHRoYXQgbWF0Y2hlcyBgRFA4Mzg2N19QSFlfSURgLCB3aGljaCBpcyBgMHgyMDAwYTIzMWAuIE1ha2VzIHNlbnNlLlxuXG5Ob3csIHdoZW4gZG9lcyB0aGlzIGRyaXZlciAqYWN0dWFsbHkqIGdldCBwcm9iZWQ/IFJpZ2h0LCB3aGVuIHRoZSBNRElPIGJ1cyBpcyBzY2FubmVkLiBTbywgZnVuY3Rpb25zIGxpa2UgYG1kaW9idXNfc2NhbmAgb3IgYG9mX21kaW9gIGFyZSB0aGUgdHJpZ2dlcnMuIE9yLCBpZiBhIGBwaHlfZGV2aWNlYCBpcyBleHBsaWNpdGx5IGNyZWF0ZWQgd2l0aCB0aGF0IHNwZWNpZmljIFBIWSBJRC4gR29vZC5cblxuVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGhlcmUgaXMgd2hldGhlciBRRU1VIG9yIGFueSBzdGFuZGFyZCB2aXJ0dWFsIGVudmlyb25tZW50ICplbXVsYXRlcyogYSBEUDgzODY3IFBIWS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUgYXJlIHZpcnR1YWwgYnVzZXMsIGVtdWxhdGVkIGRldmljZXMsIGEgbW9jayBNRElPLCBvciBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggcHVyZWx5IHBoeXNpY2FsIGhhcmR3YXJlIGhlcmUuIFdhaXQsIHdoYXQgaXMgdGhlIERQODM4NjcgaW4gdGhlIHJlYWwgd29ybGQ/IE9oIHJpZ2h0LCBpdCdzIGEgcGh5c2ljYWwgRXRoZXJuZXQgUEhZIGNoaXAgZnJvbSBUZXhhcyBJbnN0cnVtZW50cy5cblxuU28sIEkgbmVlZCB0byBrbm93IGlmIFFFTVUgb3Igc29tZSB2aXJ0dWFsIGJ1cyAqc3BlY2lmaWNhbGx5KiBlbXVsYXRlcyB0aGlzLiBJZiBub3QsIGl0IGNvdWxkIGJlIGEgcGh5c2ljYWwgaGFyZHdhcmUgZGVwZW5kZW5jeS4gTGV0J3Mgbm90IGZvcmdldCBzZWN0aW9uIDIgb2YgdGhlIGluc3RydWN0aW9uczogXCJTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuLi5cIiDigJMgdGhpbmdzIGxpa2Ugc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgTklDcywgYW5kIEdQVSBkcml2ZXJzLiBJdCBtZW50aW9ucyB0aG9zZSByZXF1aXJlIHBoeXNpY2FsIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBRRU1VLlxuXG5CdXQuLi4gYXJlIFBIWSBkcml2ZXJzIHRoZSBzYW1lPyBBcmUgdGhleSAqc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlKj8gQ2FuIEkgY3JlYXRlIE1ESU8gZGV2aWNlcyBmcm9tIHVzZXJzcGFjZSwgdXNlIHZpcnR1YWwgZGV2aWNlcywgb3IgZG8gSSBuZWVkIHRvIGxvb2sgZm9yIHN5c2ZzLCBuZXRsaW5rLCBVU0IsIG9yIG1vY2sgTURJTyBtZXRob2RzP1xuXG5JJ20gZ29pbmcgdG8gc3RhcnQgYnkgc2VhcmNoaW5nIHRoZSBrZXJuZWwgc291cmNlcyBmb3IgXCJtZGlvLFwiIHRoZW4gXCJwaHlfZGV2aWNlX2NyZWF0ZSxcIiB0aGVuIFwibWRpb2J1c19yZWdpc3RlcixcIiBhbmQgdGhlbiBcIm5ldGxpbmsgbWRpby5cIiBIb3BlZnVsbHksIHRoYXQgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZXNlIHZpcnR1YWwgZHJpdmVycyBtaWdodCBiZSBleHBvc2VkIGlmIGF0IGFsbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI3MDcsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMDA6Mjk6MTEuMjc3Njg0MDk4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5Nzc1NTE4OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5X2RldmljZV9jcmVhdGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jPTExNz1pbnQgZndub2RlX21kaW9idXNfcmVnaXN0ZXJfcGh5KHN0cnVjdCBtaWlfYnVzICpidXMsXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmMtMTM0LVxcdGVsc2VcXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmM6MTM1OlxcdFxcdHBoeSA9IHBoeV9kZXZpY2VfY3JlYXRlKGJ1cywgYWRkciwgcGh5X2lkLCAwLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmMtMTM2LVxcdGlmIChJU19FUlIocGh5KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmM9NTUxPXN0YXRpYyB2b2lkIHRqYTExMDJfcDFfcmVnaXN0ZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmMtNTg1LVxcdFxcdC8qIFJlYWwgUEhZIElEIG9mIFBvcnQgMSBpcyAwICovXFxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmM6NTg2OlxcdFxcdHBoeSA9IHBoeV9kZXZpY2VfY3JlYXRlKGJ1cywgYWRkciwgUEhZX0lEX1RKQTExMDIsIGZhbHNlLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYy01ODctXFx0XFx0aWYgKElTX0VSUihwaHkpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYy01OTItXFxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmM6NTkzOlxcdFxcdC8qIE92ZXJ3cml0ZSBwYXJlbnQgZGV2aWNlLiBwaHlfZGV2aWNlX2NyZWF0ZSgpIHNldCBwYXJlbnQgdG9cXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYy01OTQtXFx0XFx0ICogdGhlIG1paV9idXMtXFx1MDAzZWRldiwgd2hpY2ggaXMgbm90IGNvcnJlY3QgaW4gY2FzZS5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9NzI4PXN0YXRpYyBpbnQgcGh5X3JlcXVlc3RfZHJpdmVyX21vZHVsZShzdHJ1Y3QgcGh5X2RldmljZSAqZGV2LCB1MzIgcGh5X2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy03NDctXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzo3NDg6c3RydWN0IHBoeV9kZXZpY2UgKnBoeV9kZXZpY2VfY3JlYXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCB1MzIgcGh5X2lkLFxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNzQ5LVxcdFxcdFxcdFxcdCAgICAgYm9vbCBpc19jNDUsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTgzOS19XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzo4NDA6RVhQT1JUX1NZTUJPTChwaHlfZGV2aWNlX2NyZWF0ZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy04NDEtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTEwNzE9c3RydWN0IHBoeV9kZXZpY2UgKmdldF9waHlfZGV2aWNlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBib29sIGlzX2M0NSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTA5Ni1cXHRcXHRpZiAoIXIpXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMDk3OlxcdFxcdFxcdHJldHVybiBwaHlfZGV2aWNlX2NyZWF0ZShidXMsIGFkZHIsIHBoeV9pZCxcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEwOTgtXFx0XFx0XFx0XFx0XFx0XFx0IHRydWUsIFxcdTAwMjZjNDVfaWRzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTEwMC1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjExMDE6XFx0cmV0dXJuIHBoeV9kZXZpY2VfY3JlYXRlKGJ1cywgYWRkciwgcGh5X2lkLCBpc19jNDUsIFxcdTAwMjZjNDVfaWRzKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTExMDItfVxcbi0tXFxuaW5jbHVkZS9saW51eC9waHkuaD0yMTQ5PWludCBwaHlfbW9kaWZ5X3BhZ2VkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBwYWdlLCB1MzIgcmVnbnVtLFxcbi0tXFxuaW5jbHVkZS9saW51eC9waHkuaC0yMTUxLVxcbmluY2x1ZGUvbGludXgvcGh5Lmg6MjE1MjpzdHJ1Y3QgcGh5X2RldmljZSAqcGh5X2RldmljZV9jcmVhdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIHUzMiBwaHlfaWQsXFxuaW5jbHVkZS9saW51eC9waHkuaC0yMTUzLVxcdFxcdFxcdFxcdCAgICAgYm9vbCBpc19jNDUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDAwOjI5OjEzLjI1NTI0NDI4OFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjg5OTI3NTMzMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipJbnZlc3RpZ2F0aW5nIFVzZXItU3BhY2UgUEhZL01ESU8gRGV2aWNlIENyZWF0aW9uKipcblxuQWxyaWdodCwgSSdtIHRyeWluZyB0byBmaWd1cmUgc29tZXRoaW5nIG91dCBoZXJlLiBDYW4gYSB1c2VyLXNwYWNlIGFwcGxpY2F0aW9uIGFjdHVhbGx5ICpjcmVhdGUqIGEgUEhZIGRldmljZSBvbiBhbiBNRElPIGJ1cywgb3IgZXZlbiAqY3JlYXRlKiB0aGUgTURJTyBidXMgaXRzZWxmPyBJdCdzIGEgYml0IG9mIGEgdHJpY2t5IHF1ZXN0aW9uLCBhbmQgbXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIHRoaW5rIGFib3V0IHRoZSBwZXJpcGhlcnkgb2YgdGhhdC4gSSdtIHdvbmRlcmluZyBpZiB0aGVyZSBhcmUgYW55IGFuYWxvZ291cyBtZWNoYW5pc21zIGFscmVhZHkgaW4gcGxhY2UsIGZvciBleGFtcGxlIHdpdGggVVNCIEV0aGVybmV0IGRvbmdsZXMuIERvIHRob3NlIHV0aWxpemUgTURJTyBidXNlcyBvciBQSFkgZGV2aWNlcyBpbiB0aGVpciBkcml2ZXIgaW1wbGVtZW50YXRpb24/IEFuZCBpZiBzbywgaG93P1xuXG5NeSBmaXJzdCBhcHByb2FjaCB3aWxsIGJlIHRvIHJlc2VhcmNoIGhvdyB0aGUgVVNCIEV0aGVybmV0IGRyaXZlcnMgYXJlIHN0cnVjdHVyZWQuIEl0IG1pZ2h0IGJlIHBvc3NpYmxlIHRoYXQgYSB2aXJ0dWFsIG5ldHdvcmsgZGV2aWNlIGV4cG9zZXMgc29tZXRoaW5nIGFraW4gdG8gYW4gTURJTyBidXMgb3IgUEhZIGRldmljZS4gU28sIHRoZSBuZXh0IHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBMaW51eCBrZXJuZWwgYW5kIGxvb2sgYXQgdGhlIFVTQiBFdGhlcm5ldCBkcml2ZXJzLCBwYXJ0aWN1bGFybHkgYW55IG9mIHRoZSB2aXJ0dWFsIGRyaXZlcnMuIEknbSBnb2luZyB0byBmb2N1cyBteSBzZWFyY2gsIGluaXRpYWxseSwgb24gc2VlaW5nIGhvdyB0aGVzZSBkcml2ZXJzIGludGVyYWN0IHdpdGggTURJTy5cblxuVG8gbWFrZSB0aGlzIGVmZmljaWVudCwgSSB0aGluayBJJ2xsIHVzZSBgZ3JlcGAgdG8gcXVpY2tseSBzZWFyY2ggdGhlIGBkcml2ZXJzL25ldC91c2JgIGRpcmVjdG9yeSBmb3IgYW55IGluc3RhbmNlcyBvZiBgbWRpb2J1c19yZWdpc3RlcmAuIFRoYXQgc2hvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBxdWlja2x5IGZpbmQgcmVsZXZhbnQgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ2MzcsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQwMDoyOToyMi4yNDgwMDEyMTRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MzQzNTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1kaW9idXNfcmVnaXN0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz02Njk9c3RhdGljIGludCBheDg4NzcyX2luaXRfbWRpbyhzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjg2LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2ODc6XFx0cmV0ID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVxcdTAwM2VtZGlvKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjg4LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jPTYxPXN0YXRpYyBpbnQgYXg4ODE3MmFfaW5pdF9tZGlvKHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTc5LVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjgwOlxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIocHJpdi1cXHUwMDNlbWRpbyk7XFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtODEtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0yMDkxPXN0YXRpYyBpbnQgbGFuNzh4eF9tZGlvX2luaXQoc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIxMjEtXFx0bm9kZSA9IG9mX2dldF9jaGlsZF9ieV9uYW1lKGRldi1cXHUwMDNldWRldi1cXHUwMDNlZGV2Lm9mX25vZGUsIFxcXCJtZGlvXFxcIik7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMTIyOlxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoZGV2LVxcdTAwM2VtZGlvYnVzLCBub2RlKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIxMjMtXFx0b2Zfbm9kZV9wdXQobm9kZSk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYz0xMTQ3PXN0YXRpYyBpbnQgc21zYzk1eHhfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMTI0MS1cXG5kcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYzoxMjQyOlxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIocGRhdGEtXFx1MDAzZW1kaW9idXMpO1xcbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jLTEyNDMtXFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQwMDoyOToyMi4yOTYzNTA3NjNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjcxMTIyMDQwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIFVTQiBFdGhlcm5ldCBhbmQgTURJTyBCdXMgSW50ZXJhY3Rpb24qKlxuXG5Pa2F5LCBzbyBoZXJlJ3MgdGhlIHRob3VnaHQgcHJvY2VzczogSSdtIGxvb2tpbmcgYXQgaG93IFVTQiBFdGhlcm5ldCBkZXZpY2VzLCBlc3BlY2lhbGx5IHRob3NlIHVzaW5nIGVtdWxhdGlvbiBsaWtlIFJhdy1HYWRnZXQgb3IgdGhlIFVTQiBlbXVsYXRpb24gd2l0aGluIFN5emthbGxlciwgaW50ZXJhY3Qgd2l0aCB0aGUgTURJTyBidXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZXNlIGVtdWxhdGVkIGRldmljZXMgY2FuIHJlZ2lzdGVyIGFuIE1ESU8gYnVzLiBUaGVuLCB3aGVuIHRoZSBzeXN0ZW0gc2NhbnMgdGhhdCBidXMsIGlmIGl0IHJlY2VpdmVzIGEgUEhZIElEIGJhY2sgKHBlcmhhcHMgdGhyb3VnaCBVU0IgcmVzcG9uc2VzKSwgdGhlIGtlcm5lbCBjYWxscyBgcGh5X2RldmljZV9jcmVhdGVgIGFuZCBwb3RlbnRpYWxseSBtYXRjaGVzIHVwIHdpdGggZHJpdmVycyBsaWtlIGBkcDgzODY3X2RyaXZlcmAuXG5cbkJ1dCwgbGV0J3Mgc3RlcCBiYWNrIGFuZCBiZSBzdXJlLiBJIG5lZWQgdG8gdmVyaWZ5IHdoZXRoZXIgUmF3IEdhZGdldCBvciBVU0IgZnV6emluZyBhY3R1YWxseSBjYW4gZW11bGF0ZSB0aGVzZSBVU0IgRXRoZXJuZXQgZGV2aWNlcyAqd2l0aCogZnVuY3Rpb25hbCBNRElPIGJ1c2VzLiBPciwgY2FuIFN5emthbGxlciBwcm9iZSB0aGUgUEhZIGRyaXZlcnMgaW4gdGhpcyBjb25maWd1cmF0aW9uPyBUaGF0J3MgdGhlIGNvcmUgcXVlc3Rpb24uXG5cbk5leHQsIEkgc2hvdWxkIGxvb2sgYXQgc29tZSBleGlzdGluZyBVU0IgRXRoZXJuZXQgZHJpdmVycyBhbmQgaG93IHRoZXkgaW50ZXJmYWNlIHdpdGggdGhlIE1ESU8gYnVzLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNvZGUgaW4gYGFzaXhfZGV2aWNlcy5jYCBhbmQgYHNtc2M5NXh4LmNgIHRvIHNlZSBwcmVjaXNlbHkgd2hhdCBoYXBwZW5zIHdoZW4gYG1kaW9idXNfcmVnaXN0ZXJgIGlzIGNhbGxlZCB3aXRoaW4gdGhvc2UgZHJpdmVycy4gVW5kZXJzdGFuZGluZyB0aGUgKnR5cGljYWwqIHJlZ2lzdHJhdGlvbiBwcm9jZXNzIGlzIGNyaXRpY2FsLlxuXG5BbmQgZmluYWxseSwgSSdsbCBuZWVkIHRvIGludmVzdGlnYXRlIHRoZSBjb3JlIE1ESU8gYnVzIGltcGxlbWVudGF0aW9uIGl0c2VsZi4gSSBzaG91bGQgZGl2ZSBpbnRvIGBtZGlvYnVzX3JlZ2lzdGVyYCBpbiBgZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzLmNgIHRvIGNvbmZpcm0gdGhlIE1ESU8gYnVzIGNvbmZpZ3VyYXRpb24sIGFuZCBkYXRhLWZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NTYxLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDAwOjI5OjI1LjAwNzU3MzU3M1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkxNTk1MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpb2J1c19zY2FuXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYz0zOTY9c3RhdGljIHZvaWQgb2ZfbWRpb2J1c19saW5rX21kaW9kZXYoc3RydWN0IG1paV9idXMgKmJ1cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTQwNy1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo0MDg6c3RhdGljIHN0cnVjdCBwaHlfZGV2aWNlICptZGlvYnVzX3NjYW4oc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGJvb2wgYzQ1KVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTQwOS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy00NDctLyoqXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NDQ4OiAqIG1kaW9idXNfc2Nhbl9jMjIgLSBzY2FuIG9uZSBhZGRyZXNzIG9uIGEgYnVzIGZvciBDMjIgTURJTyBkZXZpY2VzLlxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTQ0OS0gKiBAYnVzOiBtaWlfYnVzIHRvIHNjYW5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTQ1OC0gKi9cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo0NTk6c3RydWN0IHBoeV9kZXZpY2UgKm1kaW9idXNfc2Nhbl9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIpXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNDYwLXtcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo0NjE6XFx0cmV0dXJuIG1kaW9idXNfc2NhbihidXMsIGFkZHIsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy00NjItfVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjQ2MzpFWFBPUlRfU1lNQk9MKG1kaW9idXNfc2Nhbl9jMjIpO1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTQ2NC1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy00NjUtLyoqXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NDY2OiAqIG1kaW9idXNfc2Nhbl9jNDUgLSBzY2FuIG9uZSBhZGRyZXNzIG9uIGEgYnVzIGZvciBDNDUgTURJTyBkZXZpY2VzLlxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTQ2Ny0gKiBAYnVzOiBtaWlfYnVzIHRvIHNjYW5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTQ3Ni0gKi9cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo0Nzc6c3RhdGljIHN0cnVjdCBwaHlfZGV2aWNlICptZGlvYnVzX3NjYW5fYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyKVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTQ3OC17XFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NDc5OlxcdHJldHVybiBtZGlvYnVzX3NjYW4oYnVzLCBhZGRyLCB0cnVlKTtcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy00ODAtfVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTQ4MS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo0ODI6c3RhdGljIGludCBtZGlvYnVzX3NjYW5fYnVzX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzKVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTQ4My17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy00ODktXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NDkwOlxcdFxcdFxcdHBoeWRldiA9IG1kaW9idXNfc2Nhbl9jMjIoYnVzLCBpKTtcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy00OTEtXFx0XFx0XFx0aWYgKElTX0VSUihwaHlkZXYpIFxcdTAwMjZcXHUwMDI2IChQVFJfRVJSKHBoeWRldikgIT0gLUVOT0RFVikpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy00OTctXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NDk4OnN0YXRpYyBpbnQgbWRpb2J1c19zY2FuX2J1c19jNDUoc3RydWN0IG1paV9idXMgKmJ1cylcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy00OTkte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNTA5LVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjUxMDpcXHRcXHRcXHRwaHlkZXYgPSBtZGlvYnVzX3NjYW5fYzQ1KGJ1cywgaSk7XFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNTExLVxcdFxcdFxcdGlmIChJU19FUlIocGh5ZGV2KSBcXHUwMDI2XFx1MDAyNiAoUFRSX0VSUihwaHlkZXYpICE9IC1FTk9ERVYpKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM9NTUzPWludCBfX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKmJ1cywgc3RydWN0IG1vZHVsZSAqb3duZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy02MzItXFx0aWYgKGJ1cy1cXHUwMDNlcmVhZCkge1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjYzMzpcXHRcXHRlcnIgPSBtZGlvYnVzX3NjYW5fYnVzX2MyMihidXMpO1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTYzNC1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNjQwLVxcdGlmICghcHJldmVudF9jNDVfc2NhbiBcXHUwMDI2XFx1MDAyNiBidXMtXFx1MDAzZXJlYWRfYzQ1KSB7XFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NjQxOlxcdFxcdGVyciA9IG1kaW9idXNfc2Nhbl9idXNfYzQ1KGJ1cyk7XFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNjQyLVxcdFxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDAwOjI5OjI1LjA1NjczODU4MloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjgxMTIzODUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRFA4Mzg2NyBEcml2ZXIgQWN0aXZhdGlvbioqXG5cbk9rYXksIGhlcmUncyB3aGF0J3MgY2F0Y2hpbmcgbXkgZXllLiBJJ20gb2JzZXJ2aW5nIHRoZSBVU0IgRXRoZXJuZXQgZGV2aWNlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzLCBzcGVjaWZpY2FsbHkgaG93IGBfX21kaW9idXNfcmVnaXN0ZXJgIGlzIHRyaWdnZXJlZCB3aGVuIGEgVVNCIEV0aGVybmV0IGRldmljZSBsaWtlIGFuIHNtc2M5NXh4IG9yIGFzaXggY29tZXMgb25saW5lLiBJIG5vdGljZSB0aGF0IHRoaXMgdHJpZ2dlcnMgYW4gTURJTyBidXMgc2NhbiBhbmQgcmVhZHMgdGhlIFBIWSBJRCByZWdpc3RlcnMuIEludGVyZXN0aW5nISBJZiB0aGUgZGV2aWNlIGhhcHBlbnMgdG8gcmV0dXJuIHRoZSBEUDgzODY3IFBIWSBJRCwgd2hpY2ggaXMgMHgyMDAwYTIzMSwgdGhlIERQODM4NjcgZHJpdmVyIHByb2JlIGdldHMga2lja2VkIG9mZiBhdXRvbWF0aWNhbGx5LiBUaGF0J3MgZ29vZCBkZXNpZ24uXG5cbk5vdywgSSdtIGFscmVhZHkgdGhpbmtpbmcgYWJvdXQgdGhlIGJpZ2dlciBwaWN0dXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBjb25uZWN0cyB0byB0aGUgYnJvYWRlciBuZXR3b3JrIGNvbmZpZ3VyYXRpb24uIEhvdyBhcmUgdGhlIHN5c2ZzIGludGVyZmFjZXMsIG5ldGxpbmssIGV0aHRvb2wsIGFuZCB0aGUgTEVEIHN5c2ZzIGludGVncmF0ZWQgaW50byB0aGlzIHByb2Nlc3M/IEkgbmVlZCB0byBkcmlsbCBkb3duIGludG8gdGhlIGRldGFpbHMgb2YgdGhlIExFRCBtYW5hZ2VtZW50LCBzbyBJIHNob3VsZCBzZWUgaG93IHRoZSBjYWxsYmFja3MgYXJlIGltcGxlbWVudGVkIHdpdGhpbiB0aGUgYGRwODM4NjdgIGRyaXZlci5cblxuTGV0IG1lIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGUgYGRwODM4NjcuY2Agc291cmNlIGNvZGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZXMgMTAwMCB0byAxMzAwLiBUaGF0J3MgdGhlIGxpa2VseSBhcmVhIHdoZXJlIExFRC1yZWxhdGVkIGNhbGxiYWNrcyBhcmUgZGVmaW5lZC4gVGhpcyB3aWxsIGhlbHAgbWUgdHJhY2UgaG93IHRoZSBkcml2ZXIgaW50ZXJhY3RzIHdpdGggdGhlIHN5c3RlbSB0byBjb250cm9sIGxpbmsgc3RhdHVzIGFuZCBhY3Rpdml0eSBMRURzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzM4MCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQwMDoyOToyNy43Mzc4NjQ4MTJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE3NDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTIwMCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjEyMDA6XFx0XFx0XFx0YnJlYWs7XFxuMTIwMTpcXHRcXHRjYXNlIERQODM4NjdfTEVEX0ZOX0xJTktfMTAwXzEwMDBfQlQ6XFxuMTIwMjpcXHRcXHRcXHQqcnVsZXMgPSBCSVQoVFJJR0dFUl9ORVRERVZfTElOS18xMDApIHwgQklUKFRSSUdHRVJfTkVUREVWX0xJTktfMTAwMCk7XFxuMTIwMzpcXHRcXHRcXHRicmVhaztcXG4xMjA0OlxcdFxcdGNhc2UgRFA4Mzg2N19MRURfRk5fTElOS18xMF8xMDBfQlQ6XFxuMTIwNTpcXHRcXHRcXHQqcnVsZXMgPSBCSVQoVFJJR0dFUl9ORVRERVZfTElOS18xMCkgfCBCSVQoVFJJR0dFUl9ORVRERVZfTElOS18xMDApO1xcbjEyMDY6XFx0XFx0XFx0YnJlYWs7XFxuMTIwNzpcXHRcXHRjYXNlIERQODM4NjdfTEVEX0ZOX0xJTktfUlhfVFg6XFxuMTIwODpcXHRcXHRcXHQqcnVsZXMgPSBCSVQoVFJJR0dFUl9ORVRERVZfTElOSykgfCBCSVQoVFJJR0dFUl9ORVRERVZfVFgpIHxcXG4xMjA5OlxcdFxcdFxcdFxcdCBCSVQoVFJJR0dFUl9ORVRERVZfUlgpO1xcbjEyMTA6XFx0XFx0XFx0YnJlYWs7XFxuMTIxMTpcXHRcXHRkZWZhdWx0OlxcbjEyMTI6XFx0XFx0XFx0KnJ1bGVzID0gMDtcXG4xMjEzOlxcdFxcdFxcdGJyZWFrO1xcbjEyMTQ6XFx0XFx0fVxcbjEyMTU6XFx0XFxuMTIxNjpcXHRcXHRyZXR1cm4gMDtcXG4xMjE3OlxcdH1cXG4xMjE4OlxcdFxcbjEyMTk6XFx0c3RhdGljIGludCBkcDgzODY3X2xlZF9wb2xhcml0eV9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGluZGV4LFxcbjEyMjA6XFx0XFx0XFx0XFx0XFx0ICAgIHVuc2lnbmVkIGxvbmcgbW9kZXMpXFxuMTIyMTpcXHR7XFxuMTIyMjpcXHRcXHRzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlICpkcDgzODY3ID0gcGh5ZGV2LVxcdTAwM2Vwcml2O1xcbjEyMjM6XFx0XFx0LyogRGVmYXVsdCBhY3RpdmUgaGlnaCAqL1xcbjEyMjQ6XFx0XFx0dTE2IHBvbGFyaXR5ID0gRFA4Mzg2N19MRURfUE9MQVJJVFkoaW5kZXgpO1xcbjEyMjU6XFx0XFx0dTMyIG1vZGU7XFxuMTIyNjpcXHRcXHRpbnQgcmV0O1xcbjEyMjc6XFx0XFxuMTIyODpcXHRcXHRmb3JfZWFjaF9zZXRfYml0KG1vZGUsIFxcdTAwMjZtb2RlcywgX19QSFlfTEVEX01PREVTX05VTSkge1xcbjEyMjk6XFx0XFx0XFx0c3dpdGNoIChtb2RlKSB7XFxuMTIzMDpcXHRcXHRcXHRjYXNlIFBIWV9MRURfQUNUSVZFX0xPVzpcXG4xMjMxOlxcdFxcdFxcdFxcdHBvbGFyaXR5ID0gMDtcXG4xMjMyOlxcdFxcdFxcdFxcdGJyZWFrO1xcbjEyMzM6XFx0XFx0XFx0ZGVmYXVsdDpcXG4xMjM0OlxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjEyMzU6XFx0XFx0XFx0fVxcbjEyMzY6XFx0XFx0fVxcbjEyMzc6XFx0XFxuMTIzODpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZkcDgzODY3LVxcdTAwM2VsZWRfbG9jayk7XFxuMTIzOTpcXHRcXHRyZXQgPSBfX2RwODM4NjdfbGVkX21vZGlmeShwaHlkZXYsIERQODM4NjdfTEVEQ1IyLFxcbjEyNDA6XFx0XFx0XFx0XFx0XFx0ICAgRFA4Mzg2N19MRURfUE9MQVJJVFkoaW5kZXgpLCBwb2xhcml0eSk7XFxuMTI0MTpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNmRwODM4NjctXFx1MDAzZWxlZF9sb2NrKTtcXG4xMjQyOlxcdFxcbjEyNDM6XFx0XFx0cmV0dXJuIHJldDtcXG4xMjQ0OlxcdH1cXG4xMjQ1OlxcdFxcbjEyNDY6XFx0c3RhdGljIHVuc2lnbmVkIGludCBkcDgzODY3X2luYmFuZF9jYXBzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuMTI0NzpcXHRcXHRcXHRcXHRcXHRcXHRwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbjEyNDg6XFx0e1xcbjEyNDk6XFx0XFx0aWYgKGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpXFxuMTI1MDpcXHRcXHRcXHRyZXR1cm4gTElOS19JTkJBTkRfRU5BQkxFIHwgTElOS19JTkJBTkRfRElTQUJMRTtcXG4xMjUxOlxcdFxcbjEyNTI6XFx0XFx0cmV0dXJuIDA7XFxuMTI1MzpcXHR9XFxuMTI1NDpcXHRcXG4xMjU1OlxcdHN0YXRpYyBpbnQgZHA4Mzg2N19jb25maWdfaW5iYW5kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHVuc2lnbmVkIGludCBtb2RlcylcXG4xMjU2OlxcdHtcXG4xMjU3OlxcdFxcdGludCB2YWwgPSAwO1xcbjEyNTg6XFx0XFxuMTI1OTpcXHRcXHRpZiAobW9kZXMgPT0gTElOS19JTkJBTkRfRU5BQkxFKVxcbjEyNjA6XFx0XFx0XFx0dmFsID0gRFA4Mzg2N19TR01JSV9BVVRPTkVHX0VOO1xcbjEyNjE6XFx0XFxuMTI2MjpcXHRcXHRyZXR1cm4gcGh5X21vZGlmeShwaHlkZXYsIERQODM4NjdfQ0ZHMiwgRFA4Mzg2N19TR01JSV9BVVRPTkVHX0VOLCB2YWwpO1xcbjEyNjM6XFx0fVxcbjEyNjQ6XFx0XFxuMTI2NTpcXHRzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZHA4Mzg2N19kcml2ZXJbXSA9IHtcXG4xMjY2OlxcdFxcdHtcXG4xMjY3OlxcdFxcdFxcdC5waHlfaWRcXHRcXHQ9IERQODM4NjdfUEhZX0lELFxcbjEyNjg6XFx0XFx0XFx0LnBoeV9pZF9tYXNrXFx0PSAweGZmZmZmZmYwLFxcbjEyNjk6XFx0XFx0XFx0Lm5hbWVcXHRcXHQ9IFxcXCJUSSBEUDgzODY3XFxcIixcXG4xMjcwOlxcdFxcdFxcdC8qIFBIWV9HQklUX0ZFQVRVUkVTICovXFxuMTI3MTpcXHRcXG4xMjcyOlxcdFxcdFxcdC5wcm9iZSAgICAgICAgICA9IGRwODM4NjdfcHJvYmUsXFxuMTI3MzpcXHRcXHRcXHQuY29uZmlnX2luaXRcXHQ9IGRwODM4NjdfY29uZmlnX2luaXQsXFxuMTI3NDpcXHRcXHRcXHQuY29uZmlnX2FuZWdcXHQ9IGRwODM4NjdfY29uZmlnX2FuZWcsXFxuMTI3NTpcXHRcXHRcXHQuc29mdF9yZXNldFxcdD0gZHA4Mzg2N19waHlfcmVzZXQsXFxuMTI3NjpcXHRcXG4xMjc3OlxcdFxcdFxcdC5yZWFkX3N0YXR1c1xcdD0gZHA4Mzg2N19yZWFkX3N0YXR1cyxcXG4xMjc4OlxcdFxcdFxcdC5nZXRfdHVuYWJsZVxcdD0gZHA4Mzg2N19nZXRfdHVuYWJsZSxcXG4xMjc5OlxcdFxcdFxcdC5zZXRfdHVuYWJsZVxcdD0gZHA4Mzg2N19zZXRfdHVuYWJsZSxcXG4xMjgwOlxcdFxcbjEyODE6XFx0XFx0XFx0LmdldF93b2xcXHQ9IGRwODM4NjdfZ2V0X3dvbCxcXG4xMjgyOlxcdFxcdFxcdC5zZXRfd29sXFx0PSBkcDgzODY3X3NldF93b2wsXFxuMTI4MzpcXHRcXG4xMjg0OlxcdFxcdFxcdC8qIElSUSByZWxhdGVkICovXFxuMTI4NTpcXHRcXHRcXHQuY29uZmlnX2ludHJcXHQ9IGRwODM4NjdfY29uZmlnX2ludHIsXFxuMTI4NjpcXHRcXHRcXHQuaGFuZGxlX2ludGVycnVwdCA9IGRwODM4NjdfaGFuZGxlX2ludGVycnVwdCxcXG4xMjg3OlxcdFxcbjEyODg6XFx0XFx0XFx0LnN1c3BlbmRcXHQ9IGRwODM4Njdfc3VzcGVuZCxcXG4xMjg5OlxcdFxcdFxcdC5yZXN1bWVcXHRcXHQ9IGRwODM4NjdfcmVzdW1lLFxcbjEyOTA6XFx0XFxuMTI5MTpcXHRcXHRcXHQubGlua19jaGFuZ2Vfbm90aWZ5ID0gZHA4Mzg2N19saW5rX2NoYW5nZV9ub3RpZnksXFxuMTI5MjpcXHRcXHRcXHQuc2V0X2xvb3BiYWNrXFx0PSBkcDgzODY3X2xvb3BiYWNrLFxcbjEyOTM6XFx0XFxuMTI5NDpcXHRcXHRcXHQubGVkX2JyaWdodG5lc3Nfc2V0ID0gZHA4Mzg2N19sZWRfYnJpZ2h0bmVzc19zZXQsXFxuMTI5NTpcXHRcXHRcXHQubGVkX2h3X2lzX3N1cHBvcnRlZCA9IGRwODM4NjdfbGVkX2h3X2lzX3N1cHBvcnRlZCxcXG4xMjk2OlxcdFxcdFxcdC5sZWRfaHdfY29udHJvbF9zZXQgPSBkcDgzODY3X2xlZF9od19jb250cm9sX3NldCxcXG4xMjk3OlxcdFxcdFxcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBkcDgzODY3X2xlZF9od19jb250cm9sX2dldCxcXG4xMjk4OlxcdFxcdFxcdC5sZWRfcG9sYXJpdHlfc2V0ID0gZHA4Mzg2N19sZWRfcG9sYXJpdHlfc2V0LFxcbjEyOTk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDAwOjI5OjI3LjczNzk4MzcxMloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozODIwOTI3OTQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRFA4Mzg2NyBQSFkgTEVEIENvbnRyb2wgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayBkb3duIHRoaXMgY2hhbmdlIHNldCBmb3IgdGhlIERQODM4NjcgUEhZIExFRCBjb250cm9sLiBJIHNlZSBzZXZlcmFsIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiBhZGRlZCBvciBtb2RpZmllZDogYGRwODM4NjdfbGVkX2JyaWdodG5lc3Nfc2V0YCwgYGRwODM4NjdfbGVkX2h3X2NvbnRyb2xfc2V0YCwgYGRwODM4NjdfbGVkX3BvbGFyaXR5X3NldGAsIGBkcDgzODY3X2xlZF9yZXN0b3JlYCwgYF9fZHA4Mzg2N19sZWRfbW9kaWZ5YCwgYGRwODM4NjdfY29uZmlnX2luaXRgLCBhbmQgYGRwODM4NjdfcHJvYmVgLlxuXG5GaXJzdCwgSSBub3RpY2UgYSBuZXcgYHN0cnVjdCBkcDgzODY3X3ByaXZhdGVgIG1lbWJlcjogYSBgc3RydWN0IG11dGV4IGxlZF9sb2NrYCBhbmQgYSBmZXcgYHUxNmAgbWVtYmVycyBmb3Igc3RvcmluZyBMRUQgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgKGBsZWRjcjFgLCBgbGVkY3IxX21hc2tgLCBgbGVkY3IyYCwgYGxlZGNyMl9tYXNrYCkuIE9rYXksIGEgbXV0ZXggbWFrZXMgc2Vuc2UgdG8gcHJvdGVjdCBhY2Nlc3MgdG8gdGhlIExFRCBjb25maWd1cmF0aW9uIHJlZ2lzdGVycy4gSSBhbHNvIG5vdGUgdGhhdCB0aGUgbXV0ZXggaXMgaW5pdGlhbGl6ZWQgaW4gYGRwODM4NjdfcHJvYmVgLlxuXG5OZXh0LCB0aGUgbmV3IGBfX2RwODM4NjdfbGVkX21vZGlmeWAgZnVuY3Rpb24gbG9va3MgaW1wb3J0YW50LiBJdCBjb250YWlucyBhIGBXQVJOX09OX09OQ0UoMSlgIGlmIHdlIGFyZSBub3QgbW9kaWZ5aW5nIGBEUDgzODY3X0xFRENSMWAgb3IgYERQODM4NjdfTEVEQ1IyYC4gU2VlbXMgbGlrZSBhIHNhZmVndWFyZCB0byBjYXRjaCBpbmNvcnJlY3QgcmVnaXN0ZXIgYWNjZXNzLiBHb29kLCB3ZSB3YW50IHRvIHByZXZlbnQgdW5pbnRlbmRlZCB3cml0ZXMuXG5cbmBkcDgzODY3X2xlZF9yZXN0b3JlYCBhcHBlYXJzIHRvIGJlIGZvciByZXBsYXlpbmcgdGhlIExFRCBjb25maWd1cmF0aW9uLiBUaGlzIGZ1bmN0aW9uIGxvY2tzIHRoZSBgbGVkX2xvY2tgIGFuZCByZXBsYXlzIHRoZSByZWdpc3RlcnMgYGxlZGNyMWAgYW5kIGBsZWRjcjJgLiBUaGF0IHNvdW5kcyBsaWtlIGl0J3MgZm9yIHJlc3RvcmluZyBMRUQgc2V0dGluZ3MgYWZ0ZXIgYSBwb3dlciBjeWNsZSBvciByZXNldC4gQW5kIGBkcDgzODY3X2NvbmZpZ19pbml0YCBjYWxscyBpdCwgcHJlc3VtYWJseSB0byBpbml0aWFsaXplIHRoZSBMRUQgY29uZmlndXJhdGlvbiBkdXJpbmcgUEhZIGluaXRpYWxpemF0aW9uLlxuXG5GaW5hbGx5LCBgZHA4Mzg2N19sZWRfYnJpZ2h0bmVzc19zZXRgLCBgZHA4Mzg2N19sZWRfaHdfY29udHJvbF9zZXRgLCBhbmQgYGRwODM4NjdfbGVkX3BvbGFyaXR5X3NldGAgYWxsIHVzZSB0aGUgYGxlZF9sb2NrYCBhbmQgY2FsbCBgX19kcDgzODY3X2xlZF9tb2RpZnlgLiBUaGlzIGluZGljYXRlcyBwcm9wZXIgbG9ja2luZyBmb3IgbW9kaWZ5aW5nIHRoZSBMRUQgc2V0dGluZ3MuXG5cbk5vdywgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhlIEtjb25maWcgZGVwZW5kZW5jaWVzIGZvciBgRFA4Mzg2N19QSFlgIHRvIGVuc3VyZSBldmVyeXRoaW5nIGlzIHNldCB1cCBjb3JyZWN0bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NTkwLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMDA6Mjk6MzEuNTU4OTE0NTQ2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODcyODUyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRFA4Mzg2N19QSFlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTQ0Nj1jb25maWcgRFA4Mzg0OF9QSFlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTQ1MC1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo0NTE6Y29uZmlnIERQODM4NjdfUEhZXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNDUyLVxcdHRyaXN0YXRlIFxcXCJUZXhhcyBJbnN0cnVtZW50cyBEUDgzODY3IEdpZ2FiaXQgUEhZXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQwMDoyOTozMS42MDc2NTAwNDVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjYzNjc4MDc1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipLY29uZmlnIExpbmUgNDUxIEFuYWx5c2lzKipcblxuT2theSwgbGV0J3MgemVybyBpbiBvbiBsaW5lIDQ1MSBpbiB0aGUgS2NvbmZpZyBmaWxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIGFyb3VuZCB0aGF0IHNwZWNpZmljIGxpbmUgb2YgY29kZS4gTXkgZ29hbCBpcyB0byBxdWlja2x5IGdyYXNwIHRoZSBjb250ZXh0LCBpZGVudGlmeSBhbnkgcG90ZW50aWFsIGlzc3VlcyBvciBpbnRlcmVzdGluZyBjb25maWd1cmF0aW9ucywgYW5kIHJlbGF0ZSBpdCBiYWNrIHRvIHRoZSBicm9hZGVyIHByb2plY3QuIEknbGwgbmVlZCB0byByZWFkIHRoZSBzdXJyb3VuZGluZyBsaW5lcywgbG9va2luZyBmb3IgZGVwZW5kZW5jaWVzLCBkZWZhdWx0IHZhbHVlcywgcHJvbXB0cywgYW5kIGFueSBjb25kaXRpb25hbCBsb2dpYyB0aGF0J3MgYmVpbmcgZW1wbG95ZWQuIEknbSBmb2N1c2luZyBvbiB0aGUgKndoeSogYXMgbXVjaCBhcyB0aGUgKndoYXQqIC0gV2h5IGlzIHRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24gZGVmaW5lZCBoZXJlPyBXaGF0J3MgaXRzIHB1cnBvc2Ugd2l0aGluIHRoZSBsYXJnZXIgZmVhdHVyZSBzZXQ/IElzIGl0IGRlcGVuZGVudCBvbiBvdGhlciB2YXJpYWJsZXMgb3Igb3B0aW9ucz8gQXJlIHRoZXJlIGFueSBvYnZpb3VzIHJlZCBmbGFncz8gSSBleHBlY3QgdG8gaWRlbnRpZnkgdGhlIGZ1bmN0aW9uIG9mIHRoaXMgbGluZSB3aXRoaW4gYSBmZXcgcmVhZHMgb2YgdGhlIHN1cnJvdW5kaW5nIEtjb25maWcgZWxlbWVudHMuIEknbSBwcmVwYXJlZCB0byBtb3ZlIG9uIHF1aWNrbHkgaWYgdGhpcyBpcyBhIGxvdy1pbXBhY3Qgb3Igd2VsbC11bmRlcnN0b29kIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBidXQgSSdsbCBkaWcgZGVlcGVyIGlmIGl0IHNlZW1zIGNvbXBsZXggb3IgcmVsYXRlZCB0byBhIGZlYXR1cmUgSSdtIGN1cnJlbnRseSB3b3JraW5nIHdpdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNjkwLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMDA6Mjk6MzQuMjQ0NDMyOTc1WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxNzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQ0MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQ0MDpcXHRcXG4gNDQxOlxcdGNvbmZpZyBEUDgzVEM4MTFfUEhZXFxuIDQ0MjpcXHRcXHR0cmlzdGF0ZSBcXFwiVGV4YXMgSW5zdHJ1bWVudHMgRFA4M1RDODExIFBIWVxcXCJcXG4gNDQzOlxcdFxcdGhlbHBcXG4gNDQ0OlxcdFxcdCAgU3VwcG9ydHMgdGhlIERQODNUQzgxMSBQSFkuXFxuIDQ0NTpcXHRcXG4gNDQ2OlxcdGNvbmZpZyBEUDgzODQ4X1BIWVxcbiA0NDc6XFx0XFx0dHJpc3RhdGUgXFxcIlRleGFzIEluc3RydW1lbnRzIERQODM4NDggUEhZXFxcIlxcbiA0NDg6XFx0XFx0aGVscFxcbiA0NDk6XFx0XFx0ICBTdXBwb3J0cyB0aGUgRFA4Mzg0OCBQSFkuXFxuIDQ1MDpcXHRcXG4gNDUxOlxcdGNvbmZpZyBEUDgzODY3X1BIWVxcbiA0NTI6XFx0XFx0dHJpc3RhdGUgXFxcIlRleGFzIEluc3RydW1lbnRzIERQODM4NjcgR2lnYWJpdCBQSFlcXFwiXFxuIDQ1MzpcXHRcXHRoZWxwXFxuIDQ1NDpcXHRcXHQgIEN1cnJlbnRseSBzdXBwb3J0cyB0aGUgRFA4Mzg2NyBQSFkuXFxuIDQ1NTpcXHRcXG4gNDU2OlxcdGNvbmZpZyBEUDgzODY5X1BIWVxcbiA0NTc6XFx0XFx0dHJpc3RhdGUgXFxcIlRleGFzIEluc3RydW1lbnRzIERQODM4NjkgR2lnYWJpdCBQSFlcXFwiXFxuIDQ1ODpcXHRcXHRoZWxwXFxuIDQ1OTpcXHRcXHQgIEN1cnJlbnRseSBzdXBwb3J0cyB0aGUgRFA4Mzg2OSBQSFkuICBUaGlzIFBIWSBzdXBwb3J0cyBjb3BwZXIgYW5kXFxuIDQ2MDpcXHRcXHQgIGZpYmVyIGNvbm5lY3Rpb25zLlxcbiA0NjE6XFx0XFxuIDQ2MjpcXHRjb25maWcgRFA4M1RENTEwX1BIWVxcbiA0NjM6XFx0XFx0dHJpc3RhdGUgXFxcIlRleGFzIEluc3RydW1lbnRzIERQODNURDUxMCBFdGhlcm5ldCAxMEJhc2UtVDFMIFBIWVxcXCJcXG4gNDY0OlxcdFxcdGhlbHBcXG4gNDY1OlxcdFxcdCAgU3VwcG9ydCBmb3IgdGhlIERQODNURDUxMCBFdGhlcm5ldCAxMEJhc2UtVDFMIFBIWS4gVGhpcyBQSFkgc3VwcG9ydHNcXG4gNDY2OlxcdFxcdCAgYSAxME0gc2luZ2xlIHBhaXIgRXRoZXJuZXQgY29ubmVjdGlvbiBmb3IgdXAgdG8gMTAwMCBtZXRlciBjYWJsZS5cXG4gNDY3OlxcdFxcbiA0Njg6XFx0Y29uZmlnIERQODNURzcyMF9QSFlcXG4gNDY5OlxcdFxcdHRyaXN0YXRlIFxcXCJUZXhhcyBJbnN0cnVtZW50cyBEUDgzVEc3MjAgRXRoZXJuZXQgMTAwMEJhc2UtVDEgUEhZXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQwMDoyOTozNC4yNDQ1MDkxMDZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzU4NDgzMjI4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipDaGVja2luZyB0aGUgUEhZIEtjb25maWcqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGlzIFBIWSBkcml2ZXIuIE15IGZpcnN0IG1vdmUgaXMgdG8gZ28gc3RyYWlnaHQgdG8gYGRyaXZlcnMvbmV0L3BoeS9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBjb25maWd1cmF0aW9uIGRlY2lzaW9ucyBhcmUgbWFkZSBmb3IgdGhlc2UgUEhZIGNvbXBvbmVudHMuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGRlcGVuZGVuY2llcywgc2VsZWN0IHN0YXRlbWVudHMsIGFuZCBvcHRpb24gZGVmaW5pdGlvbnMgdGhhdCBkaWN0YXRlIHdoYXQgZ2V0cyBidWlsdCBhbmQgaW5jbHVkZWQgaW4gdGhlIGtlcm5lbCBpbWFnZS4gS25vd2luZyB0aGUgS2NvbmZpZyBpcyBrZXkgdG8gbmF2aWdhdGluZyB0aGUgYnJvYWRlciBkcml2ZXIgYXJjaGl0ZWN0dXJlIGFuZCB1bmRlcnN0YW5kaW5nIGhvdyBkaWZmZXJlbnQgUEhZIHR5cGVzIGFyZSBlbmFibGVkIGFuZCBkaXNhYmxlZC4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIGFueSBpbi1kZXB0aCBjb25maWd1cmF0aW9uIGFuYWx5c2lzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTQ2NywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMDA6Mjk6MzcuODI5MzQ0OTEyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxMDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIFBIWSBMYXllciBDb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdGNvbmZpZyBQSFlMSU5LXFxuICAgNzpcXHRcXHR0cmlzdGF0ZVxcbiAgIDg6XFx0XFx0c2VsZWN0IFBIWUxJQlxcbiAgIDk6XFx0XFx0c2VsZWN0IFNXUEhZXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHQgIFBIWWxpbmsgbW9kZWxzIHRoZSBsaW5rIGJldHdlZW4gdGhlIFBIWSBhbmQgTUFDLCBhbGxvd2luZyBmaXhlZFxcbiAgMTI6XFx0XFx0ICBjb25maWd1cmF0aW9uIGxpbmtzLCBQSFlzLCBhbmQgU2VyZGVzIGxpbmtzIHdpdGggTUFDIGxldmVsXFxuICAxMzpcXHRcXHQgIGF1dG9uZWdvdGlhdGlvbiBtb2Rlcy5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0bWVudWNvbmZpZyBQSFlMSUJcXG4gIDE2OlxcdFxcdHRyaXN0YXRlIFxcXCJQSFkgRGV2aWNlIHN1cHBvcnQgYW5kIGluZnJhc3RydWN0dXJlXFxcIlxcbiAgMTc6XFx0XFx0aGVscFxcbiAgMTg6XFx0XFx0ICBFdGhlcm5ldCBjb250cm9sbGVycyBhcmUgdXN1YWxseSBhdHRhY2hlZCB0byBQSFlcXG4gIDE5OlxcdFxcdCAgZGV2aWNlcy4gIFRoaXMgb3B0aW9uIHByb3ZpZGVzIGluZnJhc3RydWN0dXJlIGZvclxcbiAgMjA6XFx0XFx0ICBtYW5hZ2luZyBQSFkgZGV2aWNlcy5cXG4gIDIxOlxcdFxcbiAgMjI6XFx0aWYgUEhZTElCXFxuICAyMzpcXHRcXG4gIDI0OlxcdGNvbmZpZyBTV1BIWVxcbiAgMjU6XFx0XFx0Ym9vbFxcbiAgMjY6XFx0XFxuICAyNzpcXHRjb25maWcgUEhZX1BBQ0tBR0VcXG4gIDI4OlxcdFxcdCB0cmlzdGF0ZVxcbiAgMjk6XFx0XFxuICAzMDpcXHRjb25maWcgTEVEX1RSSUdHRVJfUEhZXFxuICAzMTpcXHRcXHRib29sIFxcXCJTdXBwb3J0IExFRCB0cmlnZ2VycyBmb3IgdHJhY2tpbmcgbGluayBzdGF0ZVxcXCJcXG4gIDMyOlxcdFxcdGRlcGVuZHMgb24gTEVEU19UUklHR0VSU1xcbiAgMzM6XFx0XFx0aGVscFxcbiAgMzQ6XFx0XFx0ICBBZGRzIHN1cHBvcnQgZm9yIGEgc2V0IG9mIExFRCB0cmlnZ2VyIGV2ZW50cyBwZXItUEhZLiAgTGlua1xcbiAgMzU6XFx0XFx0ICBzdGF0ZSBjaGFuZ2Ugd2lsbCB0cmlnZ2VyIHRoZSBldmVudHMsIGZvciBjb25zdW1wdGlvbiBieSBhblxcbiAgMzY6XFx0XFx0ICBMRUQgY2xhc3MgZHJpdmVyLiAgVGhlcmUgYXJlIHRyaWdnZXJzIGZvciBlYWNoIGxpbmsgc3BlZWQgY3VycmVudGx5XFxuICAzNzpcXHRcXHQgIHN1cHBvcnRlZCBieSB0aGUgUEhZIGFuZCBhbHNvIGEgb25lIGNvbW1vbiBcXFwibGlua1xcXCIgdHJpZ2dlciBhcyBhXFxuICAzODpcXHRcXHQgIGxvZ2ljYWwtb3Igb2YgYWxsIHRoZSBsaW5rIHNwZWVkIG9uZXMuXFxuICAzOTpcXHRcXHQgIEFsbCB0aGVzZSB0cmlnZ2VycyBhcmUgbmFtZWQgYWNjb3JkaW5nIHRvIHRoZSBmb2xsb3dpbmcgcGF0dGVybjpcXG4gIDQwOlxcdFxcdCAgICAgIFxcdTAwM2NtaWkgYnVzIGlkXFx1MDAzZTpcXHUwMDNjcGh5XFx1MDAzZTpcXHUwMDNjc3BlZWRcXHUwMDNlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDAwOjI5OjM3LjgyOTQyNzYyMloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2ODI2MTMwMjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIERQODM4NjcgUEhZIERyaXZlcjogQSBSZWFjaGFiaWxpdHkgQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgUEhZTElCYCBhbmQgdGhlIGBEUDgzODY3X1BIWWAgZHJpdmVyLiBUaGUgY3J1Y2lhbCBxdWVzdGlvbiBpczogQ2FuIEkgZXZlbiByZWFjaCB0aGUgYERQODM4NjdfUEhZYCB3aXRoaW4gYSBmdXp6aW5nIGNvbnRleHQ/IEkgbmVlZCB0byBhbmFseXplIGl0cyByZWFjaGFiaWxpdHkuIEl0IHNlZW1zIGxpa2UgYW4gTURJTyBQSFkgZHJpdmVyLCBzbyBsZXQncyBzZWUgaG93IHRoYXQgd29ya3MgaW4gc3l6a2FsbGVyLlxuXG5SaWdodCwgVVNCIEV0aGVybmV0IGRyaXZlcnMgbGlrZSBgYXNpeGAsIGBheDg4MTcyYWAsIGBzbXNjOTV4eGAgYW5kIG90aGVycywgdGhleSBjcmVhdGUgTURJTyBidXNlcyB2aWEgYG1kaW9idXNfcmVnaXN0ZXJgLiAgVGhhdCdzIGtleS4gQW5kIGluIGEgc3RhbmRhcmQgc3l6a2FsbGVyIHNldHVwIHdpdGggcmF3LWdhZGdldCBvciBVU0IgZW11bGF0aW9uLCBzeXprYWxsZXIgY2FuIGVtdWxhdGUgVVNCIEV0aGVybmV0IGRldmljZXMuICBTbyBmYXIsIHNvIGdvb2QuXG5cbldoZW4gdGhpcyBNRElPIGJ1cyBpcyByZWdpc3RlcmVkLCBpdCBpbnRlcnJvZ2F0ZXMgTUlJIHJlZ2lzdGVycyAyIGFuZCAzIOKAkyBgTUlJX1BIWVNJRDFgIGFuZCBgTUlJX1BIWVNJRDJgLiAgSWYgdGhlIGVtdWxhdGVkIFVTQiBkZXZpY2UgKnJlc3BvbmRzKiB3aXRoIHRoZSBQSFkgSUQgZm9yIGBEUDgzODY3X1BIWV9JRGAgKDB4MjAwMGEyMzEpLCB0aGVuIHRoZSBQSFkgc3Vic3lzdGVtIHdpbGwgbWF0Y2ggdGhlIGBkcDgzODY3X2RyaXZlcmAuIEJpbmdvLiBJdCB3aWxsIHRyaWdnZXIgYGRwODM4NjdfcHJvYmVgIGFuZCB0aGVuIGBkcDgzODY3X2NvbmZpZ19pbml0YC5cblxuT25jZSBwcm9iZWQsIHRoYXQgb3BlbnMgdGhlIGRvb3IgdG8gdXNlcnNwYWNlIGludGVyYWN0aW9uIHZpYSBpbnRlcmZhY2VzIGxpa2UgZXRodG9vbCwgc3lzZnMgTEVEIGNsYXNzLCBvciBuZXRsaW5rLiBUaGF0IGNvdWxkIHRoZW4gdHJpZ2dlciBgLmxlZF9icmlnaHRuZXNzX3NldGAsIGAubGVkX2h3X2NvbnRyb2xfc2V0YCwgYC5sZWRfcG9sYXJpdHlfc2V0YCwgZXRjLiBvciBldmVuIGEgcmUtaW5pdGlhbGl6YXRpb24gdGhyb3VnaCBhIHNvZnQgcmVzZXQuICBUaGF0J3MgYWxsIHBvdGVudGlhbGx5IGZ1enphYmxlLlxuXG5JIGFsc28gc2VlIHRoYXQgdGhpcyBwYXRjaCBhZGRzIGEgbXV0ZXggYGxlZF9sb2NrYCwgc2hhZG93IHN0YXRlIHdpdGggYGxlZGNyMWAvYGxlZGNyMmAgYW5kLCBpbXBvcnRhbnRseSwgYSBgV0FSTl9PTl9PTkNFKDEpYCBhc3NlcnRpb24gd2l0aGluIGEgcmVhY2hhYmxlIHBhdGg6IGBfX2RwODM4NjdfbGVkX21vZGlmeWAuIFRoaXMgaXMgYSBiaWcgcmVkIGZsYWcg4oCTIHRoYXQncyBhIHBlcmZlY3QgdGFyZ2V0LlxuXG5Ob3csIGxldCdzIGxvb2sgYXQgdGhlIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiBjaGFuZ2VkOiBgX19kcDgzODY3X2xlZF9tb2RpZnlgLCBgZHA4Mzg2N19sZWRfcmVzdG9yZWAsIGBkcDgzODY3X3Byb2JlYCwgYGRwODM4NjdfY29uZmlnX2luaXRgLCBgZHA4Mzg2N19sZWRfYnJpZ2h0bmVzc19zZXRgLCBgZHA4Mzg2N19sZWRfaHdfY29udHJvbF9zZXRgLCBhbmQgYGRwODM4NjdfbGVkX3BvbGFyaXR5X3NldGAuIFRob3NlIGFyZSBteSB0YXJnZXQgZnVuY3Rpb25zLlxuXG5JIG5lZWQgdG8gZm9jdXMgb24gdGhlc2UsIGVzcGVjaWFsbHkgdGhlIG9uZXMgdGhhdCBhcmVuJ3Qgc3RhdGljIG9yIHNwZWNpZmljIGZ1bmN0aW9ucywgdGhhdCBhcmUgZXhwb3J0ZWQ6IGBkcDgzODY3X2xlZF9icmlnaHRuZXNzX3NldGAsIGBkcDgzODY3X2xlZF9od19jb250cm9sX3NldGAsIGBkcDgzODY3X2xlZF9wb2xhcml0eV9zZXRgLCBgZHA4Mzg2N19jb25maWdfaW5pdGAsIGFuZCBgZHA4Mzg2N19wcm9iZWAuXG5cbkkgbmVlZCB0byBlbmFibGUgdGhlc2UgY29uZmlnczogYFBIWUxJQmAgYW5kIGBEUDgzODY3X1BIWWAuXG5cbkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjazpcbiogICAqKlJlYWNoYWJpbGl0eT8qKiBDaGVjay4gVmlhIFVTQiBnYWRnZXQgZW11bGF0aW9uIGFuZCBVU0IgZXRoZXJuZXQgd2l0aCBNRElPIGJ1cy5cbiogICAqKk5ldy9Nb2RpZmllZCBBc3NlcnRpb25zPyoqIFllcywgdGhhdCBgV0FSTl9PTl9PTkNFKDEpYCBpcyBwcmltZS5cbiogICAqKldvcnRoIEZ1enppbmc/KiogQWJzb2x1dGVseS5cblxuQWxyaWdodCwgdGhhdCBjb3ZlcnMgaXQuICBMZXQncyBwdXQgdG9nZXRoZXIgdGhlIHJlc3VsdHMgYW5kIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIxMjAsIk91dHB1dFRva2VucyI6MjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Nzg4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMDA6Mjk6NDQuNjU1NTYwOTNaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDg5Njk5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUEhZTElCXCIsXG4gICAgXCJEUDgzODY3X1BIWVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRwODM4NjdfbGVkX2JyaWdodG5lc3Nfc2V0XCIsXG4gICAgXCJkcDgzODY3X2xlZF9od19jb250cm9sX3NldFwiLFxuICAgIFwiZHA4Mzg2N19sZWRfcG9sYXJpdHlfc2V0XCIsXG4gICAgXCJkcDgzODY3X2NvbmZpZ19pbml0XCIsXG4gICAgXCJkcDgzODY3X3Byb2JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFRleGFzIEluc3RydW1lbnRzIERQODM4NjcgUEhZIGRyaXZlciAoZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYykgYnkgaW50cm9kdWNpbmcgYSBuZXcgbXV0ZXggKGxlZF9sb2NrKSBhbmQgc2hhZG93IHJlZ2lzdGVycyB0byBwcm9wZXJseSByZXN0b3JlIExFRCBjb25maWd1cmF0aW9ucyBhY3Jvc3Mgc29mdCByZXNldHMsIGFsb25nIHdpdGggcnVudGltZSBhc3NlcnRpb25zIChXQVJOX09OX09OQ0UpLiBUaGUgZHJpdmVyIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBFdGhlcm5ldCBhZGFwdGVycyBleHBvc2luZyBNRElPIGJ1c2VzLiBGdXp6aW5nIGlzIHdhcnJhbnRlZCB0byB2ZXJpZnkgY29uY3VycmVuY3kgYW5kIHByb3BlciBzZXJpYWxpemF0aW9uIGJldHdlZW4gY29uZmlnX2luaXQgc29mdC1yZXNldCByZXN0b3JlIGFuZCBMRUQgY29udHJvbCBvcGVyYXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBIWUxJQlwiLFxuICAgIFwiRFA4Mzg2N19QSFlcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkcDgzODY3X2xlZF9icmlnaHRuZXNzX3NldFwiLFxuICAgIFwiZHA4Mzg2N19sZWRfaHdfY29udHJvbF9zZXRcIixcbiAgICBcImRwODM4NjdfbGVkX3BvbGFyaXR5X3NldFwiLFxuICAgIFwiZHA4Mzg2N19jb25maWdfaW5pdFwiLFxuICAgIFwiZHA4Mzg2N19wcm9iZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUZXhhcyBJbnN0cnVtZW50cyBEUDgzODY3IFBIWSBkcml2ZXIgKGRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMpIGJ5IGludHJvZHVjaW5nIGEgbmV3IG11dGV4IChsZWRfbG9jaykgYW5kIHNoYWRvdyByZWdpc3RlcnMgdG8gcHJvcGVybHkgcmVzdG9yZSBMRUQgY29uZmlndXJhdGlvbnMgYWNyb3NzIHNvZnQgcmVzZXRzLCBhbG9uZyB3aXRoIHJ1bnRpbWUgYXNzZXJ0aW9ucyAoV0FSTl9PTl9PTkNFKS4gVGhlIGRyaXZlciBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgRXRoZXJuZXQgYWRhcHRlcnMgZXhwb3NpbmcgTURJTyBidXNlcy4gRnV6emluZyBpcyB3YXJyYW50ZWQgdG8gdmVyaWZ5IGNvbmN1cnJlbmN5IGFuZCBwcm9wZXIgc2VyaWFsaXphdGlvbiBiZXR3ZWVuIGNvbmZpZ19pbml0IHNvZnQtcmVzZXQgcmVzdG9yZSBhbmQgTEVEIGNvbnRyb2wgb3BlcmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMDA6Mjk6NDQuNzMwNDY1MzM5WiIsIlNlcSI6MjMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTYwNjA5MTUwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDAwOjI5OjQ0LjczMDk4MDY2OVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjExNjA1NTcwODk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgc2hhZG93IG1lY2hhbmlzbSBhbmQgbXV0ZXggbG9ja2luZyBmb3IgTEVEIHJlZ2lzdGVycyBpbiB0aGUgRFA4Mzg2NyBQSFkgZHJpdmVyIChkcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jKS4gVGhlIHByaXZhdGUgc3RydWN0dXJlIGBzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlYCBpcyBhbGxvY2F0ZWQgdXNpbmcgYGRldm1fa3phbGxvYygpYCwgZW5zdXJpbmcgdGhhdCBhbGwgbmV3bHkgaW50cm9kdWNlZCBmaWVsZHMgKGBsZWRfbG9ja2AsIGBsZWRjcjFgLCBgbGVkY3IxX21hc2tgLCBgbGVkY3IyYCwgYGxlZGNyMl9tYXNrYCkgYXJlIGZ1bGx5IHplcm8taW5pdGlhbGl6ZWQuIEFsbCBsb2NhbCB2YXJpYWJsZXMgYXJlIHByb3Blcmx5IGluaXRpYWxpemVkIGJlZm9yZSB1c2UuIE5vIGRhdGEgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgaXMgYWNjZXNzZWQgb3IgYnJhbmNoZWQgdXBvbiwgYW5kIGFueSBwb3RlbnRpYWwgbG9ja2luZyBvciByYWNlIGJ1Z3MgYXJlIGhhbmRsZWQgYnkgc3RhbmRhcmQgc2FuaXRpemVycyBzdWNoIGFzIExPQ0tERVAgYW5kIEtBU0FOLiBUaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA0NGMxNjVjYWYwY2M5MDI2YjkwNzAxZGJlMjFjNGU3NzA4MzZhZTI2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgOSAwMDoyODo1MSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMgYi9kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jXG5pbmRleCA4ODI1NWU5MmI0Y2RiLi5lZWI0Y2Q2NDhmNzQzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuY1xuKysrIGIvZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuY1xuQEAgLTgsNiArOCw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9taWkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvbXV0ZXguaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L29mLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9waHkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2RlbGF5LmhcdTAwM2VcbkBAIC0xOTYsNiArMTk3LDE2IEBAIHN0cnVjdCBkcDgzODY3X3ByaXZhdGUge1xuIFx0Ym9vbCBzZXRfY2xrX291dHB1dDtcbiBcdHUzMiBjbGtfb3V0cHV0X3NlbDtcbiBcdGJvb2wgc2dtaWlfcmVmX2Nsa19lbjtcbitcbitcdC8qIFNoYWRvdyBvZiB0aGUgTEVEIHJlZ2lzdGVycywgcmVwbGF5ZWQgYWZ0ZXIgYSBzb2Z0IHJlc2V0LiBsZWRfbG9ja1xuK1x0ICogc2VyaWFsaXplcyB0aGUgc2hhZG93IGFuZCBpdHMgcmVwbGF5IGFnYWluc3QgdGhlIExFRCBjYWxsYmFja3MsXG4rXHQgKiBiZWNhdXNlIGRwODM4NjdfY29uZmlnX2luaXQoKSBkb2VzIHRoZSByZXBsYXkgb2ZmIHBoeWRldi1cdTAwM2Vsb2NrLlxuK1x0ICovXG4rXHRzdHJ1Y3QgbXV0ZXggbGVkX2xvY2s7XG4rXHR1MTYgbGVkY3IxO1xuK1x0dTE2IGxlZGNyMV9tYXNrO1xuK1x0dTE2IGxlZGNyMjtcbitcdHUxNiBsZWRjcjJfbWFzaztcbiB9O1xuIFxuIHN0YXRpYyBpbnQgZHA4Mzg2N19hY2tfaW50ZXJydXB0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5AQCAtNzIyLDYgKzczMyw3IEBAIHN0YXRpYyBpbnQgZHA4Mzg2N19yZXN1bWUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBzdGF0aWMgaW50IGRwODM4NjdfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiB7XG4gXHRzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlICpkcDgzODY3O1xuK1x0aW50IHJldDtcbiBcbiBcdGRwODM4NjcgPSBkZXZtX2t6YWxsb2MoXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2LCBzaXplb2YoKmRwODM4NjcpLFxuIFx0XHRcdCAgICAgICBHRlBfS0VSTkVMKTtcbkBAIC03MzAsOSArNzQyLDYwIEBAIHN0YXRpYyBpbnQgZHA4Mzg2N19wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFxuIFx0cGh5ZGV2LVx1MDAzZXByaXYgPSBkcDgzODY3O1xuIFxuK1x0cmV0ID0gZGV2bV9tdXRleF9pbml0KFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldiwgXHUwMDI2ZHA4Mzg2Ny1cdTAwM2VsZWRfbG9jayk7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuIFx0cmV0dXJuIGRwODM4Njdfb2ZfaW5pdChwaHlkZXYpO1xuIH1cbiBcbisvKiBVcGRhdGUgYW4gTEVEIHJlZ2lzdGVyIGFuZCBtaXJyb3IgdGhlIGNoYW5nZSBpbnRvIHRoZSBzaGFkb3csIHNvIHRoYXRcbisgKiBkcDgzODY3X2NvbmZpZ19pbml0KCkgY2FuIHJlcGxheSBpdCBhZnRlciBhIHNvZnQgcmVzZXQuIENhbGxlciBtdXN0IGhvbGRcbisgKiBkcDgzODY3LVx1MDAzZWxlZF9sb2NrLlxuKyAqL1xuK3N0YXRpYyBpbnQgX19kcDgzODY3X2xlZF9tb2RpZnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTMyIHJlZyxcbitcdFx0XHRcdHUxNiBtYXNrLCB1MTYgdmFsKVxuK3tcbitcdHN0cnVjdCBkcDgzODY3X3ByaXZhdGUgKmRwODM4NjcgPSBwaHlkZXYtXHUwMDNlcHJpdjtcbitcdGludCByZXQ7XG4rXG4rXHRyZXQgPSBwaHlfbW9kaWZ5KHBoeWRldiwgcmVnLCBtYXNrLCB2YWwpO1xuK1x0aWYgKHJldClcbitcdFx0cmV0dXJuIHJldDtcbitcbitcdGlmIChyZWcgPT0gRFA4Mzg2N19MRURDUjEpIHtcbitcdFx0ZHA4Mzg2Ny1cdTAwM2VsZWRjcjEgPSAoZHA4Mzg2Ny1cdTAwM2VsZWRjcjEgXHUwMDI2IH5tYXNrKSB8ICh2YWwgXHUwMDI2IG1hc2spO1xuK1x0XHRkcDgzODY3LVx1MDAzZWxlZGNyMV9tYXNrIHw9IG1hc2s7XG4rXHR9IGVsc2UgaWYgKHJlZyA9PSBEUDgzODY3X0xFRENSMikge1xuK1x0XHRkcDgzODY3LVx1MDAzZWxlZGNyMiA9IChkcDgzODY3LVx1MDAzZWxlZGNyMiBcdTAwMjYgfm1hc2spIHwgKHZhbCBcdTAwMjYgbWFzayk7XG4rXHRcdGRwODM4NjctXHUwMDNlbGVkY3IyX21hc2sgfD0gbWFzaztcbitcdH0gZWxzZSB7XG4rXHRcdFdBUk5fT05fT05DRSgxKTtcbitcdH1cbitcbitcdHJldHVybiAwO1xuK31cbitcbisvKiBSZXN0b3JlIHRoZSBMRUQgcmVnaXN0ZXJzIHRoZSBkcml2ZXIgaGFzIHByb2dyYW1tZWQsIGNsZWFyZWQgYnkgdGhlIHNvZnRcbisgKiByZXNldCBpbiBkcDgzODY3X3BoeV9yZXNldCgpLlxuKyAqL1xuK3N0YXRpYyBpbnQgZHA4Mzg2N19sZWRfcmVzdG9yZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuK3tcbitcdHN0cnVjdCBkcDgzODY3X3ByaXZhdGUgKmRwODM4NjcgPSBwaHlkZXYtXHUwMDNlcHJpdjtcbitcdGludCByZXQgPSAwO1xuK1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZkcDgzODY3LVx1MDAzZWxlZF9sb2NrKTtcbitcdGlmIChkcDgzODY3LVx1MDAzZWxlZGNyMV9tYXNrKVxuK1x0XHRyZXQgPSBwaHlfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjEsXG4rXHRcdFx0XHQgZHA4Mzg2Ny1cdTAwM2VsZWRjcjFfbWFzaywgZHA4Mzg2Ny1cdTAwM2VsZWRjcjEpO1xuK1x0aWYgKCFyZXQgXHUwMDI2XHUwMDI2IGRwODM4NjctXHUwMDNlbGVkY3IyX21hc2spXG4rXHRcdHJldCA9IHBoeV9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMixcbitcdFx0XHRcdCBkcDgzODY3LVx1MDAzZWxlZGNyMl9tYXNrLCBkcDgzODY3LVx1MDAzZWxlZGNyMik7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2ZHA4Mzg2Ny1cdTAwM2VsZWRfbG9jayk7XG4rXG4rXHRyZXR1cm4gcmV0O1xuK31cbitcbiBzdGF0aWMgaW50IGRwODM4NjdfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiB7XG4gXHRzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlICpkcDgzODY3ID0gcGh5ZGV2LVx1MDAzZXByaXY7XG5AQCAtODk2LDYgKzk1OSwxMCBAQCBzdGF0aWMgaW50IGRwODM4NjdfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdFx0XHQgICAgICAgbWFzaywgdmFsKTtcbiBcdH1cbiBcbitcdHJldCA9IGRwODM4NjdfbGVkX3Jlc3RvcmUocGh5ZGV2KTtcbitcdGlmIChyZXQpXG4rXHRcdHBoeWRldl93YXJuKHBoeWRldiwgXCJmYWlsZWQgdG8gcmVzdG9yZSBMRUQgY29uZmlnOiAlZFxcblwiLCByZXQpO1xuK1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuQEAgLTEwMDQsNyArMTA3MSw5IEBAIHN0YXRpYyBpbnRcbiBkcDgzODY3X2xlZF9icmlnaHRuZXNzX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuIFx0XHRcdCAgIHU4IGluZGV4LCBlbnVtIGxlZF9icmlnaHRuZXNzIGJyaWdodG5lc3MpXG4ge1xuLVx0dTMyIHZhbDtcbitcdHN0cnVjdCBkcDgzODY3X3ByaXZhdGUgKmRwODM4NjcgPSBwaHlkZXYtXHUwMDNlcHJpdjtcbitcdHUxNiB2YWw7XG4rXHRpbnQgcmV0O1xuIFxuIFx0aWYgKGluZGV4IFx1MDAzZT0gRFA4Mzg2N19MRURfQ09VTlQpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuQEAgLTEwMTUsMTAgKzEwODQsMTMgQEAgZHA4Mzg2N19sZWRfYnJpZ2h0bmVzc19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbiBcdGlmIChicmlnaHRuZXNzKVxuIFx0XHR2YWwgfD0gRFA4Mzg2N19MRURfRFJWX1ZBTChpbmRleCk7XG4gXG4tXHRyZXR1cm4gcGh5X21vZGlmeShwaHlkZXYsIERQODM4NjdfTEVEQ1IyLFxuLVx0XHRcdCAgRFA4Mzg2N19MRURfRFJWX1ZBTChpbmRleCkgfFxuLVx0XHRcdCAgRFA4Mzg2N19MRURfRFJWX0VOKGluZGV4KSxcbi1cdFx0XHQgIHZhbCk7XG4rXHRtdXRleF9sb2NrKFx1MDAyNmRwODM4NjctXHUwMDNlbGVkX2xvY2spO1xuK1x0cmV0ID0gX19kcDgzODY3X2xlZF9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMixcbitcdFx0XHRcdCAgIERQODM4NjdfTEVEX0RSVl9WQUwoaW5kZXgpIHxcbitcdFx0XHRcdCAgIERQODM4NjdfTEVEX0RSVl9FTihpbmRleCksIHZhbCk7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2ZHA4Mzg2Ny1cdTAwM2VsZWRfbG9jayk7XG4rXG4rXHRyZXR1cm4gcmV0O1xuIH1cbiBcbiBzdGF0aWMgaW50IGRwODM4NjdfbGVkX21vZGUodTggaW5kZXgsIHVuc2lnbmVkIGxvbmcgcnVsZXMpXG5AQCAtMTA2OSwxOCArMTE0MSwyNCBAQCBzdGF0aWMgaW50IGRwODM4NjdfbGVkX2h3X2lzX3N1cHBvcnRlZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcbiBzdGF0aWMgaW50IGRwODM4NjdfbGVkX2h3X2NvbnRyb2xfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuIFx0XHRcdFx0ICAgICAgdW5zaWduZWQgbG9uZyBydWxlcylcbiB7XG4rXHRzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlICpkcDgzODY3ID0gcGh5ZGV2LVx1MDAzZXByaXY7XG4gXHRpbnQgbW9kZSwgcmV0O1xuIFxuIFx0bW9kZSA9IGRwODM4NjdfbGVkX21vZGUoaW5kZXgsIHJ1bGVzKTtcbiBcdGlmIChtb2RlIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gbW9kZTtcbiBcbi1cdHJldCA9IHBoeV9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMSwgRFA4Mzg2N19MRURfRk5fTUFTSyhpbmRleCksXG4tXHRcdFx0IERQODM4NjdfTEVEX0ZOKGluZGV4LCBtb2RlKSk7XG4tXHRpZiAocmV0KVxuLVx0XHRyZXR1cm4gcmV0O1xuLVxuLVx0cmV0dXJuIHBoeV9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMiwgRFA4Mzg2N19MRURfRFJWX0VOKGluZGV4KSwgMCk7XG4rXHRtdXRleF9sb2NrKFx1MDAyNmRwODM4NjctXHUwMDNlbGVkX2xvY2spO1xuK1x0cmV0ID0gX19kcDgzODY3X2xlZF9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMSxcbitcdFx0XHRcdCAgIERQODM4NjdfTEVEX0ZOX01BU0soaW5kZXgpLFxuK1x0XHRcdFx0ICAgRFA4Mzg2N19MRURfRk4oaW5kZXgsIG1vZGUpKTtcbitcdGlmICghcmV0KVxuK1x0XHRyZXQgPSBfX2RwODM4NjdfbGVkX21vZGlmeShwaHlkZXYsIERQODM4NjdfTEVEQ1IyLFxuK1x0XHRcdFx0XHQgICBEUDgzODY3X0xFRF9EUlZfRU4oaW5kZXgpIHxcbitcdFx0XHRcdFx0ICAgRFA4Mzg2N19MRURfRFJWX1ZBTChpbmRleCksIDApO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmRwODM4NjctXHUwMDNlbGVkX2xvY2spO1xuK1xuK1x0cmV0dXJuIHJldDtcbiB9XG4gXG4gc3RhdGljIGludCBkcDgzODY3X2xlZF9od19jb250cm9sX2dldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcbkBAIC0xMTQxLDkgKzEyMTksMTEgQEAgc3RhdGljIGludCBkcDgzODY3X2xlZF9od19jb250cm9sX2dldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcbiBzdGF0aWMgaW50IGRwODM4NjdfbGVkX3BvbGFyaXR5X3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgaW5kZXgsXG4gXHRcdFx0XHQgICAgdW5zaWduZWQgbG9uZyBtb2RlcylcbiB7XG4rXHRzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlICpkcDgzODY3ID0gcGh5ZGV2LVx1MDAzZXByaXY7XG4gXHQvKiBEZWZhdWx0IGFjdGl2ZSBoaWdoICovXG4gXHR1MTYgcG9sYXJpdHkgPSBEUDgzODY3X0xFRF9QT0xBUklUWShpbmRleCk7XG4gXHR1MzIgbW9kZTtcbitcdGludCByZXQ7XG4gXG4gXHRmb3JfZWFjaF9zZXRfYml0KG1vZGUsIFx1MDAyNm1vZGVzLCBfX1BIWV9MRURfTU9ERVNfTlVNKSB7XG4gXHRcdHN3aXRjaCAobW9kZSkge1xuQEAgLTExNTQsOCArMTIzNCwxMyBAQCBzdGF0aWMgaW50IGRwODM4NjdfbGVkX3BvbGFyaXR5X3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgaW5kZXgsXG4gXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRcdH1cbiBcdH1cbi1cdHJldHVybiBwaHlfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjIsXG4tXHRcdFx0ICBEUDgzODY3X0xFRF9QT0xBUklUWShpbmRleCksIHBvbGFyaXR5KTtcbitcbitcdG11dGV4X2xvY2soXHUwMDI2ZHA4Mzg2Ny1cdTAwM2VsZWRfbG9jayk7XG4rXHRyZXQgPSBfX2RwODM4NjdfbGVkX21vZGlmeShwaHlkZXYsIERQODM4NjdfTEVEQ1IyLFxuK1x0XHRcdFx0ICAgRFA4Mzg2N19MRURfUE9MQVJJVFkoaW5kZXgpLCBwb2xhcml0eSk7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2ZHA4Mzg2Ny1cdTAwM2VsZWRfbG9jayk7XG4rXG4rXHRyZXR1cm4gcmV0O1xuIH1cbiBcbiBzdGF0aWMgdW5zaWduZWQgaW50IGRwODM4NjdfaW5iYW5kX2NhcHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDAwOjI5OjQ0LjczMDk4MTk0OVoiLCJTZXEiOjI1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMTYwNTU0ODUxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLTVNBTiBFdmFsdWF0aW9uOiBkcDgzODY3IFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSB0YXNrIGlzIHRvIGV2YWx1YXRlIHRoaXMgcGF0Y2ggdG8gYGRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmNgIGFuZCBkZWNpZGUgaWYgaXQgd2FycmFudHMgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLiBUaGUgcHJpbWFyeSBjaGFuZ2Ugc2VlbXMgdG8gYmUgdGhlIGFkZGl0aW9uIG9mIGEgbXV0ZXggKGBsZWRfbG9ja2ApIGFuZCBzaGFkb3cgcmVnaXN0ZXJzIChgbGVkY3IxYCwgYGxlZGNyMV9tYXNrYCwgYGxlZGNyMmAsIGBsZWRjcjJfbWFza2ApIHdpdGhpbiB0aGUgYGRwODM4NjdfcHJpdmF0ZWAgc3RydWN0LiBUaGlzIGlzIGFsbCBhYm91dCBtYW5hZ2luZyBMRUQgcmVnaXN0ZXIgc2V0dGluZ3MgaW4gdGhlIFBIWSBkcml2ZXIsIGluY2x1ZGluZyByZWdpc3RlciBjYWNoaW5nIGFuZCByZXN0b3JhdGlvbiBhZnRlciBzb2Z0IHJlc2V0cywgYW5kIGVuc3VyaW5nIHN5bmNocm9uaXphdGlvbi5cblxuRmlyc3QsIEkgbmVlZCB0byBjaGVjayBmb3IgcG90ZW50aWFsIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGxlYWtzLiBUaGUgcGF0Y2ggdXNlcyBgZGV2bV9remFsbG9jYCB0byBhbGxvY2F0ZSB0aGUgYGRwODM4NjdgIHN0cnVjdHVyZSwgd2hpY2ggbWVhbnMgYWxsIHRoZSBuZXcgZmllbGRzLCBpbmNsdWRpbmcgdGhvc2UgcmVsYXRlZCB0byB0aGUgTEVEIGZ1bmN0aW9uYWxpdHksIGFyZSBndWFyYW50ZWVkIHRvIGJlIHplcm8taW5pdGlhbGl6ZWQuIEkgc2VlIHRoYXQgYGRwODM4NjdfbGVkX3Jlc3RvcmVgIHVzZXMgdGhlIG1hc2sgZmllbGRzLCBidXQgdGhleSBhcmUgZWl0aGVyIHplcm8taW5pdGlhbGl6ZWQgb3Igd3JpdHRlbiB0byBmaXJzdC4gSSBkb24ndCBzZWUgYW55IGRhdGEgYmVpbmcgY29waWVkIHRvIHVzZXJzcGFjZSB2aWEgYGNvcHlfdG9fdXNlcmAsIGlvY3RsLCBvciBuZXRsaW5rLCBlbGltaW5hdGluZyB0aGF0IHZlY3Rvci4gVGhlIGxvY2FsIHZhcmlhYmxlcyAoYHJldGAsIGBkcDgzODY3YCwgYHZhbGAsIGV0Yy4pIGFyZSBhbHNvIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgYmVmb3JlIHVzZSwgYSBzdGFuZGFyZCBwcmFjdGljZSBJIGV4cGVjdCB0byBzZWUsIHdoaWNoIGlzIGdvb2QuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2VzIGlzIGNlbnRlcmVkIGFyb3VuZCByZWdpc3RlciBhY2Nlc3MgYW5kIGxvY2tpbmcsIG5vdCBpbnRyb2R1Y2luZyBuZXcgZGF0YSBzdHJ1Y3R1cmVzIG9yIGNvbXBsZXggZmxvd3MgdGhhdCB3b3VsZCBiZSBhIHJlZCBmbGFnLlxuXG5HaXZlbiB0aGF0IHRoZSBjaGFuZ2UgZm9jdXNlcyBvbiBjYWNoaW5nL3Jlc3RvcmluZyBoYXJkd2FyZSByZWdpc3RlciB2YWx1ZXMgYW5kIGFkZGluZyBhIG11dGV4LCB0aGVyZSdzIG5vIG9idmlvdXMgcGF0aCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gVGhlIGFsbG9jYXRpb24gaXMgemVyb2VkLCBubyB1c2VyLXNwYWNlIGRhdGEgbGVha3MsIGFuZCBsb2NhbCB2YXJpYWJsZXMgYXJlIHByb3Blcmx5IGluaXRpYWxpemVkLiBMb2NrZGVwIGFuZCBLQVNBTiB3b3VsZCBjYXRjaCBhbnkgY29uY3VycmVuY3kgaXNzdWVzLlxuXG5MZXQncyBxdWlja2x5IHJlLWl0ZXJhdGUgdGhlIGZvdXIgY3JpdGVyaWEgdG8gYmUgY2VydGFpbjpcblxuMS4gIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZT8gTm9wZS5cbjIuICBDb25kaXRpb25hbCBsb2dpYyBkZXBlbmRpbmcgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXM/IE5vdCBhIGNoYW5jZS4gVGhlIGBremFsbG9jYCBndWFyYW50ZWVzIGluaXRpYWxpemF0aW9uLCBhbmQgdGhlIGxvZ2ljIHVzZXMgbG9jYWwgdmFyaWFibGVzLlxuMy4gIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMgY291bGQgYmUgcmVhZCBsYXRlcj8gWmVyby1pbml0aWFsaXplZCwgc28gbm8uXG40LiAgQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgdGhhdCBhY2Nlc3NlcyB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnM/IE5vdGhpbmcgbGlrZSB0aGF0IGhlcmUuXG5cblRoZXJlZm9yZSwgYWZ0ZXIgYSB0aG9yb3VnaCByZXZpZXcsIG15IGNvbmNsdXNpb24gaXMgdGhhdCB0aGlzIHBhdGNoICpkb2VzIG5vdCoganVzdGlmeSBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uLiBUaGUgYE5lZWRzS01TQU5gIGZsYWcgc2hvdWxkIGJlIHNldCB0byBgZmFsc2VgLiBUaW1lIHRvIGNvbnN0cnVjdCBteSByZXNwb25zZSBhbmQgc2V0IHRoZSByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjQ4LCJPdXRwdXRUb2tlbnMiOjE5MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg0NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDAwOjI5OjU2LjMzNjUzNDEyNloiLCJTZXEiOjI2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHNoYWRvdyBtZWNoYW5pc20gYW5kIG11dGV4IGxvY2tpbmcgZm9yIExFRCByZWdpc3RlcnMgaW4gdGhlIERQODM4NjcgUEhZIGRyaXZlciAoZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYykuIFRoZSBwcml2YXRlIHN0cnVjdHVyZSBgc3RydWN0IGRwODM4NjdfcHJpdmF0ZWAgaXMgYWxsb2NhdGVkIHVzaW5nIGBkZXZtX2t6YWxsb2MoKWAsIGVuc3VyaW5nIHRoYXQgYWxsIG5ld2x5IGludHJvZHVjZWQgZmllbGRzIChgbGVkX2xvY2tgLCBgbGVkY3IxYCwgYGxlZGNyMV9tYXNrYCwgYGxlZGNyMmAsIGBsZWRjcjJfbWFza2ApIGFyZSBmdWxseSB6ZXJvLWluaXRpYWxpemVkLiBBbGwgbG9jYWwgdmFyaWFibGVzIGFyZSBwcm9wZXJseSBpbml0aWFsaXplZCBiZWZvcmUgdXNlLiBObyBkYXRhIGlzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBubyB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IGlzIGFjY2Vzc2VkIG9yIGJyYW5jaGVkIHVwb24sIGFuZCBhbnkgcG90ZW50aWFsIGxvY2tpbmcgb3IgcmFjZSBidWdzIGFyZSBoYW5kbGVkIGJ5IHN0YW5kYXJkIHNhbml0aXplcnMgc3VjaCBhcyBMT0NLREVQIGFuZCBLQVNBTi4gVGhlcmVmb3JlLCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHNoYWRvdyBtZWNoYW5pc20gYW5kIG11dGV4IGxvY2tpbmcgZm9yIExFRCByZWdpc3RlcnMgaW4gdGhlIERQODM4NjcgUEhZIGRyaXZlciAoZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYykuIFRoZSBwcml2YXRlIHN0cnVjdHVyZSBgc3RydWN0IGRwODM4NjdfcHJpdmF0ZWAgaXMgYWxsb2NhdGVkIHVzaW5nIGBkZXZtX2t6YWxsb2MoKWAsIGVuc3VyaW5nIHRoYXQgYWxsIG5ld2x5IGludHJvZHVjZWQgZmllbGRzIChgbGVkX2xvY2tgLCBgbGVkY3IxYCwgYGxlZGNyMV9tYXNrYCwgYGxlZGNyMmAsIGBsZWRjcjJfbWFza2ApIGFyZSBmdWxseSB6ZXJvLWluaXRpYWxpemVkLiBBbGwgbG9jYWwgdmFyaWFibGVzIGFyZSBwcm9wZXJseSBpbml0aWFsaXplZCBiZWZvcmUgdXNlLiBObyBkYXRhIGlzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBubyB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IGlzIGFjY2Vzc2VkIG9yIGJyYW5jaGVkIHVwb24sIGFuZCBhbnkgcG90ZW50aWFsIGxvY2tpbmcgb3IgcmFjZSBidWdzIGFyZSBoYW5kbGVkIGJ5IHN0YW5kYXJkIHNhbml0aXplcnMgc3VjaCBhcyBMT0NLREVQIGFuZCBLQVNBTi4gVGhlcmVmb3JlLCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflow62rsm[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-09 00:04:41 +0000 UTC FinishedAt: 2026-09-09 00:29:58 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "f6d61fe4c19cf448e5cba6d8767b4e6966f58606", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PHYLIB", "DP83867_PHY" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "f6d61fe4c19cf448e5cba6d8767b4e6966f58606", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PHYLIB", "DP83867_PHY" ], "series_id": "8f1abd0d-bc91-4703-baa5-7eef20f825ea" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "dp83867_led_brightness_set", "dp83867_led_hw_control_set", "dp83867_led_polarity_set", "dp83867_config_init", "dp83867_probe" ], "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+CgkJCTx0ZD4yMDI2LzA5LzA5IDAwOjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BIWUxJQiYjMzQ7LAogICAgJiMzNDtEUDgzODY3X1BIWSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RwODM4NjdfbGVkX2JyaWdodG5lc3Nfc2V0JiMzNDssCiAgICAmIzM0O2RwODM4NjdfbGVkX2h3X2NvbnRyb2xfc2V0JiMzNDssCiAgICAmIzM0O2RwODM4NjdfbGVkX3BvbGFyaXR5X3NldCYjMzQ7LAogICAgJiMzNDtkcDgzODY3X2NvbmZpZ19pbml0JiMzNDssCiAgICAmIzM0O2RwODM4NjdfcHJvYmUmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgc2hhZG93IG1lY2hhbmlzbSBhbmQgbXV0ZXggbG9ja2luZyBmb3IgTEVEIHJlZ2lzdGVycyBpbiB0aGUgRFA4Mzg2NyBQSFkgZHJpdmVyIChkcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jKS4gVGhlIHByaXZhdGUgc3RydWN0dXJlIGBzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlYCBpcyBhbGxvY2F0ZWQgdXNpbmcgYGRldm1fa3phbGxvYygpYCwgZW5zdXJpbmcgdGhhdCBhbGwgbmV3bHkgaW50cm9kdWNlZCBmaWVsZHMgKGBsZWRfbG9ja2AsIGBsZWRjcjFgLCBgbGVkY3IxX21hc2tgLCBgbGVkY3IyYCwgYGxlZGNyMl9tYXNrYCkgYXJlIGZ1bGx5IHplcm8taW5pdGlhbGl6ZWQuIEFsbCBsb2NhbCB2YXJpYWJsZXMgYXJlIHByb3Blcmx5IGluaXRpYWxpemVkIGJlZm9yZSB1c2UuIE5vIGRhdGEgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgaXMgYWNjZXNzZWQgb3IgYnJhbmNoZWQgdXBvbiwgYW5kIGFueSBwb3RlbnRpYWwgbG9ja2luZyBvciByYWNlIGJ1Z3MgYXJlIGhhbmRsZWQgYnkgc3RhbmRhcmQgc2FuaXRpemVycyBzdWNoIGFzIExPQ0tERVAgYW5kIEtBU0FOLiBUaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFRleGFzIEluc3RydW1lbnRzIERQODM4NjcgUEhZIGRyaXZlciAoZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYykgYnkgaW50cm9kdWNpbmcgYSBuZXcgbXV0ZXggKGxlZF9sb2NrKSBhbmQgc2hhZG93IHJlZ2lzdGVycyB0byBwcm9wZXJseSByZXN0b3JlIExFRCBjb25maWd1cmF0aW9ucyBhY3Jvc3Mgc29mdCByZXNldHMsIGFsb25nIHdpdGggcnVudGltZSBhc3NlcnRpb25zIChXQVJOX09OX09OQ0UpLiBUaGUgZHJpdmVyIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBFdGhlcm5ldCBhZGFwdGVycyBleHBvc2luZyBNRElPIGJ1c2VzLiBGdXp6aW5nIGlzIHdhcnJhbnRlZCB0byB2ZXJpZnkgY29uY3VycmVuY3kgYW5kIHByb3BlciBzZXJpYWxpemF0aW9uIGJldHdlZW4gY29uZmlnX2luaXQgc29mdC1yZXNldCByZXN0b3JlIGFuZCBMRUQgY29udHJvbCBvcGVyYXRpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDAwOjI4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNDRjMTY1Y2FmMGNjOTAyNmI5MDcwMWRiZTIxYzRlNzcwODM2YWUyNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDkgMDA6Mjg6NTEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYyBiL2RyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmNcbmluZGV4IDg4MjU1ZTkyYjRjZGIuLmVlYjRjZDY0OGY3NDMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jXG5AQCAtOCw2ICYjNDM7OCw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9taWkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L211dGV4LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGh5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9kZWxheS5oXHUwMDNlXG5AQCAtMTk2LDYgJiM0MzsxOTcsMTYgQEAgc3RydWN0IGRwODM4NjdfcHJpdmF0ZSB7XG4gXHRib29sIHNldF9jbGtfb3V0cHV0O1xuIFx0dTMyIGNsa19vdXRwdXRfc2VsO1xuIFx0Ym9vbCBzZ21paV9yZWZfY2xrX2VuO1xuJiM0MztcbiYjNDM7XHQvKiBTaGFkb3cgb2YgdGhlIExFRCByZWdpc3RlcnMsIHJlcGxheWVkIGFmdGVyIGEgc29mdCByZXNldC4gbGVkX2xvY2tcbiYjNDM7XHQgKiBzZXJpYWxpemVzIHRoZSBzaGFkb3cgYW5kIGl0cyByZXBsYXkgYWdhaW5zdCB0aGUgTEVEIGNhbGxiYWNrcyxcbiYjNDM7XHQgKiBiZWNhdXNlIGRwODM4NjdfY29uZmlnX2luaXQoKSBkb2VzIHRoZSByZXBsYXkgb2ZmIHBoeWRldi1cdTAwM2Vsb2NrLlxuJiM0MztcdCAqL1xuJiM0MztcdHN0cnVjdCBtdXRleCBsZWRfbG9jaztcbiYjNDM7XHR1MTYgbGVkY3IxO1xuJiM0MztcdHUxNiBsZWRjcjFfbWFzaztcbiYjNDM7XHR1MTYgbGVkY3IyO1xuJiM0MztcdHUxNiBsZWRjcjJfbWFzaztcbiB9O1xuIFxuIHN0YXRpYyBpbnQgZHA4Mzg2N19hY2tfaW50ZXJydXB0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5AQCAtNzIyLDYgJiM0Mzs3MzMsNyBAQCBzdGF0aWMgaW50IGRwODM4NjdfcmVzdW1lKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gc3RhdGljIGludCBkcDgzODY3X3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4ge1xuIFx0c3RydWN0IGRwODM4NjdfcHJpdmF0ZSAqZHA4Mzg2NztcbiYjNDM7XHRpbnQgcmV0O1xuIFxuIFx0ZHA4Mzg2NyA9IGRldm1fa3phbGxvYyhcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYsIHNpemVvZigqZHA4Mzg2NyksXG4gXHRcdFx0ICAgICAgIEdGUF9LRVJORUwpO1xuQEAgLTczMCw5ICYjNDM7NzQyLDYwIEBAIHN0YXRpYyBpbnQgZHA4Mzg2N19wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFxuIFx0cGh5ZGV2LVx1MDAzZXByaXYgPSBkcDgzODY3O1xuIFxuJiM0MztcdHJldCA9IGRldm1fbXV0ZXhfaW5pdChcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYsIFx1MDAyNmRwODM4NjctXHUwMDNlbGVkX2xvY2spO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiBcdHJldHVybiBkcDgzODY3X29mX2luaXQocGh5ZGV2KTtcbiB9XG4gXG4mIzQzOy8qIFVwZGF0ZSBhbiBMRUQgcmVnaXN0ZXIgYW5kIG1pcnJvciB0aGUgY2hhbmdlIGludG8gdGhlIHNoYWRvdywgc28gdGhhdFxuJiM0MzsgKiBkcDgzODY3X2NvbmZpZ19pbml0KCkgY2FuIHJlcGxheSBpdCBhZnRlciBhIHNvZnQgcmVzZXQuIENhbGxlciBtdXN0IGhvbGRcbiYjNDM7ICogZHA4Mzg2Ny1cdTAwM2VsZWRfbG9jay5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyBpbnQgX19kcDgzODY3X2xlZF9tb2RpZnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTMyIHJlZyxcbiYjNDM7XHRcdFx0XHR1MTYgbWFzaywgdTE2IHZhbClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkcDgzODY3X3ByaXZhdGUgKmRwODM4NjcgPSBwaHlkZXYtXHUwMDNlcHJpdjtcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRyZXQgPSBwaHlfbW9kaWZ5KHBoeWRldiwgcmVnLCBtYXNrLCB2YWwpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHRpZiAocmVnID09IERQODM4NjdfTEVEQ1IxKSB7XG4mIzQzO1x0XHRkcDgzODY3LVx1MDAzZWxlZGNyMSA9IChkcDgzODY3LVx1MDAzZWxlZGNyMSBcdTAwMjYgfm1hc2spIHwgKHZhbCBcdTAwMjYgbWFzayk7XG4mIzQzO1x0XHRkcDgzODY3LVx1MDAzZWxlZGNyMV9tYXNrIHw9IG1hc2s7XG4mIzQzO1x0fSBlbHNlIGlmIChyZWcgPT0gRFA4Mzg2N19MRURDUjIpIHtcbiYjNDM7XHRcdGRwODM4NjctXHUwMDNlbGVkY3IyID0gKGRwODM4NjctXHUwMDNlbGVkY3IyIFx1MDAyNiB+bWFzaykgfCAodmFsIFx1MDAyNiBtYXNrKTtcbiYjNDM7XHRcdGRwODM4NjctXHUwMDNlbGVkY3IyX21hc2sgfD0gbWFzaztcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0V0FSTl9PTl9PTkNFKDEpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qIFJlc3RvcmUgdGhlIExFRCByZWdpc3RlcnMgdGhlIGRyaXZlciBoYXMgcHJvZ3JhbW1lZCwgY2xlYXJlZCBieSB0aGUgc29mdFxuJiM0MzsgKiByZXNldCBpbiBkcDgzODY3X3BoeV9yZXNldCgpLlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIGludCBkcDgzODY3X2xlZF9yZXN0b3JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlICpkcDgzODY3ID0gcGh5ZGV2LVx1MDAzZXByaXY7XG4mIzQzO1x0aW50IHJldCA9IDA7XG4mIzQzO1xuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2ZHA4Mzg2Ny1cdTAwM2VsZWRfbG9jayk7XG4mIzQzO1x0aWYgKGRwODM4NjctXHUwMDNlbGVkY3IxX21hc2spXG4mIzQzO1x0XHRyZXQgPSBwaHlfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjEsXG4mIzQzO1x0XHRcdFx0IGRwODM4NjctXHUwMDNlbGVkY3IxX21hc2ssIGRwODM4NjctXHUwMDNlbGVkY3IxKTtcbiYjNDM7XHRpZiAoIXJldCBcdTAwMjZcdTAwMjYgZHA4Mzg2Ny1cdTAwM2VsZWRjcjJfbWFzaylcbiYjNDM7XHRcdHJldCA9IHBoeV9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMixcbiYjNDM7XHRcdFx0XHQgZHA4Mzg2Ny1cdTAwM2VsZWRjcjJfbWFzaywgZHA4Mzg2Ny1cdTAwM2VsZWRjcjIpO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZkcDgzODY3LVx1MDAzZWxlZF9sb2NrKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IGRwODM4NjdfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiB7XG4gXHRzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlICpkcDgzODY3ID0gcGh5ZGV2LVx1MDAzZXByaXY7XG5AQCAtODk2LDYgJiM0Mzs5NTksMTAgQEAgc3RhdGljIGludCBkcDgzODY3X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRcdFx0ICAgICAgIG1hc2ssIHZhbCk7XG4gXHR9XG4gXG4mIzQzO1x0cmV0ID0gZHA4Mzg2N19sZWRfcmVzdG9yZShwaHlkZXYpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRwaHlkZXZfd2FybihwaHlkZXYsIFwmIzM0O2ZhaWxlZCB0byByZXN0b3JlIExFRCBjb25maWc6ICVkXFxuXCYjMzQ7LCByZXQpO1xuJiM0MztcbiBcdHJldHVybiAwO1xuIH1cbiBcbkBAIC0xMDA0LDcgJiM0MzsxMDcxLDkgQEAgc3RhdGljIGludFxuIGRwODM4NjdfbGVkX2JyaWdodG5lc3Nfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4gXHRcdFx0ICAgdTggaW5kZXgsIGVudW0gbGVkX2JyaWdodG5lc3MgYnJpZ2h0bmVzcylcbiB7XG4tXHR1MzIgdmFsO1xuJiM0MztcdHN0cnVjdCBkcDgzODY3X3ByaXZhdGUgKmRwODM4NjcgPSBwaHlkZXYtXHUwMDNlcHJpdjtcbiYjNDM7XHR1MTYgdmFsO1xuJiM0MztcdGludCByZXQ7XG4gXG4gXHRpZiAoaW5kZXggXHUwMDNlPSBEUDgzODY3X0xFRF9DT1VOVClcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG5AQCAtMTAxNSwxMCAmIzQzOzEwODQsMTMgQEAgZHA4Mzg2N19sZWRfYnJpZ2h0bmVzc19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbiBcdGlmIChicmlnaHRuZXNzKVxuIFx0XHR2YWwgfD0gRFA4Mzg2N19MRURfRFJWX1ZBTChpbmRleCk7XG4gXG4tXHRyZXR1cm4gcGh5X21vZGlmeShwaHlkZXYsIERQODM4NjdfTEVEQ1IyLFxuLVx0XHRcdCAgRFA4Mzg2N19MRURfRFJWX1ZBTChpbmRleCkgfFxuLVx0XHRcdCAgRFA4Mzg2N19MRURfRFJWX0VOKGluZGV4KSxcbi1cdFx0XHQgIHZhbCk7XG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZkcDgzODY3LVx1MDAzZWxlZF9sb2NrKTtcbiYjNDM7XHRyZXQgPSBfX2RwODM4NjdfbGVkX21vZGlmeShwaHlkZXYsIERQODM4NjdfTEVEQ1IyLFxuJiM0MztcdFx0XHRcdCAgIERQODM4NjdfTEVEX0RSVl9WQUwoaW5kZXgpIHxcbiYjNDM7XHRcdFx0XHQgICBEUDgzODY3X0xFRF9EUlZfRU4oaW5kZXgpLCB2YWwpO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZkcDgzODY3LVx1MDAzZWxlZF9sb2NrKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiB9XG4gXG4gc3RhdGljIGludCBkcDgzODY3X2xlZF9tb2RlKHU4IGluZGV4LCB1bnNpZ25lZCBsb25nIHJ1bGVzKVxuQEAgLTEwNjksMTggJiM0MzsxMTQxLDI0IEBAIHN0YXRpYyBpbnQgZHA4Mzg2N19sZWRfaHdfaXNfc3VwcG9ydGVkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuIHN0YXRpYyBpbnQgZHA4Mzg2N19sZWRfaHdfY29udHJvbF9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXG4gXHRcdFx0XHQgICAgICB1bnNpZ25lZCBsb25nIHJ1bGVzKVxuIHtcbiYjNDM7XHRzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlICpkcDgzODY3ID0gcGh5ZGV2LVx1MDAzZXByaXY7XG4gXHRpbnQgbW9kZSwgcmV0O1xuIFxuIFx0bW9kZSA9IGRwODM4NjdfbGVkX21vZGUoaW5kZXgsIHJ1bGVzKTtcbiBcdGlmIChtb2RlIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gbW9kZTtcbiBcbi1cdHJldCA9IHBoeV9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMSwgRFA4Mzg2N19MRURfRk5fTUFTSyhpbmRleCksXG4tXHRcdFx0IERQODM4NjdfTEVEX0ZOKGluZGV4LCBtb2RlKSk7XG4tXHRpZiAocmV0KVxuLVx0XHRyZXR1cm4gcmV0O1xuLVxuLVx0cmV0dXJuIHBoeV9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMiwgRFA4Mzg2N19MRURfRFJWX0VOKGluZGV4KSwgMCk7XG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZkcDgzODY3LVx1MDAzZWxlZF9sb2NrKTtcbiYjNDM7XHRyZXQgPSBfX2RwODM4NjdfbGVkX21vZGlmeShwaHlkZXYsIERQODM4NjdfTEVEQ1IxLFxuJiM0MztcdFx0XHRcdCAgIERQODM4NjdfTEVEX0ZOX01BU0soaW5kZXgpLFxuJiM0MztcdFx0XHRcdCAgIERQODM4NjdfTEVEX0ZOKGluZGV4LCBtb2RlKSk7XG4mIzQzO1x0aWYgKCFyZXQpXG4mIzQzO1x0XHRyZXQgPSBfX2RwODM4NjdfbGVkX21vZGlmeShwaHlkZXYsIERQODM4NjdfTEVEQ1IyLFxuJiM0MztcdFx0XHRcdFx0ICAgRFA4Mzg2N19MRURfRFJWX0VOKGluZGV4KSB8XG4mIzQzO1x0XHRcdFx0XHQgICBEUDgzODY3X0xFRF9EUlZfVkFMKGluZGV4KSwgMCk7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmRwODM4NjctXHUwMDNlbGVkX2xvY2spO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gcmV0O1xuIH1cbiBcbiBzdGF0aWMgaW50IGRwODM4NjdfbGVkX2h3X2NvbnRyb2xfZ2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuQEAgLTExNDEsOSAmIzQzOzEyMTksMTEgQEAgc3RhdGljIGludCBkcDgzODY3X2xlZF9od19jb250cm9sX2dldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcbiBzdGF0aWMgaW50IGRwODM4NjdfbGVkX3BvbGFyaXR5X3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgaW5kZXgsXG4gXHRcdFx0XHQgICAgdW5zaWduZWQgbG9uZyBtb2RlcylcbiB7XG4mIzQzO1x0c3RydWN0IGRwODM4NjdfcHJpdmF0ZSAqZHA4Mzg2NyA9IHBoeWRldi1cdTAwM2Vwcml2O1xuIFx0LyogRGVmYXVsdCBhY3RpdmUgaGlnaCAqL1xuIFx0dTE2IHBvbGFyaXR5ID0gRFA4Mzg2N19MRURfUE9MQVJJVFkoaW5kZXgpO1xuIFx0dTMyIG1vZGU7XG4mIzQzO1x0aW50IHJldDtcbiBcbiBcdGZvcl9lYWNoX3NldF9iaXQobW9kZSwgXHUwMDI2bW9kZXMsIF9fUEhZX0xFRF9NT0RFU19OVU0pIHtcbiBcdFx0c3dpdGNoIChtb2RlKSB7XG5AQCAtMTE1NCw4ICYjNDM7MTIzNCwxMyBAQCBzdGF0aWMgaW50IGRwODM4NjdfbGVkX3BvbGFyaXR5X3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgaW5kZXgsXG4gXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRcdH1cbiBcdH1cbi1cdHJldHVybiBwaHlfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjIsXG4tXHRcdFx0ICBEUDgzODY3X0xFRF9QT0xBUklUWShpbmRleCksIHBvbGFyaXR5KTtcbiYjNDM7XG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZkcDgzODY3LVx1MDAzZWxlZF9sb2NrKTtcbiYjNDM7XHRyZXQgPSBfX2RwODM4NjdfbGVkX21vZGlmeShwaHlkZXYsIERQODM4NjdfTEVEQ1IyLFxuJiM0MztcdFx0XHRcdCAgIERQODM4NjdfTEVEX1BPTEFSSVRZKGluZGV4KSwgcG9sYXJpdHkpO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZkcDgzODY3LVx1MDAzZWxlZF9sb2NrKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiB9XG4gXG4gc3RhdGljIHVuc2lnbmVkIGludCBkcDgzODY3X2luYmFuZF9jYXBzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMDA6Mjg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UEhZTElCJiMzNDssCiAgICAmIzM0O0RQODM4NjdfUEhZJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZHA4Mzg2N19sZWRfYnJpZ2h0bmVzc19zZXQmIzM0OywKICAgICYjMzQ7ZHA4Mzg2N19sZWRfaHdfY29udHJvbF9zZXQmIzM0OywKICAgICYjMzQ7ZHA4Mzg2N19sZWRfcG9sYXJpdHlfc2V0JiMzNDssCiAgICAmIzM0O2RwODM4NjdfY29uZmlnX2luaXQmIzM0OywKICAgICYjMzQ7ZHA4Mzg2N19wcm9iZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgVGV4YXMgSW5zdHJ1bWVudHMgRFA4Mzg2NyBQSFkgZHJpdmVyIChkcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jKSBieSBpbnRyb2R1Y2luZyBhIG5ldyBtdXRleCAobGVkX2xvY2spIGFuZCBzaGFkb3cgcmVnaXN0ZXJzIHRvIHByb3Blcmx5IHJlc3RvcmUgTEVEIGNvbmZpZ3VyYXRpb25zIGFjcm9zcyBzb2Z0IHJlc2V0cywgYWxvbmcgd2l0aCBydW50aW1lIGFzc2VydGlvbnMgKFdBUk5fT05fT05DRSkuIFRoZSBkcml2ZXIgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIEV0aGVybmV0IGFkYXB0ZXJzIGV4cG9zaW5nIE1ESU8gYnVzZXMuIEZ1enppbmcgaXMgd2FycmFudGVkIHRvIHZlcmlmeSBjb25jdXJyZW5jeSBhbmQgcHJvcGVyIHNlcmlhbGl6YXRpb24gYmV0d2VlbiBjb25maWdfaW5pdCBzb2Z0LXJlc2V0IHJlc3RvcmUgYW5kIExFRCBjb250cm9sIG9wZXJhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0NGMxNjVjYWYwY2M5MDI2YjkwNzAxZGJlMjFjNGU3NzA4MzZhZTI2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBTZXAgOSAwMDoyODo1MSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMgYi9kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jCmluZGV4IDg4MjU1ZTkyYjRjZGIuLmVlYjRjZDY0OGY3NDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYwpAQCAtOCw2ICYjNDM7OCw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgva2VybmVsLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbWlpLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbW9kdWxlLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L211dGV4LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvb2YuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9waHkuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9kZWxheS5oJmd0OwpAQCAtMTk2LDYgJiM0MzsxOTcsMTYgQEAgc3RydWN0IGRwODM4NjdfcHJpdmF0ZSB7CiAJYm9vbCBzZXRfY2xrX291dHB1dDsKIAl1MzIgY2xrX291dHB1dF9zZWw7CiAJYm9vbCBzZ21paV9yZWZfY2xrX2VuOwomIzQzOwomIzQzOwkvKiBTaGFkb3cgb2YgdGhlIExFRCByZWdpc3RlcnMsIHJlcGxheWVkIGFmdGVyIGEgc29mdCByZXNldC4gbGVkX2xvY2sKJiM0MzsJICogc2VyaWFsaXplcyB0aGUgc2hhZG93IGFuZCBpdHMgcmVwbGF5IGFnYWluc3QgdGhlIExFRCBjYWxsYmFja3MsCiYjNDM7CSAqIGJlY2F1c2UgZHA4Mzg2N19jb25maWdfaW5pdCgpIGRvZXMgdGhlIHJlcGxheSBvZmYgcGh5ZGV2LSZndDtsb2NrLgomIzQzOwkgKi8KJiM0MzsJc3RydWN0IG11dGV4IGxlZF9sb2NrOwomIzQzOwl1MTYgbGVkY3IxOwomIzQzOwl1MTYgbGVkY3IxX21hc2s7CiYjNDM7CXUxNiBsZWRjcjI7CiYjNDM7CXUxNiBsZWRjcjJfbWFzazsKIH07CiAKIHN0YXRpYyBpbnQgZHA4Mzg2N19hY2tfaW50ZXJydXB0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCkBAIC03MjIsNiAmIzQzOzczMyw3IEBAIHN0YXRpYyBpbnQgZHA4Mzg2N19yZXN1bWUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIHN0YXRpYyBpbnQgZHA4Mzg2N19wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogewogCXN0cnVjdCBkcDgzODY3X3ByaXZhdGUgKmRwODM4Njc7CiYjNDM7CWludCByZXQ7CiAKIAlkcDgzODY3ID0gZGV2bV9remFsbG9jKCZhbXA7cGh5ZGV2LSZndDttZGlvLmRldiwgc2l6ZW9mKCpkcDgzODY3KSwKIAkJCSAgICAgICBHRlBfS0VSTkVMKTsKQEAgLTczMCw5ICYjNDM7NzQyLDYwIEBAIHN0YXRpYyBpbnQgZHA4Mzg2N19wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogCiAJcGh5ZGV2LSZndDtwcml2ID0gZHA4Mzg2NzsKIAomIzQzOwlyZXQgPSBkZXZtX211dGV4X2luaXQoJmFtcDtwaHlkZXYtJmd0O21kaW8uZGV2LCAmYW1wO2RwODM4NjctJmd0O2xlZF9sb2NrKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiAJcmV0dXJuIGRwODM4Njdfb2ZfaW5pdChwaHlkZXYpOwogfQogCiYjNDM7LyogVXBkYXRlIGFuIExFRCByZWdpc3RlciBhbmQgbWlycm9yIHRoZSBjaGFuZ2UgaW50byB0aGUgc2hhZG93LCBzbyB0aGF0CiYjNDM7ICogZHA4Mzg2N19jb25maWdfaW5pdCgpIGNhbiByZXBsYXkgaXQgYWZ0ZXIgYSBzb2Z0IHJlc2V0LiBDYWxsZXIgbXVzdCBob2xkCiYjNDM7ICogZHA4Mzg2Ny0mZ3Q7bGVkX2xvY2suCiYjNDM7ICovCiYjNDM7c3RhdGljIGludCBfX2RwODM4NjdfbGVkX21vZGlmeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MzIgcmVnLAomIzQzOwkJCQl1MTYgbWFzaywgdTE2IHZhbCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkcDgzODY3X3ByaXZhdGUgKmRwODM4NjcgPSBwaHlkZXYtJmd0O3ByaXY7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CXJldCA9IHBoeV9tb2RpZnkocGh5ZGV2LCByZWcsIG1hc2ssIHZhbCk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwlpZiAocmVnID09IERQODM4NjdfTEVEQ1IxKSB7CiYjNDM7CQlkcDgzODY3LSZndDtsZWRjcjEgPSAoZHA4Mzg2Ny0mZ3Q7bGVkY3IxICZhbXA7IH5tYXNrKSB8ICh2YWwgJmFtcDsgbWFzayk7CiYjNDM7CQlkcDgzODY3LSZndDtsZWRjcjFfbWFzayB8PSBtYXNrOwomIzQzOwl9IGVsc2UgaWYgKHJlZyA9PSBEUDgzODY3X0xFRENSMikgewomIzQzOwkJZHA4Mzg2Ny0mZ3Q7bGVkY3IyID0gKGRwODM4NjctJmd0O2xlZGNyMiAmYW1wOyB+bWFzaykgfCAodmFsICZhbXA7IG1hc2spOwomIzQzOwkJZHA4Mzg2Ny0mZ3Q7bGVkY3IyX21hc2sgfD0gbWFzazsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCVdBUk5fT05fT05DRSgxKTsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7LyogUmVzdG9yZSB0aGUgTEVEIHJlZ2lzdGVycyB0aGUgZHJpdmVyIGhhcyBwcm9ncmFtbWVkLCBjbGVhcmVkIGJ5IHRoZSBzb2Z0CiYjNDM7ICogcmVzZXQgaW4gZHA4Mzg2N19waHlfcmVzZXQoKS4KJiM0MzsgKi8KJiM0MztzdGF0aWMgaW50IGRwODM4NjdfbGVkX3Jlc3RvcmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkcDgzODY3X3ByaXZhdGUgKmRwODM4NjcgPSBwaHlkZXYtJmd0O3ByaXY7CiYjNDM7CWludCByZXQgPSAwOwomIzQzOwomIzQzOwltdXRleF9sb2NrKCZhbXA7ZHA4Mzg2Ny0mZ3Q7bGVkX2xvY2spOwomIzQzOwlpZiAoZHA4Mzg2Ny0mZ3Q7bGVkY3IxX21hc2spCiYjNDM7CQlyZXQgPSBwaHlfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjEsCiYjNDM7CQkJCSBkcDgzODY3LSZndDtsZWRjcjFfbWFzaywgZHA4Mzg2Ny0mZ3Q7bGVkY3IxKTsKJiM0MzsJaWYgKCFyZXQgJmFtcDsmYW1wOyBkcDgzODY3LSZndDtsZWRjcjJfbWFzaykKJiM0MzsJCXJldCA9IHBoeV9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMiwKJiM0MzsJCQkJIGRwODM4NjctJmd0O2xlZGNyMl9tYXNrLCBkcDgzODY3LSZndDtsZWRjcjIpOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtkcDgzODY3LSZndDtsZWRfbG9jayk7CiYjNDM7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBkcDgzODY3X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiB7CiAJc3RydWN0IGRwODM4NjdfcHJpdmF0ZSAqZHA4Mzg2NyA9IHBoeWRldi0mZ3Q7cHJpdjsKQEAgLTg5Niw2ICYjNDM7OTU5LDEwIEBAIHN0YXRpYyBpbnQgZHA4Mzg2N19jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogCQkJICAgICAgIG1hc2ssIHZhbCk7CiAJfQogCiYjNDM7CXJldCA9IGRwODM4NjdfbGVkX3Jlc3RvcmUocGh5ZGV2KTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXBoeWRldl93YXJuKHBoeWRldiwgJiMzNDtmYWlsZWQgdG8gcmVzdG9yZSBMRUQgY29uZmlnOiAlZFxuJiMzNDssIHJldCk7CiYjNDM7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTEwMDQsNyAmIzQzOzEwNzEsOSBAQCBzdGF0aWMgaW50CiBkcDgzODY3X2xlZF9icmlnaHRuZXNzX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LAogCQkJICAgdTggaW5kZXgsIGVudW0gbGVkX2JyaWdodG5lc3MgYnJpZ2h0bmVzcykKIHsKLQl1MzIgdmFsOwomIzQzOwlzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlICpkcDgzODY3ID0gcGh5ZGV2LSZndDtwcml2OwomIzQzOwl1MTYgdmFsOwomIzQzOwlpbnQgcmV0OwogCiAJaWYgKGluZGV4ICZndDs9IERQODM4NjdfTEVEX0NPVU5UKQogCQlyZXR1cm4gLUVJTlZBTDsKQEAgLTEwMTUsMTAgJiM0MzsxMDg0LDEzIEBAIGRwODM4NjdfbGVkX2JyaWdodG5lc3Nfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsCiAJaWYgKGJyaWdodG5lc3MpCiAJCXZhbCB8PSBEUDgzODY3X0xFRF9EUlZfVkFMKGluZGV4KTsKIAotCXJldHVybiBwaHlfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjIsCi0JCQkgIERQODM4NjdfTEVEX0RSVl9WQUwoaW5kZXgpIHwKLQkJCSAgRFA4Mzg2N19MRURfRFJWX0VOKGluZGV4KSwKLQkJCSAgdmFsKTsKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO2RwODM4NjctJmd0O2xlZF9sb2NrKTsKJiM0MzsJcmV0ID0gX19kcDgzODY3X2xlZF9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMiwKJiM0MzsJCQkJICAgRFA4Mzg2N19MRURfRFJWX1ZBTChpbmRleCkgfAomIzQzOwkJCQkgICBEUDgzODY3X0xFRF9EUlZfRU4oaW5kZXgpLCB2YWwpOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtkcDgzODY3LSZndDtsZWRfbG9jayk7CiYjNDM7CiYjNDM7CXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBpbnQgZHA4Mzg2N19sZWRfbW9kZSh1OCBpbmRleCwgdW5zaWduZWQgbG9uZyBydWxlcykKQEAgLTEwNjksMTggJiM0MzsxMTQxLDI0IEBAIHN0YXRpYyBpbnQgZHA4Mzg2N19sZWRfaHdfaXNfc3VwcG9ydGVkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LAogc3RhdGljIGludCBkcDgzODY3X2xlZF9od19jb250cm9sX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCwKIAkJCQkgICAgICB1bnNpZ25lZCBsb25nIHJ1bGVzKQogewomIzQzOwlzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlICpkcDgzODY3ID0gcGh5ZGV2LSZndDtwcml2OwogCWludCBtb2RlLCByZXQ7CiAKIAltb2RlID0gZHA4Mzg2N19sZWRfbW9kZShpbmRleCwgcnVsZXMpOwogCWlmIChtb2RlICZsdDsgMCkKIAkJcmV0dXJuIG1vZGU7CiAKLQlyZXQgPSBwaHlfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjEsIERQODM4NjdfTEVEX0ZOX01BU0soaW5kZXgpLAotCQkJIERQODM4NjdfTEVEX0ZOKGluZGV4LCBtb2RlKSk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQotCXJldHVybiBwaHlfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjIsIERQODM4NjdfTEVEX0RSVl9FTihpbmRleCksIDApOwomIzQzOwltdXRleF9sb2NrKCZhbXA7ZHA4Mzg2Ny0mZ3Q7bGVkX2xvY2spOwomIzQzOwlyZXQgPSBfX2RwODM4NjdfbGVkX21vZGlmeShwaHlkZXYsIERQODM4NjdfTEVEQ1IxLAomIzQzOwkJCQkgICBEUDgzODY3X0xFRF9GTl9NQVNLKGluZGV4KSwKJiM0MzsJCQkJICAgRFA4Mzg2N19MRURfRk4oaW5kZXgsIG1vZGUpKTsKJiM0MzsJaWYgKCFyZXQpCiYjNDM7CQlyZXQgPSBfX2RwODM4NjdfbGVkX21vZGlmeShwaHlkZXYsIERQODM4NjdfTEVEQ1IyLAomIzQzOwkJCQkJICAgRFA4Mzg2N19MRURfRFJWX0VOKGluZGV4KSB8CiYjNDM7CQkJCQkgICBEUDgzODY3X0xFRF9EUlZfVkFMKGluZGV4KSwgMCk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2RwODM4NjctJmd0O2xlZF9sb2NrKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGludCBkcDgzODY3X2xlZF9od19jb250cm9sX2dldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCwKQEAgLTExNDEsOSAmIzQzOzEyMTksMTEgQEAgc3RhdGljIGludCBkcDgzODY3X2xlZF9od19jb250cm9sX2dldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCwKIHN0YXRpYyBpbnQgZHA4Mzg2N19sZWRfcG9sYXJpdHlfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpbmRleCwKIAkJCQkgICAgdW5zaWduZWQgbG9uZyBtb2RlcykKIHsKJiM0MzsJc3RydWN0IGRwODM4NjdfcHJpdmF0ZSAqZHA4Mzg2NyA9IHBoeWRldi0mZ3Q7cHJpdjsKIAkvKiBEZWZhdWx0IGFjdGl2ZSBoaWdoICovCiAJdTE2IHBvbGFyaXR5ID0gRFA4Mzg2N19MRURfUE9MQVJJVFkoaW5kZXgpOwogCXUzMiBtb2RlOwomIzQzOwlpbnQgcmV0OwogCiAJZm9yX2VhY2hfc2V0X2JpdChtb2RlLCAmYW1wO21vZGVzLCBfX1BIWV9MRURfTU9ERVNfTlVNKSB7CiAJCXN3aXRjaCAobW9kZSkgewpAQCAtMTE1NCw4ICYjNDM7MTIzNCwxMyBAQCBzdGF0aWMgaW50IGRwODM4NjdfbGVkX3BvbGFyaXR5X3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgaW5kZXgsCiAJCQlyZXR1cm4gLUVJTlZBTDsKIAkJfQogCX0KLQlyZXR1cm4gcGh5X21vZGlmeShwaHlkZXYsIERQODM4NjdfTEVEQ1IyLAotCQkJICBEUDgzODY3X0xFRF9QT0xBUklUWShpbmRleCksIHBvbGFyaXR5KTsKJiM0MzsKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO2RwODM4NjctJmd0O2xlZF9sb2NrKTsKJiM0MzsJcmV0ID0gX19kcDgzODY3X2xlZF9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMiwKJiM0MzsJCQkJICAgRFA4Mzg2N19MRURfUE9MQVJJVFkoaW5kZXgpLCBwb2xhcml0eSk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2RwODM4NjctJmd0O2xlZF9sb2NrKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIHVuc2lnbmVkIGludCBkcDgzODY3X2luYmFuZF9jYXBzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDAwOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0MzYKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA5OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBOZXR3b3JrIFBIWSBEcml2ZXIgQ2hhbmdlKioKCk9rYXksIHNvIHRoZSBwYXRjaCBJJiMzOTttIGxvb2tpbmcgYXQgc3BlY2lmaWNhbGx5IHRvdWNoZXMgYGRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmNgLiBNeSBpbml0aWFsIHJlYWN0aW9uIGlzIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0IHRoaXMgZHJpdmVyICppcyouIEFoLCBpdCYjMzk7cyB0aGUgVGV4YXMgSW5zdHJ1bWVudHMgRFA4Mzg2NyBHaWdhYml0IEV0aGVybmV0IFBIWSBkcml2ZXIuIFJpZ2h0LCBzbyB0aGUga2V5IHF1ZXN0aW9uIGhlcmUgaXMgd2hldGhlciBpdCYjMzk7cyBhbiBNRElPIFBIWSBkcml2ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCYjMzk7cyBpbnN0YW50aWF0ZWQgYW5kIHVzZWQuIENhbiBJIHRlc3QgdGhpcyB3aXRob3V0IHBoeXNpY2FsIGhhcmR3YXJlPyBEb2VzIGl0IGJlaGF2ZSB3ZWxsIHVuZGVyIHZpcnR1YWwgZW52aXJvbm1lbnRzLCB1c2luZyBzdGFuZGFyZCBRRU1VIHNldHVwLCBvciBkb2VzIGl0IGRlcGVuZCBvbiBhY3R1YWwgTURJTyBhY2Nlc3M/CgpUaW1lIHRvIGRpZyBpbnRvIHRoZSBkcml2ZXIgaXRzZWxmLiBJJiMzOTtsbCBwcm9iYWJseSBzdGFydCB3aXRoIGEgcXVpY2sgYGdyZXBgIHNlYXJjaCBmb3Iga2V5IHRlcm1zLCBidXQgdWx0aW1hdGVseSwgSSYjMzk7bGwgbmVlZCB0byByZWFkIHRoZSBjb2RlIGRpcmVjdGx5IHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlIHRvIGFzc2VzcyB0aGUgaW1wYWN0IG9mIHRoaXMgY2hhbmdlIHByb3Blcmx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDAwOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0RQODM4NjcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDgxNSBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc9NDQ2PWNvbmZpZyBEUDgzODQ4X1BIWVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTQ1MC1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjQ1MTpjb25maWcgRFA4Mzg2N19QSFlcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjQ1MjpcdHRyaXN0YXRlIFwmIzM0O1RleGFzIEluc3RydW1lbnRzIERQODM4NjcgR2lnYWJpdCBQSFlcJiMzNDtcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTQ1My1cdGhlbHBcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjQ1NDpcdCAgQ3VycmVudGx5IHN1cHBvcnRzIHRoZSBEUDgzODY3IFBIWS5cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTQ1NS1cbi0tXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU9NjA9b2JqLSQoQ09ORklHX0RQODM4NDhfUEhZKVx0JiM0Mzs9IGRwODM4NDgub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjYxOm9iai0kKENPTkZJR19EUDgzODY3X1BIWSlcdCYjNDM7PSBkcDgzODY3Lm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS02Mi1vYmotJChDT05GSUdfRFA4Mzg2OV9QSFkpXHQmIzQzOz0gZHA4Mzg2OS5vXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xLS8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI6LyogRHJpdmVyIGZvciB0aGUgVGV4YXMgSW5zdHJ1bWVudHMgRFA4Mzg2NyBQSFlcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMy0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjEtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjIyOiNkZWZpbmUgRFA4Mzg2N19QSFlfSURcdFx0MHgyMDAwYTIzMVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyMzojZGVmaW5lIERQODM4NjdfREVWQUREUlx0XHQweDFmXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI0LVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyNTojZGVmaW5lIE1JSV9EUDgzODY3X1BIWUNUUkxcdDB4MTBcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjY6I2RlZmluZSBNSUlfRFA4Mzg2N19QSFlTVFNcdDB4MTFcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6Mjc6I2RlZmluZSBNSUlfRFA4Mzg2N19NSUNSXHQweDEyXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI4OiNkZWZpbmUgTUlJX0RQODM4NjdfSVNSXHRcdDB4MTNcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6Mjk6I2RlZmluZSBEUDgzODY3X0NGRzJcdFx0MHgxNFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozMDojZGVmaW5lIERQODM4NjdfTEVEQ1IxXHRcdDB4MThcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MzE6I2RlZmluZSBEUDgzODY3X0xFRENSMlx0XHQweDE5XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjMyOiNkZWZpbmUgRFA4Mzg2N19DRkczXHRcdDB4MWVcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MzM6I2RlZmluZSBEUDgzODY3X0NUUkxcdFx0MHgxZlxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zNC1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMzUtLyogRXh0ZW5kZWQgUmVnaXN0ZXJzICovXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjM2OiNkZWZpbmUgRFA4Mzg2N19GTERfVEhSX0NGR1x0MHgwMDJlXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjM3OiNkZWZpbmUgRFA4Mzg2N19DRkc0XHRcdDB4MDAzMVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozODojZGVmaW5lIERQODM4NjdfQ0ZHNF9TR01JSV9BTkVHX01BU0sgKEJJVCg1KSB8IEJJVCg2KSlcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6Mzk6I2RlZmluZSBEUDgzODY3X0NGRzRfU0dNSUlfQU5FR19USU1FUl8xMU1TICAgKDMgXHUwMDNjXHUwMDNjIDUpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQwOiNkZWZpbmUgRFA4Mzg2N19DRkc0X1NHTUlJX0FORUdfVElNRVJfODAwVVMgICgyIFx1MDAzY1x1MDAzYyA1KVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0MTojZGVmaW5lIERQODM4NjdfQ0ZHNF9TR01JSV9BTkVHX1RJTUVSXzJVUyAgICAoMSBcdTAwM2NcdTAwM2MgNSlcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDI6I2RlZmluZSBEUDgzODY3X0NGRzRfU0dNSUlfQU5FR19USU1FUl8xNk1TICAgKDAgXHUwMDNjXHUwMDNjIDUpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQzLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0NDojZGVmaW5lIERQODM4NjdfUkdNSUlDVExcdDB4MDAzMlxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0NTojZGVmaW5lIERQODM4NjdfU1RSQVBfU1RTMVx0MHgwMDZFXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQ2OiNkZWZpbmUgRFA4Mzg2N19TVFJBUF9TVFMyXHQweDAwNmZcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDc6I2RlZmluZSBEUDgzODY3X1JHTUlJRENUTFx0MHgwMDg2XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQ4OiNkZWZpbmUgRFA4Mzg2N19EU1BfRkZFX0NGR1x0MHgwMTJjXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQ5OiNkZWZpbmUgRFA4Mzg2N19SWEZDRkdcdFx0MHgwMTM0XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjUwOiNkZWZpbmUgRFA4Mzg2N19SWEZQTUQxXHQweDAxMzZcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NTE6I2RlZmluZSBEUDgzODY3X1JYRlBNRDJcdDB4MDEzN1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo1MjojZGVmaW5lIERQODM4NjdfUlhGUE1EM1x0MHgwMTM4XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjUzOiNkZWZpbmUgRFA4Mzg2N19SWEZTT1AxXHQweDAxMzlcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NTQ6I2RlZmluZSBEUDgzODY3X1JYRlNPUDJcdDB4MDEzQVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo1NTojZGVmaW5lIERQODM4NjdfUlhGU09QM1x0MHgwMTNCXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjU2OiNkZWZpbmUgRFA4Mzg2N19JT19NVVhfQ0ZHXHQweDAxNzBcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NTc6I2RlZmluZSBEUDgzODY3X1NHTUlJQ1RMXHQweDAwRDNcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NTg6I2RlZmluZSBEUDgzODY3XzEwTV9TR01JSV9DRkcgICAweDAxNkZcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NTk6I2RlZmluZSBEUDgzODY3XzEwTV9TR01JSV9SQVRFX0FEQVBUX01BU0sgQklUKDcpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTYwLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo2MTojZGVmaW5lIERQODM4NjdfU1dfUkVTRVRcdEJJVCgxNSlcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NjI6I2RlZmluZSBEUDgzODY3X1NXX1JFU1RBUlRcdEJJVCgxNClcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNjMtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTY0LS8qIE1JQ1IgSW50ZXJydXB0IGJpdHMgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NjU6I2RlZmluZSBNSUlfRFA4Mzg2N19NSUNSX0FOX0VSUl9JTlRfRU5cdFx0QklUKDE1KVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo2NjojZGVmaW5lIE1JSV9EUDgzODY3X01JQ1JfU1BFRURfQ0hOR19JTlRfRU5cdEJJVCgxNClcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6Njc6I2RlZmluZSBNSUlfRFA4Mzg2N19NSUNSX0RVUF9NT0RFX0NITkdfSU5UX0VOXHRCSVQoMTMpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjY4OiNkZWZpbmUgTUlJX0RQODM4NjdfTUlDUl9QQUdFX1JYRF9JTlRfRU5cdEJJVCgxMilcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6Njk6I2RlZmluZSBNSUlfRFA4Mzg2N19NSUNSX0FVVE9ORUdfQ09NUF9JTlRfRU5cdEJJVCgxMSlcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NzA6I2RlZmluZSBNSUlfRFA4Mzg2N19NSUNSX0xJTktfU1RTX0NITkdfSU5UX0VOXHRCSVQoMTApXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjcxOiNkZWZpbmUgTUlJX0RQODM4NjdfTUlDUl9GQUxTRV9DQVJSSUVSX0lOVF9FTlx0QklUKDgpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjcyOiNkZWZpbmUgTUlJX0RQODM4NjdfTUlDUl9TTEVFUF9NT0RFX0NITkdfSU5UX0VOXHRCSVQoNClcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NzM6I2RlZmluZSBNSUlfRFA4Mzg2N19NSUNSX1dPTF9JTlRfRU5cdFx0QklUKDMpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjc0OiNkZWZpbmUgTUlJX0RQODM4NjdfTUlDUl9YR01JSV9FUlJfSU5UX0VOXHRCSVQoMilcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NzU6I2RlZmluZSBNSUlfRFA4Mzg2N19NSUNSX1BPTF9DSE5HX0lOVF9FTlx0QklUKDEpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjc2OiNkZWZpbmUgTUlJX0RQODM4NjdfTUlDUl9KQUJCRVJfSU5UX0VOXHRcdEJJVCgwKVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy03Ny1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNzgtLyogUkdNSUlDVEwgYml0cyAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo3OTojZGVmaW5lIERQODM4NjdfUkdNSUlfRU5cdFx0XHRCSVQoNylcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6ODA6I2RlZmluZSBEUDgzODY3X1JHTUlJX1RYX0NMS19ERUxBWV9FTlx0XHRCSVQoMSlcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6ODE6I2RlZmluZSBEUDgzODY3X1JHTUlJX1JYX0NMS19ERUxBWV9FTlx0XHRCSVQoMClcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtODItXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTgzLS8qIFNHTUlJQ1RMIGJpdHMgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6ODQ6I2RlZmluZSBEUDgzODY3X1NHTUlJX1RZUEVcdFx0QklUKDE0KVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy04NS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtODYtLyogUlhGQ0ZHIGJpdHMqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo4NzojZGVmaW5lIERQODM4NjdfV09MX01BR0lDX0VOXHRcdEJJVCgwKVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo4ODojZGVmaW5lIERQODM4NjdfV09MX0JDQVNUX0VOXHRcdEJJVCgyKVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo4OTojZGVmaW5lIERQODM4NjdfV09MX1VDQVNUX0VOXHRcdEJJVCg0KVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo5MDojZGVmaW5lIERQODM4NjdfV09MX1NFQ19FTlx0XHRCSVQoNSlcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6OTE6I2RlZmluZSBEUDgzODY3X1dPTF9FTkhfTUFDXHRcdEJJVCg3KVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy05Mi1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtOTMtLyogU1RSQVBfU1RTMSBiaXRzICovXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjk0OiNkZWZpbmUgRFA4Mzg2N19TVFJBUF9TVFMxX1JFU0VSVkVEXHRcdEJJVCgxMSlcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtOTUtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTk2LS8qIFNUUkFQX1NUUzIgYml0cyAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo5NzojZGVmaW5lIERQODM4NjdfU1RSQVBfU1RTMl9TVFJBUF9GTERcdFx0QklUKDEwKVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy05OC1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtOTktLyogUEhZIENUUkwgYml0cyAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMDA6I2RlZmluZSBEUDgzODY3X1BIWUNSX1RYX0ZJRk9fREVQVEhfU0hJRlRcdDE0XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjEwMTojZGVmaW5lIERQODM4NjdfUEhZQ1JfUlhfRklGT19ERVBUSF9TSElGVFx0MTJcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTAyOiNkZWZpbmUgRFA4Mzg2N19QSFlDUl9GSUZPX0RFUFRIX01BWFx0XHQweDAzXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjEwMzojZGVmaW5lIERQODM4NjdfUEhZQ1JfVFhfRklGT19ERVBUSF9NQVNLXHRHRU5NQVNLKDE1LCAxNClcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTA0OiNkZWZpbmUgRFA4Mzg2N19QSFlDUl9SWF9GSUZPX0RFUFRIX01BU0tcdEdFTk1BU0soMTMsIDEyKVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMDU6I2RlZmluZSBEUDgzODY3X1BIWUNSX1NHTUlJX0VOXHRcdFx0QklUKDExKVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMDY6I2RlZmluZSBEUDgzODY3X1BIWUNSX0ZPUkNFX0xJTktfR09PRFx0XHRCSVQoMTApXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjEwNzojZGVmaW5lIERQODM4NjdfUEhZQ1JfTURJWF9NQVNLXHRcdFx0R0VOTUFTSyg2LCA1KVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMDg6I2RlZmluZSBEUDgzODY3X1BIWUNSX01ESVhfTURJXHRcdFx0KDB4MCBcdTAwM2NcdTAwM2MgNSlcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTA5OiNkZWZpbmUgRFA4Mzg2N19QSFlDUl9NRElYX01ESVhcdFx0XHQoMHgxIFx1MDAzY1x1MDAzYyA1KVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMTA6I2RlZmluZSBEUDgzODY3X1BIWUNSX01ESVhfQVVUT1x0XHRcdCgweDMgXHUwMDNjXHUwMDNjIDUpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTExMS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMTEyLS8qIFJHTUlJRENUTCBiaXRzICovXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjExMzojZGVmaW5lIERQODM4NjdfUkdNSUlfVFhfQ0xLX0RFTEFZX01BWFx0XHQweGZcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTE0OiNkZWZpbmUgRFA4Mzg2N19SR01JSV9UWF9DTEtfREVMQVlfU0hJRlRcdDRcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTE1OiNkZWZpbmUgRFA4Mzg2N19SR01JSV9SWF9DTEtfREVMQVlfTUFYXHRcdDB4ZlxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMTY6I2RlZmluZSBEUDgzODY3X1JHTUlJX1JYX0NMS19ERUxBWV9TSElGVFx0MFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xMTctXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTExOC0vKiBJT19NVVhfQ0ZHIGJpdHMgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTE5OiNkZWZpbmUgRFA4Mzg2N19JT19NVVhfQ0ZHX0lPX0lNUEVEQU5DRV9NQVNLXHQweDFmXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjEyMDojZGVmaW5lIERQODM4NjdfSU9fTVVYX0NGR19JT19JTVBFREFOQ0VfTUFYXHQweDBcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTIxOiNkZWZpbmUgRFA4Mzg2N19JT19NVVhfQ0ZHX0lPX0lNUEVEQU5DRV9NSU5cdDB4MWZcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTIyOiNkZWZpbmUgRFA4Mzg2N19JT19NVVhfQ0ZHX0NMS19PX0RJU0FCTEVcdEJJVCg2KVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMjM6I2RlZmluZSBEUDgzODY3X0lPX01VWF9DRkdfQ0xLX09fU0VMX01BU0tcdCgweDFmIFx1MDAzY1x1MDAzYyA4KVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMjQ6I2RlZmluZSBEUDgzODY3X0lPX01VWF9DRkdfQ0xLX09fU0VMX1NISUZUXHQ4XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTEyNS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMTI2LS8qIFBIWSBTVFMgYml0cyAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMjc6I2RlZmluZSBEUDgzODY3X1BIWVNUU18xMDAwXHRcdFx0QklUKDE1KVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMjg6I2RlZmluZSBEUDgzODY3X1BIWVNUU18xMDBcdFx0XHRCSVQoMTQpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjEyOTojZGVmaW5lIERQODM4NjdfUEhZU1RTX0RVUExFWFx0XHRcdEJJVCgxMylcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTMwOiNkZWZpbmUgRFA4Mzg2N19QSFlTVFNfTElOS1x0XHRcdEJJVCgxMClcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTMxOiNkZWZpbmUgRFA4Mzg2N19QSFlTVFNfTURJWF9DRFx0XHRcdEJJVCg5KVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMzI6I2RlZmluZSBEUDgzODY3X1BIWVNUU19NRElYX0FCXHRcdFx0QklUKDgpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjEzMzojZGVmaW5lIERQODM4NjdfUEhZU1RTX01ESVhfTUFTS1x0XHQoRFA4Mzg2N19QSFlTVFNfTURJWF9BQiB8IFxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjEzNDpcdFx0XHRcdFx0XHREUDgzODY3X1BIWVNUU19NRElYX0NEKVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xMzUtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTEzNi0vKiBDRkcyIGJpdHMgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTM3OiNkZWZpbmUgRFA4Mzg2N19ET1dOU0hJRlRfRU5cdFx0KEJJVCg4KSB8IEJJVCg5KSlcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTM4OiNkZWZpbmUgRFA4Mzg2N19ET1dOU0hJRlRfQVRURU1QVF9NQVNLXHQoQklUKDEwKSB8IEJJVCgxMSkpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjEzOTojZGVmaW5lIERQODM4NjdfRE9XTlNISUZUXzFfQ09VTlRfVkFMXHQwXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE0MDojZGVmaW5lIERQODM4NjdfRE9XTlNISUZUXzJfQ09VTlRfVkFMXHQxXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE0MTojZGVmaW5lIERQODM4NjdfRE9XTlNISUZUXzRfQ09VTlRfVkFMXHQyXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE0MjojZGVmaW5lIERQODM4NjdfRE9XTlNISUZUXzhfQ09VTlRfVkFMXHQzXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE0MzojZGVmaW5lIERQODM4NjdfRE9XTlNISUZUXzFfQ09VTlRcdDFcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTQ0OiNkZWZpbmUgRFA4Mzg2N19ET1dOU0hJRlRfMl9DT1VOVFx0MlxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxNDU6I2RlZmluZSBEUDgzODY3X0RPV05TSElGVF80X0NPVU5UXHQ0XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE0NjojZGVmaW5lIERQODM4NjdfRE9XTlNISUZUXzhfQ09VTlRcdDhcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTQ3OiNkZWZpbmUgRFA4Mzg2N19TR01JSV9BVVRPTkVHX0VOXHRCSVQoNylcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMTQ4LVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xNDktLyogQ0ZHMyBiaXRzICovXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE1MDojZGVmaW5lIERQODM4NjdfQ0ZHM19JTlRfT0VcdFx0XHRCSVQoNylcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTUxOiNkZWZpbmUgRFA4Mzg2N19DRkczX1JPQlVTVF9BVVRPX01ESVhcdFx0QklUKDkpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTE1Mi1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMTUzLS8qIENGRzQgYml0cyAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxNTQ6I2RlZmluZSBEUDgzODY3X0NGRzRfUE9SVF9NSVJST1JfRU4gICAgICAgICAgICAgIEJJVCgwKVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xNTUtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTE1Ni0vKiBGTERfVEhSX0NGRyAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxNTc6I2RlZmluZSBEUDgzODY3X0ZMRF9USFJfQ0ZHX0VORVJHWV9MT1NUX1RIUl9NQVNLXHQweDdcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMTU4LVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxNTk6I2RlZmluZSBEUDgzODY3X0xFRF9DT1VOVFx0NFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xNjAtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTE2MS0vKiBMRURfRFJWIGJpdHMgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTYyOiNkZWZpbmUgRFA4Mzg2N19MRURfRFJWX0VOKHgpXHRCSVQoKHgpICogNClcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTYzOiNkZWZpbmUgRFA4Mzg2N19MRURfRFJWX1ZBTCh4KVx0QklUKCh4KSAqIDQgJiM0MzsgMSlcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTY0OiNkZWZpbmUgRFA4Mzg2N19MRURfUE9MQVJJVFkoeClcdEJJVCgoeCkgKiA0ICYjNDM7IDIpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTE2NS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTY2OiNkZWZpbmUgRFA4Mzg2N19MRURfRk4oaWR4LCB2YWwpXHQoKCh2YWwpIFx1MDAyNiAweGYpIFx1MDAzY1x1MDAzYyAoKGlkeCkgKiA0KSlcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTY3OiNkZWZpbmUgRFA4Mzg2N19MRURfRk5fTUFTSyhpZHgpXHQoMHhmIFx1MDAzY1x1MDAzYyAoKGlkeCkgKiA0KSlcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTY4OiNkZWZpbmUgRFA4Mzg2N19MRURfRk5fUlhfRVJSXHRcdDB4ZSAvKiBSZWNlaXZlIEVycm9yICovXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE2OTojZGVmaW5lIERQODM4NjdfTEVEX0ZOX1JYX1RYX0VSUlx0MHhkIC8qIFJlY2VpdmUgRXJyb3Igb3IgVHJhbnNtaXQgRXJyb3IgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTcwOiNkZWZpbmUgRFA4Mzg2N19MRURfRk5fTElOS19SWF9UWFx0MHhiIC8qIExpbmsgZXN0YWJsaXNoZWQsIGJsaW5rIGZvciByeCBvciB0eCBhY3Rpdml0eSAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxNzE6I2RlZmluZSBEUDgzODY3X0xFRF9GTl9GVUxMX0RVUExFWFx0MHhhIC8qIEZ1bGwgZHVwbGV4ICovXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE3MjojZGVmaW5lIERQODM4NjdfTEVEX0ZOX0xJTktfMTAwXzEwMDBfQlRcdDB4OSAvKiAxMDAvMTAwMEJUIGxpbmsgZXN0YWJsaXNoZWQgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTczOiNkZWZpbmUgRFA4Mzg2N19MRURfRk5fTElOS18xMF8xMDBfQlRcdDB4OCAvKiAxMC8xMDBCVCBsaW5rIGVzdGFibGlzaGVkICovXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE3NDojZGVmaW5lIERQODM4NjdfTEVEX0ZOX0xJTktfMTBfQlRcdDB4NyAvKiAxMEJUIGxpbmsgZXN0YWJsaXNoZWQgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTc1OiNkZWZpbmUgRFA4Mzg2N19MRURfRk5fTElOS18xMDBfQlRYXHQweDYgLyogMTAwIEJUWCBsaW5rIGVzdGFibGlzaGVkICovXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE3NjojZGVmaW5lIERQODM4NjdfTEVEX0ZOX0xJTktfMTAwMF9CVFx0MHg1IC8qIDEwMDAgQlQgbGluayBlc3RhYmxpc2hlZCAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxNzc6I2RlZmluZSBEUDgzODY3X0xFRF9GTl9DT0xMSVNJT05cdDB4NCAvKiBDb2xsaXNpb24gZGV0ZWN0ZWQgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTc4OiNkZWZpbmUgRFA4Mzg2N19MRURfRk5fUlhcdFx0MHgzIC8qIFJlY2VpdmUgYWN0aXZpdHkgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTc5OiNkZWZpbmUgRFA4Mzg2N19MRURfRk5fVFhcdFx0MHgyIC8qIFRyYW5zbWl0IGFjdGl2aXR5ICovXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE4MDojZGVmaW5lIERQODM4NjdfTEVEX0ZOX1JYX1RYXHRcdDB4MSAvKiBSZWNlaXZlIG9yIFRyYW5zbWl0IGFjdGl2aXR5ICovXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE4MTojZGVmaW5lIERQODM4NjdfTEVEX0ZOX0xJTktcdFx0MHgwIC8qIExpbmsgZXN0YWJsaXNoZWQgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMTgyLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYz0xODM9ZW51bSB7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE4NDpcdERQODM4NjdfUE9SVF9NSVJST0lOR19LRUVQLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxODU6XHREUDgzODY3X1BPUlRfTUlSUk9JTkdfRU4sXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE4NjpcdERQODM4NjdfUE9SVF9NSVJST0lOR19ESVMsXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTE4Ny19O1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM9MjEyPXN0YXRpYyBpbnQgZHA4Mzg2N19hY2tfaW50ZXJydXB0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTIxMy17XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjIxNDpcdGludCBlcnIgPSBwaHlfcmVhZChwaHlkZXYsIE1JSV9EUDgzODY3X0lTUik7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTIxNS1cbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jPTIyMj1zdGF0aWMgaW50IGRwODM4Njdfc2V0X3dvbChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjI4LVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyMjk6XHR2YWxfcnhjZmcgPSBwaHlfcmVhZF9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfUlhGQ0ZHKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjMwOlx0dmFsX21pY3IgPSBwaHlfcmVhZChwaHlkZXYsIE1JSV9EUDgzODY3X01JQ1IpO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yMzEtXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yMzMtXHRcdFx0ICAgIFdBS0VfQkNBU1QpKSB7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjIzNDpcdFx0dmFsX3J4Y2ZnIHw9IERQODM4NjdfV09MX0VOSF9NQUM7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjIzNTpcdFx0dmFsX21pY3IgfD0gTUlJX0RQODM4NjdfTUlDUl9XT0xfSU5UX0VOO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yMzYtXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yNDItXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI0MzpcdFx0XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JYRlBNRDEsXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI0NC1cdFx0XHRcdCAgICAgIChtYWNbMV0gXHUwMDNjXHUwMDNjIDggfCBtYWNbMF0pKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjQ1Olx0XHRcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfUlhGUE1EMixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjQ2LVx0XHRcdFx0ICAgICAgKG1hY1szXSBcdTAwM2NcdTAwM2MgOCB8IG1hY1syXSkpO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyNDc6XHRcdFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19SWEZQTUQzLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yNDgtXHRcdFx0XHQgICAgICAobWFjWzVdIFx1MDAzY1x1MDAzYyA4IHwgbWFjWzRdKSk7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI0OS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjUwOlx0XHRcdHZhbF9yeGNmZyB8PSBEUDgzODY3X1dPTF9NQUdJQ19FTjtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjUxLVx0XHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyNTI6XHRcdFx0dmFsX3J4Y2ZnIFx1MDAyNj0gfkRQODM4NjdfV09MX01BR0lDX0VOO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yNTMtXHRcdH1cbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI1NS1cdFx0aWYgKHdvbC1cdTAwM2V3b2xvcHRzIFx1MDAyNiBXQUtFX01BR0lDU0VDVVJFKSB7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI1NjpcdFx0XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JYRlNPUDEsXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI1Ny1cdFx0XHRcdCAgICAgICh3b2wtXHUwMDNlc29wYXNzWzFdIFx1MDAzY1x1MDAzYyA4KSB8IHdvbC1cdTAwM2Vzb3Bhc3NbMF0pO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyNTg6XHRcdFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19SWEZTT1AyLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yNTktXHRcdFx0XHQgICAgICAod29sLVx1MDAzZXNvcGFzc1szXSBcdTAwM2NcdTAwM2MgOCkgfCB3b2wtXHUwMDNlc29wYXNzWzJdKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjYwOlx0XHRcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfUlhGU09QMyxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjYxLVx0XHRcdFx0ICAgICAgKHdvbC1cdTAwM2Vzb3Bhc3NbNV0gXHUwMDNjXHUwMDNjIDgpIHwgd29sLVx1MDAzZXNvcGFzc1s0XSk7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI2Mi1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjYzOlx0XHRcdHZhbF9yeGNmZyB8PSBEUDgzODY3X1dPTF9TRUNfRU47XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI2NC1cdFx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjY1Olx0XHRcdHZhbF9yeGNmZyBcdTAwMjY9IH5EUDgzODY3X1dPTF9TRUNfRU47XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI2Ni1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjY4LVx0XHRpZiAod29sLVx1MDAzZXdvbG9wdHMgXHUwMDI2IFdBS0VfVUNBU1QpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI2OTpcdFx0XHR2YWxfcnhjZmcgfD0gRFA4Mzg2N19XT0xfVUNBU1RfRU47XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI3MC1cdFx0ZWxzZVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyNzE6XHRcdFx0dmFsX3J4Y2ZnIFx1MDAyNj0gfkRQODM4NjdfV09MX1VDQVNUX0VOO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yNzItXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI3My1cdFx0aWYgKHdvbC1cdTAwM2V3b2xvcHRzIFx1MDAyNiBXQUtFX0JDQVNUKVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyNzQ6XHRcdFx0dmFsX3J4Y2ZnIHw9IERQODM4NjdfV09MX0JDQVNUX0VOO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yNzUtXHRcdGVsc2VcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6Mjc2Olx0XHRcdHZhbF9yeGNmZyBcdTAwMjY9IH5EUDgzODY3X1dPTF9CQ0FTVF9FTjtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjc3LVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6Mjc4Olx0XHR2YWxfcnhjZmcgXHUwMDI2PSB+RFA4Mzg2N19XT0xfRU5IX01BQztcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6Mjc5Olx0XHR2YWxfbWljciBcdTAwMjY9IH5NSUlfRFA4Mzg2N19NSUNSX1dPTF9JTlRfRU47XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI4MC1cdH1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjgxLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyODI6XHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JYRkNGRywgdmFsX3J4Y2ZnKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjgzOlx0cGh5X3dyaXRlKHBoeWRldiwgTUlJX0RQODM4NjdfTUlDUiwgdmFsX21pY3IpO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yODQtXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYz0yODg9c3RhdGljIHZvaWQgZHA4Mzg2N19nZXRfd29sKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yOTYtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI5NzpcdHZhbHVlID0gcGh5X3JlYWRfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JYRkNGRyk7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI5OC1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6Mjk5Olx0aWYgKHZhbHVlIFx1MDAyNiBEUDgzODY3X1dPTF9VQ0FTVF9FTilcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMzAwLVx0XHR3b2wtXHUwMDNld29sb3B0cyB8PSBXQUtFX1VDQVNUO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zMDEtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjMwMjpcdGlmICh2YWx1ZSBcdTAwMjYgRFA4Mzg2N19XT0xfQkNBU1RfRU4pXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTMwMy1cdFx0d29sLVx1MDAzZXdvbG9wdHMgfD0gV0FLRV9CQ0FTVDtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMzA0LVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozMDU6XHRpZiAodmFsdWUgXHUwMDI2IERQODM4NjdfV09MX01BR0lDX0VOKVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zMDYtXHRcdHdvbC1cdTAwM2V3b2xvcHRzIHw9IFdBS0VfTUFHSUM7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTMwNy1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MzA4Olx0aWYgKHZhbHVlIFx1MDAyNiBEUDgzODY3X1dPTF9TRUNfRU4pIHtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MzA5Olx0XHRzb3Bhc3NfdmFsID0gcGh5X3JlYWRfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozMTA6XHRcdFx0XHRcdCAgRFA4Mzg2N19SWEZTT1AxKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMzExLVx0XHR3b2wtXHUwMDNlc29wYXNzWzBdID0gKHNvcGFzc192YWwgXHUwMDI2IDB4ZmYpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMzEzLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozMTQ6XHRcdHNvcGFzc192YWwgPSBwaHlfcmVhZF9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjMxNTpcdFx0XHRcdFx0ICBEUDgzODY3X1JYRlNPUDIpO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zMTYtXHRcdHdvbC1cdTAwM2Vzb3Bhc3NbMl0gPSAoc29wYXNzX3ZhbCBcdTAwMjYgMHhmZik7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zMTgtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjMxOTpcdFx0c29wYXNzX3ZhbCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MzIwOlx0XHRcdFx0XHQgIERQODM4NjdfUlhGU09QMyk7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTMyMS1cdFx0d29sLVx1MDAzZXNvcGFzc1s0XSA9IChzb3Bhc3NfdmFsIFx1MDAyNiAweGZmKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTMyNi1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MzI3Olx0aWYgKCEodmFsdWUgXHUwMDI2IERQODM4NjdfV09MX0VOSF9NQUMpKVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zMjgtXHRcdHdvbC1cdTAwM2V3b2xvcHRzID0gMDtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jPTMzMT1zdGF0aWMgaW50IGRwODM4NjdfY29uZmlnX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTMzOS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MzQwOlx0XHRtaWNyX3N0YXR1cyA9IHBoeV9yZWFkKHBoeWRldiwgTUlJX0RQODM4NjdfTUlDUik7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTM0MS1cdFx0aWYgKG1pY3Jfc3RhdHVzIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMzQ0LVx0XHRtaWNyX3N0YXR1cyB8PVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozNDU6XHRcdFx0KE1JSV9EUDgzODY3X01JQ1JfQU5fRVJSX0lOVF9FTiB8XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjM0NjpcdFx0XHRNSUlfRFA4Mzg2N19NSUNSX1NQRUVEX0NITkdfSU5UX0VOIHxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MzQ3Olx0XHRcdE1JSV9EUDgzODY3X01JQ1JfQVVUT05FR19DT01QX0lOVF9FTiB8XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjM0ODpcdFx0XHRNSUlfRFA4Mzg2N19NSUNSX0xJTktfU1RTX0NITkdfSU5UX0VOIHxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MzQ5Olx0XHRcdE1JSV9EUDgzODY3X01JQ1JfRFVQX01PREVfQ0hOR19JTlRfRU4gfFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozNTA6XHRcdFx0TUlJX0RQODM4NjdfTUlDUl9TTEVFUF9NT0RFX0NITkdfSU5UX0VOKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMzUxLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozNTI6XHRcdGVyciA9IHBoeV93cml0ZShwaHlkZXYsIE1JSV9EUDgzODY3X01JQ1IsIG1pY3Jfc3RhdHVzKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMzUzLVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMzU0LVx0XHRtaWNyX3N0YXR1cyA9IDB4MDtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MzU1Olx0XHRlcnIgPSBwaHlfd3JpdGUocGh5ZGV2LCBNSUlfRFA4Mzg2N19NSUNSLCBtaWNyX3N0YXR1cyk7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTM1Ni1cdFx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jPTM2NT1zdGF0aWMgaXJxcmV0dXJuX3QgZHA4Mzg2N19oYW5kbGVfaW50ZXJydXB0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zNjgtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjM2OTpcdGlycV9zdGF0dXMgPSBwaHlfcmVhZChwaHlkZXYsIE1JSV9EUDgzODY3X0lTUik7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTM3MC1cdGlmIChpcnFfc3RhdHVzIFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zNzQtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjM3NTpcdGlycV9lbmFibGVkID0gcGh5X3JlYWQocGh5ZGV2LCBNSUlfRFA4Mzg2N19NSUNSKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMzc2LVx0aWYgKGlycV9lbmFibGVkIFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYz0zODk9c3RhdGljIGludCBkcDgzODY3X3JlYWRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTM5MC17XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjM5MTpcdGludCBzdGF0dXMgPSBwaHlfcmVhZChwaHlkZXYsIE1JSV9EUDgzODY3X1BIWVNUUyk7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTM5Mi1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00MDAtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQwMTpcdGlmIChzdGF0dXMgXHUwMDI2IERQODM4NjdfUEhZU1RTX0RVUExFWClcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNDAyLVx0XHRwaHlkZXYtXHUwMDNlZHVwbGV4ID0gRFVQTEVYX0ZVTEw7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00MDUtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQwNjpcdGlmIChzdGF0dXMgXHUwMDI2IERQODM4NjdfUEhZU1RTXzEwMDApXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQwNy1cdFx0cGh5ZGV2LVx1MDAzZXNwZWVkID0gU1BFRURfMTAwMDtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDA4Olx0ZWxzZSBpZiAoc3RhdHVzIFx1MDAyNiBEUDgzODY3X1BIWVNUU18xMDApXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQwOS1cdFx0cGh5ZGV2LVx1MDAzZXNwZWVkID0gU1BFRURfMTAwO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNDEyLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0MTM6XHRpZiAoIShzdGF0dXMgXHUwMDI2IERQODM4NjdfUEhZU1RTX0xJTkspKSB7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQxNC1cdFx0cGh5ZGV2LVx1MDAzZW1kaXggPSBFVEhfVFBfTURJX0lOVkFMSUQ7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQxNS1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQxNjpcdFx0c3dpdGNoIChzdGF0dXMgXHUwMDI2IERQODM4NjdfUEhZU1RTX01ESVhfTUFTSykge1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00MTctXHRcdGNhc2UgMDpcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQxOS1cdFx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDIwOlx0XHRjYXNlIERQODM4NjdfUEhZU1RTX01ESVhfTUFTSzpcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNDIxLVx0XHRcdHBoeWRldi1cdTAwM2VtZGl4ID0gRVRIX1RQX01ESV9YO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM9NDMyPXN0YXRpYyBpbnQgZHA4Mzg2N19nZXRfZG93bnNoaWZ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4ICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNDM1LVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0MzY6XHR2YWwgPSBwaHlfcmVhZChwaHlkZXYsIERQODM4NjdfQ0ZHMik7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQzNy1cdGlmICh2YWwgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00MzktXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQ0MDpcdGVuYWJsZSA9IEZJRUxEX0dFVChEUDgzODY3X0RPV05TSElGVF9FTiwgdmFsKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDQxOlx0Y250ID0gRklFTERfR0VUKERQODM4NjdfRE9XTlNISUZUX0FUVEVNUFRfTUFTSywgdmFsKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNDQyLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00NDMtXHRzd2l0Y2ggKGNudCkge1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0NDQ6XHRjYXNlIERQODM4NjdfRE9XTlNISUZUXzFfQ09VTlRfVkFMOlxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0NDU6XHRcdGNvdW50ID0gRFA4Mzg2N19ET1dOU0hJRlRfMV9DT1VOVDtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNDQ2LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDQ3Olx0Y2FzZSBEUDgzODY3X0RPV05TSElGVF8yX0NPVU5UX1ZBTDpcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDQ4Olx0XHRjb3VudCA9IERQODM4NjdfRE9XTlNISUZUXzJfQ09VTlQ7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQ0OS1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQ1MDpcdGNhc2UgRFA4Mzg2N19ET1dOU0hJRlRfNF9DT1VOVF9WQUw6XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQ1MTpcdFx0Y291bnQgPSBEUDgzODY3X0RPV05TSElGVF80X0NPVU5UO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00NTItXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0NTM6XHRjYXNlIERQODM4NjdfRE9XTlNISUZUXzhfQ09VTlRfVkFMOlxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0NTQ6XHRcdGNvdW50ID0gRFA4Mzg2N19ET1dOU0hJRlRfOF9DT1VOVDtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNDU1LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jPTQ2NT1zdGF0aWMgaW50IGRwODM4Njdfc2V0X2Rvd25zaGlmdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBjbnQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00NjgtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQ2OTpcdGlmIChjbnQgXHUwMDNlIERQODM4NjdfRE9XTlNISUZUXzhfQ09VTlQpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQ3MC1cdFx0cmV0dXJuIC1FMkJJRztcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQ3Mi1cdGlmICghY250KVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0NzM6XHRcdHJldHVybiBwaHlfY2xlYXJfYml0cyhwaHlkZXYsIERQODM4NjdfQ0ZHMixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDc0Olx0XHRcdFx0ICAgICAgRFA4Mzg2N19ET1dOU0hJRlRfRU4pO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00NzUtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQ3Ni1cdHN3aXRjaCAoY250KSB7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQ3NzpcdGNhc2UgRFA4Mzg2N19ET1dOU0hJRlRfMV9DT1VOVDpcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDc4Olx0XHRjb3VudCA9IERQODM4NjdfRE9XTlNISUZUXzFfQ09VTlRfVkFMO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00NzktXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0ODA6XHRjYXNlIERQODM4NjdfRE9XTlNISUZUXzJfQ09VTlQ6XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQ4MTpcdFx0Y291bnQgPSBEUDgzODY3X0RPV05TSElGVF8yX0NPVU5UX1ZBTDtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNDgyLVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDgzOlx0Y2FzZSBEUDgzODY3X0RPV05TSElGVF80X0NPVU5UOlxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0ODQ6XHRcdGNvdW50ID0gRFA4Mzg2N19ET1dOU0hJRlRfNF9DT1VOVF9WQUw7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQ4NS1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQ4NjpcdGNhc2UgRFA4Mzg2N19ET1dOU0hJRlRfOF9DT1VOVDpcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDg3Olx0XHRjb3VudCA9IERQODM4NjdfRE9XTlNISUZUXzhfQ09VTlRfVkFMO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00ODgtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNDk0LVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0OTU6XHR2YWwgPSBEUDgzODY3X0RPV05TSElGVF9FTjtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDk2Olx0dmFsIHw9IEZJRUxEX1BSRVAoRFA4Mzg2N19ET1dOU0hJRlRfQVRURU1QVF9NQVNLLCBjb3VudCk7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQ5Ny1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDk4Olx0cmV0dXJuIHBoeV9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0NGRzIsXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQ5OTpcdFx0XHQgIERQODM4NjdfRE9XTlNISUZUX0VOIHwgRFA4Mzg2N19ET1dOU0hJRlRfQVRURU1QVF9NQVNLLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy01MDAtXHRcdFx0ICB2YWwpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM9NTI1PXN0YXRpYyBpbnQgZHA4Mzg2N19jb25maWdfcG9ydF9taXJyb3Jpbmcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTUyOC1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NTI5Olx0aWYgKGRwODM4NjctXHUwMDNlcG9ydF9taXJyb3JpbmcgPT0gRFA4Mzg2N19QT1JUX01JUlJPSU5HX0VOKVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo1MzA6XHRcdHBoeV9zZXRfYml0c19tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfQ0ZHNCxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NTMxOlx0XHRcdFx0IERQODM4NjdfQ0ZHNF9QT1JUX01JUlJPUl9FTik7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTUzMi1cdGVsc2VcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NTMzOlx0XHRwaHlfY2xlYXJfYml0c19tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfQ0ZHNCxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NTM0Olx0XHRcdFx0ICAgRFA4Mzg2N19DRkc0X1BPUlRfTUlSUk9SX0VOKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNTM1LVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYz01Mzk9c3RhdGljIGludCBkcDgzODY3X29mX2luaXRfaW9faW1wZWRhbmNlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy01NTYtXHRcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wob2Zfbm9kZSwgXCYjMzQ7dGksbWF4LW91dHB1dC1pbXBlZGFuY2VcJiMzNDspKVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo1NTc6XHRcdFx0ZHA4Mzg2Ny1cdTAwM2Vpb19pbXBlZGFuY2UgPSBEUDgzODY3X0lPX01VWF9DRkdfSU9fSU1QRURBTkNFX01BWDtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNTU4LVx0XHRlbHNlIGlmIChvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wob2Zfbm9kZSwgXCYjMzQ7dGksbWluLW91dHB1dC1pbXBlZGFuY2VcJiMzNDspKVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo1NTk6XHRcdFx0ZHA4Mzg2Ny1cdTAwM2Vpb19pbXBlZGFuY2UgPSBEUDgzODY3X0lPX01VWF9DRkdfSU9fSU1QRURBTkNFX01JTjtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNTYwLVx0XHRlbHNlXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy01NzQtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjU3NTpcdGlmICgodmFsIFx1MDAyNiBEUDgzODY3X0lPX01VWF9DRkdfSU9fSU1QRURBTkNFX01BU0spICE9IHZhbCkge1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy01NzYtXHRcdHBoeWRldl9lcnIocGh5ZGV2LCBcJiMzNDtudm1lbSBjZWxsICYjMzk7aW9faW1wZWRhbmNlX2N0cmwmIzM5OyBjb250ZW50cyBvdXQgb2YgcmFuZ2VcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM9NTg0PXN0YXRpYyBpbnQgZHA4Mzg2N19vZl9pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy01OTktXHRcdGRwODM4NjctXHUwMDNlc2V0X2Nsa19vdXRwdXQgPSB0cnVlO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo2MDA6XHRcdC8qIFZhbGlkIHZhbHVlcyBhcmUgMCB0byBEUDgzODY3X0NMS19PX1NFTF9SRUZfQ0xLIG9yXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjYwMTpcdFx0ICogRFA4Mzg2N19DTEtfT19TRUxfT0ZGLlxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02MDItXHRcdCAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo2MDM6XHRcdGlmIChkcDgzODY3LVx1MDAzZWNsa19vdXRwdXRfc2VsIFx1MDAzZSBEUDgzODY3X0NMS19PX1NFTF9SRUZfQ0xLIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo2MDQ6XHRcdCAgICBkcDgzODY3LVx1MDAzZWNsa19vdXRwdXRfc2VsICE9IERQODM4NjdfQ0xLX09fU0VMX09GRikge1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02MDUtXHRcdFx0cGh5ZGV2X2VycihwaHlkZXYsIFwmIzM0O3RpLGNsay1vdXRwdXQtc2VsIHZhbHVlICV1IG91dCBvZiByYW5nZVxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTYyMC1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NjIxOlx0ZHA4Mzg2Ny1cdTAwM2VyeF9pZF9kZWxheSA9IERQODM4NjdfUkdNSUlEQ1RMXzJfMDBfTlM7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTYyMi1cdHJldCA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKG9mX25vZGUsIFwmIzM0O3RpLHJ4LWludGVybmFsLWRlbGF5XCYjMzQ7LFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02MjMtXHRcdFx0XHQgICBcdTAwMjZkcDgzODY3LVx1MDAzZXJ4X2lkX2RlbGF5KTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NjI0Olx0aWYgKCFyZXQgXHUwMDI2XHUwMDI2IGRwODM4NjctXHUwMDNlcnhfaWRfZGVsYXkgXHUwMDNlIERQODM4NjdfUkdNSUlfUlhfQ0xLX0RFTEFZX01BWCkge1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02MjUtXHRcdHBoeWRldl9lcnIocGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNjMwLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo2MzE6XHRkcDgzODY3LVx1MDAzZXR4X2lkX2RlbGF5ID0gRFA4Mzg2N19SR01JSURDVExfMl8wMF9OUztcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNjMyLVx0cmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzIob2Zfbm9kZSwgXCYjMzQ7dGksdHgtaW50ZXJuYWwtZGVsYXlcJiMzNDssXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTYzMy1cdFx0XHRcdCAgIFx1MDAyNmRwODM4NjctXHUwMDNldHhfaWRfZGVsYXkpO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo2MzQ6XHRpZiAoIXJldCBcdTAwMjZcdTAwMjYgZHA4Mzg2Ny1cdTAwM2V0eF9pZF9kZWxheSBcdTAwM2UgRFA4Mzg2N19SR01JSV9UWF9DTEtfREVMQVlfTUFYKSB7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTYzNS1cdFx0cGh5ZGV2X2VycihwaHlkZXYsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02NDEtXHRpZiAob2ZfcHJvcGVydHlfcmVhZF9ib29sKG9mX25vZGUsIFwmIzM0O2VuZXQtcGh5LWxhbmUtc3dhcFwmIzM0OykpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjY0MjpcdFx0ZHA4Mzg2Ny1cdTAwM2Vwb3J0X21pcnJvcmluZyA9IERQODM4NjdfUE9SVF9NSVJST0lOR19FTjtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNjQzLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02NDQtXHRpZiAob2ZfcHJvcGVydHlfcmVhZF9ib29sKG9mX25vZGUsIFwmIzM0O2VuZXQtcGh5LWxhbmUtbm8tc3dhcFwmIzM0OykpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjY0NTpcdFx0ZHA4Mzg2Ny1cdTAwM2Vwb3J0X21pcnJvcmluZyA9IERQODM4NjdfUE9SVF9NSVJST0lOR19ESVM7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTY0Ni1cbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTY1My1cdFx0XHRkcDgzODY3LVx1MDAzZXR4X2ZpZm9fZGVwdGggPVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo2NTQ6XHRcdFx0XHRcdERQODM4NjdfUEhZQ1JfRklGT19ERVBUSF80X0JfTklCO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02NTUtXHR9XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTY1Ni1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NjU3Olx0aWYgKGRwODM4NjctXHUwMDNldHhfZmlmb19kZXB0aCBcdTAwM2UgRFA4Mzg2N19QSFlDUl9GSUZPX0RFUFRIX01BWCkge1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02NTgtXHRcdHBoeWRldl9lcnIocGh5ZGV2LCBcJiMzNDt0eC1maWZvLWRlcHRoIHZhbHVlICV1IG91dCBvZiByYW5nZVxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTY2NS1cdGlmIChyZXQpXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjY2NjpcdFx0ZHA4Mzg2Ny1cdTAwM2VyeF9maWZvX2RlcHRoID0gRFA4Mzg2N19QSFlDUl9GSUZPX0RFUFRIXzRfQl9OSUI7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTY2Ny1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NjY4Olx0aWYgKGRwODM4NjctXHUwMDNlcnhfZmlmb19kZXB0aCBcdTAwM2UgRFA4Mzg2N19QSFlDUl9GSUZPX0RFUFRIX01BWCkge1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02NjktXHRcdHBoeWRldl9lcnIocGh5ZGV2LCBcJiMzNDtyeC1maWZvLWRlcHRoIHZhbHVlICV1IG91dCBvZiByYW5nZVxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jPTY3Nz1zdGF0aWMgaW50IGRwODM4Njdfb2ZfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNjg2LVx0ICovXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjY4NzpcdGRlbGF5ID0gcGh5X3JlYWRfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JHTUlJRENUTCk7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjY4ODpcdGRwODM4NjctXHUwMDNlcnhfaWRfZGVsYXkgPSBkZWxheSBcdTAwMjYgRFA4Mzg2N19SR01JSV9SWF9DTEtfREVMQVlfTUFYO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo2ODk6XHRkcDgzODY3LVx1MDAzZXR4X2lkX2RlbGF5ID0gKGRlbGF5IFx1MDAzZVx1MDAzZSBEUDgzODY3X1JHTUlJX1RYX0NMS19ERUxBWV9TSElGVCkgXHUwMDI2XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjY5MDpcdFx0XHQgICAgICAgRFA4Mzg2N19SR01JSV9UWF9DTEtfREVMQVlfTUFYO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02OTEtXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02OTUtXHQgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6Njk2Olx0ZHA4Mzg2Ny1cdTAwM2Vpb19pbXBlZGFuY2UgPSBEUDgzODY3X0lPX01VWF9DRkdfSU9fSU1QRURBTkNFX01JTiAvIDI7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTY5Ny1cbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTcwMS1cdCAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo3MDI6XHRkcDgzODY3LVx1MDAzZXR4X2ZpZm9fZGVwdGggPSBEUDgzODY3X1BIWUNSX0ZJRk9fREVQVEhfNF9CX05JQjtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NzAzOlx0ZHA4Mzg2Ny1cdTAwM2VyeF9maWZvX2RlcHRoID0gRFA4Mzg2N19QSFlDUl9GSUZPX0RFUFRIXzRfQl9OSUI7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTcwNC1cbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jPTc1Nj1zdGF0aWMgaW50IF9fZHA4Mzg2N19sZWRfbW9kaWZ5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUzMiByZWcsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy03NjUtXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjc2NjpcdGlmIChyZWcgPT0gRFA4Mzg2N19MRURDUjEpIHtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNzY3LVx0XHRkcDgzODY3LVx1MDAzZWxlZGNyMSA9IChkcDgzODY3LVx1MDAzZWxlZGNyMSBcdTAwMjYgfm1hc2spIHwgKHZhbCBcdTAwMjYgbWFzayk7XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTc2OC1cdFx0ZHA4Mzg2Ny1cdTAwM2VsZWRjcjFfbWFzayB8PSBtYXNrO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo3Njk6XHR9IGVsc2UgaWYgKHJlZyA9PSBEUDgzODY3X0xFRENSMikge1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy03NzAtXHRcdGRwODM4NjctXHUwMDNlbGVkY3IyID0gKGRwODM4NjctXHUwMDNlbGVkY3IyIFx1MDAyNiB+bWFzaykgfCAodmFsIFx1MDAyNiBtYXNrKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jPTc4Mj1zdGF0aWMgaW50IGRwODM4NjdfbGVkX3Jlc3RvcmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTc4OC1cdGlmIChkcDgzODY3LVx1MDAzZWxlZGNyMV9tYXNrKVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo3ODk6XHRcdHJldCA9IHBoeV9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMSxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNzkwLVx0XHRcdFx0IGRwODM4NjctXHUwMDNlbGVkY3IxX21hc2ssIGRwODM4NjctXHUwMDNlbGVkY3IxKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNzkxLVx0aWYgKCFyZXQgXHUwMDI2XHUwMDI2IGRwODM4NjctXHUwMDNlbGVkY3IyX21hc2spXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjc5MjpcdFx0cmV0ID0gcGh5X21vZGlmeShwaHlkZXYsIERQODM4NjdfTEVEQ1IyLFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy03OTMtXHRcdFx0XHQgZHA4Mzg2Ny1cdTAwM2VsZWRjcjJfbWFzaywgZHA4Mzg2Ny1cdTAwM2VsZWRjcjIpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM9Nzk5PXN0YXRpYyBpbnQgZHA4Mzg2N19jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtODA2LVx0LyogRm9yY2Ugc3BlZWQgb3B0aW1pemF0aW9uIGZvciB0aGUgUEhZIGV2ZW4gaWYgaXQgc3RyYXBwZWQgKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6ODA3Olx0cmV0ID0gcGh5X21vZGlmeShwaHlkZXYsIERQODM4NjdfQ0ZHMiwgRFA4Mzg2N19ET1dOU0hJRlRfRU4sXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjgwODpcdFx0XHQgRFA4Mzg2N19ET1dOU0hJRlRfRU4pO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy04MDktXHRpZiAocmV0KVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMDA6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIwODcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBEUDgzODY3IFBIWSBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBkcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIGl0JiMzOTtzIGFuIE1ESU8gUEhZIGRyaXZlciBkZXNpZ25lZCBmb3IgdGhlIFRleGFzIEluc3RydW1lbnRzIERQODM4NjcgUEhZLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgaXRzIGludGVncmF0aW9uIHdpdGhpbiB0aGUgYnJvYWRlciBQSFkgZHJpdmVyIGFyY2hpdGVjdHVyZSBvZiBgZHJpdmVycy9uZXQvcGh5YC4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlc2UgUEhZIGRyaXZlcnMgYXJlIHR5cGljYWxseSBwcm9iZWQgYW5kIHV0aWxpemVkLiBBcmUgdGhleSBzdHJpY3RseSB0aWVkIHRvIHBoeXNpY2FsIEV0aGVybmV0IFBIWSBjaGlwcyBjb25uZWN0ZWQgdG8gTURJTyBidXNlcz8gT3IgaXMgdGhlcmUgYW55IGZsZXhpYmlsaXR5LCBhbnkgd2F5IHRvIGVtdWxhdGUgb3IgaW50ZXJmYWNlIHRoZW0gaW4gYSB2aXJ0dWFsIGVudmlyb25tZW50IGxpa2Ugc3l6a2FsbGVyIG9yIFFFTVU/CgpJJiMzOTttIHRoaW5raW5nIEkmIzM5O2xsIG5lZWQgdG8gYnJvYWRlbiBteSBzZWFyY2ggdGVybXMgdG8gaW5jbHVkZSByZWxhdGVkIGNvbmNlcHRzLiBTbywgSSBuZWVkIHRvIGxvb2sgaW50byBob3cgTURJTyBidXNlcywgTURJTyBiaXQtYmFuZ2luZywgTURJTy1HUElPLCB0aGUgY29uY2VwdCBvZiB2aXJ0dWFsIE1ESU8gaW50ZXJmYWNlcywgYW5kIGZpeGVkLVBIWSBjb25maWd1cmF0aW9ucyBmdW5jdGlvbiwgYXMgd2VsbCBhcyB0aGUgc3RydWN0dXJlcyBsaWtlIGBwaHlfZGV2aWNlYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRvIGludGVyYWN0IHdpdGggdGhpcyB0aGluZywgYmVjYXVzZSBJJiMzOTttIGFzc3VtaW5nIHRoYXQgaXQgd2lsbCBiZSBhIHBhaW4uCgpNeSBmaW5hbCB0aG91Z2h0IGlzIHRoYXQgSSBuZWVkIHRvIGRldGVybWluZSBpZiBhbnkgZXhpc3RpbmcgbmV0d29yayBkcml2ZXIgb3IgdmlydHVhbCBkcml2ZXIgcmVhZGlseSBpbnRlcmZhY2VzIHdpdGggdGhlIERQODM4NjcsIG9yIGlmIGl0IGhhcyBzcGVjaWZpYyBoYXJkd2FyZSBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBrbm93IGlmIHRoZSBoYXJkd2FyZSBpcyBmdWxseSByZXF1aXJlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwMDoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfcGh5X2RyaXZlci4qZHA4Mzg2NyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jPTEyNjU9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGRwODM4NjdfZHJpdmVyW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xMzAzLX07XG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjEzMDQ6bW9kdWxlX3BoeV9kcml2ZXIoZHA4Mzg2N19kcml2ZXIpO1xuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xMzA1LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDAwOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNzA3CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogNDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEludmVzdGlnYXRpb24gaW50byBEUDgzODY3IFBIWSBEcml2ZXIgUmVhY2hhYmlsaXR5KioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGBkcDgzODY3YCBQSFkgZHJpdmVyIGlzIGJlaW5nIHJlZ2lzdGVyZWQgYW5kIHdoZXRoZXIgaXQmIzM5O3Mgc29tZXRoaW5nIEkgY2FuIGFjdHVhbGx5IHdvcmsgd2l0aCBpbiB0aGlzIHNjZW5hcmlvLiBGaXJzdCwgSSYjMzk7bSBnb2luZyB0byBsb29rIGF0IHRoZSBjb2RlLiBMZXQmIzM5O3Mgc2VlIGhvdyBgcGh5X2RyaXZlcmAgZ2V0cyByZWdpc3RlcmVkLCBzcGVjaWZpY2FsbHkgaW4gYGRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmNgLiBBaCwgYG1vZHVsZV9waHlfZHJpdmVyKGRwODM4NjdfZHJpdmVyKWAg4oCTIHNvIGl0JiMzOTtzIHJlZ2lzdGVyaW5nIGEgYHBoeV9kcml2ZXJgIHRoYXQgbWF0Y2hlcyBgRFA4Mzg2N19QSFlfSURgLCB3aGljaCBpcyBgMHgyMDAwYTIzMWAuIE1ha2VzIHNlbnNlLgoKTm93LCB3aGVuIGRvZXMgdGhpcyBkcml2ZXIgKmFjdHVhbGx5KiBnZXQgcHJvYmVkPyBSaWdodCwgd2hlbiB0aGUgTURJTyBidXMgaXMgc2Nhbm5lZC4gU28sIGZ1bmN0aW9ucyBsaWtlIGBtZGlvYnVzX3NjYW5gIG9yIGBvZl9tZGlvYCBhcmUgdGhlIHRyaWdnZXJzLiBPciwgaWYgYSBgcGh5X2RldmljZWAgaXMgZXhwbGljaXRseSBjcmVhdGVkIHdpdGggdGhhdCBzcGVjaWZpYyBQSFkgSUQuIEdvb2QuCgpUaGUgY3JpdGljYWwgcXVlc3Rpb24gaGVyZSBpcyB3aGV0aGVyIFFFTVUgb3IgYW55IHN0YW5kYXJkIHZpcnR1YWwgZW52aXJvbm1lbnQgKmVtdWxhdGVzKiBhIERQODM4NjcgUEhZLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSBhcmUgdmlydHVhbCBidXNlcywgZW11bGF0ZWQgZGV2aWNlcywgYSBtb2NrIE1ESU8sIG9yIGlmIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggcHVyZWx5IHBoeXNpY2FsIGhhcmR3YXJlIGhlcmUuIFdhaXQsIHdoYXQgaXMgdGhlIERQODM4NjcgaW4gdGhlIHJlYWwgd29ybGQ/IE9oIHJpZ2h0LCBpdCYjMzk7cyBhIHBoeXNpY2FsIEV0aGVybmV0IFBIWSBjaGlwIGZyb20gVGV4YXMgSW5zdHJ1bWVudHMuCgpTbywgSSBuZWVkIHRvIGtub3cgaWYgUUVNVSBvciBzb21lIHZpcnR1YWwgYnVzICpzcGVjaWZpY2FsbHkqIGVtdWxhdGVzIHRoaXMuIElmIG5vdCwgaXQgY291bGQgYmUgYSBwaHlzaWNhbCBoYXJkd2FyZSBkZXBlbmRlbmN5LiBMZXQmIzM5O3Mgbm90IGZvcmdldCBzZWN0aW9uIDIgb2YgdGhlIGluc3RydWN0aW9uczogJiMzNDtTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuLi4mIzM0OyDigJMgdGhpbmdzIGxpa2Ugc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgTklDcywgYW5kIEdQVSBkcml2ZXJzLiBJdCBtZW50aW9ucyB0aG9zZSByZXF1aXJlIHBoeXNpY2FsIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBRRU1VLgoKQnV0Li4uIGFyZSBQSFkgZHJpdmVycyB0aGUgc2FtZT8gQXJlIHRoZXkgKnN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSo/IENhbiBJIGNyZWF0ZSBNRElPIGRldmljZXMgZnJvbSB1c2Vyc3BhY2UsIHVzZSB2aXJ0dWFsIGRldmljZXMsIG9yIGRvIEkgbmVlZCB0byBsb29rIGZvciBzeXNmcywgbmV0bGluaywgVVNCLCBvciBtb2NrIE1ESU8gbWV0aG9kcz8KCkkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgc2VhcmNoaW5nIHRoZSBrZXJuZWwgc291cmNlcyBmb3IgJiMzNDttZGlvLCYjMzQ7IHRoZW4gJiMzNDtwaHlfZGV2aWNlX2NyZWF0ZSwmIzM0OyB0aGVuICYjMzQ7bWRpb2J1c19yZWdpc3RlciwmIzM0OyBhbmQgdGhlbiAmIzM0O25ldGxpbmsgbWRpby4mIzM0OyBIb3BlZnVsbHksIHRoYXQgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZXNlIHZpcnR1YWwgZHJpdmVycyBtaWdodCBiZSBleHBvc2VkIGlmIGF0IGFsbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwMDoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlfZGV2aWNlX2NyZWF0ZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmM9MTE3PWludCBmd25vZGVfbWRpb2J1c19yZWdpc3Rlcl9waHkoc3RydWN0IG1paV9idXMgKmJ1cyxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmMtMTM0LVx0ZWxzZVxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jOjEzNTpcdFx0cGh5ID0gcGh5X2RldmljZV9jcmVhdGUoYnVzLCBhZGRyLCBwaHlfaWQsIDAsIE5VTEwpO1xuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jLTEzNi1cdGlmIChJU19FUlIocGh5KSkge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jPTU1MT1zdGF0aWMgdm9pZCB0amExMTAyX3AxX3JlZ2lzdGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYy01ODUtXHRcdC8qIFJlYWwgUEhZIElEIG9mIFBvcnQgMSBpcyAwICovXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYzo1ODY6XHRcdHBoeSA9IHBoeV9kZXZpY2VfY3JlYXRlKGJ1cywgYWRkciwgUEhZX0lEX1RKQTExMDIsIGZhbHNlLCBOVUxMKTtcbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jLTU4Ny1cdFx0aWYgKElTX0VSUihwaHkpKSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmMtNTkyLVxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmM6NTkzOlx0XHQvKiBPdmVyd3JpdGUgcGFyZW50IGRldmljZS4gcGh5X2RldmljZV9jcmVhdGUoKSBzZXQgcGFyZW50IHRvXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYy01OTQtXHRcdCAqIHRoZSBtaWlfYnVzLVx1MDAzZWRldiwgd2hpY2ggaXMgbm90IGNvcnJlY3QgaW4gY2FzZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTcyOD1zdGF0aWMgaW50IHBoeV9yZXF1ZXN0X2RyaXZlcl9tb2R1bGUoc3RydWN0IHBoeV9kZXZpY2UgKmRldiwgdTMyIHBoeV9pZClcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTc0Ny1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6NzQ4OnN0cnVjdCBwaHlfZGV2aWNlICpwaHlfZGV2aWNlX2NyZWF0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgdTMyIHBoeV9pZCxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNzQ5LVx0XHRcdFx0ICAgICBib29sIGlzX2M0NSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTgzOS19XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjg0MDpFWFBPUlRfU1lNQk9MKHBoeV9kZXZpY2VfY3JlYXRlKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtODQxLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTA3MT1zdHJ1Y3QgcGh5X2RldmljZSAqZ2V0X3BoeV9kZXZpY2Uoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGJvb2wgaXNfYzQ1KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTA5Ni1cdFx0aWYgKCFyKVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMDk3Olx0XHRcdHJldHVybiBwaHlfZGV2aWNlX2NyZWF0ZShidXMsIGFkZHIsIHBoeV9pZCxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTA5OC1cdFx0XHRcdFx0XHQgdHJ1ZSwgXHUwMDI2YzQ1X2lkcyk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMTAwLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMTAxOlx0cmV0dXJuIHBoeV9kZXZpY2VfY3JlYXRlKGJ1cywgYWRkciwgcGh5X2lkLCBpc19jNDUsIFx1MDAyNmM0NV9pZHMpO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMTAyLX1cbi0tXG5pbmNsdWRlL2xpbnV4L3BoeS5oPTIxNDk9aW50IHBoeV9tb2RpZnlfcGFnZWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IHBhZ2UsIHUzMiByZWdudW0sXG4tLVxuaW5jbHVkZS9saW51eC9waHkuaC0yMTUxLVxuaW5jbHVkZS9saW51eC9waHkuaDoyMTUyOnN0cnVjdCBwaHlfZGV2aWNlICpwaHlfZGV2aWNlX2NyZWF0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgdTMyIHBoeV9pZCxcbmluY2x1ZGUvbGludXgvcGh5LmgtMjE1My1cdFx0XHRcdCAgICAgYm9vbCBpc19jNDUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMDA6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ2MzcKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqSW52ZXN0aWdhdGluZyBVc2VyLVNwYWNlIFBIWS9NRElPIERldmljZSBDcmVhdGlvbioqCgpBbHJpZ2h0LCBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgc29tZXRoaW5nIG91dCBoZXJlLiBDYW4gYSB1c2VyLXNwYWNlIGFwcGxpY2F0aW9uIGFjdHVhbGx5ICpjcmVhdGUqIGEgUEhZIGRldmljZSBvbiBhbiBNRElPIGJ1cywgb3IgZXZlbiAqY3JlYXRlKiB0aGUgTURJTyBidXMgaXRzZWxmPyBJdCYjMzk7cyBhIGJpdCBvZiBhIHRyaWNreSBxdWVzdGlvbiwgYW5kIG15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byB0aGluayBhYm91dCB0aGUgcGVyaXBoZXJ5IG9mIHRoYXQuIEkmIzM5O20gd29uZGVyaW5nIGlmIHRoZXJlIGFyZSBhbnkgYW5hbG9nb3VzIG1lY2hhbmlzbXMgYWxyZWFkeSBpbiBwbGFjZSwgZm9yIGV4YW1wbGUgd2l0aCBVU0IgRXRoZXJuZXQgZG9uZ2xlcy4gRG8gdGhvc2UgdXRpbGl6ZSBNRElPIGJ1c2VzIG9yIFBIWSBkZXZpY2VzIGluIHRoZWlyIGRyaXZlciBpbXBsZW1lbnRhdGlvbj8gQW5kIGlmIHNvLCBob3c/CgpNeSBmaXJzdCBhcHByb2FjaCB3aWxsIGJlIHRvIHJlc2VhcmNoIGhvdyB0aGUgVVNCIEV0aGVybmV0IGRyaXZlcnMgYXJlIHN0cnVjdHVyZWQuIEl0IG1pZ2h0IGJlIHBvc3NpYmxlIHRoYXQgYSB2aXJ0dWFsIG5ldHdvcmsgZGV2aWNlIGV4cG9zZXMgc29tZXRoaW5nIGFraW4gdG8gYW4gTURJTyBidXMgb3IgUEhZIGRldmljZS4gU28sIHRoZSBuZXh0IHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBMaW51eCBrZXJuZWwgYW5kIGxvb2sgYXQgdGhlIFVTQiBFdGhlcm5ldCBkcml2ZXJzLCBwYXJ0aWN1bGFybHkgYW55IG9mIHRoZSB2aXJ0dWFsIGRyaXZlcnMuIEkmIzM5O20gZ29pbmcgdG8gZm9jdXMgbXkgc2VhcmNoLCBpbml0aWFsbHksIG9uIHNlZWluZyBob3cgdGhlc2UgZHJpdmVycyBpbnRlcmFjdCB3aXRoIE1ESU8uCgpUbyBtYWtlIHRoaXMgZWZmaWNpZW50LCBJIHRoaW5rIEkmIzM5O2xsIHVzZSBgZ3JlcGAgdG8gcXVpY2tseSBzZWFyY2ggdGhlIGBkcml2ZXJzL25ldC91c2JgIGRpcmVjdG9yeSBmb3IgYW55IGluc3RhbmNlcyBvZiBgbWRpb2J1c19yZWdpc3RlcmAuIFRoYXQgc2hvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBxdWlja2x5IGZpbmQgcmVsZXZhbnQgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMDA6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWRpb2J1c19yZWdpc3RlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NjY5PXN0YXRpYyBpbnQgYXg4ODc3Ml9pbml0X21kaW8oc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy02ODYtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6Njg3Olx0cmV0ID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVx1MDAzZW1kaW8pO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY4OC1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYz02MT1zdGF0aWMgaW50IGF4ODgxNzJhX2luaXRfbWRpbyhzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtNzktXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzo4MDpcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIocHJpdi1cdTAwM2VtZGlvKTtcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTgxLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9MjA5MT1zdGF0aWMgaW50IGxhbjc4eHhfbWRpb19pbml0KHN0cnVjdCBsYW43OHh4X25ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjEyMS1cdG5vZGUgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShkZXYtXHUwMDNldWRldi1cdTAwM2VkZXYub2Zfbm9kZSwgXCYjMzQ7bWRpb1wmIzM0Oyk7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjIxMjI6XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGRldi1cdTAwM2VtZGlvYnVzLCBub2RlKTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjEyMy1cdG9mX25vZGVfcHV0KG5vZGUpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jPTExNDc9c3RhdGljIGludCBzbXNjOTV4eF9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMTI0MS1cbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jOjEyNDI6XHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKHBkYXRhLVx1MDAzZW1kaW9idXMpO1xuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMTI0My1cdGlmIChyZXQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMDA6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU1NjEKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBVU0IgRXRoZXJuZXQgYW5kIE1ESU8gQnVzIEludGVyYWN0aW9uKioKCk9rYXksIHNvIGhlcmUmIzM5O3MgdGhlIHRob3VnaHQgcHJvY2VzczogSSYjMzk7bSBsb29raW5nIGF0IGhvdyBVU0IgRXRoZXJuZXQgZGV2aWNlcywgZXNwZWNpYWxseSB0aG9zZSB1c2luZyBlbXVsYXRpb24gbGlrZSBSYXctR2FkZ2V0IG9yIHRoZSBVU0IgZW11bGF0aW9uIHdpdGhpbiBTeXprYWxsZXIsIGludGVyYWN0IHdpdGggdGhlIE1ESU8gYnVzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGVzZSBlbXVsYXRlZCBkZXZpY2VzIGNhbiByZWdpc3RlciBhbiBNRElPIGJ1cy4gVGhlbiwgd2hlbiB0aGUgc3lzdGVtIHNjYW5zIHRoYXQgYnVzLCBpZiBpdCByZWNlaXZlcyBhIFBIWSBJRCBiYWNrIChwZXJoYXBzIHRocm91Z2ggVVNCIHJlc3BvbnNlcyksIHRoZSBrZXJuZWwgY2FsbHMgYHBoeV9kZXZpY2VfY3JlYXRlYCBhbmQgcG90ZW50aWFsbHkgbWF0Y2hlcyB1cCB3aXRoIGRyaXZlcnMgbGlrZSBgZHA4Mzg2N19kcml2ZXJgLgoKQnV0LCBsZXQmIzM5O3Mgc3RlcCBiYWNrIGFuZCBiZSBzdXJlLiBJIG5lZWQgdG8gdmVyaWZ5IHdoZXRoZXIgUmF3IEdhZGdldCBvciBVU0IgZnV6emluZyBhY3R1YWxseSBjYW4gZW11bGF0ZSB0aGVzZSBVU0IgRXRoZXJuZXQgZGV2aWNlcyAqd2l0aCogZnVuY3Rpb25hbCBNRElPIGJ1c2VzLiBPciwgY2FuIFN5emthbGxlciBwcm9iZSB0aGUgUEhZIGRyaXZlcnMgaW4gdGhpcyBjb25maWd1cmF0aW9uPyBUaGF0JiMzOTtzIHRoZSBjb3JlIHF1ZXN0aW9uLgoKTmV4dCwgSSBzaG91bGQgbG9vayBhdCBzb21lIGV4aXN0aW5nIFVTQiBFdGhlcm5ldCBkcml2ZXJzIGFuZCBob3cgdGhleSBpbnRlcmZhY2Ugd2l0aCB0aGUgTURJTyBidXMuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNvZGUgaW4gYGFzaXhfZGV2aWNlcy5jYCBhbmQgYHNtc2M5NXh4LmNgIHRvIHNlZSBwcmVjaXNlbHkgd2hhdCBoYXBwZW5zIHdoZW4gYG1kaW9idXNfcmVnaXN0ZXJgIGlzIGNhbGxlZCB3aXRoaW4gdGhvc2UgZHJpdmVycy4gVW5kZXJzdGFuZGluZyB0aGUgKnR5cGljYWwqIHJlZ2lzdHJhdGlvbiBwcm9jZXNzIGlzIGNyaXRpY2FsLgoKQW5kIGZpbmFsbHksIEkmIzM5O2xsIG5lZWQgdG8gaW52ZXN0aWdhdGUgdGhlIGNvcmUgTURJTyBidXMgaW1wbGVtZW50YXRpb24gaXRzZWxmLiBJIHNob3VsZCBkaXZlIGludG8gYG1kaW9idXNfcmVnaXN0ZXJgIGluIGBkcml2ZXJzL25ldC9waHkvbWRpb19idXMuY2AgdG8gY29uZmlybSB0aGUgTURJTyBidXMgY29uZmlndXJhdGlvbiwgYW5kIGRhdGEtZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMDA6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWRpb2J1c19zY2FuJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jPTM5Nj1zdGF0aWMgdm9pZCBvZl9tZGlvYnVzX2xpbmtfbWRpb2RldihzdHJ1Y3QgbWlpX2J1cyAqYnVzLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTQwNy1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjQwODpzdGF0aWMgc3RydWN0IHBoeV9kZXZpY2UgKm1kaW9idXNfc2NhbihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgYm9vbCBjNDUpXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy00MDkte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTQ0Ny0vKipcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjQ0ODogKiBtZGlvYnVzX3NjYW5fYzIyIC0gc2NhbiBvbmUgYWRkcmVzcyBvbiBhIGJ1cyBmb3IgQzIyIE1ESU8gZGV2aWNlcy5cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTQ0OS0gKiBAYnVzOiBtaWlfYnVzIHRvIHNjYW5cbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy00NTgtICovXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo0NTk6c3RydWN0IHBoeV9kZXZpY2UgKm1kaW9idXNfc2Nhbl9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIpXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy00NjAte1xuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NDYxOlx0cmV0dXJuIG1kaW9idXNfc2NhbihidXMsIGFkZHIsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTQ2Mi19XG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo0NjM6RVhQT1JUX1NZTUJPTChtZGlvYnVzX3NjYW5fYzIyKTtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTQ2NC1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTQ2NS0vKipcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjQ2NjogKiBtZGlvYnVzX3NjYW5fYzQ1IC0gc2NhbiBvbmUgYWRkcmVzcyBvbiBhIGJ1cyBmb3IgQzQ1IE1ESU8gZGV2aWNlcy5cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTQ2Ny0gKiBAYnVzOiBtaWlfYnVzIHRvIHNjYW5cbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy00NzYtICovXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo0Nzc6c3RhdGljIHN0cnVjdCBwaHlfZGV2aWNlICptZGlvYnVzX3NjYW5fYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyKVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNDc4LXtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjQ3OTpcdHJldHVybiBtZGlvYnVzX3NjYW4oYnVzLCBhZGRyLCB0cnVlKTtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTQ4MC19XG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy00ODEtXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo0ODI6c3RhdGljIGludCBtZGlvYnVzX3NjYW5fYnVzX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzKVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNDgzLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy00ODktXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo0OTA6XHRcdFx0cGh5ZGV2ID0gbWRpb2J1c19zY2FuX2MyMihidXMsIGkpO1xuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNDkxLVx0XHRcdGlmIChJU19FUlIocGh5ZGV2KSBcdTAwMjZcdTAwMjYgKFBUUl9FUlIocGh5ZGV2KSAhPSAtRU5PREVWKSlcbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy00OTctXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo0OTg6c3RhdGljIGludCBtZGlvYnVzX3NjYW5fYnVzX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzKVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNDk5LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy01MDktXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo1MTA6XHRcdFx0cGh5ZGV2ID0gbWRpb2J1c19zY2FuX2M0NShidXMsIGkpO1xuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNTExLVx0XHRcdGlmIChJU19FUlIocGh5ZGV2KSBcdTAwMjZcdTAwMjYgKFBUUl9FUlIocGh5ZGV2KSAhPSAtRU5PREVWKSlcbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYz01NTM9aW50IF9fbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBzdHJ1Y3QgbW9kdWxlICpvd25lcilcbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy02MzItXHRpZiAoYnVzLVx1MDAzZXJlYWQpIHtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjYzMzpcdFx0ZXJyID0gbWRpb2J1c19zY2FuX2J1c19jMjIoYnVzKTtcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTYzNC1cdFx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy02NDAtXHRpZiAoIXByZXZlbnRfYzQ1X3NjYW4gXHUwMDI2XHUwMDI2IGJ1cy1cdTAwM2VyZWFkX2M0NSkge1xuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NjQxOlx0XHRlcnIgPSBtZGlvYnVzX3NjYW5fYnVzX2M0NShidXMpO1xuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNjQyLVx0XHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwMDoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzM4MAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDE1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERQODM4NjcgRHJpdmVyIEFjdGl2YXRpb24qKgoKT2theSwgaGVyZSYjMzk7cyB3aGF0JiMzOTtzIGNhdGNoaW5nIG15IGV5ZS4gSSYjMzk7bSBvYnNlcnZpbmcgdGhlIFVTQiBFdGhlcm5ldCBkZXZpY2UgcmVnaXN0cmF0aW9uIHByb2Nlc3MsIHNwZWNpZmljYWxseSBob3cgYF9fbWRpb2J1c19yZWdpc3RlcmAgaXMgdHJpZ2dlcmVkIHdoZW4gYSBVU0IgRXRoZXJuZXQgZGV2aWNlIGxpa2UgYW4gc21zYzk1eHggb3IgYXNpeCBjb21lcyBvbmxpbmUuIEkgbm90aWNlIHRoYXQgdGhpcyB0cmlnZ2VycyBhbiBNRElPIGJ1cyBzY2FuIGFuZCByZWFkcyB0aGUgUEhZIElEIHJlZ2lzdGVycy4gSW50ZXJlc3RpbmchIElmIHRoZSBkZXZpY2UgaGFwcGVucyB0byByZXR1cm4gdGhlIERQODM4NjcgUEhZIElELCB3aGljaCBpcyAweDIwMDBhMjMxLCB0aGUgRFA4Mzg2NyBkcml2ZXIgcHJvYmUgZ2V0cyBraWNrZWQgb2ZmIGF1dG9tYXRpY2FsbHkuIFRoYXQmIzM5O3MgZ29vZCBkZXNpZ24uCgpOb3csIEkmIzM5O20gYWxyZWFkeSB0aGlua2luZyBhYm91dCB0aGUgYmlnZ2VyIHBpY3R1cmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGNvbm5lY3RzIHRvIHRoZSBicm9hZGVyIG5ldHdvcmsgY29uZmlndXJhdGlvbi4gSG93IGFyZSB0aGUgc3lzZnMgaW50ZXJmYWNlcywgbmV0bGluaywgZXRodG9vbCwgYW5kIHRoZSBMRUQgc3lzZnMgaW50ZWdyYXRlZCBpbnRvIHRoaXMgcHJvY2Vzcz8gSSBuZWVkIHRvIGRyaWxsIGRvd24gaW50byB0aGUgZGV0YWlscyBvZiB0aGUgTEVEIG1hbmFnZW1lbnQsIHNvIEkgc2hvdWxkIHNlZSBob3cgdGhlIGNhbGxiYWNrcyBhcmUgaW1wbGVtZW50ZWQgd2l0aGluIHRoZSBgZHA4Mzg2N2AgZHJpdmVyLgoKTGV0IG1lIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGUgYGRwODM4NjcuY2Agc291cmNlIGNvZGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZXMgMTAwMCB0byAxMzAwLiBUaGF0JiMzOTtzIHRoZSBsaWtlbHkgYXJlYSB3aGVyZSBMRUQtcmVsYXRlZCBjYWxsYmFja3MgYXJlIGRlZmluZWQuIFRoaXMgd2lsbCBoZWxwIG1lIHRyYWNlIGhvdyB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBzeXN0ZW0gdG8gY29udHJvbCBsaW5rIHN0YXR1cyBhbmQgYWN0aXZpdHkgTEVEcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMDA6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTIwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTIwMDpcdFx0XHRicmVhaztcbjEyMDE6XHRcdGNhc2UgRFA4Mzg2N19MRURfRk5fTElOS18xMDBfMTAwMF9CVDpcbjEyMDI6XHRcdFx0KnJ1bGVzID0gQklUKFRSSUdHRVJfTkVUREVWX0xJTktfMTAwKSB8IEJJVChUUklHR0VSX05FVERFVl9MSU5LXzEwMDApO1xuMTIwMzpcdFx0XHRicmVhaztcbjEyMDQ6XHRcdGNhc2UgRFA4Mzg2N19MRURfRk5fTElOS18xMF8xMDBfQlQ6XG4xMjA1Olx0XHRcdCpydWxlcyA9IEJJVChUUklHR0VSX05FVERFVl9MSU5LXzEwKSB8IEJJVChUUklHR0VSX05FVERFVl9MSU5LXzEwMCk7XG4xMjA2Olx0XHRcdGJyZWFrO1xuMTIwNzpcdFx0Y2FzZSBEUDgzODY3X0xFRF9GTl9MSU5LX1JYX1RYOlxuMTIwODpcdFx0XHQqcnVsZXMgPSBCSVQoVFJJR0dFUl9ORVRERVZfTElOSykgfCBCSVQoVFJJR0dFUl9ORVRERVZfVFgpIHxcbjEyMDk6XHRcdFx0XHQgQklUKFRSSUdHRVJfTkVUREVWX1JYKTtcbjEyMTA6XHRcdFx0YnJlYWs7XG4xMjExOlx0XHRkZWZhdWx0OlxuMTIxMjpcdFx0XHQqcnVsZXMgPSAwO1xuMTIxMzpcdFx0XHRicmVhaztcbjEyMTQ6XHRcdH1cbjEyMTU6XHRcbjEyMTY6XHRcdHJldHVybiAwO1xuMTIxNzpcdH1cbjEyMTg6XHRcbjEyMTk6XHRzdGF0aWMgaW50IGRwODM4NjdfbGVkX3BvbGFyaXR5X3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgaW5kZXgsXG4xMjIwOlx0XHRcdFx0XHQgICAgdW5zaWduZWQgbG9uZyBtb2RlcylcbjEyMjE6XHR7XG4xMjIyOlx0XHRzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlICpkcDgzODY3ID0gcGh5ZGV2LVx1MDAzZXByaXY7XG4xMjIzOlx0XHQvKiBEZWZhdWx0IGFjdGl2ZSBoaWdoICovXG4xMjI0Olx0XHR1MTYgcG9sYXJpdHkgPSBEUDgzODY3X0xFRF9QT0xBUklUWShpbmRleCk7XG4xMjI1Olx0XHR1MzIgbW9kZTtcbjEyMjY6XHRcdGludCByZXQ7XG4xMjI3Olx0XG4xMjI4Olx0XHRmb3JfZWFjaF9zZXRfYml0KG1vZGUsIFx1MDAyNm1vZGVzLCBfX1BIWV9MRURfTU9ERVNfTlVNKSB7XG4xMjI5Olx0XHRcdHN3aXRjaCAobW9kZSkge1xuMTIzMDpcdFx0XHRjYXNlIFBIWV9MRURfQUNUSVZFX0xPVzpcbjEyMzE6XHRcdFx0XHRwb2xhcml0eSA9IDA7XG4xMjMyOlx0XHRcdFx0YnJlYWs7XG4xMjMzOlx0XHRcdGRlZmF1bHQ6XG4xMjM0Olx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4xMjM1Olx0XHRcdH1cbjEyMzY6XHRcdH1cbjEyMzc6XHRcbjEyMzg6XHRcdG11dGV4X2xvY2soXHUwMDI2ZHA4Mzg2Ny1cdTAwM2VsZWRfbG9jayk7XG4xMjM5Olx0XHRyZXQgPSBfX2RwODM4NjdfbGVkX21vZGlmeShwaHlkZXYsIERQODM4NjdfTEVEQ1IyLFxuMTI0MDpcdFx0XHRcdFx0ICAgRFA4Mzg2N19MRURfUE9MQVJJVFkoaW5kZXgpLCBwb2xhcml0eSk7XG4xMjQxOlx0XHRtdXRleF91bmxvY2soXHUwMDI2ZHA4Mzg2Ny1cdTAwM2VsZWRfbG9jayk7XG4xMjQyOlx0XG4xMjQzOlx0XHRyZXR1cm4gcmV0O1xuMTI0NDpcdH1cbjEyNDU6XHRcbjEyNDY6XHRzdGF0aWMgdW5zaWduZWQgaW50IGRwODM4NjdfaW5iYW5kX2NhcHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbjEyNDc6XHRcdFx0XHRcdFx0cGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbjEyNDg6XHR7XG4xMjQ5Olx0XHRpZiAoaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSlcbjEyNTA6XHRcdFx0cmV0dXJuIExJTktfSU5CQU5EX0VOQUJMRSB8IExJTktfSU5CQU5EX0RJU0FCTEU7XG4xMjUxOlx0XG4xMjUyOlx0XHRyZXR1cm4gMDtcbjEyNTM6XHR9XG4xMjU0Olx0XG4xMjU1Olx0c3RhdGljIGludCBkcDgzODY3X2NvbmZpZ19pbmJhbmQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdW5zaWduZWQgaW50IG1vZGVzKVxuMTI1NjpcdHtcbjEyNTc6XHRcdGludCB2YWwgPSAwO1xuMTI1ODpcdFxuMTI1OTpcdFx0aWYgKG1vZGVzID09IExJTktfSU5CQU5EX0VOQUJMRSlcbjEyNjA6XHRcdFx0dmFsID0gRFA4Mzg2N19TR01JSV9BVVRPTkVHX0VOO1xuMTI2MTpcdFxuMTI2MjpcdFx0cmV0dXJuIHBoeV9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0NGRzIsIERQODM4NjdfU0dNSUlfQVVUT05FR19FTiwgdmFsKTtcbjEyNjM6XHR9XG4xMjY0Olx0XG4xMjY1Olx0c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGRwODM4NjdfZHJpdmVyW10gPSB7XG4xMjY2Olx0XHR7XG4xMjY3Olx0XHRcdC5waHlfaWRcdFx0PSBEUDgzODY3X1BIWV9JRCxcbjEyNjg6XHRcdFx0LnBoeV9pZF9tYXNrXHQ9IDB4ZmZmZmZmZjAsXG4xMjY5Olx0XHRcdC5uYW1lXHRcdD0gXCYjMzQ7VEkgRFA4Mzg2N1wmIzM0OyxcbjEyNzA6XHRcdFx0LyogUEhZX0dCSVRfRkVBVFVSRVMgKi9cbjEyNzE6XHRcbjEyNzI6XHRcdFx0LnByb2JlICAgICAgICAgID0gZHA4Mzg2N19wcm9iZSxcbjEyNzM6XHRcdFx0LmNvbmZpZ19pbml0XHQ9IGRwODM4NjdfY29uZmlnX2luaXQsXG4xMjc0Olx0XHRcdC5jb25maWdfYW5lZ1x0PSBkcDgzODY3X2NvbmZpZ19hbmVnLFxuMTI3NTpcdFx0XHQuc29mdF9yZXNldFx0PSBkcDgzODY3X3BoeV9yZXNldCxcbjEyNzY6XHRcbjEyNzc6XHRcdFx0LnJlYWRfc3RhdHVzXHQ9IGRwODM4NjdfcmVhZF9zdGF0dXMsXG4xMjc4Olx0XHRcdC5nZXRfdHVuYWJsZVx0PSBkcDgzODY3X2dldF90dW5hYmxlLFxuMTI3OTpcdFx0XHQuc2V0X3R1bmFibGVcdD0gZHA4Mzg2N19zZXRfdHVuYWJsZSxcbjEyODA6XHRcbjEyODE6XHRcdFx0LmdldF93b2xcdD0gZHA4Mzg2N19nZXRfd29sLFxuMTI4MjpcdFx0XHQuc2V0X3dvbFx0PSBkcDgzODY3X3NldF93b2wsXG4xMjgzOlx0XG4xMjg0Olx0XHRcdC8qIElSUSByZWxhdGVkICovXG4xMjg1Olx0XHRcdC5jb25maWdfaW50clx0PSBkcDgzODY3X2NvbmZpZ19pbnRyLFxuMTI4NjpcdFx0XHQuaGFuZGxlX2ludGVycnVwdCA9IGRwODM4NjdfaGFuZGxlX2ludGVycnVwdCxcbjEyODc6XHRcbjEyODg6XHRcdFx0LnN1c3BlbmRcdD0gZHA4Mzg2N19zdXNwZW5kLFxuMTI4OTpcdFx0XHQucmVzdW1lXHRcdD0gZHA4Mzg2N19yZXN1bWUsXG4xMjkwOlx0XG4xMjkxOlx0XHRcdC5saW5rX2NoYW5nZV9ub3RpZnkgPSBkcDgzODY3X2xpbmtfY2hhbmdlX25vdGlmeSxcbjEyOTI6XHRcdFx0LnNldF9sb29wYmFja1x0PSBkcDgzODY3X2xvb3BiYWNrLFxuMTI5MzpcdFxuMTI5NDpcdFx0XHQubGVkX2JyaWdodG5lc3Nfc2V0ID0gZHA4Mzg2N19sZWRfYnJpZ2h0bmVzc19zZXQsXG4xMjk1Olx0XHRcdC5sZWRfaHdfaXNfc3VwcG9ydGVkID0gZHA4Mzg2N19sZWRfaHdfaXNfc3VwcG9ydGVkLFxuMTI5NjpcdFx0XHQubGVkX2h3X2NvbnRyb2xfc2V0ID0gZHA4Mzg2N19sZWRfaHdfY29udHJvbF9zZXQsXG4xMjk3Olx0XHRcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBkcDgzODY3X2xlZF9od19jb250cm9sX2dldCxcbjEyOTg6XHRcdFx0LmxlZF9wb2xhcml0eV9zZXQgPSBkcDgzODY3X2xlZF9wb2xhcml0eV9zZXQsXG4xMjk5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDAwOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NTkwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRFA4Mzg2NyBQSFkgTEVEIENvbnRyb2wgSW1wbGVtZW50YXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhpcyBjaGFuZ2Ugc2V0IGZvciB0aGUgRFA4Mzg2NyBQSFkgTEVEIGNvbnRyb2wuIEkgc2VlIHNldmVyYWwgZnVuY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIGFkZGVkIG9yIG1vZGlmaWVkOiBgZHA4Mzg2N19sZWRfYnJpZ2h0bmVzc19zZXRgLCBgZHA4Mzg2N19sZWRfaHdfY29udHJvbF9zZXRgLCBgZHA4Mzg2N19sZWRfcG9sYXJpdHlfc2V0YCwgYGRwODM4NjdfbGVkX3Jlc3RvcmVgLCBgX19kcDgzODY3X2xlZF9tb2RpZnlgLCBgZHA4Mzg2N19jb25maWdfaW5pdGAsIGFuZCBgZHA4Mzg2N19wcm9iZWAuCgpGaXJzdCwgSSBub3RpY2UgYSBuZXcgYHN0cnVjdCBkcDgzODY3X3ByaXZhdGVgIG1lbWJlcjogYSBgc3RydWN0IG11dGV4IGxlZF9sb2NrYCBhbmQgYSBmZXcgYHUxNmAgbWVtYmVycyBmb3Igc3RvcmluZyBMRUQgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgKGBsZWRjcjFgLCBgbGVkY3IxX21hc2tgLCBgbGVkY3IyYCwgYGxlZGNyMl9tYXNrYCkuIE9rYXksIGEgbXV0ZXggbWFrZXMgc2Vuc2UgdG8gcHJvdGVjdCBhY2Nlc3MgdG8gdGhlIExFRCBjb25maWd1cmF0aW9uIHJlZ2lzdGVycy4gSSBhbHNvIG5vdGUgdGhhdCB0aGUgbXV0ZXggaXMgaW5pdGlhbGl6ZWQgaW4gYGRwODM4NjdfcHJvYmVgLgoKTmV4dCwgdGhlIG5ldyBgX19kcDgzODY3X2xlZF9tb2RpZnlgIGZ1bmN0aW9uIGxvb2tzIGltcG9ydGFudC4gSXQgY29udGFpbnMgYSBgV0FSTl9PTl9PTkNFKDEpYCBpZiB3ZSBhcmUgbm90IG1vZGlmeWluZyBgRFA4Mzg2N19MRURDUjFgIG9yIGBEUDgzODY3X0xFRENSMmAuIFNlZW1zIGxpa2UgYSBzYWZlZ3VhcmQgdG8gY2F0Y2ggaW5jb3JyZWN0IHJlZ2lzdGVyIGFjY2Vzcy4gR29vZCwgd2Ugd2FudCB0byBwcmV2ZW50IHVuaW50ZW5kZWQgd3JpdGVzLgoKYGRwODM4NjdfbGVkX3Jlc3RvcmVgIGFwcGVhcnMgdG8gYmUgZm9yIHJlcGxheWluZyB0aGUgTEVEIGNvbmZpZ3VyYXRpb24uIFRoaXMgZnVuY3Rpb24gbG9ja3MgdGhlIGBsZWRfbG9ja2AgYW5kIHJlcGxheXMgdGhlIHJlZ2lzdGVycyBgbGVkY3IxYCBhbmQgYGxlZGNyMmAuIFRoYXQgc291bmRzIGxpa2UgaXQmIzM5O3MgZm9yIHJlc3RvcmluZyBMRUQgc2V0dGluZ3MgYWZ0ZXIgYSBwb3dlciBjeWNsZSBvciByZXNldC4gQW5kIGBkcDgzODY3X2NvbmZpZ19pbml0YCBjYWxscyBpdCwgcHJlc3VtYWJseSB0byBpbml0aWFsaXplIHRoZSBMRUQgY29uZmlndXJhdGlvbiBkdXJpbmcgUEhZIGluaXRpYWxpemF0aW9uLgoKRmluYWxseSwgYGRwODM4NjdfbGVkX2JyaWdodG5lc3Nfc2V0YCwgYGRwODM4NjdfbGVkX2h3X2NvbnRyb2xfc2V0YCwgYW5kIGBkcDgzODY3X2xlZF9wb2xhcml0eV9zZXRgIGFsbCB1c2UgdGhlIGBsZWRfbG9ja2AgYW5kIGNhbGwgYF9fZHA4Mzg2N19sZWRfbW9kaWZ5YC4gVGhpcyBpbmRpY2F0ZXMgcHJvcGVyIGxvY2tpbmcgZm9yIG1vZGlmeWluZyB0aGUgTEVEIHNldHRpbmdzLgoKTm93LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgdGhlIEtjb25maWcgZGVwZW5kZW5jaWVzIGZvciBgRFA4Mzg2N19QSFlgIHRvIGVuc3VyZSBldmVyeXRoaW5nIGlzIHNldCB1cCBjb3JyZWN0bHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDAwOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEUDgzODY3X1BIWSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZz00NDY9Y29uZmlnIERQODM4NDhfUEhZXG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNDUwLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6NDUxOmNvbmZpZyBEUDgzODY3X1BIWVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNDUyLVx0dHJpc3RhdGUgXCYjMzQ7VGV4YXMgSW5zdHJ1bWVudHMgRFA4Mzg2NyBHaWdhYml0IFBIWVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwMDoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDY5MAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqS2NvbmZpZyBMaW5lIDQ1MSBBbmFseXNpcyoqCgpPa2F5LCBsZXQmIzM5O3MgemVybyBpbiBvbiBsaW5lIDQ1MSBpbiB0aGUgS2NvbmZpZyBmaWxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyBhcm91bmQgdGhhdCBzcGVjaWZpYyBsaW5lIG9mIGNvZGUuIE15IGdvYWwgaXMgdG8gcXVpY2tseSBncmFzcCB0aGUgY29udGV4dCwgaWRlbnRpZnkgYW55IHBvdGVudGlhbCBpc3N1ZXMgb3IgaW50ZXJlc3RpbmcgY29uZmlndXJhdGlvbnMsIGFuZCByZWxhdGUgaXQgYmFjayB0byB0aGUgYnJvYWRlciBwcm9qZWN0LiBJJiMzOTtsbCBuZWVkIHRvIHJlYWQgdGhlIHN1cnJvdW5kaW5nIGxpbmVzLCBsb29raW5nIGZvciBkZXBlbmRlbmNpZXMsIGRlZmF1bHQgdmFsdWVzLCBwcm9tcHRzLCBhbmQgYW55IGNvbmRpdGlvbmFsIGxvZ2ljIHRoYXQmIzM5O3MgYmVpbmcgZW1wbG95ZWQuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlICp3aHkqIGFzIG11Y2ggYXMgdGhlICp3aGF0KiAtIFdoeSBpcyB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGRlZmluZWQgaGVyZT8gV2hhdCYjMzk7cyBpdHMgcHVycG9zZSB3aXRoaW4gdGhlIGxhcmdlciBmZWF0dXJlIHNldD8gSXMgaXQgZGVwZW5kZW50IG9uIG90aGVyIHZhcmlhYmxlcyBvciBvcHRpb25zPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgcmVkIGZsYWdzPyBJIGV4cGVjdCB0byBpZGVudGlmeSB0aGUgZnVuY3Rpb24gb2YgdGhpcyBsaW5lIHdpdGhpbiBhIGZldyByZWFkcyBvZiB0aGUgc3Vycm91bmRpbmcgS2NvbmZpZyBlbGVtZW50cy4gSSYjMzk7bSBwcmVwYXJlZCB0byBtb3ZlIG9uIHF1aWNrbHkgaWYgdGhpcyBpcyBhIGxvdy1pbXBhY3Qgb3Igd2VsbC11bmRlcnN0b29kIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBidXQgSSYjMzk7bGwgZGlnIGRlZXBlciBpZiBpdCBzZWVtcyBjb21wbGV4IG9yIHJlbGF0ZWQgdG8gYSBmZWF0dXJlIEkmIzM5O20gY3VycmVudGx5IHdvcmtpbmcgd2l0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMDA6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDQwOlx0XG4gNDQxOlx0Y29uZmlnIERQODNUQzgxMV9QSFlcbiA0NDI6XHRcdHRyaXN0YXRlIFwmIzM0O1RleGFzIEluc3RydW1lbnRzIERQODNUQzgxMSBQSFlcJiMzNDtcbiA0NDM6XHRcdGhlbHBcbiA0NDQ6XHRcdCAgU3VwcG9ydHMgdGhlIERQODNUQzgxMSBQSFkuXG4gNDQ1Olx0XG4gNDQ2Olx0Y29uZmlnIERQODM4NDhfUEhZXG4gNDQ3Olx0XHR0cmlzdGF0ZSBcJiMzNDtUZXhhcyBJbnN0cnVtZW50cyBEUDgzODQ4IFBIWVwmIzM0O1xuIDQ0ODpcdFx0aGVscFxuIDQ0OTpcdFx0ICBTdXBwb3J0cyB0aGUgRFA4Mzg0OCBQSFkuXG4gNDUwOlx0XG4gNDUxOlx0Y29uZmlnIERQODM4NjdfUEhZXG4gNDUyOlx0XHR0cmlzdGF0ZSBcJiMzNDtUZXhhcyBJbnN0cnVtZW50cyBEUDgzODY3IEdpZ2FiaXQgUEhZXCYjMzQ7XG4gNDUzOlx0XHRoZWxwXG4gNDU0Olx0XHQgIEN1cnJlbnRseSBzdXBwb3J0cyB0aGUgRFA4Mzg2NyBQSFkuXG4gNDU1Olx0XG4gNDU2Olx0Y29uZmlnIERQODM4NjlfUEhZXG4gNDU3Olx0XHR0cmlzdGF0ZSBcJiMzNDtUZXhhcyBJbnN0cnVtZW50cyBEUDgzODY5IEdpZ2FiaXQgUEhZXCYjMzQ7XG4gNDU4Olx0XHRoZWxwXG4gNDU5Olx0XHQgIEN1cnJlbnRseSBzdXBwb3J0cyB0aGUgRFA4Mzg2OSBQSFkuICBUaGlzIFBIWSBzdXBwb3J0cyBjb3BwZXIgYW5kXG4gNDYwOlx0XHQgIGZpYmVyIGNvbm5lY3Rpb25zLlxuIDQ2MTpcdFxuIDQ2MjpcdGNvbmZpZyBEUDgzVEQ1MTBfUEhZXG4gNDYzOlx0XHR0cmlzdGF0ZSBcJiMzNDtUZXhhcyBJbnN0cnVtZW50cyBEUDgzVEQ1MTAgRXRoZXJuZXQgMTBCYXNlLVQxTCBQSFlcJiMzNDtcbiA0NjQ6XHRcdGhlbHBcbiA0NjU6XHRcdCAgU3VwcG9ydCBmb3IgdGhlIERQODNURDUxMCBFdGhlcm5ldCAxMEJhc2UtVDFMIFBIWS4gVGhpcyBQSFkgc3VwcG9ydHNcbiA0NjY6XHRcdCAgYSAxME0gc2luZ2xlIHBhaXIgRXRoZXJuZXQgY29ubmVjdGlvbiBmb3IgdXAgdG8gMTAwMCBtZXRlciBjYWJsZS5cbiA0Njc6XHRcbiA0Njg6XHRjb25maWcgRFA4M1RHNzIwX1BIWVxuIDQ2OTpcdFx0dHJpc3RhdGUgXCYjMzQ7VGV4YXMgSW5zdHJ1bWVudHMgRFA4M1RHNzIwIEV0aGVybmV0IDEwMDBCYXNlLVQxIFBIWVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwMDoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTQ2NwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNoZWNraW5nIHRoZSBQSFkgS2NvbmZpZyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGlzIFBIWSBkcml2ZXIuIE15IGZpcnN0IG1vdmUgaXMgdG8gZ28gc3RyYWlnaHQgdG8gYGRyaXZlcnMvbmV0L3BoeS9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBjb25maWd1cmF0aW9uIGRlY2lzaW9ucyBhcmUgbWFkZSBmb3IgdGhlc2UgUEhZIGNvbXBvbmVudHMuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGRlcGVuZGVuY2llcywgc2VsZWN0IHN0YXRlbWVudHMsIGFuZCBvcHRpb24gZGVmaW5pdGlvbnMgdGhhdCBkaWN0YXRlIHdoYXQgZ2V0cyBidWlsdCBhbmQgaW5jbHVkZWQgaW4gdGhlIGtlcm5lbCBpbWFnZS4gS25vd2luZyB0aGUgS2NvbmZpZyBpcyBrZXkgdG8gbmF2aWdhdGluZyB0aGUgYnJvYWRlciBkcml2ZXIgYXJjaGl0ZWN0dXJlIGFuZCB1bmRlcnN0YW5kaW5nIGhvdyBkaWZmZXJlbnQgUEhZIHR5cGVzIGFyZSBlbmFibGVkIGFuZCBkaXNhYmxlZC4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIGFueSBpbi1kZXB0aCBjb25maWd1cmF0aW9uIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwMDoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgUEhZIExheWVyIENvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0Y29uZmlnIFBIWUxJTktcbiAgIDc6XHRcdHRyaXN0YXRlXG4gICA4Olx0XHRzZWxlY3QgUEhZTElCXG4gICA5Olx0XHRzZWxlY3QgU1dQSFlcbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgUEhZbGluayBtb2RlbHMgdGhlIGxpbmsgYmV0d2VlbiB0aGUgUEhZIGFuZCBNQUMsIGFsbG93aW5nIGZpeGVkXG4gIDEyOlx0XHQgIGNvbmZpZ3VyYXRpb24gbGlua3MsIFBIWXMsIGFuZCBTZXJkZXMgbGlua3Mgd2l0aCBNQUMgbGV2ZWxcbiAgMTM6XHRcdCAgYXV0b25lZ290aWF0aW9uIG1vZGVzLlxuICAxNDpcdFxuICAxNTpcdG1lbnVjb25maWcgUEhZTElCXG4gIDE2Olx0XHR0cmlzdGF0ZSBcJiMzNDtQSFkgRGV2aWNlIHN1cHBvcnQgYW5kIGluZnJhc3RydWN0dXJlXCYjMzQ7XG4gIDE3Olx0XHRoZWxwXG4gIDE4Olx0XHQgIEV0aGVybmV0IGNvbnRyb2xsZXJzIGFyZSB1c3VhbGx5IGF0dGFjaGVkIHRvIFBIWVxuICAxOTpcdFx0ICBkZXZpY2VzLiAgVGhpcyBvcHRpb24gcHJvdmlkZXMgaW5mcmFzdHJ1Y3R1cmUgZm9yXG4gIDIwOlx0XHQgIG1hbmFnaW5nIFBIWSBkZXZpY2VzLlxuICAyMTpcdFxuICAyMjpcdGlmIFBIWUxJQlxuICAyMzpcdFxuICAyNDpcdGNvbmZpZyBTV1BIWVxuICAyNTpcdFx0Ym9vbFxuICAyNjpcdFxuICAyNzpcdGNvbmZpZyBQSFlfUEFDS0FHRVxuICAyODpcdFx0IHRyaXN0YXRlXG4gIDI5Olx0XG4gIDMwOlx0Y29uZmlnIExFRF9UUklHR0VSX1BIWVxuICAzMTpcdFx0Ym9vbCBcJiMzNDtTdXBwb3J0IExFRCB0cmlnZ2VycyBmb3IgdHJhY2tpbmcgbGluayBzdGF0ZVwmIzM0O1xuICAzMjpcdFx0ZGVwZW5kcyBvbiBMRURTX1RSSUdHRVJTXG4gIDMzOlx0XHRoZWxwXG4gIDM0Olx0XHQgIEFkZHMgc3VwcG9ydCBmb3IgYSBzZXQgb2YgTEVEIHRyaWdnZXIgZXZlbnRzIHBlci1QSFkuICBMaW5rXG4gIDM1Olx0XHQgIHN0YXRlIGNoYW5nZSB3aWxsIHRyaWdnZXIgdGhlIGV2ZW50cywgZm9yIGNvbnN1bXB0aW9uIGJ5IGFuXG4gIDM2Olx0XHQgIExFRCBjbGFzcyBkcml2ZXIuICBUaGVyZSBhcmUgdHJpZ2dlcnMgZm9yIGVhY2ggbGluayBzcGVlZCBjdXJyZW50bHlcbiAgMzc6XHRcdCAgc3VwcG9ydGVkIGJ5IHRoZSBQSFkgYW5kIGFsc28gYSBvbmUgY29tbW9uIFwmIzM0O2xpbmtcJiMzNDsgdHJpZ2dlciBhcyBhXG4gIDM4Olx0XHQgIGxvZ2ljYWwtb3Igb2YgYWxsIHRoZSBsaW5rIHNwZWVkIG9uZXMuXG4gIDM5Olx0XHQgIEFsbCB0aGVzZSB0cmlnZ2VycyBhcmUgbmFtZWQgYWNjb3JkaW5nIHRvIHRoZSBmb2xsb3dpbmcgcGF0dGVybjpcbiAgNDA6XHRcdCAgICAgIFx1MDAzY21paSBidXMgaWRcdTAwM2U6XHUwMDNjcGh5XHUwMDNlOlx1MDAzY3NwZWVkXHUwMDNlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDAwOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyMTIwCgkJCQkJCQlvdXRwdXQ6IDIyMQoJCQkJCQkJdGhvdWdodHM6IDc4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBEUDgzODY3IFBIWSBEcml2ZXI6IEEgUmVhY2hhYmlsaXR5IEFuYWx5c2lzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgUEhZTElCYCBhbmQgdGhlIGBEUDgzODY3X1BIWWAgZHJpdmVyLiBUaGUgY3J1Y2lhbCBxdWVzdGlvbiBpczogQ2FuIEkgZXZlbiByZWFjaCB0aGUgYERQODM4NjdfUEhZYCB3aXRoaW4gYSBmdXp6aW5nIGNvbnRleHQ/IEkgbmVlZCB0byBhbmFseXplIGl0cyByZWFjaGFiaWxpdHkuIEl0IHNlZW1zIGxpa2UgYW4gTURJTyBQSFkgZHJpdmVyLCBzbyBsZXQmIzM5O3Mgc2VlIGhvdyB0aGF0IHdvcmtzIGluIHN5emthbGxlci4KClJpZ2h0LCBVU0IgRXRoZXJuZXQgZHJpdmVycyBsaWtlIGBhc2l4YCwgYGF4ODgxNzJhYCwgYHNtc2M5NXh4YCBhbmQgb3RoZXJzLCB0aGV5IGNyZWF0ZSBNRElPIGJ1c2VzIHZpYSBgbWRpb2J1c19yZWdpc3RlcmAuICBUaGF0JiMzOTtzIGtleS4gQW5kIGluIGEgc3RhbmRhcmQgc3l6a2FsbGVyIHNldHVwIHdpdGggcmF3LWdhZGdldCBvciBVU0IgZW11bGF0aW9uLCBzeXprYWxsZXIgY2FuIGVtdWxhdGUgVVNCIEV0aGVybmV0IGRldmljZXMuICBTbyBmYXIsIHNvIGdvb2QuCgpXaGVuIHRoaXMgTURJTyBidXMgaXMgcmVnaXN0ZXJlZCwgaXQgaW50ZXJyb2dhdGVzIE1JSSByZWdpc3RlcnMgMiBhbmQgMyDigJMgYE1JSV9QSFlTSUQxYCBhbmQgYE1JSV9QSFlTSUQyYC4gIElmIHRoZSBlbXVsYXRlZCBVU0IgZGV2aWNlICpyZXNwb25kcyogd2l0aCB0aGUgUEhZIElEIGZvciBgRFA4Mzg2N19QSFlfSURgICgweDIwMDBhMjMxKSwgdGhlbiB0aGUgUEhZIHN1YnN5c3RlbSB3aWxsIG1hdGNoIHRoZSBgZHA4Mzg2N19kcml2ZXJgLiBCaW5nby4gSXQgd2lsbCB0cmlnZ2VyIGBkcDgzODY3X3Byb2JlYCBhbmQgdGhlbiBgZHA4Mzg2N19jb25maWdfaW5pdGAuCgpPbmNlIHByb2JlZCwgdGhhdCBvcGVucyB0aGUgZG9vciB0byB1c2Vyc3BhY2UgaW50ZXJhY3Rpb24gdmlhIGludGVyZmFjZXMgbGlrZSBldGh0b29sLCBzeXNmcyBMRUQgY2xhc3MsIG9yIG5ldGxpbmsuIFRoYXQgY291bGQgdGhlbiB0cmlnZ2VyIGAubGVkX2JyaWdodG5lc3Nfc2V0YCwgYC5sZWRfaHdfY29udHJvbF9zZXRgLCBgLmxlZF9wb2xhcml0eV9zZXRgLCBldGMuIG9yIGV2ZW4gYSByZS1pbml0aWFsaXphdGlvbiB0aHJvdWdoIGEgc29mdCByZXNldC4gIFRoYXQmIzM5O3MgYWxsIHBvdGVudGlhbGx5IGZ1enphYmxlLgoKSSBhbHNvIHNlZSB0aGF0IHRoaXMgcGF0Y2ggYWRkcyBhIG11dGV4IGBsZWRfbG9ja2AsIHNoYWRvdyBzdGF0ZSB3aXRoIGBsZWRjcjFgL2BsZWRjcjJgIGFuZCwgaW1wb3J0YW50bHksIGEgYFdBUk5fT05fT05DRSgxKWAgYXNzZXJ0aW9uIHdpdGhpbiBhIHJlYWNoYWJsZSBwYXRoOiBgX19kcDgzODY3X2xlZF9tb2RpZnlgLiBUaGlzIGlzIGEgYmlnIHJlZCBmbGFnIOKAkyB0aGF0JiMzOTtzIGEgcGVyZmVjdCB0YXJnZXQuCgpOb3csIGxldCYjMzk7cyBsb29rIGF0IHRoZSBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gY2hhbmdlZDogYF9fZHA4Mzg2N19sZWRfbW9kaWZ5YCwgYGRwODM4NjdfbGVkX3Jlc3RvcmVgLCBgZHA4Mzg2N19wcm9iZWAsIGBkcDgzODY3X2NvbmZpZ19pbml0YCwgYGRwODM4NjdfbGVkX2JyaWdodG5lc3Nfc2V0YCwgYGRwODM4NjdfbGVkX2h3X2NvbnRyb2xfc2V0YCwgYW5kIGBkcDgzODY3X2xlZF9wb2xhcml0eV9zZXRgLiBUaG9zZSBhcmUgbXkgdGFyZ2V0IGZ1bmN0aW9ucy4KCkkgbmVlZCB0byBmb2N1cyBvbiB0aGVzZSwgZXNwZWNpYWxseSB0aGUgb25lcyB0aGF0IGFyZW4mIzM5O3Qgc3RhdGljIG9yIHNwZWNpZmljIGZ1bmN0aW9ucywgdGhhdCBhcmUgZXhwb3J0ZWQ6IGBkcDgzODY3X2xlZF9icmlnaHRuZXNzX3NldGAsIGBkcDgzODY3X2xlZF9od19jb250cm9sX3NldGAsIGBkcDgzODY3X2xlZF9wb2xhcml0eV9zZXRgLCBgZHA4Mzg2N19jb25maWdfaW5pdGAsIGFuZCBgZHA4Mzg2N19wcm9iZWAuCgpJIG5lZWQgdG8gZW5hYmxlIHRoZXNlIGNvbmZpZ3M6IGBQSFlMSUJgIGFuZCBgRFA4Mzg2N19QSFlgLgoKTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrOgoqICAgKipSZWFjaGFiaWxpdHk/KiogQ2hlY2suIFZpYSBVU0IgZ2FkZ2V0IGVtdWxhdGlvbiBhbmQgVVNCIGV0aGVybmV0IHdpdGggTURJTyBidXMuCiogICAqKk5ldy9Nb2RpZmllZCBBc3NlcnRpb25zPyoqIFllcywgdGhhdCBgV0FSTl9PTl9PTkNFKDEpYCBpcyBwcmltZS4KKiAgICoqV29ydGggRnV6emluZz8qKiBBYnNvbHV0ZWx5LgoKQWxyaWdodCwgdGhhdCBjb3ZlcnMgaXQuICBMZXQmIzM5O3MgcHV0IHRvZ2V0aGVyIHRoZSByZXN1bHRzIGFuZCBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDAwOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQSFlMSUImIzM0OywKICAgICYjMzQ7RFA4Mzg2N19QSFkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkcDgzODY3X2xlZF9icmlnaHRuZXNzX3NldCYjMzQ7LAogICAgJiMzNDtkcDgzODY3X2xlZF9od19jb250cm9sX3NldCYjMzQ7LAogICAgJiMzNDtkcDgzODY3X2xlZF9wb2xhcml0eV9zZXQmIzM0OywKICAgICYjMzQ7ZHA4Mzg2N19jb25maWdfaW5pdCYjMzQ7LAogICAgJiMzNDtkcDgzODY3X3Byb2JlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUZXhhcyBJbnN0cnVtZW50cyBEUDgzODY3IFBIWSBkcml2ZXIgKGRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMpIGJ5IGludHJvZHVjaW5nIGEgbmV3IG11dGV4IChsZWRfbG9jaykgYW5kIHNoYWRvdyByZWdpc3RlcnMgdG8gcHJvcGVybHkgcmVzdG9yZSBMRUQgY29uZmlndXJhdGlvbnMgYWNyb3NzIHNvZnQgcmVzZXRzLCBhbG9uZyB3aXRoIHJ1bnRpbWUgYXNzZXJ0aW9ucyAoV0FSTl9PTl9PTkNFKS4gVGhlIGRyaXZlciBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgRXRoZXJuZXQgYWRhcHRlcnMgZXhwb3NpbmcgTURJTyBidXNlcy4gRnV6emluZyBpcyB3YXJyYW50ZWQgdG8gdmVyaWZ5IGNvbmN1cnJlbmN5IGFuZCBwcm9wZXIgc2VyaWFsaXphdGlvbiBiZXR3ZWVuIGNvbmZpZ19pbml0IHNvZnQtcmVzZXQgcmVzdG9yZSBhbmQgTEVEIGNvbnRyb2wgb3BlcmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UEhZTElCJiMzNDssCiAgICAmIzM0O0RQODM4NjdfUEhZJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZHA4Mzg2N19sZWRfYnJpZ2h0bmVzc19zZXQmIzM0OywKICAgICYjMzQ7ZHA4Mzg2N19sZWRfaHdfY29udHJvbF9zZXQmIzM0OywKICAgICYjMzQ7ZHA4Mzg2N19sZWRfcG9sYXJpdHlfc2V0JiMzNDssCiAgICAmIzM0O2RwODM4NjdfY29uZmlnX2luaXQmIzM0OywKICAgICYjMzQ7ZHA4Mzg2N19wcm9iZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgVGV4YXMgSW5zdHJ1bWVudHMgRFA4Mzg2NyBQSFkgZHJpdmVyIChkcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jKSBieSBpbnRyb2R1Y2luZyBhIG5ldyBtdXRleCAobGVkX2xvY2spIGFuZCBzaGFkb3cgcmVnaXN0ZXJzIHRvIHByb3Blcmx5IHJlc3RvcmUgTEVEIGNvbmZpZ3VyYXRpb25zIGFjcm9zcyBzb2Z0IHJlc2V0cywgYWxvbmcgd2l0aCBydW50aW1lIGFzc2VydGlvbnMgKFdBUk5fT05fT05DRSkuIFRoZSBkcml2ZXIgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIEV0aGVybmV0IGFkYXB0ZXJzIGV4cG9zaW5nIE1ESU8gYnVzZXMuIEZ1enppbmcgaXMgd2FycmFudGVkIHRvIHZlcmlmeSBjb25jdXJyZW5jeSBhbmQgcHJvcGVyIHNlcmlhbGl6YXRpb24gYmV0d2VlbiBjb25maWdfaW5pdCBzb2Z0LXJlc2V0IHJlc3RvcmUgYW5kIExFRCBjb250cm9sIG9wZXJhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDAwOjI5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMDA6Mjk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgc2hhZG93IG1lY2hhbmlzbSBhbmQgbXV0ZXggbG9ja2luZyBmb3IgTEVEIHJlZ2lzdGVycyBpbiB0aGUgRFA4Mzg2NyBQSFkgZHJpdmVyIChkcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jKS4gVGhlIHByaXZhdGUgc3RydWN0dXJlIGBzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlYCBpcyBhbGxvY2F0ZWQgdXNpbmcgYGRldm1fa3phbGxvYygpYCwgZW5zdXJpbmcgdGhhdCBhbGwgbmV3bHkgaW50cm9kdWNlZCBmaWVsZHMgKGBsZWRfbG9ja2AsIGBsZWRjcjFgLCBgbGVkY3IxX21hc2tgLCBgbGVkY3IyYCwgYGxlZGNyMl9tYXNrYCkgYXJlIGZ1bGx5IHplcm8taW5pdGlhbGl6ZWQuIEFsbCBsb2NhbCB2YXJpYWJsZXMgYXJlIHByb3Blcmx5IGluaXRpYWxpemVkIGJlZm9yZSB1c2UuIE5vIGRhdGEgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgaXMgYWNjZXNzZWQgb3IgYnJhbmNoZWQgdXBvbiwgYW5kIGFueSBwb3RlbnRpYWwgbG9ja2luZyBvciByYWNlIGJ1Z3MgYXJlIGhhbmRsZWQgYnkgc3RhbmRhcmQgc2FuaXRpemVycyBzdWNoIGFzIExPQ0tERVAgYW5kIEtBU0FOLiBUaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDQ0YzE2NWNhZjBjYzkwMjZiOTA3MDFkYmUyMWM0ZTc3MDgzNmFlMjYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIFNlcCA5IDAwOjI4OjUxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYyBiL2RyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMKaW5kZXggODgyNTVlOTJiNGNkYi4uZWViNGNkNjQ4Zjc0MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jCkBAIC04LDYgJiM0Mzs4LDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9rZXJuZWwuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9taWkuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9tb2R1bGUuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvbXV0ZXguaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9vZi5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BoeS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2RlbGF5LmgmZ3Q7CkBAIC0xOTYsNiAmIzQzOzE5NywxNiBAQCBzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlIHsKIAlib29sIHNldF9jbGtfb3V0cHV0OwogCXUzMiBjbGtfb3V0cHV0X3NlbDsKIAlib29sIHNnbWlpX3JlZl9jbGtfZW47CiYjNDM7CiYjNDM7CS8qIFNoYWRvdyBvZiB0aGUgTEVEIHJlZ2lzdGVycywgcmVwbGF5ZWQgYWZ0ZXIgYSBzb2Z0IHJlc2V0LiBsZWRfbG9jawomIzQzOwkgKiBzZXJpYWxpemVzIHRoZSBzaGFkb3cgYW5kIGl0cyByZXBsYXkgYWdhaW5zdCB0aGUgTEVEIGNhbGxiYWNrcywKJiM0MzsJICogYmVjYXVzZSBkcDgzODY3X2NvbmZpZ19pbml0KCkgZG9lcyB0aGUgcmVwbGF5IG9mZiBwaHlkZXYtJmd0O2xvY2suCiYjNDM7CSAqLwomIzQzOwlzdHJ1Y3QgbXV0ZXggbGVkX2xvY2s7CiYjNDM7CXUxNiBsZWRjcjE7CiYjNDM7CXUxNiBsZWRjcjFfbWFzazsKJiM0MzsJdTE2IGxlZGNyMjsKJiM0MzsJdTE2IGxlZGNyMl9tYXNrOwogfTsKIAogc3RhdGljIGludCBkcDgzODY3X2Fja19pbnRlcnJ1cHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKQEAgLTcyMiw2ICYjNDM7NzMzLDcgQEAgc3RhdGljIGludCBkcDgzODY3X3Jlc3VtZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogc3RhdGljIGludCBkcDgzODY3X3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiB7CiAJc3RydWN0IGRwODM4NjdfcHJpdmF0ZSAqZHA4Mzg2NzsKJiM0MzsJaW50IHJldDsKIAogCWRwODM4NjcgPSBkZXZtX2t6YWxsb2MoJmFtcDtwaHlkZXYtJmd0O21kaW8uZGV2LCBzaXplb2YoKmRwODM4NjcpLAogCQkJICAgICAgIEdGUF9LRVJORUwpOwpAQCAtNzMwLDkgJiM0Mzs3NDIsNjAgQEAgc3RhdGljIGludCBkcDgzODY3X3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiAKIAlwaHlkZXYtJmd0O3ByaXYgPSBkcDgzODY3OwogCiYjNDM7CXJldCA9IGRldm1fbXV0ZXhfaW5pdCgmYW1wO3BoeWRldi0mZ3Q7bWRpby5kZXYsICZhbXA7ZHA4Mzg2Ny0mZ3Q7bGVkX2xvY2spOwomIzQzOwlpZiAocmV0KQomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsKIAlyZXR1cm4gZHA4Mzg2N19vZl9pbml0KHBoeWRldik7CiB9CiAKJiM0MzsvKiBVcGRhdGUgYW4gTEVEIHJlZ2lzdGVyIGFuZCBtaXJyb3IgdGhlIGNoYW5nZSBpbnRvIHRoZSBzaGFkb3csIHNvIHRoYXQKJiM0MzsgKiBkcDgzODY3X2NvbmZpZ19pbml0KCkgY2FuIHJlcGxheSBpdCBhZnRlciBhIHNvZnQgcmVzZXQuIENhbGxlciBtdXN0IGhvbGQKJiM0MzsgKiBkcDgzODY3LSZndDtsZWRfbG9jay4KJiM0MzsgKi8KJiM0MztzdGF0aWMgaW50IF9fZHA4Mzg2N19sZWRfbW9kaWZ5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUzMiByZWcsCiYjNDM7CQkJCXUxNiBtYXNrLCB1MTYgdmFsKQomIzQzO3sKJiM0MzsJc3RydWN0IGRwODM4NjdfcHJpdmF0ZSAqZHA4Mzg2NyA9IHBoeWRldi0mZ3Q7cHJpdjsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJcmV0ID0gcGh5X21vZGlmeShwaHlkZXYsIHJlZywgbWFzaywgdmFsKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiYjNDM7CWlmIChyZWcgPT0gRFA4Mzg2N19MRURDUjEpIHsKJiM0MzsJCWRwODM4NjctJmd0O2xlZGNyMSA9IChkcDgzODY3LSZndDtsZWRjcjEgJmFtcDsgfm1hc2spIHwgKHZhbCAmYW1wOyBtYXNrKTsKJiM0MzsJCWRwODM4NjctJmd0O2xlZGNyMV9tYXNrIHw9IG1hc2s7CiYjNDM7CX0gZWxzZSBpZiAocmVnID09IERQODM4NjdfTEVEQ1IyKSB7CiYjNDM7CQlkcDgzODY3LSZndDtsZWRjcjIgPSAoZHA4Mzg2Ny0mZ3Q7bGVkY3IyICZhbXA7IH5tYXNrKSB8ICh2YWwgJmFtcDsgbWFzayk7CiYjNDM7CQlkcDgzODY3LSZndDtsZWRjcjJfbWFzayB8PSBtYXNrOwomIzQzOwl9IGVsc2UgewomIzQzOwkJV0FSTl9PTl9PTkNFKDEpOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MzsvKiBSZXN0b3JlIHRoZSBMRUQgcmVnaXN0ZXJzIHRoZSBkcml2ZXIgaGFzIHByb2dyYW1tZWQsIGNsZWFyZWQgYnkgdGhlIHNvZnQKJiM0MzsgKiByZXNldCBpbiBkcDgzODY3X3BoeV9yZXNldCgpLgomIzQzOyAqLwomIzQzO3N0YXRpYyBpbnQgZHA4Mzg2N19sZWRfcmVzdG9yZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQomIzQzO3sKJiM0MzsJc3RydWN0IGRwODM4NjdfcHJpdmF0ZSAqZHA4Mzg2NyA9IHBoeWRldi0mZ3Q7cHJpdjsKJiM0MzsJaW50IHJldCA9IDA7CiYjNDM7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtkcDgzODY3LSZndDtsZWRfbG9jayk7CiYjNDM7CWlmIChkcDgzODY3LSZndDtsZWRjcjFfbWFzaykKJiM0MzsJCXJldCA9IHBoeV9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMSwKJiM0MzsJCQkJIGRwODM4NjctJmd0O2xlZGNyMV9tYXNrLCBkcDgzODY3LSZndDtsZWRjcjEpOwomIzQzOwlpZiAoIXJldCAmYW1wOyZhbXA7IGRwODM4NjctJmd0O2xlZGNyMl9tYXNrKQomIzQzOwkJcmV0ID0gcGh5X21vZGlmeShwaHlkZXYsIERQODM4NjdfTEVEQ1IyLAomIzQzOwkJCQkgZHA4Mzg2Ny0mZ3Q7bGVkY3IyX21hc2ssIGRwODM4NjctJmd0O2xlZGNyMik7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2RwODM4NjctJmd0O2xlZF9sb2NrKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJldDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IGRwODM4NjdfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIHsKIAlzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlICpkcDgzODY3ID0gcGh5ZGV2LSZndDtwcml2OwpAQCAtODk2LDYgJiM0Mzs5NTksMTAgQEAgc3RhdGljIGludCBkcDgzODY3X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiAJCQkgICAgICAgbWFzaywgdmFsKTsKIAl9CiAKJiM0MzsJcmV0ID0gZHA4Mzg2N19sZWRfcmVzdG9yZShwaHlkZXYpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJcGh5ZGV2X3dhcm4ocGh5ZGV2LCAmIzM0O2ZhaWxlZCB0byByZXN0b3JlIExFRCBjb25maWc6ICVkXG4mIzM0OywgcmV0KTsKJiM0MzsKIAlyZXR1cm4gMDsKIH0KIApAQCAtMTAwNCw3ICYjNDM7MTA3MSw5IEBAIHN0YXRpYyBpbnQKIGRwODM4NjdfbGVkX2JyaWdodG5lc3Nfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsCiAJCQkgICB1OCBpbmRleCwgZW51bSBsZWRfYnJpZ2h0bmVzcyBicmlnaHRuZXNzKQogewotCXUzMiB2YWw7CiYjNDM7CXN0cnVjdCBkcDgzODY3X3ByaXZhdGUgKmRwODM4NjcgPSBwaHlkZXYtJmd0O3ByaXY7CiYjNDM7CXUxNiB2YWw7CiYjNDM7CWludCByZXQ7CiAKIAlpZiAoaW5kZXggJmd0Oz0gRFA4Mzg2N19MRURfQ09VTlQpCiAJCXJldHVybiAtRUlOVkFMOwpAQCAtMTAxNSwxMCAmIzQzOzEwODQsMTMgQEAgZHA4Mzg2N19sZWRfYnJpZ2h0bmVzc19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwKIAlpZiAoYnJpZ2h0bmVzcykKIAkJdmFsIHw9IERQODM4NjdfTEVEX0RSVl9WQUwoaW5kZXgpOwogCi0JcmV0dXJuIHBoeV9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMiwKLQkJCSAgRFA4Mzg2N19MRURfRFJWX1ZBTChpbmRleCkgfAotCQkJICBEUDgzODY3X0xFRF9EUlZfRU4oaW5kZXgpLAotCQkJICB2YWwpOwomIzQzOwltdXRleF9sb2NrKCZhbXA7ZHA4Mzg2Ny0mZ3Q7bGVkX2xvY2spOwomIzQzOwlyZXQgPSBfX2RwODM4NjdfbGVkX21vZGlmeShwaHlkZXYsIERQODM4NjdfTEVEQ1IyLAomIzQzOwkJCQkgICBEUDgzODY3X0xFRF9EUlZfVkFMKGluZGV4KSB8CiYjNDM7CQkJCSAgIERQODM4NjdfTEVEX0RSVl9FTihpbmRleCksIHZhbCk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2RwODM4NjctJmd0O2xlZF9sb2NrKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGludCBkcDgzODY3X2xlZF9tb2RlKHU4IGluZGV4LCB1bnNpZ25lZCBsb25nIHJ1bGVzKQpAQCAtMTA2OSwxOCAmIzQzOzExNDEsMjQgQEAgc3RhdGljIGludCBkcDgzODY3X2xlZF9od19pc19zdXBwb3J0ZWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsCiBzdGF0aWMgaW50IGRwODM4NjdfbGVkX2h3X2NvbnRyb2xfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LAogCQkJCSAgICAgIHVuc2lnbmVkIGxvbmcgcnVsZXMpCiB7CiYjNDM7CXN0cnVjdCBkcDgzODY3X3ByaXZhdGUgKmRwODM4NjcgPSBwaHlkZXYtJmd0O3ByaXY7CiAJaW50IG1vZGUsIHJldDsKIAogCW1vZGUgPSBkcDgzODY3X2xlZF9tb2RlKGluZGV4LCBydWxlcyk7CiAJaWYgKG1vZGUgJmx0OyAwKQogCQlyZXR1cm4gbW9kZTsKIAotCXJldCA9IHBoeV9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMSwgRFA4Mzg2N19MRURfRk5fTUFTSyhpbmRleCksCi0JCQkgRFA4Mzg2N19MRURfRk4oaW5kZXgsIG1vZGUpKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCi0JcmV0dXJuIHBoeV9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMiwgRFA4Mzg2N19MRURfRFJWX0VOKGluZGV4KSwgMCk7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtkcDgzODY3LSZndDtsZWRfbG9jayk7CiYjNDM7CXJldCA9IF9fZHA4Mzg2N19sZWRfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjEsCiYjNDM7CQkJCSAgIERQODM4NjdfTEVEX0ZOX01BU0soaW5kZXgpLAomIzQzOwkJCQkgICBEUDgzODY3X0xFRF9GTihpbmRleCwgbW9kZSkpOwomIzQzOwlpZiAoIXJldCkKJiM0MzsJCXJldCA9IF9fZHA4Mzg2N19sZWRfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjIsCiYjNDM7CQkJCQkgICBEUDgzODY3X0xFRF9EUlZfRU4oaW5kZXgpIHwKJiM0MzsJCQkJCSAgIERQODM4NjdfTEVEX0RSVl9WQUwoaW5kZXgpLCAwKTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7ZHA4Mzg2Ny0mZ3Q7bGVkX2xvY2spOwomIzQzOwomIzQzOwlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgaW50IGRwODM4NjdfbGVkX2h3X2NvbnRyb2xfZ2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LApAQCAtMTE0MSw5ICYjNDM7MTIxOSwxMSBAQCBzdGF0aWMgaW50IGRwODM4NjdfbGVkX2h3X2NvbnRyb2xfZ2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LAogc3RhdGljIGludCBkcDgzODY3X2xlZF9wb2xhcml0eV9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGluZGV4LAogCQkJCSAgICB1bnNpZ25lZCBsb25nIG1vZGVzKQogewomIzQzOwlzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlICpkcDgzODY3ID0gcGh5ZGV2LSZndDtwcml2OwogCS8qIERlZmF1bHQgYWN0aXZlIGhpZ2ggKi8KIAl1MTYgcG9sYXJpdHkgPSBEUDgzODY3X0xFRF9QT0xBUklUWShpbmRleCk7CiAJdTMyIG1vZGU7CiYjNDM7CWludCByZXQ7CiAKIAlmb3JfZWFjaF9zZXRfYml0KG1vZGUsICZhbXA7bW9kZXMsIF9fUEhZX0xFRF9NT0RFU19OVU0pIHsKIAkJc3dpdGNoIChtb2RlKSB7CkBAIC0xMTU0LDggJiM0MzsxMjM0LDEzIEBAIHN0YXRpYyBpbnQgZHA4Mzg2N19sZWRfcG9sYXJpdHlfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpbmRleCwKIAkJCXJldHVybiAtRUlOVkFMOwogCQl9CiAJfQotCXJldHVybiBwaHlfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjIsCi0JCQkgIERQODM4NjdfTEVEX1BPTEFSSVRZKGluZGV4KSwgcG9sYXJpdHkpOwomIzQzOwomIzQzOwltdXRleF9sb2NrKCZhbXA7ZHA4Mzg2Ny0mZ3Q7bGVkX2xvY2spOwomIzQzOwlyZXQgPSBfX2RwODM4NjdfbGVkX21vZGlmeShwaHlkZXYsIERQODM4NjdfTEVEQ1IyLAomIzQzOwkJCQkgICBEUDgzODY3X0xFRF9QT0xBUklUWShpbmRleCksIHBvbGFyaXR5KTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7ZHA4Mzg2Ny0mZ3Q7bGVkX2xvY2spOwomIzQzOwomIzQzOwlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgdW5zaWduZWQgaW50IGRwODM4NjdfaW5iYW5kX2NhcHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDAwOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2NDgKCQkJCQkJCW91dHB1dDogMTkzCgkJCQkJCQl0aG91Z2h0czogODQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktNU0FOIEV2YWx1YXRpb246IGRwODM4NjcgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgdGFzayBpcyB0byBldmFsdWF0ZSB0aGlzIHBhdGNoIHRvIGBkcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jYCBhbmQgZGVjaWRlIGlmIGl0IHdhcnJhbnRzIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4gVGhlIHByaW1hcnkgY2hhbmdlIHNlZW1zIHRvIGJlIHRoZSBhZGRpdGlvbiBvZiBhIG11dGV4IChgbGVkX2xvY2tgKSBhbmQgc2hhZG93IHJlZ2lzdGVycyAoYGxlZGNyMWAsIGBsZWRjcjFfbWFza2AsIGBsZWRjcjJgLCBgbGVkY3IyX21hc2tgKSB3aXRoaW4gdGhlIGBkcDgzODY3X3ByaXZhdGVgIHN0cnVjdC4gVGhpcyBpcyBhbGwgYWJvdXQgbWFuYWdpbmcgTEVEIHJlZ2lzdGVyIHNldHRpbmdzIGluIHRoZSBQSFkgZHJpdmVyLCBpbmNsdWRpbmcgcmVnaXN0ZXIgY2FjaGluZyBhbmQgcmVzdG9yYXRpb24gYWZ0ZXIgc29mdCByZXNldHMsIGFuZCBlbnN1cmluZyBzeW5jaHJvbml6YXRpb24uCgpGaXJzdCwgSSBuZWVkIHRvIGNoZWNrIGZvciBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgbGVha3MuIFRoZSBwYXRjaCB1c2VzIGBkZXZtX2t6YWxsb2NgIHRvIGFsbG9jYXRlIHRoZSBgZHA4Mzg2N2Agc3RydWN0dXJlLCB3aGljaCBtZWFucyBhbGwgdGhlIG5ldyBmaWVsZHMsIGluY2x1ZGluZyB0aG9zZSByZWxhdGVkIHRvIHRoZSBMRUQgZnVuY3Rpb25hbGl0eSwgYXJlIGd1YXJhbnRlZWQgdG8gYmUgemVyby1pbml0aWFsaXplZC4gSSBzZWUgdGhhdCBgZHA4Mzg2N19sZWRfcmVzdG9yZWAgdXNlcyB0aGUgbWFzayBmaWVsZHMsIGJ1dCB0aGV5IGFyZSBlaXRoZXIgemVyby1pbml0aWFsaXplZCBvciB3cml0dGVuIHRvIGZpcnN0LiBJIGRvbiYjMzk7dCBzZWUgYW55IGRhdGEgYmVpbmcgY29waWVkIHRvIHVzZXJzcGFjZSB2aWEgYGNvcHlfdG9fdXNlcmAsIGlvY3RsLCBvciBuZXRsaW5rLCBlbGltaW5hdGluZyB0aGF0IHZlY3Rvci4gVGhlIGxvY2FsIHZhcmlhYmxlcyAoYHJldGAsIGBkcDgzODY3YCwgYHZhbGAsIGV0Yy4pIGFyZSBhbHNvIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgYmVmb3JlIHVzZSwgYSBzdGFuZGFyZCBwcmFjdGljZSBJIGV4cGVjdCB0byBzZWUsIHdoaWNoIGlzIGdvb2QuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2VzIGlzIGNlbnRlcmVkIGFyb3VuZCByZWdpc3RlciBhY2Nlc3MgYW5kIGxvY2tpbmcsIG5vdCBpbnRyb2R1Y2luZyBuZXcgZGF0YSBzdHJ1Y3R1cmVzIG9yIGNvbXBsZXggZmxvd3MgdGhhdCB3b3VsZCBiZSBhIHJlZCBmbGFnLgoKR2l2ZW4gdGhhdCB0aGUgY2hhbmdlIGZvY3VzZXMgb24gY2FjaGluZy9yZXN0b3JpbmcgaGFyZHdhcmUgcmVnaXN0ZXIgdmFsdWVzIGFuZCBhZGRpbmcgYSBtdXRleCwgdGhlcmUmIzM5O3Mgbm8gb2J2aW91cyBwYXRoIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLiBUaGUgYWxsb2NhdGlvbiBpcyB6ZXJvZWQsIG5vIHVzZXItc3BhY2UgZGF0YSBsZWFrcywgYW5kIGxvY2FsIHZhcmlhYmxlcyBhcmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuIExvY2tkZXAgYW5kIEtBU0FOIHdvdWxkIGNhdGNoIGFueSBjb25jdXJyZW5jeSBpc3N1ZXMuCgpMZXQmIzM5O3MgcXVpY2tseSByZS1pdGVyYXRlIHRoZSBmb3VyIGNyaXRlcmlhIHRvIGJlIGNlcnRhaW46CgoxLiAgS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlPyBOb3BlLgoyLiAgQ29uZGl0aW9uYWwgbG9naWMgZGVwZW5kaW5nIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzPyBOb3QgYSBjaGFuY2UuIFRoZSBga3phbGxvY2AgZ3VhcmFudGVlcyBpbml0aWFsaXphdGlvbiwgYW5kIHRoZSBsb2dpYyB1c2VzIGxvY2FsIHZhcmlhYmxlcy4KMy4gIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMgY291bGQgYmUgcmVhZCBsYXRlcj8gWmVyby1pbml0aWFsaXplZCwgc28gbm8uCjQuICBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyB0aGF0IGFjY2Vzc2VzIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycz8gTm90aGluZyBsaWtlIHRoYXQgaGVyZS4KClRoZXJlZm9yZSwgYWZ0ZXIgYSB0aG9yb3VnaCByZXZpZXcsIG15IGNvbmNsdXNpb24gaXMgdGhhdCB0aGlzIHBhdGNoICpkb2VzIG5vdCoganVzdGlmeSBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uLiBUaGUgYE5lZWRzS01TQU5gIGZsYWcgc2hvdWxkIGJlIHNldCB0byBgZmFsc2VgLiBUaW1lIHRvIGNvbnN0cnVjdCBteSByZXNwb25zZSBhbmQgc2V0IHRoZSByZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwMDoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgc2hhZG93IG1lY2hhbmlzbSBhbmQgbXV0ZXggbG9ja2luZyBmb3IgTEVEIHJlZ2lzdGVycyBpbiB0aGUgRFA4Mzg2NyBQSFkgZHJpdmVyIChkcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jKS4gVGhlIHByaXZhdGUgc3RydWN0dXJlIGBzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlYCBpcyBhbGxvY2F0ZWQgdXNpbmcgYGRldm1fa3phbGxvYygpYCwgZW5zdXJpbmcgdGhhdCBhbGwgbmV3bHkgaW50cm9kdWNlZCBmaWVsZHMgKGBsZWRfbG9ja2AsIGBsZWRjcjFgLCBgbGVkY3IxX21hc2tgLCBgbGVkY3IyYCwgYGxlZGNyMl9tYXNrYCkgYXJlIGZ1bGx5IHplcm8taW5pdGlhbGl6ZWQuIEFsbCBsb2NhbCB2YXJpYWJsZXMgYXJlIHByb3Blcmx5IGluaXRpYWxpemVkIGJlZm9yZSB1c2UuIE5vIGRhdGEgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgaXMgYWNjZXNzZWQgb3IgYnJhbmNoZWQgdXBvbiwgYW5kIGFueSBwb3RlbnRpYWwgbG9ja2luZyBvciByYWNlIGJ1Z3MgYXJlIGhhbmRsZWQgYnkgc3RhbmRhcmQgc2FuaXRpemVycyBzdWNoIGFzIExPQ0tERVAgYW5kIEtBU0FOLiBUaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBzaGFkb3cgbWVjaGFuaXNtIGFuZCBtdXRleCBsb2NraW5nIGZvciBMRUQgcmVnaXN0ZXJzIGluIHRoZSBEUDgzODY3IFBIWSBkcml2ZXIgKGRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMpLiBUaGUgcHJpdmF0ZSBzdHJ1Y3R1cmUgYHN0cnVjdCBkcDgzODY3X3ByaXZhdGVgIGlzIGFsbG9jYXRlZCB1c2luZyBgZGV2bV9remFsbG9jKClgLCBlbnN1cmluZyB0aGF0IGFsbCBuZXdseSBpbnRyb2R1Y2VkIGZpZWxkcyAoYGxlZF9sb2NrYCwgYGxlZGNyMWAsIGBsZWRjcjFfbWFza2AsIGBsZWRjcjJgLCBgbGVkY3IyX21hc2tgKSBhcmUgZnVsbHkgemVyby1pbml0aWFsaXplZC4gQWxsIGxvY2FsIHZhcmlhYmxlcyBhcmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQgYmVmb3JlIHVzZS4gTm8gZGF0YSBpcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgbm8gdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSBpcyBhY2Nlc3NlZCBvciBicmFuY2hlZCB1cG9uLCBhbmQgYW55IHBvdGVudGlhbCBsb2NraW5nIG9yIHJhY2UgYnVncyBhcmUgaGFuZGxlZCBieSBzdGFuZGFyZCBzYW5pdGl6ZXJzIHN1Y2ggYXMgTE9DS0RFUCBhbmQgS0FTQU4uIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wOVQwMDoyODo1Mi4wMzg1MzYwMDRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDI5ODAzMDg3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQSFlMSUJcIixcbiAgICBcIkRQODM4NjdfUEhZXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZHA4Mzg2N19sZWRfYnJpZ2h0bmVzc19zZXRcIixcbiAgICBcImRwODM4NjdfbGVkX2h3X2NvbnRyb2xfc2V0XCIsXG4gICAgXCJkcDgzODY3X2xlZF9wb2xhcml0eV9zZXRcIixcbiAgICBcImRwODM4NjdfY29uZmlnX2luaXRcIixcbiAgICBcImRwODM4NjdfcHJvYmVcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBzaGFkb3cgbWVjaGFuaXNtIGFuZCBtdXRleCBsb2NraW5nIGZvciBMRUQgcmVnaXN0ZXJzIGluIHRoZSBEUDgzODY3IFBIWSBkcml2ZXIgKGRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMpLiBUaGUgcHJpdmF0ZSBzdHJ1Y3R1cmUgYHN0cnVjdCBkcDgzODY3X3ByaXZhdGVgIGlzIGFsbG9jYXRlZCB1c2luZyBgZGV2bV9remFsbG9jKClgLCBlbnN1cmluZyB0aGF0IGFsbCBuZXdseSBpbnRyb2R1Y2VkIGZpZWxkcyAoYGxlZF9sb2NrYCwgYGxlZGNyMWAsIGBsZWRjcjFfbWFza2AsIGBsZWRjcjJgLCBgbGVkY3IyX21hc2tgKSBhcmUgZnVsbHkgemVyby1pbml0aWFsaXplZC4gQWxsIGxvY2FsIHZhcmlhYmxlcyBhcmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQgYmVmb3JlIHVzZS4gTm8gZGF0YSBpcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgbm8gdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSBpcyBhY2Nlc3NlZCBvciBicmFuY2hlZCB1cG9uLCBhbmQgYW55IHBvdGVudGlhbCBsb2NraW5nIG9yIHJhY2UgYnVncyBhcmUgaGFuZGxlZCBieSBzdGFuZGFyZCBzYW5pdGl6ZXJzIHN1Y2ggYXMgTE9DS0RFUCBhbmQgS0FTQU4uIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUZXhhcyBJbnN0cnVtZW50cyBEUDgzODY3IFBIWSBkcml2ZXIgKGRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMpIGJ5IGludHJvZHVjaW5nIGEgbmV3IG11dGV4IChsZWRfbG9jaykgYW5kIHNoYWRvdyByZWdpc3RlcnMgdG8gcHJvcGVybHkgcmVzdG9yZSBMRUQgY29uZmlndXJhdGlvbnMgYWNyb3NzIHNvZnQgcmVzZXRzLCBhbG9uZyB3aXRoIHJ1bnRpbWUgYXNzZXJ0aW9ucyAoV0FSTl9PTl9PTkNFKS4gVGhlIGRyaXZlciBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgRXRoZXJuZXQgYWRhcHRlcnMgZXhwb3NpbmcgTURJTyBidXNlcy4gRnV6emluZyBpcyB3YXJyYW50ZWQgdG8gdmVyaWZ5IGNvbmN1cnJlbmN5IGFuZCBwcm9wZXIgc2VyaWFsaXphdGlvbiBiZXR3ZWVuIGNvbmZpZ19pbml0IHNvZnQtcmVzZXQgcmVzdG9yZSBhbmQgTEVEIGNvbnRyb2wgb3BlcmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMDA6Mjg6NTIuMDM4NTQxMjA0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDQzNzc5NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0NGMxNjVjYWYwY2M5MDI2YjkwNzAxZGJlMjFjNGU3NzA4MzZhZTI2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgU2VwIDkgMDA6Mjg6NTEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYyBiL2RyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmNcXG5pbmRleCA4ODI1NWU5MmI0Y2RiLi5lZWI0Y2Q2NDhmNzQzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmNcXG4rKysgYi9kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jXFxuQEAgLTgsNiArOCw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9rZXJuZWwuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21paS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9tdXRleC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvb2YuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BoeS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZGVsYXkuaFxcdTAwM2VcXG5AQCAtMTk2LDYgKzE5NywxNiBAQCBzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlIHtcXG4gXFx0Ym9vbCBzZXRfY2xrX291dHB1dDtcXG4gXFx0dTMyIGNsa19vdXRwdXRfc2VsO1xcbiBcXHRib29sIHNnbWlpX3JlZl9jbGtfZW47XFxuK1xcbitcXHQvKiBTaGFkb3cgb2YgdGhlIExFRCByZWdpc3RlcnMsIHJlcGxheWVkIGFmdGVyIGEgc29mdCByZXNldC4gbGVkX2xvY2tcXG4rXFx0ICogc2VyaWFsaXplcyB0aGUgc2hhZG93IGFuZCBpdHMgcmVwbGF5IGFnYWluc3QgdGhlIExFRCBjYWxsYmFja3MsXFxuK1xcdCAqIGJlY2F1c2UgZHA4Mzg2N19jb25maWdfaW5pdCgpIGRvZXMgdGhlIHJlcGxheSBvZmYgcGh5ZGV2LVxcdTAwM2Vsb2NrLlxcbitcXHQgKi9cXG4rXFx0c3RydWN0IG11dGV4IGxlZF9sb2NrO1xcbitcXHR1MTYgbGVkY3IxO1xcbitcXHR1MTYgbGVkY3IxX21hc2s7XFxuK1xcdHUxNiBsZWRjcjI7XFxuK1xcdHUxNiBsZWRjcjJfbWFzaztcXG4gfTtcXG4gXFxuIHN0YXRpYyBpbnQgZHA4Mzg2N19hY2tfaW50ZXJydXB0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuQEAgLTcyMiw2ICs3MzMsNyBAQCBzdGF0aWMgaW50IGRwODM4NjdfcmVzdW1lKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuIHN0YXRpYyBpbnQgZHA4Mzg2N19wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiB7XFxuIFxcdHN0cnVjdCBkcDgzODY3X3ByaXZhdGUgKmRwODM4Njc7XFxuK1xcdGludCByZXQ7XFxuIFxcbiBcXHRkcDgzODY3ID0gZGV2bV9remFsbG9jKFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2LCBzaXplb2YoKmRwODM4NjcpLFxcbiBcXHRcXHRcXHQgICAgICAgR0ZQX0tFUk5FTCk7XFxuQEAgLTczMCw5ICs3NDIsNjAgQEAgc3RhdGljIGludCBkcDgzODY3X3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuIFxcbiBcXHRwaHlkZXYtXFx1MDAzZXByaXYgPSBkcDgzODY3O1xcbiBcXG4rXFx0cmV0ID0gZGV2bV9tdXRleF9pbml0KFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2LCBcXHUwMDI2ZHA4Mzg2Ny1cXHUwMDNlbGVkX2xvY2spO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4gXFx0cmV0dXJuIGRwODM4Njdfb2ZfaW5pdChwaHlkZXYpO1xcbiB9XFxuIFxcbisvKiBVcGRhdGUgYW4gTEVEIHJlZ2lzdGVyIGFuZCBtaXJyb3IgdGhlIGNoYW5nZSBpbnRvIHRoZSBzaGFkb3csIHNvIHRoYXRcXG4rICogZHA4Mzg2N19jb25maWdfaW5pdCgpIGNhbiByZXBsYXkgaXQgYWZ0ZXIgYSBzb2Z0IHJlc2V0LiBDYWxsZXIgbXVzdCBob2xkXFxuKyAqIGRwODM4NjctXFx1MDAzZWxlZF9sb2NrLlxcbisgKi9cXG4rc3RhdGljIGludCBfX2RwODM4NjdfbGVkX21vZGlmeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MzIgcmVnLFxcbitcXHRcXHRcXHRcXHR1MTYgbWFzaywgdTE2IHZhbClcXG4re1xcbitcXHRzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlICpkcDgzODY3ID0gcGh5ZGV2LVxcdTAwM2Vwcml2O1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0cmV0ID0gcGh5X21vZGlmeShwaHlkZXYsIHJlZywgbWFzaywgdmFsKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdGlmIChyZWcgPT0gRFA4Mzg2N19MRURDUjEpIHtcXG4rXFx0XFx0ZHA4Mzg2Ny1cXHUwMDNlbGVkY3IxID0gKGRwODM4NjctXFx1MDAzZWxlZGNyMSBcXHUwMDI2IH5tYXNrKSB8ICh2YWwgXFx1MDAyNiBtYXNrKTtcXG4rXFx0XFx0ZHA4Mzg2Ny1cXHUwMDNlbGVkY3IxX21hc2sgfD0gbWFzaztcXG4rXFx0fSBlbHNlIGlmIChyZWcgPT0gRFA4Mzg2N19MRURDUjIpIHtcXG4rXFx0XFx0ZHA4Mzg2Ny1cXHUwMDNlbGVkY3IyID0gKGRwODM4NjctXFx1MDAzZWxlZGNyMiBcXHUwMDI2IH5tYXNrKSB8ICh2YWwgXFx1MDAyNiBtYXNrKTtcXG4rXFx0XFx0ZHA4Mzg2Ny1cXHUwMDNlbGVkY3IyX21hc2sgfD0gbWFzaztcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0V0FSTl9PTl9PTkNFKDEpO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rLyogUmVzdG9yZSB0aGUgTEVEIHJlZ2lzdGVycyB0aGUgZHJpdmVyIGhhcyBwcm9ncmFtbWVkLCBjbGVhcmVkIGJ5IHRoZSBzb2Z0XFxuKyAqIHJlc2V0IGluIGRwODM4NjdfcGh5X3Jlc2V0KCkuXFxuKyAqL1xcbitzdGF0aWMgaW50IGRwODM4NjdfbGVkX3Jlc3RvcmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4re1xcbitcXHRzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlICpkcDgzODY3ID0gcGh5ZGV2LVxcdTAwM2Vwcml2O1xcbitcXHRpbnQgcmV0ID0gMDtcXG4rXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNmRwODM4NjctXFx1MDAzZWxlZF9sb2NrKTtcXG4rXFx0aWYgKGRwODM4NjctXFx1MDAzZWxlZGNyMV9tYXNrKVxcbitcXHRcXHRyZXQgPSBwaHlfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjEsXFxuK1xcdFxcdFxcdFxcdCBkcDgzODY3LVxcdTAwM2VsZWRjcjFfbWFzaywgZHA4Mzg2Ny1cXHUwMDNlbGVkY3IxKTtcXG4rXFx0aWYgKCFyZXQgXFx1MDAyNlxcdTAwMjYgZHA4Mzg2Ny1cXHUwMDNlbGVkY3IyX21hc2spXFxuK1xcdFxcdHJldCA9IHBoeV9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMixcXG4rXFx0XFx0XFx0XFx0IGRwODM4NjctXFx1MDAzZWxlZGNyMl9tYXNrLCBkcDgzODY3LVxcdTAwM2VsZWRjcjIpO1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNmRwODM4NjctXFx1MDAzZWxlZF9sb2NrKTtcXG4rXFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgZHA4Mzg2N19jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiB7XFxuIFxcdHN0cnVjdCBkcDgzODY3X3ByaXZhdGUgKmRwODM4NjcgPSBwaHlkZXYtXFx1MDAzZXByaXY7XFxuQEAgLTg5Niw2ICs5NTksMTAgQEAgc3RhdGljIGludCBkcDgzODY3X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuIFxcdFxcdFxcdCAgICAgICBtYXNrLCB2YWwpO1xcbiBcXHR9XFxuIFxcbitcXHRyZXQgPSBkcDgzODY3X2xlZF9yZXN0b3JlKHBoeWRldik7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdHBoeWRldl93YXJuKHBoeWRldiwgXFxcImZhaWxlZCB0byByZXN0b3JlIExFRCBjb25maWc6ICVkXFxcXG5cXFwiLCByZXQpO1xcbitcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuQEAgLTEwMDQsNyArMTA3MSw5IEBAIHN0YXRpYyBpbnRcXG4gZHA4Mzg2N19sZWRfYnJpZ2h0bmVzc19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4gXFx0XFx0XFx0ICAgdTggaW5kZXgsIGVudW0gbGVkX2JyaWdodG5lc3MgYnJpZ2h0bmVzcylcXG4ge1xcbi1cXHR1MzIgdmFsO1xcbitcXHRzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlICpkcDgzODY3ID0gcGh5ZGV2LVxcdTAwM2Vwcml2O1xcbitcXHR1MTYgdmFsO1xcbitcXHRpbnQgcmV0O1xcbiBcXG4gXFx0aWYgKGluZGV4IFxcdTAwM2U9IERQODM4NjdfTEVEX0NPVU5UKVxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG5AQCAtMTAxNSwxMCArMTA4NCwxMyBAQCBkcDgzODY3X2xlZF9icmlnaHRuZXNzX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbiBcXHRpZiAoYnJpZ2h0bmVzcylcXG4gXFx0XFx0dmFsIHw9IERQODM4NjdfTEVEX0RSVl9WQUwoaW5kZXgpO1xcbiBcXG4tXFx0cmV0dXJuIHBoeV9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMixcXG4tXFx0XFx0XFx0ICBEUDgzODY3X0xFRF9EUlZfVkFMKGluZGV4KSB8XFxuLVxcdFxcdFxcdCAgRFA4Mzg2N19MRURfRFJWX0VOKGluZGV4KSxcXG4tXFx0XFx0XFx0ICB2YWwpO1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZkcDgzODY3LVxcdTAwM2VsZWRfbG9jayk7XFxuK1xcdHJldCA9IF9fZHA4Mzg2N19sZWRfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjIsXFxuK1xcdFxcdFxcdFxcdCAgIERQODM4NjdfTEVEX0RSVl9WQUwoaW5kZXgpIHxcXG4rXFx0XFx0XFx0XFx0ICAgRFA4Mzg2N19MRURfRFJWX0VOKGluZGV4KSwgdmFsKTtcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkcDgzODY3LVxcdTAwM2VsZWRfbG9jayk7XFxuK1xcbitcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGRwODM4NjdfbGVkX21vZGUodTggaW5kZXgsIHVuc2lnbmVkIGxvbmcgcnVsZXMpXFxuQEAgLTEwNjksMTggKzExNDEsMjQgQEAgc3RhdGljIGludCBkcDgzODY3X2xlZF9od19pc19zdXBwb3J0ZWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXFxuIHN0YXRpYyBpbnQgZHA4Mzg2N19sZWRfaHdfY29udHJvbF9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXFxuIFxcdFxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIGxvbmcgcnVsZXMpXFxuIHtcXG4rXFx0c3RydWN0IGRwODM4NjdfcHJpdmF0ZSAqZHA4Mzg2NyA9IHBoeWRldi1cXHUwMDNlcHJpdjtcXG4gXFx0aW50IG1vZGUsIHJldDtcXG4gXFxuIFxcdG1vZGUgPSBkcDgzODY3X2xlZF9tb2RlKGluZGV4LCBydWxlcyk7XFxuIFxcdGlmIChtb2RlIFxcdTAwM2MgMClcXG4gXFx0XFx0cmV0dXJuIG1vZGU7XFxuIFxcbi1cXHRyZXQgPSBwaHlfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjEsIERQODM4NjdfTEVEX0ZOX01BU0soaW5kZXgpLFxcbi1cXHRcXHRcXHQgRFA4Mzg2N19MRURfRk4oaW5kZXgsIG1vZGUpKTtcXG4tXFx0aWYgKHJldClcXG4tXFx0XFx0cmV0dXJuIHJldDtcXG4tXFxuLVxcdHJldHVybiBwaHlfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjIsIERQODM4NjdfTEVEX0RSVl9FTihpbmRleCksIDApO1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZkcDgzODY3LVxcdTAwM2VsZWRfbG9jayk7XFxuK1xcdHJldCA9IF9fZHA4Mzg2N19sZWRfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjEsXFxuK1xcdFxcdFxcdFxcdCAgIERQODM4NjdfTEVEX0ZOX01BU0soaW5kZXgpLFxcbitcXHRcXHRcXHRcXHQgICBEUDgzODY3X0xFRF9GTihpbmRleCwgbW9kZSkpO1xcbitcXHRpZiAoIXJldClcXG4rXFx0XFx0cmV0ID0gX19kcDgzODY3X2xlZF9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgRFA4Mzg2N19MRURfRFJWX0VOKGluZGV4KSB8XFxuK1xcdFxcdFxcdFxcdFxcdCAgIERQODM4NjdfTEVEX0RSVl9WQUwoaW5kZXgpLCAwKTtcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkcDgzODY3LVxcdTAwM2VsZWRfbG9jayk7XFxuK1xcbitcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGRwODM4NjdfbGVkX2h3X2NvbnRyb2xfZ2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxcbkBAIC0xMTQxLDkgKzEyMTksMTEgQEAgc3RhdGljIGludCBkcDgzODY3X2xlZF9od19jb250cm9sX2dldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcXG4gc3RhdGljIGludCBkcDgzODY3X2xlZF9wb2xhcml0eV9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGluZGV4LFxcbiBcXHRcXHRcXHRcXHQgICAgdW5zaWduZWQgbG9uZyBtb2RlcylcXG4ge1xcbitcXHRzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlICpkcDgzODY3ID0gcGh5ZGV2LVxcdTAwM2Vwcml2O1xcbiBcXHQvKiBEZWZhdWx0IGFjdGl2ZSBoaWdoICovXFxuIFxcdHUxNiBwb2xhcml0eSA9IERQODM4NjdfTEVEX1BPTEFSSVRZKGluZGV4KTtcXG4gXFx0dTMyIG1vZGU7XFxuK1xcdGludCByZXQ7XFxuIFxcbiBcXHRmb3JfZWFjaF9zZXRfYml0KG1vZGUsIFxcdTAwMjZtb2RlcywgX19QSFlfTEVEX01PREVTX05VTSkge1xcbiBcXHRcXHRzd2l0Y2ggKG1vZGUpIHtcXG5AQCAtMTE1NCw4ICsxMjM0LDEzIEBAIHN0YXRpYyBpbnQgZHA4Mzg2N19sZWRfcG9sYXJpdHlfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpbmRleCxcXG4gXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcdFxcdH1cXG4gXFx0fVxcbi1cXHRyZXR1cm4gcGh5X21vZGlmeShwaHlkZXYsIERQODM4NjdfTEVEQ1IyLFxcbi1cXHRcXHRcXHQgIERQODM4NjdfTEVEX1BPTEFSSVRZKGluZGV4KSwgcG9sYXJpdHkpO1xcbitcXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2ZHA4Mzg2Ny1cXHUwMDNlbGVkX2xvY2spO1xcbitcXHRyZXQgPSBfX2RwODM4NjdfbGVkX21vZGlmeShwaHlkZXYsIERQODM4NjdfTEVEQ1IyLFxcbitcXHRcXHRcXHRcXHQgICBEUDgzODY3X0xFRF9QT0xBUklUWShpbmRleCksIHBvbGFyaXR5KTtcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkcDgzODY3LVxcdTAwM2VsZWRfbG9jayk7XFxuK1xcbitcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbiBzdGF0aWMgdW5zaWduZWQgaW50IGRwODM4NjdfaW5iYW5kX2NhcHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMDA6Mjg6NTIuNTQzNjM5MzI3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo1MjE4NjgyMTY2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQSFlMSUJcIixcbiAgICBcIkRQODM4NjdfUEhZXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZHA4Mzg2N19sZWRfYnJpZ2h0bmVzc19zZXRcIixcbiAgICBcImRwODM4NjdfbGVkX2h3X2NvbnRyb2xfc2V0XCIsXG4gICAgXCJkcDgzODY3X2xlZF9wb2xhcml0eV9zZXRcIixcbiAgICBcImRwODM4NjdfY29uZmlnX2luaXRcIixcbiAgICBcImRwODM4NjdfcHJvYmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgVGV4YXMgSW5zdHJ1bWVudHMgRFA4Mzg2NyBQSFkgZHJpdmVyIChkcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jKSBieSBpbnRyb2R1Y2luZyBhIG5ldyBtdXRleCAobGVkX2xvY2spIGFuZCBzaGFkb3cgcmVnaXN0ZXJzIHRvIHByb3Blcmx5IHJlc3RvcmUgTEVEIGNvbmZpZ3VyYXRpb25zIGFjcm9zcyBzb2Z0IHJlc2V0cywgYWxvbmcgd2l0aCBydW50aW1lIGFzc2VydGlvbnMgKFdBUk5fT05fT05DRSkuIFRoZSBkcml2ZXIgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIEV0aGVybmV0IGFkYXB0ZXJzIGV4cG9zaW5nIE1ESU8gYnVzZXMuIEZ1enppbmcgaXMgd2FycmFudGVkIHRvIHZlcmlmeSBjb25jdXJyZW5jeSBhbmQgcHJvcGVyIHNlcmlhbGl6YXRpb24gYmV0d2VlbiBjb25maWdfaW5pdCBzb2Z0LXJlc2V0IHJlc3RvcmUgYW5kIExFRCBjb250cm9sIG9wZXJhdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNDRjMTY1Y2FmMGNjOTAyNmI5MDcwMWRiZTIxYzRlNzcwODM2YWUyNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDkgMDA6Mjg6NTEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jIGIvZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuY1xuaW5kZXggODgyNTVlOTJiNGNkYi4uZWViNGNkNjQ4Zjc0MyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmNcbkBAIC04LDYgKzgsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbWlpLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L211dGV4LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGh5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9kZWxheS5oXHUwMDNlXG5AQCAtMTk2LDYgKzE5NywxNiBAQCBzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlIHtcbiBcdGJvb2wgc2V0X2Nsa19vdXRwdXQ7XG4gXHR1MzIgY2xrX291dHB1dF9zZWw7XG4gXHRib29sIHNnbWlpX3JlZl9jbGtfZW47XG4rXG4rXHQvKiBTaGFkb3cgb2YgdGhlIExFRCByZWdpc3RlcnMsIHJlcGxheWVkIGFmdGVyIGEgc29mdCByZXNldC4gbGVkX2xvY2tcbitcdCAqIHNlcmlhbGl6ZXMgdGhlIHNoYWRvdyBhbmQgaXRzIHJlcGxheSBhZ2FpbnN0IHRoZSBMRUQgY2FsbGJhY2tzLFxuK1x0ICogYmVjYXVzZSBkcDgzODY3X2NvbmZpZ19pbml0KCkgZG9lcyB0aGUgcmVwbGF5IG9mZiBwaHlkZXYtXHUwMDNlbG9jay5cbitcdCAqL1xuK1x0c3RydWN0IG11dGV4IGxlZF9sb2NrO1xuK1x0dTE2IGxlZGNyMTtcbitcdHUxNiBsZWRjcjFfbWFzaztcbitcdHUxNiBsZWRjcjI7XG4rXHR1MTYgbGVkY3IyX21hc2s7XG4gfTtcbiBcbiBzdGF0aWMgaW50IGRwODM4NjdfYWNrX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuQEAgLTcyMiw2ICs3MzMsNyBAQCBzdGF0aWMgaW50IGRwODM4NjdfcmVzdW1lKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gc3RhdGljIGludCBkcDgzODY3X3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4ge1xuIFx0c3RydWN0IGRwODM4NjdfcHJpdmF0ZSAqZHA4Mzg2NztcbitcdGludCByZXQ7XG4gXG4gXHRkcDgzODY3ID0gZGV2bV9remFsbG9jKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldiwgc2l6ZW9mKCpkcDgzODY3KSxcbiBcdFx0XHQgICAgICAgR0ZQX0tFUk5FTCk7XG5AQCAtNzMwLDkgKzc0Miw2MCBAQCBzdGF0aWMgaW50IGRwODM4NjdfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcbiBcdHBoeWRldi1cdTAwM2Vwcml2ID0gZHA4Mzg2NztcbiBcbitcdHJldCA9IGRldm1fbXV0ZXhfaW5pdChcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYsIFx1MDAyNmRwODM4NjctXHUwMDNlbGVkX2xvY2spO1xuK1x0aWYgKHJldClcbitcdFx0cmV0dXJuIHJldDtcbitcbiBcdHJldHVybiBkcDgzODY3X29mX2luaXQocGh5ZGV2KTtcbiB9XG4gXG4rLyogVXBkYXRlIGFuIExFRCByZWdpc3RlciBhbmQgbWlycm9yIHRoZSBjaGFuZ2UgaW50byB0aGUgc2hhZG93LCBzbyB0aGF0XG4rICogZHA4Mzg2N19jb25maWdfaW5pdCgpIGNhbiByZXBsYXkgaXQgYWZ0ZXIgYSBzb2Z0IHJlc2V0LiBDYWxsZXIgbXVzdCBob2xkXG4rICogZHA4Mzg2Ny1cdTAwM2VsZWRfbG9jay5cbisgKi9cbitzdGF0aWMgaW50IF9fZHA4Mzg2N19sZWRfbW9kaWZ5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUzMiByZWcsXG4rXHRcdFx0XHR1MTYgbWFzaywgdTE2IHZhbClcbit7XG4rXHRzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlICpkcDgzODY3ID0gcGh5ZGV2LVx1MDAzZXByaXY7XG4rXHRpbnQgcmV0O1xuK1xuK1x0cmV0ID0gcGh5X21vZGlmeShwaHlkZXYsIHJlZywgbWFzaywgdmFsKTtcbitcdGlmIChyZXQpXG4rXHRcdHJldHVybiByZXQ7XG4rXG4rXHRpZiAocmVnID09IERQODM4NjdfTEVEQ1IxKSB7XG4rXHRcdGRwODM4NjctXHUwMDNlbGVkY3IxID0gKGRwODM4NjctXHUwMDNlbGVkY3IxIFx1MDAyNiB+bWFzaykgfCAodmFsIFx1MDAyNiBtYXNrKTtcbitcdFx0ZHA4Mzg2Ny1cdTAwM2VsZWRjcjFfbWFzayB8PSBtYXNrO1xuK1x0fSBlbHNlIGlmIChyZWcgPT0gRFA4Mzg2N19MRURDUjIpIHtcbitcdFx0ZHA4Mzg2Ny1cdTAwM2VsZWRjcjIgPSAoZHA4Mzg2Ny1cdTAwM2VsZWRjcjIgXHUwMDI2IH5tYXNrKSB8ICh2YWwgXHUwMDI2IG1hc2spO1xuK1x0XHRkcDgzODY3LVx1MDAzZWxlZGNyMl9tYXNrIHw9IG1hc2s7XG4rXHR9IGVsc2Uge1xuK1x0XHRXQVJOX09OX09OQ0UoMSk7XG4rXHR9XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rLyogUmVzdG9yZSB0aGUgTEVEIHJlZ2lzdGVycyB0aGUgZHJpdmVyIGhhcyBwcm9ncmFtbWVkLCBjbGVhcmVkIGJ5IHRoZSBzb2Z0XG4rICogcmVzZXQgaW4gZHA4Mzg2N19waHlfcmVzZXQoKS5cbisgKi9cbitzdGF0aWMgaW50IGRwODM4NjdfbGVkX3Jlc3RvcmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbit7XG4rXHRzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlICpkcDgzODY3ID0gcGh5ZGV2LVx1MDAzZXByaXY7XG4rXHRpbnQgcmV0ID0gMDtcbitcbitcdG11dGV4X2xvY2soXHUwMDI2ZHA4Mzg2Ny1cdTAwM2VsZWRfbG9jayk7XG4rXHRpZiAoZHA4Mzg2Ny1cdTAwM2VsZWRjcjFfbWFzaylcbitcdFx0cmV0ID0gcGh5X21vZGlmeShwaHlkZXYsIERQODM4NjdfTEVEQ1IxLFxuK1x0XHRcdFx0IGRwODM4NjctXHUwMDNlbGVkY3IxX21hc2ssIGRwODM4NjctXHUwMDNlbGVkY3IxKTtcbitcdGlmICghcmV0IFx1MDAyNlx1MDAyNiBkcDgzODY3LVx1MDAzZWxlZGNyMl9tYXNrKVxuK1x0XHRyZXQgPSBwaHlfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjIsXG4rXHRcdFx0XHQgZHA4Mzg2Ny1cdTAwM2VsZWRjcjJfbWFzaywgZHA4Mzg2Ny1cdTAwM2VsZWRjcjIpO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmRwODM4NjctXHUwMDNlbGVkX2xvY2spO1xuK1xuK1x0cmV0dXJuIHJldDtcbit9XG4rXG4gc3RhdGljIGludCBkcDgzODY3X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4ge1xuIFx0c3RydWN0IGRwODM4NjdfcHJpdmF0ZSAqZHA4Mzg2NyA9IHBoeWRldi1cdTAwM2Vwcml2O1xuQEAgLTg5Niw2ICs5NTksMTAgQEAgc3RhdGljIGludCBkcDgzODY3X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRcdFx0ICAgICAgIG1hc2ssIHZhbCk7XG4gXHR9XG4gXG4rXHRyZXQgPSBkcDgzODY3X2xlZF9yZXN0b3JlKHBoeWRldik7XG4rXHRpZiAocmV0KVxuK1x0XHRwaHlkZXZfd2FybihwaHlkZXYsIFwiZmFpbGVkIHRvIHJlc3RvcmUgTEVEIGNvbmZpZzogJWRcXG5cIiwgcmV0KTtcbitcbiBcdHJldHVybiAwO1xuIH1cbiBcbkBAIC0xMDA0LDcgKzEwNzEsOSBAQCBzdGF0aWMgaW50XG4gZHA4Mzg2N19sZWRfYnJpZ2h0bmVzc19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbiBcdFx0XHQgICB1OCBpbmRleCwgZW51bSBsZWRfYnJpZ2h0bmVzcyBicmlnaHRuZXNzKVxuIHtcbi1cdHUzMiB2YWw7XG4rXHRzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlICpkcDgzODY3ID0gcGh5ZGV2LVx1MDAzZXByaXY7XG4rXHR1MTYgdmFsO1xuK1x0aW50IHJldDtcbiBcbiBcdGlmIChpbmRleCBcdTAwM2U9IERQODM4NjdfTEVEX0NPVU5UKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbkBAIC0xMDE1LDEwICsxMDg0LDEzIEBAIGRwODM4NjdfbGVkX2JyaWdodG5lc3Nfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4gXHRpZiAoYnJpZ2h0bmVzcylcbiBcdFx0dmFsIHw9IERQODM4NjdfTEVEX0RSVl9WQUwoaW5kZXgpO1xuIFxuLVx0cmV0dXJuIHBoeV9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMixcbi1cdFx0XHQgIERQODM4NjdfTEVEX0RSVl9WQUwoaW5kZXgpIHxcbi1cdFx0XHQgIERQODM4NjdfTEVEX0RSVl9FTihpbmRleCksXG4tXHRcdFx0ICB2YWwpO1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZkcDgzODY3LVx1MDAzZWxlZF9sb2NrKTtcbitcdHJldCA9IF9fZHA4Mzg2N19sZWRfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjIsXG4rXHRcdFx0XHQgICBEUDgzODY3X0xFRF9EUlZfVkFMKGluZGV4KSB8XG4rXHRcdFx0XHQgICBEUDgzODY3X0xFRF9EUlZfRU4oaW5kZXgpLCB2YWwpO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmRwODM4NjctXHUwMDNlbGVkX2xvY2spO1xuK1xuK1x0cmV0dXJuIHJldDtcbiB9XG4gXG4gc3RhdGljIGludCBkcDgzODY3X2xlZF9tb2RlKHU4IGluZGV4LCB1bnNpZ25lZCBsb25nIHJ1bGVzKVxuQEAgLTEwNjksMTggKzExNDEsMjQgQEAgc3RhdGljIGludCBkcDgzODY3X2xlZF9od19pc19zdXBwb3J0ZWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXG4gc3RhdGljIGludCBkcDgzODY3X2xlZF9od19jb250cm9sX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcbiBcdFx0XHRcdCAgICAgIHVuc2lnbmVkIGxvbmcgcnVsZXMpXG4ge1xuK1x0c3RydWN0IGRwODM4NjdfcHJpdmF0ZSAqZHA4Mzg2NyA9IHBoeWRldi1cdTAwM2Vwcml2O1xuIFx0aW50IG1vZGUsIHJldDtcbiBcbiBcdG1vZGUgPSBkcDgzODY3X2xlZF9tb2RlKGluZGV4LCBydWxlcyk7XG4gXHRpZiAobW9kZSBcdTAwM2MgMClcbiBcdFx0cmV0dXJuIG1vZGU7XG4gXG4tXHRyZXQgPSBwaHlfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjEsIERQODM4NjdfTEVEX0ZOX01BU0soaW5kZXgpLFxuLVx0XHRcdCBEUDgzODY3X0xFRF9GTihpbmRleCwgbW9kZSkpO1xuLVx0aWYgKHJldClcbi1cdFx0cmV0dXJuIHJldDtcbi1cbi1cdHJldHVybiBwaHlfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjIsIERQODM4NjdfTEVEX0RSVl9FTihpbmRleCksIDApO1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZkcDgzODY3LVx1MDAzZWxlZF9sb2NrKTtcbitcdHJldCA9IF9fZHA4Mzg2N19sZWRfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjEsXG4rXHRcdFx0XHQgICBEUDgzODY3X0xFRF9GTl9NQVNLKGluZGV4KSxcbitcdFx0XHRcdCAgIERQODM4NjdfTEVEX0ZOKGluZGV4LCBtb2RlKSk7XG4rXHRpZiAoIXJldClcbitcdFx0cmV0ID0gX19kcDgzODY3X2xlZF9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMixcbitcdFx0XHRcdFx0ICAgRFA4Mzg2N19MRURfRFJWX0VOKGluZGV4KSB8XG4rXHRcdFx0XHRcdCAgIERQODM4NjdfTEVEX0RSVl9WQUwoaW5kZXgpLCAwKTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZkcDgzODY3LVx1MDAzZWxlZF9sb2NrKTtcbitcbitcdHJldHVybiByZXQ7XG4gfVxuIFxuIHN0YXRpYyBpbnQgZHA4Mzg2N19sZWRfaHdfY29udHJvbF9nZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXG5AQCAtMTE0MSw5ICsxMjE5LDExIEBAIHN0YXRpYyBpbnQgZHA4Mzg2N19sZWRfaHdfY29udHJvbF9nZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXG4gc3RhdGljIGludCBkcDgzODY3X2xlZF9wb2xhcml0eV9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGluZGV4LFxuIFx0XHRcdFx0ICAgIHVuc2lnbmVkIGxvbmcgbW9kZXMpXG4ge1xuK1x0c3RydWN0IGRwODM4NjdfcHJpdmF0ZSAqZHA4Mzg2NyA9IHBoeWRldi1cdTAwM2Vwcml2O1xuIFx0LyogRGVmYXVsdCBhY3RpdmUgaGlnaCAqL1xuIFx0dTE2IHBvbGFyaXR5ID0gRFA4Mzg2N19MRURfUE9MQVJJVFkoaW5kZXgpO1xuIFx0dTMyIG1vZGU7XG4rXHRpbnQgcmV0O1xuIFxuIFx0Zm9yX2VhY2hfc2V0X2JpdChtb2RlLCBcdTAwMjZtb2RlcywgX19QSFlfTEVEX01PREVTX05VTSkge1xuIFx0XHRzd2l0Y2ggKG1vZGUpIHtcbkBAIC0xMTU0LDggKzEyMzQsMTMgQEAgc3RhdGljIGludCBkcDgzODY3X2xlZF9wb2xhcml0eV9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGluZGV4LFxuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHR9XG4gXHR9XG4tXHRyZXR1cm4gcGh5X21vZGlmeShwaHlkZXYsIERQODM4NjdfTEVEQ1IyLFxuLVx0XHRcdCAgRFA4Mzg2N19MRURfUE9MQVJJVFkoaW5kZXgpLCBwb2xhcml0eSk7XG4rXG4rXHRtdXRleF9sb2NrKFx1MDAyNmRwODM4NjctXHUwMDNlbGVkX2xvY2spO1xuK1x0cmV0ID0gX19kcDgzODY3X2xlZF9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMixcbitcdFx0XHRcdCAgIERQODM4NjdfTEVEX1BPTEFSSVRZKGluZGV4KSwgcG9sYXJpdHkpO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmRwODM4NjctXHUwMDNlbGVkX2xvY2spO1xuK1xuK1x0cmV0dXJuIHJldDtcbiB9XG4gXG4gc3RhdGljIHVuc2lnbmVkIGludCBkcDgzODY3X2luYmFuZF9jYXBzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQwMDoyODo1Mi41NDM2NDA4MzZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMTEzMzc3Nzg1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXR3b3JrIFBIWSBEcml2ZXIgQ2hhbmdlKipcblxuT2theSwgc28gdGhlIHBhdGNoIEknbSBsb29raW5nIGF0IHNwZWNpZmljYWxseSB0b3VjaGVzIGBkcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jYC4gTXkgaW5pdGlhbCByZWFjdGlvbiBpcyB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCB0aGlzIGRyaXZlciAqaXMqLiBBaCwgaXQncyB0aGUgVGV4YXMgSW5zdHJ1bWVudHMgRFA4Mzg2NyBHaWdhYml0IEV0aGVybmV0IFBIWSBkcml2ZXIuIFJpZ2h0LCBzbyB0aGUga2V5IHF1ZXN0aW9uIGhlcmUgaXMgd2hldGhlciBpdCdzIGFuIE1ESU8gUEhZIGRyaXZlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGl0J3MgaW5zdGFudGlhdGVkIGFuZCB1c2VkLiBDYW4gSSB0ZXN0IHRoaXMgd2l0aG91dCBwaHlzaWNhbCBoYXJkd2FyZT8gRG9lcyBpdCBiZWhhdmUgd2VsbCB1bmRlciB2aXJ0dWFsIGVudmlyb25tZW50cywgdXNpbmcgc3RhbmRhcmQgUUVNVSBzZXR1cCwgb3IgZG9lcyBpdCBkZXBlbmQgb24gYWN0dWFsIE1ESU8gYWNjZXNzP1xuXG5UaW1lIHRvIGRpZyBpbnRvIHRoZSBkcml2ZXIgaXRzZWxmLiBJJ2xsIHByb2JhYmx5IHN0YXJ0IHdpdGggYSBxdWljayBgZ3JlcGAgc2VhcmNoIGZvciBrZXkgdGVybXMsIGJ1dCB1bHRpbWF0ZWx5LCBJJ2xsIG5lZWQgdG8gcmVhZCB0aGUgY29kZSBkaXJlY3RseSB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSB0byBhc3Nlc3MgdGhlIGltcGFjdCBvZiB0aGlzIGNoYW5nZSBwcm9wZXJseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQzNiwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMDA6Mjk6MDMuNjc3NDIxNjgxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NzQwODI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkRQODM4NjdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgODE1IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz00NDY9Y29uZmlnIERQODM4NDhfUEhZXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy00NTAtXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6NDUxOmNvbmZpZyBEUDgzODY3X1BIWVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjQ1MjpcXHR0cmlzdGF0ZSBcXFwiVGV4YXMgSW5zdHJ1bWVudHMgRFA4Mzg2NyBHaWdhYml0IFBIWVxcXCJcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy00NTMtXFx0aGVscFxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjQ1NDpcXHQgIEN1cnJlbnRseSBzdXBwb3J0cyB0aGUgRFA4Mzg2NyBQSFkuXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNDU1LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTYwPW9iai0kKENPTkZJR19EUDgzODQ4X1BIWSlcXHQrPSBkcDgzODQ4Lm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NjE6b2JqLSQoQ09ORklHX0RQODM4NjdfUEhZKVxcdCs9IGRwODM4Njcub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS02Mi1vYmotJChDT05GSUdfRFA4Mzg2OV9QSFkpXFx0Kz0gZHA4Mzg2OS5vXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTEtLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI6LyogRHJpdmVyIGZvciB0aGUgVGV4YXMgSW5zdHJ1bWVudHMgRFA4Mzg2NyBQSFlcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTMtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjEtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyMjojZGVmaW5lIERQODM4NjdfUEhZX0lEXFx0XFx0MHgyMDAwYTIzMVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjM6I2RlZmluZSBEUDgzODY3X0RFVkFERFJcXHRcXHQweDFmXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yNC1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI1OiNkZWZpbmUgTUlJX0RQODM4NjdfUEhZQ1RSTFxcdDB4MTBcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI2OiNkZWZpbmUgTUlJX0RQODM4NjdfUEhZU1RTXFx0MHgxMVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6Mjc6I2RlZmluZSBNSUlfRFA4Mzg2N19NSUNSXFx0MHgxMlxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6Mjg6I2RlZmluZSBNSUlfRFA4Mzg2N19JU1JcXHRcXHQweDEzXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyOTojZGVmaW5lIERQODM4NjdfQ0ZHMlxcdFxcdDB4MTRcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjMwOiNkZWZpbmUgRFA4Mzg2N19MRURDUjFcXHRcXHQweDE4XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozMTojZGVmaW5lIERQODM4NjdfTEVEQ1IyXFx0XFx0MHgxOVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MzI6I2RlZmluZSBEUDgzODY3X0NGRzNcXHRcXHQweDFlXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozMzojZGVmaW5lIERQODM4NjdfQ1RSTFxcdFxcdDB4MWZcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTM0LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMzUtLyogRXh0ZW5kZWQgUmVnaXN0ZXJzICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozNjojZGVmaW5lIERQODM4NjdfRkxEX1RIUl9DRkdcXHQweDAwMmVcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjM3OiNkZWZpbmUgRFA4Mzg2N19DRkc0XFx0XFx0MHgwMDMxXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozODojZGVmaW5lIERQODM4NjdfQ0ZHNF9TR01JSV9BTkVHX01BU0sgKEJJVCg1KSB8IEJJVCg2KSlcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjM5OiNkZWZpbmUgRFA4Mzg2N19DRkc0X1NHTUlJX0FORUdfVElNRVJfMTFNUyAgICgzIFxcdTAwM2NcXHUwMDNjIDUpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0MDojZGVmaW5lIERQODM4NjdfQ0ZHNF9TR01JSV9BTkVHX1RJTUVSXzgwMFVTICAoMiBcXHUwMDNjXFx1MDAzYyA1KVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDE6I2RlZmluZSBEUDgzODY3X0NGRzRfU0dNSUlfQU5FR19USU1FUl8yVVMgICAgKDEgXFx1MDAzY1xcdTAwM2MgNSlcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQyOiNkZWZpbmUgRFA4Mzg2N19DRkc0X1NHTUlJX0FORUdfVElNRVJfMTZNUyAgICgwIFxcdTAwM2NcXHUwMDNjIDUpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00My1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQ0OiNkZWZpbmUgRFA4Mzg2N19SR01JSUNUTFxcdDB4MDAzMlxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDU6I2RlZmluZSBEUDgzODY3X1NUUkFQX1NUUzFcXHQweDAwNkVcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQ2OiNkZWZpbmUgRFA4Mzg2N19TVFJBUF9TVFMyXFx0MHgwMDZmXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0NzojZGVmaW5lIERQODM4NjdfUkdNSUlEQ1RMXFx0MHgwMDg2XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0ODojZGVmaW5lIERQODM4NjdfRFNQX0ZGRV9DRkdcXHQweDAxMmNcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQ5OiNkZWZpbmUgRFA4Mzg2N19SWEZDRkdcXHRcXHQweDAxMzRcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjUwOiNkZWZpbmUgRFA4Mzg2N19SWEZQTUQxXFx0MHgwMTM2XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo1MTojZGVmaW5lIERQODM4NjdfUlhGUE1EMlxcdDB4MDEzN1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NTI6I2RlZmluZSBEUDgzODY3X1JYRlBNRDNcXHQweDAxMzhcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjUzOiNkZWZpbmUgRFA4Mzg2N19SWEZTT1AxXFx0MHgwMTM5XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo1NDojZGVmaW5lIERQODM4NjdfUlhGU09QMlxcdDB4MDEzQVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NTU6I2RlZmluZSBEUDgzODY3X1JYRlNPUDNcXHQweDAxM0JcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjU2OiNkZWZpbmUgRFA4Mzg2N19JT19NVVhfQ0ZHXFx0MHgwMTcwXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo1NzojZGVmaW5lIERQODM4NjdfU0dNSUlDVExcXHQweDAwRDNcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjU4OiNkZWZpbmUgRFA4Mzg2N18xME1fU0dNSUlfQ0ZHICAgMHgwMTZGXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo1OTojZGVmaW5lIERQODM4NjdfMTBNX1NHTUlJX1JBVEVfQURBUFRfTUFTSyBCSVQoNylcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTYwLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NjE6I2RlZmluZSBEUDgzODY3X1NXX1JFU0VUXFx0QklUKDE1KVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NjI6I2RlZmluZSBEUDgzODY3X1NXX1JFU1RBUlRcXHRCSVQoMTQpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02My1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTY0LS8qIE1JQ1IgSW50ZXJydXB0IGJpdHMgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjY1OiNkZWZpbmUgTUlJX0RQODM4NjdfTUlDUl9BTl9FUlJfSU5UX0VOXFx0XFx0QklUKDE1KVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NjY6I2RlZmluZSBNSUlfRFA4Mzg2N19NSUNSX1NQRUVEX0NITkdfSU5UX0VOXFx0QklUKDE0KVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6Njc6I2RlZmluZSBNSUlfRFA4Mzg2N19NSUNSX0RVUF9NT0RFX0NITkdfSU5UX0VOXFx0QklUKDEzKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6Njg6I2RlZmluZSBNSUlfRFA4Mzg2N19NSUNSX1BBR0VfUlhEX0lOVF9FTlxcdEJJVCgxMilcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjY5OiNkZWZpbmUgTUlJX0RQODM4NjdfTUlDUl9BVVRPTkVHX0NPTVBfSU5UX0VOXFx0QklUKDExKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NzA6I2RlZmluZSBNSUlfRFA4Mzg2N19NSUNSX0xJTktfU1RTX0NITkdfSU5UX0VOXFx0QklUKDEwKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NzE6I2RlZmluZSBNSUlfRFA4Mzg2N19NSUNSX0ZBTFNFX0NBUlJJRVJfSU5UX0VOXFx0QklUKDgpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo3MjojZGVmaW5lIE1JSV9EUDgzODY3X01JQ1JfU0xFRVBfTU9ERV9DSE5HX0lOVF9FTlxcdEJJVCg0KVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NzM6I2RlZmluZSBNSUlfRFA4Mzg2N19NSUNSX1dPTF9JTlRfRU5cXHRcXHRCSVQoMylcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjc0OiNkZWZpbmUgTUlJX0RQODM4NjdfTUlDUl9YR01JSV9FUlJfSU5UX0VOXFx0QklUKDIpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo3NTojZGVmaW5lIE1JSV9EUDgzODY3X01JQ1JfUE9MX0NITkdfSU5UX0VOXFx0QklUKDEpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo3NjojZGVmaW5lIE1JSV9EUDgzODY3X01JQ1JfSkFCQkVSX0lOVF9FTlxcdFxcdEJJVCgwKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNzctXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy03OC0vKiBSR01JSUNUTCBiaXRzICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo3OTojZGVmaW5lIERQODM4NjdfUkdNSUlfRU5cXHRcXHRcXHRCSVQoNylcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjgwOiNkZWZpbmUgRFA4Mzg2N19SR01JSV9UWF9DTEtfREVMQVlfRU5cXHRcXHRCSVQoMSlcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjgxOiNkZWZpbmUgRFA4Mzg2N19SR01JSV9SWF9DTEtfREVMQVlfRU5cXHRcXHRCSVQoMClcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTgyLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtODMtLyogU0dNSUlDVEwgYml0cyAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6ODQ6I2RlZmluZSBEUDgzODY3X1NHTUlJX1RZUEVcXHRcXHRCSVQoMTQpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy04NS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTg2LS8qIFJYRkNGRyBiaXRzKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjg3OiNkZWZpbmUgRFA4Mzg2N19XT0xfTUFHSUNfRU5cXHRcXHRCSVQoMClcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjg4OiNkZWZpbmUgRFA4Mzg2N19XT0xfQkNBU1RfRU5cXHRcXHRCSVQoMilcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjg5OiNkZWZpbmUgRFA4Mzg2N19XT0xfVUNBU1RfRU5cXHRcXHRCSVQoNClcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjkwOiNkZWZpbmUgRFA4Mzg2N19XT0xfU0VDX0VOXFx0XFx0QklUKDUpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo5MTojZGVmaW5lIERQODM4NjdfV09MX0VOSF9NQUNcXHRcXHRCSVQoNylcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTkyLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtOTMtLyogU1RSQVBfU1RTMSBiaXRzICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo5NDojZGVmaW5lIERQODM4NjdfU1RSQVBfU1RTMV9SRVNFUlZFRFxcdFxcdEJJVCgxMSlcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTk1LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtOTYtLyogU1RSQVBfU1RTMiBiaXRzICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo5NzojZGVmaW5lIERQODM4NjdfU1RSQVBfU1RTMl9TVFJBUF9GTERcXHRcXHRCSVQoMTApXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy05OC1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTk5LS8qIFBIWSBDVFJMIGJpdHMgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjEwMDojZGVmaW5lIERQODM4NjdfUEhZQ1JfVFhfRklGT19ERVBUSF9TSElGVFxcdDE0XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMDE6I2RlZmluZSBEUDgzODY3X1BIWUNSX1JYX0ZJRk9fREVQVEhfU0hJRlRcXHQxMlxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTAyOiNkZWZpbmUgRFA4Mzg2N19QSFlDUl9GSUZPX0RFUFRIX01BWFxcdFxcdDB4MDNcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjEwMzojZGVmaW5lIERQODM4NjdfUEhZQ1JfVFhfRklGT19ERVBUSF9NQVNLXFx0R0VOTUFTSygxNSwgMTQpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMDQ6I2RlZmluZSBEUDgzODY3X1BIWUNSX1JYX0ZJRk9fREVQVEhfTUFTS1xcdEdFTk1BU0soMTMsIDEyKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTA1OiNkZWZpbmUgRFA4Mzg2N19QSFlDUl9TR01JSV9FTlxcdFxcdFxcdEJJVCgxMSlcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjEwNjojZGVmaW5lIERQODM4NjdfUEhZQ1JfRk9SQ0VfTElOS19HT09EXFx0XFx0QklUKDEwKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTA3OiNkZWZpbmUgRFA4Mzg2N19QSFlDUl9NRElYX01BU0tcXHRcXHRcXHRHRU5NQVNLKDYsIDUpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMDg6I2RlZmluZSBEUDgzODY3X1BIWUNSX01ESVhfTURJXFx0XFx0XFx0KDB4MCBcXHUwMDNjXFx1MDAzYyA1KVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTA5OiNkZWZpbmUgRFA4Mzg2N19QSFlDUl9NRElYX01ESVhcXHRcXHRcXHQoMHgxIFxcdTAwM2NcXHUwMDNjIDUpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMTA6I2RlZmluZSBEUDgzODY3X1BIWUNSX01ESVhfQVVUT1xcdFxcdFxcdCgweDMgXFx1MDAzY1xcdTAwM2MgNSlcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTExMS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTExMi0vKiBSR01JSURDVEwgYml0cyAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTEzOiNkZWZpbmUgRFA4Mzg2N19SR01JSV9UWF9DTEtfREVMQVlfTUFYXFx0XFx0MHhmXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMTQ6I2RlZmluZSBEUDgzODY3X1JHTUlJX1RYX0NMS19ERUxBWV9TSElGVFxcdDRcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjExNTojZGVmaW5lIERQODM4NjdfUkdNSUlfUlhfQ0xLX0RFTEFZX01BWFxcdFxcdDB4ZlxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTE2OiNkZWZpbmUgRFA4Mzg2N19SR01JSV9SWF9DTEtfREVMQVlfU0hJRlRcXHQwXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xMTctXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xMTgtLyogSU9fTVVYX0NGRyBiaXRzICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMTk6I2RlZmluZSBEUDgzODY3X0lPX01VWF9DRkdfSU9fSU1QRURBTkNFX01BU0tcXHQweDFmXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMjA6I2RlZmluZSBEUDgzODY3X0lPX01VWF9DRkdfSU9fSU1QRURBTkNFX01BWFxcdDB4MFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTIxOiNkZWZpbmUgRFA4Mzg2N19JT19NVVhfQ0ZHX0lPX0lNUEVEQU5DRV9NSU5cXHQweDFmXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMjI6I2RlZmluZSBEUDgzODY3X0lPX01VWF9DRkdfQ0xLX09fRElTQUJMRVxcdEJJVCg2KVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTIzOiNkZWZpbmUgRFA4Mzg2N19JT19NVVhfQ0ZHX0NMS19PX1NFTF9NQVNLXFx0KDB4MWYgXFx1MDAzY1xcdTAwM2MgOClcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjEyNDojZGVmaW5lIERQODM4NjdfSU9fTVVYX0NGR19DTEtfT19TRUxfU0hJRlRcXHQ4XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xMjUtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xMjYtLyogUEhZIFNUUyBiaXRzICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMjc6I2RlZmluZSBEUDgzODY3X1BIWVNUU18xMDAwXFx0XFx0XFx0QklUKDE1KVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTI4OiNkZWZpbmUgRFA4Mzg2N19QSFlTVFNfMTAwXFx0XFx0XFx0QklUKDE0KVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTI5OiNkZWZpbmUgRFA4Mzg2N19QSFlTVFNfRFVQTEVYXFx0XFx0XFx0QklUKDEzKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTMwOiNkZWZpbmUgRFA4Mzg2N19QSFlTVFNfTElOS1xcdFxcdFxcdEJJVCgxMClcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjEzMTojZGVmaW5lIERQODM4NjdfUEhZU1RTX01ESVhfQ0RcXHRcXHRcXHRCSVQoOSlcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjEzMjojZGVmaW5lIERQODM4NjdfUEhZU1RTX01ESVhfQUJcXHRcXHRcXHRCSVQoOClcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjEzMzojZGVmaW5lIERQODM4NjdfUEhZU1RTX01ESVhfTUFTS1xcdFxcdChEUDgzODY3X1BIWVNUU19NRElYX0FCIHwgXFxcXFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTM0OlxcdFxcdFxcdFxcdFxcdFxcdERQODM4NjdfUEhZU1RTX01ESVhfQ0QpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xMzUtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xMzYtLyogQ0ZHMiBiaXRzICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMzc6I2RlZmluZSBEUDgzODY3X0RPV05TSElGVF9FTlxcdFxcdChCSVQoOCkgfCBCSVQoOSkpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMzg6I2RlZmluZSBEUDgzODY3X0RPV05TSElGVF9BVFRFTVBUX01BU0tcXHQoQklUKDEwKSB8IEJJVCgxMSkpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMzk6I2RlZmluZSBEUDgzODY3X0RPV05TSElGVF8xX0NPVU5UX1ZBTFxcdDBcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE0MDojZGVmaW5lIERQODM4NjdfRE9XTlNISUZUXzJfQ09VTlRfVkFMXFx0MVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTQxOiNkZWZpbmUgRFA4Mzg2N19ET1dOU0hJRlRfNF9DT1VOVF9WQUxcXHQyXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxNDI6I2RlZmluZSBEUDgzODY3X0RPV05TSElGVF84X0NPVU5UX1ZBTFxcdDNcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE0MzojZGVmaW5lIERQODM4NjdfRE9XTlNISUZUXzFfQ09VTlRcXHQxXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxNDQ6I2RlZmluZSBEUDgzODY3X0RPV05TSElGVF8yX0NPVU5UXFx0MlxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTQ1OiNkZWZpbmUgRFA4Mzg2N19ET1dOU0hJRlRfNF9DT1VOVFxcdDRcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE0NjojZGVmaW5lIERQODM4NjdfRE9XTlNISUZUXzhfQ09VTlRcXHQ4XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxNDc6I2RlZmluZSBEUDgzODY3X1NHTUlJX0FVVE9ORUdfRU5cXHRCSVQoNylcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTE0OC1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTE0OS0vKiBDRkczIGJpdHMgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE1MDojZGVmaW5lIERQODM4NjdfQ0ZHM19JTlRfT0VcXHRcXHRcXHRCSVQoNylcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE1MTojZGVmaW5lIERQODM4NjdfQ0ZHM19ST0JVU1RfQVVUT19NRElYXFx0XFx0QklUKDkpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xNTItXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xNTMtLyogQ0ZHNCBiaXRzICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxNTQ6I2RlZmluZSBEUDgzODY3X0NGRzRfUE9SVF9NSVJST1JfRU4gICAgICAgICAgICAgIEJJVCgwKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMTU1LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMTU2LS8qIEZMRF9USFJfQ0ZHICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxNTc6I2RlZmluZSBEUDgzODY3X0ZMRF9USFJfQ0ZHX0VORVJHWV9MT1NUX1RIUl9NQVNLXFx0MHg3XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xNTgtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxNTk6I2RlZmluZSBEUDgzODY3X0xFRF9DT1VOVFxcdDRcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTE2MC1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTE2MS0vKiBMRURfRFJWIGJpdHMgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE2MjojZGVmaW5lIERQODM4NjdfTEVEX0RSVl9FTih4KVxcdEJJVCgoeCkgKiA0KVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTYzOiNkZWZpbmUgRFA4Mzg2N19MRURfRFJWX1ZBTCh4KVxcdEJJVCgoeCkgKiA0ICsgMSlcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE2NDojZGVmaW5lIERQODM4NjdfTEVEX1BPTEFSSVRZKHgpXFx0QklUKCh4KSAqIDQgKyAyKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMTY1LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTY2OiNkZWZpbmUgRFA4Mzg2N19MRURfRk4oaWR4LCB2YWwpXFx0KCgodmFsKSBcXHUwMDI2IDB4ZikgXFx1MDAzY1xcdTAwM2MgKChpZHgpICogNCkpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxNjc6I2RlZmluZSBEUDgzODY3X0xFRF9GTl9NQVNLKGlkeClcXHQoMHhmIFxcdTAwM2NcXHUwMDNjICgoaWR4KSAqIDQpKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTY4OiNkZWZpbmUgRFA4Mzg2N19MRURfRk5fUlhfRVJSXFx0XFx0MHhlIC8qIFJlY2VpdmUgRXJyb3IgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE2OTojZGVmaW5lIERQODM4NjdfTEVEX0ZOX1JYX1RYX0VSUlxcdDB4ZCAvKiBSZWNlaXZlIEVycm9yIG9yIFRyYW5zbWl0IEVycm9yICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxNzA6I2RlZmluZSBEUDgzODY3X0xFRF9GTl9MSU5LX1JYX1RYXFx0MHhiIC8qIExpbmsgZXN0YWJsaXNoZWQsIGJsaW5rIGZvciByeCBvciB0eCBhY3Rpdml0eSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTcxOiNkZWZpbmUgRFA4Mzg2N19MRURfRk5fRlVMTF9EVVBMRVhcXHQweGEgLyogRnVsbCBkdXBsZXggKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE3MjojZGVmaW5lIERQODM4NjdfTEVEX0ZOX0xJTktfMTAwXzEwMDBfQlRcXHQweDkgLyogMTAwLzEwMDBCVCBsaW5rIGVzdGFibGlzaGVkICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxNzM6I2RlZmluZSBEUDgzODY3X0xFRF9GTl9MSU5LXzEwXzEwMF9CVFxcdDB4OCAvKiAxMC8xMDBCVCBsaW5rIGVzdGFibGlzaGVkICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxNzQ6I2RlZmluZSBEUDgzODY3X0xFRF9GTl9MSU5LXzEwX0JUXFx0MHg3IC8qIDEwQlQgbGluayBlc3RhYmxpc2hlZCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTc1OiNkZWZpbmUgRFA4Mzg2N19MRURfRk5fTElOS18xMDBfQlRYXFx0MHg2IC8qIDEwMCBCVFggbGluayBlc3RhYmxpc2hlZCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTc2OiNkZWZpbmUgRFA4Mzg2N19MRURfRk5fTElOS18xMDAwX0JUXFx0MHg1IC8qIDEwMDAgQlQgbGluayBlc3RhYmxpc2hlZCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTc3OiNkZWZpbmUgRFA4Mzg2N19MRURfRk5fQ09MTElTSU9OXFx0MHg0IC8qIENvbGxpc2lvbiBkZXRlY3RlZCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTc4OiNkZWZpbmUgRFA4Mzg2N19MRURfRk5fUlhcXHRcXHQweDMgLyogUmVjZWl2ZSBhY3Rpdml0eSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTc5OiNkZWZpbmUgRFA4Mzg2N19MRURfRk5fVFhcXHRcXHQweDIgLyogVHJhbnNtaXQgYWN0aXZpdHkgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE4MDojZGVmaW5lIERQODM4NjdfTEVEX0ZOX1JYX1RYXFx0XFx0MHgxIC8qIFJlY2VpdmUgb3IgVHJhbnNtaXQgYWN0aXZpdHkgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE4MTojZGVmaW5lIERQODM4NjdfTEVEX0ZOX0xJTktcXHRcXHQweDAgLyogTGluayBlc3RhYmxpc2hlZCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMTgyLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM9MTgzPWVudW0ge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTg0OlxcdERQODM4NjdfUE9SVF9NSVJST0lOR19LRUVQLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MTg1OlxcdERQODM4NjdfUE9SVF9NSVJST0lOR19FTixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjE4NjpcXHREUDgzODY3X1BPUlRfTUlSUk9JTkdfRElTLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMTg3LX07XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jPTIxMj1zdGF0aWMgaW50IGRwODM4NjdfYWNrX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjEzLXtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjIxNDpcXHRpbnQgZXJyID0gcGh5X3JlYWQocGh5ZGV2LCBNSUlfRFA4Mzg2N19JU1IpO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjE1LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYz0yMjI9c3RhdGljIGludCBkcDgzODY3X3NldF93b2woc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjI4LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjI5OlxcdHZhbF9yeGNmZyA9IHBoeV9yZWFkX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19SWEZDRkcpO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjMwOlxcdHZhbF9taWNyID0gcGh5X3JlYWQocGh5ZGV2LCBNSUlfRFA4Mzg2N19NSUNSKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTIzMS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjMzLVxcdFxcdFxcdCAgICBXQUtFX0JDQVNUKSkge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjM0OlxcdFxcdHZhbF9yeGNmZyB8PSBEUDgzODY3X1dPTF9FTkhfTUFDO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjM1OlxcdFxcdHZhbF9taWNyIHw9IE1JSV9EUDgzODY3X01JQ1JfV09MX0lOVF9FTjtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTIzNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjQyLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjQzOlxcdFxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfUlhGUE1EMSxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI0NC1cXHRcXHRcXHRcXHQgICAgICAobWFjWzFdIFxcdTAwM2NcXHUwMDNjIDggfCBtYWNbMF0pKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI0NTpcXHRcXHRcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JYRlBNRDIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yNDYtXFx0XFx0XFx0XFx0ICAgICAgKG1hY1szXSBcXHUwMDNjXFx1MDAzYyA4IHwgbWFjWzJdKSk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyNDc6XFx0XFx0XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19SWEZQTUQzLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjQ4LVxcdFxcdFxcdFxcdCAgICAgIChtYWNbNV0gXFx1MDAzY1xcdTAwM2MgOCB8IG1hY1s0XSkpO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjQ5LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjUwOlxcdFxcdFxcdHZhbF9yeGNmZyB8PSBEUDgzODY3X1dPTF9NQUdJQ19FTjtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI1MS1cXHRcXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjUyOlxcdFxcdFxcdHZhbF9yeGNmZyBcXHUwMDI2PSB+RFA4Mzg2N19XT0xfTUFHSUNfRU47XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yNTMtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yNTUtXFx0XFx0aWYgKHdvbC1cXHUwMDNld29sb3B0cyBcXHUwMDI2IFdBS0VfTUFHSUNTRUNVUkUpIHtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI1NjpcXHRcXHRcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JYRlNPUDEsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yNTctXFx0XFx0XFx0XFx0ICAgICAgKHdvbC1cXHUwMDNlc29wYXNzWzFdIFxcdTAwM2NcXHUwMDNjIDgpIHwgd29sLVxcdTAwM2Vzb3Bhc3NbMF0pO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MjU4OlxcdFxcdFxcdHBoeV93cml0ZV9tbWQocGh5ZGV2LCBEUDgzODY3X0RFVkFERFIsIERQODM4NjdfUlhGU09QMixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI1OS1cXHRcXHRcXHRcXHQgICAgICAod29sLVxcdTAwM2Vzb3Bhc3NbM10gXFx1MDAzY1xcdTAwM2MgOCkgfCB3b2wtXFx1MDAzZXNvcGFzc1syXSk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyNjA6XFx0XFx0XFx0cGh5X3dyaXRlX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19SWEZTT1AzLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjYxLVxcdFxcdFxcdFxcdCAgICAgICh3b2wtXFx1MDAzZXNvcGFzc1s1XSBcXHUwMDNjXFx1MDAzYyA4KSB8IHdvbC1cXHUwMDNlc29wYXNzWzRdKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI2Mi1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI2MzpcXHRcXHRcXHR2YWxfcnhjZmcgfD0gRFA4Mzg2N19XT0xfU0VDX0VOO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjY0LVxcdFxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyNjU6XFx0XFx0XFx0dmFsX3J4Y2ZnIFxcdTAwMjY9IH5EUDgzODY3X1dPTF9TRUNfRU47XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yNjYtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yNjgtXFx0XFx0aWYgKHdvbC1cXHUwMDNld29sb3B0cyBcXHUwMDI2IFdBS0VfVUNBU1QpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyNjk6XFx0XFx0XFx0dmFsX3J4Y2ZnIHw9IERQODM4NjdfV09MX1VDQVNUX0VOO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjcwLVxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI3MTpcXHRcXHRcXHR2YWxfcnhjZmcgXFx1MDAyNj0gfkRQODM4NjdfV09MX1VDQVNUX0VOO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjcyLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjczLVxcdFxcdGlmICh3b2wtXFx1MDAzZXdvbG9wdHMgXFx1MDAyNiBXQUtFX0JDQVNUKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6Mjc0OlxcdFxcdFxcdHZhbF9yeGNmZyB8PSBEUDgzODY3X1dPTF9CQ0FTVF9FTjtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI3NS1cXHRcXHRlbHNlXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyNzY6XFx0XFx0XFx0dmFsX3J4Y2ZnIFxcdTAwMjY9IH5EUDgzODY3X1dPTF9CQ0FTVF9FTjtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI3Ny1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6Mjc4OlxcdFxcdHZhbF9yeGNmZyBcXHUwMDI2PSB+RFA4Mzg2N19XT0xfRU5IX01BQztcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI3OTpcXHRcXHR2YWxfbWljciBcXHUwMDI2PSB+TUlJX0RQODM4NjdfTUlDUl9XT0xfSU5UX0VOO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjgwLVxcdH1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTI4MS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI4MjpcXHRwaHlfd3JpdGVfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JYRkNGRywgdmFsX3J4Y2ZnKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjI4MzpcXHRwaHlfd3JpdGUocGh5ZGV2LCBNSUlfRFA4Mzg2N19NSUNSLCB2YWxfbWljcik7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yODQtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jPTI4OD1zdGF0aWMgdm9pZCBkcDgzODY3X2dldF93b2woc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMjk2LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6Mjk3OlxcdHZhbHVlID0gcGh5X3JlYWRfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JYRkNGRyk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0yOTgtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoyOTk6XFx0aWYgKHZhbHVlIFxcdTAwMjYgRFA4Mzg2N19XT0xfVUNBU1RfRU4pXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zMDAtXFx0XFx0d29sLVxcdTAwM2V3b2xvcHRzIHw9IFdBS0VfVUNBU1Q7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zMDEtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozMDI6XFx0aWYgKHZhbHVlIFxcdTAwMjYgRFA4Mzg2N19XT0xfQkNBU1RfRU4pXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zMDMtXFx0XFx0d29sLVxcdTAwM2V3b2xvcHRzIHw9IFdBS0VfQkNBU1Q7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zMDQtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozMDU6XFx0aWYgKHZhbHVlIFxcdTAwMjYgRFA4Mzg2N19XT0xfTUFHSUNfRU4pXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zMDYtXFx0XFx0d29sLVxcdTAwM2V3b2xvcHRzIHw9IFdBS0VfTUFHSUM7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zMDctXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozMDg6XFx0aWYgKHZhbHVlIFxcdTAwMjYgRFA4Mzg2N19XT0xfU0VDX0VOKSB7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozMDk6XFx0XFx0c29wYXNzX3ZhbCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjMxMDpcXHRcXHRcXHRcXHRcXHQgIERQODM4NjdfUlhGU09QMSk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zMTEtXFx0XFx0d29sLVxcdTAwM2Vzb3Bhc3NbMF0gPSAoc29wYXNzX3ZhbCBcXHUwMDI2IDB4ZmYpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zMTMtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozMTQ6XFx0XFx0c29wYXNzX3ZhbCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjMxNTpcXHRcXHRcXHRcXHRcXHQgIERQODM4NjdfUlhGU09QMik7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zMTYtXFx0XFx0d29sLVxcdTAwM2Vzb3Bhc3NbMl0gPSAoc29wYXNzX3ZhbCBcXHUwMDI2IDB4ZmYpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zMTgtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozMTk6XFx0XFx0c29wYXNzX3ZhbCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjMyMDpcXHRcXHRcXHRcXHRcXHQgIERQODM4NjdfUlhGU09QMyk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zMjEtXFx0XFx0d29sLVxcdTAwM2Vzb3Bhc3NbNF0gPSAoc29wYXNzX3ZhbCBcXHUwMDI2IDB4ZmYpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zMjYtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozMjc6XFx0aWYgKCEodmFsdWUgXFx1MDAyNiBEUDgzODY3X1dPTF9FTkhfTUFDKSlcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTMyOC1cXHRcXHR3b2wtXFx1MDAzZXdvbG9wdHMgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYz0zMzE9c3RhdGljIGludCBkcDgzODY3X2NvbmZpZ19pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTMzOS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjM0MDpcXHRcXHRtaWNyX3N0YXR1cyA9IHBoeV9yZWFkKHBoeWRldiwgTUlJX0RQODM4NjdfTUlDUik7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zNDEtXFx0XFx0aWYgKG1pY3Jfc3RhdHVzIFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMzQ0LVxcdFxcdG1pY3Jfc3RhdHVzIHw9XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozNDU6XFx0XFx0XFx0KE1JSV9EUDgzODY3X01JQ1JfQU5fRVJSX0lOVF9FTiB8XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozNDY6XFx0XFx0XFx0TUlJX0RQODM4NjdfTUlDUl9TUEVFRF9DSE5HX0lOVF9FTiB8XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozNDc6XFx0XFx0XFx0TUlJX0RQODM4NjdfTUlDUl9BVVRPTkVHX0NPTVBfSU5UX0VOIHxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjM0ODpcXHRcXHRcXHRNSUlfRFA4Mzg2N19NSUNSX0xJTktfU1RTX0NITkdfSU5UX0VOIHxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjM0OTpcXHRcXHRcXHRNSUlfRFA4Mzg2N19NSUNSX0RVUF9NT0RFX0NITkdfSU5UX0VOIHxcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjM1MDpcXHRcXHRcXHRNSUlfRFA4Mzg2N19NSUNSX1NMRUVQX01PREVfQ0hOR19JTlRfRU4pO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMzUxLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MzUyOlxcdFxcdGVyciA9IHBoeV93cml0ZShwaHlkZXYsIE1JSV9EUDgzODY3X01JQ1IsIG1pY3Jfc3RhdHVzKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTM1My1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMzU0LVxcdFxcdG1pY3Jfc3RhdHVzID0gMHgwO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6MzU1OlxcdFxcdGVyciA9IHBoeV93cml0ZShwaHlkZXYsIE1JSV9EUDgzODY3X01JQ1IsIG1pY3Jfc3RhdHVzKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTM1Ni1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYz0zNjU9c3RhdGljIGlycXJldHVybl90IGRwODM4NjdfaGFuZGxlX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0zNjgtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozNjk6XFx0aXJxX3N0YXR1cyA9IHBoeV9yZWFkKHBoeWRldiwgTUlJX0RQODM4NjdfSVNSKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTM3MC1cXHRpZiAoaXJxX3N0YXR1cyBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtMzc0LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6Mzc1OlxcdGlycV9lbmFibGVkID0gcGh5X3JlYWQocGh5ZGV2LCBNSUlfRFA4Mzg2N19NSUNSKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTM3Ni1cXHRpZiAoaXJxX2VuYWJsZWQgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jPTM4OT1zdGF0aWMgaW50IGRwODM4NjdfcmVhZF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTM5MC17XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzozOTE6XFx0aW50IHN0YXR1cyA9IHBoeV9yZWFkKHBoeWRldiwgTUlJX0RQODM4NjdfUEhZU1RTKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTM5Mi1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00MDAtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0MDE6XFx0aWYgKHN0YXR1cyBcXHUwMDI2IERQODM4NjdfUEhZU1RTX0RVUExFWClcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQwMi1cXHRcXHRwaHlkZXYtXFx1MDAzZWR1cGxleCA9IERVUExFWF9GVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00MDUtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0MDY6XFx0aWYgKHN0YXR1cyBcXHUwMDI2IERQODM4NjdfUEhZU1RTXzEwMDApXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00MDctXFx0XFx0cGh5ZGV2LVxcdTAwM2VzcGVlZCA9IFNQRUVEXzEwMDA7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0MDg6XFx0ZWxzZSBpZiAoc3RhdHVzIFxcdTAwMjYgRFA4Mzg2N19QSFlTVFNfMTAwKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNDA5LVxcdFxcdHBoeWRldi1cXHUwMDNlc3BlZWQgPSBTUEVFRF8xMDA7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQxMi1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQxMzpcXHRpZiAoIShzdGF0dXMgXFx1MDAyNiBEUDgzODY3X1BIWVNUU19MSU5LKSkge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNDE0LVxcdFxcdHBoeWRldi1cXHUwMDNlbWRpeCA9IEVUSF9UUF9NRElfSU5WQUxJRDtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQxNS1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDE2OlxcdFxcdHN3aXRjaCAoc3RhdHVzIFxcdTAwMjYgRFA4Mzg2N19QSFlTVFNfTURJWF9NQVNLKSB7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00MTctXFx0XFx0Y2FzZSAwOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00MTktXFx0XFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0MjA6XFx0XFx0Y2FzZSBEUDgzODY3X1BIWVNUU19NRElYX01BU0s6XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00MjEtXFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2VtZGl4ID0gRVRIX1RQX01ESV9YO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYz00MzI9c3RhdGljIGludCBkcDgzODY3X2dldF9kb3duc2hpZnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQzNS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQzNjpcXHR2YWwgPSBwaHlfcmVhZChwaHlkZXYsIERQODM4NjdfQ0ZHMik7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00MzctXFx0aWYgKHZhbCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQzOS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQ0MDpcXHRlbmFibGUgPSBGSUVMRF9HRVQoRFA4Mzg2N19ET1dOU0hJRlRfRU4sIHZhbCk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0NDE6XFx0Y250ID0gRklFTERfR0VUKERQODM4NjdfRE9XTlNISUZUX0FUVEVNUFRfTUFTSywgdmFsKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQ0Mi1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQ0My1cXHRzd2l0Y2ggKGNudCkge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDQ0OlxcdGNhc2UgRFA4Mzg2N19ET1dOU0hJRlRfMV9DT1VOVF9WQUw6XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0NDU6XFx0XFx0Y291bnQgPSBEUDgzODY3X0RPV05TSElGVF8xX0NPVU5UO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNDQ2LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDQ3OlxcdGNhc2UgRFA4Mzg2N19ET1dOU0hJRlRfMl9DT1VOVF9WQUw6XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0NDg6XFx0XFx0Y291bnQgPSBEUDgzODY3X0RPV05TSElGVF8yX0NPVU5UO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNDQ5LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDUwOlxcdGNhc2UgRFA4Mzg2N19ET1dOU0hJRlRfNF9DT1VOVF9WQUw6XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0NTE6XFx0XFx0Y291bnQgPSBEUDgzODY3X0RPV05TSElGVF80X0NPVU5UO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNDUyLVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDUzOlxcdGNhc2UgRFA4Mzg2N19ET1dOU0hJRlRfOF9DT1VOVF9WQUw6XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0NTQ6XFx0XFx0Y291bnQgPSBEUDgzODY3X0RPV05TSElGVF84X0NPVU5UO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNDU1LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYz00NjU9c3RhdGljIGludCBkcDgzODY3X3NldF9kb3duc2hpZnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggY250KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00NjgtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0Njk6XFx0aWYgKGNudCBcXHUwMDNlIERQODM4NjdfRE9XTlNISUZUXzhfQ09VTlQpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00NzAtXFx0XFx0cmV0dXJuIC1FMkJJRztcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNDcyLVxcdGlmICghY250KVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDczOlxcdFxcdHJldHVybiBwaHlfY2xlYXJfYml0cyhwaHlkZXYsIERQODM4NjdfQ0ZHMixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQ3NDpcXHRcXHRcXHRcXHQgICAgICBEUDgzODY3X0RPV05TSElGVF9FTik7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00NzUtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy00NzYtXFx0c3dpdGNoIChjbnQpIHtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQ3NzpcXHRjYXNlIERQODM4NjdfRE9XTlNISUZUXzFfQ09VTlQ6XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0Nzg6XFx0XFx0Y291bnQgPSBEUDgzODY3X0RPV05TSElGVF8xX0NPVU5UX1ZBTDtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQ3OS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQ4MDpcXHRjYXNlIERQODM4NjdfRE9XTlNISUZUXzJfQ09VTlQ6XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0ODE6XFx0XFx0Y291bnQgPSBEUDgzODY3X0RPV05TSElGVF8yX0NPVU5UX1ZBTDtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQ4Mi1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQ4MzpcXHRjYXNlIERQODM4NjdfRE9XTlNISUZUXzRfQ09VTlQ6XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0ODQ6XFx0XFx0Y291bnQgPSBEUDgzODY3X0RPV05TSElGVF80X0NPVU5UX1ZBTDtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQ4NS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjQ4NjpcXHRjYXNlIERQODM4NjdfRE9XTlNISUZUXzhfQ09VTlQ6XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo0ODc6XFx0XFx0Y291bnQgPSBEUDgzODY3X0RPV05TSElGVF84X0NPVU5UX1ZBTDtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTQ4OC1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNDk0LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDk1OlxcdHZhbCA9IERQODM4NjdfRE9XTlNISUZUX0VOO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDk2OlxcdHZhbCB8PSBGSUVMRF9QUkVQKERQODM4NjdfRE9XTlNISUZUX0FUVEVNUFRfTUFTSywgY291bnQpO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNDk3LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDk4OlxcdHJldHVybiBwaHlfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19DRkcyLFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NDk5OlxcdFxcdFxcdCAgRFA4Mzg2N19ET1dOU0hJRlRfRU4gfCBEUDgzODY3X0RPV05TSElGVF9BVFRFTVBUX01BU0ssXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy01MDAtXFx0XFx0XFx0ICB2YWwpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYz01MjU9c3RhdGljIGludCBkcDgzODY3X2NvbmZpZ19wb3J0X21pcnJvcmluZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy01MjgtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo1Mjk6XFx0aWYgKGRwODM4NjctXFx1MDAzZXBvcnRfbWlycm9yaW5nID09IERQODM4NjdfUE9SVF9NSVJST0lOR19FTilcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjUzMDpcXHRcXHRwaHlfc2V0X2JpdHNfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X0NGRzQsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo1MzE6XFx0XFx0XFx0XFx0IERQODM4NjdfQ0ZHNF9QT1JUX01JUlJPUl9FTik7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy01MzItXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NTMzOlxcdFxcdHBoeV9jbGVhcl9iaXRzX21tZChwaHlkZXYsIERQODM4NjdfREVWQUREUiwgRFA4Mzg2N19DRkc0LFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NTM0OlxcdFxcdFxcdFxcdCAgIERQODM4NjdfQ0ZHNF9QT1JUX01JUlJPUl9FTik7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy01MzUtXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jPTUzOT1zdGF0aWMgaW50IGRwODM4Njdfb2ZfaW5pdF9pb19pbXBlZGFuY2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNTU2LVxcdFxcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wob2Zfbm9kZSwgXFxcInRpLG1heC1vdXRwdXQtaW1wZWRhbmNlXFxcIikpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo1NTc6XFx0XFx0XFx0ZHA4Mzg2Ny1cXHUwMDNlaW9faW1wZWRhbmNlID0gRFA4Mzg2N19JT19NVVhfQ0ZHX0lPX0lNUEVEQU5DRV9NQVg7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy01NTgtXFx0XFx0ZWxzZSBpZiAob2ZfcHJvcGVydHlfcmVhZF9ib29sKG9mX25vZGUsIFxcXCJ0aSxtaW4tb3V0cHV0LWltcGVkYW5jZVxcXCIpKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NTU5OlxcdFxcdFxcdGRwODM4NjctXFx1MDAzZWlvX2ltcGVkYW5jZSA9IERQODM4NjdfSU9fTVVYX0NGR19JT19JTVBFREFOQ0VfTUlOO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNTYwLVxcdFxcdGVsc2VcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNTc0LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NTc1OlxcdGlmICgodmFsIFxcdTAwMjYgRFA4Mzg2N19JT19NVVhfQ0ZHX0lPX0lNUEVEQU5DRV9NQVNLKSAhPSB2YWwpIHtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTU3Ni1cXHRcXHRwaHlkZXZfZXJyKHBoeWRldiwgXFxcIm52bWVtIGNlbGwgJ2lvX2ltcGVkYW5jZV9jdHJsJyBjb250ZW50cyBvdXQgb2YgcmFuZ2VcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYz01ODQ9c3RhdGljIGludCBkcDgzODY3X29mX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNTk5LVxcdFxcdGRwODM4NjctXFx1MDAzZXNldF9jbGtfb3V0cHV0ID0gdHJ1ZTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjYwMDpcXHRcXHQvKiBWYWxpZCB2YWx1ZXMgYXJlIDAgdG8gRFA4Mzg2N19DTEtfT19TRUxfUkVGX0NMSyBvclxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NjAxOlxcdFxcdCAqIERQODM4NjdfQ0xLX09fU0VMX09GRi5cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTYwMi1cXHRcXHQgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjYwMzpcXHRcXHRpZiAoZHA4Mzg2Ny1cXHUwMDNlY2xrX291dHB1dF9zZWwgXFx1MDAzZSBEUDgzODY3X0NMS19PX1NFTF9SRUZfQ0xLIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo2MDQ6XFx0XFx0ICAgIGRwODM4NjctXFx1MDAzZWNsa19vdXRwdXRfc2VsICE9IERQODM4NjdfQ0xLX09fU0VMX09GRikge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNjA1LVxcdFxcdFxcdHBoeWRldl9lcnIocGh5ZGV2LCBcXFwidGksY2xrLW91dHB1dC1zZWwgdmFsdWUgJXUgb3V0IG9mIHJhbmdlXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02MjAtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo2MjE6XFx0ZHA4Mzg2Ny1cXHUwMDNlcnhfaWRfZGVsYXkgPSBEUDgzODY3X1JHTUlJRENUTF8yXzAwX05TO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNjIyLVxcdHJldCA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKG9mX25vZGUsIFxcXCJ0aSxyeC1pbnRlcm5hbC1kZWxheVxcXCIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02MjMtXFx0XFx0XFx0XFx0ICAgXFx1MDAyNmRwODM4NjctXFx1MDAzZXJ4X2lkX2RlbGF5KTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjYyNDpcXHRpZiAoIXJldCBcXHUwMDI2XFx1MDAyNiBkcDgzODY3LVxcdTAwM2VyeF9pZF9kZWxheSBcXHUwMDNlIERQODM4NjdfUkdNSUlfUlhfQ0xLX0RFTEFZX01BWCkge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNjI1LVxcdFxcdHBoeWRldl9lcnIocGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02MzAtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo2MzE6XFx0ZHA4Mzg2Ny1cXHUwMDNldHhfaWRfZGVsYXkgPSBEUDgzODY3X1JHTUlJRENUTF8yXzAwX05TO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNjMyLVxcdHJldCA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKG9mX25vZGUsIFxcXCJ0aSx0eC1pbnRlcm5hbC1kZWxheVxcXCIsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02MzMtXFx0XFx0XFx0XFx0ICAgXFx1MDAyNmRwODM4NjctXFx1MDAzZXR4X2lkX2RlbGF5KTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjYzNDpcXHRpZiAoIXJldCBcXHUwMDI2XFx1MDAyNiBkcDgzODY3LVxcdTAwM2V0eF9pZF9kZWxheSBcXHUwMDNlIERQODM4NjdfUkdNSUlfVFhfQ0xLX0RFTEFZX01BWCkge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNjM1LVxcdFxcdHBoeWRldl9lcnIocGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02NDEtXFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfYm9vbChvZl9ub2RlLCBcXFwiZW5ldC1waHktbGFuZS1zd2FwXFxcIikpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo2NDI6XFx0XFx0ZHA4Mzg2Ny1cXHUwMDNlcG9ydF9taXJyb3JpbmcgPSBEUDgzODY3X1BPUlRfTUlSUk9JTkdfRU47XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02NDMtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02NDQtXFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfYm9vbChvZl9ub2RlLCBcXFwiZW5ldC1waHktbGFuZS1uby1zd2FwXFxcIikpXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo2NDU6XFx0XFx0ZHA4Mzg2Ny1cXHUwMDNlcG9ydF9taXJyb3JpbmcgPSBEUDgzODY3X1BPUlRfTUlSUk9JTkdfRElTO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNjQ2LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02NTMtXFx0XFx0XFx0ZHA4Mzg2Ny1cXHUwMDNldHhfZmlmb19kZXB0aCA9XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo2NTQ6XFx0XFx0XFx0XFx0XFx0RFA4Mzg2N19QSFlDUl9GSUZPX0RFUFRIXzRfQl9OSUI7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02NTUtXFx0fVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNjU2LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NjU3OlxcdGlmIChkcDgzODY3LVxcdTAwM2V0eF9maWZvX2RlcHRoIFxcdTAwM2UgRFA4Mzg2N19QSFlDUl9GSUZPX0RFUFRIX01BWCkge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNjU4LVxcdFxcdHBoeWRldl9lcnIocGh5ZGV2LCBcXFwidHgtZmlmby1kZXB0aCB2YWx1ZSAldSBvdXQgb2YgcmFuZ2VcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTY2NS1cXHRpZiAocmV0KVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NjY2OlxcdFxcdGRwODM4NjctXFx1MDAzZXJ4X2ZpZm9fZGVwdGggPSBEUDgzODY3X1BIWUNSX0ZJRk9fREVQVEhfNF9CX05JQjtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTY2Ny1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjY2ODpcXHRpZiAoZHA4Mzg2Ny1cXHUwMDNlcnhfZmlmb19kZXB0aCBcXHUwMDNlIERQODM4NjdfUEhZQ1JfRklGT19ERVBUSF9NQVgpIHtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTY2OS1cXHRcXHRwaHlkZXZfZXJyKHBoeWRldiwgXFxcInJ4LWZpZm8tZGVwdGggdmFsdWUgJXUgb3V0IG9mIHJhbmdlXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYz02Nzc9c3RhdGljIGludCBkcDgzODY3X29mX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNjg2LVxcdCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6Njg3OlxcdGRlbGF5ID0gcGh5X3JlYWRfbW1kKHBoeWRldiwgRFA4Mzg2N19ERVZBRERSLCBEUDgzODY3X1JHTUlJRENUTCk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo2ODg6XFx0ZHA4Mzg2Ny1cXHUwMDNlcnhfaWRfZGVsYXkgPSBkZWxheSBcXHUwMDI2IERQODM4NjdfUkdNSUlfUlhfQ0xLX0RFTEFZX01BWDtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjY4OTpcXHRkcDgzODY3LVxcdTAwM2V0eF9pZF9kZWxheSA9IChkZWxheSBcXHUwMDNlXFx1MDAzZSBEUDgzODY3X1JHTUlJX1RYX0NMS19ERUxBWV9TSElGVCkgXFx1MDAyNlxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NjkwOlxcdFxcdFxcdCAgICAgICBEUDgzODY3X1JHTUlJX1RYX0NMS19ERUxBWV9NQVg7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02OTEtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTY5NS1cXHQgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjY5NjpcXHRkcDgzODY3LVxcdTAwM2Vpb19pbXBlZGFuY2UgPSBEUDgzODY3X0lPX01VWF9DRkdfSU9fSU1QRURBTkNFX01JTiAvIDI7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy02OTctXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTcwMS1cXHQgKi9cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjcwMjpcXHRkcDgzODY3LVxcdTAwM2V0eF9maWZvX2RlcHRoID0gRFA4Mzg2N19QSFlDUl9GSUZPX0RFUFRIXzRfQl9OSUI7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo3MDM6XFx0ZHA4Mzg2Ny1cXHUwMDNlcnhfZmlmb19kZXB0aCA9IERQODM4NjdfUEhZQ1JfRklGT19ERVBUSF80X0JfTklCO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNzA0LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYz03NTY9c3RhdGljIGludCBfX2RwODM4NjdfbGVkX21vZGlmeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MzIgcmVnLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy03NjUtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo3NjY6XFx0aWYgKHJlZyA9PSBEUDgzODY3X0xFRENSMSkge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNzY3LVxcdFxcdGRwODM4NjctXFx1MDAzZWxlZGNyMSA9IChkcDgzODY3LVxcdTAwM2VsZWRjcjEgXFx1MDAyNiB+bWFzaykgfCAodmFsIFxcdTAwMjYgbWFzayk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy03NjgtXFx0XFx0ZHA4Mzg2Ny1cXHUwMDNlbGVkY3IxX21hc2sgfD0gbWFzaztcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjc2OTpcXHR9IGVsc2UgaWYgKHJlZyA9PSBEUDgzODY3X0xFRENSMikge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNzcwLVxcdFxcdGRwODM4NjctXFx1MDAzZWxlZGNyMiA9IChkcDgzODY3LVxcdTAwM2VsZWRjcjIgXFx1MDAyNiB+bWFzaykgfCAodmFsIFxcdTAwMjYgbWFzayk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jPTc4Mj1zdGF0aWMgaW50IGRwODM4NjdfbGVkX3Jlc3RvcmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNzg4LVxcdGlmIChkcDgzODY3LVxcdTAwM2VsZWRjcjFfbWFzaylcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jOjc4OTpcXHRcXHRyZXQgPSBwaHlfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjEsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy03OTAtXFx0XFx0XFx0XFx0IGRwODM4NjctXFx1MDAzZWxlZGNyMV9tYXNrLCBkcDgzODY3LVxcdTAwM2VsZWRjcjEpO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtNzkxLVxcdGlmICghcmV0IFxcdTAwMjZcXHUwMDI2IGRwODM4NjctXFx1MDAzZWxlZGNyMl9tYXNrKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmM6NzkyOlxcdFxcdHJldCA9IHBoeV9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMixcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTc5My1cXHRcXHRcXHRcXHQgZHA4Mzg2Ny1cXHUwMDNlbGVkY3IyX21hc2ssIGRwODM4NjctXFx1MDAzZWxlZGNyMik7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jPTc5OT1zdGF0aWMgaW50IGRwODM4NjdfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMtODA2LVxcdC8qIEZvcmNlIHNwZWVkIG9wdGltaXphdGlvbiBmb3IgdGhlIFBIWSBldmVuIGlmIGl0IHN0cmFwcGVkICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo4MDc6XFx0cmV0ID0gcGh5X21vZGlmeShwaHlkZXYsIERQODM4NjdfQ0ZHMiwgRFA4Mzg2N19ET1dOU0hJRlRfRU4sXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzo4MDg6XFx0XFx0XFx0IERQODM4NjdfRE9XTlNISUZUX0VOKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTgwOS1cXHRpZiAocmV0KVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQwMDoyOTowMy43MjcxNjc3NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMwOTcxNDk4MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBEUDgzODY3IFBIWSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuY2AuIFJpZ2h0IG9mZiB0aGUgYmF0LCBpdCdzIGFuIE1ESU8gUEhZIGRyaXZlciBkZXNpZ25lZCBmb3IgdGhlIFRleGFzIEluc3RydW1lbnRzIERQODM4NjcgUEhZLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgaXRzIGludGVncmF0aW9uIHdpdGhpbiB0aGUgYnJvYWRlciBQSFkgZHJpdmVyIGFyY2hpdGVjdHVyZSBvZiBgZHJpdmVycy9uZXQvcGh5YC4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlc2UgUEhZIGRyaXZlcnMgYXJlIHR5cGljYWxseSBwcm9iZWQgYW5kIHV0aWxpemVkLiBBcmUgdGhleSBzdHJpY3RseSB0aWVkIHRvIHBoeXNpY2FsIEV0aGVybmV0IFBIWSBjaGlwcyBjb25uZWN0ZWQgdG8gTURJTyBidXNlcz8gT3IgaXMgdGhlcmUgYW55IGZsZXhpYmlsaXR5LCBhbnkgd2F5IHRvIGVtdWxhdGUgb3IgaW50ZXJmYWNlIHRoZW0gaW4gYSB2aXJ0dWFsIGVudmlyb25tZW50IGxpa2Ugc3l6a2FsbGVyIG9yIFFFTVU/XG5cbkknbSB0aGlua2luZyBJJ2xsIG5lZWQgdG8gYnJvYWRlbiBteSBzZWFyY2ggdGVybXMgdG8gaW5jbHVkZSByZWxhdGVkIGNvbmNlcHRzLiBTbywgSSBuZWVkIHRvIGxvb2sgaW50byBob3cgTURJTyBidXNlcywgTURJTyBiaXQtYmFuZ2luZywgTURJTy1HUElPLCB0aGUgY29uY2VwdCBvZiB2aXJ0dWFsIE1ESU8gaW50ZXJmYWNlcywgYW5kIGZpeGVkLVBIWSBjb25maWd1cmF0aW9ucyBmdW5jdGlvbiwgYXMgd2VsbCBhcyB0aGUgc3RydWN0dXJlcyBsaWtlIGBwaHlfZGV2aWNlYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRvIGludGVyYWN0IHdpdGggdGhpcyB0aGluZywgYmVjYXVzZSBJJ20gYXNzdW1pbmcgdGhhdCBpdCB3aWxsIGJlIGEgcGFpbi5cblxuTXkgZmluYWwgdGhvdWdodCBpcyB0aGF0IEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgYW55IGV4aXN0aW5nIG5ldHdvcmsgZHJpdmVyIG9yIHZpcnR1YWwgZHJpdmVyIHJlYWRpbHkgaW50ZXJmYWNlcyB3aXRoIHRoZSBEUDgzODY3LCBvciBpZiBpdCBoYXMgc3BlY2lmaWMgaGFyZHdhcmUgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8ga25vdyBpZiB0aGUgaGFyZHdhcmUgaXMgZnVsbHkgcmVxdWlyZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMDg3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDAwOjI5OjA2LjgyNDMxOTk2NFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTI2MTU2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfcGh5X2RyaXZlci4qZHA4Mzg2N1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYz0xMjY1PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkcDgzODY3X2RyaXZlcltdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYy0xMzAzLX07XFxuZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYzoxMzA0Om1vZHVsZV9waHlfZHJpdmVyKGRwODM4NjdfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jLTEzMDUtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDAwOjI5OjA2Ljg3MzU4NzM1M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ0MDQwOTQ4MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW52ZXN0aWdhdGlvbiBpbnRvIERQODM4NjcgUEhZIERyaXZlciBSZWFjaGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhpcyBgZHA4Mzg2N2AgUEhZIGRyaXZlciBpcyBiZWluZyByZWdpc3RlcmVkIGFuZCB3aGV0aGVyIGl0J3Mgc29tZXRoaW5nIEkgY2FuIGFjdHVhbGx5IHdvcmsgd2l0aCBpbiB0aGlzIHNjZW5hcmlvLiBGaXJzdCwgSSdtIGdvaW5nIHRvIGxvb2sgYXQgdGhlIGNvZGUuIExldCdzIHNlZSBob3cgYHBoeV9kcml2ZXJgIGdldHMgcmVnaXN0ZXJlZCwgc3BlY2lmaWNhbGx5IGluIGBkcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jYC4gQWgsIGBtb2R1bGVfcGh5X2RyaXZlcihkcDgzODY3X2RyaXZlcilgIOKAkyBzbyBpdCdzIHJlZ2lzdGVyaW5nIGEgYHBoeV9kcml2ZXJgIHRoYXQgbWF0Y2hlcyBgRFA4Mzg2N19QSFlfSURgLCB3aGljaCBpcyBgMHgyMDAwYTIzMWAuIE1ha2VzIHNlbnNlLlxuXG5Ob3csIHdoZW4gZG9lcyB0aGlzIGRyaXZlciAqYWN0dWFsbHkqIGdldCBwcm9iZWQ/IFJpZ2h0LCB3aGVuIHRoZSBNRElPIGJ1cyBpcyBzY2FubmVkLiBTbywgZnVuY3Rpb25zIGxpa2UgYG1kaW9idXNfc2NhbmAgb3IgYG9mX21kaW9gIGFyZSB0aGUgdHJpZ2dlcnMuIE9yLCBpZiBhIGBwaHlfZGV2aWNlYCBpcyBleHBsaWNpdGx5IGNyZWF0ZWQgd2l0aCB0aGF0IHNwZWNpZmljIFBIWSBJRC4gR29vZC5cblxuVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGhlcmUgaXMgd2hldGhlciBRRU1VIG9yIGFueSBzdGFuZGFyZCB2aXJ0dWFsIGVudmlyb25tZW50ICplbXVsYXRlcyogYSBEUDgzODY3IFBIWS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUgYXJlIHZpcnR1YWwgYnVzZXMsIGVtdWxhdGVkIGRldmljZXMsIGEgbW9jayBNRElPLCBvciBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggcHVyZWx5IHBoeXNpY2FsIGhhcmR3YXJlIGhlcmUuIFdhaXQsIHdoYXQgaXMgdGhlIERQODM4NjcgaW4gdGhlIHJlYWwgd29ybGQ/IE9oIHJpZ2h0LCBpdCdzIGEgcGh5c2ljYWwgRXRoZXJuZXQgUEhZIGNoaXAgZnJvbSBUZXhhcyBJbnN0cnVtZW50cy5cblxuU28sIEkgbmVlZCB0byBrbm93IGlmIFFFTVUgb3Igc29tZSB2aXJ0dWFsIGJ1cyAqc3BlY2lmaWNhbGx5KiBlbXVsYXRlcyB0aGlzLiBJZiBub3QsIGl0IGNvdWxkIGJlIGEgcGh5c2ljYWwgaGFyZHdhcmUgZGVwZW5kZW5jeS4gTGV0J3Mgbm90IGZvcmdldCBzZWN0aW9uIDIgb2YgdGhlIGluc3RydWN0aW9uczogXCJTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuLi5cIiDigJMgdGhpbmdzIGxpa2Ugc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgTklDcywgYW5kIEdQVSBkcml2ZXJzLiBJdCBtZW50aW9ucyB0aG9zZSByZXF1aXJlIHBoeXNpY2FsIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBRRU1VLlxuXG5CdXQuLi4gYXJlIFBIWSBkcml2ZXJzIHRoZSBzYW1lPyBBcmUgdGhleSAqc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlKj8gQ2FuIEkgY3JlYXRlIE1ESU8gZGV2aWNlcyBmcm9tIHVzZXJzcGFjZSwgdXNlIHZpcnR1YWwgZGV2aWNlcywgb3IgZG8gSSBuZWVkIHRvIGxvb2sgZm9yIHN5c2ZzLCBuZXRsaW5rLCBVU0IsIG9yIG1vY2sgTURJTyBtZXRob2RzP1xuXG5JJ20gZ29pbmcgdG8gc3RhcnQgYnkgc2VhcmNoaW5nIHRoZSBrZXJuZWwgc291cmNlcyBmb3IgXCJtZGlvLFwiIHRoZW4gXCJwaHlfZGV2aWNlX2NyZWF0ZSxcIiB0aGVuIFwibWRpb2J1c19yZWdpc3RlcixcIiBhbmQgdGhlbiBcIm5ldGxpbmsgbWRpby5cIiBIb3BlZnVsbHksIHRoYXQgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZXNlIHZpcnR1YWwgZHJpdmVycyBtaWdodCBiZSBleHBvc2VkIGlmIGF0IGFsbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI3MDcsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMDA6Mjk6MTEuMjc3Njg0MDk4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5Nzc1NTE4OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5X2RldmljZV9jcmVhdGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jPTExNz1pbnQgZndub2RlX21kaW9idXNfcmVnaXN0ZXJfcGh5KHN0cnVjdCBtaWlfYnVzICpidXMsXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmMtMTM0LVxcdGVsc2VcXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmM6MTM1OlxcdFxcdHBoeSA9IHBoeV9kZXZpY2VfY3JlYXRlKGJ1cywgYWRkciwgcGh5X2lkLCAwLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmMtMTM2LVxcdGlmIChJU19FUlIocGh5KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmM9NTUxPXN0YXRpYyB2b2lkIHRqYTExMDJfcDFfcmVnaXN0ZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmMtNTg1LVxcdFxcdC8qIFJlYWwgUEhZIElEIG9mIFBvcnQgMSBpcyAwICovXFxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmM6NTg2OlxcdFxcdHBoeSA9IHBoeV9kZXZpY2VfY3JlYXRlKGJ1cywgYWRkciwgUEhZX0lEX1RKQTExMDIsIGZhbHNlLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYy01ODctXFx0XFx0aWYgKElTX0VSUihwaHkpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYy01OTItXFxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmM6NTkzOlxcdFxcdC8qIE92ZXJ3cml0ZSBwYXJlbnQgZGV2aWNlLiBwaHlfZGV2aWNlX2NyZWF0ZSgpIHNldCBwYXJlbnQgdG9cXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYy01OTQtXFx0XFx0ICogdGhlIG1paV9idXMtXFx1MDAzZWRldiwgd2hpY2ggaXMgbm90IGNvcnJlY3QgaW4gY2FzZS5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9NzI4PXN0YXRpYyBpbnQgcGh5X3JlcXVlc3RfZHJpdmVyX21vZHVsZShzdHJ1Y3QgcGh5X2RldmljZSAqZGV2LCB1MzIgcGh5X2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy03NDctXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzo3NDg6c3RydWN0IHBoeV9kZXZpY2UgKnBoeV9kZXZpY2VfY3JlYXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCB1MzIgcGh5X2lkLFxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNzQ5LVxcdFxcdFxcdFxcdCAgICAgYm9vbCBpc19jNDUsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTgzOS19XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzo4NDA6RVhQT1JUX1NZTUJPTChwaHlfZGV2aWNlX2NyZWF0ZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy04NDEtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTEwNzE9c3RydWN0IHBoeV9kZXZpY2UgKmdldF9waHlfZGV2aWNlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBib29sIGlzX2M0NSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTA5Ni1cXHRcXHRpZiAoIXIpXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMDk3OlxcdFxcdFxcdHJldHVybiBwaHlfZGV2aWNlX2NyZWF0ZShidXMsIGFkZHIsIHBoeV9pZCxcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEwOTgtXFx0XFx0XFx0XFx0XFx0XFx0IHRydWUsIFxcdTAwMjZjNDVfaWRzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTEwMC1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjExMDE6XFx0cmV0dXJuIHBoeV9kZXZpY2VfY3JlYXRlKGJ1cywgYWRkciwgcGh5X2lkLCBpc19jNDUsIFxcdTAwMjZjNDVfaWRzKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTExMDItfVxcbi0tXFxuaW5jbHVkZS9saW51eC9waHkuaD0yMTQ5PWludCBwaHlfbW9kaWZ5X3BhZ2VkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBwYWdlLCB1MzIgcmVnbnVtLFxcbi0tXFxuaW5jbHVkZS9saW51eC9waHkuaC0yMTUxLVxcbmluY2x1ZGUvbGludXgvcGh5Lmg6MjE1MjpzdHJ1Y3QgcGh5X2RldmljZSAqcGh5X2RldmljZV9jcmVhdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIHUzMiBwaHlfaWQsXFxuaW5jbHVkZS9saW51eC9waHkuaC0yMTUzLVxcdFxcdFxcdFxcdCAgICAgYm9vbCBpc19jNDUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDAwOjI5OjEzLjI1NTI0NDI4OFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjg5OTI3NTMzMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipJbnZlc3RpZ2F0aW5nIFVzZXItU3BhY2UgUEhZL01ESU8gRGV2aWNlIENyZWF0aW9uKipcblxuQWxyaWdodCwgSSdtIHRyeWluZyB0byBmaWd1cmUgc29tZXRoaW5nIG91dCBoZXJlLiBDYW4gYSB1c2VyLXNwYWNlIGFwcGxpY2F0aW9uIGFjdHVhbGx5ICpjcmVhdGUqIGEgUEhZIGRldmljZSBvbiBhbiBNRElPIGJ1cywgb3IgZXZlbiAqY3JlYXRlKiB0aGUgTURJTyBidXMgaXRzZWxmPyBJdCdzIGEgYml0IG9mIGEgdHJpY2t5IHF1ZXN0aW9uLCBhbmQgbXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIHRoaW5rIGFib3V0IHRoZSBwZXJpcGhlcnkgb2YgdGhhdC4gSSdtIHdvbmRlcmluZyBpZiB0aGVyZSBhcmUgYW55IGFuYWxvZ291cyBtZWNoYW5pc21zIGFscmVhZHkgaW4gcGxhY2UsIGZvciBleGFtcGxlIHdpdGggVVNCIEV0aGVybmV0IGRvbmdsZXMuIERvIHRob3NlIHV0aWxpemUgTURJTyBidXNlcyBvciBQSFkgZGV2aWNlcyBpbiB0aGVpciBkcml2ZXIgaW1wbGVtZW50YXRpb24/IEFuZCBpZiBzbywgaG93P1xuXG5NeSBmaXJzdCBhcHByb2FjaCB3aWxsIGJlIHRvIHJlc2VhcmNoIGhvdyB0aGUgVVNCIEV0aGVybmV0IGRyaXZlcnMgYXJlIHN0cnVjdHVyZWQuIEl0IG1pZ2h0IGJlIHBvc3NpYmxlIHRoYXQgYSB2aXJ0dWFsIG5ldHdvcmsgZGV2aWNlIGV4cG9zZXMgc29tZXRoaW5nIGFraW4gdG8gYW4gTURJTyBidXMgb3IgUEhZIGRldmljZS4gU28sIHRoZSBuZXh0IHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBMaW51eCBrZXJuZWwgYW5kIGxvb2sgYXQgdGhlIFVTQiBFdGhlcm5ldCBkcml2ZXJzLCBwYXJ0aWN1bGFybHkgYW55IG9mIHRoZSB2aXJ0dWFsIGRyaXZlcnMuIEknbSBnb2luZyB0byBmb2N1cyBteSBzZWFyY2gsIGluaXRpYWxseSwgb24gc2VlaW5nIGhvdyB0aGVzZSBkcml2ZXJzIGludGVyYWN0IHdpdGggTURJTy5cblxuVG8gbWFrZSB0aGlzIGVmZmljaWVudCwgSSB0aGluayBJJ2xsIHVzZSBgZ3JlcGAgdG8gcXVpY2tseSBzZWFyY2ggdGhlIGBkcml2ZXJzL25ldC91c2JgIGRpcmVjdG9yeSBmb3IgYW55IGluc3RhbmNlcyBvZiBgbWRpb2J1c19yZWdpc3RlcmAuIFRoYXQgc2hvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBxdWlja2x5IGZpbmQgcmVsZXZhbnQgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ2MzcsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQwMDoyOToyMi4yNDgwMDEyMTRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MzQzNTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1kaW9idXNfcmVnaXN0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz02Njk9c3RhdGljIGludCBheDg4NzcyX2luaXRfbWRpbyhzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjg2LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2ODc6XFx0cmV0ID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVxcdTAwM2VtZGlvKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjg4LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jPTYxPXN0YXRpYyBpbnQgYXg4ODE3MmFfaW5pdF9tZGlvKHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTc5LVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjgwOlxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIocHJpdi1cXHUwMDNlbWRpbyk7XFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtODEtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0yMDkxPXN0YXRpYyBpbnQgbGFuNzh4eF9tZGlvX2luaXQoc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIxMjEtXFx0bm9kZSA9IG9mX2dldF9jaGlsZF9ieV9uYW1lKGRldi1cXHUwMDNldWRldi1cXHUwMDNlZGV2Lm9mX25vZGUsIFxcXCJtZGlvXFxcIik7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyMTIyOlxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoZGV2LVxcdTAwM2VtZGlvYnVzLCBub2RlKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTIxMjMtXFx0b2Zfbm9kZV9wdXQobm9kZSk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYz0xMTQ3PXN0YXRpYyBpbnQgc21zYzk1eHhfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMTI0MS1cXG5kcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYzoxMjQyOlxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIocGRhdGEtXFx1MDAzZW1kaW9idXMpO1xcbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jLTEyNDMtXFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQwMDoyOToyMi4yOTYzNTA3NjNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjcxMTIyMDQwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIFVTQiBFdGhlcm5ldCBhbmQgTURJTyBCdXMgSW50ZXJhY3Rpb24qKlxuXG5Pa2F5LCBzbyBoZXJlJ3MgdGhlIHRob3VnaHQgcHJvY2VzczogSSdtIGxvb2tpbmcgYXQgaG93IFVTQiBFdGhlcm5ldCBkZXZpY2VzLCBlc3BlY2lhbGx5IHRob3NlIHVzaW5nIGVtdWxhdGlvbiBsaWtlIFJhdy1HYWRnZXQgb3IgdGhlIFVTQiBlbXVsYXRpb24gd2l0aGluIFN5emthbGxlciwgaW50ZXJhY3Qgd2l0aCB0aGUgTURJTyBidXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZXNlIGVtdWxhdGVkIGRldmljZXMgY2FuIHJlZ2lzdGVyIGFuIE1ESU8gYnVzLiBUaGVuLCB3aGVuIHRoZSBzeXN0ZW0gc2NhbnMgdGhhdCBidXMsIGlmIGl0IHJlY2VpdmVzIGEgUEhZIElEIGJhY2sgKHBlcmhhcHMgdGhyb3VnaCBVU0IgcmVzcG9uc2VzKSwgdGhlIGtlcm5lbCBjYWxscyBgcGh5X2RldmljZV9jcmVhdGVgIGFuZCBwb3RlbnRpYWxseSBtYXRjaGVzIHVwIHdpdGggZHJpdmVycyBsaWtlIGBkcDgzODY3X2RyaXZlcmAuXG5cbkJ1dCwgbGV0J3Mgc3RlcCBiYWNrIGFuZCBiZSBzdXJlLiBJIG5lZWQgdG8gdmVyaWZ5IHdoZXRoZXIgUmF3IEdhZGdldCBvciBVU0IgZnV6emluZyBhY3R1YWxseSBjYW4gZW11bGF0ZSB0aGVzZSBVU0IgRXRoZXJuZXQgZGV2aWNlcyAqd2l0aCogZnVuY3Rpb25hbCBNRElPIGJ1c2VzLiBPciwgY2FuIFN5emthbGxlciBwcm9iZSB0aGUgUEhZIGRyaXZlcnMgaW4gdGhpcyBjb25maWd1cmF0aW9uPyBUaGF0J3MgdGhlIGNvcmUgcXVlc3Rpb24uXG5cbk5leHQsIEkgc2hvdWxkIGxvb2sgYXQgc29tZSBleGlzdGluZyBVU0IgRXRoZXJuZXQgZHJpdmVycyBhbmQgaG93IHRoZXkgaW50ZXJmYWNlIHdpdGggdGhlIE1ESU8gYnVzLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNvZGUgaW4gYGFzaXhfZGV2aWNlcy5jYCBhbmQgYHNtc2M5NXh4LmNgIHRvIHNlZSBwcmVjaXNlbHkgd2hhdCBoYXBwZW5zIHdoZW4gYG1kaW9idXNfcmVnaXN0ZXJgIGlzIGNhbGxlZCB3aXRoaW4gdGhvc2UgZHJpdmVycy4gVW5kZXJzdGFuZGluZyB0aGUgKnR5cGljYWwqIHJlZ2lzdHJhdGlvbiBwcm9jZXNzIGlzIGNyaXRpY2FsLlxuXG5BbmQgZmluYWxseSwgSSdsbCBuZWVkIHRvIGludmVzdGlnYXRlIHRoZSBjb3JlIE1ESU8gYnVzIGltcGxlbWVudGF0aW9uIGl0c2VsZi4gSSBzaG91bGQgZGl2ZSBpbnRvIGBtZGlvYnVzX3JlZ2lzdGVyYCBpbiBgZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzLmNgIHRvIGNvbmZpcm0gdGhlIE1ESU8gYnVzIGNvbmZpZ3VyYXRpb24sIGFuZCBkYXRhLWZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NTYxLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDAwOjI5OjI1LjAwNzU3MzU3M1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkxNTk1MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpb2J1c19zY2FuXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYz0zOTY9c3RhdGljIHZvaWQgb2ZfbWRpb2J1c19saW5rX21kaW9kZXYoc3RydWN0IG1paV9idXMgKmJ1cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTQwNy1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo0MDg6c3RhdGljIHN0cnVjdCBwaHlfZGV2aWNlICptZGlvYnVzX3NjYW4oc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGJvb2wgYzQ1KVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTQwOS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy00NDctLyoqXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NDQ4OiAqIG1kaW9idXNfc2Nhbl9jMjIgLSBzY2FuIG9uZSBhZGRyZXNzIG9uIGEgYnVzIGZvciBDMjIgTURJTyBkZXZpY2VzLlxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTQ0OS0gKiBAYnVzOiBtaWlfYnVzIHRvIHNjYW5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTQ1OC0gKi9cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo0NTk6c3RydWN0IHBoeV9kZXZpY2UgKm1kaW9idXNfc2Nhbl9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIpXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNDYwLXtcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo0NjE6XFx0cmV0dXJuIG1kaW9idXNfc2NhbihidXMsIGFkZHIsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy00NjItfVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjQ2MzpFWFBPUlRfU1lNQk9MKG1kaW9idXNfc2Nhbl9jMjIpO1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTQ2NC1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy00NjUtLyoqXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NDY2OiAqIG1kaW9idXNfc2Nhbl9jNDUgLSBzY2FuIG9uZSBhZGRyZXNzIG9uIGEgYnVzIGZvciBDNDUgTURJTyBkZXZpY2VzLlxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTQ2Ny0gKiBAYnVzOiBtaWlfYnVzIHRvIHNjYW5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTQ3Ni0gKi9cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo0Nzc6c3RhdGljIHN0cnVjdCBwaHlfZGV2aWNlICptZGlvYnVzX3NjYW5fYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyKVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTQ3OC17XFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NDc5OlxcdHJldHVybiBtZGlvYnVzX3NjYW4oYnVzLCBhZGRyLCB0cnVlKTtcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy00ODAtfVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTQ4MS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo0ODI6c3RhdGljIGludCBtZGlvYnVzX3NjYW5fYnVzX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzKVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTQ4My17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy00ODktXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NDkwOlxcdFxcdFxcdHBoeWRldiA9IG1kaW9idXNfc2Nhbl9jMjIoYnVzLCBpKTtcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy00OTEtXFx0XFx0XFx0aWYgKElTX0VSUihwaHlkZXYpIFxcdTAwMjZcXHUwMDI2IChQVFJfRVJSKHBoeWRldikgIT0gLUVOT0RFVikpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy00OTctXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NDk4OnN0YXRpYyBpbnQgbWRpb2J1c19zY2FuX2J1c19jNDUoc3RydWN0IG1paV9idXMgKmJ1cylcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy00OTkte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNTA5LVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjUxMDpcXHRcXHRcXHRwaHlkZXYgPSBtZGlvYnVzX3NjYW5fYzQ1KGJ1cywgaSk7XFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNTExLVxcdFxcdFxcdGlmIChJU19FUlIocGh5ZGV2KSBcXHUwMDI2XFx1MDAyNiAoUFRSX0VSUihwaHlkZXYpICE9IC1FTk9ERVYpKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM9NTUzPWludCBfX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKmJ1cywgc3RydWN0IG1vZHVsZSAqb3duZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy02MzItXFx0aWYgKGJ1cy1cXHUwMDNlcmVhZCkge1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjYzMzpcXHRcXHRlcnIgPSBtZGlvYnVzX3NjYW5fYnVzX2MyMihidXMpO1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTYzNC1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNjQwLVxcdGlmICghcHJldmVudF9jNDVfc2NhbiBcXHUwMDI2XFx1MDAyNiBidXMtXFx1MDAzZXJlYWRfYzQ1KSB7XFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NjQxOlxcdFxcdGVyciA9IG1kaW9idXNfc2Nhbl9idXNfYzQ1KGJ1cyk7XFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNjQyLVxcdFxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDAwOjI5OjI1LjA1NjczODU4MloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjgxMTIzODUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRFA4Mzg2NyBEcml2ZXIgQWN0aXZhdGlvbioqXG5cbk9rYXksIGhlcmUncyB3aGF0J3MgY2F0Y2hpbmcgbXkgZXllLiBJJ20gb2JzZXJ2aW5nIHRoZSBVU0IgRXRoZXJuZXQgZGV2aWNlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzLCBzcGVjaWZpY2FsbHkgaG93IGBfX21kaW9idXNfcmVnaXN0ZXJgIGlzIHRyaWdnZXJlZCB3aGVuIGEgVVNCIEV0aGVybmV0IGRldmljZSBsaWtlIGFuIHNtc2M5NXh4IG9yIGFzaXggY29tZXMgb25saW5lLiBJIG5vdGljZSB0aGF0IHRoaXMgdHJpZ2dlcnMgYW4gTURJTyBidXMgc2NhbiBhbmQgcmVhZHMgdGhlIFBIWSBJRCByZWdpc3RlcnMuIEludGVyZXN0aW5nISBJZiB0aGUgZGV2aWNlIGhhcHBlbnMgdG8gcmV0dXJuIHRoZSBEUDgzODY3IFBIWSBJRCwgd2hpY2ggaXMgMHgyMDAwYTIzMSwgdGhlIERQODM4NjcgZHJpdmVyIHByb2JlIGdldHMga2lja2VkIG9mZiBhdXRvbWF0aWNhbGx5LiBUaGF0J3MgZ29vZCBkZXNpZ24uXG5cbk5vdywgSSdtIGFscmVhZHkgdGhpbmtpbmcgYWJvdXQgdGhlIGJpZ2dlciBwaWN0dXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBjb25uZWN0cyB0byB0aGUgYnJvYWRlciBuZXR3b3JrIGNvbmZpZ3VyYXRpb24uIEhvdyBhcmUgdGhlIHN5c2ZzIGludGVyZmFjZXMsIG5ldGxpbmssIGV0aHRvb2wsIGFuZCB0aGUgTEVEIHN5c2ZzIGludGVncmF0ZWQgaW50byB0aGlzIHByb2Nlc3M/IEkgbmVlZCB0byBkcmlsbCBkb3duIGludG8gdGhlIGRldGFpbHMgb2YgdGhlIExFRCBtYW5hZ2VtZW50LCBzbyBJIHNob3VsZCBzZWUgaG93IHRoZSBjYWxsYmFja3MgYXJlIGltcGxlbWVudGVkIHdpdGhpbiB0aGUgYGRwODM4NjdgIGRyaXZlci5cblxuTGV0IG1lIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGUgYGRwODM4NjcuY2Agc291cmNlIGNvZGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZXMgMTAwMCB0byAxMzAwLiBUaGF0J3MgdGhlIGxpa2VseSBhcmVhIHdoZXJlIExFRC1yZWxhdGVkIGNhbGxiYWNrcyBhcmUgZGVmaW5lZC4gVGhpcyB3aWxsIGhlbHAgbWUgdHJhY2UgaG93IHRoZSBkcml2ZXIgaW50ZXJhY3RzIHdpdGggdGhlIHN5c3RlbSB0byBjb250cm9sIGxpbmsgc3RhdHVzIGFuZCBhY3Rpdml0eSBMRURzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzM4MCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQwMDoyOToyNy43Mzc4NjQ4MTJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE3NDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTIwMCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjEyMDA6XFx0XFx0XFx0YnJlYWs7XFxuMTIwMTpcXHRcXHRjYXNlIERQODM4NjdfTEVEX0ZOX0xJTktfMTAwXzEwMDBfQlQ6XFxuMTIwMjpcXHRcXHRcXHQqcnVsZXMgPSBCSVQoVFJJR0dFUl9ORVRERVZfTElOS18xMDApIHwgQklUKFRSSUdHRVJfTkVUREVWX0xJTktfMTAwMCk7XFxuMTIwMzpcXHRcXHRcXHRicmVhaztcXG4xMjA0OlxcdFxcdGNhc2UgRFA4Mzg2N19MRURfRk5fTElOS18xMF8xMDBfQlQ6XFxuMTIwNTpcXHRcXHRcXHQqcnVsZXMgPSBCSVQoVFJJR0dFUl9ORVRERVZfTElOS18xMCkgfCBCSVQoVFJJR0dFUl9ORVRERVZfTElOS18xMDApO1xcbjEyMDY6XFx0XFx0XFx0YnJlYWs7XFxuMTIwNzpcXHRcXHRjYXNlIERQODM4NjdfTEVEX0ZOX0xJTktfUlhfVFg6XFxuMTIwODpcXHRcXHRcXHQqcnVsZXMgPSBCSVQoVFJJR0dFUl9ORVRERVZfTElOSykgfCBCSVQoVFJJR0dFUl9ORVRERVZfVFgpIHxcXG4xMjA5OlxcdFxcdFxcdFxcdCBCSVQoVFJJR0dFUl9ORVRERVZfUlgpO1xcbjEyMTA6XFx0XFx0XFx0YnJlYWs7XFxuMTIxMTpcXHRcXHRkZWZhdWx0OlxcbjEyMTI6XFx0XFx0XFx0KnJ1bGVzID0gMDtcXG4xMjEzOlxcdFxcdFxcdGJyZWFrO1xcbjEyMTQ6XFx0XFx0fVxcbjEyMTU6XFx0XFxuMTIxNjpcXHRcXHRyZXR1cm4gMDtcXG4xMjE3OlxcdH1cXG4xMjE4OlxcdFxcbjEyMTk6XFx0c3RhdGljIGludCBkcDgzODY3X2xlZF9wb2xhcml0eV9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGluZGV4LFxcbjEyMjA6XFx0XFx0XFx0XFx0XFx0ICAgIHVuc2lnbmVkIGxvbmcgbW9kZXMpXFxuMTIyMTpcXHR7XFxuMTIyMjpcXHRcXHRzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlICpkcDgzODY3ID0gcGh5ZGV2LVxcdTAwM2Vwcml2O1xcbjEyMjM6XFx0XFx0LyogRGVmYXVsdCBhY3RpdmUgaGlnaCAqL1xcbjEyMjQ6XFx0XFx0dTE2IHBvbGFyaXR5ID0gRFA4Mzg2N19MRURfUE9MQVJJVFkoaW5kZXgpO1xcbjEyMjU6XFx0XFx0dTMyIG1vZGU7XFxuMTIyNjpcXHRcXHRpbnQgcmV0O1xcbjEyMjc6XFx0XFxuMTIyODpcXHRcXHRmb3JfZWFjaF9zZXRfYml0KG1vZGUsIFxcdTAwMjZtb2RlcywgX19QSFlfTEVEX01PREVTX05VTSkge1xcbjEyMjk6XFx0XFx0XFx0c3dpdGNoIChtb2RlKSB7XFxuMTIzMDpcXHRcXHRcXHRjYXNlIFBIWV9MRURfQUNUSVZFX0xPVzpcXG4xMjMxOlxcdFxcdFxcdFxcdHBvbGFyaXR5ID0gMDtcXG4xMjMyOlxcdFxcdFxcdFxcdGJyZWFrO1xcbjEyMzM6XFx0XFx0XFx0ZGVmYXVsdDpcXG4xMjM0OlxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjEyMzU6XFx0XFx0XFx0fVxcbjEyMzY6XFx0XFx0fVxcbjEyMzc6XFx0XFxuMTIzODpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZkcDgzODY3LVxcdTAwM2VsZWRfbG9jayk7XFxuMTIzOTpcXHRcXHRyZXQgPSBfX2RwODM4NjdfbGVkX21vZGlmeShwaHlkZXYsIERQODM4NjdfTEVEQ1IyLFxcbjEyNDA6XFx0XFx0XFx0XFx0XFx0ICAgRFA4Mzg2N19MRURfUE9MQVJJVFkoaW5kZXgpLCBwb2xhcml0eSk7XFxuMTI0MTpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNmRwODM4NjctXFx1MDAzZWxlZF9sb2NrKTtcXG4xMjQyOlxcdFxcbjEyNDM6XFx0XFx0cmV0dXJuIHJldDtcXG4xMjQ0OlxcdH1cXG4xMjQ1OlxcdFxcbjEyNDY6XFx0c3RhdGljIHVuc2lnbmVkIGludCBkcDgzODY3X2luYmFuZF9jYXBzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuMTI0NzpcXHRcXHRcXHRcXHRcXHRcXHRwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbjEyNDg6XFx0e1xcbjEyNDk6XFx0XFx0aWYgKGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpXFxuMTI1MDpcXHRcXHRcXHRyZXR1cm4gTElOS19JTkJBTkRfRU5BQkxFIHwgTElOS19JTkJBTkRfRElTQUJMRTtcXG4xMjUxOlxcdFxcbjEyNTI6XFx0XFx0cmV0dXJuIDA7XFxuMTI1MzpcXHR9XFxuMTI1NDpcXHRcXG4xMjU1OlxcdHN0YXRpYyBpbnQgZHA4Mzg2N19jb25maWdfaW5iYW5kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHVuc2lnbmVkIGludCBtb2RlcylcXG4xMjU2OlxcdHtcXG4xMjU3OlxcdFxcdGludCB2YWwgPSAwO1xcbjEyNTg6XFx0XFxuMTI1OTpcXHRcXHRpZiAobW9kZXMgPT0gTElOS19JTkJBTkRfRU5BQkxFKVxcbjEyNjA6XFx0XFx0XFx0dmFsID0gRFA4Mzg2N19TR01JSV9BVVRPTkVHX0VOO1xcbjEyNjE6XFx0XFxuMTI2MjpcXHRcXHRyZXR1cm4gcGh5X21vZGlmeShwaHlkZXYsIERQODM4NjdfQ0ZHMiwgRFA4Mzg2N19TR01JSV9BVVRPTkVHX0VOLCB2YWwpO1xcbjEyNjM6XFx0fVxcbjEyNjQ6XFx0XFxuMTI2NTpcXHRzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZHA4Mzg2N19kcml2ZXJbXSA9IHtcXG4xMjY2OlxcdFxcdHtcXG4xMjY3OlxcdFxcdFxcdC5waHlfaWRcXHRcXHQ9IERQODM4NjdfUEhZX0lELFxcbjEyNjg6XFx0XFx0XFx0LnBoeV9pZF9tYXNrXFx0PSAweGZmZmZmZmYwLFxcbjEyNjk6XFx0XFx0XFx0Lm5hbWVcXHRcXHQ9IFxcXCJUSSBEUDgzODY3XFxcIixcXG4xMjcwOlxcdFxcdFxcdC8qIFBIWV9HQklUX0ZFQVRVUkVTICovXFxuMTI3MTpcXHRcXG4xMjcyOlxcdFxcdFxcdC5wcm9iZSAgICAgICAgICA9IGRwODM4NjdfcHJvYmUsXFxuMTI3MzpcXHRcXHRcXHQuY29uZmlnX2luaXRcXHQ9IGRwODM4NjdfY29uZmlnX2luaXQsXFxuMTI3NDpcXHRcXHRcXHQuY29uZmlnX2FuZWdcXHQ9IGRwODM4NjdfY29uZmlnX2FuZWcsXFxuMTI3NTpcXHRcXHRcXHQuc29mdF9yZXNldFxcdD0gZHA4Mzg2N19waHlfcmVzZXQsXFxuMTI3NjpcXHRcXG4xMjc3OlxcdFxcdFxcdC5yZWFkX3N0YXR1c1xcdD0gZHA4Mzg2N19yZWFkX3N0YXR1cyxcXG4xMjc4OlxcdFxcdFxcdC5nZXRfdHVuYWJsZVxcdD0gZHA4Mzg2N19nZXRfdHVuYWJsZSxcXG4xMjc5OlxcdFxcdFxcdC5zZXRfdHVuYWJsZVxcdD0gZHA4Mzg2N19zZXRfdHVuYWJsZSxcXG4xMjgwOlxcdFxcbjEyODE6XFx0XFx0XFx0LmdldF93b2xcXHQ9IGRwODM4NjdfZ2V0X3dvbCxcXG4xMjgyOlxcdFxcdFxcdC5zZXRfd29sXFx0PSBkcDgzODY3X3NldF93b2wsXFxuMTI4MzpcXHRcXG4xMjg0OlxcdFxcdFxcdC8qIElSUSByZWxhdGVkICovXFxuMTI4NTpcXHRcXHRcXHQuY29uZmlnX2ludHJcXHQ9IGRwODM4NjdfY29uZmlnX2ludHIsXFxuMTI4NjpcXHRcXHRcXHQuaGFuZGxlX2ludGVycnVwdCA9IGRwODM4NjdfaGFuZGxlX2ludGVycnVwdCxcXG4xMjg3OlxcdFxcbjEyODg6XFx0XFx0XFx0LnN1c3BlbmRcXHQ9IGRwODM4Njdfc3VzcGVuZCxcXG4xMjg5OlxcdFxcdFxcdC5yZXN1bWVcXHRcXHQ9IGRwODM4NjdfcmVzdW1lLFxcbjEyOTA6XFx0XFxuMTI5MTpcXHRcXHRcXHQubGlua19jaGFuZ2Vfbm90aWZ5ID0gZHA4Mzg2N19saW5rX2NoYW5nZV9ub3RpZnksXFxuMTI5MjpcXHRcXHRcXHQuc2V0X2xvb3BiYWNrXFx0PSBkcDgzODY3X2xvb3BiYWNrLFxcbjEyOTM6XFx0XFxuMTI5NDpcXHRcXHRcXHQubGVkX2JyaWdodG5lc3Nfc2V0ID0gZHA4Mzg2N19sZWRfYnJpZ2h0bmVzc19zZXQsXFxuMTI5NTpcXHRcXHRcXHQubGVkX2h3X2lzX3N1cHBvcnRlZCA9IGRwODM4NjdfbGVkX2h3X2lzX3N1cHBvcnRlZCxcXG4xMjk2OlxcdFxcdFxcdC5sZWRfaHdfY29udHJvbF9zZXQgPSBkcDgzODY3X2xlZF9od19jb250cm9sX3NldCxcXG4xMjk3OlxcdFxcdFxcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBkcDgzODY3X2xlZF9od19jb250cm9sX2dldCxcXG4xMjk4OlxcdFxcdFxcdC5sZWRfcG9sYXJpdHlfc2V0ID0gZHA4Mzg2N19sZWRfcG9sYXJpdHlfc2V0LFxcbjEyOTk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDAwOjI5OjI3LjczNzk4MzcxMloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozODIwOTI3OTQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRFA4Mzg2NyBQSFkgTEVEIENvbnRyb2wgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayBkb3duIHRoaXMgY2hhbmdlIHNldCBmb3IgdGhlIERQODM4NjcgUEhZIExFRCBjb250cm9sLiBJIHNlZSBzZXZlcmFsIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiBhZGRlZCBvciBtb2RpZmllZDogYGRwODM4NjdfbGVkX2JyaWdodG5lc3Nfc2V0YCwgYGRwODM4NjdfbGVkX2h3X2NvbnRyb2xfc2V0YCwgYGRwODM4NjdfbGVkX3BvbGFyaXR5X3NldGAsIGBkcDgzODY3X2xlZF9yZXN0b3JlYCwgYF9fZHA4Mzg2N19sZWRfbW9kaWZ5YCwgYGRwODM4NjdfY29uZmlnX2luaXRgLCBhbmQgYGRwODM4NjdfcHJvYmVgLlxuXG5GaXJzdCwgSSBub3RpY2UgYSBuZXcgYHN0cnVjdCBkcDgzODY3X3ByaXZhdGVgIG1lbWJlcjogYSBgc3RydWN0IG11dGV4IGxlZF9sb2NrYCBhbmQgYSBmZXcgYHUxNmAgbWVtYmVycyBmb3Igc3RvcmluZyBMRUQgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgKGBsZWRjcjFgLCBgbGVkY3IxX21hc2tgLCBgbGVkY3IyYCwgYGxlZGNyMl9tYXNrYCkuIE9rYXksIGEgbXV0ZXggbWFrZXMgc2Vuc2UgdG8gcHJvdGVjdCBhY2Nlc3MgdG8gdGhlIExFRCBjb25maWd1cmF0aW9uIHJlZ2lzdGVycy4gSSBhbHNvIG5vdGUgdGhhdCB0aGUgbXV0ZXggaXMgaW5pdGlhbGl6ZWQgaW4gYGRwODM4NjdfcHJvYmVgLlxuXG5OZXh0LCB0aGUgbmV3IGBfX2RwODM4NjdfbGVkX21vZGlmeWAgZnVuY3Rpb24gbG9va3MgaW1wb3J0YW50LiBJdCBjb250YWlucyBhIGBXQVJOX09OX09OQ0UoMSlgIGlmIHdlIGFyZSBub3QgbW9kaWZ5aW5nIGBEUDgzODY3X0xFRENSMWAgb3IgYERQODM4NjdfTEVEQ1IyYC4gU2VlbXMgbGlrZSBhIHNhZmVndWFyZCB0byBjYXRjaCBpbmNvcnJlY3QgcmVnaXN0ZXIgYWNjZXNzLiBHb29kLCB3ZSB3YW50IHRvIHByZXZlbnQgdW5pbnRlbmRlZCB3cml0ZXMuXG5cbmBkcDgzODY3X2xlZF9yZXN0b3JlYCBhcHBlYXJzIHRvIGJlIGZvciByZXBsYXlpbmcgdGhlIExFRCBjb25maWd1cmF0aW9uLiBUaGlzIGZ1bmN0aW9uIGxvY2tzIHRoZSBgbGVkX2xvY2tgIGFuZCByZXBsYXlzIHRoZSByZWdpc3RlcnMgYGxlZGNyMWAgYW5kIGBsZWRjcjJgLiBUaGF0IHNvdW5kcyBsaWtlIGl0J3MgZm9yIHJlc3RvcmluZyBMRUQgc2V0dGluZ3MgYWZ0ZXIgYSBwb3dlciBjeWNsZSBvciByZXNldC4gQW5kIGBkcDgzODY3X2NvbmZpZ19pbml0YCBjYWxscyBpdCwgcHJlc3VtYWJseSB0byBpbml0aWFsaXplIHRoZSBMRUQgY29uZmlndXJhdGlvbiBkdXJpbmcgUEhZIGluaXRpYWxpemF0aW9uLlxuXG5GaW5hbGx5LCBgZHA4Mzg2N19sZWRfYnJpZ2h0bmVzc19zZXRgLCBgZHA4Mzg2N19sZWRfaHdfY29udHJvbF9zZXRgLCBhbmQgYGRwODM4NjdfbGVkX3BvbGFyaXR5X3NldGAgYWxsIHVzZSB0aGUgYGxlZF9sb2NrYCBhbmQgY2FsbCBgX19kcDgzODY3X2xlZF9tb2RpZnlgLiBUaGlzIGluZGljYXRlcyBwcm9wZXIgbG9ja2luZyBmb3IgbW9kaWZ5aW5nIHRoZSBMRUQgc2V0dGluZ3MuXG5cbk5vdywgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhlIEtjb25maWcgZGVwZW5kZW5jaWVzIGZvciBgRFA4Mzg2N19QSFlgIHRvIGVuc3VyZSBldmVyeXRoaW5nIGlzIHNldCB1cCBjb3JyZWN0bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NTkwLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMDA6Mjk6MzEuNTU4OTE0NTQ2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODcyODUyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRFA4Mzg2N19QSFlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTQ0Nj1jb25maWcgRFA4Mzg0OF9QSFlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTQ1MC1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo0NTE6Y29uZmlnIERQODM4NjdfUEhZXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNDUyLVxcdHRyaXN0YXRlIFxcXCJUZXhhcyBJbnN0cnVtZW50cyBEUDgzODY3IEdpZ2FiaXQgUEhZXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQwMDoyOTozMS42MDc2NTAwNDVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjYzNjc4MDc1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipLY29uZmlnIExpbmUgNDUxIEFuYWx5c2lzKipcblxuT2theSwgbGV0J3MgemVybyBpbiBvbiBsaW5lIDQ1MSBpbiB0aGUgS2NvbmZpZyBmaWxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIGFyb3VuZCB0aGF0IHNwZWNpZmljIGxpbmUgb2YgY29kZS4gTXkgZ29hbCBpcyB0byBxdWlja2x5IGdyYXNwIHRoZSBjb250ZXh0LCBpZGVudGlmeSBhbnkgcG90ZW50aWFsIGlzc3VlcyBvciBpbnRlcmVzdGluZyBjb25maWd1cmF0aW9ucywgYW5kIHJlbGF0ZSBpdCBiYWNrIHRvIHRoZSBicm9hZGVyIHByb2plY3QuIEknbGwgbmVlZCB0byByZWFkIHRoZSBzdXJyb3VuZGluZyBsaW5lcywgbG9va2luZyBmb3IgZGVwZW5kZW5jaWVzLCBkZWZhdWx0IHZhbHVlcywgcHJvbXB0cywgYW5kIGFueSBjb25kaXRpb25hbCBsb2dpYyB0aGF0J3MgYmVpbmcgZW1wbG95ZWQuIEknbSBmb2N1c2luZyBvbiB0aGUgKndoeSogYXMgbXVjaCBhcyB0aGUgKndoYXQqIC0gV2h5IGlzIHRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24gZGVmaW5lZCBoZXJlPyBXaGF0J3MgaXRzIHB1cnBvc2Ugd2l0aGluIHRoZSBsYXJnZXIgZmVhdHVyZSBzZXQ/IElzIGl0IGRlcGVuZGVudCBvbiBvdGhlciB2YXJpYWJsZXMgb3Igb3B0aW9ucz8gQXJlIHRoZXJlIGFueSBvYnZpb3VzIHJlZCBmbGFncz8gSSBleHBlY3QgdG8gaWRlbnRpZnkgdGhlIGZ1bmN0aW9uIG9mIHRoaXMgbGluZSB3aXRoaW4gYSBmZXcgcmVhZHMgb2YgdGhlIHN1cnJvdW5kaW5nIEtjb25maWcgZWxlbWVudHMuIEknbSBwcmVwYXJlZCB0byBtb3ZlIG9uIHF1aWNrbHkgaWYgdGhpcyBpcyBhIGxvdy1pbXBhY3Qgb3Igd2VsbC11bmRlcnN0b29kIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBidXQgSSdsbCBkaWcgZGVlcGVyIGlmIGl0IHNlZW1zIGNvbXBsZXggb3IgcmVsYXRlZCB0byBhIGZlYXR1cmUgSSdtIGN1cnJlbnRseSB3b3JraW5nIHdpdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNjkwLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMDA6Mjk6MzQuMjQ0NDMyOTc1WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxNzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQ0MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQ0MDpcXHRcXG4gNDQxOlxcdGNvbmZpZyBEUDgzVEM4MTFfUEhZXFxuIDQ0MjpcXHRcXHR0cmlzdGF0ZSBcXFwiVGV4YXMgSW5zdHJ1bWVudHMgRFA4M1RDODExIFBIWVxcXCJcXG4gNDQzOlxcdFxcdGhlbHBcXG4gNDQ0OlxcdFxcdCAgU3VwcG9ydHMgdGhlIERQODNUQzgxMSBQSFkuXFxuIDQ0NTpcXHRcXG4gNDQ2OlxcdGNvbmZpZyBEUDgzODQ4X1BIWVxcbiA0NDc6XFx0XFx0dHJpc3RhdGUgXFxcIlRleGFzIEluc3RydW1lbnRzIERQODM4NDggUEhZXFxcIlxcbiA0NDg6XFx0XFx0aGVscFxcbiA0NDk6XFx0XFx0ICBTdXBwb3J0cyB0aGUgRFA4Mzg0OCBQSFkuXFxuIDQ1MDpcXHRcXG4gNDUxOlxcdGNvbmZpZyBEUDgzODY3X1BIWVxcbiA0NTI6XFx0XFx0dHJpc3RhdGUgXFxcIlRleGFzIEluc3RydW1lbnRzIERQODM4NjcgR2lnYWJpdCBQSFlcXFwiXFxuIDQ1MzpcXHRcXHRoZWxwXFxuIDQ1NDpcXHRcXHQgIEN1cnJlbnRseSBzdXBwb3J0cyB0aGUgRFA4Mzg2NyBQSFkuXFxuIDQ1NTpcXHRcXG4gNDU2OlxcdGNvbmZpZyBEUDgzODY5X1BIWVxcbiA0NTc6XFx0XFx0dHJpc3RhdGUgXFxcIlRleGFzIEluc3RydW1lbnRzIERQODM4NjkgR2lnYWJpdCBQSFlcXFwiXFxuIDQ1ODpcXHRcXHRoZWxwXFxuIDQ1OTpcXHRcXHQgIEN1cnJlbnRseSBzdXBwb3J0cyB0aGUgRFA4Mzg2OSBQSFkuICBUaGlzIFBIWSBzdXBwb3J0cyBjb3BwZXIgYW5kXFxuIDQ2MDpcXHRcXHQgIGZpYmVyIGNvbm5lY3Rpb25zLlxcbiA0NjE6XFx0XFxuIDQ2MjpcXHRjb25maWcgRFA4M1RENTEwX1BIWVxcbiA0NjM6XFx0XFx0dHJpc3RhdGUgXFxcIlRleGFzIEluc3RydW1lbnRzIERQODNURDUxMCBFdGhlcm5ldCAxMEJhc2UtVDFMIFBIWVxcXCJcXG4gNDY0OlxcdFxcdGhlbHBcXG4gNDY1OlxcdFxcdCAgU3VwcG9ydCBmb3IgdGhlIERQODNURDUxMCBFdGhlcm5ldCAxMEJhc2UtVDFMIFBIWS4gVGhpcyBQSFkgc3VwcG9ydHNcXG4gNDY2OlxcdFxcdCAgYSAxME0gc2luZ2xlIHBhaXIgRXRoZXJuZXQgY29ubmVjdGlvbiBmb3IgdXAgdG8gMTAwMCBtZXRlciBjYWJsZS5cXG4gNDY3OlxcdFxcbiA0Njg6XFx0Y29uZmlnIERQODNURzcyMF9QSFlcXG4gNDY5OlxcdFxcdHRyaXN0YXRlIFxcXCJUZXhhcyBJbnN0cnVtZW50cyBEUDgzVEc3MjAgRXRoZXJuZXQgMTAwMEJhc2UtVDEgUEhZXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQwMDoyOTozNC4yNDQ1MDkxMDZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzU4NDgzMjI4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipDaGVja2luZyB0aGUgUEhZIEtjb25maWcqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGlzIFBIWSBkcml2ZXIuIE15IGZpcnN0IG1vdmUgaXMgdG8gZ28gc3RyYWlnaHQgdG8gYGRyaXZlcnMvbmV0L3BoeS9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBjb25maWd1cmF0aW9uIGRlY2lzaW9ucyBhcmUgbWFkZSBmb3IgdGhlc2UgUEhZIGNvbXBvbmVudHMuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGRlcGVuZGVuY2llcywgc2VsZWN0IHN0YXRlbWVudHMsIGFuZCBvcHRpb24gZGVmaW5pdGlvbnMgdGhhdCBkaWN0YXRlIHdoYXQgZ2V0cyBidWlsdCBhbmQgaW5jbHVkZWQgaW4gdGhlIGtlcm5lbCBpbWFnZS4gS25vd2luZyB0aGUgS2NvbmZpZyBpcyBrZXkgdG8gbmF2aWdhdGluZyB0aGUgYnJvYWRlciBkcml2ZXIgYXJjaGl0ZWN0dXJlIGFuZCB1bmRlcnN0YW5kaW5nIGhvdyBkaWZmZXJlbnQgUEhZIHR5cGVzIGFyZSBlbmFibGVkIGFuZCBkaXNhYmxlZC4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIGFueSBpbi1kZXB0aCBjb25maWd1cmF0aW9uIGFuYWx5c2lzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTQ2NywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMDA6Mjk6MzcuODI5MzQ0OTEyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxMDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIFBIWSBMYXllciBDb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdGNvbmZpZyBQSFlMSU5LXFxuICAgNzpcXHRcXHR0cmlzdGF0ZVxcbiAgIDg6XFx0XFx0c2VsZWN0IFBIWUxJQlxcbiAgIDk6XFx0XFx0c2VsZWN0IFNXUEhZXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHQgIFBIWWxpbmsgbW9kZWxzIHRoZSBsaW5rIGJldHdlZW4gdGhlIFBIWSBhbmQgTUFDLCBhbGxvd2luZyBmaXhlZFxcbiAgMTI6XFx0XFx0ICBjb25maWd1cmF0aW9uIGxpbmtzLCBQSFlzLCBhbmQgU2VyZGVzIGxpbmtzIHdpdGggTUFDIGxldmVsXFxuICAxMzpcXHRcXHQgIGF1dG9uZWdvdGlhdGlvbiBtb2Rlcy5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0bWVudWNvbmZpZyBQSFlMSUJcXG4gIDE2OlxcdFxcdHRyaXN0YXRlIFxcXCJQSFkgRGV2aWNlIHN1cHBvcnQgYW5kIGluZnJhc3RydWN0dXJlXFxcIlxcbiAgMTc6XFx0XFx0aGVscFxcbiAgMTg6XFx0XFx0ICBFdGhlcm5ldCBjb250cm9sbGVycyBhcmUgdXN1YWxseSBhdHRhY2hlZCB0byBQSFlcXG4gIDE5OlxcdFxcdCAgZGV2aWNlcy4gIFRoaXMgb3B0aW9uIHByb3ZpZGVzIGluZnJhc3RydWN0dXJlIGZvclxcbiAgMjA6XFx0XFx0ICBtYW5hZ2luZyBQSFkgZGV2aWNlcy5cXG4gIDIxOlxcdFxcbiAgMjI6XFx0aWYgUEhZTElCXFxuICAyMzpcXHRcXG4gIDI0OlxcdGNvbmZpZyBTV1BIWVxcbiAgMjU6XFx0XFx0Ym9vbFxcbiAgMjY6XFx0XFxuICAyNzpcXHRjb25maWcgUEhZX1BBQ0tBR0VcXG4gIDI4OlxcdFxcdCB0cmlzdGF0ZVxcbiAgMjk6XFx0XFxuICAzMDpcXHRjb25maWcgTEVEX1RSSUdHRVJfUEhZXFxuICAzMTpcXHRcXHRib29sIFxcXCJTdXBwb3J0IExFRCB0cmlnZ2VycyBmb3IgdHJhY2tpbmcgbGluayBzdGF0ZVxcXCJcXG4gIDMyOlxcdFxcdGRlcGVuZHMgb24gTEVEU19UUklHR0VSU1xcbiAgMzM6XFx0XFx0aGVscFxcbiAgMzQ6XFx0XFx0ICBBZGRzIHN1cHBvcnQgZm9yIGEgc2V0IG9mIExFRCB0cmlnZ2VyIGV2ZW50cyBwZXItUEhZLiAgTGlua1xcbiAgMzU6XFx0XFx0ICBzdGF0ZSBjaGFuZ2Ugd2lsbCB0cmlnZ2VyIHRoZSBldmVudHMsIGZvciBjb25zdW1wdGlvbiBieSBhblxcbiAgMzY6XFx0XFx0ICBMRUQgY2xhc3MgZHJpdmVyLiAgVGhlcmUgYXJlIHRyaWdnZXJzIGZvciBlYWNoIGxpbmsgc3BlZWQgY3VycmVudGx5XFxuICAzNzpcXHRcXHQgIHN1cHBvcnRlZCBieSB0aGUgUEhZIGFuZCBhbHNvIGEgb25lIGNvbW1vbiBcXFwibGlua1xcXCIgdHJpZ2dlciBhcyBhXFxuICAzODpcXHRcXHQgIGxvZ2ljYWwtb3Igb2YgYWxsIHRoZSBsaW5rIHNwZWVkIG9uZXMuXFxuICAzOTpcXHRcXHQgIEFsbCB0aGVzZSB0cmlnZ2VycyBhcmUgbmFtZWQgYWNjb3JkaW5nIHRvIHRoZSBmb2xsb3dpbmcgcGF0dGVybjpcXG4gIDQwOlxcdFxcdCAgICAgIFxcdTAwM2NtaWkgYnVzIGlkXFx1MDAzZTpcXHUwMDNjcGh5XFx1MDAzZTpcXHUwMDNjc3BlZWRcXHUwMDNlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDAwOjI5OjM3LjgyOTQyNzYyMloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2ODI2MTMwMjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIERQODM4NjcgUEhZIERyaXZlcjogQSBSZWFjaGFiaWxpdHkgQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgUEhZTElCYCBhbmQgdGhlIGBEUDgzODY3X1BIWWAgZHJpdmVyLiBUaGUgY3J1Y2lhbCBxdWVzdGlvbiBpczogQ2FuIEkgZXZlbiByZWFjaCB0aGUgYERQODM4NjdfUEhZYCB3aXRoaW4gYSBmdXp6aW5nIGNvbnRleHQ/IEkgbmVlZCB0byBhbmFseXplIGl0cyByZWFjaGFiaWxpdHkuIEl0IHNlZW1zIGxpa2UgYW4gTURJTyBQSFkgZHJpdmVyLCBzbyBsZXQncyBzZWUgaG93IHRoYXQgd29ya3MgaW4gc3l6a2FsbGVyLlxuXG5SaWdodCwgVVNCIEV0aGVybmV0IGRyaXZlcnMgbGlrZSBgYXNpeGAsIGBheDg4MTcyYWAsIGBzbXNjOTV4eGAgYW5kIG90aGVycywgdGhleSBjcmVhdGUgTURJTyBidXNlcyB2aWEgYG1kaW9idXNfcmVnaXN0ZXJgLiAgVGhhdCdzIGtleS4gQW5kIGluIGEgc3RhbmRhcmQgc3l6a2FsbGVyIHNldHVwIHdpdGggcmF3LWdhZGdldCBvciBVU0IgZW11bGF0aW9uLCBzeXprYWxsZXIgY2FuIGVtdWxhdGUgVVNCIEV0aGVybmV0IGRldmljZXMuICBTbyBmYXIsIHNvIGdvb2QuXG5cbldoZW4gdGhpcyBNRElPIGJ1cyBpcyByZWdpc3RlcmVkLCBpdCBpbnRlcnJvZ2F0ZXMgTUlJIHJlZ2lzdGVycyAyIGFuZCAzIOKAkyBgTUlJX1BIWVNJRDFgIGFuZCBgTUlJX1BIWVNJRDJgLiAgSWYgdGhlIGVtdWxhdGVkIFVTQiBkZXZpY2UgKnJlc3BvbmRzKiB3aXRoIHRoZSBQSFkgSUQgZm9yIGBEUDgzODY3X1BIWV9JRGAgKDB4MjAwMGEyMzEpLCB0aGVuIHRoZSBQSFkgc3Vic3lzdGVtIHdpbGwgbWF0Y2ggdGhlIGBkcDgzODY3X2RyaXZlcmAuIEJpbmdvLiBJdCB3aWxsIHRyaWdnZXIgYGRwODM4NjdfcHJvYmVgIGFuZCB0aGVuIGBkcDgzODY3X2NvbmZpZ19pbml0YC5cblxuT25jZSBwcm9iZWQsIHRoYXQgb3BlbnMgdGhlIGRvb3IgdG8gdXNlcnNwYWNlIGludGVyYWN0aW9uIHZpYSBpbnRlcmZhY2VzIGxpa2UgZXRodG9vbCwgc3lzZnMgTEVEIGNsYXNzLCBvciBuZXRsaW5rLiBUaGF0IGNvdWxkIHRoZW4gdHJpZ2dlciBgLmxlZF9icmlnaHRuZXNzX3NldGAsIGAubGVkX2h3X2NvbnRyb2xfc2V0YCwgYC5sZWRfcG9sYXJpdHlfc2V0YCwgZXRjLiBvciBldmVuIGEgcmUtaW5pdGlhbGl6YXRpb24gdGhyb3VnaCBhIHNvZnQgcmVzZXQuICBUaGF0J3MgYWxsIHBvdGVudGlhbGx5IGZ1enphYmxlLlxuXG5JIGFsc28gc2VlIHRoYXQgdGhpcyBwYXRjaCBhZGRzIGEgbXV0ZXggYGxlZF9sb2NrYCwgc2hhZG93IHN0YXRlIHdpdGggYGxlZGNyMWAvYGxlZGNyMmAgYW5kLCBpbXBvcnRhbnRseSwgYSBgV0FSTl9PTl9PTkNFKDEpYCBhc3NlcnRpb24gd2l0aGluIGEgcmVhY2hhYmxlIHBhdGg6IGBfX2RwODM4NjdfbGVkX21vZGlmeWAuIFRoaXMgaXMgYSBiaWcgcmVkIGZsYWcg4oCTIHRoYXQncyBhIHBlcmZlY3QgdGFyZ2V0LlxuXG5Ob3csIGxldCdzIGxvb2sgYXQgdGhlIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiBjaGFuZ2VkOiBgX19kcDgzODY3X2xlZF9tb2RpZnlgLCBgZHA4Mzg2N19sZWRfcmVzdG9yZWAsIGBkcDgzODY3X3Byb2JlYCwgYGRwODM4NjdfY29uZmlnX2luaXRgLCBgZHA4Mzg2N19sZWRfYnJpZ2h0bmVzc19zZXRgLCBgZHA4Mzg2N19sZWRfaHdfY29udHJvbF9zZXRgLCBhbmQgYGRwODM4NjdfbGVkX3BvbGFyaXR5X3NldGAuIFRob3NlIGFyZSBteSB0YXJnZXQgZnVuY3Rpb25zLlxuXG5JIG5lZWQgdG8gZm9jdXMgb24gdGhlc2UsIGVzcGVjaWFsbHkgdGhlIG9uZXMgdGhhdCBhcmVuJ3Qgc3RhdGljIG9yIHNwZWNpZmljIGZ1bmN0aW9ucywgdGhhdCBhcmUgZXhwb3J0ZWQ6IGBkcDgzODY3X2xlZF9icmlnaHRuZXNzX3NldGAsIGBkcDgzODY3X2xlZF9od19jb250cm9sX3NldGAsIGBkcDgzODY3X2xlZF9wb2xhcml0eV9zZXRgLCBgZHA4Mzg2N19jb25maWdfaW5pdGAsIGFuZCBgZHA4Mzg2N19wcm9iZWAuXG5cbkkgbmVlZCB0byBlbmFibGUgdGhlc2UgY29uZmlnczogYFBIWUxJQmAgYW5kIGBEUDgzODY3X1BIWWAuXG5cbkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjazpcbiogICAqKlJlYWNoYWJpbGl0eT8qKiBDaGVjay4gVmlhIFVTQiBnYWRnZXQgZW11bGF0aW9uIGFuZCBVU0IgZXRoZXJuZXQgd2l0aCBNRElPIGJ1cy5cbiogICAqKk5ldy9Nb2RpZmllZCBBc3NlcnRpb25zPyoqIFllcywgdGhhdCBgV0FSTl9PTl9PTkNFKDEpYCBpcyBwcmltZS5cbiogICAqKldvcnRoIEZ1enppbmc/KiogQWJzb2x1dGVseS5cblxuQWxyaWdodCwgdGhhdCBjb3ZlcnMgaXQuICBMZXQncyBwdXQgdG9nZXRoZXIgdGhlIHJlc3VsdHMgYW5kIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIxMjAsIk91dHB1dFRva2VucyI6MjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Nzg4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMDA6Mjk6NDQuNjU1NTYwOTNaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDg5Njk5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUEhZTElCXCIsXG4gICAgXCJEUDgzODY3X1BIWVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRwODM4NjdfbGVkX2JyaWdodG5lc3Nfc2V0XCIsXG4gICAgXCJkcDgzODY3X2xlZF9od19jb250cm9sX3NldFwiLFxuICAgIFwiZHA4Mzg2N19sZWRfcG9sYXJpdHlfc2V0XCIsXG4gICAgXCJkcDgzODY3X2NvbmZpZ19pbml0XCIsXG4gICAgXCJkcDgzODY3X3Byb2JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFRleGFzIEluc3RydW1lbnRzIERQODM4NjcgUEhZIGRyaXZlciAoZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYykgYnkgaW50cm9kdWNpbmcgYSBuZXcgbXV0ZXggKGxlZF9sb2NrKSBhbmQgc2hhZG93IHJlZ2lzdGVycyB0byBwcm9wZXJseSByZXN0b3JlIExFRCBjb25maWd1cmF0aW9ucyBhY3Jvc3Mgc29mdCByZXNldHMsIGFsb25nIHdpdGggcnVudGltZSBhc3NlcnRpb25zIChXQVJOX09OX09OQ0UpLiBUaGUgZHJpdmVyIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBFdGhlcm5ldCBhZGFwdGVycyBleHBvc2luZyBNRElPIGJ1c2VzLiBGdXp6aW5nIGlzIHdhcnJhbnRlZCB0byB2ZXJpZnkgY29uY3VycmVuY3kgYW5kIHByb3BlciBzZXJpYWxpemF0aW9uIGJldHdlZW4gY29uZmlnX2luaXQgc29mdC1yZXNldCByZXN0b3JlIGFuZCBMRUQgY29udHJvbCBvcGVyYXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBIWUxJQlwiLFxuICAgIFwiRFA4Mzg2N19QSFlcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkcDgzODY3X2xlZF9icmlnaHRuZXNzX3NldFwiLFxuICAgIFwiZHA4Mzg2N19sZWRfaHdfY29udHJvbF9zZXRcIixcbiAgICBcImRwODM4NjdfbGVkX3BvbGFyaXR5X3NldFwiLFxuICAgIFwiZHA4Mzg2N19jb25maWdfaW5pdFwiLFxuICAgIFwiZHA4Mzg2N19wcm9iZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUZXhhcyBJbnN0cnVtZW50cyBEUDgzODY3IFBIWSBkcml2ZXIgKGRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMpIGJ5IGludHJvZHVjaW5nIGEgbmV3IG11dGV4IChsZWRfbG9jaykgYW5kIHNoYWRvdyByZWdpc3RlcnMgdG8gcHJvcGVybHkgcmVzdG9yZSBMRUQgY29uZmlndXJhdGlvbnMgYWNyb3NzIHNvZnQgcmVzZXRzLCBhbG9uZyB3aXRoIHJ1bnRpbWUgYXNzZXJ0aW9ucyAoV0FSTl9PTl9PTkNFKS4gVGhlIGRyaXZlciBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgRXRoZXJuZXQgYWRhcHRlcnMgZXhwb3NpbmcgTURJTyBidXNlcy4gRnV6emluZyBpcyB3YXJyYW50ZWQgdG8gdmVyaWZ5IGNvbmN1cnJlbmN5IGFuZCBwcm9wZXIgc2VyaWFsaXphdGlvbiBiZXR3ZWVuIGNvbmZpZ19pbml0IHNvZnQtcmVzZXQgcmVzdG9yZSBhbmQgTEVEIGNvbnRyb2wgb3BlcmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMDA6Mjk6NDQuNzMwNDY1MzM5WiIsIlNlcSI6MjMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTYwNjA5MTUwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDAwOjI5OjQ0LjczMDk4MDY2OVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjExNjA1NTcwODk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgc2hhZG93IG1lY2hhbmlzbSBhbmQgbXV0ZXggbG9ja2luZyBmb3IgTEVEIHJlZ2lzdGVycyBpbiB0aGUgRFA4Mzg2NyBQSFkgZHJpdmVyIChkcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jKS4gVGhlIHByaXZhdGUgc3RydWN0dXJlIGBzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlYCBpcyBhbGxvY2F0ZWQgdXNpbmcgYGRldm1fa3phbGxvYygpYCwgZW5zdXJpbmcgdGhhdCBhbGwgbmV3bHkgaW50cm9kdWNlZCBmaWVsZHMgKGBsZWRfbG9ja2AsIGBsZWRjcjFgLCBgbGVkY3IxX21hc2tgLCBgbGVkY3IyYCwgYGxlZGNyMl9tYXNrYCkgYXJlIGZ1bGx5IHplcm8taW5pdGlhbGl6ZWQuIEFsbCBsb2NhbCB2YXJpYWJsZXMgYXJlIHByb3Blcmx5IGluaXRpYWxpemVkIGJlZm9yZSB1c2UuIE5vIGRhdGEgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgaXMgYWNjZXNzZWQgb3IgYnJhbmNoZWQgdXBvbiwgYW5kIGFueSBwb3RlbnRpYWwgbG9ja2luZyBvciByYWNlIGJ1Z3MgYXJlIGhhbmRsZWQgYnkgc3RhbmRhcmQgc2FuaXRpemVycyBzdWNoIGFzIExPQ0tERVAgYW5kIEtBU0FOLiBUaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA0NGMxNjVjYWYwY2M5MDI2YjkwNzAxZGJlMjFjNGU3NzA4MzZhZTI2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgOSAwMDoyODo1MSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmMgYi9kcml2ZXJzL25ldC9waHkvZHA4Mzg2Ny5jXG5pbmRleCA4ODI1NWU5MmI0Y2RiLi5lZWI0Y2Q2NDhmNzQzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuY1xuKysrIGIvZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuY1xuQEAgLTgsNiArOCw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9taWkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvbXV0ZXguaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L29mLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9waHkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2RlbGF5LmhcdTAwM2VcbkBAIC0xOTYsNiArMTk3LDE2IEBAIHN0cnVjdCBkcDgzODY3X3ByaXZhdGUge1xuIFx0Ym9vbCBzZXRfY2xrX291dHB1dDtcbiBcdHUzMiBjbGtfb3V0cHV0X3NlbDtcbiBcdGJvb2wgc2dtaWlfcmVmX2Nsa19lbjtcbitcbitcdC8qIFNoYWRvdyBvZiB0aGUgTEVEIHJlZ2lzdGVycywgcmVwbGF5ZWQgYWZ0ZXIgYSBzb2Z0IHJlc2V0LiBsZWRfbG9ja1xuK1x0ICogc2VyaWFsaXplcyB0aGUgc2hhZG93IGFuZCBpdHMgcmVwbGF5IGFnYWluc3QgdGhlIExFRCBjYWxsYmFja3MsXG4rXHQgKiBiZWNhdXNlIGRwODM4NjdfY29uZmlnX2luaXQoKSBkb2VzIHRoZSByZXBsYXkgb2ZmIHBoeWRldi1cdTAwM2Vsb2NrLlxuK1x0ICovXG4rXHRzdHJ1Y3QgbXV0ZXggbGVkX2xvY2s7XG4rXHR1MTYgbGVkY3IxO1xuK1x0dTE2IGxlZGNyMV9tYXNrO1xuK1x0dTE2IGxlZGNyMjtcbitcdHUxNiBsZWRjcjJfbWFzaztcbiB9O1xuIFxuIHN0YXRpYyBpbnQgZHA4Mzg2N19hY2tfaW50ZXJydXB0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5AQCAtNzIyLDYgKzczMyw3IEBAIHN0YXRpYyBpbnQgZHA4Mzg2N19yZXN1bWUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBzdGF0aWMgaW50IGRwODM4NjdfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiB7XG4gXHRzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlICpkcDgzODY3O1xuK1x0aW50IHJldDtcbiBcbiBcdGRwODM4NjcgPSBkZXZtX2t6YWxsb2MoXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2LCBzaXplb2YoKmRwODM4NjcpLFxuIFx0XHRcdCAgICAgICBHRlBfS0VSTkVMKTtcbkBAIC03MzAsOSArNzQyLDYwIEBAIHN0YXRpYyBpbnQgZHA4Mzg2N19wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFxuIFx0cGh5ZGV2LVx1MDAzZXByaXYgPSBkcDgzODY3O1xuIFxuK1x0cmV0ID0gZGV2bV9tdXRleF9pbml0KFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldiwgXHUwMDI2ZHA4Mzg2Ny1cdTAwM2VsZWRfbG9jayk7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuIFx0cmV0dXJuIGRwODM4Njdfb2ZfaW5pdChwaHlkZXYpO1xuIH1cbiBcbisvKiBVcGRhdGUgYW4gTEVEIHJlZ2lzdGVyIGFuZCBtaXJyb3IgdGhlIGNoYW5nZSBpbnRvIHRoZSBzaGFkb3csIHNvIHRoYXRcbisgKiBkcDgzODY3X2NvbmZpZ19pbml0KCkgY2FuIHJlcGxheSBpdCBhZnRlciBhIHNvZnQgcmVzZXQuIENhbGxlciBtdXN0IGhvbGRcbisgKiBkcDgzODY3LVx1MDAzZWxlZF9sb2NrLlxuKyAqL1xuK3N0YXRpYyBpbnQgX19kcDgzODY3X2xlZF9tb2RpZnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTMyIHJlZyxcbitcdFx0XHRcdHUxNiBtYXNrLCB1MTYgdmFsKVxuK3tcbitcdHN0cnVjdCBkcDgzODY3X3ByaXZhdGUgKmRwODM4NjcgPSBwaHlkZXYtXHUwMDNlcHJpdjtcbitcdGludCByZXQ7XG4rXG4rXHRyZXQgPSBwaHlfbW9kaWZ5KHBoeWRldiwgcmVnLCBtYXNrLCB2YWwpO1xuK1x0aWYgKHJldClcbitcdFx0cmV0dXJuIHJldDtcbitcbitcdGlmIChyZWcgPT0gRFA4Mzg2N19MRURDUjEpIHtcbitcdFx0ZHA4Mzg2Ny1cdTAwM2VsZWRjcjEgPSAoZHA4Mzg2Ny1cdTAwM2VsZWRjcjEgXHUwMDI2IH5tYXNrKSB8ICh2YWwgXHUwMDI2IG1hc2spO1xuK1x0XHRkcDgzODY3LVx1MDAzZWxlZGNyMV9tYXNrIHw9IG1hc2s7XG4rXHR9IGVsc2UgaWYgKHJlZyA9PSBEUDgzODY3X0xFRENSMikge1xuK1x0XHRkcDgzODY3LVx1MDAzZWxlZGNyMiA9IChkcDgzODY3LVx1MDAzZWxlZGNyMiBcdTAwMjYgfm1hc2spIHwgKHZhbCBcdTAwMjYgbWFzayk7XG4rXHRcdGRwODM4NjctXHUwMDNlbGVkY3IyX21hc2sgfD0gbWFzaztcbitcdH0gZWxzZSB7XG4rXHRcdFdBUk5fT05fT05DRSgxKTtcbitcdH1cbitcbitcdHJldHVybiAwO1xuK31cbitcbisvKiBSZXN0b3JlIHRoZSBMRUQgcmVnaXN0ZXJzIHRoZSBkcml2ZXIgaGFzIHByb2dyYW1tZWQsIGNsZWFyZWQgYnkgdGhlIHNvZnRcbisgKiByZXNldCBpbiBkcDgzODY3X3BoeV9yZXNldCgpLlxuKyAqL1xuK3N0YXRpYyBpbnQgZHA4Mzg2N19sZWRfcmVzdG9yZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuK3tcbitcdHN0cnVjdCBkcDgzODY3X3ByaXZhdGUgKmRwODM4NjcgPSBwaHlkZXYtXHUwMDNlcHJpdjtcbitcdGludCByZXQgPSAwO1xuK1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZkcDgzODY3LVx1MDAzZWxlZF9sb2NrKTtcbitcdGlmIChkcDgzODY3LVx1MDAzZWxlZGNyMV9tYXNrKVxuK1x0XHRyZXQgPSBwaHlfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjEsXG4rXHRcdFx0XHQgZHA4Mzg2Ny1cdTAwM2VsZWRjcjFfbWFzaywgZHA4Mzg2Ny1cdTAwM2VsZWRjcjEpO1xuK1x0aWYgKCFyZXQgXHUwMDI2XHUwMDI2IGRwODM4NjctXHUwMDNlbGVkY3IyX21hc2spXG4rXHRcdHJldCA9IHBoeV9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMixcbitcdFx0XHRcdCBkcDgzODY3LVx1MDAzZWxlZGNyMl9tYXNrLCBkcDgzODY3LVx1MDAzZWxlZGNyMik7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2ZHA4Mzg2Ny1cdTAwM2VsZWRfbG9jayk7XG4rXG4rXHRyZXR1cm4gcmV0O1xuK31cbitcbiBzdGF0aWMgaW50IGRwODM4NjdfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiB7XG4gXHRzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlICpkcDgzODY3ID0gcGh5ZGV2LVx1MDAzZXByaXY7XG5AQCAtODk2LDYgKzk1OSwxMCBAQCBzdGF0aWMgaW50IGRwODM4NjdfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdFx0XHQgICAgICAgbWFzaywgdmFsKTtcbiBcdH1cbiBcbitcdHJldCA9IGRwODM4NjdfbGVkX3Jlc3RvcmUocGh5ZGV2KTtcbitcdGlmIChyZXQpXG4rXHRcdHBoeWRldl93YXJuKHBoeWRldiwgXCJmYWlsZWQgdG8gcmVzdG9yZSBMRUQgY29uZmlnOiAlZFxcblwiLCByZXQpO1xuK1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuQEAgLTEwMDQsNyArMTA3MSw5IEBAIHN0YXRpYyBpbnRcbiBkcDgzODY3X2xlZF9icmlnaHRuZXNzX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuIFx0XHRcdCAgIHU4IGluZGV4LCBlbnVtIGxlZF9icmlnaHRuZXNzIGJyaWdodG5lc3MpXG4ge1xuLVx0dTMyIHZhbDtcbitcdHN0cnVjdCBkcDgzODY3X3ByaXZhdGUgKmRwODM4NjcgPSBwaHlkZXYtXHUwMDNlcHJpdjtcbitcdHUxNiB2YWw7XG4rXHRpbnQgcmV0O1xuIFxuIFx0aWYgKGluZGV4IFx1MDAzZT0gRFA4Mzg2N19MRURfQ09VTlQpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuQEAgLTEwMTUsMTAgKzEwODQsMTMgQEAgZHA4Mzg2N19sZWRfYnJpZ2h0bmVzc19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbiBcdGlmIChicmlnaHRuZXNzKVxuIFx0XHR2YWwgfD0gRFA4Mzg2N19MRURfRFJWX1ZBTChpbmRleCk7XG4gXG4tXHRyZXR1cm4gcGh5X21vZGlmeShwaHlkZXYsIERQODM4NjdfTEVEQ1IyLFxuLVx0XHRcdCAgRFA4Mzg2N19MRURfRFJWX1ZBTChpbmRleCkgfFxuLVx0XHRcdCAgRFA4Mzg2N19MRURfRFJWX0VOKGluZGV4KSxcbi1cdFx0XHQgIHZhbCk7XG4rXHRtdXRleF9sb2NrKFx1MDAyNmRwODM4NjctXHUwMDNlbGVkX2xvY2spO1xuK1x0cmV0ID0gX19kcDgzODY3X2xlZF9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMixcbitcdFx0XHRcdCAgIERQODM4NjdfTEVEX0RSVl9WQUwoaW5kZXgpIHxcbitcdFx0XHRcdCAgIERQODM4NjdfTEVEX0RSVl9FTihpbmRleCksIHZhbCk7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2ZHA4Mzg2Ny1cdTAwM2VsZWRfbG9jayk7XG4rXG4rXHRyZXR1cm4gcmV0O1xuIH1cbiBcbiBzdGF0aWMgaW50IGRwODM4NjdfbGVkX21vZGUodTggaW5kZXgsIHVuc2lnbmVkIGxvbmcgcnVsZXMpXG5AQCAtMTA2OSwxOCArMTE0MSwyNCBAQCBzdGF0aWMgaW50IGRwODM4NjdfbGVkX2h3X2lzX3N1cHBvcnRlZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcbiBzdGF0aWMgaW50IGRwODM4NjdfbGVkX2h3X2NvbnRyb2xfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuIFx0XHRcdFx0ICAgICAgdW5zaWduZWQgbG9uZyBydWxlcylcbiB7XG4rXHRzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlICpkcDgzODY3ID0gcGh5ZGV2LVx1MDAzZXByaXY7XG4gXHRpbnQgbW9kZSwgcmV0O1xuIFxuIFx0bW9kZSA9IGRwODM4NjdfbGVkX21vZGUoaW5kZXgsIHJ1bGVzKTtcbiBcdGlmIChtb2RlIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gbW9kZTtcbiBcbi1cdHJldCA9IHBoeV9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMSwgRFA4Mzg2N19MRURfRk5fTUFTSyhpbmRleCksXG4tXHRcdFx0IERQODM4NjdfTEVEX0ZOKGluZGV4LCBtb2RlKSk7XG4tXHRpZiAocmV0KVxuLVx0XHRyZXR1cm4gcmV0O1xuLVxuLVx0cmV0dXJuIHBoeV9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMiwgRFA4Mzg2N19MRURfRFJWX0VOKGluZGV4KSwgMCk7XG4rXHRtdXRleF9sb2NrKFx1MDAyNmRwODM4NjctXHUwMDNlbGVkX2xvY2spO1xuK1x0cmV0ID0gX19kcDgzODY3X2xlZF9tb2RpZnkocGh5ZGV2LCBEUDgzODY3X0xFRENSMSxcbitcdFx0XHRcdCAgIERQODM4NjdfTEVEX0ZOX01BU0soaW5kZXgpLFxuK1x0XHRcdFx0ICAgRFA4Mzg2N19MRURfRk4oaW5kZXgsIG1vZGUpKTtcbitcdGlmICghcmV0KVxuK1x0XHRyZXQgPSBfX2RwODM4NjdfbGVkX21vZGlmeShwaHlkZXYsIERQODM4NjdfTEVEQ1IyLFxuK1x0XHRcdFx0XHQgICBEUDgzODY3X0xFRF9EUlZfRU4oaW5kZXgpIHxcbitcdFx0XHRcdFx0ICAgRFA4Mzg2N19MRURfRFJWX1ZBTChpbmRleCksIDApO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmRwODM4NjctXHUwMDNlbGVkX2xvY2spO1xuK1xuK1x0cmV0dXJuIHJldDtcbiB9XG4gXG4gc3RhdGljIGludCBkcDgzODY3X2xlZF9od19jb250cm9sX2dldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcbkBAIC0xMTQxLDkgKzEyMTksMTEgQEAgc3RhdGljIGludCBkcDgzODY3X2xlZF9od19jb250cm9sX2dldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcbiBzdGF0aWMgaW50IGRwODM4NjdfbGVkX3BvbGFyaXR5X3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgaW5kZXgsXG4gXHRcdFx0XHQgICAgdW5zaWduZWQgbG9uZyBtb2RlcylcbiB7XG4rXHRzdHJ1Y3QgZHA4Mzg2N19wcml2YXRlICpkcDgzODY3ID0gcGh5ZGV2LVx1MDAzZXByaXY7XG4gXHQvKiBEZWZhdWx0IGFjdGl2ZSBoaWdoICovXG4gXHR1MTYgcG9sYXJpdHkgPSBEUDgzODY3X0xFRF9QT0xBUklUWShpbmRleCk7XG4gXHR1MzIgbW9kZTtcbitcdGludCByZXQ7XG4gXG4gXHRmb3JfZWFjaF9zZXRfYml0KG1vZGUsIFx1MDAyNm1vZGVzLCBfX1BIWV9MRURfTU9ERVNfTlVNKSB7XG4gXHRcdHN3aXRjaCAobW9kZSkge1xuQEAgLTExNTQsOCArMTIzNCwxMyBAQCBzdGF0aWMgaW50IGRwODM4NjdfbGVkX3BvbGFyaXR5X3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgaW5kZXgsXG4gXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRcdH1cbiBcdH1cbi1cdHJldHVybiBwaHlfbW9kaWZ5KHBoeWRldiwgRFA4Mzg2N19MRURDUjIsXG4tXHRcdFx0ICBEUDgzODY3X0xFRF9QT0xBUklUWShpbmRleCksIHBvbGFyaXR5KTtcbitcbitcdG11dGV4X2xvY2soXHUwMDI2ZHA4Mzg2Ny1cdTAwM2VsZWRfbG9jayk7XG4rXHRyZXQgPSBfX2RwODM4NjdfbGVkX21vZGlmeShwaHlkZXYsIERQODM4NjdfTEVEQ1IyLFxuK1x0XHRcdFx0ICAgRFA4Mzg2N19MRURfUE9MQVJJVFkoaW5kZXgpLCBwb2xhcml0eSk7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2ZHA4Mzg2Ny1cdTAwM2VsZWRfbG9jayk7XG4rXG4rXHRyZXR1cm4gcmV0O1xuIH1cbiBcbiBzdGF0aWMgdW5zaWduZWQgaW50IGRwODM4NjdfaW5iYW5kX2NhcHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDAwOjI5OjQ0LjczMDk4MTk0OVoiLCJTZXEiOjI1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMTYwNTU0ODUxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLTVNBTiBFdmFsdWF0aW9uOiBkcDgzODY3IFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSB0YXNrIGlzIHRvIGV2YWx1YXRlIHRoaXMgcGF0Y2ggdG8gYGRyaXZlcnMvbmV0L3BoeS9kcDgzODY3LmNgIGFuZCBkZWNpZGUgaWYgaXQgd2FycmFudHMgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLiBUaGUgcHJpbWFyeSBjaGFuZ2Ugc2VlbXMgdG8gYmUgdGhlIGFkZGl0aW9uIG9mIGEgbXV0ZXggKGBsZWRfbG9ja2ApIGFuZCBzaGFkb3cgcmVnaXN0ZXJzIChgbGVkY3IxYCwgYGxlZGNyMV9tYXNrYCwgYGxlZGNyMmAsIGBsZWRjcjJfbWFza2ApIHdpdGhpbiB0aGUgYGRwODM4NjdfcHJpdmF0ZWAgc3RydWN0LiBUaGlzIGlzIGFsbCBhYm91dCBtYW5hZ2luZyBMRUQgcmVnaXN0ZXIgc2V0dGluZ3MgaW4gdGhlIFBIWSBkcml2ZXIsIGluY2x1ZGluZyByZWdpc3RlciBjYWNoaW5nIGFuZCByZXN0b3JhdGlvbiBhZnRlciBzb2Z0IHJlc2V0cywgYW5kIGVuc3VyaW5nIHN5bmNocm9uaXphdGlvbi5cblxuRmlyc3QsIEkgbmVlZCB0byBjaGVjayBmb3IgcG90ZW50aWFsIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGxlYWtzLiBUaGUgcGF0Y2ggdXNlcyBgZGV2bV9remFsbG9jYCB0byBhbGxvY2F0ZSB0aGUgYGRwODM4NjdgIHN0cnVjdHVyZSwgd2hpY2ggbWVhbnMgYWxsIHRoZSBuZXcgZmllbGRzLCBpbmNsdWRpbmcgdGhvc2UgcmVsYXRlZCB0byB0aGUgTEVEIGZ1bmN0aW9uYWxpdHksIGFyZSBndWFyYW50ZWVkIHRvIGJlIHplcm8taW5pdGlhbGl6ZWQuIEkgc2VlIHRoYXQgYGRwODM4NjdfbGVkX3Jlc3RvcmVgIHVzZXMgdGhlIG1hc2sgZmllbGRzLCBidXQgdGhleSBhcmUgZWl0aGVyIHplcm8taW5pdGlhbGl6ZWQgb3Igd3JpdHRlbiB0byBmaXJzdC4gSSBkb24ndCBzZWUgYW55IGRhdGEgYmVpbmcgY29waWVkIHRvIHVzZXJzcGFjZSB2aWEgYGNvcHlfdG9fdXNlcmAsIGlvY3RsLCBvciBuZXRsaW5rLCBlbGltaW5hdGluZyB0aGF0IHZlY3Rvci4gVGhlIGxvY2FsIHZhcmlhYmxlcyAoYHJldGAsIGBkcDgzODY3YCwgYHZhbGAsIGV0Yy4pIGFyZSBhbHNvIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgYmVmb3JlIHVzZSwgYSBzdGFuZGFyZCBwcmFjdGljZSBJIGV4cGVjdCB0byBzZWUsIHdoaWNoIGlzIGdvb2QuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2VzIGlzIGNlbnRlcmVkIGFyb3VuZCByZWdpc3RlciBhY2Nlc3MgYW5kIGxvY2tpbmcsIG5vdCBpbnRyb2R1Y2luZyBuZXcgZGF0YSBzdHJ1Y3R1cmVzIG9yIGNvbXBsZXggZmxvd3MgdGhhdCB3b3VsZCBiZSBhIHJlZCBmbGFnLlxuXG5HaXZlbiB0aGF0IHRoZSBjaGFuZ2UgZm9jdXNlcyBvbiBjYWNoaW5nL3Jlc3RvcmluZyBoYXJkd2FyZSByZWdpc3RlciB2YWx1ZXMgYW5kIGFkZGluZyBhIG11dGV4LCB0aGVyZSdzIG5vIG9idmlvdXMgcGF0aCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gVGhlIGFsbG9jYXRpb24gaXMgemVyb2VkLCBubyB1c2VyLXNwYWNlIGRhdGEgbGVha3MsIGFuZCBsb2NhbCB2YXJpYWJsZXMgYXJlIHByb3Blcmx5IGluaXRpYWxpemVkLiBMb2NrZGVwIGFuZCBLQVNBTiB3b3VsZCBjYXRjaCBhbnkgY29uY3VycmVuY3kgaXNzdWVzLlxuXG5MZXQncyBxdWlja2x5IHJlLWl0ZXJhdGUgdGhlIGZvdXIgY3JpdGVyaWEgdG8gYmUgY2VydGFpbjpcblxuMS4gIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZT8gTm9wZS5cbjIuICBDb25kaXRpb25hbCBsb2dpYyBkZXBlbmRpbmcgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXM/IE5vdCBhIGNoYW5jZS4gVGhlIGBremFsbG9jYCBndWFyYW50ZWVzIGluaXRpYWxpemF0aW9uLCBhbmQgdGhlIGxvZ2ljIHVzZXMgbG9jYWwgdmFyaWFibGVzLlxuMy4gIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMgY291bGQgYmUgcmVhZCBsYXRlcj8gWmVyby1pbml0aWFsaXplZCwgc28gbm8uXG40LiAgQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgdGhhdCBhY2Nlc3NlcyB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnM/IE5vdGhpbmcgbGlrZSB0aGF0IGhlcmUuXG5cblRoZXJlZm9yZSwgYWZ0ZXIgYSB0aG9yb3VnaCByZXZpZXcsIG15IGNvbmNsdXNpb24gaXMgdGhhdCB0aGlzIHBhdGNoICpkb2VzIG5vdCoganVzdGlmeSBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uLiBUaGUgYE5lZWRzS01TQU5gIGZsYWcgc2hvdWxkIGJlIHNldCB0byBgZmFsc2VgLiBUaW1lIHRvIGNvbnN0cnVjdCBteSByZXNwb25zZSBhbmQgc2V0IHRoZSByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjQ4LCJPdXRwdXRUb2tlbnMiOjE5MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg0NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDAwOjI5OjU2LjMzNjUzNDEyNloiLCJTZXEiOjI2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHNoYWRvdyBtZWNoYW5pc20gYW5kIG11dGV4IGxvY2tpbmcgZm9yIExFRCByZWdpc3RlcnMgaW4gdGhlIERQODM4NjcgUEhZIGRyaXZlciAoZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYykuIFRoZSBwcml2YXRlIHN0cnVjdHVyZSBgc3RydWN0IGRwODM4NjdfcHJpdmF0ZWAgaXMgYWxsb2NhdGVkIHVzaW5nIGBkZXZtX2t6YWxsb2MoKWAsIGVuc3VyaW5nIHRoYXQgYWxsIG5ld2x5IGludHJvZHVjZWQgZmllbGRzIChgbGVkX2xvY2tgLCBgbGVkY3IxYCwgYGxlZGNyMV9tYXNrYCwgYGxlZGNyMmAsIGBsZWRjcjJfbWFza2ApIGFyZSBmdWxseSB6ZXJvLWluaXRpYWxpemVkLiBBbGwgbG9jYWwgdmFyaWFibGVzIGFyZSBwcm9wZXJseSBpbml0aWFsaXplZCBiZWZvcmUgdXNlLiBObyBkYXRhIGlzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBubyB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IGlzIGFjY2Vzc2VkIG9yIGJyYW5jaGVkIHVwb24sIGFuZCBhbnkgcG90ZW50aWFsIGxvY2tpbmcgb3IgcmFjZSBidWdzIGFyZSBoYW5kbGVkIGJ5IHN0YW5kYXJkIHNhbml0aXplcnMgc3VjaCBhcyBMT0NLREVQIGFuZCBLQVNBTi4gVGhlcmVmb3JlLCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHNoYWRvdyBtZWNoYW5pc20gYW5kIG11dGV4IGxvY2tpbmcgZm9yIExFRCByZWdpc3RlcnMgaW4gdGhlIERQODM4NjcgUEhZIGRyaXZlciAoZHJpdmVycy9uZXQvcGh5L2RwODM4NjcuYykuIFRoZSBwcml2YXRlIHN0cnVjdHVyZSBgc3RydWN0IGRwODM4NjdfcHJpdmF0ZWAgaXMgYWxsb2NhdGVkIHVzaW5nIGBkZXZtX2t6YWxsb2MoKWAsIGVuc3VyaW5nIHRoYXQgYWxsIG5ld2x5IGludHJvZHVjZWQgZmllbGRzIChgbGVkX2xvY2tgLCBgbGVkY3IxYCwgYGxlZGNyMV9tYXNrYCwgYGxlZGNyMmAsIGBsZWRjcjJfbWFza2ApIGFyZSBmdWxseSB6ZXJvLWluaXRpYWxpemVkLiBBbGwgbG9jYWwgdmFyaWFibGVzIGFyZSBwcm9wZXJseSBpbml0aWFsaXplZCBiZWZvcmUgdXNlLiBObyBkYXRhIGlzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBubyB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IGlzIGFjY2Vzc2VkIG9yIGJyYW5jaGVkIHVwb24sIGFuZCBhbnkgcG90ZW50aWFsIGxvY2tpbmcgb3IgcmFjZSBidWdzIGFyZSBoYW5kbGVkIGJ5IHN0YW5kYXJkIHNhbml0aXplcnMgc3VjaCBhcyBMT0NLREVQIGFuZCBLQVNBTi4gVGhlcmVmb3JlLCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflow62rsm[1] Phase: Succeeded StartedAt: 2026-09-09 00:30:07 +0000 UTC FinishedAt: 2026-09-09 00:30:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62rsm[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-09 00:30:07 +0000 UTC FinishedAt: 2026-09-09 00:30:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62rsm[2] Phase: Succeeded StartedAt: 2026-09-09 00:30:07 +0000 UTC FinishedAt: 2026-09-09 02:05:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62rsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83867_led_brightness_set","dp83867_led_hw_control_set","dp83867_led_polarity_set","dp83867_config_init","dp83867_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"8f1abd0d-bc91-4703-baa5-7eef20f825ea","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-09 00:30:07 +0000 UTC FinishedAt: 2026-09-09 02:05:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83867_led_brightness_set","dp83867_led_hw_control_set","dp83867_led_polarity_set","dp83867_config_init","dp83867_probe"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"8f1abd0d-bc91-4703-baa5-7eef20f825ea","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow62rsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83867_led_brightness_set","dp83867_led_hw_control_set","dp83867_led_polarity_set","dp83867_config_init","dp83867_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"8f1abd0d-bc91-4703-baa5-7eef20f825ea","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-09 00:30:07 +0000 UTC FinishedAt: 2026-09-09 00:30:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62rsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83867_led_brightness_set","dp83867_led_hw_control_set","dp83867_led_polarity_set","dp83867_config_init","dp83867_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"8f1abd0d-bc91-4703-baa5-7eef20f825ea","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-09 00:30:07 +0000 UTC FinishedAt: 2026-09-09 00:30:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow62rsm/series-workflow62rsm-convert-artifact-3146877342/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow62rsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83867_led_brightness_set","dp83867_led_hw_control_set","dp83867_led_polarity_set","dp83867_config_init","dp83867_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"8f1abd0d-bc91-4703-baa5-7eef20f825ea","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-09 00:30:17 +0000 UTC FinishedAt: 2026-09-09 00:46:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62rsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83867_led_brightness_set","dp83867_led_hw_control_set","dp83867_led_polarity_set","dp83867_config_init","dp83867_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"8f1abd0d-bc91-4703-baa5-7eef20f825ea","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-09 00:30:17 +0000 UTC FinishedAt: 2026-09-09 00:46:25 +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:*ff817c8c-b185-41ba-be64-acf47c528a33,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-workflow62rsm/series-workflow62rsm-convert-artifact-3146877342/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": "bccabb82-48a9-4fd1-a560-6eedacb07d5a", "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-workflow62rsm/series-workflow62rsm-build-action-3655290500/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow62rsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83867_led_brightness_set","dp83867_led_hw_control_set","dp83867_led_polarity_set","dp83867_config_init","dp83867_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"8f1abd0d-bc91-4703-baa5-7eef20f825ea","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-09 00:30:17 +0000 UTC FinishedAt: 2026-09-09 00:46:15 +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:*ff817c8c-b185-41ba-be64-acf47c528a33,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-workflow62rsm/series-workflow62rsm-convert-artifact-3146877342/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": "bccabb82-48a9-4fd1-a560-6eedacb07d5a", "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-workflow62rsm/series-workflow62rsm-build-action-3655290500/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow62rsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83867_led_brightness_set","dp83867_led_hw_control_set","dp83867_led_polarity_set","dp83867_config_init","dp83867_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"8f1abd0d-bc91-4703-baa5-7eef20f825ea","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-09 00:46:25 +0000 UTC FinishedAt: 2026-09-09 00:46:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62rsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83867_led_brightness_set","dp83867_led_hw_control_set","dp83867_led_polarity_set","dp83867_config_init","dp83867_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"8f1abd0d-bc91-4703-baa5-7eef20f825ea","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-09 00:46:25 +0000 UTC FinishedAt: 2026-09-09 00:46:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62rsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83867_led_brightness_set","dp83867_led_hw_control_set","dp83867_led_polarity_set","dp83867_config_init","dp83867_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"8f1abd0d-bc91-4703-baa5-7eef20f825ea","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-09 00:46:25 +0000 UTC FinishedAt: 2026-09-09 00:46:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62rsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83867_led_brightness_set","dp83867_led_hw_control_set","dp83867_led_polarity_set","dp83867_config_init","dp83867_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"8f1abd0d-bc91-4703-baa5-7eef20f825ea","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-09 00:46:25 +0000 UTC FinishedAt: 2026-09-09 00:46:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"8f1abd0d-bc91-4703-baa5-7eef20f825ea","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow62rsm/series-workflow62rsm-convert-artifact-1354075985/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow62rsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83867_led_brightness_set","dp83867_led_hw_control_set","dp83867_led_polarity_set","dp83867_config_init","dp83867_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"8f1abd0d-bc91-4703-baa5-7eef20f825ea","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-09 00:46:35 +0000 UTC FinishedAt: 2026-09-09 00:48:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62rsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83867_led_brightness_set","dp83867_led_hw_control_set","dp83867_led_polarity_set","dp83867_config_init","dp83867_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"8f1abd0d-bc91-4703-baa5-7eef20f825ea","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-09 00:46:35 +0000 UTC FinishedAt: 2026-09-09 00:48:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*bccabb82-48a9-4fd1-a560-6eedacb07d5a,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-workflow62rsm/series-workflow62rsm-build-action-3655290500/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-workflow62rsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83867_led_brightness_set","dp83867_led_hw_control_set","dp83867_led_polarity_set","dp83867_config_init","dp83867_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"8f1abd0d-bc91-4703-baa5-7eef20f825ea","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-09 00:48:30 +0000 UTC FinishedAt: 2026-09-09 00:48:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62rsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83867_led_brightness_set","dp83867_led_hw_control_set","dp83867_led_polarity_set","dp83867_config_init","dp83867_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"8f1abd0d-bc91-4703-baa5-7eef20f825ea","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-09 00:48:30 +0000 UTC FinishedAt: 2026-09-09 00:48:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62rsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83867_led_brightness_set","dp83867_led_hw_control_set","dp83867_led_polarity_set","dp83867_config_init","dp83867_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"8f1abd0d-bc91-4703-baa5-7eef20f825ea","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-09 00:48:30 +0000 UTC FinishedAt: 2026-09-09 01:05:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62rsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83867_led_brightness_set","dp83867_led_hw_control_set","dp83867_led_polarity_set","dp83867_config_init","dp83867_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"8f1abd0d-bc91-4703-baa5-7eef20f825ea","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-09 00:48:30 +0000 UTC FinishedAt: 2026-09-09 01:05:04 +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:*ff817c8c-b185-41ba-be64-acf47c528a33,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-workflow62rsm/series-workflow62rsm-convert-artifact-1354075985/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": "260570ab-5007-4bde-a415-419fa2b782a0", "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-workflow62rsm/series-workflow62rsm-build-action-1707046173/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow62rsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83867_led_brightness_set","dp83867_led_hw_control_set","dp83867_led_polarity_set","dp83867_config_init","dp83867_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"8f1abd0d-bc91-4703-baa5-7eef20f825ea","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-09 00:48:30 +0000 UTC FinishedAt: 2026-09-09 01:04:54 +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:*ff817c8c-b185-41ba-be64-acf47c528a33,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-workflow62rsm/series-workflow62rsm-convert-artifact-1354075985/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": "260570ab-5007-4bde-a415-419fa2b782a0", "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-workflow62rsm/series-workflow62rsm-build-action-1707046173/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow62rsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83867_led_brightness_set","dp83867_led_hw_control_set","dp83867_led_polarity_set","dp83867_config_init","dp83867_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"8f1abd0d-bc91-4703-baa5-7eef20f825ea","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-09 01:05:04 +0000 UTC FinishedAt: 2026-09-09 01:05:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62rsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83867_led_brightness_set","dp83867_led_hw_control_set","dp83867_led_polarity_set","dp83867_config_init","dp83867_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"8f1abd0d-bc91-4703-baa5-7eef20f825ea","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-09 01:05:04 +0000 UTC FinishedAt: 2026-09-09 01:05:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62rsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83867_led_brightness_set","dp83867_led_hw_control_set","dp83867_led_polarity_set","dp83867_config_init","dp83867_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"8f1abd0d-bc91-4703-baa5-7eef20f825ea","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-09 01:05:04 +0000 UTC FinishedAt: 2026-09-09 01:07:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62rsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83867_led_brightness_set","dp83867_led_hw_control_set","dp83867_led_polarity_set","dp83867_config_init","dp83867_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"8f1abd0d-bc91-4703-baa5-7eef20f825ea","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-09 01:05:04 +0000 UTC FinishedAt: 2026-09-09 01:06:50 +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:*260570ab-5007-4bde-a415-419fa2b782a0,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-workflow62rsm/series-workflow62rsm-build-action-1707046173/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-workflow62rsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83867_led_brightness_set","dp83867_led_hw_control_set","dp83867_led_polarity_set","dp83867_config_init","dp83867_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"8f1abd0d-bc91-4703-baa5-7eef20f825ea","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-09 01:07:00 +0000 UTC FinishedAt: 2026-09-09 02:05:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62rsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83867_led_brightness_set","dp83867_led_hw_control_set","dp83867_led_polarity_set","dp83867_config_init","dp83867_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"8f1abd0d-bc91-4703-baa5-7eef20f825ea","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-09 01:07:00 +0000 UTC FinishedAt: 2026-09-09 02:05:28 +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":["dp83867_led_brightness_set","dp83867_led_hw_control_set","dp83867_led_polarity_set","dp83867_config_init","dp83867_probe"],"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:*bccabb82-48a9-4fd1-a560-6eedacb07d5a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*260570ab-5007-4bde-a415-419fa2b782a0,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-workflow62rsm/series-workflow62rsm-build-action-3655290500/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-workflow62rsm/series-workflow62rsm-build-action-1707046173/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow62rsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83867_led_brightness_set","dp83867_led_hw_control_set","dp83867_led_polarity_set","dp83867_config_init","dp83867_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"8f1abd0d-bc91-4703-baa5-7eef20f825ea","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-09 01:07:00 +0000 UTC FinishedAt: 2026-09-09 01:07:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62rsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83867_led_brightness_set","dp83867_led_hw_control_set","dp83867_led_polarity_set","dp83867_config_init","dp83867_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"8f1abd0d-bc91-4703-baa5-7eef20f825ea","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-09 01:07:00 +0000 UTC FinishedAt: 2026-09-09 01:07:05 +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":["dp83867_led_brightness_set","dp83867_led_hw_control_set","dp83867_led_polarity_set","dp83867_config_init","dp83867_probe"],"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-workflow62rsm/series-workflow62rsm-convert-artifact-3397367174/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow62rsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83867_led_brightness_set","dp83867_led_hw_control_set","dp83867_led_polarity_set","dp83867_config_init","dp83867_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"8f1abd0d-bc91-4703-baa5-7eef20f825ea","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-09 01:07:00 +0000 UTC FinishedAt: 2026-09-09 01:07:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62rsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83867_led_brightness_set","dp83867_led_hw_control_set","dp83867_led_polarity_set","dp83867_config_init","dp83867_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"8f1abd0d-bc91-4703-baa5-7eef20f825ea","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-09 01:07:00 +0000 UTC FinishedAt: 2026-09-09 01:07:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62rsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83867_led_brightness_set","dp83867_led_hw_control_set","dp83867_led_polarity_set","dp83867_config_init","dp83867_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"8f1abd0d-bc91-4703-baa5-7eef20f825ea","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-09 01:07:00 +0000 UTC FinishedAt: 2026-09-09 01:07:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62rsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83867_led_brightness_set","dp83867_led_hw_control_set","dp83867_led_polarity_set","dp83867_config_init","dp83867_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"8f1abd0d-bc91-4703-baa5-7eef20f825ea","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-09 01:07:10 +0000 UTC FinishedAt: 2026-09-09 02:05:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62rsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83867_led_brightness_set","dp83867_led_hw_control_set","dp83867_led_polarity_set","dp83867_config_init","dp83867_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6d61fe4c19cf448e5cba6d8767b4e6966f58606","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLIB","DP83867_PHY"],"series_id":"8f1abd0d-bc91-4703-baa5-7eef20f825ea","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-09 01:07:10 +0000 UTC FinishedAt: 2026-09-09 02:05:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*bccabb82-48a9-4fd1-a560-6eedacb07d5a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*260570ab-5007-4bde-a415-419fa2b782a0,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-workflow62rsm/series-workflow62rsm-build-action-3655290500/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-workflow62rsm/series-workflow62rsm-build-action-1707046173/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-workflow62rsm/series-workflow62rsm-convert-artifact-3397367174/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,}