Name: series-workflow45wjk Phase: Succeeded StartedAt: 2026-09-08 13:03:05 +0000 UTC FinishedAt: 2026-09-08 14:46:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45wjk[0] Phase: Succeeded StartedAt: 2026-09-08 13:03:05 +0000 UTC FinishedAt: 2026-09-08 13:06:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45wjk[0].run-triage Phase: Succeeded StartedAt: 2026-09-08 13:03:05 +0000 UTC FinishedAt: 2026-09-08 13:06:26 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "df2908090cda368b01ff43709f51890076c56157", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETDEVICES", "PHYLIB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "df2908090cda368b01ff43709f51890076c56157", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETDEVICES", "PHYLIB" ], "series_id": "5ed69443-800e-46ba-b4f3-bb7fce04a97c" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "phy_detach", "phy_disconnect", "phy_attach_direct" ], "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+CgkJCTx0ZD4yMDI2LzA5LzA4IDEzOjA1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVERFVklDRVMmIzM0OywKICAgICYjMzQ7UEhZTElCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGh5X2RldGFjaCYjMzQ7LAogICAgJiMzNDtwaHlfZGlzY29ubmVjdCYjMzQ7LAogICAgJiMzNDtwaHlfYXR0YWNoX2RpcmVjdCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGFuIFJDVSBsb2NrZGVwIGNoZWNrIGluIGBwaHlfZGV0YWNoKClgIGJ5IHJlcGxhY2luZyBgcnRubF9kZXJlZmVyZW5jZShkZXYtXHUwMDNlaHdwcm92KWAgd2l0aCBgcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChkZXYtXHUwMDNlaHdwcm92LCBsb2NrZGVwX3J0bmxfaXNfaGVsZCgpIHx8IGRldi1cdTAwM2VyZWdfc3RhdGUgIT0gTkVUUkVHX1JFR0lTVEVSRUQpYCB0byBwcmV2ZW50IGxvY2tkZXAgd2FybmluZ3MgZHVyaW5nIGVhcmx5IHByb2JlIGVycm9yIGNsZWFudXAgd2hlbiBSVE5MIGlzIG5vdCBoZWxkLlxuXG5UaGlzIGNoYW5nZSBpcyBwdXJlbHkgYSBsb2NrZGVwIGFzc2VydGlvbiBhZGp1c3RtZW50IGluIFJDVSBwb2ludGVyIGRlcmVmZXJlbmNpbmcuIEl0IGRvZXMgbm90IGludHJvZHVjZSBuZXcgYWxsb2NhdGlvbnMsIGRhdGEgY29waWVzIHRvIHVzZXJzcGFjZSwgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIFN0YW5kYXJkIEtBU0FOL0xPQ0tERVAgYnVpbGRzIGFyZSBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSBsb2NraW5nIG9yIG1lbW9yeSBzYWZldHkgaXNzdWVzIGhlcmUsIGFuZCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIHJlcXVpcmluZyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NrZGVwL1JDVSBwcm90ZWN0aW9uIGFzc2VydGlvbiBvbiBkZXYtXHUwMDNlaHdwcm92IHdpdGhpbiBwaHlfZGV0YWNoKCkgdG8gYXZvaWQgZmFsc2UgcG9zaXRpdmUgbG9ja2RlcCB3YXJuaW5ncyB3aGVuIGNsZWFuaW5nIHVwIG9uIHByb2JlIGZhaWx1cmUgYmVmb3JlIG5ldF9kZXZpY2UgcmVnaXN0cmF0aW9uLiBwaHlfZGV0YWNoKCkgYW5kIGl0cyBjYWxsZXJzIChzdWNoIGFzIHBoeV9kaXNjb25uZWN0KCkgYW5kIHBoeV9hdHRhY2hfZGlyZWN0KCkpIGFyZSByZWFjaGFibGUgdGhyb3VnaCBuZXR3b3JrIGRldmljZSBsaWZlY3ljbGUgYW5kIG5ldGxpbmsvc29ja2V0IGNvbmZpZ3VyYXRpb24gb3BlcmF0aW9ucyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTM6MDU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBhMGYyYTYwNDQ0OGVjYWQ1YjU0ZmViYzBiZjUzYzEwNmQ4N2ZlNTQ0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgOCAxMzowNTowMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuaW5kZXggOTRiMmU4NWUwMGEzNy4uYWMwOTk0M2UxMDBmYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbkBAIC0xOTM5LDkgJiM0MzsxOTM5LDEzIEBAIHZvaWQgcGh5X2RldGFjaChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0XHRzdHJ1Y3QgaHd0c3RhbXBfcHJvdmlkZXIgKmh3cHJvdjtcbiBcbiBcdFx0LyogaHdwcm92IG1heSB0ZWNobmljYWxseSBiZSBwcm90ZWN0ZWQgYnkgb3BzIGxvY2sgYnV0XG4tXHRcdCAqIG5vdCBmb3IgZGV2aWNlcyB3aXRoIGEgcGh5ZGV2LCBzZWUgcGh5X2xpbmtfdG9wb19hZGRfcGh5KClcbiYjNDM7XHRcdCAqIG5vdCBmb3IgZGV2aWNlcyB3aXRoIGEgcGh5ZGV2LCBzZWUgcGh5X2xpbmtfdG9wb19hZGRfcGh5KCkuXG4mIzQzO1x0XHQgKiBSVE5MIGlzIG5vdCBoZWxkIHdoZW4gY2xlYW5pbmcgdXAgb24gcHJvYmUgZmFpbHVyZSBiZWZvcmVcbiYjNDM7XHRcdCAqIGRldmljZSByZWdpc3RyYXRpb24uXG4gXHRcdCAqL1xuLVx0XHRod3Byb3YgPSBydG5sX2RlcmVmZXJlbmNlKGRldi1cdTAwM2Vod3Byb3YpO1xuJiM0MztcdFx0aHdwcm92ID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChkZXYtXHUwMDNlaHdwcm92LFxuJiM0MztcdFx0XHRcdFx0XHQgICBsb2NrZGVwX3J0bmxfaXNfaGVsZCgpIHx8XG4mIzQzO1x0XHRcdFx0XHRcdCAgIGRldi1cdTAwM2VyZWdfc3RhdGUgIT0gTkVUUkVHX1JFR0lTVEVSRUQpO1xuIFx0XHQvKiBEaXNhYmxlIHRpbWVzdGFtcCBpZiBpdCBpcyB0aGUgb25lIHNlbGVjdGVkICovXG4gXHRcdGlmIChod3Byb3YgXHUwMDI2XHUwMDI2IGh3cHJvdi1cdTAwM2VwaHlkZXYgPT0gcGh5ZGV2KSB7XG4gXHRcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKGRldi1cdTAwM2Vod3Byb3YsIE5VTEwpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDEzOjA1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVERFVklDRVMmIzM0OywKICAgICYjMzQ7UEhZTElCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGh5X2RldGFjaCYjMzQ7LAogICAgJiMzNDtwaHlfZGlzY29ubmVjdCYjMzQ7LAogICAgJiMzNDtwaHlfYXR0YWNoX2RpcmVjdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2RlcC9SQ1UgcHJvdGVjdGlvbiBhc3NlcnRpb24gb24gZGV2LVx1MDAzZWh3cHJvdiB3aXRoaW4gcGh5X2RldGFjaCgpIHRvIGF2b2lkIGZhbHNlIHBvc2l0aXZlIGxvY2tkZXAgd2FybmluZ3Mgd2hlbiBjbGVhbmluZyB1cCBvbiBwcm9iZSBmYWlsdXJlIGJlZm9yZSBuZXRfZGV2aWNlIHJlZ2lzdHJhdGlvbi4gcGh5X2RldGFjaCgpIGFuZCBpdHMgY2FsbGVycyAoc3VjaCBhcyBwaHlfZGlzY29ubmVjdCgpIGFuZCBwaHlfYXR0YWNoX2RpcmVjdCgpKSBhcmUgcmVhY2hhYmxlIHRocm91Z2ggbmV0d29yayBkZXZpY2UgbGlmZWN5Y2xlIGFuZCBuZXRsaW5rL3NvY2tldCBjb25maWd1cmF0aW9uIG9wZXJhdGlvbnMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTBmMmE2MDQ0NDhlY2FkNWI1NGZlYmMwYmY1M2MxMDZkODdmZTU0NApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgU2VwIDggMTM6MDU6MDIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYwppbmRleCA5NGIyZTg1ZTAwYTM3Li5hYzA5OTQzZTEwMGZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMKQEAgLTE5MzksOSAmIzQzOzE5MzksMTMgQEAgdm9pZCBwaHlfZGV0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiAJCXN0cnVjdCBod3RzdGFtcF9wcm92aWRlciAqaHdwcm92OwogCiAJCS8qIGh3cHJvdiBtYXkgdGVjaG5pY2FsbHkgYmUgcHJvdGVjdGVkIGJ5IG9wcyBsb2NrIGJ1dAotCQkgKiBub3QgZm9yIGRldmljZXMgd2l0aCBhIHBoeWRldiwgc2VlIHBoeV9saW5rX3RvcG9fYWRkX3BoeSgpCiYjNDM7CQkgKiBub3QgZm9yIGRldmljZXMgd2l0aCBhIHBoeWRldiwgc2VlIHBoeV9saW5rX3RvcG9fYWRkX3BoeSgpLgomIzQzOwkJICogUlROTCBpcyBub3QgaGVsZCB3aGVuIGNsZWFuaW5nIHVwIG9uIHByb2JlIGZhaWx1cmUgYmVmb3JlCiYjNDM7CQkgKiBkZXZpY2UgcmVnaXN0cmF0aW9uLgogCQkgKi8KLQkJaHdwcm92ID0gcnRubF9kZXJlZmVyZW5jZShkZXYtJmd0O2h3cHJvdik7CiYjNDM7CQlod3Byb3YgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGRldi0mZ3Q7aHdwcm92LAomIzQzOwkJCQkJCSAgIGxvY2tkZXBfcnRubF9pc19oZWxkKCkgfHwKJiM0MzsJCQkJCQkgICBkZXYtJmd0O3JlZ19zdGF0ZSAhPSBORVRSRUdfUkVHSVNURVJFRCk7CiAJCS8qIERpc2FibGUgdGltZXN0YW1wIGlmIGl0IGlzIHRoZSBvbmUgc2VsZWN0ZWQgKi8KIAkJaWYgKGh3cHJvdiAmYW1wOyZhbXA7IGh3cHJvdi0mZ3Q7cGh5ZGV2ID09IHBoeWRldikgewogCQkJcmN1X2Fzc2lnbl9wb2ludGVyKGRldi0mZ3Q7aHdwcm92LCBOVUxMKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTM6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAwMQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDQxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQSFkgRGV2aWNlIERldGFjaG1lbnQgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29tbWl0IHJlbGF0ZWQgdG8gYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBwaHlfZGV0YWNoYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRpdmUgaW50byB0aGUgY29kZSBhbmQgdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyBoZXJlIHdpdGggdGhlIGhhcmR3YXJlIHRpbWVzdGFtcCBwcm92aWRlciAoYGh3cHJvdmApLiBJIG5lZWQgdG8gZ3Jhc3Agd2h5IHRoZXJlJiMzOTtzIGEgY2hhbmdlIHJlbGF0ZWQgdG8gaG93IHdlJiMzOTtyZSBhY2Nlc3NpbmcgdGhpcyBgaHdwcm92YCBzdHJ1Y3R1cmUsIHBhcnRpY3VsYXJseSBpbiB0aGUgY29udGV4dCBvZiBkZXZpY2UgZGV0YWNobWVudC4KClRoZSBjb21tZW50IG1lbnRpb25zIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIGludm9sdmluZyBgcGh5X2xpbmtfdG9wb19hZGRfcGh5KClgLCBhbmQgdGhhdCBSVE5MIGlzbiYjMzk7dCBhbHdheXMgaGVsZCwgZXNwZWNpYWxseSBkdXJpbmcgcHJvYmUgZmFpbHVyZXMgYmVmb3JlIGRldmljZSByZWdpc3RyYXRpb24uIFRoYXQmIzM5O3MgYSByZWQgZmxhZy4gSSBrbm93IHRoYXQgaWYgYGh3cHJvdmAgaXNuJiMzOTt0IGhhbmRsZWQgY29ycmVjdGx5IGR1cmluZyB0aGVzZSBzY2VuYXJpb3MsIGl0IGNhbiBsZWFkIHRvIG1lbW9yeSBjb3JydXB0aW9uIG9yIG90aGVyIG5hc3R5IGlzc3Vlcy4gVGhpcyBgcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZGAgd2l0aCBhZGRlZCBwcm90ZWN0aW9uIGlzIGxpa2VseSB0aGUgZml4LgoKTXkgaW1tZWRpYXRlIHBsYW4gaXMgdG8gdXNlIHRvb2xzLCBgZ3JlcHBlcmAgb3IgYHJlYWQtZmlsZWAsIHRvIGNoZWNrIHRoZSBjb2RlIGl0c2VsZiwgdG8gdmVyaWZ5IHRoZSBjb250ZXh0IG9mIGBwaHlfZGV0YWNoYCBhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byBgZGV2LSZndDtod3Byb3ZgLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIHRoZSBhZGRlZCBwcm90ZWN0aW9uIGBsb2NrZGVwX3J0bmxfaXNfaGVsZCgpIHx8IGRldi0mZ3Q7cmVnX3N0YXRlICE9IE5FVFJFR19SRUdJU1RFUkVEYCBpcyBzdWZmaWNpZW50IGZvciBhbGwgdGhlIHBvc3NpYmxlIGNvbmRpdGlvbnMgYW5kIHRoYXQgaXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBuZXcgcmVncmVzc2lvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHdlIG1pZ2h0IGJlIGFjY2Vzc2luZyBgZGV2LSZndDtod3Byb3ZgIHdpdGhvdXQgUlROTCBoZWxkLiBBIGdvb2QgdW5kZXJzdGFuZGluZyBvZiB0aGUgbmV0ZGV2aWNlIHJlZ2lzdHJhdGlvbiBzdGF0ZSBpcyBlc3NlbnRpYWwgaGVyZS4gU3BlY2lmaWNhbGx5LCBgTkVUUkVHX1JFR0lTVEVSRURgIGFuZCByZWxhdGVkIHN0YXRlcy4gSSBhbHNvIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIFBIWSBkZXZpY2UgaW50ZXJhY3RzIHdpdGggdGhlIG5ldHdvcmtpbmcgc3RhY2sgYW5kIHRoZSBoYXJkd2FyZSB0aW1lc3RhbXBpbmcgY29uZmlndXJhdGlvbiB0byBldmFsdWF0ZSB0aGUgbG9naWMmIzM5O3MgY29ycmVjdG5lc3MgYW5kIGltcGFjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxMzowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxOTI1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE5MjU6XHRcdH1cbjE5MjY6XHRcbjE5Mjc6XHRcdGlmIChwaHlkZXYtXHUwMDNlc3lzZnNfbGlua3MpIHtcbjE5Mjg6XHRcdFx0aWYgKGRldilcbjE5Mjk6XHRcdFx0XHRzeXNmc19yZW1vdmVfbGluayhcdTAwMjZkZXYtXHUwMDNlZGV2LmtvYmosIFwmIzM0O3BoeWRldlwmIzM0Oyk7XG4xOTMwOlx0XHRcdHN5c2ZzX3JlbW92ZV9saW5rKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldi5rb2JqLCBcJiMzNDthdHRhY2hlZF9kZXZcJiMzNDspO1xuMTkzMTpcdFx0fVxuMTkzMjpcdFxuMTkzMzpcdFx0aWYgKCFwaHlkZXYtXHUwMDNlYXR0YWNoZWRfZGV2KVxuMTkzNDpcdFx0XHRzeXNmc19yZW1vdmVfZmlsZShcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYua29iaixcbjE5MzU6XHRcdFx0XHRcdCAgXHUwMDI2ZGV2X2F0dHJfcGh5X3N0YW5kYWxvbmUuYXR0cik7XG4xOTM2Olx0XG4xOTM3Olx0XHRwaHlfc3VzcGVuZChwaHlkZXYpO1xuMTkzODpcdFx0aWYgKGRldikge1xuMTkzOTpcdFx0XHRzdHJ1Y3QgaHd0c3RhbXBfcHJvdmlkZXIgKmh3cHJvdjtcbjE5NDA6XHRcbjE5NDE6XHRcdFx0LyogaHdwcm92IG1heSB0ZWNobmljYWxseSBiZSBwcm90ZWN0ZWQgYnkgb3BzIGxvY2sgYnV0XG4xOTQyOlx0XHRcdCAqIG5vdCBmb3IgZGV2aWNlcyB3aXRoIGEgcGh5ZGV2LCBzZWUgcGh5X2xpbmtfdG9wb19hZGRfcGh5KCkuXG4xOTQzOlx0XHRcdCAqIFJUTkwgaXMgbm90IGhlbGQgd2hlbiBjbGVhbmluZyB1cCBvbiBwcm9iZSBmYWlsdXJlIGJlZm9yZVxuMTk0NDpcdFx0XHQgKiBkZXZpY2UgcmVnaXN0cmF0aW9uLlxuMTk0NTpcdFx0XHQgKi9cbjE5NDY6XHRcdFx0aHdwcm92ID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChkZXYtXHUwMDNlaHdwcm92LFxuMTk0NzpcdFx0XHRcdFx0XHRcdCAgIGxvY2tkZXBfcnRubF9pc19oZWxkKCkgfHxcbjE5NDg6XHRcdFx0XHRcdFx0XHQgICBkZXYtXHUwMDNlcmVnX3N0YXRlICE9IE5FVFJFR19SRUdJU1RFUkVEKTtcbjE5NDk6XHRcdFx0LyogRGlzYWJsZSB0aW1lc3RhbXAgaWYgaXQgaXMgdGhlIG9uZSBzZWxlY3RlZCAqL1xuMTk1MDpcdFx0XHRpZiAoaHdwcm92IFx1MDAyNlx1MDAyNiBod3Byb3YtXHUwMDNlcGh5ZGV2ID09IHBoeWRldikge1xuMTk1MTpcdFx0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihkZXYtXHUwMDNlaHdwcm92LCBOVUxMKTtcbjE5NTI6XHRcdFx0XHRrZnJlZV9yY3UoaHdwcm92LCByY3VfaGVhZCk7XG4xOTUzOlx0XHRcdH1cbjE5NTQ6XHRcbjE5NTU6XHRcdFx0cGh5ZGV2LVx1MDAzZWF0dGFjaGVkX2Rldi1cdTAwM2VwaHlkZXYgPSBOVUxMO1xuMTk1NjpcdFx0XHRwaHlkZXYtXHUwMDNlYXR0YWNoZWRfZGV2ID0gTlVMTDtcbjE5NTc6XHRcdFx0cGh5X2xpbmtfdG9wb19kZWxfcGh5KGRldiwgcGh5ZGV2KTtcbjE5NTg6XHRcdH1cbjE5NTk6XHRcbjE5NjA6XHRcdHBoeWRldi1cdTAwM2VwaHlfbGlua19jaGFuZ2UgPSBOVUxMO1xuMTk2MTpcdFx0cGh5ZGV2LVx1MDAzZXBoeWxpbmsgPSBOVUxMO1xuMTk2MjpcdFxuMTk2MzpcdFx0aWYgKHBoeWRldi1cdTAwM2VtZGlvLmRldi5kcml2ZXIpXG4xOTY0Olx0XHRcdG1vZHVsZV9wdXQocGh5ZGV2LVx1MDAzZW1kaW8uZGV2LmRyaXZlci1cdTAwM2Vvd25lcik7XG4xOTY1Olx0XG4xOTY2Olx0XHQvKiBJZiB0aGUgZGV2aWNlIGhhZCBubyBzcGVjaWZpYyBkcml2ZXIgYmVmb3JlIChpLmUuIC0gaXRcbjE5Njc6XHRcdCAqIHdhcyB1c2luZyB0aGUgZ2VuZXJpYyBkcml2ZXIpLCB3ZSB1bmJpbmQgdGhlIGRldmljZVxuMTk2ODpcdFx0ICogZnJvbSB0aGUgZ2VuZXJpYyBkcml2ZXIgc28gdGhhdCB0aGVyZSYjMzk7cyBhIGNoYW5jZSBhXG4xOTY5Olx0XHQgKiByZWFsIGRyaXZlciBjb3VsZCBiZSBsb2FkZWRcbjE5NzA6XHRcdCAqL1xuMTk3MTpcdFx0aWYgKHBoeWRldi1cdTAwM2Vpc19nZW5waHlfZHJpdmVuKSB7XG4xOTcyOlx0XHRcdGRldmljZV9yZWxlYXNlX2RyaXZlcihcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYpO1xuMTk3MzpcdFx0XHRwaHlkZXYtXHUwMDNlaXNfZ2VucGh5X2RyaXZlbiA9IDA7XG4xOTc0Olx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTM6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDYyOAoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyBQSFkgRGV0YWNobWVudCBhbmQgRGV2aWNlIFVzYWdlKioKCk9rYXksIHNvIEkgbmVlZCB0byBkaWcgaW50byB0aGUgYHBoeV9kZXRhY2hgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiBpdHMgY2FsbHMuIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucyBmb3IgUEhZIGRldmljZSBtYW5hZ2VtZW50IGFuZCBob3cgdGhlc2UgcGh5c2ljYWwgbGF5ZXIgZGV2aWNlcyBhcmUgYWN0dWFsbHkgKnVzZWQqIHdpdGhpbiB0aGUgc3lzdGVtLgoKSSB3YW50IHRvIHNlZSB0aGUgdmFyaW91cyBzY2VuYXJpb3Mgd2hlcmUgYSBQSFkgaXMgZGV0YWNoZWQg4oCTIGlzIGl0IGp1c3QgZHVyaW5nIGRyaXZlciB1bmxvYWQsIG9yIGFyZSB0aGVyZSBzaXR1YXRpb25zIHdoZXJlIGEgUEhZIGlzIGR5bmFtaWNhbGx5IGRpc2Nvbm5lY3RlZCwgcGVyaGFwcyBkdWUgdG8gaG90LXBsdWcgZXZlbnRzLCBwb3dlciBtYW5hZ2VtZW50LCBvciBzb21lIG90aGVyIGhhcmR3YXJlIGVycm9yIGNvbmRpdGlvbj8gVW5kZXJzdGFuZGluZyB0aGUgZGV0YWNoIHNjZW5hcmlvcyB3aWxsIGltbWVkaWF0ZWx5IHNob3cgaG93IHJlc2lsaWVudCB0aGUgUEhZIGRyaXZlciBpcy4KClRoZSByZWFsIG1lYXQgd2lsbCBiZSBmaWd1cmluZyBvdXQgKmhvdyogdGhlIFBIWXMgYXJlIGVtcGxveWVkIGJlZm9yZSBkZXRhY2htZW50LiBJIG5lZWQgdG8gdHJhY2UgdGhlIHJlc291cmNlIGFsbG9jYXRpb24sIGRhdGEgdHJhbnNmZXIgaW5pdGlhdGlvbiwgYW5kIHNpZ25hbCBwcm9jZXNzaW5nIHdvcmtmbG93cyB0aGF0IGhhcHBlbiBhcm91bmQgdGhlIHVzZSBvZiB0aGUgUEhZLiBJJiMzOTtsbCBmb2N1cyBvbiBob3cgdGhlIFBIWSBhYnN0cmFjdGlvbiBsYXllciBpbnRlcmFjdHMgd2l0aCB0aGUgY29yZSBuZXR3b3JraW5nIHN0YWNrIG9yIHdoYXRldmVyIG90aGVyIHN1YnN5c3RlbXMgYXJlIHVzaW5nIGl0LiBBbnkgaW5zaWdodHMgaW50byBob3cgdGhlIFBIWSByZXNvdXJjZXMgYXJlIHJlbGVhc2VkIGR1cmluZyB0aGUgZGV0YWNoIHByb2Nlc3MgYXJlIGdvaW5nIHRvIGJlIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmRpbmcgZHJpdmVyIGJlaGF2aW9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDEzOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeV9kZXRhY2gmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYz04MDM9c3RhdGljIHZvaWQgeGdiZV9waHlfZnJlZV9waHlfZGV2aWNlKHN0cnVjdCB4Z2JlX3Bydl9kYXRhICpwZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTgwNy1cdGlmIChwaHlfZGF0YS1cdTAwM2VwaHlkZXYpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmM6ODA4Olx0XHRwaHlfZGV0YWNoKHBoeV9kYXRhLVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTgwOS1cdFx0cGh5X2RldmljZV9yZW1vdmUocGh5X2RhdGEtXHUwMDNlcGh5ZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21nZW5ldC5jPTE3MDk9c3RhdGljIGludCBiY21nZW5ldF9wb3dlcl9kb3duKHN0cnVjdCBiY21nZW5ldF9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbWdlbmV0LmMtMTcxNi1cdGNhc2UgR0VORVRfUE9XRVJfQ0FCTEVfU0VOU0U6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21nZW5ldC5jOjE3MTc6XHRcdHBoeV9kZXRhY2gocHJpdi1cdTAwM2VkZXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbWdlbmV0LmMtMTcxOC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM9Mjk5PUVYUE9SVF9TWU1CT0wob2ZfcGh5X2ZpbmRfZGV2aWNlKTtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0zMTAtICogc3RydWN0IGRldmljZSByZWZjb3VudCBpbmNyZW1lbnRlZCBieSBvbmUsIG9yIE5VTEwgb24gZmFpbHVyZS4gVGhlXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzozMTE6ICogcmVmY291bnQgbXVzdCBiZSBkcm9wcGVkIGJ5IGNhbGxpbmcgcGh5X2Rpc2Nvbm5lY3QoKSBvciBwaHlfZGV0YWNoKCkuXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0zMTItICovXG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM9MzMzPUVYUE9SVF9TWU1CT0wob2ZfcGh5X2Nvbm5lY3QpO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTM0My0gKiBzdHJ1Y3QgZGV2aWNlIHJlZmNvdW50IGluY3JlbWVudGVkIGJ5IG9uZSwgb3IgTlVMTCBvbiBmYWlsdXJlLiBUaGVcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjM0NDogKiByZWZjb3VudCBtdXN0IGJlIGRyb3BwZWQgYnkgY2FsbGluZyBwaHlfZGlzY29ubmVjdCgpIG9yIHBoeV9kZXRhY2goKS5cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTM0NS0gKi9cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LmM9MTMxOD1FWFBPUlRfU1lNQk9MX0dQTChwaHlfc3RhcnRfbWFjaGluZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTEzMjUtICogICBzdGF0ZSB0byBVUCAodW5sZXNzIGl0IHdhc24mIzM5O3QgdXAgeWV0KS4gVGhpcyBmdW5jdGlvbiBtdXN0IGJlXG5kcml2ZXJzL25ldC9waHkvcGh5LmM6MTMyNjogKiAgIGNhbGxlZCBCRUZPUkUgcGh5X2RldGFjaC5cbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0xMzI3LSAqL1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MzAxPXN0YXRpYyBib29sIG1kaW9fYnVzX3BoeV9tYXlfc3VzcGVuZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzE3LVx0ICogc3VzcGVuZGVkIGFzIHBhcnQgb2YgYSBwcmlvciBjYWxsIHRvIHBoeV9kaXNjb25uZWN0KCkgLVx1MDAzZVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzozMTg6XHQgKiBwaHlfZGV0YWNoKCkgLVx1MDAzZSBwaHlfc3VzcGVuZCgpIGJlY2F1c2UgdGhlIHBhcmVudCBuZXRkZXYgbWlnaHQgYmUgdGhlXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTMxOS1cdCAqIE1ESU8gYnVzIGRyaXZlciBhbmQgY2xvY2sgZ2F0ZWQgYXQgdGhpcyBwb2ludC5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTEyOTM9dm9pZCBwaHlfZGlzY29ubmVjdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTMwMi1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTMwMzpcdHBoeV9kZXRhY2gocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTMwNC19XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xNzUyPWludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTgyNC1cdCAqIHJlYWR5LiBPbmNlIHdlIGRvIHRoYXQgd2Ugc3RpbGwgbmVlZCB0byBrZWVwIHRyYWNrIG9mIHdoZXRoZXJcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTgyNTpcdCAqIGxpbmtzIHdlcmUgc3VjY2Vzc2Z1bGx5IHNldCB1cCBvciBub3QgZm9yIHBoeV9kZXRhY2goKSB0b1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xODI2LVx0ICogcmVtb3ZlIHRoZW0gYWNjb3JkaW5nbHkuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xODkyLWVycm9yOlxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxODkzOlx0LyogcGh5X2RldGFjaCgpIGRvZXMgYWxsIG9mIHRoZSBjbGVhbnVwIGJlbG93ICovXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjE4OTQ6XHRwaHlfZGV0YWNoKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE4OTUtXHRyZXR1cm4gZXJyO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTkwNz1FWFBPUlRfU1lNQk9MKHBoeV9hdHRhY2hfZGlyZWN0KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE5MDktLyoqXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjE5MTA6ICogcGh5X2RldGFjaCAtIGRldGFjaCBhIFBIWSBkZXZpY2UgZnJvbSBpdHMgbmV0d29yayBkZXZpY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTkxMS0gKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3Rcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE5MTUtICovXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjE5MTY6dm9pZCBwaHlfZGV0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE5MTcte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTk5MC19XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjE5OTE6RVhQT1JUX1NZTUJPTChwaHlfZGV0YWNoKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTk5Mi1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2xpbmtfdG9wb2xvZ3kuYz0zMT1pbnQgcGh5X2xpbmtfdG9wb19hZGRfcGh5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9saW5rX3RvcG9sb2d5LmMtNDItXHQgKiAgLSBldGhubF9yZXFfZ2V0X3BoeWRldigpXG5kcml2ZXJzL25ldC9waHkvcGh5X2xpbmtfdG9wb2xvZ3kuYzo0MzpcdCAqICAtIHBoeV9kZXRhY2goKVxuZHJpdmVycy9uZXQvcGh5L3BoeV9saW5rX3RvcG9sb2d5LmMtNDQtXHQgKi9cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyMzU9aW50IHBoeWxpbmtfY29ubmVjdF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI1MC1cdGlmIChyZXQpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyNTE6XHRcdHBoeV9kZXRhY2gocGh5KTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI1Mi1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyODc9aW50IHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0KHN0cnVjdCBwaHlsaW5rICpwbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzMjgtXHRpZiAocmV0KVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzI5Olx0XHRwaHlfZGV0YWNoKHBoeV9kZXYpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzMwLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzcwMD1zdGF0aWMgaW50IHBoeWxpbmtfc2ZwX2NvbmZpZ19waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzczOS1cdGlmIChyZXQgXHUwMDNjIDApIHtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mzc0MDpcdFx0cGh5X2RldGFjaChwaHkpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNzQxLVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9zZnAuYz0yMDkwPXN0YXRpYyB2b2lkIHNmcF9zbV9tb2RfbmV4dChzdHJ1Y3Qgc2ZwICpzZnAsIHVuc2lnbmVkIGludCBzdGF0ZSxcbi0tXG5kcml2ZXJzL25ldC9waHkvc2ZwLmMtMjA5Ni1cbmRyaXZlcnMvbmV0L3BoeS9zZnAuYzoyMDk3OnN0YXRpYyB2b2lkIHNmcF9zbV9waHlfZGV0YWNoKHN0cnVjdCBzZnAgKnNmcClcbmRyaXZlcnMvbmV0L3BoeS9zZnAuYy0yMDk4LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvc2ZwLmM9Mjg1ND1zdGF0aWMgdm9pZCBzZnBfc21fbWFpbihzdHJ1Y3Qgc2ZwICpzZnAsIHVuc2lnbmVkIGludCBldmVudClcbi0tXG5kcml2ZXJzL25ldC9waHkvc2ZwLmMtMjg2OC1cdFx0aWYgKHNmcC1cdTAwM2Vtb2RfcGh5KVxuZHJpdmVycy9uZXQvcGh5L3NmcC5jOjI4Njk6XHRcdFx0c2ZwX3NtX3BoeV9kZXRhY2goc2ZwKTtcbmRyaXZlcnMvbmV0L3BoeS9zZnAuYy0yODcwLVx0XHRpZiAoc2ZwLVx1MDAzZWkyY19taWkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYz00Nzc3PXN0YXRpYyB2b2lkIGJyY21zX2JfZGV0YWNoKHN0cnVjdCBicmNtc19jX2luZm8gKndsYylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jLTQ3ODgtXHRcdFx0LyogRGV0YWNoIHRoaXMgYmFuZCYjMzk7cyBwaHkgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmM6NDc4OTpcdFx0XHR3bGNfcGh5X2RldGFjaChiYW5kLVx1MDAzZXBpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmMtNDc5MC1cdFx0XHRiYW5kLVx1MDAzZXBpID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvcGh5L3BoeV9jbW4uYz0zOTc9d2xjX3BoeV9hdHRhY2goc3RydWN0IHNoYXJlZF9waHkgKnNoLCBzdHJ1Y3QgYmNtYV9kZXZpY2UgKmQxMWNvcmUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3BoeS9waHlfY21uLmMtNTUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3BoeS9waHlfY21uLmM6NTU0OnZvaWQgd2xjX3BoeV9kZXRhY2goc3RydWN0IGJyY21zX3BoeV9wdWIgKnBpaClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9waHkvcGh5X2Ntbi5jLTU1NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3BoeS9waHlfaGFsLmg9MTY3PXN0cnVjdCBicmNtc19waHlfcHViICp3bGNfcGh5X2F0dGFjaChzdHJ1Y3Qgc2hhcmVkX3BoeSAqc2gsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3BoeS9waHlfaGFsLmgtMTY5LVx0XHRcdFx0ICAgICBzdHJ1Y3Qgd2lwaHkgKndpcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9waHkvcGh5X2hhbC5oOjE3MDp2b2lkIHdsY19waHlfZGV0YWNoKHN0cnVjdCBicmNtc19waHlfcHViICpwcGkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3BoeS9waHlfaGFsLmgtMTcxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9waHkvcGh5X2ludC5oPTk0Mj1ib29sIHdsY19waHlfYXR0YWNoX2xjbnBoeShzdHJ1Y3QgYnJjbXNfcGh5ICpwaSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvcGh5L3BoeV9pbnQuaC05NDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvcGh5L3BoeV9pbnQuaDo5NDQ6dm9pZCB3bGNfcGh5X2RldGFjaF9sY25waHkoc3RydWN0IGJyY21zX3BoeSAqcGkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3BoeS9waHlfaW50LmgtOTQ1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9waHkvcGh5X2xjbi5jPTQ5MTQ9dm9pZCB3bGNfcGh5X2NoYW5zcGVjX3NldF9sY25waHkoc3RydWN0IGJyY21zX3BoeSAqcGksIHUxNiBjaGFuc3BlYylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvcGh5L3BoeV9sY24uYy00OTUyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3BoeS9waHlfbGNuLmM6NDk1Mzp2b2lkIHdsY19waHlfZGV0YWNoX2xjbnBoeShzdHJ1Y3QgYnJjbXNfcGh5ICpwaSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9waHkvcGh5X2xjbi5jLTQ5NTQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9waHkvcGh5X2xjbi5jPTQ5NTg9Ym9vbCB3bGNfcGh5X2F0dGFjaF9sY25waHkoc3RydWN0IGJyY21zX3BoeSAqcGkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3BoeS9waHlfbGNuLmMtNDk4My1cdHBpLVx1MDAzZXBpX2ZwdHIucmFkaW9sb2Z0Z2V0ID0gd2xjX2xjbnBoeV9nZXRfcmFkaW9fbG9mdDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9waHkvcGh5X2xjbi5jOjQ5ODQ6XHRwaS1cdTAwM2VwaV9mcHRyLmRldGFjaCA9IHdsY19waHlfZGV0YWNoX2xjbnBoeTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9waHkvcGh5X2xjbi5jLTQ5ODUtXG4tLVxuaW5jbHVkZS9saW51eC9waHkuaD0yMTc4PXZvaWQgcGh5X2Rpc2Nvbm5lY3Qoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG5pbmNsdWRlL2xpbnV4L3BoeS5oOjIxNzk6dm9pZCBwaHlfZGV0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuaW5jbHVkZS9saW51eC9waHkuaC0yMTgwLXZvaWQgcGh5X3N0YXJ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDEzOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgyMzMKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiA2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIFBIWSBEZXZpY2UgRGV0YWNobWVudCBpbiB0aGUgS2VybmVsKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBpbnRvIHRoZSBuZXR3b3JrIFBIWSBkZXZpY2UgY29kZSBhZ2Fpbi4gTGV0JiMzOTtzIHNlZS4uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGV0YWNobWVudCBwcm9jZXNzIGJldHRlci4gU3BlY2lmaWNhbGx5LCB3aGVyZSBhbmQgaG93IGBwaHlfZGV0YWNoYCBpcyB1c2VkLiBJIGFscmVhZHkga25vdyB0aGF0IGZ1bmN0aW9uIGlzIHNpdHRpbmcgaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLiBCdXQgd2hhdCYjMzk7cyB0aGUgd2hvbGUgcGljdHVyZT8KClNvLCBmaXJzdCB0aGluZ3MgZmlyc3QsIEkmIzM5O20gZ29pbmcgdG8gdHJhY2sgZG93biBldmVyeSBzaW5nbGUgY2FsbCB0byBib3RoIGBwaHlfZGlzY29ubmVjdGAgYW5kIGBwaHlfZGV0YWNoYCB0aHJvdWdob3V0IHRoZSBrZXJuZWwgc291cmNlLiBUaGF0JiMzOTtzIHRoZSBrZXkuIEtub3dpbmcgdGhlIGNhbGwgc2l0ZXMgd2lsbCBpbW1lZGlhdGVseSBnaXZlIG1lIHRoZSBjb250ZXh0LCBzaG93IG1lIHRoZSB2YXJpb3VzIHVzZSBjYXNlcywgYW5kIGdpdmUgbWUgYSBmZWVsIGZvciBob3cgdGhlc2UgZnVuY3Rpb25zIGZpdCBpbnRvIHRoZSBvdmVyYWxsIFBIWSBtYW5hZ2VtZW50IHNjaGVtZS4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgdHJpZ2dlcnMgdGhlc2UgZXZlbnRzIGFuZCB3aGF0IGVsc2UgaXMgaGFwcGVuaW5nIGFyb3VuZCB0aGVzZSBjYWxscy4gVGhhdCYjMzk7cyB0aGUgY3J1Y2lhbCBkYXRhLiBLbm93aW5nIHdoaWNoIGZ1bmN0aW9ucyBjYWxsIHRoZXNlIGFuZCBpbiB3aGF0IGNpcmN1bXN0YW5jZXMgd2lsbCBnaXZlIG1lIGEgaHVnZSBoZWFkIHN0YXJ0IGluIHVuZGVyc3RhbmRpbmcgdGhlIGJpZ2dlciBwaWN0dXJlLiBGcm9tIHRoZXJlLCBJIGNhbiBzdGFydCB0byB1bmRlcnN0YW5kIHRoZSBjb21wbGV0ZSBzZXF1ZW5jZSBvZiBldmVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTM6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5X2Rpc2Nvbm5lY3RcXCgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDc1MSBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdD03ND10aGlzIGRvY3VtZW50YXRpb24uXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdC0xMjktICAgICAgLSBwaHlsaW5rX2V0aHRvb2xfc2V0X3dvbChwcml2LVx1MDAzZXBoeWxpbmssIHdvbClcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3Q6MTMwOiAgICAqIC0gcGh5X2Rpc2Nvbm5lY3QocGh5ZGV2KVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdC0xMzEtICAgICAgLSBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5KHByaXYtXHUwMDNlcGh5bGluaylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmM9Njg4PXN0YXRpYyBib29sIGljbF90Y19waHlfY29ubmVjdChzdHJ1Y3QgaW50ZWxfdGNfcG9ydCAqdGMsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jLTcyOC0gKi9cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYzo3Mjk6c3RhdGljIHZvaWQgaWNsX3RjX3BoeV9kaXNjb25uZWN0KHN0cnVjdCBpbnRlbF90Y19wb3J0ICp0YylcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYy03MzAte1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYz05MDg9c3RhdGljIGJvb2wgYWRscF90Y19waHlfY29ubmVjdChzdHJ1Y3QgaW50ZWxfdGNfcG9ydCAqdGMsIGludCByZXF1aXJlZF9sYW5lcylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMtOTU5LVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jOjk2MDpzdGF0aWMgdm9pZCBhZGxwX3RjX3BoeV9kaXNjb25uZWN0KHN0cnVjdCBpbnRlbF90Y19wb3J0ICp0YylcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYy05NjEte1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYz0xMTk2PXN0YXRpYyBib29sIHhlbHBkcF90Y19waHlfY29ubmVjdChzdHJ1Y3QgaW50ZWxfdGNfcG9ydCAqdGMsIGludCByZXF1aXJlZF9sYW5lcylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMtMTIyNy1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYzoxMjI4OnN0YXRpYyB2b2lkIHhlbHBkcF90Y19waHlfZGlzY29ubmVjdChzdHJ1Y3QgaW50ZWxfdGNfcG9ydCAqdGMpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMtMTIyOS17XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jPTE0NzQ9c3RhdGljIHZvaWQgdGNfcGh5X2Nvbm5lY3Qoc3RydWN0IGludGVsX3RjX3BvcnQgKnRjLCBpbnQgcmVxdWlyZWRfbGFuZXMpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jLTE0OTItXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmM6MTQ5MzpzdGF0aWMgdm9pZCB0Y19waHlfZGlzY29ubmVjdChzdHJ1Y3QgaW50ZWxfdGNfcG9ydCAqdGMpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMtMTQ5NC17XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jPTE1MDg9c3RhdGljIHZvaWQgaW50ZWxfdGNfcG9ydF9yZXNldF9tb2RlKHN0cnVjdCBpbnRlbF90Y19wb3J0ICp0Yyxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMtMTUyNC1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYzoxNTI1Olx0dGNfcGh5X2Rpc2Nvbm5lY3QodGMpO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jLTE1MjYtXHRpZiAoIWZvcmNlX2Rpc2Nvbm5lY3QpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jPTE2NjQ9dm9pZCBpbnRlbF90Y19wb3J0X3Nhbml0aXplX21vZGUoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jLTE2ODUtXHRcdFx0XHQgICAgdGNfcG9ydF9tb2RlX25hbWUodGMtXHUwMDNlaW5pdF9tb2RlKSk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmM6MTY4NjpcdFx0dGNfcGh5X2Rpc2Nvbm5lY3QodGMpO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jLTE2ODctXHRcdF9faW50ZWxfdGNfcG9ydF9wdXRfbGluayh0Yyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmM9NDkxPXN0YXRpYyBpbnQgYXhfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jLTUyNy0gZmFpbGVkX2F4X2VpX29wZW46XG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYzo1Mjg6XHRwaHlfZGlzY29ubmVjdChkZXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jLTUyOS0gZmFpbGVkX21paV9wcm9iZTpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYz01NDA9c3RhdGljIGludCBheF9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jLTU1Mi1cdGF4X3BoeV9zd2l0Y2goZGV2LCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jOjU1MzpcdHBoeV9kaXNjb25uZWN0KGRldi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmMtNTU0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYz0xNDY1PXN0YXRpYyBpbnQgb3dsX2VtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmMtMTU3Mi1cdFx0bmV0aWZfbmFwaV9kZWwoXHUwMDI2cHJpdi1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYzoxNTczOlx0XHRwaHlfZGlzY29ubmVjdChuZXRkZXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYy0xNTc0LVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYz0xNTgwPXN0YXRpYyB2b2lkIG93bF9lbWFjX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYy0xNTg0LVx0bmV0aWZfbmFwaV9kZWwoXHUwMDI2cHJpdi1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYzoxNTg1Olx0cGh5X2Rpc2Nvbm5lY3QocHJpdi1cdTAwM2VuZXRkZXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYy0xNTg2LVx0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZwcml2LVx1MDAzZW1hY19yZXNldF90YXNrKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYz0xMjI4PXN0YXRpYyB2b2lkIGFkaW4xMTEwX2Rpc2Nvbm5lY3RfcGh5KHZvaWQgKmRhdGEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYy0xMjI5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jOjEyMzA6XHRwaHlfZGlzY29ubmVjdChkYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jLTEyMzEtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jPTY0NT1zdGF0aWMgdm9pZCBhZGluMTE0MF9waHlfcmVtb3ZlKHZvaWQgKmRhdGEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy02NDYte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmM6NjQ3Olx0cGh5X2Rpc2Nvbm5lY3QoZGF0YSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy02NDgtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FnZXJlL2V0MTMxeC5jPTMzMjY9c3RhdGljIHZvaWQgZXQxMzF4X3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmMtMzMzMi1cdG5ldGlmX25hcGlfZGVsKFx1MDAyNmFkYXB0ZXItXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYzozMzMzOlx0cGh5X2Rpc2Nvbm5lY3QobmV0ZGV2LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYy0zMzM0LVx0bWRpb2J1c191bnJlZ2lzdGVyKGFkYXB0ZXItXHUwMDNlbWlpX2J1cyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmM9MzkzMT1zdGF0aWMgaW50IGV0MTMxeF9wY2lfc2V0dXAoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmMtNDA2Ni1lcnJfcGh5X2Rpc2Nvbm5lY3Q6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYzo0MDY3Olx0cGh5X2Rpc2Nvbm5lY3QobmV0ZGV2LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYy00MDY4LWVycl9tZGlvX3VucmVnaXN0ZXI6XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxsd2lubmVyL3N1bjRpLWVtYWMuYz0xOTM9c3RhdGljIHZvaWQgZW1hY19tZGlvX3JlbW92ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxsd2lubmVyL3N1bjRpLWVtYWMuYy0xOTQte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxsd2lubmVyL3N1bjRpLWVtYWMuYzoxOTU6XHRwaHlfZGlzY29ubmVjdChkZXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsbHdpbm5lci9zdW40aS1lbWFjLmMtMTk2LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jPTg0PXZvaWQgeGdlX21kaW9fcmVtb3ZlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmMtODktXHRpZiAobmRldi1cdTAwM2VwaHlkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jOjkwOlx0XHRwaHlfZGlzY29ubmVjdChuZGV2LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jLTkxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM9OTM5PWludCB4Z2VuZV9lbmV0X21kaW9fY29uZmlnKHN0cnVjdCB4Z2VuZV9lbmV0X3BkYXRhICpwZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk3Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTczOnZvaWQgeGdlbmVfZW5ldF9waHlfZGlzY29ubmVjdChzdHJ1Y3QgeGdlbmVfZW5ldF9wZGF0YSAqcGRhdGEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk3NC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05NzctXHRpZiAobmRldi1cdTAwM2VwaHlkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjk3ODpcdFx0cGh5X2Rpc2Nvbm5lY3QobmRldi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05NzktfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM9OTgxPXZvaWQgeGdlbmVfZW5ldF9tZGlvX3JlbW92ZShzdHJ1Y3QgeGdlbmVfZW5ldF9wZGF0YSAqcGRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05ODUtXHRpZiAobmRldi1cdTAwM2VwaHlkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjk4NjpcdFx0cGh5X2Rpc2Nvbm5lY3QobmRldi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05ODctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuaD00Mjc9aW50IHhnZW5lX2VuZXRfcGh5X2Nvbm5lY3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuaDo0Mjg6dm9pZCB4Z2VuZV9lbmV0X3BoeV9kaXNjb25uZWN0KHN0cnVjdCB4Z2VuZV9lbmV0X3BkYXRhICpwZGF0YSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5oLTQyOS11MzIgeGdlbmVfZW5ldF9yZF9tYWMoc3RydWN0IHhnZW5lX2VuZXRfcGRhdGEgKnBkYXRhLCB1MzIgcmRfYWRkcik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfbWFpbi5jPTIwMTU9c3RhdGljIGludCB4Z2VuZV9lbmV0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfbWFpbi5jLTIxMDgtXHRpZiAocGRhdGEtXHUwMDNlbWRpb19kcml2ZXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9tYWluLmM6MjEwOTpcdFx0eGdlbmVfZW5ldF9waHlfZGlzY29ubmVjdChwZGF0YSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9tYWluLmMtMjExMC1cdGVsc2UgaWYgKHBoeV9pbnRlcmZhY2VfbW9kZV9pc19yZ21paShwZGF0YS1cdTAwM2VwaHlfbW9kZSkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfbWFpbi5jPTIxMTc9c3RhdGljIHZvaWQgeGdlbmVfZW5ldF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9tYWluLmMtMjEzMC1cdGlmIChwZGF0YS1cdTAwM2VtZGlvX2RyaXZlcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X21haW4uYzoyMTMxOlx0XHR4Z2VuZV9lbmV0X3BoeV9kaXNjb25uZWN0KHBkYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X21haW4uYy0yMTMyLVx0ZWxzZSBpZiAocGh5X2ludGVyZmFjZV9tb2RlX2lzX3JnbWlpKHBkYXRhLVx1MDAzZXBoeV9tb2RlKSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tYWluLmM9ODU4PWludCBhcmNfZW1hY19wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgaW50IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tYWluLmMtMTAxMy1cdG5ldGlmX25hcGlfZGVsKFx1MDAyNnByaXYtXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tYWluLmM6MTAxNDpcdHBoeV9kaXNjb25uZWN0KHBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tYWluLmMtMTAxNS1vdXRfbWRpbzpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tYWluLmM9MTAyNz12b2lkIGFyY19lbWFjX3JlbW92ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tYWluLmMtMTAzMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21haW4uYzoxMDMxOlx0cGh5X2Rpc2Nvbm5lY3QobmRldi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWFpbi5jLTEwMzItXHRhcmNfbWRpb19yZW1vdmUocHJpdik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmM9OTY2PXN0YXRpYyBpbnQgYXg4ODc5NmNfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYy0xMDk5LWVycl9waHlfZGlzOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmM6MTEwMDpcdHBoeV9kaXNjb25uZWN0KGF4X2xvY2FsLVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYy0xMTAxLWVycjpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYz0xMTA1PXN0YXRpYyB2b2lkIGF4ODg3OTZjX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jLTExMDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYzoxMTEwOlx0cGh5X2Rpc2Nvbm5lY3QobmRldi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmMtMTExMS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9hc3AyL2JjbWFzcF9pbnRmLmM9OTY5PXN0YXRpYyBpbnQgYmNtYXNwX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9hc3AyL2JjbWFzcF9pbnRmLmMtOTgxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfaW50Zi5jOjk4MjpcdHBoeV9kaXNjb25uZWN0KGRldi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfaW50Zi5jLTk4My1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYz0yMzEzPXN0YXRpYyB2b2lkIGI0NF91bnJlZ2lzdGVyX3BoeV9vbmUoc3RydWN0IGI0NCAqYnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMjMyMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jOjIzMjE6XHRwaHlfZGlzY29ubmVjdChwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMjMyMi1cdGlmIChwaHlfaXNfcHNldWRvX2ZpeGVkX2xpbmsocGh5ZGV2KSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYz04OTA9c3RhdGljIGludCBiY21fZW5ldF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmMtMTEzMy1cdGlmIChwaHlkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYzoxMTM0Olx0XHRwaHlfZGlzY29ubmVjdChwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmMtMTEzNS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYz0xMTg1PXN0YXRpYyBpbnQgYmNtX2VuZXRfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTEyMjktXHRpZiAocHJpdi1cdTAwM2VoYXNfcGh5KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmM6MTIzMDpcdFx0cGh5X2Rpc2Nvbm5lY3QoZGV2LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYy0xMjMxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYz0xOTI4PXN0YXRpYyBpbnQgYmNtX3N5c3BvcnRfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYy0yMDUyLW91dF9waHlfZGlzY29ubmVjdDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYzoyMDUzOlx0cGh5X2Rpc2Nvbm5lY3QocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYy0yMDU0LW91dF9jbGtfZGlzYWJsZTpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmM9MjA3Mz1zdGF0aWMgaW50IGJjbV9zeXNwb3J0X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmMtMjExMS1cdC8qIERpc2Nvbm5lY3QgZnJvbSBQSFkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYzoyMTEyOlx0cGh5X2Rpc2Nvbm5lY3QoZGV2LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmMtMjExMy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jPTE0ODc9aW50IGJnbWFjX2VuZXRfcHJvYmUoc3RydWN0IGJnbWFjICpiZ21hYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jLTE1NTgtZXJyX3BoeV9kaXNjb25uZWN0OlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYzoxNTU5Olx0cGh5X2Rpc2Nvbm5lY3QobmV0X2Rldi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYy0xNTYwLWVycl9kbWFfZnJlZTpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jPTE1Njg9dm9pZCBiZ21hY19lbmV0X3JlbW92ZShzdHJ1Y3QgYmdtYWMgKmJnbWFjKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmMtMTU3MC1cdHVucmVnaXN0ZXJfbmV0ZGV2KGJnbWFjLVx1MDAzZW5ldF9kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYzoxNTcxOlx0cGh5X2Rpc2Nvbm5lY3QoYmdtYWMtXHUwMDNlbmV0X2Rldi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYy0xNTcyLVx0bmV0aWZfbmFwaV9kZWwoXHUwMDI2YmdtYWMtXHUwMDNlbmFwaSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtZ2VuZXQuYz0zNDYzPXN0YXRpYyBpbnQgYmNtZ2VuZXRfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21nZW5ldC5jLTM0NzItXHQvKiBSZWFsbHkga2lsbCB0aGUgUEhZIHN0YXRlIG1hY2hpbmUgYW5kIGRpc2Nvbm5lY3QgZnJvbSBpdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtZ2VuZXQuYzozNDczOlx0cGh5X2Rpc2Nvbm5lY3QoZGV2LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21nZW5ldC5jLTM0NzQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmM9MzAxPWludCBiY21nZW5ldF9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYy0zOTUtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYzozOTY6XHRcdHBoeV9kaXNjb25uZWN0KGRldi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmMtMzk3LVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYz0yNDc1PXN0YXRpYyBpbnQgc2JtYWNfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9zYjEyNTAtbWFjLmMtMjQ4OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYzoyNDkwOlx0cGh5X2Rpc2Nvbm5lY3Qoc2MtXHUwMDNlcGh5X2Rldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9zYjEyNTAtbWFjLmMtMjQ5MS1cdHNjLVx1MDAzZXBoeV9kZXYgPSBOVUxMO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTIwODQ9c3RhdGljIGludCB0ZzNfcGh5X2luaXQoc3RydWN0IHRnMyAqdHApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMjExOC1cdGRlZmF1bHQ6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzoyMTE5Olx0XHRwaHlfZGlzY29ubmVjdChtZGlvYnVzX2dldF9waHkodHAtXHUwMDNlbWRpb19idXMsIHRwLVx1MDAzZXBoeV9hZGRyKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0yMTIwLVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYz0yMTYxPXN0YXRpYyB2b2lkIHRnM19waHlfZmluaShzdHJ1Y3QgdGczICp0cClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0yMTYzLVx0aWYgKHRwLVx1MDAzZXBoeV9mbGFncyBcdTAwMjYgVEczX1BIWUZMR19JU19DT05ORUNURUQpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jOjIxNjQ6XHRcdHBoeV9kaXNjb25uZWN0KG1kaW9idXNfZ2V0X3BoeSh0cC1cdTAwM2VtZGlvX2J1cywgdHAtXHUwMDNlcGh5X2FkZHIpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTIxNjUtXHRcdHRwLVx1MDAzZXBoeV9mbGFncyBcdTAwMjY9IH5URzNfUEhZRkxHX0lTX0NPTk5FQ1RFRDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vb2N0ZW9uL29jdGVvbl9tZ210LmM9MTI0MD1zdGF0aWMgaW50IG9jdGVvbl9tZ210X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vb2N0ZW9uL29jdGVvbl9tZ210LmMtMTI0OC1cdFx0cGh5X3N0b3AobmV0ZGV2LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vb2N0ZW9uL29jdGVvbl9tZ210LmM6MTI0OTpcdFx0cGh5X2Rpc2Nvbm5lY3QobmV0ZGV2LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vb2N0ZW9uL29jdGVvbl9tZ210LmMtMTI1MC1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci90aHVuZGVyX2JneC5jPTExMzk9c3RhdGljIHZvaWQgYmd4X2xtYWNfZGlzYWJsZShzdHJ1Y3QgYmd4ICpiZ3gsIHU4IGxtYWNpZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci90aHVuZGVyX2JneC5jLTExODQtXHQgICAgKGxtYWMtXHUwMDNlbG1hY190eXBlICE9IEJHWF9NT0RFXzEwR19LUikgXHUwMDI2XHUwMDI2IGxtYWMtXHUwMDNlcGh5ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvdGh1bmRlcl9iZ3guYzoxMTg1Olx0XHRwaHlfZGlzY29ubmVjdChsbWFjLVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci90aHVuZGVyX2JneC5jLTExODYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0zNjA9c3RhdGljIGludCBnbWFjX3NldHVwX3BoeShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMzk4LVx0XHRuZXRkZXZfZXJyKG5ldGRldiwgXCYjMzQ7VW5zdXBwb3J0ZWQgTUlJIGludGVyZmFjZVxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjM5OTpcdFx0cGh5X2Rpc2Nvbm5lY3QocGh5KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtNDAwLVx0XHRuZXRkZXYtXHUwMDNlcGh5ZGV2ID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTIzNjA9c3RhdGljIHZvaWQgZ2VtaW5pX3BvcnRfcmVtb3ZlKHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIzNjItXHRpZiAocG9ydC1cdTAwM2VuZXRkZXYpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjM2MzpcdFx0cGh5X2Rpc2Nvbm5lY3QocG9ydC1cdTAwM2VuZXRkZXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjM2NC1cdFx0dW5yZWdpc3Rlcl9uZXRkZXYocG9ydC1cdTAwM2VuZXRkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmM9MTE2ND1zdGF0aWMgaW50IGRtOTA1MV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmMtMTIxNy1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmM6MTIxODpcdFx0cGh5X2Rpc2Nvbm5lY3QoZGItXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmMtMTIxOS1cdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByZXQsIFwmIzM0O2RldmljZSByZWdpc3RlciBmYWlsZWRcJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmM9MTIyNT1zdGF0aWMgdm9pZCBkbTkwNTFfZHJ2X3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmMtMTIzMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmM6MTIzMTpcdHBoeV9kaXNjb25uZWN0KGRiLVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jLTEyMzItfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYz0yNzI9c3RhdGljIHZvaWQgdHNuZXBfcGh5X2Nsb3NlKHN0cnVjdCB0c25lcF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yNzQtXHRwaHlfc3RvcChhZGFwdGVyLVx1MDAzZW5ldGRldi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jOjI3NTpcdHBoeV9kaXNjb25uZWN0KGFkYXB0ZXItXHUwMDNlbmV0ZGV2LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMjc2LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jPTEyNTc9c3RhdGljIHZvaWQgZXRob2NfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZXRob2MuYy0xMjYzLVx0XHRuZXRpZl9uYXBpX2RlbChcdTAwMjZwcml2LVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZXRob2MuYzoxMjY0Olx0XHRwaHlfZGlzY29ubmVjdChuZXRkZXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmMtMTI2NS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jPTE3MzQ9c3RhdGljIGludCBmdGdtYWMxMDBfc2V0dXBfbWRpbyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTc3OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM6MTc4MDpzdGF0aWMgdm9pZCBmdGdtYWMxMDBfcGh5X2Rpc2Nvbm5lY3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTc4MS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xNzg3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYzoxNzg4Olx0cGh5X2Rpc2Nvbm5lY3QocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTc4OS1cdGlmIChvZl9waHlfaXNfZml4ZWRfbGluayhwcml2LVx1MDAzZWRldi1cdTAwM2VvZl9ub2RlKSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jPTE5NDI9c3RhdGljIGludCBmdGdtYWMxMDBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTIwOTUtZXJyOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYzoyMDk2Olx0ZnRnbWFjMTAwX3BoeV9kaXNjb25uZWN0KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTIwOTctXHRpZiAocHJpdi1cdTAwM2VuZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM9MjEwMj1zdGF0aWMgdm9pZCBmdGdtYWMxMDBfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0yMTE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYzoyMTE5Olx0ZnRnbWFjMTAwX3BoeV9kaXNjb25uZWN0KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTIxMjAtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jPTQyMjg9ZmVjX2VuZXRfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNDI0MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjQyNDE6XHRwaHlfZGlzY29ubmVjdChwaHlfZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTQyNDItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4LmM9MjE2PXN0YXRpYyBpbnQgbXBjNTJ4eF9mZWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eC5jLTI3NC1cdFx0cGh5X3N0b3AocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eC5jOjI3NTpcdFx0cGh5X2Rpc2Nvbm5lY3QocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eC5jLTI3Ni1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHguYz0yODE9c3RhdGljIGludCBtcGM1Mnh4X2ZlY19jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eC5jLTI5OC1cdFx0cGh5X3N0b3AocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eC5jOjI5OTpcdFx0cGh5X2Rpc2Nvbm5lY3QocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eC5jLTMwMC1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jPTI4ODQ9c3RhdGljIGludCBnZmFyX2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYy0yODkxLVx0LyogRGlzY29ubmVjdCBmcm9tIHRoZSBQSFkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmM6Mjg5MjpcdHBoeV9kaXNjb25uZWN0KGRldi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYy0yODkzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmM9MTYyPXN0YXRpYyB2b2lkIGhiZ19waHlfYWRqdXN0X2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfbWRpby5jLTE5NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmM6MTk2OnN0YXRpYyB2b2lkIGhiZ19waHlfZGlzY29ubmVjdCh2b2lkICpkYXRhKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYy0xOTcte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYzoxOTg6XHRwaHlfZGlzY29ubmVjdCgoc3RydWN0IHBoeV9kZXZpY2UgKilkYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmMtMTk5LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmM9MTAyOD1zdGF0aWMgdm9pZCBoaXAwNF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmMtMTAzNC1cdGlmIChwcml2LVx1MDAzZXBoeSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXAwNF9ldGguYzoxMDM1Olx0XHRwaHlfZGlzY29ubmVjdChwcml2LVx1MDAzZXBoeSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmMtMTAzNi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlzaV9mZW1hYy5jPTc2OD1zdGF0aWMgaW50IGhpc2lfZmVtYWNfZHJ2X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpc2lfZmVtYWMuYy04ODYtXHRuZXRpZl9uYXBpX2RlbChcdTAwMjZwcml2LVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpc2lfZmVtYWMuYzo4ODc6XHRwaHlfZGlzY29ubmVjdChwaHkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpc2lfZmVtYWMuYy04ODgtb3V0X2Rpc2FibGVfY2xrOlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXNpX2ZlbWFjLmM9ODk2PXN0YXRpYyB2b2lkIGhpc2lfZmVtYWNfZHJ2X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXNpX2ZlbWFjLmMtOTAzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpc2lfZmVtYWMuYzo5MDQ6XHRwaHlfZGlzY29ubmVjdChuZGV2LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlzaV9mZW1hYy5jLTkwNS1cdGNsa19kaXNhYmxlX3VucHJlcGFyZShwcml2LVx1MDAzZWNsayk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpeDVoZDJfZ21hYy5jPTg2Nz1zdGF0aWMgaW50IGhpeDVoZDJfbmV0X2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpeDVoZDJfZ21hYy5jLTg3OC1cdFx0cGh5X3N0b3AoZGV2LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGl4NWhkMl9nbWFjLmM6ODc5Olx0XHRwaHlfZGlzY29ubmVjdChkZXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYy04ODAtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZW5ldC5jPTIzOTY9c3RhdGljIHZvaWQgaG5zX25pY19kZXZfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZW5ldC5jLTI0MDgtXHRpZiAobmRldi1cdTAwM2VwaHlkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19lbmV0LmM6MjQwOTpcdFx0cGh5X2Rpc2Nvbm5lY3QobmRldi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZW5ldC5jLTI0MTAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21kaW8uYz0yNDI9dm9pZCBoY2xnZV9tYWNfZGlzY29ubmVjdF9waHkoc3RydWN0IGhuYWUzX2hhbmRsZSAqaGFuZGxlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9tZGlvLmMtMjUwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21kaW8uYzoyNTE6XHRwaHlfZGlzY29ubmVjdChwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21kaW8uYy0yNTItfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xhbnRpcV9ldG9wLmM9NDIzPWx0cV9ldG9wX21kaW9fY2xlYW51cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xhbnRpcV9ldG9wLmMtNDI2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbGFudGlxX2V0b3AuYzo0Mjc6XHRwaHlfZGlzY29ubmVjdChkZXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xhbnRpcV9ldG9wLmMtNDI4LVx0bWRpb2J1c191bnJlZ2lzdGVyKHByaXYtXHUwMDNlbWlpX2J1cyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdjY0M3h4X2V0aC5jPTMyNzI9c3RhdGljIHZvaWQgbXY2NDN4eF9ldGhfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdjY0M3h4X2V0aC5jLTMyNzgtXHRpZiAoZGV2LVx1MDAzZXBoeWRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXY2NDN4eF9ldGguYzozMjc5Olx0XHRwaHlfZGlzY29ubmVjdChkZXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXY2NDN4eF9ldGguYy0zMjgwLVx0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZtcC1cdTAwM2V0eF90aW1lb3V0X3Rhc2spO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jPTE1MjY9c3RhdGljIHZvaWQgcHhhMTY4X2V0aF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3B4YTE2OF9ldGguYy0xNTM3LVx0aWYgKGRldi1cdTAwM2VwaHlkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3B4YTE2OF9ldGguYzoxNTM4Olx0XHRwaHlfZGlzY29ubmVjdChkZXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jLTE1MzktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jPTEwMzc9c3RhdGljIHZvaWQgbXRrX3N0YXJfZGlzYWJsZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmMtMTA0Ny1cdHBoeV9zdG9wKHByaXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYzoxMDQ4Olx0cGh5X2Rpc2Nvbm5lY3QocHJpdi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jLTEwNDktXHRmcmVlX2lycShuZGV2LVx1MDAzZWlycSwgbmRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4YmZfZ2lnZS9tbHhiZl9naWdlX21haW4uYz0zODU9c3RhdGljIGludCBtbHhiZl9naWdlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4YmZfZ2lnZS9tbHhiZl9naWdlX21haW4uYy00OTItXHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O0ZhaWxlZCB0byByZWdpc3RlciBuZXRkZXY6ICVwZVxcblwmIzM0OywgRVJSX1BUUihlcnIpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seGJmX2dpZ2UvbWx4YmZfZ2lnZV9tYWluLmM6NDkzOlx0XHRwaHlfZGlzY29ubmVjdChwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4YmZfZ2lnZS9tbHhiZl9naWdlX21haW4uYy00OTQtXHRcdGdvdG8gb3V0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seGJmX2dpZ2UvbWx4YmZfZ2lnZV9tYWluLmM9NTA0PXN0YXRpYyB2b2lkIG1seGJmX2dpZ2VfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4YmZfZ2lnZS9tbHhiZl9naWdlX21haW4uYy01MDgtXHR1bnJlZ2lzdGVyX25ldGRldihwcml2LVx1MDAzZW5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhiZl9naWdlL21seGJmX2dpZ2VfbWFpbi5jOjUwOTpcdHBoeV9kaXNjb25uZWN0KHByaXYtXHUwMDNlbmV0ZGV2LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhiZl9naWdlL21seGJmX2dpZ2VfbWFpbi5jLTUxMC1cdG1seGJmX2dpZ2VfbWRpb19yZW1vdmUocHJpdik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmkvbml4Z2UuYz04NjY9c3RhdGljIGludCBuaXhnZV9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L25pL25peGdlLmMtOTAzLVx0cGh5X3N0b3AocGh5KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25pL25peGdlLmM6OTA0Olx0cGh5X2Rpc2Nvbm5lY3QocGh5KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25pL25peGdlLmMtOTA1LVx0dGFza2xldF9raWxsKFx1MDAyNnByaXYtXHUwMDNlZG1hX2Vycl90YXNrbGV0KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uaS9uaXhnZS5jPTkxMD1zdGF0aWMgaW50IG5peGdlX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmkvbml4Z2UuYy05MTktXHRcdHBoeV9zdG9wKG5kZXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25pL25peGdlLmM6OTIwOlx0XHRwaHlfZGlzY29ubmVjdChuZGV2LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uaS9uaXhnZS5jLTkyMS1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz02MTk9c3RhdGljIHZvaWQgb2FfdGM2X3BoeV9leGl0KHN0cnVjdCBvYV90YzYgKnRjNilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy02MjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo2MjQ6XHRwaHlfZGlzY29ubmVjdCh0YzYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTYyNS1cdG9hX3RjNl9tZGlvYnVzX3VucmVnaXN0ZXIodGM2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wYXNlbWkvcGFzZW1pX21hYy5jPTEyNzU9c3RhdGljIGludCBwYXNlbWlfbWFjX2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcGFzZW1pL3Bhc2VtaV9tYWMuYy0xMjg1LVx0XHRwaHlfc3RvcChkZXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Bhc2VtaS9wYXNlbWlfbWFjLmM6MTI4NjpcdFx0cGh5X2Rpc2Nvbm5lY3QoZGV2LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wYXNlbWkvcGFzZW1pX21hYy5jLTEyODctXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vZW1hYy9lbWFjLW1hYy5jPTk2Mz12b2lkIGVtYWNfbWFjX2Rvd24oc3RydWN0IGVtYWNfYWRhcHRlciAqYWRwdClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9lbWFjL2VtYWMtbWFjLmMtOTc5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vZW1hYy9lbWFjLW1hYy5jOjk4MDpcdHBoeV9kaXNjb25uZWN0KGFkcHQtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL2VtYWMvZW1hYy1tYWMuYy05ODEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmRjL3I2MDQwLmM9MTAyNz1zdGF0aWMgaW50IHI2MDQwX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JkYy9yNjA0MC5jLTExNjYtZXJyX291dF9waHlfZGlzY29ubmVjdDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JkYy9yNjA0MC5jOjExNjc6XHRwaHlfZGlzY29ubmVjdChkZXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JkYy9yNjA0MC5jLTExNjgtZXJyX291dF9tZGlvX3VucmVnaXN0ZXI6XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmRjL3I2MDQwLmM9MTE4NT1zdGF0aWMgdm9pZCByNjA0MF9yZW1vdmVfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JkYy9yNjA0MC5jLTExOTAtXHR1bnJlZ2lzdGVyX25ldGRldihkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmRjL3I2MDQwLmM6MTE5MTpcdHBoeV9kaXNjb25uZWN0KGRldi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmRjL3I2MDQwLmMtMTE5Mi1cdG1kaW9idXNfdW5yZWdpc3RlcihscC1cdTAwM2VtaWlfYnVzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz01MDQ1PXN0YXRpYyBpbnQgcnRsODE2OV9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTUwNTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1MDU4Olx0cGh5X2Rpc2Nvbm5lY3QodHAtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTUwNTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9yYXZiX21haW4uYz0yMzY3PXN0YXRpYyBpbnQgcmF2Yl9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3JhdmJfbWFpbi5jLTIzODYtXHRcdHBoeV9zdG9wKG5kZXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcmF2Yl9tYWluLmM6MjM4NzpcdFx0cGh5X2Rpc2Nvbm5lY3QobmRldi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9yYXZiX21haW4uYy0yMzg4LVx0XHRpZiAob2ZfcGh5X2lzX2ZpeGVkX2xpbmsobnApKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcnN3aXRjaF9tYWluLmM9MTUwMz1zdGF0aWMgdm9pZCByc3dpdGNoX3BoeV9kZXZpY2VfZGVpbml0KHN0cnVjdCByc3dpdGNoX2RldmljZSAqcmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3Jzd2l0Y2hfbWFpbi5jLTE1MDUtXHRpZiAocmRldi1cdTAwM2VuZGV2LVx1MDAzZXBoeWRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcnN3aXRjaF9tYWluLmM6MTUwNjpcdFx0cGh5X2Rpc2Nvbm5lY3QocmRldi1cdTAwM2VuZGV2LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3Jzd2l0Y2hfbWFpbi5jLTE1MDctfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcnRzbi5jPTkyMz1zdGF0aWMgdm9pZCBydHNuX3BoeV9kZWluaXQoc3RydWN0IHJ0c25fcHJpdmF0ZSAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcnRzbi5jLTkyNC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3J0c24uYzo5MjU6XHRwaHlfZGlzY29ubmVjdChwcml2LVx1MDAzZW5kZXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcnRzbi5jLTkyNi1cdHByaXYtXHUwMDNlbmRldi1cdTAwM2VwaHlkZXYgPSBOVUxMO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvc2hfZXRoLmM9MjU4OT1zdGF0aWMgaW50IHNoX2V0aF9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3NoX2V0aC5jLTI2MDgtXHRcdHBoeV9zdG9wKG5kZXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvc2hfZXRoLmM6MjYwOTpcdFx0cGh5X2Rpc2Nvbm5lY3QobmRldi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9zaF9ldGguYy0yNjEwLVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NhbXN1bmcvc3hnYmUvc3hnYmVfbWFpbi5jPTI2ND1zdGF0aWMgaW50IHN4Z2JlX2luaXRfcGh5KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NhbXN1bmcvc3hnYmUvc3hnYmVfbWFpbi5jLTMwMC1cdGlmIChwaHlkZXYtXHUwMDNlcGh5X2lkID09IDApIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NhbXN1bmcvc3hnYmUvc3hnYmVfbWFpbi5jOjMwMTpcdFx0cGh5X2Rpc2Nvbm5lY3QocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NhbXN1bmcvc3hnYmUvc3hnYmVfbWFpbi5jLTMwMi1cdFx0cmV0dXJuIC1FTk9ERVY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2Ftc3VuZy9zeGdiZS9zeGdiZV9tYWluLmM9MTA1OD1zdGF0aWMgaW50IHN4Z2JlX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zYW1zdW5nL3N4Z2JlL3N4Z2JlX21haW4uYy0xMTkzLVx0aWYgKGRldi1cdTAwM2VwaHlkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zYW1zdW5nL3N4Z2JlL3N4Z2JlX21haW4uYzoxMTk0Olx0XHRwaHlfZGlzY29ubmVjdChkZXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NhbXN1bmcvc3hnYmUvc3hnYmVfbWFpbi5jLTExOTUtcGh5X2Vycm9yOlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NhbXN1bmcvc3hnYmUvc3hnYmVfbWFpbi5jPTEyMDc9c3RhdGljIGludCBzeGdiZV9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2Ftc3VuZy9zeGdiZS9zeGdiZV9tYWluLmMtMTIxNi1cdFx0cGh5X3N0b3AoZGV2LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zYW1zdW5nL3N4Z2JlL3N4Z2JlX21haW4uYzoxMjE3Olx0XHRwaHlfZGlzY29ubmVjdChkZXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NhbXN1bmcvc3hnYmUvc3hnYmVfbWFpbi5jLTEyMTgtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc21zYy9zbXNjOTExeC5jPTEwMTU9c3RhdGljIGludCBzbXNjOTExeF9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zbXNjL3Ntc2M5MTF4LmMtMTA1MS1cdFx0U01TQ19XQVJOKHBkYXRhLCBodywgXCYjMzQ7RmFpbGVkIExvb3AgQmFjayBUZXN0XCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Ntc2Mvc21zYzkxMXguYzoxMDUyOlx0XHRwaHlfZGlzY29ubmVjdChwaHlkZXYpO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTM6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA3NzcKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAxMDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBQSFkgRGlzY29ubmVjdGlvbiBNZXRob2RzKioKCk9rYXksIHNvIEkgbmVlZCB0byBkaWcgaW50byBob3cgZHJpdmVycyBoYW5kbGUgUEhZIGRpc2Nvbm5lY3Rpb24uIE15IG1haW4gZm9jdXMgaXMgb24gd2hhdCBkaWZmZXJlbnQgZHJpdmVycyBhcmUgY2FsbGluZyB3aGVuIGEgcGh5c2ljYWwgbGF5ZXIgY29ubmVjdGlvbiBpcyBzZXZlcmVkIG9yIGEgZGV2aWNlIGlzIGRldGFjaGVkLiBJIGtub3cgdGhpcyBpcyB0eXBpY2FsbHkgYWNoaWV2ZWQgdGhyb3VnaCBlaXRoZXIgYHBoeV9kaXNjb25uZWN0YCBvciBgcGh5X2RldGFjaGAsIGJ1dCBJIG5lZWQgdG8gc2VlICp3aG8qIGlzIHVzaW5nIHdoYXQgYW5kIHdoZW4uIEkmIzM5O20gdGhpbmtpbmcsIGluIHRoZSBjb250ZXh0IG9mIG5ldHdvcmsgZGV2aWNlcywgdGhpcyBpcyBnb2luZyB0byBiZSBjb21tb24gaW4gVVNCLWJhc2VkIEV0aGVybmV0IGRvbmdsZXMg4oCTIHRob3NlIEFTaXgsIEFYODgxNzksIERNOTYwMSwgU01TQzk1eHggdHlwZXMg4oCTIGFuZCBhbHNvIHZpcnR1YWwgZHJpdmVycy4gQmV5b25kIHRoZXNlLCBJIHNob3VsZCBwcm9iYWJseSBhbHNvIGV4cGxvcmUgc3RhbmRhcmQgZHJpdmVycyB0b28sIHN1Y2ggYXMgYHI4MTY5YCBvbiBQQ0kgb3Igd2l0aGluIGEgUUVNVSBlbnZpcm9ubWVudCwgdG8gc2VlIGlmIHRoZXkgdXRpbGl6ZSB0aGVzZSBtZXRob2RzIGFzIHdlbGwuIFVsdGltYXRlbHksIHRoZSBxdWVzdGlvbiB0byBiZSBhbnN3ZXJlZCBpcywgZG9lcyBgcjgxNjlgLCBgdXNibmV0YCwgYG1kaW8tZ3Bpb2AsIG9yIGFueSBvdGhlciByZWxldmFudCBkcml2ZXIgdXNlIGBwaHlfZGlzY29ubmVjdGAgb3IgYHBoeV9kZXRhY2hgPyBUaW1lIHRvIHN0YXJ0IGNyb3NzLXJlZmVyZW5jaW5nIGFuZCByZWFkaW5nIHRoZSBzb3VyY2UgY29kZSEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTM6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5X2Rpc2Nvbm5lY3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jPTIzNz1zdGF0aWMgaW50IGF4ODgxNzJhX3N0b3Aoc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTI0Ni1cdFx0cGh5X3N0b3AocHJpdi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM6MjQ3Olx0XHRwaHlfZGlzY29ubmVjdChwcml2LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy0yNDgtXHR9XG4tLVxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmM9MTMxNz1zdGF0aWMgdm9pZCBzbXNjOTV4eF91bmJpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYy0xMzIwLVxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmM6MTMyMTpcdHBoeV9kaXNjb25uZWN0KGRldi1cdTAwM2VuZXQtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jLTEzMjItXHRtZGlvYnVzX3VucmVnaXN0ZXIocGRhdGEtXHUwMDNlbWRpb2J1cyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDEzOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNDIwCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMjcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEN1cnJlbnQgSW52ZXN0aWdhdGlvbiBpbnRvIE5ldHdvcmsgSW50ZXJmYWNlIERpc2Nvbm5lY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIG5ldHdvcmsgaW50ZXJmYWNlIGRpc2Nvbm5lY3Rpb25zLCBhbmQgSSYjMzk7dmUgc3R1bWJsZWQgdXBvbiBhIGZldyBpbnRlcmVzdGluZyBwb2ludHMuIEZpcnN0LCBJIG5vdGljZWQgdGhhdCBgcjgxNjlfbWFpbi5jYCBleHBsaWNpdGx5IHVzZXMgYHBoeV9kaXNjb25uZWN0KHRwLSZndDtwaHlkZXYpYCB3aXRoaW4gaXRzIGBydGw4MTY5X2Nsb3NlYCBmdW5jdGlvbi4gVGhpcyBpcyBzaWduaWZpY2FudC4gVGhlIGNydWNpYWwgcXVlc3Rpb24sIG9mIGNvdXJzZSwgaXM6IFdoZW4gZG9lcyBgcnRsODE2OV9jbG9zZWAgZ2V0IGV4ZWN1dGVkPyBGcm9tIG15IHVuZGVyc3RhbmRpbmcsIHRoaXMgZnVuY3Rpb24gcnVucyB3aGVuIEkgaXNzdWUgY29tbWFuZHMgbGlrZSBgaXAgbGluayBzZXQgZXRoMCBkb3duYCwgb3Igd2hlbiB0aGUgc29ja2V0IGNsb3Nlcywgb3Igd2hlbiB0aGUgbmV0d29yayBkZXZpY2UgaXRzZWxmIGlzIGJyb3VnaHQgZG93bi4KCk5vdywgcmVtZW1iZXIgdGhhdCBgcjgxNjlgIG9mdGVuIHJlcHJlc2VudHMgdGhlIHN0YW5kYXJkIFJlYWx0ZWsgTklDIHRoYXQmIzM5O3MgZW11bGF0ZWQgd2l0aGluIGEgUUVNVSBlbnZpcm9ubWVudCwgZXNwZWNpYWxseSB3aGVuIHVzaW5nIHRoZSBgLW5ldCBuaWMsbW9kZWw9cnRsODEzOWAgb3IgYC1uZXQgbmljLG1vZGVsPXJ0bDgxNjlgIG9wdGlvbnMsIG9yIGlmIGEgUENJIGRldmljZSBvZiB0aGF0IHR5cGUgaXMgc3BlY2lmaWVkLiBUaGlzIGlzIGltcG9ydGFudCB0byBrZWVwIGluIG1pbmQsIGJlY2F1c2UgaXQmIzM5O3MgYSBjb21tb24gc2NlbmFyaW8gaW4gbWFueSB0ZXN0aW5nIGVudmlyb25tZW50cy4gSSBzaG91bGQgYWxzbyByZW1lbWJlciB0aGF0IG90aGVyIHNpbWlsYXIgZHJpdmVycywgbGlrZSBgYXg4ODE3MmFgIGFuZCBgc21zYzk1eHhgLCBhcmUgYWxzbyBVU0IgZ2FkZ2V0cy9kcml2ZXJzIHdoaWNoIGFyZSBhY2Nlc3NpYmxlIGluIHN5emthbGxlci4KCk5leHQsIEkgdGhpbmsgaXQmIzM5O3Mgd29ydGggdGFraW5nIGEgY2xvc2VyIGxvb2sgYXQgYHBoeV9hdHRhY2hfZGlyZWN0YCB3aXRoaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLiBTcGVjaWZpY2FsbHksIEkgd2FudCB0byB1bmRlcnN0YW5kIGhvdyBpdCBoYW5kbGVzIGZhaWx1cmVzLiBJIHJlY2FsbCB0aGF0IHdoZW4gYHBoeV9hdHRhY2hfZGlyZWN0YCBmYWlscyDigJMgZm9yIGV4YW1wbGUsIGF0IHByb2JlIG9yIGF0dGFjaCB0aW1lLCBwcmlvciB0byBzdWNjZXNzZnVsIHJlZ2lzdHJhdGlvbiDigJMgaXQgY2FsbHMgYHBoeV9kZXRhY2gocGh5ZGV2KWAuIEkmIzM5O20gZ29pbmcgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIGFyb3VuZCBsaW5lcyAxODAwLTE5MDAgaW4gdGhhdCBmaWxlIHRvIGJldHRlciB1bmRlcnN0YW5kIHRoZSBmYWlsdXJlIHNjZW5hcmlvcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTM6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTg3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0NQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxODcwOlx0XG4xODcxOlx0XHQvKiBEbyBpbml0aWFsIGNvbmZpZ3VyYXRpb24gaGVyZSwgbm93IHRoYXRcbjE4NzI6XHRcdCAqIHdlIGhhdmUgY2VydGFpbiBrZXkgcGFyYW1ldGVyc1xuMTg3MzpcdFx0ICogKGRldl9mbGFncyBhbmQgaW50ZXJmYWNlKVxuMTg3NDpcdFx0ICovXG4xODc1Olx0XHRlcnIgPSBwaHlfaW5pdF9odyhwaHlkZXYpO1xuMTg3NjpcdFx0aWYgKGVycilcbjE4Nzc6XHRcdFx0Z290byBlcnJvcjtcbjE4Nzg6XHRcbjE4Nzk6XHRcdHBoeV9yZXN1bWUocGh5ZGV2KTtcbjE4ODA6XHRcbjE4ODE6XHRcdC8qKlxuMTg4MjpcdFx0ICogSWYgdGhlIGV4dGVybmFsIHBoeSB1c2VkIGJ5IGN1cnJlbnQgbWFjIGludGVyZmFjZSBpcyBtYW5hZ2VkIGJ5XG4xODgzOlx0XHQgKiBhbm90aGVyIG1hYyBpbnRlcmZhY2UsIHNvIHdlIHNob3VsZCBjcmVhdGUgYSBkZXZpY2UgbGluayBiZXR3ZWVuXG4xODg0Olx0XHQgKiBwaHkgZGV2IGFuZCBtYWMgZGV2LlxuMTg4NTpcdFx0ICovXG4xODg2Olx0XHRpZiAoZGV2IFx1MDAyNlx1MDAyNiBwaHlkZXYtXHUwMDNlbWRpby5idXMtXHUwMDNlcGFyZW50IFx1MDAyNlx1MDAyNiBkZXYtXHUwMDNlZGV2LnBhcmVudCAhPSBwaHlkZXYtXHUwMDNlbWRpby5idXMtXHUwMDNlcGFyZW50KVxuMTg4NzpcdFx0XHRwaHlkZXYtXHUwMDNlZGV2bGluayA9IGRldmljZV9saW5rX2FkZChkZXYtXHUwMDNlZGV2LnBhcmVudCwgXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2LFxuMTg4ODpcdFx0XHRcdFx0XHRcdCAgRExfRkxBR19QTV9SVU5USU1FIHwgRExfRkxBR19TVEFURUxFU1MpO1xuMTg4OTpcdFxuMTg5MDpcdFx0cmV0dXJuIGVycjtcbjE4OTE6XHRcbjE4OTI6XHRlcnJvcjpcbjE4OTM6XHRcdC8qIHBoeV9kZXRhY2goKSBkb2VzIGFsbCBvZiB0aGUgY2xlYW51cCBiZWxvdyAqL1xuMTg5NDpcdFx0cGh5X2RldGFjaChwaHlkZXYpO1xuMTg5NTpcdFx0cmV0dXJuIGVycjtcbjE4OTY6XHRcbjE4OTc6XHRlcnJvcl9tb2R1bGVfcHV0OlxuMTg5ODpcdFx0bW9kdWxlX3B1dChkLVx1MDAzZWRyaXZlci1cdTAwM2Vvd25lcik7XG4xODk5Olx0XHRwaHlkZXYtXHUwMDNlaXNfZ2VucGh5X2RyaXZlbiA9IDA7XG4xOTAwOlx0XHRkLVx1MDAzZWRyaXZlciA9IE5VTEw7XG4xOTAxOlx0ZXJyb3JfcHV0X2RldmljZTpcbjE5MDI6XHRcdHB1dF9kZXZpY2UoZCk7XG4xOTAzOlx0XHRpZiAobmRldl9vd25lciAhPSBidXMtXHUwMDNlb3duZXIpXG4xOTA0Olx0XHRcdG1vZHVsZV9wdXQoYnVzLVx1MDAzZW93bmVyKTtcbjE5MDU6XHRcdHJldHVybiBlcnI7XG4xOTA2Olx0fVxuMTkwNzpcdEVYUE9SVF9TWU1CT0wocGh5X2F0dGFjaF9kaXJlY3QpO1xuMTkwODpcdFxuMTkwOTpcdC8qKlxuMTkxMDpcdCAqIHBoeV9kZXRhY2ggLSBkZXRhY2ggYSBQSFkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlXG4xOTExOlx0ICogQHBoeWRldjogdGFyZ2V0IHBoeV9kZXZpY2Ugc3RydWN0XG4xOTEyOlx0ICpcbjE5MTM6XHQgKiBUaGlzIGRldGFjaGVzIHRoZSBwaHkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlIGFuZCB0aGUgcGh5XG4xOTE0Olx0ICogZHJpdmVyLCBhbmQgZHJvcHMgdGhlIHJlZmVyZW5jZSBjb3VudCB0YWtlbiBpbiBwaHlfYXR0YWNoX2RpcmVjdCgpLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxMzowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjc2NgoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDI4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBIWSBEZXZpY2UgRGV0YWNobWVudCBMb2dpYyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHBoeV9kZXRhY2hgLCB0aGUgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIGNsZWFubHkgc2VwYXJhdGluZyBhIFBIWSBkZXZpY2UgZnJvbSBpdHMgbmV0d29yayBkZXZpY2UuIE15IHByaW1hcnkgcXVlc3Rpb24gaXMgYWx3YXlzICp3aHkqIHdhcyB0aGlzIGNoYW5nZSBtYWRlPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbW90aXZhdGlvbiBiZWhpbmQgdGhpcyBtb2RpZmljYXRpb24sIHNvIGxldCYjMzk7cyBkaWcgaW50byB0aGUgZ2l0IGxvZyBhbmQgdGhlIGNvbW1pdCBtZXNzYWdlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNoYW5nZS4gQ29udGV4dCBpcyBldmVyeXRoaW5nLiBJJiMzOTtsbCBhbHNvIHJlYWQgdGhlIHN1cnJvdW5kaW5nIGNvZGUsIGVzcGVjaWFsbHkgYW55dGhpbmcgcmVsYXRlZCB0byB0aGUgYGh3cHJvdmAgdmFyaWFibGUgYW5kIHRoZSBgcnRubF9kZXJlZmVyZW5jZWAgbWFjcm8uCgpBaGEsIEkgc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nLiBUaGUgb3JpZ2luYWwgY29kZSB1c2VkIGBydG5sX2RlcmVmZXJlbmNlKGRldi0mZ3Q7aHdwcm92KWAsIHdoaWNoIGV4cGFuZHMgdG8gYHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoZGV2LSZndDtod3Byb3YsIGxvY2tkZXBfcnRubF9pc19oZWxkKCkpYC4gVGhlIGlzc3VlIGFwcGVhcnMgdG8gYmUgdGhhdCBgcGh5X2RldGFjaGAgY291bGQgYmUgY2FsbGVkICpiZWZvcmUqIHRoZSBSVE5MIGxvY2sgd2FzIGFjcXVpcmVkLiBGb3IgaW5zdGFuY2UsIHRoaXMgY291bGQgaGFwcGVuIGR1cmluZyBhIHByb2JlIGVycm9yIHNjZW5hcmlvLCBwZXJoYXBzIGJlZm9yZSB0aGUgbmV0d29yayBkZXZpY2Ugd2FzIGZ1bGx5IHJlZ2lzdGVyZWQgKGBkZXYtJmd0O3JlZ19zdGF0ZSAhPSBORVRSRUdfUkVHSVNURVJFRGApLiBJbiB0aGlzIGNhc2UsIGBsb2NrZGVwX3J0bmxfaXNfaGVsZCgpYCB3b3VsZCBldmFsdWF0ZSB0byBmYWxzZSwgbGVhZGluZyB0byBhIGxvY2tkZXAgd2FybmluZy4gSSYjMzk7dmUgc2VlbiB0aGVzZSBzb3J0cyBvZiB3YXJuaW5ncyBiZWZvcmU7IHRoZXkgY2FuIGJlIHRyaWNreSB0byBkZWJ1Zy4KClRoZSBwYXRjaCByZXNvbHZlcyB0aGUgcHJvYmxlbSBieSBjaGFuZ2luZyB0aGUgYHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWRgIHNlY29uZCBhcmd1bWVudCB0byBhbGxvdyB0aGUgY29kZSB0byBydW4sIGVzc2VudGlhbGx5IHVzaW5nIGFuICYjMzQ7b3ImIzM0OyBgfHxgIGNvbmRpdGlvbjogYGxvY2tkZXBfcnRubF9pc19oZWxkKCkgfHwgZGV2LSZndDtyZWdfc3RhdGUgIT0gTkVUUkVHX1JFR0lTVEVSRURgLiBUaGlzIGNvcnJlY3RseSBwcm90ZWN0cyB0aGUgZGVyZWZlcmVuY2UuCgpOb3csIGp1c3QgdG8gYmUgc3VyZSwgSSBzaG91bGQgY2hlY2sgdGhlIEtjb25maWcgc2V0dGluZ3MgZm9yIHRoaXMgcGFydCBvZiB0aGUgZHJpdmVyLiBJIHdpbGwgbG9vayBhdCB0aGUgYGRyaXZlcnMvbmV0L3BoeS9gIGRpcmVjdG9yeSwgdG8gY29uZmlybSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgaW1wYWN0IHRoaXMgcGFydGljdWxhciBsb2dpYy4gVGhpcyB3aWxsIGFsbG93IG1lIHRvIGJlIGZ1bGx5IGNvbmZpZGVudCBpbiB0aGUgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDEzOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1BIWUxJQiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L0tjb25maWc9Nj1jb25maWcgUEhZTElOS1xuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNy1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo4Olx0c2VsZWN0IFBIWUxJQlxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctOS1cdHNlbGVjdCBTV1BIWVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE0LVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6MTU6bWVudWNvbmZpZyBQSFlMSUJcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE2LVx0dHJpc3RhdGUgXCYjMzQ7UEhZIERldmljZSBzdXBwb3J0IGFuZCBpbmZyYXN0cnVjdHVyZVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTIxLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6MjI6aWYgUEhZTElCXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0yMy1cbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz00Nj1jb25maWcgT1BFTl9BTExJQU5DRV9IRUxQRVJTXG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNDgtXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo0OTpjb25maWcgUEhZTElCX0xFRFNcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTUwLVx0ZGVmX2Jvb2wgT0ZcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjUxOlx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1QSFlMSUJcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTUyLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTU2PWNvbmZpZyBGSVhFRF9QSFlcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy02NC1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjY1OmNvbmZpZyBSVVNUX1BIWUxJQl9BQlNUUkFDVElPTlNcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjY2OiAgICAgICAgYm9vbCBcJiMzNDtSdXN0IFBIWUxJQiBhYnN0cmFjdGlvbnMgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNjctICAgICAgICBkZXBlbmRzIG9uIFJVU1RcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjY4OiAgICAgICAgZGVwZW5kcyBvbiBQSFlMSUI9eVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNjktICAgICAgICBoZWxwXG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc9OTM9Y29uZmlnIEFJUl9BTjg4MDFfUEhZXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy05NC1cdHRyaXN0YXRlIFwmIzM0O0Fpcm9oYSBBTjg4MDEgR2lnYWJpdCBQSFlcJiMzNDtcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjk1Olx0c2VsZWN0IEFJUl9ORVRfUEhZTElCXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy05Ni1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz05OT1jb25maWcgQUlSX0VOODgxMUhfUEhZXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xMDAtXHR0cmlzdGF0ZSBcJiMzNDtBaXJvaGEgRU44ODExSCAyLjUgR2lnYWJpdCBQSFlcJiMzNDtcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjEwMTpcdHNlbGVjdCBBSVJfTkVUX1BIWUxJQlxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTAyLVx0c2VsZWN0IFBIWV9DT01NT05fUFJPUFNcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xMDUtXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzoxMDY6Y29uZmlnIEFJUl9ORVRfUEhZTElCXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xMDctXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTE0NT1jb25maWcgQU1DQ19RVDIwMjVfUEhZXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xNDYtXHR0cmlzdGF0ZSBcJiMzNDtBTUNDIFFUMjAyNSBQSFlcJiMzNDtcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjE0NzpcdGRlcGVuZHMgb24gUlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xNDgtXHRkZXBlbmRzIG9uIFJVU1RfRldfTE9BREVSX0FCU1RSQUNUSU9OU1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTE2MD1jb25maWcgQVg4ODc5NkJfUlVTVF9QSFlcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE2MS1cdGJvb2wgXCYjMzQ7UnVzdCByZWZlcmVuY2UgZHJpdmVyIGZvciBBc2l4IFBIWXNcJiMzNDtcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjE2MjpcdGRlcGVuZHMgb24gUlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TIFx1MDAyNlx1MDAyNiBBWDg4Nzk2Ql9QSFlcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE2My1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz0xNjg9Y29uZmlnIEJST0FEQ09NX1BIWVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTY5LVx0dHJpc3RhdGUgXCYjMzQ7QnJvYWRjb20gNTRYWCBQSFlzXCYjMzQ7XG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzoxNzA6XHRzZWxlY3QgQkNNX05FVF9QSFlMSUJcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE3MS1cdHNlbGVjdCBCQ01fTkVUX1BIWVBUUCBpZiBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz0xNzc9Y29uZmlnIEJDTTU0MTQwX1BIWVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE3OS1cdGRlcGVuZHMgb24gSFdNT04gfHwgSFdNT049blxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6MTgwOlx0c2VsZWN0IEJDTV9ORVRfUEhZTElCXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xODEtXHRzZWxlY3QgUEhZX1BBQ0tBR0Vcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz0xODg9Y29uZmlnIEJDTTYzWFhfUEhZXG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTkwLVx0ZGVwZW5kcyBvbiBCQ002M1hYIHx8IENPTVBJTEVfVEVTVFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6MTkxOlx0c2VsZWN0IEJDTV9ORVRfUEhZTElCXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xOTItXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc9MTk1PWNvbmZpZyBCQ003WFhYX1BIWVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTk2LVx0dHJpc3RhdGUgXCYjMzQ7QnJvYWRjb20gN3h4eCBTT0NzIGludGVybmFsIFBIWXNcJiMzNDtcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjE5NzpcdHNlbGVjdCBCQ01fTkVUX1BIWUxJQlxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTk4LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTIxMj1jb25maWcgQkNNX0NZR05VU19QSFlcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0yMTUtXHRkZXBlbmRzIG9uIE1ESU9fQkNNX0lQUk9DXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzoyMTY6XHRzZWxlY3QgQkNNX05FVF9QSFlMSUJcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTIxNy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0yMjQtXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzoyMjU6Y29uZmlnIEJDTV9ORVRfUEhZTElCXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0yMjYtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTQ4Nz1jb25maWcgWElMSU5YX0dNSUkyUkdNSUlcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy00OTMtXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo0OTQ6ZW5kaWYgIyBQSFlMSUJcbi0tXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU9ND1saWJwaHkteVx0XHRcdDo9IHBoeS5vIHBoeS1jNDUubyBwaHktY29yZS5vIHBoeV9kZXZpY2UubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS04LVxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjk6aWZkZWYgQ09ORklHX1BIWUxJQlxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjEwOiMgYnVpbHQtaW4gd2hlbmV2ZXIgUEhZTElCIGlzIGJ1aWx0LWluIG9yIG1vZHVsZVxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTExLW9iai15XHRcdFx0XHQmIzQzOz0gc3R1YnMub1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT0xNj1saWJwaHktJChDT05GSUdfT1BFTl9BTExJQU5DRV9IRUxQRVJTKSAmIzQzOz0gb3Blbl9hbGxpYW5jZV9oZWxwZXJzLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS0xNy1cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZToxODpvYmotJChDT05GSUdfUEhZTElCKVx0XHQmIzQzOz0gbWRpb19idXMub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTE5LW9iai0kKENPTkZJR19QSFlMSU5LKVx0XHQmIzQzOz0gcGh5bGluay5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MjA6b2JqLSQoQ09ORklHX1BIWUxJQilcdFx0JiM0Mzs9IGxpYnBoeS5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MjE6b2JqLSQoQ09ORklHX1BIWUxJQilcdFx0JiM0Mzs9IG1kaW9fZGV2cmVzLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS0yMi1vYmotJChDT05GSUdfUEhZX1BBQ0tBR0UpXHQmIzQzOz0gcGh5X3BhY2thZ2Uub1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT0zND1vYmotJChDT05GSUdfQUlSX0VOODgxMUhfUEhZKSAgICYjNDM7PSBhaXJfZW44ODExaC5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MzU6b2JqLSQoQ09ORklHX0FJUl9ORVRfUEhZTElCKVx0JiM0Mzs9IGFpcl9waHlfbGliLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS0zNi1vYmotJChDT05GSUdfQU1EX1BIWSlcdFx0JiM0Mzs9IGFtZC5vXG4tLVxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTUwPW9iai0kKENPTkZJR19CQ01fQ1lHTlVTX1BIWSlcdCYjNDM7PSBiY20tY3lnbnVzLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo1MTpvYmotJChDT05GSUdfQkNNX05FVF9QSFlMSUIpXHQmIzQzOz0gYmNtLXBoeS1saWIub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTUyLW9iai0kKENPTkZJR19CQ01fTkVUX1BIWVBUUClcdCYjNDM7PSBiY20tcGh5LXB0cC5vXG4tLVxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL0tjb25maWc9Mj1jb25maWcgTUVESUFURUtfMlA1R0VfUEhZXG4tLVxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL0tjb25maWctNC1cdGRlcGVuZHMgb24gKEFSTTY0IFx1MDAyNlx1MDAyNiBBUkNIX01FRElBVEVLKSB8fCBDT01QSUxFX1RFU1RcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9LY29uZmlnOjU6XHRzZWxlY3QgTVRLX05FVF9QSFlMSUJcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9LY29uZmlnLTYtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL0tjb25maWc9MTM9Y29uZmlnIE1FRElBVEVLX0dFX1BIWVxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL0tjb25maWctMTQtXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBHaWdhYml0IEV0aGVybmV0IFBIWXNcJiMzNDtcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9LY29uZmlnOjE1Olx0c2VsZWN0IE1US19ORVRfUEhZTElCXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvS2NvbmZpZy0xNi1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvS2NvbmZpZz0zMz1jb25maWcgTUVESUFURUtfR0VfU09DX1BIWVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9LY29uZmlnLTM3LVx0XHQgICBFQ09ORVQgfHwgQ09NUElMRV9URVNUXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvS2NvbmZpZzozODpcdHNlbGVjdCBNVEtfTkVUX1BIWUxJQlxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL0tjb25maWctMzktXHRzZWxlY3QgUEhZX1BBQ0tBR0Vcbi0tXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvS2NvbmZpZy01MS1cbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9LY29uZmlnOjUyOmNvbmZpZyBNVEtfTkVUX1BIWUxJQlxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL0tjb25maWctNTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9NYWtlZmlsZT01PW9iai0kKENPTkZJR19NRURJQVRFS19HRV9TT0NfUEhZKVx0JiM0Mzs9IG10ay1nZS1zb2Mub1xuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX01US19ORVRfUEhZTElCKVx0XHQmIzQzOz0gbXRrLXBoeS1saWIub1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MzY4OT1zdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zODA5LVx0ICovXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjM4MTA6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfUEhZTElCX0xFRFMpIFx1MDAyNlx1MDAyNiAhcGh5X2RyaXZlcl9pc19nZW5waHkocGh5ZGV2KSkge1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zODExLVx0XHRlcnIgPSBvZl9waHlfbGVkcyhwaHlkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MzgzMz1zdGF0aWMgaW50IHBoeV9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzgzOC1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MzgzOTpcdGlmIChJU19FTkFCTEVEKENPTkZJR19QSFlMSUJfTEVEUykgXHUwMDI2XHUwMDI2ICFwaHlfZHJpdmVyX2lzX2dlbnBoeShwaHlkZXYpKVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zODQwLVx0XHRwaHlfbGVkc191bnJlZ2lzdGVyKHBoeWRldik7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0zODY4PXN0YXRpYyBpbnQgcGh5X2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgcGh5X2RyaXZlciAqbmV3X2RyaXZlcixcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTM4ODEtXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjM4ODI6XHQvKiBQSFlMSUIgZGV2aWNlIGRyaXZlcnMgbXVzdCBub3QgbWF0Y2ggdXNpbmcgYSBEVCBjb21wYXRpYmxlIHRhYmxlXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTM4ODMtXHQgKiBhcyB0aGlzIGJ5cGFzc2VzIG91ciBjaGVja3MgdGhhdCB0aGUgbWRpb2RldiB0aGF0IGlzIGJlaW5nIG1hdGNoZWRcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmgtNS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaWItaW50ZXJuYWwuaDo2OiNpZm5kZWYgX19QSFlMSUJfSU5URVJOQUxfSFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpYi1pbnRlcm5hbC5oOjc6I2RlZmluZSBfX1BIWUxJQl9JTlRFUk5BTF9IXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmgtOC1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmg9MzA9aW50IGdlbnBoeV9jNDVfcmVhZF9lZWVfYWR2KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHVuc2lnbmVkIGxvbmcgKmFkdik7XG5kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmgtMzEtXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmg6MzI6I2VuZGlmIC8qIF9fUEhZTElCX0lOVEVSTkFMX0ggKi9cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLmgtNS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaWIuaDo2OiNpZm5kZWYgX19QSFlMSUJfSFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oOjc6I2RlZmluZSBfX1BIWUxJQl9IXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLmgtOC1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLmg9Mzg9aW50IG1tZF9waHlfd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9hZGRyLCBib29sIGlzX2M0NSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLmgtNDAtXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLmg6NDE6I2VuZGlmIC8qIF9fUEhZTElCX0ggKi9cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyMDM9c3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjIyNi0gKiBwaHlfYXR0YWNoX2RpcmVjdCgpLiBDb25maWd1cmUgdGhlIEBwaHkgYWNjb3JkaW5nIHRvIHRoZSBNQUMgZHJpdmVyJiMzOTtzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyMjc6ICogY2FwYWJpbGl0aWVzLCBzdGFydCB0aGUgUEhZTElCIHN0YXRlIG1hY2hpbmUgYW5kIGVuYWJsZSBhbnkgaW50ZXJydXB0c1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjI4LSAqIHRoYXQgdGhlIFBIWSBzdXBwb3J0cy5cbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnOjI6Y29uZmlnIFFDT01fTkVUX1BIWUxJQlxuZHJpdmVycy9uZXQvcGh5L3Fjb20vS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnPTU9Y29uZmlnIEFUODAzWF9QSFlcbmRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWctNi1cdHRyaXN0YXRlIFwmIzM0O1F1YWxjb21tIEF0aGVyb3MgQVI4MDNYIFBIWXNcJiMzNDtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWc6NzpcdHNlbGVjdCBRQ09NX05FVF9QSFlMSUJcbmRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWctOC1cdGRlcGVuZHMgb24gUkVHVUxBVE9SXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vS2NvbmZpZz0xMj1jb25maWcgUUNBODNYWF9QSFlcbmRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWctMTMtXHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBBdGhlcm9zIFFDQTgzM3ggUEhZc1wmIzM0O1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vS2NvbmZpZzoxNDpcdHNlbGVjdCBRQ09NX05FVF9QSFlMSUJcbmRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWctMTUtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vS2NvbmZpZz0xOD1jb25maWcgUUNBODA4WF9QSFlcbmRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWctMTktXHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBRQ0E4MDh4IFBIWXNcJiMzNDtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWc6MjA6XHRzZWxlY3QgUUNPTV9ORVRfUEhZTElCXG5kcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnLTIxLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWc9MjQ9Y29uZmlnIFFDQTgwN1hfUEhZXG5kcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnLTI1LVx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gUUNBODA3eCBQSFlzXCYjMzQ7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnOjI2Olx0c2VsZWN0IFFDT01fTkVUX1BIWUxJQlxuZHJpdmVycy9uZXQvcGh5L3Fjb20vS2NvbmZpZy0yNy1cdHNlbGVjdCBQSFlfUEFDS0FHRVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vTWFrZWZpbGU6MjpvYmotJChDT05GSUdfUUNPTV9ORVRfUEhZTElCKVx0JiM0Mzs9IHFjb20tcGh5LWxpYi5vXG5kcml2ZXJzL25ldC9waHkvcWNvbS9NYWtlZmlsZS0zLW9iai0kKENPTkZJR19BVDgwM1hfUEhZKVx0JiM0Mzs9IGF0ODAzeC5vXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Ntc2MuYz02Nj1pbnQgc21zY19waHlfY29uZmlnX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvc21zYy5jLTc1LVx0XHRyYyA9IHBoeV93cml0ZShwaHlkZXYsIE1JSV9MQU44M0MxODVfSU0sXG5kcml2ZXJzL25ldC9waHkvc21zYy5jOjc2Olx0XHRcdCAgICAgICBNSUlfTEFOODNDMTg1X0lTRl9JTlRfUEhZTElCX0VWRU5UUyk7XG5kcml2ZXJzL25ldC9waHkvc21zYy5jLTc3LVx0fSBlbHNlIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvc21zYy5jPTEwMT1pcnFyZXR1cm5fdCBzbXNjX3BoeV9oYW5kbGVfaW50ZXJydXB0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Ntc2MuYy0xMTItXG5kcml2ZXJzL25ldC9waHkvc21zYy5jOjExMzpcdGlmICghKGlycV9zdGF0dXMgXHUwMDI2IE1JSV9MQU44M0MxODVfSVNGX0lOVF9QSFlMSUJfRVZFTlRTKSlcbmRyaXZlcnMvbmV0L3BoeS9zbXNjLmMtMTE0LVx0XHRyZXR1cm4gSVJRX05PTkU7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3N0dWJzLmMtMy0gKiBTdHVicyBmb3IgUEhZIGxpYnJhcnkgZnVuY3Rpb25hbGl0eSBjYWxsZWQgYnkgdGhlIGNvcmUgbmV0d29yayBzdGFjay5cbmRyaXZlcnMvbmV0L3BoeS9zdHVicy5jOjQ6ICogVGhlc2UgYXJlIG5lY2Vzc2FyeSBiZWNhdXNlIENPTkZJR19QSFlMSUIgY2FuIGJlIGEgbW9kdWxlLCBhbmQgYnVpbHQtaW5cbmRyaXZlcnMvbmV0L3BoeS9zdHVicy5jLTUtICogY29kZSBjYW5ub3QgZGlyZWN0bHkgY2FsbCBzeW1ib2xzIGV4cG9ydGVkIGJ5IG1vZHVsZXMuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDEzOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3Njk1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgUEhZTElCIGFuZCBpdHMgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkgc2VlIHRoYXQgYENPTkZJR19QSFlMSUJgIGlzIGEgaGFyZCByZXF1aXJlbWVudCBmb3IgdGhlIGBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jYCBmaWxlLiBSaWdodCwgdGhhdCBtYWtlcyBzZW5zZSDigJMgUEhZTElCIGlzIGNsZWFybHkgdGhlIGNvcmUgbGlicmFyeSBmb3IgaGFuZGxpbmcgUEhZIGRldmljZXMuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgYFBIWUxJQmAgaXRzZWxmIHJlbGllcyBvbiBvdGhlciBjb3JlIG5ldHdvcmtpbmcgY29tcG9uZW50cy4gTXkgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gcXVpY2tseSBjaGVjayBpZiBgUEhZTElCYCBkZXBlbmRzIG9uIGBORVRERVZJQ0VTYC4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoYXQgcmVsYXRpb25zaGlwLiBUaGVuLCBJJiMzOTtsbCBnbyBzdHJhaWdodCB0byBgZHJpdmVycy9uZXQvcGh5L0tjb25maWdgIHRvIHBpbnBvaW50IGV4YWN0bHkgaG93IGBQSFlMSUJgIGlzIGNvbmZpZ3VyZWQgYW5kIGFueSBkZXBlbmRlbmNpZXMgd2l0aGluIHRoYXQgY29udGV4dC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgaXRzIHBsYWNlIGluIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTM6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIFBIWSBMYXllciBDb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBQSFlMSU5LXG4gICA3Olx0XHR0cmlzdGF0ZVxuICAgODpcdFx0c2VsZWN0IFBIWUxJQlxuICAgOTpcdFx0c2VsZWN0IFNXUEhZXG4gIDEwOlx0XHRoZWxwXG4gIDExOlx0XHQgIFBIWWxpbmsgbW9kZWxzIHRoZSBsaW5rIGJldHdlZW4gdGhlIFBIWSBhbmQgTUFDLCBhbGxvd2luZyBmaXhlZFxuICAxMjpcdFx0ICBjb25maWd1cmF0aW9uIGxpbmtzLCBQSFlzLCBhbmQgU2VyZGVzIGxpbmtzIHdpdGggTUFDIGxldmVsXG4gIDEzOlx0XHQgIGF1dG9uZWdvdGlhdGlvbiBtb2Rlcy5cbiAgMTQ6XHRcbiAgMTU6XHRtZW51Y29uZmlnIFBIWUxJQlxuICAxNjpcdFx0dHJpc3RhdGUgXCYjMzQ7UEhZIERldmljZSBzdXBwb3J0IGFuZCBpbmZyYXN0cnVjdHVyZVwmIzM0O1xuICAxNzpcdFx0aGVscFxuICAxODpcdFx0ICBFdGhlcm5ldCBjb250cm9sbGVycyBhcmUgdXN1YWxseSBhdHRhY2hlZCB0byBQSFlcbiAgMTk6XHRcdCAgZGV2aWNlcy4gIFRoaXMgb3B0aW9uIHByb3ZpZGVzIGluZnJhc3RydWN0dXJlIGZvclxuICAyMDpcdFx0ICBtYW5hZ2luZyBQSFkgZGV2aWNlcy5cbiAgMjE6XHRcbiAgMjI6XHRpZiBQSFlMSUJcbiAgMjM6XHRcbiAgMjQ6XHRjb25maWcgU1dQSFlcbiAgMjU6XHRcdGJvb2xcbiAgMjY6XHRcbiAgMjc6XHRjb25maWcgUEhZX1BBQ0tBR0VcbiAgMjg6XHRcdCB0cmlzdGF0ZVxuICAyOTpcdFxuICAzMDpcdGNvbmZpZyBMRURfVFJJR0dFUl9QSFlcbiAgMzE6XHRcdGJvb2wgXCYjMzQ7U3VwcG9ydCBMRUQgdHJpZ2dlcnMgZm9yIHRyYWNraW5nIGxpbmsgc3RhdGVcJiMzNDtcbiAgMzI6XHRcdGRlcGVuZHMgb24gTEVEU19UUklHR0VSU1xuICAzMzpcdFx0aGVscFxuICAzNDpcdFx0ICBBZGRzIHN1cHBvcnQgZm9yIGEgc2V0IG9mIExFRCB0cmlnZ2VyIGV2ZW50cyBwZXItUEhZLiAgTGlua1xuICAzNTpcdFx0ICBzdGF0ZSBjaGFuZ2Ugd2lsbCB0cmlnZ2VyIHRoZSBldmVudHMsIGZvciBjb25zdW1wdGlvbiBieSBhblxuICAzNjpcdFx0ICBMRUQgY2xhc3MgZHJpdmVyLiAgVGhlcmUgYXJlIHRyaWdnZXJzIGZvciBlYWNoIGxpbmsgc3BlZWQgY3VycmVudGx5XG4gIDM3Olx0XHQgIHN1cHBvcnRlZCBieSB0aGUgUEhZIGFuZCBhbHNvIGEgb25lIGNvbW1vbiBcJiMzNDtsaW5rXCYjMzQ7IHRyaWdnZXIgYXMgYVxuICAzODpcdFx0ICBsb2dpY2FsLW9yIG9mIGFsbCB0aGUgbGluayBzcGVlZCBvbmVzLlxuICAzOTpcdFx0ICBBbGwgdGhlc2UgdHJpZ2dlcnMgYXJlIG5hbWVkIGFjY29yZGluZyB0byB0aGUgZm9sbG93aW5nIHBhdHRlcm46XG4gIDQwOlx0XHQgICAgICBcdTAwM2NtaWkgYnVzIGlkXHUwMDNlOlx1MDAzY3BoeVx1MDAzZTpcdTAwM2NzcGVlZFx1MDAzZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxMzowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODQzMQoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgdGhvdWdoIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzOgoKKipOYXZpZ2F0aW5nIHRoZSBOZXR3b3JrIERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgYW5kIG9wdGlvbnMgcmVsYXRlZCB0byBhIHNwZWNpZmljIG5ldHdvcmsgZHJpdmVyLCBsaWtlbHkgYSBQSFkgZHJpdmVyIGdpdmVuIHRoZSBjb250ZXh0LiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIHN0YXJ0IGF0IHRoZSB0b3AgbGV2ZWwgYW5kIHRyYWNlIGRvd24uIEkmIzM5O20gZ29pbmcgdG8ganVtcCBpbnRvIGBkcml2ZXJzL25ldC9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgb3ZlcmFyY2hpbmcgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBuZXR3b3JrIGRyaXZlcnMgYXJlIGxpa2VseSBkZWZpbmVkLiBUaGlzIHdpbGwgYmUgdGhlIHN0YXJ0aW5nIHBvaW50LiBJIGtub3cgdGhhdCBgZHJpdmVycy9uZXQvcGh5L0tjb25maWdgIGlzIGluY2x1ZGVkIGZyb20gaGVyZS4gQnkgaW5zcGVjdGluZyBgZHJpdmVycy9uZXQvS2NvbmZpZ2AsIEkgc2hvdWxkIGJlIGFibGUgdG8gc2VlIGV4YWN0bHkgKmhvdyogdGhlIFBIWSBjb25maWd1cmF0aW9uIGlzIGJyb3VnaHQgaW4sIGFuZCB3aGF0IGNvbmRpdGlvbnMgdHJpZ2dlciBpdHMgaW5jbHVzaW9uLiBUaGF0JiMzOTtzIHRoZSBiZXN0IGZpcnN0IHN0ZXAuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiBgZHJpdmVycy9uZXQvS2NvbmZpZ2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDEzOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9NTEyPXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9pcGEvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZy01MTMtXG5kcml2ZXJzL25ldC9LY29uZmlnOjUxNDpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvcGh5L0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWctNTE1LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxMzowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODc0MAoJCQkJCQkJb3V0cHV0OiAxMzkKCQkJCQkJCXRob3VnaHRzOiA3NTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBBbmFseXNpczogYHBoeV9kZXRhY2hgIGluIE5ldHdvcmtpbmcgQ29kZSoqCgpPa2F5LCBzbyBoZXJlJiMzOTtzIHRoZSBicmVha2Rvd24gb2YgbXkgdGhpbmtpbmcgcmVnYXJkaW5nIHRoaXMgcGF0Y2guIEZpcnN0LCBpdCYjMzk7cyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBgZHJpdmVycy9uZXQvS2NvbmZpZ2AgaXMgZ3VhcmRlZCBieSBgbWVudWNvbmZpZyBORVRERVZJQ0VTYCwgd2hpY2ggcmVsaWVzIG9uIGBORVRgLCBhbmQgYFBIWUxJQmAgZGVwZW5kcyBvbiBgTkVUREVWSUNFU2AsIHNvIHdlIGhhdmUgYSBjbGVhciBwYXRoIHRvIHRoZSBjb2RlLgoKTm93LCB0byB0aGUgZnV6emluZyBxdWVzdGlvbnMuCgoxLiAgKipJcyB0aGUgcGF0Y2ggcmVhY2hhYmxlPyoqIEFic29sdXRlbHkuIFRoZSBgcGh5X2RldGFjaGAgZnVuY3Rpb24gaXMgZGVmaW5pdGVseSByZWFjaGFibGUuIEl0JiMzOTtzIGNhbGxlZCB3aGVuIG5ldHdvcmsgZGV2aWNlcyB3aXRoIFBIWSBkZXZpY2VzIChsaWtlIFJlYWx0ZWsgTklDcywgVVNCIG5ldHdvcmsgYWRhcHRlcnMsIGFuZCBldmVuIGR1bW15IG9yIG1vY2sgbmV0d29yayBkZXZpY2VzKSBhcmUgb3BlbmVkIG9yIGNsb3NlZCwgdW5yZWdpc3RlcmVkLCBvciB3aGVuIGF0dGFjaCBmYWlscy4gQWxzbyB3aGVuIFBIWUxpbmsgZGlzY29ubmVjdHMsIHdoaWNoIGlzIGFuIGltcG9ydGFudCBwYXRoIHRvIGNvdmVyLgoKMi4gICoqSXMgaXQgd29ydGggZnV6emluZz8qKiBUaGlzIGlzIHdoZXJlIGl0IGdldHMgaW50ZXJlc3RpbmcuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBmb2xsb3dpbmcgY29yZSB0cmlhZ2UgcGhpbG9zb3BoeS4KCiAgICAqICAgVGhpcyBwYXRjaCBtb2RpZmllcyBhIGNydWNpYWwgZnVuY3Rpb24gYHBoeV9kZXRhY2goKWAgaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLgogICAgKiAgIFNwZWNpZmljYWxseSwgaXQgY2hhbmdlcyBob3cgd2UgaGFuZGxlIGFuIFJDVSBwb2ludGVyLCBgZGV2LSZndDtod3Byb3ZgLCBhZGRpbmcgYW4gUkNVIHByb3RlY3Rpb24gY2hlY2ssIHdoaWNoIGlzIGFuIGFzc2VydGlvbiBvciBsb2NrZGVwIGFzc2VydGlvbiBjaGFuZ2UuCiAgICAqICAgYHBoeV9kZXRhY2goKWAgaXMgY2FsbGVkIGJ5IG5ldHdvcmtpbmcgY29kZSBpbiByZWFjaGFibGUgZHJpdmVycyBhbmQgY29yZSBwaHlsaWIuCiAgICAqICAgVGhpcyBtb2RpZmllcyBhIGNyaXRpY2FsIGxvY2tkZXAgYXNzZXJ0aW9uIC8gcHJvdGVjdGlvbiwgc28gSSYjMzk7bSB0aGlua2luZyB0aGUgYW5zd2VyIHRvIHdvcnRoIGZ1enppbmcgc2hvdWxkIGJlIGB0cnVlYC4KCiAgICBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gYmVpbmcgdGhvcm91Z2ggYW5kIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBJIG5lZWQgdG8ga25vdzoKICAgICogYFdvcnRoRnV6emluZ2A6IGB0cnVlYAogICAgKiAgIGBGb2N1c1N5bWJvbHNgOiBJJiMzOTttIHplcm9pbmcgaW4gb24gYHBoeV9kZXRhY2hgLCBgcGh5X2Rpc2Nvbm5lY3RgLCBhbmQgYHBoeV9hdHRhY2hfZGlyZWN0YC4gVGhlc2UgYXJlIHRoZSBkaXJlY3QgY2FsbGVycyBvciBlbnRyeXBvaW50cyByZWxhdGVkIHRvIHRoZSBtb2RpZmllZCBmdW5jdGlvbi4KICAgICogICBgRW5hYmxlQ29uZmlnc2A6IEkmIzM5O3ZlIGdvdCBgTkVUREVWSUNFU2AgYW5kIGBQSFlMSUJgLCB3aGljaCBhcmUgYm90aCBuZWNlc3NhcnkuIEFuZCBvZiBjb3Vyc2UsIGBORVRgIGlzIGltcGxpZWQgYmVjYXVzZSBvZiB0aGUgZGVwZW5kZW5jeSBjaGFpbi4KCiAgICBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueSBvdGhlciBjb25maWcgcmVxdWlyZW1lbnRzOgogICAgKiAgIGBDT05GSUdfTkVUREVWSUNFUz15YAogICAgKiAgIGBDT05GSUdfUEhZTElCPXlgCiAgICAqICAgYChhbmQgcG9zc2libHkgYENPTkZJR19ORVQ9eWAsIGJ1dCBgTkVUREVWSUNFU2AgZGVwZW5kcyBvbiBgTkVUYCkuCgogICAgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBteSBmb2N1cyBzeW1ib2xzIG9uZSBsYXN0IHRpbWU6CiAgICAqICAgYHBoeV9kZXRhY2hgIGlzIHRoZSAqZXhhY3QqIGZ1bmN0aW9uIGJlaW5nIG1vZGlmaWVkLgogICAgKiAgIGBwaHlfZGlzY29ubmVjdGAgaXMgdGhlIG1haW4gZXhwb3J0ZWQgd3JhcHBlciBmdW5jdGlvbiBjYWxsZWQgYnkgZHJpdmVycyBkdXJpbmcgY2xlYW51cCwgJiMzOTtkb3duJiMzOTssIG9yICYjMzk7dW5iaW5kJiMzOTsgb3BlcmF0aW9ucy4KICAgICogICBgcGh5X2F0dGFjaF9kaXJlY3RgIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGF0dGFjaGVzIGFuZCBjYWxscyBgcGh5X2RldGFjaGAgb24gdGhlIGVycm9yIHBhdGguIFRoaXMgaXMgYSB2ZXJ5IGltcG9ydGFudCBwYXRoIHRvIGNvdmVyLgoKSSYjMzk7bSBjb25maWRlbnQgSSBoYXZlIGFsbCB0aGUga2V5IHBpZWNlcy4gRXZlcnl0aGluZyBpcyBsb29raW5nIGdvb2QsIHNvIGxldCYjMzk7cyBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDEzOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRERVZJQ0VTJiMzNDssCiAgICAmIzM0O1BIWUxJQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BoeV9kZXRhY2gmIzM0OywKICAgICYjMzQ7cGh5X2Rpc2Nvbm5lY3QmIzM0OywKICAgICYjMzQ7cGh5X2F0dGFjaF9kaXJlY3QmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvY2tkZXAvUkNVIHByb3RlY3Rpb24gYXNzZXJ0aW9uIG9uIGRldi1cdTAwM2Vod3Byb3Ygd2l0aGluIHBoeV9kZXRhY2goKSB0byBhdm9pZCBmYWxzZSBwb3NpdGl2ZSBsb2NrZGVwIHdhcm5pbmdzIHdoZW4gY2xlYW5pbmcgdXAgb24gcHJvYmUgZmFpbHVyZSBiZWZvcmUgbmV0X2RldmljZSByZWdpc3RyYXRpb24uIHBoeV9kZXRhY2goKSBhbmQgaXRzIGNhbGxlcnMgKHN1Y2ggYXMgcGh5X2Rpc2Nvbm5lY3QoKSBhbmQgcGh5X2F0dGFjaF9kaXJlY3QoKSkgYXJlIHJlYWNoYWJsZSB0aHJvdWdoIG5ldHdvcmsgZGV2aWNlIGxpZmVjeWNsZSBhbmQgbmV0bGluay9zb2NrZXQgY29uZmlndXJhdGlvbiBvcGVyYXRpb25zIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUREVWSUNFUyYjMzQ7LAogICAgJiMzNDtQSFlMSUImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwaHlfZGV0YWNoJiMzNDssCiAgICAmIzM0O3BoeV9kaXNjb25uZWN0JiMzNDssCiAgICAmIzM0O3BoeV9hdHRhY2hfZGlyZWN0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NrZGVwL1JDVSBwcm90ZWN0aW9uIGFzc2VydGlvbiBvbiBkZXYtXHUwMDNlaHdwcm92IHdpdGhpbiBwaHlfZGV0YWNoKCkgdG8gYXZvaWQgZmFsc2UgcG9zaXRpdmUgbG9ja2RlcCB3YXJuaW5ncyB3aGVuIGNsZWFuaW5nIHVwIG9uIHByb2JlIGZhaWx1cmUgYmVmb3JlIG5ldF9kZXZpY2UgcmVnaXN0cmF0aW9uLiBwaHlfZGV0YWNoKCkgYW5kIGl0cyBjYWxsZXJzIChzdWNoIGFzIHBoeV9kaXNjb25uZWN0KCkgYW5kIHBoeV9hdHRhY2hfZGlyZWN0KCkpIGFyZSByZWFjaGFibGUgdGhyb3VnaCBuZXR3b3JrIGRldmljZSBsaWZlY3ljbGUgYW5kIG5ldGxpbmsvc29ja2V0IGNvbmZpZ3VyYXRpb24gb3BlcmF0aW9ucyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDEzOjA1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTM6MDU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBhbiBSQ1UgbG9ja2RlcCBjaGVjayBpbiBgcGh5X2RldGFjaCgpYCBieSByZXBsYWNpbmcgYHJ0bmxfZGVyZWZlcmVuY2UoZGV2LVx1MDAzZWh3cHJvdilgIHdpdGggYHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoZGV2LVx1MDAzZWh3cHJvdiwgbG9ja2RlcF9ydG5sX2lzX2hlbGQoKSB8fCBkZXYtXHUwMDNlcmVnX3N0YXRlICE9IE5FVFJFR19SRUdJU1RFUkVEKWAgdG8gcHJldmVudCBsb2NrZGVwIHdhcm5pbmdzIGR1cmluZyBlYXJseSBwcm9iZSBlcnJvciBjbGVhbnVwIHdoZW4gUlROTCBpcyBub3QgaGVsZC5cblxuVGhpcyBjaGFuZ2UgaXMgcHVyZWx5IGEgbG9ja2RlcCBhc3NlcnRpb24gYWRqdXN0bWVudCBpbiBSQ1UgcG9pbnRlciBkZXJlZmVyZW5jaW5nLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGFsbG9jYXRpb25zLCBkYXRhIGNvcGllcyB0byB1c2Vyc3BhY2UsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLiBTdGFuZGFyZCBLQVNBTi9MT0NLREVQIGJ1aWxkcyBhcmUgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgbG9ja2luZyBvciBtZW1vcnkgc2FmZXR5IGlzc3VlcyBoZXJlLCBhbmQgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSByZXF1aXJpbmcgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTBmMmE2MDQ0NDhlY2FkNWI1NGZlYmMwYmY1M2MxMDZkODdmZTU0NApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgU2VwIDggMTM6MDU6MDIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYwppbmRleCA5NGIyZTg1ZTAwYTM3Li5hYzA5OTQzZTEwMGZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMKQEAgLTE5MzksOSAmIzQzOzE5MzksMTMgQEAgdm9pZCBwaHlfZGV0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiAJCXN0cnVjdCBod3RzdGFtcF9wcm92aWRlciAqaHdwcm92OwogCiAJCS8qIGh3cHJvdiBtYXkgdGVjaG5pY2FsbHkgYmUgcHJvdGVjdGVkIGJ5IG9wcyBsb2NrIGJ1dAotCQkgKiBub3QgZm9yIGRldmljZXMgd2l0aCBhIHBoeWRldiwgc2VlIHBoeV9saW5rX3RvcG9fYWRkX3BoeSgpCiYjNDM7CQkgKiBub3QgZm9yIGRldmljZXMgd2l0aCBhIHBoeWRldiwgc2VlIHBoeV9saW5rX3RvcG9fYWRkX3BoeSgpLgomIzQzOwkJICogUlROTCBpcyBub3QgaGVsZCB3aGVuIGNsZWFuaW5nIHVwIG9uIHByb2JlIGZhaWx1cmUgYmVmb3JlCiYjNDM7CQkgKiBkZXZpY2UgcmVnaXN0cmF0aW9uLgogCQkgKi8KLQkJaHdwcm92ID0gcnRubF9kZXJlZmVyZW5jZShkZXYtJmd0O2h3cHJvdik7CiYjNDM7CQlod3Byb3YgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGRldi0mZ3Q7aHdwcm92LAomIzQzOwkJCQkJCSAgIGxvY2tkZXBfcnRubF9pc19oZWxkKCkgfHwKJiM0MzsJCQkJCQkgICBkZXYtJmd0O3JlZ19zdGF0ZSAhPSBORVRSRUdfUkVHSVNURVJFRCk7CiAJCS8qIERpc2FibGUgdGltZXN0YW1wIGlmIGl0IGlzIHRoZSBvbmUgc2VsZWN0ZWQgKi8KIAkJaWYgKGh3cHJvdiAmYW1wOyZhbXA7IGh3cHJvdi0mZ3Q7cGh5ZGV2ID09IHBoeWRldikgewogCQkJcmN1X2Fzc2lnbl9wb2ludGVyKGRldi0mZ3Q7aHdwcm92LCBOVUxMKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDEzOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMTMKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzOTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQSFkgRGV0YWNobWVudCBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kICp3aHkqIHRoaXMgY2hhbmdlIGlzIG5lY2Vzc2FyeSB3aXRoaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBgcGh5X2RldGFjaGAgZnVuY3Rpb24uIFRoZSBkaWZmIGhpZ2hsaWdodHMgYSBtb2RpZmljYXRpb24gcmVsYXRlZCB0byBoYXJkd2FyZSB0aW1lc3RhbXBpbmcgKGBod3Byb3ZgKSBhbmQgaXRzIGludGVyYWN0aW9uIHdpdGggYHBoeWRldmAuIEkga25vdyB0aGF0IGBwaHlfZGV0YWNoYCBpcyByZXNwb25zaWJsZSBmb3IgY2xlYW5pbmcgdXAgYW5kIHJlbGVhc2luZyByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIGEgUEhZIGRldmljZS4KCkxvb2tpbmcgYXQgdGhlIGNvZGUsIGl0IHNlZW1zIHRoZSBjb3JlIGlzc3VlIGlzIHJlbGF0ZWQgdG8gdGhlIHByb3RlY3Rpb24gb2YgYGRldi0mZ3Q7aHdwcm92YC4gVGhlIGNvbW1lbnQgcG9pbnRzIG91dCBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbi4gIFRoZSBjb21tZW50IG1lbnRpb25zICYjMzQ7ZGV2aWNlcyB3aXRoIGEgcGh5ZGV2JiMzNDsg4oCTIHRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgbXkgYXR0ZW50aW9uIGJlY2F1c2UgSSBuZWVkIHRvIGNvbnNpZGVyIGFsbCB0aGUgY2FzZXMuIEl0IGFsc28gZXhwbGljaXRseSBtZW50aW9ucyB0aGF0IFJUTkwgaXMgKm5vdCogaGVsZCBkdXJpbmcgY2xlYW51cCBpbiBwcm9iZSBmYWlsdXJlIGJlZm9yZSByZWdpc3RyYXRpb24g4oCTIHRoaXMgY29udGV4dCBpcyBrZXksIGFuZCBJIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucy4KClRoZSBvcmlnaW5hbCBjb2RlIHVzZWQgYHJ0bmxfZGVyZWZlcmVuY2UoZGV2LSZndDtod3Byb3YpYC4gTm93LCBpdCB1c2VzIGByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKClgLiBUaGlzIGluZGljYXRlcyBhIHNoaWZ0IHRvIFJDVSBwcm90ZWN0aW9uLCB3aGljaCBpcyB0aGUgY29ycmVjdCBhcHByb2FjaCBoZXJlLiBUaGUgc2Vjb25kIGFyZ3VtZW50IHRvIGByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkYCBzcGVjaWZpZXMgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhlIGFjY2VzcyBpcyBzYWZlLiBJJiMzOTttIHNlZWluZyB0aGF0IHRoZSBhY2Nlc3MgaXMgc2FmZSBpZiBlaXRoZXI6IDEpIFJUTkwgaXMgaGVsZCwgb3IgMikgdGhlIGRldmljZSBpc24mIzM5O3QgcmVnaXN0ZXJlZCB5ZXQgKGBkZXYtJmd0O3JlZ19zdGF0ZSAhPSBORVRSRUdfUkVHSVNURVJFRGApLiBJIHVuZGVyc3RhbmQgdGhpcyBsb2dpYyDigJMgUkNVIGd1YXJhbnRlZXMgdGhhdCByZWFkcyBhcmUgc2FmZSBpZiBlaXRoZXIgYW4gUlROTCByZWFkIGxvY2sgaXMgaGVsZCwgb3IgaWYgdGhlIGRldmljZSBpcyB1bnJlZ2lzdGVyZWQuCgpUaGVyZWZvcmUsIHRoZSBwYXRjaCBpcyBtYWtpbmcgdGhlIGNvZGUgc2FmZXIgYW5kIG1vcmUgcm9idXN0LiBUaGlzIGlzIGEgZ29vZCBpbXByb3ZlbWVudCwgc3BlY2lmaWNhbGx5IGF2b2lkaW5nIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkYXRhIGNvcnJ1cHRpb24gaXNzdWVzIGR1cmluZyBQSFkgZGV0YWNobWVudCwgZXNwZWNpYWxseSBpbiB0aGUgY29udGV4dCBvZiBwcm9iZSBmYWlsdXJlcyBiZWZvcmUgcmVnaXN0cmF0aW9uLCB3aGVyZSBSVE5MIGlzbiYjMzk7dCBoZWxkLCBhbmQgdGhlIGRldmljZSBpcyBiZWluZyBkZS1yZWdpc3RlcmVkLiBJIGFwcHJvdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDEzOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE5MjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTkyNTpcdFx0fVxuMTkyNjpcdFxuMTkyNzpcdFx0aWYgKHBoeWRldi1cdTAwM2VzeXNmc19saW5rcykge1xuMTkyODpcdFx0XHRpZiAoZGV2KVxuMTkyOTpcdFx0XHRcdHN5c2ZzX3JlbW92ZV9saW5rKFx1MDAyNmRldi1cdTAwM2VkZXYua29iaiwgXCYjMzQ7cGh5ZGV2XCYjMzQ7KTtcbjE5MzA6XHRcdFx0c3lzZnNfcmVtb3ZlX2xpbmsoXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2LmtvYmosIFwmIzM0O2F0dGFjaGVkX2RldlwmIzM0Oyk7XG4xOTMxOlx0XHR9XG4xOTMyOlx0XG4xOTMzOlx0XHRpZiAoIXBoeWRldi1cdTAwM2VhdHRhY2hlZF9kZXYpXG4xOTM0Olx0XHRcdHN5c2ZzX3JlbW92ZV9maWxlKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldi5rb2JqLFxuMTkzNTpcdFx0XHRcdFx0ICBcdTAwMjZkZXZfYXR0cl9waHlfc3RhbmRhbG9uZS5hdHRyKTtcbjE5MzY6XHRcbjE5Mzc6XHRcdHBoeV9zdXNwZW5kKHBoeWRldik7XG4xOTM4Olx0XHRpZiAoZGV2KSB7XG4xOTM5Olx0XHRcdHN0cnVjdCBod3RzdGFtcF9wcm92aWRlciAqaHdwcm92O1xuMTk0MDpcdFxuMTk0MTpcdFx0XHQvKiBod3Byb3YgbWF5IHRlY2huaWNhbGx5IGJlIHByb3RlY3RlZCBieSBvcHMgbG9jayBidXRcbjE5NDI6XHRcdFx0ICogbm90IGZvciBkZXZpY2VzIHdpdGggYSBwaHlkZXYsIHNlZSBwaHlfbGlua190b3BvX2FkZF9waHkoKS5cbjE5NDM6XHRcdFx0ICogUlROTCBpcyBub3QgaGVsZCB3aGVuIGNsZWFuaW5nIHVwIG9uIHByb2JlIGZhaWx1cmUgYmVmb3JlXG4xOTQ0Olx0XHRcdCAqIGRldmljZSByZWdpc3RyYXRpb24uXG4xOTQ1Olx0XHRcdCAqL1xuMTk0NjpcdFx0XHRod3Byb3YgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGRldi1cdTAwM2Vod3Byb3YsXG4xOTQ3Olx0XHRcdFx0XHRcdFx0ICAgbG9ja2RlcF9ydG5sX2lzX2hlbGQoKSB8fFxuMTk0ODpcdFx0XHRcdFx0XHRcdCAgIGRldi1cdTAwM2VyZWdfc3RhdGUgIT0gTkVUUkVHX1JFR0lTVEVSRUQpO1xuMTk0OTpcdFx0XHQvKiBEaXNhYmxlIHRpbWVzdGFtcCBpZiBpdCBpcyB0aGUgb25lIHNlbGVjdGVkICovXG4xOTUwOlx0XHRcdGlmIChod3Byb3YgXHUwMDI2XHUwMDI2IGh3cHJvdi1cdTAwM2VwaHlkZXYgPT0gcGh5ZGV2KSB7XG4xOTUxOlx0XHRcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKGRldi1cdTAwM2Vod3Byb3YsIE5VTEwpO1xuMTk1MjpcdFx0XHRcdGtmcmVlX3JjdShod3Byb3YsIHJjdV9oZWFkKTtcbjE5NTM6XHRcdFx0fVxuMTk1NDpcdFxuMTk1NTpcdFx0XHRwaHlkZXYtXHUwMDNlYXR0YWNoZWRfZGV2LVx1MDAzZXBoeWRldiA9IE5VTEw7XG4xOTU2Olx0XHRcdHBoeWRldi1cdTAwM2VhdHRhY2hlZF9kZXYgPSBOVUxMO1xuMTk1NzpcdFx0XHRwaHlfbGlua190b3BvX2RlbF9waHkoZGV2LCBwaHlkZXYpO1xuMTk1ODpcdFx0fVxuMTk1OTpcdFxuMTk2MDpcdFx0cGh5ZGV2LVx1MDAzZXBoeV9saW5rX2NoYW5nZSA9IE5VTEw7XG4xOTYxOlx0XHRwaHlkZXYtXHUwMDNlcGh5bGluayA9IE5VTEw7XG4xOTYyOlx0XG4xOTYzOlx0XHRpZiAocGh5ZGV2LVx1MDAzZW1kaW8uZGV2LmRyaXZlcilcbjE5NjQ6XHRcdFx0bW9kdWxlX3B1dChwaHlkZXYtXHUwMDNlbWRpby5kZXYuZHJpdmVyLVx1MDAzZW93bmVyKTtcbjE5NjU6XHRcbjE5NjY6XHRcdC8qIElmIHRoZSBkZXZpY2UgaGFkIG5vIHNwZWNpZmljIGRyaXZlciBiZWZvcmUgKGkuZS4gLSBpdFxuMTk2NzpcdFx0ICogd2FzIHVzaW5nIHRoZSBnZW5lcmljIGRyaXZlciksIHdlIHVuYmluZCB0aGUgZGV2aWNlXG4xOTY4Olx0XHQgKiBmcm9tIHRoZSBnZW5lcmljIGRyaXZlciBzbyB0aGF0IHRoZXJlJiMzOTtzIGEgY2hhbmNlIGFcbjE5Njk6XHRcdCAqIHJlYWwgZHJpdmVyIGNvdWxkIGJlIGxvYWRlZFxuMTk3MDpcdFx0ICovXG4xOTcxOlx0XHRpZiAocGh5ZGV2LVx1MDAzZWlzX2dlbnBoeV9kcml2ZW4pIHtcbjE5NzI6XHRcdFx0ZGV2aWNlX3JlbGVhc2VfZHJpdmVyKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldik7XG4xOTczOlx0XHRcdHBoeWRldi1cdTAwM2Vpc19nZW5waHlfZHJpdmVuID0gMDtcbjE5NzQ6XHRcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTM6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg0NgoJCQkJCQkJb3V0cHV0OiAxODYKCQkJCQkJCXRob3VnaHRzOiA0NjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTG9ja2RlcCBBc3NlcnRpb24gQWRqdXN0bWVudCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIGNoYW5nZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBtb2RpZmljYXRpb24gdG8gaG93IGBod3Byb3ZgIGlzIGFjY2Vzc2VkLiBQcmV2aW91c2x5LCB3ZSB3ZXJlIHVzaW5nIGBydG5sX2RlcmVmZXJlbmNlYCwgd2hpY2ggdHJhbnNsYXRlcyB0byBgcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZGAgd2l0aCBhIHNwZWNpZmljIGxvY2tkZXAgY29uZGl0aW9uIOKAkyB0aGF0IHRoZSBSVE5MIGxvY2sgaXMgaGVsZC4gVGhlIHByb2JsZW0/IEl0IHNlZW1zIHRoYXQgaW4gY2VydGFpbiBwcm9iZSBjbGVhbnVwIHNjZW5hcmlvcywgc3BlY2lmaWNhbGx5ICpiZWZvcmUqIHRoZSBuZXR3b3JrIGRldmljZSBpcyBmdWxseSByZWdpc3RlcmVkIChgZGV2LSZndDtyZWdfc3RhdGUgIT0gTkVUUkVHX1JFR0lTVEVSRURgKSwgdGhlIFJUTkwgbG9jayBtaWdodCBub3QgYmUgaGVsZCB3aGVuIGBwaHlfZGV0YWNoYCBpcyBjYWxsZWQuIFRoaXMgdHJpZ2dlcnMgYSBsb2NrZGVwIHdhcm5pbmcsIGEgJiMzNDtzdXNwaWNpb3VzIFJDVSB1c2FnZSYjMzQ7IG1lc3NhZ2UsIHdoaWNoIGlzbiYjMzk7dCBpZGVhbC4KClRoZSBwcm9wb3NlZCBzb2x1dGlvbj8gVG8gYWRqdXN0IHRoZSBsb2NrZGVwIGFzc2VydGlvbiB3aXRoaW4gYHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWRgLiBUaGUgY2hhbmdlIGlzIGVzc2VudGlhbGx5IGV4dGVuZGluZyB0aGUgcHJvdGVjdGlvbiBjb25kaXRpb24gdG8gaW5jbHVkZSB0aGUgcmVnaXN0cmF0aW9uIHN0YXRlIGNoZWNrOiBub3csIGByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkYCB3aWxsIGNvbnNpZGVyIGVpdGhlciB0aGUgUlROTCBsb2NrIGJlaW5nIGhlbGQgKm9yKiB0aGUgZGV2aWNlICpub3QqIGJlaW5nIHJlZ2lzdGVyZWQgYXMgYWNjZXB0YWJsZS4gVGhpcyBsb29rcyBsaWtlIGEgcHVyZWx5IGRlZmVuc2l2ZSBjaGFuZ2UgZm9yIHRoZSBsb2NrZGVwLCB3aGljaCBuZWVkcyB0byBiZSBjYXJlZnVsbHkgYXNzZXNzZWQuCgpOZXh0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5LXJlbGF0ZWQgaXNzdWVzLiBJcyB0aGVyZSBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrIGhlcmU/IEkmIzM5O20gdGhpbmtpbmcuLi4gbm8uIFRoZXJlJiMzOTtzIG5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbiwgbm8gY29weWluZyBkYXRhIHRvIHVzZXIgc3BhY2UgdGhhdCBjb3VsZCBsZWFkIHRvIGxlYWtzLCBubyBuZXcgZmllbGRzIGludHJvZHVjZWQsIGFuZCBjcnVjaWFsbHksIG5vIGNoYW5nZXMgdG8gaW5pdGlhbGl6YXRpb24gcGF0aHMuIEZ1cnRoZXJtb3JlLCB0aGVyZSYjMzk7cyBubyB1dGlsaXphdGlvbiBvZiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBpbiBjb25kaXRpb25zIG9yIGFyaXRobWV0aWMuIFRoZSBvbmx5IHRoaW5nIG1vZGlmaWVkIGlzIHRoZSBsb2NrZGVwIGFzc2VydGlvbiBpbiBgcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZGAuIFRoYXQmIzM5O3MgaW1wb3J0YW50LgoKSSB0aGVuIHBpdm90IHRvIGNvbnNpZGVyIEtNU0FOIGFuZCBLQVNBTi4gS0FTQU4gYW5kIExPQ0tERVAgdGFrZSBjYXJlIG9mIG1lbW9yeSBidWdzIGFuZCBsb2NrZGVwIGlzc3Vlcy4gS01TQU4gaXMgdGhlIGtleSBoZXJlLCBsb29raW5nIGZvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcy4gU2luY2UgdGhlIGNoYW5nZSBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgY29waWVzIHRvIHVzZXJzcGFjZSBvciBuZXcgZmllbGRzL3ZhcmlhYmxlcywgdGhlcmUmIzM5O3Mgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeS4gR2l2ZW4gdGhhdCwgYE5lZWRzS01TQU5gIHNob3VsZCBiZSBgZmFsc2VgLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCYjMzk7cyByZXZpZXcgYWxsIHRoZSBjb21wb25lbnRzLiBEb2VzIHRoZSB1c2Ugb2YgYGRldi0mZ3Q7cmVnX3N0YXRlYCBwb3NlIGEgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeT8gTm8sIGJlY2F1c2UgYHN0cnVjdCBuZXRfZGV2aWNlYCBhbGxvY2F0ZXMgYW5kIHNldHMgYHJlZ19zdGF0ZWAgZHVyaW5nIGluaXRpYWxpemF0aW9uLiBBbmQgd2hhdCBhYm91dCBgZGV2LSZndDtod3Byb3ZgPyBBZ2Fpbiwgbm8uIFRoZSBwYXRjaCBpcywgZXNzZW50aWFsbHksIHNpbGVuY2luZyBhIGxvY2tkZXAgd2FybmluZyB0aGF0IGFwcGVhcnMgZHVyaW5nIHByb2JlIGZhaWx1cmUgY2xlYW51cCwgKmJlZm9yZSogdGhlIGRldmljZSBpcyByZWdpc3RlcmVkLiBJdCYjMzk7cyBqdXN0IGEgZGVmZW5zaXZlIGFkanVzdG1lbnQgdG8gdGhlIGxvY2tkZXAgY29uZGl0aW9uIHRvIGF2b2lkIHRob3NlIHNwdXJpb3VzIHdhcm5pbmdzLiBOb3csIGxldCYjMzk7cyBjYWxsIHRoZSBgc2V0LXJlc3VsdHNgIHRvb2wgYW5kIG1vdmUgZm9yd2FyZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTM6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYW4gUkNVIGxvY2tkZXAgY2hlY2sgaW4gYHBoeV9kZXRhY2goKWAgYnkgcmVwbGFjaW5nIGBydG5sX2RlcmVmZXJlbmNlKGRldi1cdTAwM2Vod3Byb3YpYCB3aXRoIGByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGRldi1cdTAwM2Vod3Byb3YsIGxvY2tkZXBfcnRubF9pc19oZWxkKCkgfHwgZGV2LVx1MDAzZXJlZ19zdGF0ZSAhPSBORVRSRUdfUkVHSVNURVJFRClgIHRvIHByZXZlbnQgbG9ja2RlcCB3YXJuaW5ncyBkdXJpbmcgZWFybHkgcHJvYmUgZXJyb3IgY2xlYW51cCB3aGVuIFJUTkwgaXMgbm90IGhlbGQuXG5cblRoaXMgY2hhbmdlIGlzIHB1cmVseSBhIGxvY2tkZXAgYXNzZXJ0aW9uIGFkanVzdG1lbnQgaW4gUkNVIHBvaW50ZXIgZGVyZWZlcmVuY2luZy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG5ldyBhbGxvY2F0aW9ucywgZGF0YSBjb3BpZXMgdG8gdXNlcnNwYWNlLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gU3RhbmRhcmQgS0FTQU4vTE9DS0RFUCBidWlsZHMgYXJlIHN1ZmZpY2llbnQgdG8gY2F0Y2ggYW55IGxvY2tpbmcgb3IgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgaGVyZSwgYW5kIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UgcmVxdWlyaW5nIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGFuIFJDVSBsb2NrZGVwIGNoZWNrIGluIGBwaHlfZGV0YWNoKClgIGJ5IHJlcGxhY2luZyBgcnRubF9kZXJlZmVyZW5jZShkZXYtXHUwMDNlaHdwcm92KWAgd2l0aCBgcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChkZXYtXHUwMDNlaHdwcm92LCBsb2NrZGVwX3J0bmxfaXNfaGVsZCgpIHx8IGRldi1cdTAwM2VyZWdfc3RhdGUgIT0gTkVUUkVHX1JFR0lTVEVSRUQpYCB0byBwcmV2ZW50IGxvY2tkZXAgd2FybmluZ3MgZHVyaW5nIGVhcmx5IHByb2JlIGVycm9yIGNsZWFudXAgd2hlbiBSVE5MIGlzIG5vdCBoZWxkLlxuXG5UaGlzIGNoYW5nZSBpcyBwdXJlbHkgYSBsb2NrZGVwIGFzc2VydGlvbiBhZGp1c3RtZW50IGluIFJDVSBwb2ludGVyIGRlcmVmZXJlbmNpbmcuIEl0IGRvZXMgbm90IGludHJvZHVjZSBuZXcgYWxsb2NhdGlvbnMsIGRhdGEgY29waWVzIHRvIHVzZXJzcGFjZSwgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIFN0YW5kYXJkIEtBU0FOL0xPQ0tERVAgYnVpbGRzIGFyZSBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSBsb2NraW5nIG9yIG1lbW9yeSBzYWZldHkgaXNzdWVzIGhlcmUsIGFuZCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIHJlcXVpcmluZyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDEzOjA1OjAzLjM5NTM1MDc0M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxNjY1MTUxNDU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVERFVklDRVNcIixcbiAgICBcIlBIWUxJQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBoeV9kZXRhY2hcIixcbiAgICBcInBoeV9kaXNjb25uZWN0XCIsXG4gICAgXCJwaHlfYXR0YWNoX2RpcmVjdFwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYW4gUkNVIGxvY2tkZXAgY2hlY2sgaW4gYHBoeV9kZXRhY2goKWAgYnkgcmVwbGFjaW5nIGBydG5sX2RlcmVmZXJlbmNlKGRldi1cXHUwMDNlaHdwcm92KWAgd2l0aCBgcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChkZXYtXFx1MDAzZWh3cHJvdiwgbG9ja2RlcF9ydG5sX2lzX2hlbGQoKSB8fCBkZXYtXFx1MDAzZXJlZ19zdGF0ZSAhPSBORVRSRUdfUkVHSVNURVJFRClgIHRvIHByZXZlbnQgbG9ja2RlcCB3YXJuaW5ncyBkdXJpbmcgZWFybHkgcHJvYmUgZXJyb3IgY2xlYW51cCB3aGVuIFJUTkwgaXMgbm90IGhlbGQuXFxuXFxuVGhpcyBjaGFuZ2UgaXMgcHVyZWx5IGEgbG9ja2RlcCBhc3NlcnRpb24gYWRqdXN0bWVudCBpbiBSQ1UgcG9pbnRlciBkZXJlZmVyZW5jaW5nLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGFsbG9jYXRpb25zLCBkYXRhIGNvcGllcyB0byB1c2Vyc3BhY2UsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLiBTdGFuZGFyZCBLQVNBTi9MT0NLREVQIGJ1aWxkcyBhcmUgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgbG9ja2luZyBvciBtZW1vcnkgc2FmZXR5IGlzc3VlcyBoZXJlLCBhbmQgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSByZXF1aXJpbmcgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NrZGVwL1JDVSBwcm90ZWN0aW9uIGFzc2VydGlvbiBvbiBkZXYtXFx1MDAzZWh3cHJvdiB3aXRoaW4gcGh5X2RldGFjaCgpIHRvIGF2b2lkIGZhbHNlIHBvc2l0aXZlIGxvY2tkZXAgd2FybmluZ3Mgd2hlbiBjbGVhbmluZyB1cCBvbiBwcm9iZSBmYWlsdXJlIGJlZm9yZSBuZXRfZGV2aWNlIHJlZ2lzdHJhdGlvbi4gcGh5X2RldGFjaCgpIGFuZCBpdHMgY2FsbGVycyAoc3VjaCBhcyBwaHlfZGlzY29ubmVjdCgpIGFuZCBwaHlfYXR0YWNoX2RpcmVjdCgpKSBhcmUgcmVhY2hhYmxlIHRocm91Z2ggbmV0d29yayBkZXZpY2UgbGlmZWN5Y2xlIGFuZCBuZXRsaW5rL3NvY2tldCBjb25maWd1cmF0aW9uIG9wZXJhdGlvbnMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxMzowNTowMy4zOTUzNTYxODNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczMTY5ODgxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGEwZjJhNjA0NDQ4ZWNhZDViNTRmZWJjMGJmNTNjMTA2ZDg3ZmU1NDRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBTZXAgOCAxMzowNTowMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xcbmluZGV4IDk0YjJlODVlMDBhMzcuLmFjMDk5NDNlMTAwZmIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcXG5AQCAtMTkzOSw5ICsxOTM5LDEzIEBAIHZvaWQgcGh5X2RldGFjaChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiBcXHRcXHRzdHJ1Y3QgaHd0c3RhbXBfcHJvdmlkZXIgKmh3cHJvdjtcXG4gXFxuIFxcdFxcdC8qIGh3cHJvdiBtYXkgdGVjaG5pY2FsbHkgYmUgcHJvdGVjdGVkIGJ5IG9wcyBsb2NrIGJ1dFxcbi1cXHRcXHQgKiBub3QgZm9yIGRldmljZXMgd2l0aCBhIHBoeWRldiwgc2VlIHBoeV9saW5rX3RvcG9fYWRkX3BoeSgpXFxuK1xcdFxcdCAqIG5vdCBmb3IgZGV2aWNlcyB3aXRoIGEgcGh5ZGV2LCBzZWUgcGh5X2xpbmtfdG9wb19hZGRfcGh5KCkuXFxuK1xcdFxcdCAqIFJUTkwgaXMgbm90IGhlbGQgd2hlbiBjbGVhbmluZyB1cCBvbiBwcm9iZSBmYWlsdXJlIGJlZm9yZVxcbitcXHRcXHQgKiBkZXZpY2UgcmVnaXN0cmF0aW9uLlxcbiBcXHRcXHQgKi9cXG4tXFx0XFx0aHdwcm92ID0gcnRubF9kZXJlZmVyZW5jZShkZXYtXFx1MDAzZWh3cHJvdik7XFxuK1xcdFxcdGh3cHJvdiA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoZGV2LVxcdTAwM2Vod3Byb3YsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgIGxvY2tkZXBfcnRubF9pc19oZWxkKCkgfHxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgZGV2LVxcdTAwM2VyZWdfc3RhdGUgIT0gTkVUUkVHX1JFR0lTVEVSRUQpO1xcbiBcXHRcXHQvKiBEaXNhYmxlIHRpbWVzdGFtcCBpZiBpdCBpcyB0aGUgb25lIHNlbGVjdGVkICovXFxuIFxcdFxcdGlmIChod3Byb3YgXFx1MDAyNlxcdTAwMjYgaHdwcm92LVxcdTAwM2VwaHlkZXYgPT0gcGh5ZGV2KSB7XFxuIFxcdFxcdFxcdHJjdV9hc3NpZ25fcG9pbnRlcihkZXYtXFx1MDAzZWh3cHJvdiwgTlVMTCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDEzOjA1OjA0LjEyNzc1Njk2NFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NDY3MDM0NjAxMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUREVWSUNFU1wiLFxuICAgIFwiUEhZTElCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGh5X2RldGFjaFwiLFxuICAgIFwicGh5X2Rpc2Nvbm5lY3RcIixcbiAgICBcInBoeV9hdHRhY2hfZGlyZWN0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvY2tkZXAvUkNVIHByb3RlY3Rpb24gYXNzZXJ0aW9uIG9uIGRldi1cXHUwMDNlaHdwcm92IHdpdGhpbiBwaHlfZGV0YWNoKCkgdG8gYXZvaWQgZmFsc2UgcG9zaXRpdmUgbG9ja2RlcCB3YXJuaW5ncyB3aGVuIGNsZWFuaW5nIHVwIG9uIHByb2JlIGZhaWx1cmUgYmVmb3JlIG5ldF9kZXZpY2UgcmVnaXN0cmF0aW9uLiBwaHlfZGV0YWNoKCkgYW5kIGl0cyBjYWxsZXJzIChzdWNoIGFzIHBoeV9kaXNjb25uZWN0KCkgYW5kIHBoeV9hdHRhY2hfZGlyZWN0KCkpIGFyZSByZWFjaGFibGUgdGhyb3VnaCBuZXR3b3JrIGRldmljZSBsaWZlY3ljbGUgYW5kIG5ldGxpbmsvc29ja2V0IGNvbmZpZ3VyYXRpb24gb3BlcmF0aW9ucyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTBmMmE2MDQ0NDhlY2FkNWI1NGZlYmMwYmY1M2MxMDZkODdmZTU0NFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDggMTM6MDU6MDIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuaW5kZXggOTRiMmU4NWUwMGEzNy4uYWMwOTk0M2UxMDBmYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbkBAIC0xOTM5LDkgKzE5MzksMTMgQEAgdm9pZCBwaHlfZGV0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRcdHN0cnVjdCBod3RzdGFtcF9wcm92aWRlciAqaHdwcm92O1xuIFxuIFx0XHQvKiBod3Byb3YgbWF5IHRlY2huaWNhbGx5IGJlIHByb3RlY3RlZCBieSBvcHMgbG9jayBidXRcbi1cdFx0ICogbm90IGZvciBkZXZpY2VzIHdpdGggYSBwaHlkZXYsIHNlZSBwaHlfbGlua190b3BvX2FkZF9waHkoKVxuK1x0XHQgKiBub3QgZm9yIGRldmljZXMgd2l0aCBhIHBoeWRldiwgc2VlIHBoeV9saW5rX3RvcG9fYWRkX3BoeSgpLlxuK1x0XHQgKiBSVE5MIGlzIG5vdCBoZWxkIHdoZW4gY2xlYW5pbmcgdXAgb24gcHJvYmUgZmFpbHVyZSBiZWZvcmVcbitcdFx0ICogZGV2aWNlIHJlZ2lzdHJhdGlvbi5cbiBcdFx0ICovXG4tXHRcdGh3cHJvdiA9IHJ0bmxfZGVyZWZlcmVuY2UoZGV2LVx1MDAzZWh3cHJvdik7XG4rXHRcdGh3cHJvdiA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoZGV2LVx1MDAzZWh3cHJvdixcbitcdFx0XHRcdFx0XHQgICBsb2NrZGVwX3J0bmxfaXNfaGVsZCgpIHx8XG4rXHRcdFx0XHRcdFx0ICAgZGV2LVx1MDAzZXJlZ19zdGF0ZSAhPSBORVRSRUdfUkVHSVNURVJFRCk7XG4gXHRcdC8qIERpc2FibGUgdGltZXN0YW1wIGlmIGl0IGlzIHRoZSBvbmUgc2VsZWN0ZWQgKi9cbiBcdFx0aWYgKGh3cHJvdiBcdTAwMjZcdTAwMjYgaHdwcm92LVx1MDAzZXBoeWRldiA9PSBwaHlkZXYpIHtcbiBcdFx0XHRyY3VfYXNzaWduX3BvaW50ZXIoZGV2LVx1MDAzZWh3cHJvdiwgTlVMTCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxMzowNTowNC4xMjc3NTgzMzRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2ODA0NDU1MDQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBIWSBEZXZpY2UgRGV0YWNobWVudCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29tbWl0IHJlbGF0ZWQgdG8gYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBwaHlfZGV0YWNoYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRpdmUgaW50byB0aGUgY29kZSBhbmQgdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIGhlcmUgd2l0aCB0aGUgaGFyZHdhcmUgdGltZXN0YW1wIHByb3ZpZGVyIChgaHdwcm92YCkuIEkgbmVlZCB0byBncmFzcCB3aHkgdGhlcmUncyBhIGNoYW5nZSByZWxhdGVkIHRvIGhvdyB3ZSdyZSBhY2Nlc3NpbmcgdGhpcyBgaHdwcm92YCBzdHJ1Y3R1cmUsIHBhcnRpY3VsYXJseSBpbiB0aGUgY29udGV4dCBvZiBkZXZpY2UgZGV0YWNobWVudC5cblxuVGhlIGNvbW1lbnQgbWVudGlvbnMgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gaW52b2x2aW5nIGBwaHlfbGlua190b3BvX2FkZF9waHkoKWAsIGFuZCB0aGF0IFJUTkwgaXNuJ3QgYWx3YXlzIGhlbGQsIGVzcGVjaWFsbHkgZHVyaW5nIHByb2JlIGZhaWx1cmVzIGJlZm9yZSBkZXZpY2UgcmVnaXN0cmF0aW9uLiBUaGF0J3MgYSByZWQgZmxhZy4gSSBrbm93IHRoYXQgaWYgYGh3cHJvdmAgaXNuJ3QgaGFuZGxlZCBjb3JyZWN0bHkgZHVyaW5nIHRoZXNlIHNjZW5hcmlvcywgaXQgY2FuIGxlYWQgdG8gbWVtb3J5IGNvcnJ1cHRpb24gb3Igb3RoZXIgbmFzdHkgaXNzdWVzLiBUaGlzIGByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkYCB3aXRoIGFkZGVkIHByb3RlY3Rpb24gaXMgbGlrZWx5IHRoZSBmaXguXG5cbk15IGltbWVkaWF0ZSBwbGFuIGlzIHRvIHVzZSB0b29scywgYGdyZXBwZXJgIG9yIGByZWFkLWZpbGVgLCB0byBjaGVjayB0aGUgY29kZSBpdHNlbGYsIHRvIHZlcmlmeSB0aGUgY29udGV4dCBvZiBgcGh5X2RldGFjaGAgYW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gYGRldi1cdTAwM2Vod3Byb3ZgLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIHRoZSBhZGRlZCBwcm90ZWN0aW9uIGBsb2NrZGVwX3J0bmxfaXNfaGVsZCgpIHx8IGRldi1cdTAwM2VyZWdfc3RhdGUgIT0gTkVUUkVHX1JFR0lTVEVSRURgIGlzIHN1ZmZpY2llbnQgZm9yIGFsbCB0aGUgcG9zc2libGUgY29uZGl0aW9ucyBhbmQgdGhhdCBpdCBkb2Vzbid0IGludHJvZHVjZSBhbnkgbmV3IHJlZ3Jlc3Npb25zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZXhhY3QgY29uZGl0aW9ucyB1bmRlciB3aGljaCB3ZSBtaWdodCBiZSBhY2Nlc3NpbmcgYGRldi1cdTAwM2Vod3Byb3ZgIHdpdGhvdXQgUlROTCBoZWxkLiBBIGdvb2QgdW5kZXJzdGFuZGluZyBvZiB0aGUgbmV0ZGV2aWNlIHJlZ2lzdHJhdGlvbiBzdGF0ZSBpcyBlc3NlbnRpYWwgaGVyZS4gU3BlY2lmaWNhbGx5LCBgTkVUUkVHX1JFR0lTVEVSRURgIGFuZCByZWxhdGVkIHN0YXRlcy4gSSBhbHNvIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIFBIWSBkZXZpY2UgaW50ZXJhY3RzIHdpdGggdGhlIG5ldHdvcmtpbmcgc3RhY2sgYW5kIHRoZSBoYXJkd2FyZSB0aW1lc3RhbXBpbmcgY29uZmlndXJhdGlvbiB0byBldmFsdWF0ZSB0aGUgbG9naWMncyBjb3JyZWN0bmVzcyBhbmQgaW1wYWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDAxLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDE4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTM6MDU6MTAuOTMyMjE1NDk4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE4MTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTkyNSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTkyNTpcXHRcXHR9XFxuMTkyNjpcXHRcXG4xOTI3OlxcdFxcdGlmIChwaHlkZXYtXFx1MDAzZXN5c2ZzX2xpbmtzKSB7XFxuMTkyODpcXHRcXHRcXHRpZiAoZGV2KVxcbjE5Mjk6XFx0XFx0XFx0XFx0c3lzZnNfcmVtb3ZlX2xpbmsoXFx1MDAyNmRldi1cXHUwMDNlZGV2LmtvYmosIFxcXCJwaHlkZXZcXFwiKTtcXG4xOTMwOlxcdFxcdFxcdHN5c2ZzX3JlbW92ZV9saW5rKFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2LmtvYmosIFxcXCJhdHRhY2hlZF9kZXZcXFwiKTtcXG4xOTMxOlxcdFxcdH1cXG4xOTMyOlxcdFxcbjE5MzM6XFx0XFx0aWYgKCFwaHlkZXYtXFx1MDAzZWF0dGFjaGVkX2RldilcXG4xOTM0OlxcdFxcdFxcdHN5c2ZzX3JlbW92ZV9maWxlKFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2LmtvYmosXFxuMTkzNTpcXHRcXHRcXHRcXHRcXHQgIFxcdTAwMjZkZXZfYXR0cl9waHlfc3RhbmRhbG9uZS5hdHRyKTtcXG4xOTM2OlxcdFxcbjE5Mzc6XFx0XFx0cGh5X3N1c3BlbmQocGh5ZGV2KTtcXG4xOTM4OlxcdFxcdGlmIChkZXYpIHtcXG4xOTM5OlxcdFxcdFxcdHN0cnVjdCBod3RzdGFtcF9wcm92aWRlciAqaHdwcm92O1xcbjE5NDA6XFx0XFxuMTk0MTpcXHRcXHRcXHQvKiBod3Byb3YgbWF5IHRlY2huaWNhbGx5IGJlIHByb3RlY3RlZCBieSBvcHMgbG9jayBidXRcXG4xOTQyOlxcdFxcdFxcdCAqIG5vdCBmb3IgZGV2aWNlcyB3aXRoIGEgcGh5ZGV2LCBzZWUgcGh5X2xpbmtfdG9wb19hZGRfcGh5KCkuXFxuMTk0MzpcXHRcXHRcXHQgKiBSVE5MIGlzIG5vdCBoZWxkIHdoZW4gY2xlYW5pbmcgdXAgb24gcHJvYmUgZmFpbHVyZSBiZWZvcmVcXG4xOTQ0OlxcdFxcdFxcdCAqIGRldmljZSByZWdpc3RyYXRpb24uXFxuMTk0NTpcXHRcXHRcXHQgKi9cXG4xOTQ2OlxcdFxcdFxcdGh3cHJvdiA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoZGV2LVxcdTAwM2Vod3Byb3YsXFxuMTk0NzpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICBsb2NrZGVwX3J0bmxfaXNfaGVsZCgpIHx8XFxuMTk0ODpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICBkZXYtXFx1MDAzZXJlZ19zdGF0ZSAhPSBORVRSRUdfUkVHSVNURVJFRCk7XFxuMTk0OTpcXHRcXHRcXHQvKiBEaXNhYmxlIHRpbWVzdGFtcCBpZiBpdCBpcyB0aGUgb25lIHNlbGVjdGVkICovXFxuMTk1MDpcXHRcXHRcXHRpZiAoaHdwcm92IFxcdTAwMjZcXHUwMDI2IGh3cHJvdi1cXHUwMDNlcGh5ZGV2ID09IHBoeWRldikge1xcbjE5NTE6XFx0XFx0XFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKGRldi1cXHUwMDNlaHdwcm92LCBOVUxMKTtcXG4xOTUyOlxcdFxcdFxcdFxcdGtmcmVlX3JjdShod3Byb3YsIHJjdV9oZWFkKTtcXG4xOTUzOlxcdFxcdFxcdH1cXG4xOTU0OlxcdFxcbjE5NTU6XFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2VhdHRhY2hlZF9kZXYtXFx1MDAzZXBoeWRldiA9IE5VTEw7XFxuMTk1NjpcXHRcXHRcXHRwaHlkZXYtXFx1MDAzZWF0dGFjaGVkX2RldiA9IE5VTEw7XFxuMTk1NzpcXHRcXHRcXHRwaHlfbGlua190b3BvX2RlbF9waHkoZGV2LCBwaHlkZXYpO1xcbjE5NTg6XFx0XFx0fVxcbjE5NTk6XFx0XFxuMTk2MDpcXHRcXHRwaHlkZXYtXFx1MDAzZXBoeV9saW5rX2NoYW5nZSA9IE5VTEw7XFxuMTk2MTpcXHRcXHRwaHlkZXYtXFx1MDAzZXBoeWxpbmsgPSBOVUxMO1xcbjE5NjI6XFx0XFxuMTk2MzpcXHRcXHRpZiAocGh5ZGV2LVxcdTAwM2VtZGlvLmRldi5kcml2ZXIpXFxuMTk2NDpcXHRcXHRcXHRtb2R1bGVfcHV0KHBoeWRldi1cXHUwMDNlbWRpby5kZXYuZHJpdmVyLVxcdTAwM2Vvd25lcik7XFxuMTk2NTpcXHRcXG4xOTY2OlxcdFxcdC8qIElmIHRoZSBkZXZpY2UgaGFkIG5vIHNwZWNpZmljIGRyaXZlciBiZWZvcmUgKGkuZS4gLSBpdFxcbjE5Njc6XFx0XFx0ICogd2FzIHVzaW5nIHRoZSBnZW5lcmljIGRyaXZlciksIHdlIHVuYmluZCB0aGUgZGV2aWNlXFxuMTk2ODpcXHRcXHQgKiBmcm9tIHRoZSBnZW5lcmljIGRyaXZlciBzbyB0aGF0IHRoZXJlJ3MgYSBjaGFuY2UgYVxcbjE5Njk6XFx0XFx0ICogcmVhbCBkcml2ZXIgY291bGQgYmUgbG9hZGVkXFxuMTk3MDpcXHRcXHQgKi9cXG4xOTcxOlxcdFxcdGlmIChwaHlkZXYtXFx1MDAzZWlzX2dlbnBoeV9kcml2ZW4pIHtcXG4xOTcyOlxcdFxcdFxcdGRldmljZV9yZWxlYXNlX2RyaXZlcihcXHUwMDI2cGh5ZGV2LVxcdTAwM2VtZGlvLmRldik7XFxuMTk3MzpcXHRcXHRcXHRwaHlkZXYtXFx1MDAzZWlzX2dlbnBoeV9kcml2ZW4gPSAwO1xcbjE5NzQ6XFx0XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxMzowNToxMC45MzI2MzY4NThaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMTgyNTk2Njg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgUEhZIERldGFjaG1lbnQgYW5kIERldmljZSBVc2FnZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBkaWcgaW50byB0aGUgYHBoeV9kZXRhY2hgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiBpdHMgY2FsbHMuIEknbSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zIGZvciBQSFkgZGV2aWNlIG1hbmFnZW1lbnQgYW5kIGhvdyB0aGVzZSBwaHlzaWNhbCBsYXllciBkZXZpY2VzIGFyZSBhY3R1YWxseSAqdXNlZCogd2l0aGluIHRoZSBzeXN0ZW0uXG5cbkkgd2FudCB0byBzZWUgdGhlIHZhcmlvdXMgc2NlbmFyaW9zIHdoZXJlIGEgUEhZIGlzIGRldGFjaGVkIOKAkyBpcyBpdCBqdXN0IGR1cmluZyBkcml2ZXIgdW5sb2FkLCBvciBhcmUgdGhlcmUgc2l0dWF0aW9ucyB3aGVyZSBhIFBIWSBpcyBkeW5hbWljYWxseSBkaXNjb25uZWN0ZWQsIHBlcmhhcHMgZHVlIHRvIGhvdC1wbHVnIGV2ZW50cywgcG93ZXIgbWFuYWdlbWVudCwgb3Igc29tZSBvdGhlciBoYXJkd2FyZSBlcnJvciBjb25kaXRpb24/IFVuZGVyc3RhbmRpbmcgdGhlIGRldGFjaCBzY2VuYXJpb3Mgd2lsbCBpbW1lZGlhdGVseSBzaG93IGhvdyByZXNpbGllbnQgdGhlIFBIWSBkcml2ZXIgaXMuXG5cblRoZSByZWFsIG1lYXQgd2lsbCBiZSBmaWd1cmluZyBvdXQgKmhvdyogdGhlIFBIWXMgYXJlIGVtcGxveWVkIGJlZm9yZSBkZXRhY2htZW50LiBJIG5lZWQgdG8gdHJhY2UgdGhlIHJlc291cmNlIGFsbG9jYXRpb24sIGRhdGEgdHJhbnNmZXIgaW5pdGlhdGlvbiwgYW5kIHNpZ25hbCBwcm9jZXNzaW5nIHdvcmtmbG93cyB0aGF0IGhhcHBlbiBhcm91bmQgdGhlIHVzZSBvZiB0aGUgUEhZLiBJJ2xsIGZvY3VzIG9uIGhvdyB0aGUgUEhZIGFic3RyYWN0aW9uIGxheWVyIGludGVyYWN0cyB3aXRoIHRoZSBjb3JlIG5ldHdvcmtpbmcgc3RhY2sgb3Igd2hhdGV2ZXIgb3RoZXIgc3Vic3lzdGVtcyBhcmUgdXNpbmcgaXQuIEFueSBpbnNpZ2h0cyBpbnRvIGhvdyB0aGUgUEhZIHJlc291cmNlcyBhcmUgcmVsZWFzZWQgZHVyaW5nIHRoZSBkZXRhY2ggcHJvY2VzcyBhcmUgZ29pbmcgdG8gYmUgY3JpdGljYWwgdG8gdW5kZXJzdGFuZGluZyBkcml2ZXIgYmVoYXZpb3IuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2MjgsIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDEzOjA1OjE0LjExNTIzNzM1NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDYxNjg5MzQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeV9kZXRhY2hcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYz04MDM9c3RhdGljIHZvaWQgeGdiZV9waHlfZnJlZV9waHlfZGV2aWNlKHN0cnVjdCB4Z2JlX3Bydl9kYXRhICpwZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtODA3LVxcdGlmIChwaHlfZGF0YS1cXHUwMDNlcGh5ZGV2KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYzo4MDg6XFx0XFx0cGh5X2RldGFjaChwaHlfZGF0YS1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTgwOS1cXHRcXHRwaHlfZGV2aWNlX3JlbW92ZShwaHlfZGF0YS1cXHUwMDNlcGh5ZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbWdlbmV0LmM9MTcwOT1zdGF0aWMgaW50IGJjbWdlbmV0X3Bvd2VyX2Rvd24oc3RydWN0IGJjbWdlbmV0X3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21nZW5ldC5jLTE3MTYtXFx0Y2FzZSBHRU5FVF9QT1dFUl9DQUJMRV9TRU5TRTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21nZW5ldC5jOjE3MTc6XFx0XFx0cGh5X2RldGFjaChwcml2LVxcdTAwM2VkZXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtZ2VuZXQuYy0xNzE4LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM9Mjk5PUVYUE9SVF9TWU1CT0wob2ZfcGh5X2ZpbmRfZGV2aWNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTMxMC0gKiBzdHJ1Y3QgZGV2aWNlIHJlZmNvdW50IGluY3JlbWVudGVkIGJ5IG9uZSwgb3IgTlVMTCBvbiBmYWlsdXJlLiBUaGVcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzozMTE6ICogcmVmY291bnQgbXVzdCBiZSBkcm9wcGVkIGJ5IGNhbGxpbmcgcGh5X2Rpc2Nvbm5lY3QoKSBvciBwaHlfZGV0YWNoKCkuXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMzEyLSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM9MzMzPUVYUE9SVF9TWU1CT0wob2ZfcGh5X2Nvbm5lY3QpO1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMzQzLSAqIHN0cnVjdCBkZXZpY2UgcmVmY291bnQgaW5jcmVtZW50ZWQgYnkgb25lLCBvciBOVUxMIG9uIGZhaWx1cmUuIFRoZVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjM0NDogKiByZWZjb3VudCBtdXN0IGJlIGRyb3BwZWQgYnkgY2FsbGluZyBwaHlfZGlzY29ubmVjdCgpIG9yIHBoeV9kZXRhY2goKS5cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0zNDUtICovXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LmM9MTMxOD1FWFBPUlRfU1lNQk9MX0dQTChwaHlfc3RhcnRfbWFjaGluZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtMTMyNS0gKiAgIHN0YXRlIHRvIFVQICh1bmxlc3MgaXQgd2Fzbid0IHVwIHlldCkuIFRoaXMgZnVuY3Rpb24gbXVzdCBiZVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYzoxMzI2OiAqICAgY2FsbGVkIEJFRk9SRSBwaHlfZGV0YWNoLlxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0xMzI3LSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0zMDE9c3RhdGljIGJvb2wgbWRpb19idXNfcGh5X21heV9zdXNwZW5kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTMxNy1cXHQgKiBzdXNwZW5kZWQgYXMgcGFydCBvZiBhIHByaW9yIGNhbGwgdG8gcGh5X2Rpc2Nvbm5lY3QoKSAtXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MzE4OlxcdCAqIHBoeV9kZXRhY2goKSAtXFx1MDAzZSBwaHlfc3VzcGVuZCgpIGJlY2F1c2UgdGhlIHBhcmVudCBuZXRkZXYgbWlnaHQgYmUgdGhlXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zMTktXFx0ICogTURJTyBidXMgZHJpdmVyIGFuZCBjbG9jayBnYXRlZCBhdCB0aGlzIHBvaW50Llxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xMjkzPXZvaWQgcGh5X2Rpc2Nvbm5lY3Qoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTMwMi1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjEzMDM6XFx0cGh5X2RldGFjaChwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTMwNC19XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTE3NTI9aW50IHBoeV9hdHRhY2hfZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE4MjQtXFx0ICogcmVhZHkuIE9uY2Ugd2UgZG8gdGhhdCB3ZSBzdGlsbCBuZWVkIHRvIGtlZXAgdHJhY2sgb2Ygd2hldGhlclxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTgyNTpcXHQgKiBsaW5rcyB3ZXJlIHN1Y2Nlc3NmdWxseSBzZXQgdXAgb3Igbm90IGZvciBwaHlfZGV0YWNoKCkgdG9cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE4MjYtXFx0ICogcmVtb3ZlIHRoZW0gYWNjb3JkaW5nbHkuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE4OTItZXJyb3I6XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxODkzOlxcdC8qIHBoeV9kZXRhY2goKSBkb2VzIGFsbCBvZiB0aGUgY2xlYW51cCBiZWxvdyAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTg5NDpcXHRwaHlfZGV0YWNoKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xODk1LVxcdHJldHVybiBlcnI7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTE5MDc9RVhQT1JUX1NZTUJPTChwaHlfYXR0YWNoX2RpcmVjdCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE5MDktLyoqXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxOTEwOiAqIHBoeV9kZXRhY2ggLSBkZXRhY2ggYSBQSFkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xOTExLSAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xOTE1LSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTkxNjp2b2lkIHBoeV9kZXRhY2goc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE5MTcte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xOTkwLX1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjE5OTE6RVhQT1JUX1NZTUJPTChwaHlfZGV0YWNoKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE5OTItXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2xpbmtfdG9wb2xvZ3kuYz0zMT1pbnQgcGh5X2xpbmtfdG9wb19hZGRfcGh5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2xpbmtfdG9wb2xvZ3kuYy00Mi1cXHQgKiAgLSBldGhubF9yZXFfZ2V0X3BoeWRldigpXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9saW5rX3RvcG9sb2d5LmM6NDM6XFx0ICogIC0gcGh5X2RldGFjaCgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9saW5rX3RvcG9sb2d5LmMtNDQtXFx0ICovXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyMzU9aW50IHBoeWxpbmtfY29ubmVjdF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjUwLVxcdGlmIChyZXQpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMjUxOlxcdFxcdHBoeV9kZXRhY2gocGh5KTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNTItXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyODc9aW50IHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0KHN0cnVjdCBwaHlsaW5rICpwbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjMyOC1cXHRpZiAocmV0KVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjMyOTpcXHRcXHRwaHlfZGV0YWNoKHBoeV9kZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjMzMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzcwMD1zdGF0aWMgaW50IHBoeWxpbmtfc2ZwX2NvbmZpZ19waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNzM5LVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNzQwOlxcdFxcdHBoeV9kZXRhY2gocGh5KTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM3NDEtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9zZnAuYz0yMDkwPXN0YXRpYyB2b2lkIHNmcF9zbV9tb2RfbmV4dChzdHJ1Y3Qgc2ZwICpzZnAsIHVuc2lnbmVkIGludCBzdGF0ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9zZnAuYy0yMDk2LVxcbmRyaXZlcnMvbmV0L3BoeS9zZnAuYzoyMDk3OnN0YXRpYyB2b2lkIHNmcF9zbV9waHlfZGV0YWNoKHN0cnVjdCBzZnAgKnNmcClcXG5kcml2ZXJzL25ldC9waHkvc2ZwLmMtMjA5OC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvc2ZwLmM9Mjg1ND1zdGF0aWMgdm9pZCBzZnBfc21fbWFpbihzdHJ1Y3Qgc2ZwICpzZnAsIHVuc2lnbmVkIGludCBldmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9zZnAuYy0yODY4LVxcdFxcdGlmIChzZnAtXFx1MDAzZW1vZF9waHkpXFxuZHJpdmVycy9uZXQvcGh5L3NmcC5jOjI4Njk6XFx0XFx0XFx0c2ZwX3NtX3BoeV9kZXRhY2goc2ZwKTtcXG5kcml2ZXJzL25ldC9waHkvc2ZwLmMtMjg3MC1cXHRcXHRpZiAoc2ZwLVxcdTAwM2VpMmNfbWlpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYz00Nzc3PXN0YXRpYyB2b2lkIGJyY21zX2JfZGV0YWNoKHN0cnVjdCBicmNtc19jX2luZm8gKndsYylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmMtNDc4OC1cXHRcXHRcXHQvKiBEZXRhY2ggdGhpcyBiYW5kJ3MgcGh5ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYzo0Nzg5OlxcdFxcdFxcdHdsY19waHlfZGV0YWNoKGJhbmQtXFx1MDAzZXBpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jLTQ3OTAtXFx0XFx0XFx0YmFuZC1cXHUwMDNlcGkgPSBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3BoeS9waHlfY21uLmM9Mzk3PXdsY19waHlfYXR0YWNoKHN0cnVjdCBzaGFyZWRfcGh5ICpzaCwgc3RydWN0IGJjbWFfZGV2aWNlICpkMTFjb3JlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3BoeS9waHlfY21uLmMtNTUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9waHkvcGh5X2Ntbi5jOjU1NDp2b2lkIHdsY19waHlfZGV0YWNoKHN0cnVjdCBicmNtc19waHlfcHViICpwaWgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3BoeS9waHlfY21uLmMtNTU1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9waHkvcGh5X2hhbC5oPTE2Nz1zdHJ1Y3QgYnJjbXNfcGh5X3B1YiAqd2xjX3BoeV9hdHRhY2goc3RydWN0IHNoYXJlZF9waHkgKnNoLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3BoeS9waHlfaGFsLmgtMTY5LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHdpcGh5ICp3aXBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3BoeS9waHlfaGFsLmg6MTcwOnZvaWQgd2xjX3BoeV9kZXRhY2goc3RydWN0IGJyY21zX3BoeV9wdWIgKnBwaSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3BoeS9waHlfaGFsLmgtMTcxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3BoeS9waHlfaW50Lmg9OTQyPWJvb2wgd2xjX3BoeV9hdHRhY2hfbGNucGh5KHN0cnVjdCBicmNtc19waHkgKnBpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvcGh5L3BoeV9pbnQuaC05NDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3BoeS9waHlfaW50Lmg6OTQ0OnZvaWQgd2xjX3BoeV9kZXRhY2hfbGNucGh5KHN0cnVjdCBicmNtc19waHkgKnBpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvcGh5L3BoeV9pbnQuaC05NDUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvcGh5L3BoeV9sY24uYz00OTE0PXZvaWQgd2xjX3BoeV9jaGFuc3BlY19zZXRfbGNucGh5KHN0cnVjdCBicmNtc19waHkgKnBpLCB1MTYgY2hhbnNwZWMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvcGh5L3BoeV9sY24uYy00OTUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9waHkvcGh5X2xjbi5jOjQ5NTM6dm9pZCB3bGNfcGh5X2RldGFjaF9sY25waHkoc3RydWN0IGJyY21zX3BoeSAqcGkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3BoeS9waHlfbGNuLmMtNDk1NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvcGh5L3BoeV9sY24uYz00OTU4PWJvb2wgd2xjX3BoeV9hdHRhY2hfbGNucGh5KHN0cnVjdCBicmNtc19waHkgKnBpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3BoeS9waHlfbGNuLmMtNDk4My1cXHRwaS1cXHUwMDNlcGlfZnB0ci5yYWRpb2xvZnRnZXQgPSB3bGNfbGNucGh5X2dldF9yYWRpb19sb2Z0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9waHkvcGh5X2xjbi5jOjQ5ODQ6XFx0cGktXFx1MDAzZXBpX2ZwdHIuZGV0YWNoID0gd2xjX3BoeV9kZXRhY2hfbGNucGh5O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9waHkvcGh5X2xjbi5jLTQ5ODUtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeS5oPTIxNzg9dm9pZCBwaHlfZGlzY29ubmVjdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjIxNzk6dm9pZCBwaHlfZGV0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xcbmluY2x1ZGUvbGludXgvcGh5LmgtMjE4MC12b2lkIHBoeV9zdGFydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTM6MDU6MTYuNTc2OTMzMDQyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzI1MjgxMjI0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIFBIWSBEZXZpY2UgRGV0YWNobWVudCBpbiB0aGUgS2VybmVsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgaW50byB0aGUgbmV0d29yayBQSFkgZGV2aWNlIGNvZGUgYWdhaW4uIExldCdzIHNlZS4uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGV0YWNobWVudCBwcm9jZXNzIGJldHRlci4gU3BlY2lmaWNhbGx5LCB3aGVyZSBhbmQgaG93IGBwaHlfZGV0YWNoYCBpcyB1c2VkLiBJIGFscmVhZHkga25vdyB0aGF0IGZ1bmN0aW9uIGlzIHNpdHRpbmcgaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLiBCdXQgd2hhdCdzIHRoZSB3aG9sZSBwaWN0dXJlP1xuXG5TbywgZmlyc3QgdGhpbmdzIGZpcnN0LCBJJ20gZ29pbmcgdG8gdHJhY2sgZG93biBldmVyeSBzaW5nbGUgY2FsbCB0byBib3RoIGBwaHlfZGlzY29ubmVjdGAgYW5kIGBwaHlfZGV0YWNoYCB0aHJvdWdob3V0IHRoZSBrZXJuZWwgc291cmNlLiBUaGF0J3MgdGhlIGtleS4gS25vd2luZyB0aGUgY2FsbCBzaXRlcyB3aWxsIGltbWVkaWF0ZWx5IGdpdmUgbWUgdGhlIGNvbnRleHQsIHNob3cgbWUgdGhlIHZhcmlvdXMgdXNlIGNhc2VzLCBhbmQgZ2l2ZSBtZSBhIGZlZWwgZm9yIGhvdyB0aGVzZSBmdW5jdGlvbnMgZml0IGludG8gdGhlIG92ZXJhbGwgUEhZIG1hbmFnZW1lbnQgc2NoZW1lLiBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHRyaWdnZXJzIHRoZXNlIGV2ZW50cyBhbmQgd2hhdCBlbHNlIGlzIGhhcHBlbmluZyBhcm91bmQgdGhlc2UgY2FsbHMuIFRoYXQncyB0aGUgY3J1Y2lhbCBkYXRhLiBLbm93aW5nIHdoaWNoIGZ1bmN0aW9ucyBjYWxsIHRoZXNlIGFuZCBpbiB3aGF0IGNpcmN1bXN0YW5jZXMgd2lsbCBnaXZlIG1lIGEgaHVnZSBoZWFkIHN0YXJ0IGluIHVuZGVyc3RhbmRpbmcgdGhlIGJpZ2dlciBwaWN0dXJlLiBGcm9tIHRoZXJlLCBJIGNhbiBzdGFydCB0byB1bmRlcnN0YW5kIHRoZSBjb21wbGV0ZSBzZXF1ZW5jZSBvZiBldmVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgyMzMsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxMzowNToxOS44Mjk3NDg0NDVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUwMzc2Mjg5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlfZGlzY29ubmVjdFxcXFwoXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNzUxIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0PTc0PXRoaXMgZG9jdW1lbnRhdGlvbi5cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3QtMTI5LSAgICAgIC0gcGh5bGlua19ldGh0b29sX3NldF93b2wocHJpdi1cXHUwMDNlcGh5bGluaywgd29sKVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3Q6MTMwOiAgICAqIC0gcGh5X2Rpc2Nvbm5lY3QocGh5ZGV2KVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3QtMTMxLSAgICAgIC0gcGh5bGlua19kaXNjb25uZWN0X3BoeShwcml2LVxcdTAwM2VwaHlsaW5rKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jPTY4OD1zdGF0aWMgYm9vbCBpY2xfdGNfcGh5X2Nvbm5lY3Qoc3RydWN0IGludGVsX3RjX3BvcnQgKnRjLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jLTcyOC0gKi9cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmM6NzI5OnN0YXRpYyB2b2lkIGljbF90Y19waHlfZGlzY29ubmVjdChzdHJ1Y3QgaW50ZWxfdGNfcG9ydCAqdGMpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jLTczMC17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmM9OTA4PXN0YXRpYyBib29sIGFkbHBfdGNfcGh5X2Nvbm5lY3Qoc3RydWN0IGludGVsX3RjX3BvcnQgKnRjLCBpbnQgcmVxdWlyZWRfbGFuZXMpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMtOTU5LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYzo5NjA6c3RhdGljIHZvaWQgYWRscF90Y19waHlfZGlzY29ubmVjdChzdHJ1Y3QgaW50ZWxfdGNfcG9ydCAqdGMpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jLTk2MS17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmM9MTE5Nj1zdGF0aWMgYm9vbCB4ZWxwZHBfdGNfcGh5X2Nvbm5lY3Qoc3RydWN0IGludGVsX3RjX3BvcnQgKnRjLCBpbnQgcmVxdWlyZWRfbGFuZXMpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMtMTIyNy1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmM6MTIyODpzdGF0aWMgdm9pZCB4ZWxwZHBfdGNfcGh5X2Rpc2Nvbm5lY3Qoc3RydWN0IGludGVsX3RjX3BvcnQgKnRjKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYy0xMjI5LXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYz0xNDc0PXN0YXRpYyB2b2lkIHRjX3BoeV9jb25uZWN0KHN0cnVjdCBpbnRlbF90Y19wb3J0ICp0YywgaW50IHJlcXVpcmVkX2xhbmVzKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jLTE0OTItXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jOjE0OTM6c3RhdGljIHZvaWQgdGNfcGh5X2Rpc2Nvbm5lY3Qoc3RydWN0IGludGVsX3RjX3BvcnQgKnRjKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYy0xNDk0LXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYz0xNTA4PXN0YXRpYyB2b2lkIGludGVsX3RjX3BvcnRfcmVzZXRfbW9kZShzdHJ1Y3QgaW50ZWxfdGNfcG9ydCAqdGMsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMtMTUyNC1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmM6MTUyNTpcXHR0Y19waHlfZGlzY29ubmVjdCh0Yyk7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jLTE1MjYtXFx0aWYgKCFmb3JjZV9kaXNjb25uZWN0KVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jPTE2NjQ9dm9pZCBpbnRlbF90Y19wb3J0X3Nhbml0aXplX21vZGUoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMtMTY4NS1cXHRcXHRcXHRcXHQgICAgdGNfcG9ydF9tb2RlX25hbWUodGMtXFx1MDAzZWluaXRfbW9kZSkpO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYzoxNjg2OlxcdFxcdHRjX3BoeV9kaXNjb25uZWN0KHRjKTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMtMTY4Ny1cXHRcXHRfX2ludGVsX3RjX3BvcnRfcHV0X2xpbmsodGMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmM9NDkxPXN0YXRpYyBpbnQgYXhfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmMtNTI3LSBmYWlsZWRfYXhfZWlfb3BlbjpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYzo1Mjg6XFx0cGh5X2Rpc2Nvbm5lY3QoZGV2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jLTUyOS0gZmFpbGVkX21paV9wcm9iZTpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jPTU0MD1zdGF0aWMgaW50IGF4X2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYy01NTItXFx0YXhfcGh5X3N3aXRjaChkZXYsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jOjU1MzpcXHRwaHlfZGlzY29ubmVjdChkZXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmMtNTU0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jPTE0NjU9c3RhdGljIGludCBvd2xfZW1hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jLTE1NzItXFx0XFx0bmV0aWZfbmFwaV9kZWwoXFx1MDAyNnByaXYtXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYzoxNTczOlxcdFxcdHBoeV9kaXNjb25uZWN0KG5ldGRldi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmMtMTU3NC1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jPTE1ODA9c3RhdGljIHZvaWQgb3dsX2VtYWNfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmMtMTU4NC1cXHRuZXRpZl9uYXBpX2RlbChcXHUwMDI2cHJpdi1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jOjE1ODU6XFx0cGh5X2Rpc2Nvbm5lY3QocHJpdi1cXHUwMDNlbmV0ZGV2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYy0xNTg2LVxcdGNhbmNlbF93b3JrX3N5bmMoXFx1MDAyNnByaXYtXFx1MDAzZW1hY19yZXNldF90YXNrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jPTEyMjg9c3RhdGljIHZvaWQgYWRpbjExMTBfZGlzY29ubmVjdF9waHkodm9pZCAqZGF0YSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYy0xMjI5LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYzoxMjMwOlxcdHBoeV9kaXNjb25uZWN0KGRhdGEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jLTEyMzEtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmM9NjQ1PXN0YXRpYyB2b2lkIGFkaW4xMTQwX3BoeV9yZW1vdmUodm9pZCAqZGF0YSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy02NDYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jOjY0NzpcXHRwaHlfZGlzY29ubmVjdChkYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy02NDgtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmM9MzMyNj1zdGF0aWMgdm9pZCBldDEzMXhfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FnZXJlL2V0MTMxeC5jLTMzMzItXFx0bmV0aWZfbmFwaV9kZWwoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FnZXJlL2V0MTMxeC5jOjMzMzM6XFx0cGh5X2Rpc2Nvbm5lY3QobmV0ZGV2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FnZXJlL2V0MTMxeC5jLTMzMzQtXFx0bWRpb2J1c191bnJlZ2lzdGVyKGFkYXB0ZXItXFx1MDAzZW1paV9idXMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmM9MzkzMT1zdGF0aWMgaW50IGV0MTMxeF9wY2lfc2V0dXAoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYy00MDY2LWVycl9waHlfZGlzY29ubmVjdDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYzo0MDY3OlxcdHBoeV9kaXNjb25uZWN0KG5ldGRldi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYy00MDY4LWVycl9tZGlvX3VucmVnaXN0ZXI6XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGx3aW5uZXIvc3VuNGktZW1hYy5jPTE5Mz1zdGF0aWMgdm9pZCBlbWFjX21kaW9fcmVtb3ZlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxsd2lubmVyL3N1bjRpLWVtYWMuYy0xOTQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsbHdpbm5lci9zdW40aS1lbWFjLmM6MTk1OlxcdHBoeV9kaXNjb25uZWN0KGRldi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGx3aW5uZXIvc3VuNGktZW1hYy5jLTE5Ni19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jPTg0PXZvaWQgeGdlX21kaW9fcmVtb3ZlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYy04OS1cXHRpZiAobmRldi1cXHUwMDNlcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM6OTA6XFx0XFx0cGh5X2Rpc2Nvbm5lY3QobmRldi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jLTkxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYz05Mzk9aW50IHhnZW5lX2VuZXRfbWRpb19jb25maWcoc3RydWN0IHhnZW5lX2VuZXRfcGRhdGEgKnBkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05NzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo5NzM6dm9pZCB4Z2VuZV9lbmV0X3BoeV9kaXNjb25uZWN0KHN0cnVjdCB4Z2VuZV9lbmV0X3BkYXRhICpwZGF0YSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk3NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk3Ny1cXHRpZiAobmRldi1cXHUwMDNlcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTc4OlxcdFxcdHBoeV9kaXNjb25uZWN0KG5kZXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05NzktfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYz05ODE9dm9pZCB4Z2VuZV9lbmV0X21kaW9fcmVtb3ZlKHN0cnVjdCB4Z2VuZV9lbmV0X3BkYXRhICpwZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTg1LVxcdGlmIChuZGV2LVxcdTAwM2VwaHlkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo5ODY6XFx0XFx0cGh5X2Rpc2Nvbm5lY3QobmRldi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk4Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3Lmg9NDI3PWludCB4Z2VuZV9lbmV0X3BoeV9jb25uZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5oOjQyODp2b2lkIHhnZW5lX2VuZXRfcGh5X2Rpc2Nvbm5lY3Qoc3RydWN0IHhnZW5lX2VuZXRfcGRhdGEgKnBkYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5oLTQyOS11MzIgeGdlbmVfZW5ldF9yZF9tYWMoc3RydWN0IHhnZW5lX2VuZXRfcGRhdGEgKnBkYXRhLCB1MzIgcmRfYWRkcik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9tYWluLmM9MjAxNT1zdGF0aWMgaW50IHhnZW5lX2VuZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X21haW4uYy0yMTA4LVxcdGlmIChwZGF0YS1cXHUwMDNlbWRpb19kcml2ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfbWFpbi5jOjIxMDk6XFx0XFx0eGdlbmVfZW5ldF9waHlfZGlzY29ubmVjdChwZGF0YSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfbWFpbi5jLTIxMTAtXFx0ZWxzZSBpZiAocGh5X2ludGVyZmFjZV9tb2RlX2lzX3JnbWlpKHBkYXRhLVxcdTAwM2VwaHlfbW9kZSkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9tYWluLmM9MjExNz1zdGF0aWMgdm9pZCB4Z2VuZV9lbmV0X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfbWFpbi5jLTIxMzAtXFx0aWYgKHBkYXRhLVxcdTAwM2VtZGlvX2RyaXZlcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9tYWluLmM6MjEzMTpcXHRcXHR4Z2VuZV9lbmV0X3BoeV9kaXNjb25uZWN0KHBkYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9tYWluLmMtMjEzMi1cXHRlbHNlIGlmIChwaHlfaW50ZXJmYWNlX21vZGVfaXNfcmdtaWkocGRhdGEtXFx1MDAzZXBoeV9tb2RlKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21haW4uYz04NTg9aW50IGFyY19lbWFjX3Byb2JlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBpbnQgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWFpbi5jLTEwMTMtXFx0bmV0aWZfbmFwaV9kZWwoXFx1MDAyNnByaXYtXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21haW4uYzoxMDE0OlxcdHBoeV9kaXNjb25uZWN0KHBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWFpbi5jLTEwMTUtb3V0X21kaW86XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tYWluLmM9MTAyNz12b2lkIGFyY19lbWFjX3JlbW92ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21haW4uYy0xMDMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21haW4uYzoxMDMxOlxcdHBoeV9kaXNjb25uZWN0KG5kZXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWFpbi5jLTEwMzItXFx0YXJjX21kaW9fcmVtb3ZlKHByaXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmM9OTY2PXN0YXRpYyBpbnQgYXg4ODc5NmNfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jLTEwOTktZXJyX3BoeV9kaXM6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmM6MTEwMDpcXHRwaHlfZGlzY29ubmVjdChheF9sb2NhbC1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYy0xMTAxLWVycjpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jPTExMDU9c3RhdGljIHZvaWQgYXg4ODc5NmNfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYy0xMTA5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jOjExMTA6XFx0cGh5X2Rpc2Nvbm5lY3QobmRldi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYy0xMTExLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfaW50Zi5jPTk2OT1zdGF0aWMgaW50IGJjbWFzcF9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9hc3AyL2JjbWFzcF9pbnRmLmMtOTgxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2FzcDIvYmNtYXNwX2ludGYuYzo5ODI6XFx0cGh5X2Rpc2Nvbm5lY3QoZGV2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2FzcDIvYmNtYXNwX2ludGYuYy05ODMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYz0yMzEzPXN0YXRpYyB2b2lkIGI0NF91bnJlZ2lzdGVyX3BoeV9vbmUoc3RydWN0IGI0NCAqYnApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYy0yMzIwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jOjIzMjE6XFx0cGh5X2Rpc2Nvbm5lY3QocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYy0yMzIyLVxcdGlmIChwaHlfaXNfcHNldWRvX2ZpeGVkX2xpbmsocGh5ZGV2KSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jPTg5MD1zdGF0aWMgaW50IGJjbV9lbmV0X29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTExMzMtXFx0aWYgKHBoeWRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYzoxMTM0OlxcdFxcdHBoeV9kaXNjb25uZWN0KHBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmMtMTEzNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jPTExODU9c3RhdGljIGludCBiY21fZW5ldF9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYy0xMjI5LVxcdGlmIChwcml2LVxcdTAwM2VoYXNfcGh5KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jOjEyMzA6XFx0XFx0cGh5X2Rpc2Nvbm5lY3QoZGV2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTEyMzEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmM9MTkyOD1zdGF0aWMgaW50IGJjbV9zeXNwb3J0X29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYy0yMDUyLW91dF9waHlfZGlzY29ubmVjdDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmM6MjA1MzpcXHRwaHlfZGlzY29ubmVjdChwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYy0yMDU0LW91dF9jbGtfZGlzYWJsZTpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYz0yMDczPXN0YXRpYyBpbnQgYmNtX3N5c3BvcnRfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5jLTIxMTEtXFx0LyogRGlzY29ubmVjdCBmcm9tIFBIWSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYzoyMTEyOlxcdHBoeV9kaXNjb25uZWN0KGRldi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmMtMjExMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmM9MTQ4Nz1pbnQgYmdtYWNfZW5ldF9wcm9iZShzdHJ1Y3QgYmdtYWMgKmJnbWFjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYy0xNTU4LWVycl9waHlfZGlzY29ubmVjdDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jOjE1NTk6XFx0cGh5X2Rpc2Nvbm5lY3QobmV0X2Rldi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jLTE1NjAtZXJyX2RtYV9mcmVlOlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYz0xNTY4PXZvaWQgYmdtYWNfZW5ldF9yZW1vdmUoc3RydWN0IGJnbWFjICpiZ21hYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmMtMTU3MC1cXHR1bnJlZ2lzdGVyX25ldGRldihiZ21hYy1cXHUwMDNlbmV0X2Rldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYzoxNTcxOlxcdHBoeV9kaXNjb25uZWN0KGJnbWFjLVxcdTAwM2VuZXRfZGV2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmMtMTU3Mi1cXHRuZXRpZl9uYXBpX2RlbChcXHUwMDI2YmdtYWMtXFx1MDAzZW5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtZ2VuZXQuYz0zNDYzPXN0YXRpYyBpbnQgYmNtZ2VuZXRfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbWdlbmV0LmMtMzQ3Mi1cXHQvKiBSZWFsbHkga2lsbCB0aGUgUEhZIHN0YXRlIG1hY2hpbmUgYW5kIGRpc2Nvbm5lY3QgZnJvbSBpdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbWdlbmV0LmM6MzQ3MzpcXHRwaHlfZGlzY29ubmVjdChkZXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtZ2VuZXQuYy0zNDc0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmM9MzAxPWludCBiY21nZW5ldF9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jLTM5NS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmM6Mzk2OlxcdFxcdHBoeV9kaXNjb25uZWN0KGRldi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYy0zOTctXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYz0yNDc1PXN0YXRpYyBpbnQgc2JtYWNfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYy0yNDg5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYzoyNDkwOlxcdHBoeV9kaXNjb25uZWN0KHNjLVxcdTAwM2VwaHlfZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9zYjEyNTAtbWFjLmMtMjQ5MS1cXHRzYy1cXHUwMDNlcGh5X2RldiA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYz0yMDg0PXN0YXRpYyBpbnQgdGczX3BoeV9pbml0KHN0cnVjdCB0ZzMgKnRwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMjExOC1cXHRkZWZhdWx0OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jOjIxMTk6XFx0XFx0cGh5X2Rpc2Nvbm5lY3QobWRpb2J1c19nZXRfcGh5KHRwLVxcdTAwM2VtZGlvX2J1cywgdHAtXFx1MDAzZXBoeV9hZGRyKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMjEyMC1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTIxNjE9c3RhdGljIHZvaWQgdGczX3BoeV9maW5pKHN0cnVjdCB0ZzMgKnRwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMjE2My1cXHRpZiAodHAtXFx1MDAzZXBoeV9mbGFncyBcXHUwMDI2IFRHM19QSFlGTEdfSVNfQ09OTkVDVEVEKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6MjE2NDpcXHRcXHRwaHlfZGlzY29ubmVjdChtZGlvYnVzX2dldF9waHkodHAtXFx1MDAzZW1kaW9fYnVzLCB0cC1cXHUwMDNlcGh5X2FkZHIpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0yMTY1LVxcdFxcdHRwLVxcdTAwM2VwaHlfZmxhZ3MgXFx1MDAyNj0gflRHM19QSFlGTEdfSVNfQ09OTkVDVEVEO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL29jdGVvbi9vY3Rlb25fbWdtdC5jPTEyNDA9c3RhdGljIGludCBvY3Rlb25fbWdtdF9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vb2N0ZW9uL29jdGVvbl9tZ210LmMtMTI0OC1cXHRcXHRwaHlfc3RvcChuZXRkZXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL29jdGVvbi9vY3Rlb25fbWdtdC5jOjEyNDk6XFx0XFx0cGh5X2Rpc2Nvbm5lY3QobmV0ZGV2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9vY3Rlb24vb2N0ZW9uX21nbXQuYy0xMjUwLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL3RodW5kZXJfYmd4LmM9MTEzOT1zdGF0aWMgdm9pZCBiZ3hfbG1hY19kaXNhYmxlKHN0cnVjdCBiZ3ggKmJneCwgdTggbG1hY2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvdGh1bmRlcl9iZ3guYy0xMTg0LVxcdCAgICAobG1hYy1cXHUwMDNlbG1hY190eXBlICE9IEJHWF9NT0RFXzEwR19LUikgXFx1MDAyNlxcdTAwMjYgbG1hYy1cXHUwMDNlcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL3RodW5kZXJfYmd4LmM6MTE4NTpcXHRcXHRwaHlfZGlzY29ubmVjdChsbWFjLVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL3RodW5kZXJfYmd4LmMtMTE4Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MzYwPXN0YXRpYyBpbnQgZ21hY19zZXR1cF9waHkoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMzk4LVxcdFxcdG5ldGRldl9lcnIobmV0ZGV2LCBcXFwiVW5zdXBwb3J0ZWQgTUlJIGludGVyZmFjZVxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzozOTk6XFx0XFx0cGh5X2Rpc2Nvbm5lY3QocGh5KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTQwMC1cXHRcXHRuZXRkZXYtXFx1MDAzZXBoeWRldiA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTIzNjA9c3RhdGljIHZvaWQgZ2VtaW5pX3BvcnRfcmVtb3ZlKHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjM2Mi1cXHRpZiAocG9ydC1cXHUwMDNlbmV0ZGV2KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyMzYzOlxcdFxcdHBoeV9kaXNjb25uZWN0KHBvcnQtXFx1MDAzZW5ldGRldi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIzNjQtXFx0XFx0dW5yZWdpc3Rlcl9uZXRkZXYocG9ydC1cXHUwMDNlbmV0ZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmM9MTE2ND1zdGF0aWMgaW50IGRtOTA1MV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYy0xMjE3LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jOjEyMTg6XFx0XFx0cGh5X2Rpc2Nvbm5lY3QoZGItXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYy0xMjE5LVxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgcmV0LCBcXFwiZGV2aWNlIHJlZ2lzdGVyIGZhaWxlZFxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYz0xMjI1PXN0YXRpYyB2b2lkIGRtOTA1MV9kcnZfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jLTEyMzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYzoxMjMxOlxcdHBoeV9kaXNjb25uZWN0KGRiLVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmMtMTIzMi19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM9MjcyPXN0YXRpYyB2b2lkIHRzbmVwX3BoeV9jbG9zZShzdHJ1Y3QgdHNuZXBfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yNzQtXFx0cGh5X3N0b3AoYWRhcHRlci1cXHUwMDNlbmV0ZGV2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYzoyNzU6XFx0cGh5X2Rpc2Nvbm5lY3QoYWRhcHRlci1cXHUwMDNlbmV0ZGV2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yNzYtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZXRob2MuYz0xMjU3PXN0YXRpYyB2b2lkIGV0aG9jX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZXRob2MuYy0xMjYzLVxcdFxcdG5ldGlmX25hcGlfZGVsKFxcdTAwMjZwcml2LVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jOjEyNjQ6XFx0XFx0cGh5X2Rpc2Nvbm5lY3QobmV0ZGV2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmMtMTI2NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM9MTczND1zdGF0aWMgaW50IGZ0Z21hYzEwMF9zZXR1cF9tZGlvKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE3NzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYzoxNzgwOnN0YXRpYyB2b2lkIGZ0Z21hYzEwMF9waHlfZGlzY29ubmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTc4MS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE3ODctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYzoxNzg4OlxcdHBoeV9kaXNjb25uZWN0KHBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xNzg5LVxcdGlmIChvZl9waHlfaXNfZml4ZWRfbGluayhwcml2LVxcdTAwM2VkZXYtXFx1MDAzZW9mX25vZGUpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYz0xOTQyPXN0YXRpYyBpbnQgZnRnbWFjMTAwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTIwOTUtZXJyOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM6MjA5NjpcXHRmdGdtYWMxMDBfcGh5X2Rpc2Nvbm5lY3QobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTIwOTctXFx0aWYgKHByaXYtXFx1MDAzZW5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jPTIxMDI9c3RhdGljIHZvaWQgZnRnbWFjMTAwX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0yMTE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM6MjExOTpcXHRmdGdtYWMxMDBfcGh5X2Rpc2Nvbm5lY3QobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTIxMjAtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9NDIyOD1mZWNfZW5ldF9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTQyNDAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6NDI0MTpcXHRwaHlfZGlzY29ubmVjdChwaHlfZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy00MjQyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4LmM9MjE2PXN0YXRpYyBpbnQgbXBjNTJ4eF9mZWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4LmMtMjc0LVxcdFxcdHBoeV9zdG9wKHBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4LmM6Mjc1OlxcdFxcdHBoeV9kaXNjb25uZWN0KHBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4LmMtMjc2LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eC5jPTI4MT1zdGF0aWMgaW50IG1wYzUyeHhfZmVjX2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHguYy0yOTgtXFx0XFx0cGh5X3N0b3AocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHguYzoyOTk6XFx0XFx0cGh5X2Rpc2Nvbm5lY3QocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHguYy0zMDAtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYz0yODg0PXN0YXRpYyBpbnQgZ2Zhcl9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYy0yODkxLVxcdC8qIERpc2Nvbm5lY3QgZnJvbSB0aGUgUEhZICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYzoyODkyOlxcdHBoeV9kaXNjb25uZWN0KGRldi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jLTI4OTMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfbWRpby5jPTE2Mj1zdGF0aWMgdm9pZCBoYmdfcGh5X2FkanVzdF9saW5rKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfbWRpby5jLTE5NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfbWRpby5jOjE5NjpzdGF0aWMgdm9pZCBoYmdfcGh5X2Rpc2Nvbm5lY3Qodm9pZCAqZGF0YSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfbWRpby5jLTE5Ny17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYzoxOTg6XFx0cGh5X2Rpc2Nvbm5lY3QoKHN0cnVjdCBwaHlfZGV2aWNlICopZGF0YSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYy0xOTktfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpcDA0X2V0aC5jPTEwMjg9c3RhdGljIHZvaWQgaGlwMDRfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmMtMTAzNC1cXHRpZiAocHJpdi1cXHUwMDNlcGh5KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXAwNF9ldGguYzoxMDM1OlxcdFxcdHBoeV9kaXNjb25uZWN0KHByaXYtXFx1MDAzZXBoeSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpcDA0X2V0aC5jLTEwMzYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlzaV9mZW1hYy5jPTc2OD1zdGF0aWMgaW50IGhpc2lfZmVtYWNfZHJ2X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlzaV9mZW1hYy5jLTg4Ni1cXHRuZXRpZl9uYXBpX2RlbChcXHUwMDI2cHJpdi1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpc2lfZmVtYWMuYzo4ODc6XFx0cGh5X2Rpc2Nvbm5lY3QocGh5KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlzaV9mZW1hYy5jLTg4OC1vdXRfZGlzYWJsZV9jbGs6XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlzaV9mZW1hYy5jPTg5Nj1zdGF0aWMgdm9pZCBoaXNpX2ZlbWFjX2Rydl9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXNpX2ZlbWFjLmMtOTAzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXNpX2ZlbWFjLmM6OTA0OlxcdHBoeV9kaXNjb25uZWN0KG5kZXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpc2lfZmVtYWMuYy05MDUtXFx0Y2xrX2Rpc2FibGVfdW5wcmVwYXJlKHByaXYtXFx1MDAzZWNsayk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGl4NWhkMl9nbWFjLmM9ODY3PXN0YXRpYyBpbnQgaGl4NWhkMl9uZXRfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYy04NzgtXFx0XFx0cGh5X3N0b3AoZGV2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYzo4Nzk6XFx0XFx0cGh5X2Rpc2Nvbm5lY3QoZGV2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYy04ODAtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZW5ldC5jPTIzOTY9c3RhdGljIHZvaWQgaG5zX25pY19kZXZfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19lbmV0LmMtMjQwOC1cXHRpZiAobmRldi1cXHUwMDNlcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2VuZXQuYzoyNDA5OlxcdFxcdHBoeV9kaXNjb25uZWN0KG5kZXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZW5ldC5jLTI0MTAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfbWRpby5jPTI0Mj12b2lkIGhjbGdlX21hY19kaXNjb25uZWN0X3BoeShzdHJ1Y3QgaG5hZTNfaGFuZGxlICpoYW5kbGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfbWRpby5jLTI1MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfbWRpby5jOjI1MTpcXHRwaHlfZGlzY29ubmVjdChwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9tZGlvLmMtMjUyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xhbnRpcV9ldG9wLmM9NDIzPWx0cV9ldG9wX21kaW9fY2xlYW51cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbGFudGlxX2V0b3AuYy00MjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbGFudGlxX2V0b3AuYzo0Mjc6XFx0cGh5X2Rpc2Nvbm5lY3QoZGV2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xhbnRpcV9ldG9wLmMtNDI4LVxcdG1kaW9idXNfdW5yZWdpc3Rlcihwcml2LVxcdTAwM2VtaWlfYnVzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXY2NDN4eF9ldGguYz0zMjcyPXN0YXRpYyB2b2lkIG12NjQzeHhfZXRoX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdjY0M3h4X2V0aC5jLTMyNzgtXFx0aWYgKGRldi1cXHUwMDNlcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXY2NDN4eF9ldGguYzozMjc5OlxcdFxcdHBoeV9kaXNjb25uZWN0KGRldi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212NjQzeHhfZXRoLmMtMzI4MC1cXHRjYW5jZWxfd29ya19zeW5jKFxcdTAwMjZtcC1cXHUwMDNldHhfdGltZW91dF90YXNrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jPTE1MjY9c3RhdGljIHZvaWQgcHhhMTY4X2V0aF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jLTE1MzctXFx0aWYgKGRldi1cXHUwMDNlcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jOjE1Mzg6XFx0XFx0cGh5X2Rpc2Nvbm5lY3QoZGV2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jLTE1MzktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmM9MTAzNz1zdGF0aWMgdm9pZCBtdGtfc3Rhcl9kaXNhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jLTEwNDctXFx0cGh5X3N0b3AocHJpdi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmM6MTA0ODpcXHRwaHlfZGlzY29ubmVjdChwcml2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYy0xMDQ5LVxcdGZyZWVfaXJxKG5kZXYtXFx1MDAzZWlycSwgbmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhiZl9naWdlL21seGJmX2dpZ2VfbWFpbi5jPTM4NT1zdGF0aWMgaW50IG1seGJmX2dpZ2VfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seGJmX2dpZ2UvbWx4YmZfZ2lnZV9tYWluLmMtNDkyLVxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcIkZhaWxlZCB0byByZWdpc3RlciBuZXRkZXY6ICVwZVxcXFxuXFxcIiwgRVJSX1BUUihlcnIpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhiZl9naWdlL21seGJmX2dpZ2VfbWFpbi5jOjQ5MzpcXHRcXHRwaHlfZGlzY29ubmVjdChwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seGJmX2dpZ2UvbWx4YmZfZ2lnZV9tYWluLmMtNDk0LVxcdFxcdGdvdG8gb3V0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4YmZfZ2lnZS9tbHhiZl9naWdlX21haW4uYz01MDQ9c3RhdGljIHZvaWQgbWx4YmZfZ2lnZV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seGJmX2dpZ2UvbWx4YmZfZ2lnZV9tYWluLmMtNTA4LVxcdHVucmVnaXN0ZXJfbmV0ZGV2KHByaXYtXFx1MDAzZW5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4YmZfZ2lnZS9tbHhiZl9naWdlX21haW4uYzo1MDk6XFx0cGh5X2Rpc2Nvbm5lY3QocHJpdi1cXHUwMDNlbmV0ZGV2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seGJmX2dpZ2UvbWx4YmZfZ2lnZV9tYWluLmMtNTEwLVxcdG1seGJmX2dpZ2VfbWRpb19yZW1vdmUocHJpdik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uaS9uaXhnZS5jPTg2Nj1zdGF0aWMgaW50IG5peGdlX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uaS9uaXhnZS5jLTkwMy1cXHRwaHlfc3RvcChwaHkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25pL25peGdlLmM6OTA0OlxcdHBoeV9kaXNjb25uZWN0KHBoeSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmkvbml4Z2UuYy05MDUtXFx0dGFza2xldF9raWxsKFxcdTAwMjZwcml2LVxcdTAwM2VkbWFfZXJyX3Rhc2tsZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmkvbml4Z2UuYz05MTA9c3RhdGljIGludCBuaXhnZV9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmkvbml4Z2UuYy05MTktXFx0XFx0cGh5X3N0b3AobmRldi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uaS9uaXhnZS5jOjkyMDpcXHRcXHRwaHlfZGlzY29ubmVjdChuZGV2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25pL25peGdlLmMtOTIxLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTYxOT1zdGF0aWMgdm9pZCBvYV90YzZfcGh5X2V4aXQoc3RydWN0IG9hX3RjNiAqdGM2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNjIzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjYyNDpcXHRwaHlfZGlzY29ubmVjdCh0YzYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNjI1LVxcdG9hX3RjNl9tZGlvYnVzX3VucmVnaXN0ZXIodGM2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Bhc2VtaS9wYXNlbWlfbWFjLmM9MTI3NT1zdGF0aWMgaW50IHBhc2VtaV9tYWNfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Bhc2VtaS9wYXNlbWlfbWFjLmMtMTI4NS1cXHRcXHRwaHlfc3RvcChkZXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcGFzZW1pL3Bhc2VtaV9tYWMuYzoxMjg2OlxcdFxcdHBoeV9kaXNjb25uZWN0KGRldi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wYXNlbWkvcGFzZW1pX21hYy5jLTEyODctXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vZW1hYy9lbWFjLW1hYy5jPTk2Mz12b2lkIGVtYWNfbWFjX2Rvd24oc3RydWN0IGVtYWNfYWRhcHRlciAqYWRwdClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL2VtYWMvZW1hYy1tYWMuYy05NzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vZW1hYy9lbWFjLW1hYy5jOjk4MDpcXHRwaHlfZGlzY29ubmVjdChhZHB0LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL2VtYWMvZW1hYy1tYWMuYy05ODEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZGMvcjYwNDAuYz0xMDI3PXN0YXRpYyBpbnQgcjYwNDBfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZGMvcjYwNDAuYy0xMTY2LWVycl9vdXRfcGh5X2Rpc2Nvbm5lY3Q6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmRjL3I2MDQwLmM6MTE2NzpcXHRwaHlfZGlzY29ubmVjdChkZXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmRjL3I2MDQwLmMtMTE2OC1lcnJfb3V0X21kaW9fdW5yZWdpc3RlcjpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JkYy9yNjA0MC5jPTExODU9c3RhdGljIHZvaWQgcjYwNDBfcmVtb3ZlX29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JkYy9yNjA0MC5jLTExOTAtXFx0dW5yZWdpc3Rlcl9uZXRkZXYoZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZGMvcjYwNDAuYzoxMTkxOlxcdHBoeV9kaXNjb25uZWN0KGRldi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZGMvcjYwNDAuYy0xMTkyLVxcdG1kaW9idXNfdW5yZWdpc3RlcihscC1cXHUwMDNlbWlpX2J1cyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz01MDQ1PXN0YXRpYyBpbnQgcnRsODE2OV9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTA1Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1MDU4OlxcdHBoeV9kaXNjb25uZWN0KHRwLVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTUwNTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3JhdmJfbWFpbi5jPTIzNjc9c3RhdGljIGludCByYXZiX2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9yYXZiX21haW4uYy0yMzg2LVxcdFxcdHBoeV9zdG9wKG5kZXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9yYXZiX21haW4uYzoyMzg3OlxcdFxcdHBoeV9kaXNjb25uZWN0KG5kZXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9yYXZiX21haW4uYy0yMzg4LVxcdFxcdGlmIChvZl9waHlfaXNfZml4ZWRfbGluayhucCkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3Jzd2l0Y2hfbWFpbi5jPTE1MDM9c3RhdGljIHZvaWQgcnN3aXRjaF9waHlfZGV2aWNlX2RlaW5pdChzdHJ1Y3QgcnN3aXRjaF9kZXZpY2UgKnJkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3Jzd2l0Y2hfbWFpbi5jLTE1MDUtXFx0aWYgKHJkZXYtXFx1MDAzZW5kZXYtXFx1MDAzZXBoeWRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3Jzd2l0Y2hfbWFpbi5jOjE1MDY6XFx0XFx0cGh5X2Rpc2Nvbm5lY3QocmRldi1cXHUwMDNlbmRldi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3Jzd2l0Y2hfbWFpbi5jLTE1MDctfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9ydHNuLmM9OTIzPXN0YXRpYyB2b2lkIHJ0c25fcGh5X2RlaW5pdChzdHJ1Y3QgcnRzbl9wcml2YXRlICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcnRzbi5jLTkyNC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9ydHNuLmM6OTI1OlxcdHBoeV9kaXNjb25uZWN0KHByaXYtXFx1MDAzZW5kZXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9ydHNuLmMtOTI2LVxcdHByaXYtXFx1MDAzZW5kZXYtXFx1MDAzZXBoeWRldiA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3NoX2V0aC5jPTI1ODk9c3RhdGljIGludCBzaF9ldGhfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3NoX2V0aC5jLTI2MDgtXFx0XFx0cGh5X3N0b3AobmRldi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3NoX2V0aC5jOjI2MDk6XFx0XFx0cGh5X2Rpc2Nvbm5lY3QobmRldi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3NoX2V0aC5jLTI2MTAtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2Ftc3VuZy9zeGdiZS9zeGdiZV9tYWluLmM9MjY0PXN0YXRpYyBpbnQgc3hnYmVfaW5pdF9waHkoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zYW1zdW5nL3N4Z2JlL3N4Z2JlX21haW4uYy0zMDAtXFx0aWYgKHBoeWRldi1cXHUwMDNlcGh5X2lkID09IDApIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zYW1zdW5nL3N4Z2JlL3N4Z2JlX21haW4uYzozMDE6XFx0XFx0cGh5X2Rpc2Nvbm5lY3QocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zYW1zdW5nL3N4Z2JlL3N4Z2JlX21haW4uYy0zMDItXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zYW1zdW5nL3N4Z2JlL3N4Z2JlX21haW4uYz0xMDU4PXN0YXRpYyBpbnQgc3hnYmVfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2Ftc3VuZy9zeGdiZS9zeGdiZV9tYWluLmMtMTE5My1cXHRpZiAoZGV2LVxcdTAwM2VwaHlkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2Ftc3VuZy9zeGdiZS9zeGdiZV9tYWluLmM6MTE5NDpcXHRcXHRwaHlfZGlzY29ubmVjdChkZXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2Ftc3VuZy9zeGdiZS9zeGdiZV9tYWluLmMtMTE5NS1waHlfZXJyb3I6XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zYW1zdW5nL3N4Z2JlL3N4Z2JlX21haW4uYz0xMjA3PXN0YXRpYyBpbnQgc3hnYmVfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2Ftc3VuZy9zeGdiZS9zeGdiZV9tYWluLmMtMTIxNi1cXHRcXHRwaHlfc3RvcChkZXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2Ftc3VuZy9zeGdiZS9zeGdiZV9tYWluLmM6MTIxNzpcXHRcXHRwaHlfZGlzY29ubmVjdChkZXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2Ftc3VuZy9zeGdiZS9zeGdiZV9tYWluLmMtMTIxOC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zbXNjL3Ntc2M5MTF4LmM9MTAxNT1zdGF0aWMgaW50IHNtc2M5MTF4X21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc21zYy9zbXNjOTExeC5jLTEwNTEtXFx0XFx0U01TQ19XQVJOKHBkYXRhLCBodywgXFxcIkZhaWxlZCBMb29wIEJhY2sgVGVzdFxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Ntc2Mvc21zYzkxMXguYzoxMDUyOlxcdFxcdHBoeV9kaXNjb25uZWN0KHBoeWRldik7XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDEzOjA1OjIyLjMzMzUxNTQ2MloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMwMzU4NzI2NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBQSFkgRGlzY29ubmVjdGlvbiBNZXRob2RzKipcblxuT2theSwgc28gSSBuZWVkIHRvIGRpZyBpbnRvIGhvdyBkcml2ZXJzIGhhbmRsZSBQSFkgZGlzY29ubmVjdGlvbi4gTXkgbWFpbiBmb2N1cyBpcyBvbiB3aGF0IGRpZmZlcmVudCBkcml2ZXJzIGFyZSBjYWxsaW5nIHdoZW4gYSBwaHlzaWNhbCBsYXllciBjb25uZWN0aW9uIGlzIHNldmVyZWQgb3IgYSBkZXZpY2UgaXMgZGV0YWNoZWQuIEkga25vdyB0aGlzIGlzIHR5cGljYWxseSBhY2hpZXZlZCB0aHJvdWdoIGVpdGhlciBgcGh5X2Rpc2Nvbm5lY3RgIG9yIGBwaHlfZGV0YWNoYCwgYnV0IEkgbmVlZCB0byBzZWUgKndobyogaXMgdXNpbmcgd2hhdCBhbmQgd2hlbi4gSSdtIHRoaW5raW5nLCBpbiB0aGUgY29udGV4dCBvZiBuZXR3b3JrIGRldmljZXMsIHRoaXMgaXMgZ29pbmcgdG8gYmUgY29tbW9uIGluIFVTQi1iYXNlZCBFdGhlcm5ldCBkb25nbGVzIOKAkyB0aG9zZSBBU2l4LCBBWDg4MTc5LCBETTk2MDEsIFNNU0M5NXh4IHR5cGVzIOKAkyBhbmQgYWxzbyB2aXJ0dWFsIGRyaXZlcnMuIEJleW9uZCB0aGVzZSwgSSBzaG91bGQgcHJvYmFibHkgYWxzbyBleHBsb3JlIHN0YW5kYXJkIGRyaXZlcnMgdG9vLCBzdWNoIGFzIGByODE2OWAgb24gUENJIG9yIHdpdGhpbiBhIFFFTVUgZW52aXJvbm1lbnQsIHRvIHNlZSBpZiB0aGV5IHV0aWxpemUgdGhlc2UgbWV0aG9kcyBhcyB3ZWxsLiBVbHRpbWF0ZWx5LCB0aGUgcXVlc3Rpb24gdG8gYmUgYW5zd2VyZWQgaXMsIGRvZXMgYHI4MTY5YCwgYHVzYm5ldGAsIGBtZGlvLWdwaW9gLCBvciBhbnkgb3RoZXIgcmVsZXZhbnQgZHJpdmVyIHVzZSBgcGh5X2Rpc2Nvbm5lY3RgIG9yIGBwaHlfZGV0YWNoYD8gVGltZSB0byBzdGFydCBjcm9zcy1yZWZlcmVuY2luZyBhbmQgcmVhZGluZyB0aGUgc291cmNlIGNvZGUhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNzc3LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDEzOjA1OjI1LjM2OTM5MTE4OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzAyMTAwOTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5X2Rpc2Nvbm5lY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYz0yMzc9c3RhdGljIGludCBheDg4MTcyYV9zdG9wKHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTI0Ni1cXHRcXHRwaHlfc3RvcChwcml2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjI0NzpcXHRcXHRwaHlfZGlzY29ubmVjdChwcml2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTI0OC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYz0xMzE3PXN0YXRpYyB2b2lkIHNtc2M5NXh4X3VuYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMTMyMC1cXG5kcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYzoxMzIxOlxcdHBoeV9kaXNjb25uZWN0KGRldi1cXHUwMDNlbmV0LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jLTEzMjItXFx0bWRpb2J1c191bnJlZ2lzdGVyKHBkYXRhLVxcdTAwM2VtZGlvYnVzKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTM6MDU6MjUuNDM5NjA3MjU2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM4NTU0Mjk2NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ3VycmVudCBJbnZlc3RpZ2F0aW9uIGludG8gTmV0d29yayBJbnRlcmZhY2UgRGlzY29ubmVjdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIG5ldHdvcmsgaW50ZXJmYWNlIGRpc2Nvbm5lY3Rpb25zLCBhbmQgSSd2ZSBzdHVtYmxlZCB1cG9uIGEgZmV3IGludGVyZXN0aW5nIHBvaW50cy4gRmlyc3QsIEkgbm90aWNlZCB0aGF0IGByODE2OV9tYWluLmNgIGV4cGxpY2l0bHkgdXNlcyBgcGh5X2Rpc2Nvbm5lY3QodHAtXHUwMDNlcGh5ZGV2KWAgd2l0aGluIGl0cyBgcnRsODE2OV9jbG9zZWAgZnVuY3Rpb24uIFRoaXMgaXMgc2lnbmlmaWNhbnQuIFRoZSBjcnVjaWFsIHF1ZXN0aW9uLCBvZiBjb3Vyc2UsIGlzOiBXaGVuIGRvZXMgYHJ0bDgxNjlfY2xvc2VgIGdldCBleGVjdXRlZD8gRnJvbSBteSB1bmRlcnN0YW5kaW5nLCB0aGlzIGZ1bmN0aW9uIHJ1bnMgd2hlbiBJIGlzc3VlIGNvbW1hbmRzIGxpa2UgYGlwIGxpbmsgc2V0IGV0aDAgZG93bmAsIG9yIHdoZW4gdGhlIHNvY2tldCBjbG9zZXMsIG9yIHdoZW4gdGhlIG5ldHdvcmsgZGV2aWNlIGl0c2VsZiBpcyBicm91Z2h0IGRvd24uXG5cbk5vdywgcmVtZW1iZXIgdGhhdCBgcjgxNjlgIG9mdGVuIHJlcHJlc2VudHMgdGhlIHN0YW5kYXJkIFJlYWx0ZWsgTklDIHRoYXQncyBlbXVsYXRlZCB3aXRoaW4gYSBRRU1VIGVudmlyb25tZW50LCBlc3BlY2lhbGx5IHdoZW4gdXNpbmcgdGhlIGAtbmV0IG5pYyxtb2RlbD1ydGw4MTM5YCBvciBgLW5ldCBuaWMsbW9kZWw9cnRsODE2OWAgb3B0aW9ucywgb3IgaWYgYSBQQ0kgZGV2aWNlIG9mIHRoYXQgdHlwZSBpcyBzcGVjaWZpZWQuIFRoaXMgaXMgaW1wb3J0YW50IHRvIGtlZXAgaW4gbWluZCwgYmVjYXVzZSBpdCdzIGEgY29tbW9uIHNjZW5hcmlvIGluIG1hbnkgdGVzdGluZyBlbnZpcm9ubWVudHMuIEkgc2hvdWxkIGFsc28gcmVtZW1iZXIgdGhhdCBvdGhlciBzaW1pbGFyIGRyaXZlcnMsIGxpa2UgYGF4ODgxNzJhYCBhbmQgYHNtc2M5NXh4YCwgYXJlIGFsc28gVVNCIGdhZGdldHMvZHJpdmVycyB3aGljaCBhcmUgYWNjZXNzaWJsZSBpbiBzeXprYWxsZXIuXG5cbk5leHQsIEkgdGhpbmsgaXQncyB3b3J0aCB0YWtpbmcgYSBjbG9zZXIgbG9vayBhdCBgcGh5X2F0dGFjaF9kaXJlY3RgIHdpdGhpbiBgZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY2AuIFNwZWNpZmljYWxseSwgSSB3YW50IHRvIHVuZGVyc3RhbmQgaG93IGl0IGhhbmRsZXMgZmFpbHVyZXMuIEkgcmVjYWxsIHRoYXQgd2hlbiBgcGh5X2F0dGFjaF9kaXJlY3RgIGZhaWxzIOKAkyBmb3IgZXhhbXBsZSwgYXQgcHJvYmUgb3IgYXR0YWNoIHRpbWUsIHByaW9yIHRvIHN1Y2Nlc3NmdWwgcmVnaXN0cmF0aW9uIOKAkyBpdCBjYWxscyBgcGh5X2RldGFjaChwaHlkZXYpYC4gSSdtIGdvaW5nIHRvIGZvY3VzIG15IGF0dGVudGlvbiBhcm91bmQgbGluZXMgMTgwMC0xOTAwIGluIHRoYXQgZmlsZSB0byBiZXR0ZXIgdW5kZXJzdGFuZCB0aGUgZmFpbHVyZSBzY2VuYXJpb3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNDIwLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDEzOjA1OjI5LjI5NTAzOTc4NloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDI5NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxODcwLFxuICBcIkxpbmVDb3VudFwiOiA0NVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxODcwOlxcdFxcbjE4NzE6XFx0XFx0LyogRG8gaW5pdGlhbCBjb25maWd1cmF0aW9uIGhlcmUsIG5vdyB0aGF0XFxuMTg3MjpcXHRcXHQgKiB3ZSBoYXZlIGNlcnRhaW4ga2V5IHBhcmFtZXRlcnNcXG4xODczOlxcdFxcdCAqIChkZXZfZmxhZ3MgYW5kIGludGVyZmFjZSlcXG4xODc0OlxcdFxcdCAqL1xcbjE4NzU6XFx0XFx0ZXJyID0gcGh5X2luaXRfaHcocGh5ZGV2KTtcXG4xODc2OlxcdFxcdGlmIChlcnIpXFxuMTg3NzpcXHRcXHRcXHRnb3RvIGVycm9yO1xcbjE4Nzg6XFx0XFxuMTg3OTpcXHRcXHRwaHlfcmVzdW1lKHBoeWRldik7XFxuMTg4MDpcXHRcXG4xODgxOlxcdFxcdC8qKlxcbjE4ODI6XFx0XFx0ICogSWYgdGhlIGV4dGVybmFsIHBoeSB1c2VkIGJ5IGN1cnJlbnQgbWFjIGludGVyZmFjZSBpcyBtYW5hZ2VkIGJ5XFxuMTg4MzpcXHRcXHQgKiBhbm90aGVyIG1hYyBpbnRlcmZhY2UsIHNvIHdlIHNob3VsZCBjcmVhdGUgYSBkZXZpY2UgbGluayBiZXR3ZWVuXFxuMTg4NDpcXHRcXHQgKiBwaHkgZGV2IGFuZCBtYWMgZGV2LlxcbjE4ODU6XFx0XFx0ICovXFxuMTg4NjpcXHRcXHRpZiAoZGV2IFxcdTAwMjZcXHUwMDI2IHBoeWRldi1cXHUwMDNlbWRpby5idXMtXFx1MDAzZXBhcmVudCBcXHUwMDI2XFx1MDAyNiBkZXYtXFx1MDAzZWRldi5wYXJlbnQgIT0gcGh5ZGV2LVxcdTAwM2VtZGlvLmJ1cy1cXHUwMDNlcGFyZW50KVxcbjE4ODc6XFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2VkZXZsaW5rID0gZGV2aWNlX2xpbmtfYWRkKGRldi1cXHUwMDNlZGV2LnBhcmVudCwgXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5kZXYsXFxuMTg4ODpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgIERMX0ZMQUdfUE1fUlVOVElNRSB8IERMX0ZMQUdfU1RBVEVMRVNTKTtcXG4xODg5OlxcdFxcbjE4OTA6XFx0XFx0cmV0dXJuIGVycjtcXG4xODkxOlxcdFxcbjE4OTI6XFx0ZXJyb3I6XFxuMTg5MzpcXHRcXHQvKiBwaHlfZGV0YWNoKCkgZG9lcyBhbGwgb2YgdGhlIGNsZWFudXAgYmVsb3cgKi9cXG4xODk0OlxcdFxcdHBoeV9kZXRhY2gocGh5ZGV2KTtcXG4xODk1OlxcdFxcdHJldHVybiBlcnI7XFxuMTg5NjpcXHRcXG4xODk3OlxcdGVycm9yX21vZHVsZV9wdXQ6XFxuMTg5ODpcXHRcXHRtb2R1bGVfcHV0KGQtXFx1MDAzZWRyaXZlci1cXHUwMDNlb3duZXIpO1xcbjE4OTk6XFx0XFx0cGh5ZGV2LVxcdTAwM2Vpc19nZW5waHlfZHJpdmVuID0gMDtcXG4xOTAwOlxcdFxcdGQtXFx1MDAzZWRyaXZlciA9IE5VTEw7XFxuMTkwMTpcXHRlcnJvcl9wdXRfZGV2aWNlOlxcbjE5MDI6XFx0XFx0cHV0X2RldmljZShkKTtcXG4xOTAzOlxcdFxcdGlmIChuZGV2X293bmVyICE9IGJ1cy1cXHUwMDNlb3duZXIpXFxuMTkwNDpcXHRcXHRcXHRtb2R1bGVfcHV0KGJ1cy1cXHUwMDNlb3duZXIpO1xcbjE5MDU6XFx0XFx0cmV0dXJuIGVycjtcXG4xOTA2OlxcdH1cXG4xOTA3OlxcdEVYUE9SVF9TWU1CT0wocGh5X2F0dGFjaF9kaXJlY3QpO1xcbjE5MDg6XFx0XFxuMTkwOTpcXHQvKipcXG4xOTEwOlxcdCAqIHBoeV9kZXRhY2ggLSBkZXRhY2ggYSBQSFkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlXFxuMTkxMTpcXHQgKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3RcXG4xOTEyOlxcdCAqXFxuMTkxMzpcXHQgKiBUaGlzIGRldGFjaGVzIHRoZSBwaHkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlIGFuZCB0aGUgcGh5XFxuMTkxNDpcXHQgKiBkcml2ZXIsIGFuZCBkcm9wcyB0aGUgcmVmZXJlbmNlIGNvdW50IHRha2VuIGluIHBoeV9hdHRhY2hfZGlyZWN0KCkuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDEzOjA1OjI5LjI5NTQ0NjAzN1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3MTg0NTY0MzM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUEhZIERldmljZSBEZXRhY2htZW50IExvZ2ljKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYHBoeV9kZXRhY2hgLCB0aGUgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIGNsZWFubHkgc2VwYXJhdGluZyBhIFBIWSBkZXZpY2UgZnJvbSBpdHMgbmV0d29yayBkZXZpY2UuIE15IHByaW1hcnkgcXVlc3Rpb24gaXMgYWx3YXlzICp3aHkqIHdhcyB0aGlzIGNoYW5nZSBtYWRlPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbW90aXZhdGlvbiBiZWhpbmQgdGhpcyBtb2RpZmljYXRpb24sIHNvIGxldCdzIGRpZyBpbnRvIHRoZSBnaXQgbG9nIGFuZCB0aGUgY29tbWl0IG1lc3NhZ2UgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY2hhbmdlLiBDb250ZXh0IGlzIGV2ZXJ5dGhpbmcuIEknbGwgYWxzbyByZWFkIHRoZSBzdXJyb3VuZGluZyBjb2RlLCBlc3BlY2lhbGx5IGFueXRoaW5nIHJlbGF0ZWQgdG8gdGhlIGBod3Byb3ZgIHZhcmlhYmxlIGFuZCB0aGUgYHJ0bmxfZGVyZWZlcmVuY2VgIG1hY3JvLlxuXG5BaGEsIEkgc2VlIHdoYXQncyBoYXBwZW5pbmcuIFRoZSBvcmlnaW5hbCBjb2RlIHVzZWQgYHJ0bmxfZGVyZWZlcmVuY2UoZGV2LVx1MDAzZWh3cHJvdilgLCB3aGljaCBleHBhbmRzIHRvIGByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGRldi1cdTAwM2Vod3Byb3YsIGxvY2tkZXBfcnRubF9pc19oZWxkKCkpYC4gVGhlIGlzc3VlIGFwcGVhcnMgdG8gYmUgdGhhdCBgcGh5X2RldGFjaGAgY291bGQgYmUgY2FsbGVkICpiZWZvcmUqIHRoZSBSVE5MIGxvY2sgd2FzIGFjcXVpcmVkLiBGb3IgaW5zdGFuY2UsIHRoaXMgY291bGQgaGFwcGVuIGR1cmluZyBhIHByb2JlIGVycm9yIHNjZW5hcmlvLCBwZXJoYXBzIGJlZm9yZSB0aGUgbmV0d29yayBkZXZpY2Ugd2FzIGZ1bGx5IHJlZ2lzdGVyZWQgKGBkZXYtXHUwMDNlcmVnX3N0YXRlICE9IE5FVFJFR19SRUdJU1RFUkVEYCkuIEluIHRoaXMgY2FzZSwgYGxvY2tkZXBfcnRubF9pc19oZWxkKClgIHdvdWxkIGV2YWx1YXRlIHRvIGZhbHNlLCBsZWFkaW5nIHRvIGEgbG9ja2RlcCB3YXJuaW5nLiBJJ3ZlIHNlZW4gdGhlc2Ugc29ydHMgb2Ygd2FybmluZ3MgYmVmb3JlOyB0aGV5IGNhbiBiZSB0cmlja3kgdG8gZGVidWcuXG5cblRoZSBwYXRjaCByZXNvbHZlcyB0aGUgcHJvYmxlbSBieSBjaGFuZ2luZyB0aGUgYHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWRgIHNlY29uZCBhcmd1bWVudCB0byBhbGxvdyB0aGUgY29kZSB0byBydW4sIGVzc2VudGlhbGx5IHVzaW5nIGFuIFwib3JcIiBgfHxgIGNvbmRpdGlvbjogYGxvY2tkZXBfcnRubF9pc19oZWxkKCkgfHwgZGV2LVx1MDAzZXJlZ19zdGF0ZSAhPSBORVRSRUdfUkVHSVNURVJFRGAuIFRoaXMgY29ycmVjdGx5IHByb3RlY3RzIHRoZSBkZXJlZmVyZW5jZS5cblxuTm93LCBqdXN0IHRvIGJlIHN1cmUsIEkgc2hvdWxkIGNoZWNrIHRoZSBLY29uZmlnIHNldHRpbmdzIGZvciB0aGlzIHBhcnQgb2YgdGhlIGRyaXZlci4gSSB3aWxsIGxvb2sgYXQgdGhlIGBkcml2ZXJzL25ldC9waHkvYCBkaXJlY3RvcnksIHRvIGNvbmZpcm0gaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGltcGFjdCB0aGlzIHBhcnRpY3VsYXIgbG9naWMuIFRoaXMgd2lsbCBhbGxvdyBtZSB0byBiZSBmdWxseSBjb25maWRlbnQgaW4gdGhlIGFuYWx5c2lzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjc2NiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDEzOjA1OjM2LjQ4MDAxNDAwNVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU4MTAwMzY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBIWUxJQlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTY9Y29uZmlnIFBIWUxJTktcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy03LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6ODpcXHRzZWxlY3QgUEhZTElCXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctOS1cXHRzZWxlY3QgU1dQSFlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE0LVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjE1Om1lbnVjb25maWcgUEhZTElCXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTYtXFx0dHJpc3RhdGUgXFxcIlBIWSBEZXZpY2Ugc3VwcG9ydCBhbmQgaW5mcmFzdHJ1Y3R1cmVcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0yMS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzoyMjppZiBQSFlMSUJcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0yMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTQ2PWNvbmZpZyBPUEVOX0FMTElBTkNFX0hFTFBFUlNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTQ4LVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjQ5OmNvbmZpZyBQSFlMSUJfTEVEU1xcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTUwLVxcdGRlZl9ib29sIE9GXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6NTE6XFx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1QSFlMSUJcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy01Mi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz01Nj1jb25maWcgRklYRURfUEhZXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy02NC1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo2NTpjb25maWcgUlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6NjY6ICAgICAgICBib29sIFxcXCJSdXN0IFBIWUxJQiBhYnN0cmFjdGlvbnMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy02Ny0gICAgICAgIGRlcGVuZHMgb24gUlVTVFxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjY4OiAgICAgICAgZGVwZW5kcyBvbiBQSFlMSUI9eVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTY5LSAgICAgICAgaGVscFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc9OTM9Y29uZmlnIEFJUl9BTjg4MDFfUEhZXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctOTQtXFx0dHJpc3RhdGUgXFxcIkFpcm9oYSBBTjg4MDEgR2lnYWJpdCBQSFlcXFwiXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6OTU6XFx0c2VsZWN0IEFJUl9ORVRfUEhZTElCXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctOTYtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc9OTk9Y29uZmlnIEFJUl9FTjg4MTFIX1BIWVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTEwMC1cXHR0cmlzdGF0ZSBcXFwiQWlyb2hhIEVOODgxMUggMi41IEdpZ2FiaXQgUEhZXFxcIlxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjEwMTpcXHRzZWxlY3QgQUlSX05FVF9QSFlMSUJcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xMDItXFx0c2VsZWN0IFBIWV9DT01NT05fUFJPUFNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTEwNS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzoxMDY6Y29uZmlnIEFJUl9ORVRfUEhZTElCXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTA3LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz0xNDU9Y29uZmlnIEFNQ0NfUVQyMDI1X1BIWVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE0Ni1cXHR0cmlzdGF0ZSBcXFwiQU1DQyBRVDIwMjUgUEhZXFxcIlxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjE0NzpcXHRkZXBlbmRzIG9uIFJVU1RfUEhZTElCX0FCU1RSQUNUSU9OU1xcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE0OC1cXHRkZXBlbmRzIG9uIFJVU1RfRldfTE9BREVSX0FCU1RSQUNUSU9OU1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc9MTYwPWNvbmZpZyBBWDg4Nzk2Ql9SVVNUX1BIWVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE2MS1cXHRib29sIFxcXCJSdXN0IHJlZmVyZW5jZSBkcml2ZXIgZm9yIEFzaXggUEhZc1xcXCJcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzoxNjI6XFx0ZGVwZW5kcyBvbiBSVVNUX1BIWUxJQl9BQlNUUkFDVElPTlMgXFx1MDAyNlxcdTAwMjYgQVg4ODc5NkJfUEhZXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTYzLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTE2OD1jb25maWcgQlJPQURDT01fUEhZXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTY5LVxcdHRyaXN0YXRlIFxcXCJCcm9hZGNvbSA1NFhYIFBIWXNcXFwiXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6MTcwOlxcdHNlbGVjdCBCQ01fTkVUX1BIWUxJQlxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE3MS1cXHRzZWxlY3QgQkNNX05FVF9QSFlQVFAgaWYgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz0xNzc9Y29uZmlnIEJDTTU0MTQwX1BIWVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTc5LVxcdGRlcGVuZHMgb24gSFdNT04gfHwgSFdNT049blxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjE4MDpcXHRzZWxlY3QgQkNNX05FVF9QSFlMSUJcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xODEtXFx0c2VsZWN0IFBIWV9QQUNLQUdFXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz0xODg9Y29uZmlnIEJDTTYzWFhfUEhZXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xOTAtXFx0ZGVwZW5kcyBvbiBCQ002M1hYIHx8IENPTVBJTEVfVEVTVFxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjE5MTpcXHRzZWxlY3QgQkNNX05FVF9QSFlMSUJcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xOTItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc9MTk1PWNvbmZpZyBCQ003WFhYX1BIWVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE5Ni1cXHR0cmlzdGF0ZSBcXFwiQnJvYWRjb20gN3h4eCBTT0NzIGludGVybmFsIFBIWXNcXFwiXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6MTk3OlxcdHNlbGVjdCBCQ01fTkVUX1BIWUxJQlxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE5OC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz0yMTI9Y29uZmlnIEJDTV9DWUdOVVNfUEhZXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0yMTUtXFx0ZGVwZW5kcyBvbiBNRElPX0JDTV9JUFJPQ1xcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjIxNjpcXHRzZWxlY3QgQkNNX05FVF9QSFlMSUJcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0yMTctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMjI0LVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjIyNTpjb25maWcgQkNNX05FVF9QSFlMSUJcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0yMjYtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTQ4Nz1jb25maWcgWElMSU5YX0dNSUkyUkdNSUlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTQ5My1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo0OTQ6ZW5kaWYgIyBQSFlMSUJcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT00PWxpYnBoeS15XFx0XFx0XFx0Oj0gcGh5Lm8gcGh5LWM0NS5vIHBoeS1jb3JlLm8gcGh5X2RldmljZS5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS04LVxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo5OmlmZGVmIENPTkZJR19QSFlMSUJcXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MTA6IyBidWlsdC1pbiB3aGVuZXZlciBQSFlMSUIgaXMgYnVpbHQtaW4gb3IgbW9kdWxlXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTExLW9iai15XFx0XFx0XFx0XFx0Kz0gc3R1YnMub1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTE2PWxpYnBoeS0kKENPTkZJR19PUEVOX0FMTElBTkNFX0hFTFBFUlMpICs9IG9wZW5fYWxsaWFuY2VfaGVscGVycy5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTE3LVxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZToxODpvYmotJChDT05GSUdfUEhZTElCKVxcdFxcdCs9IG1kaW9fYnVzLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtMTktb2JqLSQoQ09ORklHX1BIWUxJTkspXFx0XFx0Kz0gcGh5bGluay5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjIwOm9iai0kKENPTkZJR19QSFlMSUIpXFx0XFx0Kz0gbGlicGh5Lm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MjE6b2JqLSQoQ09ORklHX1BIWUxJQilcXHRcXHQrPSBtZGlvX2RldnJlcy5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTIyLW9iai0kKENPTkZJR19QSFlfUEFDS0FHRSlcXHQrPSBwaHlfcGFja2FnZS5vXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU9MzQ9b2JqLSQoQ09ORklHX0FJUl9FTjg4MTFIX1BIWSkgICArPSBhaXJfZW44ODExaC5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjM1Om9iai0kKENPTkZJR19BSVJfTkVUX1BIWUxJQilcXHQrPSBhaXJfcGh5X2xpYi5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTM2LW9iai0kKENPTkZJR19BTURfUEhZKVxcdFxcdCs9IGFtZC5vXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU9NTA9b2JqLSQoQ09ORklHX0JDTV9DWUdOVVNfUEhZKVxcdCs9IGJjbS1jeWdudXMub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo1MTpvYmotJChDT05GSUdfQkNNX05FVF9QSFlMSUIpXFx0Kz0gYmNtLXBoeS1saWIub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS01Mi1vYmotJChDT05GSUdfQkNNX05FVF9QSFlQVFApXFx0Kz0gYmNtLXBoeS1wdHAub1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL0tjb25maWc9Mj1jb25maWcgTUVESUFURUtfMlA1R0VfUEhZXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvS2NvbmZpZy00LVxcdGRlcGVuZHMgb24gKEFSTTY0IFxcdTAwMjZcXHUwMDI2IEFSQ0hfTUVESUFURUspIHx8IENPTVBJTEVfVEVTVFxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9LY29uZmlnOjU6XFx0c2VsZWN0IE1US19ORVRfUEhZTElCXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL0tjb25maWctNi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvS2NvbmZpZz0xMz1jb25maWcgTUVESUFURUtfR0VfUEhZXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL0tjb25maWctMTQtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIEdpZ2FiaXQgRXRoZXJuZXQgUEhZc1xcXCJcXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvS2NvbmZpZzoxNTpcXHRzZWxlY3QgTVRLX05FVF9QSFlMSUJcXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvS2NvbmZpZy0xNi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvS2NvbmZpZz0zMz1jb25maWcgTUVESUFURUtfR0VfU09DX1BIWVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL0tjb25maWctMzctXFx0XFx0ICAgRUNPTkVUIHx8IENPTVBJTEVfVEVTVFxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9LY29uZmlnOjM4OlxcdHNlbGVjdCBNVEtfTkVUX1BIWUxJQlxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9LY29uZmlnLTM5LVxcdHNlbGVjdCBQSFlfUEFDS0FHRVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL0tjb25maWctNTEtXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL0tjb25maWc6NTI6Y29uZmlnIE1US19ORVRfUEhZTElCXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL0tjb25maWctNTMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9NYWtlZmlsZT01PW9iai0kKENPTkZJR19NRURJQVRFS19HRV9TT0NfUEhZKVxcdCs9IG10ay1nZS1zb2Mub1xcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19NVEtfTkVUX1BIWUxJQilcXHRcXHQrPSBtdGstcGh5LWxpYi5vXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTM2ODk9c3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zODA5LVxcdCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MzgxMDpcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfUEhZTElCX0xFRFMpIFxcdTAwMjZcXHUwMDI2ICFwaHlfZHJpdmVyX2lzX2dlbnBoeShwaHlkZXYpKSB7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zODExLVxcdFxcdGVyciA9IG9mX3BoeV9sZWRzKHBoeWRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTM4MzM9c3RhdGljIGludCBwaHlfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzgzOC1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjM4Mzk6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1BIWUxJQl9MRURTKSBcXHUwMDI2XFx1MDAyNiAhcGh5X2RyaXZlcl9pc19nZW5waHkocGh5ZGV2KSlcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTM4NDAtXFx0XFx0cGh5X2xlZHNfdW5yZWdpc3RlcihwaHlkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0zODY4PXN0YXRpYyBpbnQgcGh5X2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgcGh5X2RyaXZlciAqbmV3X2RyaXZlcixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzg4MS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjM4ODI6XFx0LyogUEhZTElCIGRldmljZSBkcml2ZXJzIG11c3Qgbm90IG1hdGNoIHVzaW5nIGEgRFQgY29tcGF0aWJsZSB0YWJsZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzg4My1cXHQgKiBhcyB0aGlzIGJ5cGFzc2VzIG91ciBjaGVja3MgdGhhdCB0aGUgbWRpb2RldiB0aGF0IGlzIGJlaW5nIG1hdGNoZWRcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWItaW50ZXJuYWwuaC01LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWItaW50ZXJuYWwuaDo2OiNpZm5kZWYgX19QSFlMSUJfSU5URVJOQUxfSFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWItaW50ZXJuYWwuaDo3OiNkZWZpbmUgX19QSFlMSUJfSU5URVJOQUxfSFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWItaW50ZXJuYWwuaC04LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpYi1pbnRlcm5hbC5oPTMwPWludCBnZW5waHlfYzQ1X3JlYWRfZWVlX2FkdihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1bnNpZ25lZCBsb25nICphZHYpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWItaW50ZXJuYWwuaC0zMS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmg6MzI6I2VuZGlmIC8qIF9fUEhZTElCX0lOVEVSTkFMX0ggKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWIuaC01LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWIuaDo2OiNpZm5kZWYgX19QSFlMSUJfSFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWIuaDo3OiNkZWZpbmUgX19QSFlMSUJfSFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWIuaC04LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oPTM4PWludCBtbWRfcGh5X3dyaXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfYWRkciwgYm9vbCBpc19jNDUsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLmgtNDAtXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oOjQxOiNlbmRpZiAvKiBfX1BIWUxJQl9IICovXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyMDM9c3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjI2LSAqIHBoeV9hdHRhY2hfZGlyZWN0KCkuIENvbmZpZ3VyZSB0aGUgQHBoeSBhY2NvcmRpbmcgdG8gdGhlIE1BQyBkcml2ZXInc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjIyNzogKiBjYXBhYmlsaXRpZXMsIHN0YXJ0IHRoZSBQSFlMSUIgc3RhdGUgbWFjaGluZSBhbmQgZW5hYmxlIGFueSBpbnRlcnJ1cHRzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjI4LSAqIHRoYXQgdGhlIFBIWSBzdXBwb3J0cy5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnOjI6Y29uZmlnIFFDT01fTkVUX1BIWUxJQlxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vS2NvbmZpZz01PWNvbmZpZyBBVDgwM1hfUEhZXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vS2NvbmZpZy02LVxcdHRyaXN0YXRlIFxcXCJRdWFsY29tbSBBdGhlcm9zIEFSODAzWCBQSFlzXFxcIlxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWc6NzpcXHRzZWxlY3QgUUNPTV9ORVRfUEhZTElCXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vS2NvbmZpZy04LVxcdGRlcGVuZHMgb24gUkVHVUxBVE9SXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnPTEyPWNvbmZpZyBRQ0E4M1hYX1BIWVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWctMTMtXFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIEF0aGVyb3MgUUNBODMzeCBQSFlzXFxcIlxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWc6MTQ6XFx0c2VsZWN0IFFDT01fTkVUX1BIWUxJQlxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWctMTUtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vS2NvbmZpZz0xOD1jb25maWcgUUNBODA4WF9QSFlcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnLTE5LVxcdHRyaXN0YXRlIFxcXCJRdWFsY29tbSBRQ0E4MDh4IFBIWXNcXFwiXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vS2NvbmZpZzoyMDpcXHRzZWxlY3QgUUNPTV9ORVRfUEhZTElCXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vS2NvbmZpZy0yMS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnPTI0PWNvbmZpZyBRQ0E4MDdYX1BIWVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWctMjUtXFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIFFDQTgwN3ggUEhZc1xcXCJcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnOjI2OlxcdHNlbGVjdCBRQ09NX05FVF9QSFlMSUJcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnLTI3LVxcdHNlbGVjdCBQSFlfUEFDS0FHRVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vTWFrZWZpbGU6MjpvYmotJChDT05GSUdfUUNPTV9ORVRfUEhZTElCKVxcdCs9IHFjb20tcGh5LWxpYi5vXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vTWFrZWZpbGUtMy1vYmotJChDT05GSUdfQVQ4MDNYX1BIWSlcXHQrPSBhdDgwM3gub1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Ntc2MuYz02Nj1pbnQgc21zY19waHlfY29uZmlnX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9zbXNjLmMtNzUtXFx0XFx0cmMgPSBwaHlfd3JpdGUocGh5ZGV2LCBNSUlfTEFOODNDMTg1X0lNLFxcbmRyaXZlcnMvbmV0L3BoeS9zbXNjLmM6NzY6XFx0XFx0XFx0ICAgICAgIE1JSV9MQU44M0MxODVfSVNGX0lOVF9QSFlMSUJfRVZFTlRTKTtcXG5kcml2ZXJzL25ldC9waHkvc21zYy5jLTc3LVxcdH0gZWxzZSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvc21zYy5jPTEwMT1pcnFyZXR1cm5fdCBzbXNjX3BoeV9oYW5kbGVfaW50ZXJydXB0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvc21zYy5jLTExMi1cXG5kcml2ZXJzL25ldC9waHkvc21zYy5jOjExMzpcXHRpZiAoIShpcnFfc3RhdHVzIFxcdTAwMjYgTUlJX0xBTjgzQzE4NV9JU0ZfSU5UX1BIWUxJQl9FVkVOVFMpKVxcbmRyaXZlcnMvbmV0L3BoeS9zbXNjLmMtMTE0LVxcdFxcdHJldHVybiBJUlFfTk9ORTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9zdHVicy5jLTMtICogU3R1YnMgZm9yIFBIWSBsaWJyYXJ5IGZ1bmN0aW9uYWxpdHkgY2FsbGVkIGJ5IHRoZSBjb3JlIG5ldHdvcmsgc3RhY2suXFxuZHJpdmVycy9uZXQvcGh5L3N0dWJzLmM6NDogKiBUaGVzZSBhcmUgbmVjZXNzYXJ5IGJlY2F1c2UgQ09ORklHX1BIWUxJQiBjYW4gYmUgYSBtb2R1bGUsIGFuZCBidWlsdC1pblxcbmRyaXZlcnMvbmV0L3BoeS9zdHVicy5jLTUtICogY29kZSBjYW5ub3QgZGlyZWN0bHkgY2FsbCBzeW1ib2xzIGV4cG9ydGVkIGJ5IG1vZHVsZXMuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDEzOjA1OjM2LjczODExODY5MloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNTU2ODQ5ODc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIFBIWUxJQiBhbmQgaXRzIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgYENPTkZJR19QSFlMSUJgIGlzIGEgaGFyZCByZXF1aXJlbWVudCBmb3IgdGhlIGBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jYCBmaWxlLiBSaWdodCwgdGhhdCBtYWtlcyBzZW5zZSDigJMgUEhZTElCIGlzIGNsZWFybHkgdGhlIGNvcmUgbGlicmFyeSBmb3IgaGFuZGxpbmcgUEhZIGRldmljZXMuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgYFBIWUxJQmAgaXRzZWxmIHJlbGllcyBvbiBvdGhlciBjb3JlIG5ldHdvcmtpbmcgY29tcG9uZW50cy4gTXkgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gcXVpY2tseSBjaGVjayBpZiBgUEhZTElCYCBkZXBlbmRzIG9uIGBORVRERVZJQ0VTYC4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCByZWxhdGlvbnNoaXAuIFRoZW4sIEknbGwgZ28gc3RyYWlnaHQgdG8gYGRyaXZlcnMvbmV0L3BoeS9LY29uZmlnYCB0byBwaW5wb2ludCBleGFjdGx5IGhvdyBgUEhZTElCYCBpcyBjb25maWd1cmVkIGFuZCBhbnkgZGVwZW5kZW5jaWVzIHdpdGhpbiB0aGF0IGNvbnRleHQuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBjb21wbGV0ZSBwaWN0dXJlIG9mIGl0cyBwbGFjZSBpbiB0aGUgbmV0d29ya2luZyBzdWJzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3Njk1LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTM6MDU6NDAuMjk0OTcyODQ3WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MzE5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBQSFkgTGF5ZXIgQ29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgUEhZTElOS1xcbiAgIDc6XFx0XFx0dHJpc3RhdGVcXG4gICA4OlxcdFxcdHNlbGVjdCBQSFlMSUJcXG4gICA5OlxcdFxcdHNlbGVjdCBTV1BIWVxcbiAgMTA6XFx0XFx0aGVscFxcbiAgMTE6XFx0XFx0ICBQSFlsaW5rIG1vZGVscyB0aGUgbGluayBiZXR3ZWVuIHRoZSBQSFkgYW5kIE1BQywgYWxsb3dpbmcgZml4ZWRcXG4gIDEyOlxcdFxcdCAgY29uZmlndXJhdGlvbiBsaW5rcywgUEhZcywgYW5kIFNlcmRlcyBsaW5rcyB3aXRoIE1BQyBsZXZlbFxcbiAgMTM6XFx0XFx0ICBhdXRvbmVnb3RpYXRpb24gbW9kZXMuXFxuICAxNDpcXHRcXG4gIDE1OlxcdG1lbnVjb25maWcgUEhZTElCXFxuICAxNjpcXHRcXHR0cmlzdGF0ZSBcXFwiUEhZIERldmljZSBzdXBwb3J0IGFuZCBpbmZyYXN0cnVjdHVyZVxcXCJcXG4gIDE3OlxcdFxcdGhlbHBcXG4gIDE4OlxcdFxcdCAgRXRoZXJuZXQgY29udHJvbGxlcnMgYXJlIHVzdWFsbHkgYXR0YWNoZWQgdG8gUEhZXFxuICAxOTpcXHRcXHQgIGRldmljZXMuICBUaGlzIG9wdGlvbiBwcm92aWRlcyBpbmZyYXN0cnVjdHVyZSBmb3JcXG4gIDIwOlxcdFxcdCAgbWFuYWdpbmcgUEhZIGRldmljZXMuXFxuICAyMTpcXHRcXG4gIDIyOlxcdGlmIFBIWUxJQlxcbiAgMjM6XFx0XFxuICAyNDpcXHRjb25maWcgU1dQSFlcXG4gIDI1OlxcdFxcdGJvb2xcXG4gIDI2OlxcdFxcbiAgMjc6XFx0Y29uZmlnIFBIWV9QQUNLQUdFXFxuICAyODpcXHRcXHQgdHJpc3RhdGVcXG4gIDI5OlxcdFxcbiAgMzA6XFx0Y29uZmlnIExFRF9UUklHR0VSX1BIWVxcbiAgMzE6XFx0XFx0Ym9vbCBcXFwiU3VwcG9ydCBMRUQgdHJpZ2dlcnMgZm9yIHRyYWNraW5nIGxpbmsgc3RhdGVcXFwiXFxuICAzMjpcXHRcXHRkZXBlbmRzIG9uIExFRFNfVFJJR0dFUlNcXG4gIDMzOlxcdFxcdGhlbHBcXG4gIDM0OlxcdFxcdCAgQWRkcyBzdXBwb3J0IGZvciBhIHNldCBvZiBMRUQgdHJpZ2dlciBldmVudHMgcGVyLVBIWS4gIExpbmtcXG4gIDM1OlxcdFxcdCAgc3RhdGUgY2hhbmdlIHdpbGwgdHJpZ2dlciB0aGUgZXZlbnRzLCBmb3IgY29uc3VtcHRpb24gYnkgYW5cXG4gIDM2OlxcdFxcdCAgTEVEIGNsYXNzIGRyaXZlci4gIFRoZXJlIGFyZSB0cmlnZ2VycyBmb3IgZWFjaCBsaW5rIHNwZWVkIGN1cnJlbnRseVxcbiAgMzc6XFx0XFx0ICBzdXBwb3J0ZWQgYnkgdGhlIFBIWSBhbmQgYWxzbyBhIG9uZSBjb21tb24gXFxcImxpbmtcXFwiIHRyaWdnZXIgYXMgYVxcbiAgMzg6XFx0XFx0ICBsb2dpY2FsLW9yIG9mIGFsbCB0aGUgbGluayBzcGVlZCBvbmVzLlxcbiAgMzk6XFx0XFx0ICBBbGwgdGhlc2UgdHJpZ2dlcnMgYXJlIG5hbWVkIGFjY29yZGluZyB0byB0aGUgZm9sbG93aW5nIHBhdHRlcm46XFxuICA0MDpcXHRcXHQgICAgICBcXHUwMDNjbWlpIGJ1cyBpZFxcdTAwM2U6XFx1MDAzY3BoeVxcdTAwM2U6XFx1MDAzY3NwZWVkXFx1MDAzZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxMzowNTo0MC4yOTUxMjgzNzdaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjMyNTA5Mjg2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgdGhvdWdoIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzOlxuXG4qKk5hdmlnYXRpbmcgdGhlIE5ldHdvcmsgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBvcHRpb25zIHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBuZXR3b3JrIGRyaXZlciwgbGlrZWx5IGEgUEhZIGRyaXZlciBnaXZlbiB0aGUgY29udGV4dC4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBzdGFydCBhdCB0aGUgdG9wIGxldmVsIGFuZCB0cmFjZSBkb3duLiBJJ20gZ29pbmcgdG8ganVtcCBpbnRvIGBkcml2ZXJzL25ldC9LY29uZmlnYC4gVGhhdCdzIHdoZXJlIHRoZSBvdmVyYXJjaGluZyBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIG5ldHdvcmsgZHJpdmVycyBhcmUgbGlrZWx5IGRlZmluZWQuIFRoaXMgd2lsbCBiZSB0aGUgc3RhcnRpbmcgcG9pbnQuIEkga25vdyB0aGF0IGBkcml2ZXJzL25ldC9waHkvS2NvbmZpZ2AgaXMgaW5jbHVkZWQgZnJvbSBoZXJlLiBCeSBpbnNwZWN0aW5nIGBkcml2ZXJzL25ldC9LY29uZmlnYCwgSSBzaG91bGQgYmUgYWJsZSB0byBzZWUgZXhhY3RseSAqaG93KiB0aGUgUEhZIGNvbmZpZ3VyYXRpb24gaXMgYnJvdWdodCBpbiwgYW5kIHdoYXQgY29uZGl0aW9ucyB0cmlnZ2VyIGl0cyBpbmNsdXNpb24uIFRoYXQncyB0aGUgYmVzdCBmaXJzdCBzdGVwLiBMZXQncyBzZWUgd2hhdCdzIGluIGBkcml2ZXJzL25ldC9LY29uZmlnYC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg0MzEsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDEzOjA1OjQyLjYyMDIyNDU5M1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA5NDU4NzcxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkcml2ZXJzL25ldC9waHkvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnPTUxMj1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L2lwYS9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWctNTEzLVxcbmRyaXZlcnMvbmV0L0tjb25maWc6NTE0OnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZy01MTUtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDEzOjA1OjQ0LjcxNDgzMDAwOFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1OTczMTU0Njc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgQW5hbHlzaXM6IGBwaHlfZGV0YWNoYCBpbiBOZXR3b3JraW5nIENvZGUqKlxuXG5Pa2F5LCBzbyBoZXJlJ3MgdGhlIGJyZWFrZG93biBvZiBteSB0aGlua2luZyByZWdhcmRpbmcgdGhpcyBwYXRjaC4gRmlyc3QsIGl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogYGRyaXZlcnMvbmV0L0tjb25maWdgIGlzIGd1YXJkZWQgYnkgYG1lbnVjb25maWcgTkVUREVWSUNFU2AsIHdoaWNoIHJlbGllcyBvbiBgTkVUYCwgYW5kIGBQSFlMSUJgIGRlcGVuZHMgb24gYE5FVERFVklDRVNgLCBzbyB3ZSBoYXZlIGEgY2xlYXIgcGF0aCB0byB0aGUgY29kZS5cblxuTm93LCB0byB0aGUgZnV6emluZyBxdWVzdGlvbnMuXG5cbjEuICAqKklzIHRoZSBwYXRjaCByZWFjaGFibGU/KiogQWJzb2x1dGVseS4gVGhlIGBwaHlfZGV0YWNoYCBmdW5jdGlvbiBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZS4gSXQncyBjYWxsZWQgd2hlbiBuZXR3b3JrIGRldmljZXMgd2l0aCBQSFkgZGV2aWNlcyAobGlrZSBSZWFsdGVrIE5JQ3MsIFVTQiBuZXR3b3JrIGFkYXB0ZXJzLCBhbmQgZXZlbiBkdW1teSBvciBtb2NrIG5ldHdvcmsgZGV2aWNlcykgYXJlIG9wZW5lZCBvciBjbG9zZWQsIHVucmVnaXN0ZXJlZCwgb3Igd2hlbiBhdHRhY2ggZmFpbHMuIEFsc28gd2hlbiBQSFlMaW5rIGRpc2Nvbm5lY3RzLCB3aGljaCBpcyBhbiBpbXBvcnRhbnQgcGF0aCB0byBjb3Zlci5cblxuMi4gICoqSXMgaXQgd29ydGggZnV6emluZz8qKiBUaGlzIGlzIHdoZXJlIGl0IGdldHMgaW50ZXJlc3RpbmcuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBmb2xsb3dpbmcgY29yZSB0cmlhZ2UgcGhpbG9zb3BoeS5cblxuICAgICogICBUaGlzIHBhdGNoIG1vZGlmaWVzIGEgY3J1Y2lhbCBmdW5jdGlvbiBgcGh5X2RldGFjaCgpYCBpbiBgZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY2AuXG4gICAgKiAgIFNwZWNpZmljYWxseSwgaXQgY2hhbmdlcyBob3cgd2UgaGFuZGxlIGFuIFJDVSBwb2ludGVyLCBgZGV2LVx1MDAzZWh3cHJvdmAsIGFkZGluZyBhbiBSQ1UgcHJvdGVjdGlvbiBjaGVjaywgd2hpY2ggaXMgYW4gYXNzZXJ0aW9uIG9yIGxvY2tkZXAgYXNzZXJ0aW9uIGNoYW5nZS5cbiAgICAqICAgYHBoeV9kZXRhY2goKWAgaXMgY2FsbGVkIGJ5IG5ldHdvcmtpbmcgY29kZSBpbiByZWFjaGFibGUgZHJpdmVycyBhbmQgY29yZSBwaHlsaWIuXG4gICAgKiAgIFRoaXMgbW9kaWZpZXMgYSBjcml0aWNhbCBsb2NrZGVwIGFzc2VydGlvbiAvIHByb3RlY3Rpb24sIHNvIEknbSB0aGlua2luZyB0aGUgYW5zd2VyIHRvIHdvcnRoIGZ1enppbmcgc2hvdWxkIGJlIGB0cnVlYC5cblxuICAgIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBiZWluZyB0aG9yb3VnaCBhbmQgbm90IG1pc3NpbmcgYW55dGhpbmcuIEkgbmVlZCB0byBrbm93OlxuICAgICogYFdvcnRoRnV6emluZ2A6IGB0cnVlYFxuICAgICogICBgRm9jdXNTeW1ib2xzYDogSSdtIHplcm9pbmcgaW4gb24gYHBoeV9kZXRhY2hgLCBgcGh5X2Rpc2Nvbm5lY3RgLCBhbmQgYHBoeV9hdHRhY2hfZGlyZWN0YC4gVGhlc2UgYXJlIHRoZSBkaXJlY3QgY2FsbGVycyBvciBlbnRyeXBvaW50cyByZWxhdGVkIHRvIHRoZSBtb2RpZmllZCBmdW5jdGlvbi5cbiAgICAqICAgYEVuYWJsZUNvbmZpZ3NgOiBJJ3ZlIGdvdCBgTkVUREVWSUNFU2AgYW5kIGBQSFlMSUJgLCB3aGljaCBhcmUgYm90aCBuZWNlc3NhcnkuIEFuZCBvZiBjb3Vyc2UsIGBORVRgIGlzIGltcGxpZWQgYmVjYXVzZSBvZiB0aGUgZGVwZW5kZW5jeSBjaGFpbi5cblxuICAgIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnkgb3RoZXIgY29uZmlnIHJlcXVpcmVtZW50czpcbiAgICAqICAgYENPTkZJR19ORVRERVZJQ0VTPXlgXG4gICAgKiAgIGBDT05GSUdfUEhZTElCPXlgXG4gICAgKiAgIGAoYW5kIHBvc3NpYmx5IGBDT05GSUdfTkVUPXlgLCBidXQgYE5FVERFVklDRVNgIGRlcGVuZHMgb24gYE5FVGApLlxuXG4gICAgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBteSBmb2N1cyBzeW1ib2xzIG9uZSBsYXN0IHRpbWU6XG4gICAgKiAgIGBwaHlfZGV0YWNoYCBpcyB0aGUgKmV4YWN0KiBmdW5jdGlvbiBiZWluZyBtb2RpZmllZC5cbiAgICAqICAgYHBoeV9kaXNjb25uZWN0YCBpcyB0aGUgbWFpbiBleHBvcnRlZCB3cmFwcGVyIGZ1bmN0aW9uIGNhbGxlZCBieSBkcml2ZXJzIGR1cmluZyBjbGVhbnVwLCAnZG93bicsIG9yICd1bmJpbmQnIG9wZXJhdGlvbnMuXG4gICAgKiAgIGBwaHlfYXR0YWNoX2RpcmVjdGAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgYXR0YWNoZXMgYW5kIGNhbGxzIGBwaHlfZGV0YWNoYCBvbiB0aGUgZXJyb3IgcGF0aC4gVGhpcyBpcyBhIHZlcnkgaW1wb3J0YW50IHBhdGggdG8gY292ZXIuXG5cbkknbSBjb25maWRlbnQgSSBoYXZlIGFsbCB0aGUga2V5IHBpZWNlcy4gRXZlcnl0aGluZyBpcyBsb29raW5nIGdvb2QsIHNvIGxldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg3NDAsIk91dHB1dFRva2VucyI6MTM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDEzOjA1OjUwLjY4Nzk4OTE1NVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MzIyNDkzNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUREVWSUNFU1wiLFxuICAgIFwiUEhZTElCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGh5X2RldGFjaFwiLFxuICAgIFwicGh5X2Rpc2Nvbm5lY3RcIixcbiAgICBcInBoeV9hdHRhY2hfZGlyZWN0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvY2tkZXAvUkNVIHByb3RlY3Rpb24gYXNzZXJ0aW9uIG9uIGRldi1cXHUwMDNlaHdwcm92IHdpdGhpbiBwaHlfZGV0YWNoKCkgdG8gYXZvaWQgZmFsc2UgcG9zaXRpdmUgbG9ja2RlcCB3YXJuaW5ncyB3aGVuIGNsZWFuaW5nIHVwIG9uIHByb2JlIGZhaWx1cmUgYmVmb3JlIG5ldF9kZXZpY2UgcmVnaXN0cmF0aW9uLiBwaHlfZGV0YWNoKCkgYW5kIGl0cyBjYWxsZXJzIChzdWNoIGFzIHBoeV9kaXNjb25uZWN0KCkgYW5kIHBoeV9hdHRhY2hfZGlyZWN0KCkpIGFyZSByZWFjaGFibGUgdGhyb3VnaCBuZXR3b3JrIGRldmljZSBsaWZlY3ljbGUgYW5kIG5ldGxpbmsvc29ja2V0IGNvbmZpZ3VyYXRpb24gb3BlcmF0aW9ucyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUREVWSUNFU1wiLFxuICAgIFwiUEhZTElCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGh5X2RldGFjaFwiLFxuICAgIFwicGh5X2Rpc2Nvbm5lY3RcIixcbiAgICBcInBoeV9hdHRhY2hfZGlyZWN0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvY2tkZXAvUkNVIHByb3RlY3Rpb24gYXNzZXJ0aW9uIG9uIGRldi1cXHUwMDNlaHdwcm92IHdpdGhpbiBwaHlfZGV0YWNoKCkgdG8gYXZvaWQgZmFsc2UgcG9zaXRpdmUgbG9ja2RlcCB3YXJuaW5ncyB3aGVuIGNsZWFuaW5nIHVwIG9uIHByb2JlIGZhaWx1cmUgYmVmb3JlIG5ldF9kZXZpY2UgcmVnaXN0cmF0aW9uLiBwaHlfZGV0YWNoKCkgYW5kIGl0cyBjYWxsZXJzIChzdWNoIGFzIHBoeV9kaXNjb25uZWN0KCkgYW5kIHBoeV9hdHRhY2hfZGlyZWN0KCkpIGFyZSByZWFjaGFibGUgdGhyb3VnaCBuZXR3b3JrIGRldmljZSBsaWZlY3ljbGUgYW5kIG5ldGxpbmsvc29ja2V0IGNvbmZpZ3VyYXRpb24gb3BlcmF0aW9ucyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDEzOjA1OjUwLjgzMTIyMDU2MloiLCJTZXEiOjIxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQyMjkyNjkwMjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxMzowNTo1MC44MzE3MjcxOTNaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoyNDIyODc1NjI3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYW4gUkNVIGxvY2tkZXAgY2hlY2sgaW4gYHBoeV9kZXRhY2goKWAgYnkgcmVwbGFjaW5nIGBydG5sX2RlcmVmZXJlbmNlKGRldi1cXHUwMDNlaHdwcm92KWAgd2l0aCBgcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChkZXYtXFx1MDAzZWh3cHJvdiwgbG9ja2RlcF9ydG5sX2lzX2hlbGQoKSB8fCBkZXYtXFx1MDAzZXJlZ19zdGF0ZSAhPSBORVRSRUdfUkVHSVNURVJFRClgIHRvIHByZXZlbnQgbG9ja2RlcCB3YXJuaW5ncyBkdXJpbmcgZWFybHkgcHJvYmUgZXJyb3IgY2xlYW51cCB3aGVuIFJUTkwgaXMgbm90IGhlbGQuXFxuXFxuVGhpcyBjaGFuZ2UgaXMgcHVyZWx5IGEgbG9ja2RlcCBhc3NlcnRpb24gYWRqdXN0bWVudCBpbiBSQ1UgcG9pbnRlciBkZXJlZmVyZW5jaW5nLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGFsbG9jYXRpb25zLCBkYXRhIGNvcGllcyB0byB1c2Vyc3BhY2UsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLiBTdGFuZGFyZCBLQVNBTi9MT0NLREVQIGJ1aWxkcyBhcmUgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgbG9ja2luZyBvciBtZW1vcnkgc2FmZXR5IGlzc3VlcyBoZXJlLCBhbmQgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSByZXF1aXJpbmcgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGEwZjJhNjA0NDQ4ZWNhZDViNTRmZWJjMGJmNTNjMTA2ZDg3ZmU1NDRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCA4IDEzOjA1OjAyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbmluZGV4IDk0YjJlODVlMDBhMzcuLmFjMDk5NDNlMTAwZmIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG5AQCAtMTkzOSw5ICsxOTM5LDEzIEBAIHZvaWQgcGh5X2RldGFjaChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0XHRzdHJ1Y3QgaHd0c3RhbXBfcHJvdmlkZXIgKmh3cHJvdjtcbiBcbiBcdFx0LyogaHdwcm92IG1heSB0ZWNobmljYWxseSBiZSBwcm90ZWN0ZWQgYnkgb3BzIGxvY2sgYnV0XG4tXHRcdCAqIG5vdCBmb3IgZGV2aWNlcyB3aXRoIGEgcGh5ZGV2LCBzZWUgcGh5X2xpbmtfdG9wb19hZGRfcGh5KClcbitcdFx0ICogbm90IGZvciBkZXZpY2VzIHdpdGggYSBwaHlkZXYsIHNlZSBwaHlfbGlua190b3BvX2FkZF9waHkoKS5cbitcdFx0ICogUlROTCBpcyBub3QgaGVsZCB3aGVuIGNsZWFuaW5nIHVwIG9uIHByb2JlIGZhaWx1cmUgYmVmb3JlXG4rXHRcdCAqIGRldmljZSByZWdpc3RyYXRpb24uXG4gXHRcdCAqL1xuLVx0XHRod3Byb3YgPSBydG5sX2RlcmVmZXJlbmNlKGRldi1cdTAwM2Vod3Byb3YpO1xuK1x0XHRod3Byb3YgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGRldi1cdTAwM2Vod3Byb3YsXG4rXHRcdFx0XHRcdFx0ICAgbG9ja2RlcF9ydG5sX2lzX2hlbGQoKSB8fFxuK1x0XHRcdFx0XHRcdCAgIGRldi1cdTAwM2VyZWdfc3RhdGUgIT0gTkVUUkVHX1JFR0lTVEVSRUQpO1xuIFx0XHQvKiBEaXNhYmxlIHRpbWVzdGFtcCBpZiBpdCBpcyB0aGUgb25lIHNlbGVjdGVkICovXG4gXHRcdGlmIChod3Byb3YgXHUwMDI2XHUwMDI2IGh3cHJvdi1cdTAwM2VwaHlkZXYgPT0gcGh5ZGV2KSB7XG4gXHRcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKGRldi1cdTAwM2Vod3Byb3YsIE5VTEwpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTM6MDU6NTAuODMxNzI4MjkzWiIsIlNlcSI6MjMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE4OTIxMzU5MzIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUEhZIERldGFjaG1lbnQgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgKndoeSogdGhpcyBjaGFuZ2UgaXMgbmVjZXNzYXJ5IHdpdGhpbiBgZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY2AsIHNwZWNpZmljYWxseSBhcm91bmQgdGhlIGBwaHlfZGV0YWNoYCBmdW5jdGlvbi4gVGhlIGRpZmYgaGlnaGxpZ2h0cyBhIG1vZGlmaWNhdGlvbiByZWxhdGVkIHRvIGhhcmR3YXJlIHRpbWVzdGFtcGluZyAoYGh3cHJvdmApIGFuZCBpdHMgaW50ZXJhY3Rpb24gd2l0aCBgcGh5ZGV2YC4gSSBrbm93IHRoYXQgYHBoeV9kZXRhY2hgIGlzIHJlc3BvbnNpYmxlIGZvciBjbGVhbmluZyB1cCBhbmQgcmVsZWFzaW5nIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggYSBQSFkgZGV2aWNlLlxuXG5Mb29raW5nIGF0IHRoZSBjb2RlLCBpdCBzZWVtcyB0aGUgY29yZSBpc3N1ZSBpcyByZWxhdGVkIHRvIHRoZSBwcm90ZWN0aW9uIG9mIGBkZXYtXHUwMDNlaHdwcm92YC4gVGhlIGNvbW1lbnQgcG9pbnRzIG91dCBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbi4gIFRoZSBjb21tZW50IG1lbnRpb25zIFwiZGV2aWNlcyB3aXRoIGEgcGh5ZGV2XCIg4oCTIHRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgbXkgYXR0ZW50aW9uIGJlY2F1c2UgSSBuZWVkIHRvIGNvbnNpZGVyIGFsbCB0aGUgY2FzZXMuIEl0IGFsc28gZXhwbGljaXRseSBtZW50aW9ucyB0aGF0IFJUTkwgaXMgKm5vdCogaGVsZCBkdXJpbmcgY2xlYW51cCBpbiBwcm9iZSBmYWlsdXJlIGJlZm9yZSByZWdpc3RyYXRpb24g4oCTIHRoaXMgY29udGV4dCBpcyBrZXksIGFuZCBJIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucy5cblxuVGhlIG9yaWdpbmFsIGNvZGUgdXNlZCBgcnRubF9kZXJlZmVyZW5jZShkZXYtXHUwMDNlaHdwcm92KWAuIE5vdywgaXQgdXNlcyBgcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZCgpYC4gVGhpcyBpbmRpY2F0ZXMgYSBzaGlmdCB0byBSQ1UgcHJvdGVjdGlvbiwgd2hpY2ggaXMgdGhlIGNvcnJlY3QgYXBwcm9hY2ggaGVyZS4gVGhlIHNlY29uZCBhcmd1bWVudCB0byBgcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZGAgc3BlY2lmaWVzIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoZSBhY2Nlc3MgaXMgc2FmZS4gSSdtIHNlZWluZyB0aGF0IHRoZSBhY2Nlc3MgaXMgc2FmZSBpZiBlaXRoZXI6IDEpIFJUTkwgaXMgaGVsZCwgb3IgMikgdGhlIGRldmljZSBpc24ndCByZWdpc3RlcmVkIHlldCAoYGRldi1cdTAwM2VyZWdfc3RhdGUgIT0gTkVUUkVHX1JFR0lTVEVSRURgKS4gSSB1bmRlcnN0YW5kIHRoaXMgbG9naWMg4oCTIFJDVSBndWFyYW50ZWVzIHRoYXQgcmVhZHMgYXJlIHNhZmUgaWYgZWl0aGVyIGFuIFJUTkwgcmVhZCBsb2NrIGlzIGhlbGQsIG9yIGlmIHRoZSBkZXZpY2UgaXMgdW5yZWdpc3RlcmVkLlxuXG5UaGVyZWZvcmUsIHRoZSBwYXRjaCBpcyBtYWtpbmcgdGhlIGNvZGUgc2FmZXIgYW5kIG1vcmUgcm9idXN0LiBUaGlzIGlzIGEgZ29vZCBpbXByb3ZlbWVudCwgc3BlY2lmaWNhbGx5IGF2b2lkaW5nIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkYXRhIGNvcnJ1cHRpb24gaXNzdWVzIGR1cmluZyBQSFkgZGV0YWNobWVudCwgZXNwZWNpYWxseSBpbiB0aGUgY29udGV4dCBvZiBwcm9iZSBmYWlsdXJlcyBiZWZvcmUgcmVnaXN0cmF0aW9uLCB3aGVyZSBSVE5MIGlzbid0IGhlbGQsIGFuZCB0aGUgZGV2aWNlIGlzIGJlaW5nIGRlLXJlZ2lzdGVyZWQuIEkgYXBwcm92ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIxMywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDEzOjA2OjA5Ljc1MzA5MTM3NVoiLCJTZXEiOjI0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTA1ODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxOTI1LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxOTI1OlxcdFxcdH1cXG4xOTI2OlxcdFxcbjE5Mjc6XFx0XFx0aWYgKHBoeWRldi1cXHUwMDNlc3lzZnNfbGlua3MpIHtcXG4xOTI4OlxcdFxcdFxcdGlmIChkZXYpXFxuMTkyOTpcXHRcXHRcXHRcXHRzeXNmc19yZW1vdmVfbGluayhcXHUwMDI2ZGV2LVxcdTAwM2VkZXYua29iaiwgXFxcInBoeWRldlxcXCIpO1xcbjE5MzA6XFx0XFx0XFx0c3lzZnNfcmVtb3ZlX2xpbmsoXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5kZXYua29iaiwgXFxcImF0dGFjaGVkX2RldlxcXCIpO1xcbjE5MzE6XFx0XFx0fVxcbjE5MzI6XFx0XFxuMTkzMzpcXHRcXHRpZiAoIXBoeWRldi1cXHUwMDNlYXR0YWNoZWRfZGV2KVxcbjE5MzQ6XFx0XFx0XFx0c3lzZnNfcmVtb3ZlX2ZpbGUoXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5kZXYua29iaixcXG4xOTM1OlxcdFxcdFxcdFxcdFxcdCAgXFx1MDAyNmRldl9hdHRyX3BoeV9zdGFuZGFsb25lLmF0dHIpO1xcbjE5MzY6XFx0XFxuMTkzNzpcXHRcXHRwaHlfc3VzcGVuZChwaHlkZXYpO1xcbjE5Mzg6XFx0XFx0aWYgKGRldikge1xcbjE5Mzk6XFx0XFx0XFx0c3RydWN0IGh3dHN0YW1wX3Byb3ZpZGVyICpod3Byb3Y7XFxuMTk0MDpcXHRcXG4xOTQxOlxcdFxcdFxcdC8qIGh3cHJvdiBtYXkgdGVjaG5pY2FsbHkgYmUgcHJvdGVjdGVkIGJ5IG9wcyBsb2NrIGJ1dFxcbjE5NDI6XFx0XFx0XFx0ICogbm90IGZvciBkZXZpY2VzIHdpdGggYSBwaHlkZXYsIHNlZSBwaHlfbGlua190b3BvX2FkZF9waHkoKS5cXG4xOTQzOlxcdFxcdFxcdCAqIFJUTkwgaXMgbm90IGhlbGQgd2hlbiBjbGVhbmluZyB1cCBvbiBwcm9iZSBmYWlsdXJlIGJlZm9yZVxcbjE5NDQ6XFx0XFx0XFx0ICogZGV2aWNlIHJlZ2lzdHJhdGlvbi5cXG4xOTQ1OlxcdFxcdFxcdCAqL1xcbjE5NDY6XFx0XFx0XFx0aHdwcm92ID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChkZXYtXFx1MDAzZWh3cHJvdixcXG4xOTQ3OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgIGxvY2tkZXBfcnRubF9pc19oZWxkKCkgfHxcXG4xOTQ4OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgIGRldi1cXHUwMDNlcmVnX3N0YXRlICE9IE5FVFJFR19SRUdJU1RFUkVEKTtcXG4xOTQ5OlxcdFxcdFxcdC8qIERpc2FibGUgdGltZXN0YW1wIGlmIGl0IGlzIHRoZSBvbmUgc2VsZWN0ZWQgKi9cXG4xOTUwOlxcdFxcdFxcdGlmIChod3Byb3YgXFx1MDAyNlxcdTAwMjYgaHdwcm92LVxcdTAwM2VwaHlkZXYgPT0gcGh5ZGV2KSB7XFxuMTk1MTpcXHRcXHRcXHRcXHRyY3VfYXNzaWduX3BvaW50ZXIoZGV2LVxcdTAwM2Vod3Byb3YsIE5VTEwpO1xcbjE5NTI6XFx0XFx0XFx0XFx0a2ZyZWVfcmN1KGh3cHJvdiwgcmN1X2hlYWQpO1xcbjE5NTM6XFx0XFx0XFx0fVxcbjE5NTQ6XFx0XFxuMTk1NTpcXHRcXHRcXHRwaHlkZXYtXFx1MDAzZWF0dGFjaGVkX2Rldi1cXHUwMDNlcGh5ZGV2ID0gTlVMTDtcXG4xOTU2OlxcdFxcdFxcdHBoeWRldi1cXHUwMDNlYXR0YWNoZWRfZGV2ID0gTlVMTDtcXG4xOTU3OlxcdFxcdFxcdHBoeV9saW5rX3RvcG9fZGVsX3BoeShkZXYsIHBoeWRldik7XFxuMTk1ODpcXHRcXHR9XFxuMTk1OTpcXHRcXG4xOTYwOlxcdFxcdHBoeWRldi1cXHUwMDNlcGh5X2xpbmtfY2hhbmdlID0gTlVMTDtcXG4xOTYxOlxcdFxcdHBoeWRldi1cXHUwMDNlcGh5bGluayA9IE5VTEw7XFxuMTk2MjpcXHRcXG4xOTYzOlxcdFxcdGlmIChwaHlkZXYtXFx1MDAzZW1kaW8uZGV2LmRyaXZlcilcXG4xOTY0OlxcdFxcdFxcdG1vZHVsZV9wdXQocGh5ZGV2LVxcdTAwM2VtZGlvLmRldi5kcml2ZXItXFx1MDAzZW93bmVyKTtcXG4xOTY1OlxcdFxcbjE5NjY6XFx0XFx0LyogSWYgdGhlIGRldmljZSBoYWQgbm8gc3BlY2lmaWMgZHJpdmVyIGJlZm9yZSAoaS5lLiAtIGl0XFxuMTk2NzpcXHRcXHQgKiB3YXMgdXNpbmcgdGhlIGdlbmVyaWMgZHJpdmVyKSwgd2UgdW5iaW5kIHRoZSBkZXZpY2VcXG4xOTY4OlxcdFxcdCAqIGZyb20gdGhlIGdlbmVyaWMgZHJpdmVyIHNvIHRoYXQgdGhlcmUncyBhIGNoYW5jZSBhXFxuMTk2OTpcXHRcXHQgKiByZWFsIGRyaXZlciBjb3VsZCBiZSBsb2FkZWRcXG4xOTcwOlxcdFxcdCAqL1xcbjE5NzE6XFx0XFx0aWYgKHBoeWRldi1cXHUwMDNlaXNfZ2VucGh5X2RyaXZlbikge1xcbjE5NzI6XFx0XFx0XFx0ZGV2aWNlX3JlbGVhc2VfZHJpdmVyKFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2KTtcXG4xOTczOlxcdFxcdFxcdHBoeWRldi1cXHUwMDNlaXNfZ2VucGh5X2RyaXZlbiA9IDA7XFxuMTk3NDpcXHRcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDEzOjA2OjA5Ljc1MzMwNTE4NloiLCJTZXEiOjI1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MzA3MTQ5NDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIExvY2tkZXAgQXNzZXJ0aW9uIEFkanVzdG1lbnQqKlxuXG5Pa2F5LCBsZXQncyBicmVhayBkb3duIHRoaXMgY2hhbmdlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dC4gV2UncmUgZGVhbGluZyB3aXRoIGEgbW9kaWZpY2F0aW9uIHRvIGhvdyBgaHdwcm92YCBpcyBhY2Nlc3NlZC4gUHJldmlvdXNseSwgd2Ugd2VyZSB1c2luZyBgcnRubF9kZXJlZmVyZW5jZWAsIHdoaWNoIHRyYW5zbGF0ZXMgdG8gYHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWRgIHdpdGggYSBzcGVjaWZpYyBsb2NrZGVwIGNvbmRpdGlvbiDigJMgdGhhdCB0aGUgUlROTCBsb2NrIGlzIGhlbGQuIFRoZSBwcm9ibGVtPyBJdCBzZWVtcyB0aGF0IGluIGNlcnRhaW4gcHJvYmUgY2xlYW51cCBzY2VuYXJpb3MsIHNwZWNpZmljYWxseSAqYmVmb3JlKiB0aGUgbmV0d29yayBkZXZpY2UgaXMgZnVsbHkgcmVnaXN0ZXJlZCAoYGRldi1cdTAwM2VyZWdfc3RhdGUgIT0gTkVUUkVHX1JFR0lTVEVSRURgKSwgdGhlIFJUTkwgbG9jayBtaWdodCBub3QgYmUgaGVsZCB3aGVuIGBwaHlfZGV0YWNoYCBpcyBjYWxsZWQuIFRoaXMgdHJpZ2dlcnMgYSBsb2NrZGVwIHdhcm5pbmcsIGEgXCJzdXNwaWNpb3VzIFJDVSB1c2FnZVwiIG1lc3NhZ2UsIHdoaWNoIGlzbid0IGlkZWFsLlxuXG5UaGUgcHJvcG9zZWQgc29sdXRpb24/IFRvIGFkanVzdCB0aGUgbG9ja2RlcCBhc3NlcnRpb24gd2l0aGluIGByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkYC4gVGhlIGNoYW5nZSBpcyBlc3NlbnRpYWxseSBleHRlbmRpbmcgdGhlIHByb3RlY3Rpb24gY29uZGl0aW9uIHRvIGluY2x1ZGUgdGhlIHJlZ2lzdHJhdGlvbiBzdGF0ZSBjaGVjazogbm93LCBgcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZGAgd2lsbCBjb25zaWRlciBlaXRoZXIgdGhlIFJUTkwgbG9jayBiZWluZyBoZWxkICpvciogdGhlIGRldmljZSAqbm90KiBiZWluZyByZWdpc3RlcmVkIGFzIGFjY2VwdGFibGUuIFRoaXMgbG9va3MgbGlrZSBhIHB1cmVseSBkZWZlbnNpdmUgY2hhbmdlIGZvciB0aGUgbG9ja2RlcCwgd2hpY2ggbmVlZHMgdG8gYmUgY2FyZWZ1bGx5IGFzc2Vzc2VkLlxuXG5OZXh0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgZG9lc24ndCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnktcmVsYXRlZCBpc3N1ZXMuIElzIHRoZXJlIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2sgaGVyZT8gSSdtIHRoaW5raW5nLi4uIG5vLiBUaGVyZSdzIG5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbiwgbm8gY29weWluZyBkYXRhIHRvIHVzZXIgc3BhY2UgdGhhdCBjb3VsZCBsZWFkIHRvIGxlYWtzLCBubyBuZXcgZmllbGRzIGludHJvZHVjZWQsIGFuZCBjcnVjaWFsbHksIG5vIGNoYW5nZXMgdG8gaW5pdGlhbGl6YXRpb24gcGF0aHMuIEZ1cnRoZXJtb3JlLCB0aGVyZSdzIG5vIHV0aWxpemF0aW9uIG9mIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIGluIGNvbmRpdGlvbnMgb3IgYXJpdGhtZXRpYy4gVGhlIG9ubHkgdGhpbmcgbW9kaWZpZWQgaXMgdGhlIGxvY2tkZXAgYXNzZXJ0aW9uIGluIGByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkYC4gVGhhdCdzIGltcG9ydGFudC5cblxuSSB0aGVuIHBpdm90IHRvIGNvbnNpZGVyIEtNU0FOIGFuZCBLQVNBTi4gS0FTQU4gYW5kIExPQ0tERVAgdGFrZSBjYXJlIG9mIG1lbW9yeSBidWdzIGFuZCBsb2NrZGVwIGlzc3Vlcy4gS01TQU4gaXMgdGhlIGtleSBoZXJlLCBsb29raW5nIGZvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcy4gU2luY2UgdGhlIGNoYW5nZSBkb2Vzbid0IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBjb3BpZXMgdG8gdXNlcnNwYWNlIG9yIG5ldyBmaWVsZHMvdmFyaWFibGVzLCB0aGVyZSdzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkuIEdpdmVuIHRoYXQsIGBOZWVkc0tNU0FOYCBzaG91bGQgYmUgYGZhbHNlYC5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCdzIHJldmlldyBhbGwgdGhlIGNvbXBvbmVudHMuIERvZXMgdGhlIHVzZSBvZiBgZGV2LVx1MDAzZXJlZ19zdGF0ZWAgcG9zZSBhIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnk/IE5vLCBiZWNhdXNlIGBzdHJ1Y3QgbmV0X2RldmljZWAgYWxsb2NhdGVzIGFuZCBzZXRzIGByZWdfc3RhdGVgIGR1cmluZyBpbml0aWFsaXphdGlvbi4gQW5kIHdoYXQgYWJvdXQgYGRldi1cdTAwM2Vod3Byb3ZgPyBBZ2Fpbiwgbm8uIFRoZSBwYXRjaCBpcywgZXNzZW50aWFsbHksIHNpbGVuY2luZyBhIGxvY2tkZXAgd2FybmluZyB0aGF0IGFwcGVhcnMgZHVyaW5nIHByb2JlIGZhaWx1cmUgY2xlYW51cCwgKmJlZm9yZSogdGhlIGRldmljZSBpcyByZWdpc3RlcmVkLiBJdCdzIGp1c3QgYSBkZWZlbnNpdmUgYWRqdXN0bWVudCB0byB0aGUgbG9ja2RlcCBjb25kaXRpb24gdG8gYXZvaWQgdGhvc2Ugc3B1cmlvdXMgd2FybmluZ3MuIE5vdywgbGV0J3MgY2FsbCB0aGUgYHNldC1yZXN1bHRzYCB0b29sIGFuZCBtb3ZlIGZvcndhcmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4NDYsIk91dHB1dFRva2VucyI6MTg2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTM6MDY6MTUuMDYwNDU3MjI2WiIsIlNlcSI6MjYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMzNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBhbiBSQ1UgbG9ja2RlcCBjaGVjayBpbiBgcGh5X2RldGFjaCgpYCBieSByZXBsYWNpbmcgYHJ0bmxfZGVyZWZlcmVuY2UoZGV2LVxcdTAwM2Vod3Byb3YpYCB3aXRoIGByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGRldi1cXHUwMDNlaHdwcm92LCBsb2NrZGVwX3J0bmxfaXNfaGVsZCgpIHx8IGRldi1cXHUwMDNlcmVnX3N0YXRlICE9IE5FVFJFR19SRUdJU1RFUkVEKWAgdG8gcHJldmVudCBsb2NrZGVwIHdhcm5pbmdzIGR1cmluZyBlYXJseSBwcm9iZSBlcnJvciBjbGVhbnVwIHdoZW4gUlROTCBpcyBub3QgaGVsZC5cXG5cXG5UaGlzIGNoYW5nZSBpcyBwdXJlbHkgYSBsb2NrZGVwIGFzc2VydGlvbiBhZGp1c3RtZW50IGluIFJDVSBwb2ludGVyIGRlcmVmZXJlbmNpbmcuIEl0IGRvZXMgbm90IGludHJvZHVjZSBuZXcgYWxsb2NhdGlvbnMsIGRhdGEgY29waWVzIHRvIHVzZXJzcGFjZSwgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIFN0YW5kYXJkIEtBU0FOL0xPQ0tERVAgYnVpbGRzIGFyZSBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSBsb2NraW5nIG9yIG1lbW9yeSBzYWZldHkgaXNzdWVzIGhlcmUsIGFuZCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIHJlcXVpcmluZyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYW4gUkNVIGxvY2tkZXAgY2hlY2sgaW4gYHBoeV9kZXRhY2goKWAgYnkgcmVwbGFjaW5nIGBydG5sX2RlcmVmZXJlbmNlKGRldi1cXHUwMDNlaHdwcm92KWAgd2l0aCBgcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChkZXYtXFx1MDAzZWh3cHJvdiwgbG9ja2RlcF9ydG5sX2lzX2hlbGQoKSB8fCBkZXYtXFx1MDAzZXJlZ19zdGF0ZSAhPSBORVRSRUdfUkVHSVNURVJFRClgIHRvIHByZXZlbnQgbG9ja2RlcCB3YXJuaW5ncyBkdXJpbmcgZWFybHkgcHJvYmUgZXJyb3IgY2xlYW51cCB3aGVuIFJUTkwgaXMgbm90IGhlbGQuXFxuXFxuVGhpcyBjaGFuZ2UgaXMgcHVyZWx5IGEgbG9ja2RlcCBhc3NlcnRpb24gYWRqdXN0bWVudCBpbiBSQ1UgcG9pbnRlciBkZXJlZmVyZW5jaW5nLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGFsbG9jYXRpb25zLCBkYXRhIGNvcGllcyB0byB1c2Vyc3BhY2UsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLiBTdGFuZGFyZCBLQVNBTi9MT0NLREVQIGJ1aWxkcyBhcmUgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgbG9ja2luZyBvciBtZW1vcnkgc2FmZXR5IGlzc3VlcyBoZXJlLCBhbmQgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSByZXF1aXJpbmcgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow45wjk[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-08 13:03:05 +0000 UTC FinishedAt: 2026-09-08 13:06:16 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "df2908090cda368b01ff43709f51890076c56157", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETDEVICES", "PHYLIB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "df2908090cda368b01ff43709f51890076c56157", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETDEVICES", "PHYLIB" ], "series_id": "5ed69443-800e-46ba-b4f3-bb7fce04a97c" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "phy_detach", "phy_disconnect", "phy_attach_direct" ], "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+CgkJCTx0ZD4yMDI2LzA5LzA4IDEzOjA1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVERFVklDRVMmIzM0OywKICAgICYjMzQ7UEhZTElCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGh5X2RldGFjaCYjMzQ7LAogICAgJiMzNDtwaHlfZGlzY29ubmVjdCYjMzQ7LAogICAgJiMzNDtwaHlfYXR0YWNoX2RpcmVjdCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGFuIFJDVSBsb2NrZGVwIGNoZWNrIGluIGBwaHlfZGV0YWNoKClgIGJ5IHJlcGxhY2luZyBgcnRubF9kZXJlZmVyZW5jZShkZXYtXHUwMDNlaHdwcm92KWAgd2l0aCBgcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChkZXYtXHUwMDNlaHdwcm92LCBsb2NrZGVwX3J0bmxfaXNfaGVsZCgpIHx8IGRldi1cdTAwM2VyZWdfc3RhdGUgIT0gTkVUUkVHX1JFR0lTVEVSRUQpYCB0byBwcmV2ZW50IGxvY2tkZXAgd2FybmluZ3MgZHVyaW5nIGVhcmx5IHByb2JlIGVycm9yIGNsZWFudXAgd2hlbiBSVE5MIGlzIG5vdCBoZWxkLlxuXG5UaGlzIGNoYW5nZSBpcyBwdXJlbHkgYSBsb2NrZGVwIGFzc2VydGlvbiBhZGp1c3RtZW50IGluIFJDVSBwb2ludGVyIGRlcmVmZXJlbmNpbmcuIEl0IGRvZXMgbm90IGludHJvZHVjZSBuZXcgYWxsb2NhdGlvbnMsIGRhdGEgY29waWVzIHRvIHVzZXJzcGFjZSwgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIFN0YW5kYXJkIEtBU0FOL0xPQ0tERVAgYnVpbGRzIGFyZSBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSBsb2NraW5nIG9yIG1lbW9yeSBzYWZldHkgaXNzdWVzIGhlcmUsIGFuZCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIHJlcXVpcmluZyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NrZGVwL1JDVSBwcm90ZWN0aW9uIGFzc2VydGlvbiBvbiBkZXYtXHUwMDNlaHdwcm92IHdpdGhpbiBwaHlfZGV0YWNoKCkgdG8gYXZvaWQgZmFsc2UgcG9zaXRpdmUgbG9ja2RlcCB3YXJuaW5ncyB3aGVuIGNsZWFuaW5nIHVwIG9uIHByb2JlIGZhaWx1cmUgYmVmb3JlIG5ldF9kZXZpY2UgcmVnaXN0cmF0aW9uLiBwaHlfZGV0YWNoKCkgYW5kIGl0cyBjYWxsZXJzIChzdWNoIGFzIHBoeV9kaXNjb25uZWN0KCkgYW5kIHBoeV9hdHRhY2hfZGlyZWN0KCkpIGFyZSByZWFjaGFibGUgdGhyb3VnaCBuZXR3b3JrIGRldmljZSBsaWZlY3ljbGUgYW5kIG5ldGxpbmsvc29ja2V0IGNvbmZpZ3VyYXRpb24gb3BlcmF0aW9ucyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTM6MDU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBhMGYyYTYwNDQ0OGVjYWQ1YjU0ZmViYzBiZjUzYzEwNmQ4N2ZlNTQ0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgOCAxMzowNTowMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuaW5kZXggOTRiMmU4NWUwMGEzNy4uYWMwOTk0M2UxMDBmYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbkBAIC0xOTM5LDkgJiM0MzsxOTM5LDEzIEBAIHZvaWQgcGh5X2RldGFjaChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0XHRzdHJ1Y3QgaHd0c3RhbXBfcHJvdmlkZXIgKmh3cHJvdjtcbiBcbiBcdFx0LyogaHdwcm92IG1heSB0ZWNobmljYWxseSBiZSBwcm90ZWN0ZWQgYnkgb3BzIGxvY2sgYnV0XG4tXHRcdCAqIG5vdCBmb3IgZGV2aWNlcyB3aXRoIGEgcGh5ZGV2LCBzZWUgcGh5X2xpbmtfdG9wb19hZGRfcGh5KClcbiYjNDM7XHRcdCAqIG5vdCBmb3IgZGV2aWNlcyB3aXRoIGEgcGh5ZGV2LCBzZWUgcGh5X2xpbmtfdG9wb19hZGRfcGh5KCkuXG4mIzQzO1x0XHQgKiBSVE5MIGlzIG5vdCBoZWxkIHdoZW4gY2xlYW5pbmcgdXAgb24gcHJvYmUgZmFpbHVyZSBiZWZvcmVcbiYjNDM7XHRcdCAqIGRldmljZSByZWdpc3RyYXRpb24uXG4gXHRcdCAqL1xuLVx0XHRod3Byb3YgPSBydG5sX2RlcmVmZXJlbmNlKGRldi1cdTAwM2Vod3Byb3YpO1xuJiM0MztcdFx0aHdwcm92ID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChkZXYtXHUwMDNlaHdwcm92LFxuJiM0MztcdFx0XHRcdFx0XHQgICBsb2NrZGVwX3J0bmxfaXNfaGVsZCgpIHx8XG4mIzQzO1x0XHRcdFx0XHRcdCAgIGRldi1cdTAwM2VyZWdfc3RhdGUgIT0gTkVUUkVHX1JFR0lTVEVSRUQpO1xuIFx0XHQvKiBEaXNhYmxlIHRpbWVzdGFtcCBpZiBpdCBpcyB0aGUgb25lIHNlbGVjdGVkICovXG4gXHRcdGlmIChod3Byb3YgXHUwMDI2XHUwMDI2IGh3cHJvdi1cdTAwM2VwaHlkZXYgPT0gcGh5ZGV2KSB7XG4gXHRcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKGRldi1cdTAwM2Vod3Byb3YsIE5VTEwpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDEzOjA1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVERFVklDRVMmIzM0OywKICAgICYjMzQ7UEhZTElCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGh5X2RldGFjaCYjMzQ7LAogICAgJiMzNDtwaHlfZGlzY29ubmVjdCYjMzQ7LAogICAgJiMzNDtwaHlfYXR0YWNoX2RpcmVjdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2RlcC9SQ1UgcHJvdGVjdGlvbiBhc3NlcnRpb24gb24gZGV2LVx1MDAzZWh3cHJvdiB3aXRoaW4gcGh5X2RldGFjaCgpIHRvIGF2b2lkIGZhbHNlIHBvc2l0aXZlIGxvY2tkZXAgd2FybmluZ3Mgd2hlbiBjbGVhbmluZyB1cCBvbiBwcm9iZSBmYWlsdXJlIGJlZm9yZSBuZXRfZGV2aWNlIHJlZ2lzdHJhdGlvbi4gcGh5X2RldGFjaCgpIGFuZCBpdHMgY2FsbGVycyAoc3VjaCBhcyBwaHlfZGlzY29ubmVjdCgpIGFuZCBwaHlfYXR0YWNoX2RpcmVjdCgpKSBhcmUgcmVhY2hhYmxlIHRocm91Z2ggbmV0d29yayBkZXZpY2UgbGlmZWN5Y2xlIGFuZCBuZXRsaW5rL3NvY2tldCBjb25maWd1cmF0aW9uIG9wZXJhdGlvbnMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTBmMmE2MDQ0NDhlY2FkNWI1NGZlYmMwYmY1M2MxMDZkODdmZTU0NApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgU2VwIDggMTM6MDU6MDIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYwppbmRleCA5NGIyZTg1ZTAwYTM3Li5hYzA5OTQzZTEwMGZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMKQEAgLTE5MzksOSAmIzQzOzE5MzksMTMgQEAgdm9pZCBwaHlfZGV0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiAJCXN0cnVjdCBod3RzdGFtcF9wcm92aWRlciAqaHdwcm92OwogCiAJCS8qIGh3cHJvdiBtYXkgdGVjaG5pY2FsbHkgYmUgcHJvdGVjdGVkIGJ5IG9wcyBsb2NrIGJ1dAotCQkgKiBub3QgZm9yIGRldmljZXMgd2l0aCBhIHBoeWRldiwgc2VlIHBoeV9saW5rX3RvcG9fYWRkX3BoeSgpCiYjNDM7CQkgKiBub3QgZm9yIGRldmljZXMgd2l0aCBhIHBoeWRldiwgc2VlIHBoeV9saW5rX3RvcG9fYWRkX3BoeSgpLgomIzQzOwkJICogUlROTCBpcyBub3QgaGVsZCB3aGVuIGNsZWFuaW5nIHVwIG9uIHByb2JlIGZhaWx1cmUgYmVmb3JlCiYjNDM7CQkgKiBkZXZpY2UgcmVnaXN0cmF0aW9uLgogCQkgKi8KLQkJaHdwcm92ID0gcnRubF9kZXJlZmVyZW5jZShkZXYtJmd0O2h3cHJvdik7CiYjNDM7CQlod3Byb3YgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGRldi0mZ3Q7aHdwcm92LAomIzQzOwkJCQkJCSAgIGxvY2tkZXBfcnRubF9pc19oZWxkKCkgfHwKJiM0MzsJCQkJCQkgICBkZXYtJmd0O3JlZ19zdGF0ZSAhPSBORVRSRUdfUkVHSVNURVJFRCk7CiAJCS8qIERpc2FibGUgdGltZXN0YW1wIGlmIGl0IGlzIHRoZSBvbmUgc2VsZWN0ZWQgKi8KIAkJaWYgKGh3cHJvdiAmYW1wOyZhbXA7IGh3cHJvdi0mZ3Q7cGh5ZGV2ID09IHBoeWRldikgewogCQkJcmN1X2Fzc2lnbl9wb2ludGVyKGRldi0mZ3Q7aHdwcm92LCBOVUxMKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTM6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAwMQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDQxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQSFkgRGV2aWNlIERldGFjaG1lbnQgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29tbWl0IHJlbGF0ZWQgdG8gYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBwaHlfZGV0YWNoYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRpdmUgaW50byB0aGUgY29kZSBhbmQgdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyBoZXJlIHdpdGggdGhlIGhhcmR3YXJlIHRpbWVzdGFtcCBwcm92aWRlciAoYGh3cHJvdmApLiBJIG5lZWQgdG8gZ3Jhc3Agd2h5IHRoZXJlJiMzOTtzIGEgY2hhbmdlIHJlbGF0ZWQgdG8gaG93IHdlJiMzOTtyZSBhY2Nlc3NpbmcgdGhpcyBgaHdwcm92YCBzdHJ1Y3R1cmUsIHBhcnRpY3VsYXJseSBpbiB0aGUgY29udGV4dCBvZiBkZXZpY2UgZGV0YWNobWVudC4KClRoZSBjb21tZW50IG1lbnRpb25zIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIGludm9sdmluZyBgcGh5X2xpbmtfdG9wb19hZGRfcGh5KClgLCBhbmQgdGhhdCBSVE5MIGlzbiYjMzk7dCBhbHdheXMgaGVsZCwgZXNwZWNpYWxseSBkdXJpbmcgcHJvYmUgZmFpbHVyZXMgYmVmb3JlIGRldmljZSByZWdpc3RyYXRpb24uIFRoYXQmIzM5O3MgYSByZWQgZmxhZy4gSSBrbm93IHRoYXQgaWYgYGh3cHJvdmAgaXNuJiMzOTt0IGhhbmRsZWQgY29ycmVjdGx5IGR1cmluZyB0aGVzZSBzY2VuYXJpb3MsIGl0IGNhbiBsZWFkIHRvIG1lbW9yeSBjb3JydXB0aW9uIG9yIG90aGVyIG5hc3R5IGlzc3Vlcy4gVGhpcyBgcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZGAgd2l0aCBhZGRlZCBwcm90ZWN0aW9uIGlzIGxpa2VseSB0aGUgZml4LgoKTXkgaW1tZWRpYXRlIHBsYW4gaXMgdG8gdXNlIHRvb2xzLCBgZ3JlcHBlcmAgb3IgYHJlYWQtZmlsZWAsIHRvIGNoZWNrIHRoZSBjb2RlIGl0c2VsZiwgdG8gdmVyaWZ5IHRoZSBjb250ZXh0IG9mIGBwaHlfZGV0YWNoYCBhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byBgZGV2LSZndDtod3Byb3ZgLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIHRoZSBhZGRlZCBwcm90ZWN0aW9uIGBsb2NrZGVwX3J0bmxfaXNfaGVsZCgpIHx8IGRldi0mZ3Q7cmVnX3N0YXRlICE9IE5FVFJFR19SRUdJU1RFUkVEYCBpcyBzdWZmaWNpZW50IGZvciBhbGwgdGhlIHBvc3NpYmxlIGNvbmRpdGlvbnMgYW5kIHRoYXQgaXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBuZXcgcmVncmVzc2lvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHdlIG1pZ2h0IGJlIGFjY2Vzc2luZyBgZGV2LSZndDtod3Byb3ZgIHdpdGhvdXQgUlROTCBoZWxkLiBBIGdvb2QgdW5kZXJzdGFuZGluZyBvZiB0aGUgbmV0ZGV2aWNlIHJlZ2lzdHJhdGlvbiBzdGF0ZSBpcyBlc3NlbnRpYWwgaGVyZS4gU3BlY2lmaWNhbGx5LCBgTkVUUkVHX1JFR0lTVEVSRURgIGFuZCByZWxhdGVkIHN0YXRlcy4gSSBhbHNvIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIFBIWSBkZXZpY2UgaW50ZXJhY3RzIHdpdGggdGhlIG5ldHdvcmtpbmcgc3RhY2sgYW5kIHRoZSBoYXJkd2FyZSB0aW1lc3RhbXBpbmcgY29uZmlndXJhdGlvbiB0byBldmFsdWF0ZSB0aGUgbG9naWMmIzM5O3MgY29ycmVjdG5lc3MgYW5kIGltcGFjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxMzowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxOTI1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE5MjU6XHRcdH1cbjE5MjY6XHRcbjE5Mjc6XHRcdGlmIChwaHlkZXYtXHUwMDNlc3lzZnNfbGlua3MpIHtcbjE5Mjg6XHRcdFx0aWYgKGRldilcbjE5Mjk6XHRcdFx0XHRzeXNmc19yZW1vdmVfbGluayhcdTAwMjZkZXYtXHUwMDNlZGV2LmtvYmosIFwmIzM0O3BoeWRldlwmIzM0Oyk7XG4xOTMwOlx0XHRcdHN5c2ZzX3JlbW92ZV9saW5rKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldi5rb2JqLCBcJiMzNDthdHRhY2hlZF9kZXZcJiMzNDspO1xuMTkzMTpcdFx0fVxuMTkzMjpcdFxuMTkzMzpcdFx0aWYgKCFwaHlkZXYtXHUwMDNlYXR0YWNoZWRfZGV2KVxuMTkzNDpcdFx0XHRzeXNmc19yZW1vdmVfZmlsZShcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYua29iaixcbjE5MzU6XHRcdFx0XHRcdCAgXHUwMDI2ZGV2X2F0dHJfcGh5X3N0YW5kYWxvbmUuYXR0cik7XG4xOTM2Olx0XG4xOTM3Olx0XHRwaHlfc3VzcGVuZChwaHlkZXYpO1xuMTkzODpcdFx0aWYgKGRldikge1xuMTkzOTpcdFx0XHRzdHJ1Y3QgaHd0c3RhbXBfcHJvdmlkZXIgKmh3cHJvdjtcbjE5NDA6XHRcbjE5NDE6XHRcdFx0LyogaHdwcm92IG1heSB0ZWNobmljYWxseSBiZSBwcm90ZWN0ZWQgYnkgb3BzIGxvY2sgYnV0XG4xOTQyOlx0XHRcdCAqIG5vdCBmb3IgZGV2aWNlcyB3aXRoIGEgcGh5ZGV2LCBzZWUgcGh5X2xpbmtfdG9wb19hZGRfcGh5KCkuXG4xOTQzOlx0XHRcdCAqIFJUTkwgaXMgbm90IGhlbGQgd2hlbiBjbGVhbmluZyB1cCBvbiBwcm9iZSBmYWlsdXJlIGJlZm9yZVxuMTk0NDpcdFx0XHQgKiBkZXZpY2UgcmVnaXN0cmF0aW9uLlxuMTk0NTpcdFx0XHQgKi9cbjE5NDY6XHRcdFx0aHdwcm92ID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChkZXYtXHUwMDNlaHdwcm92LFxuMTk0NzpcdFx0XHRcdFx0XHRcdCAgIGxvY2tkZXBfcnRubF9pc19oZWxkKCkgfHxcbjE5NDg6XHRcdFx0XHRcdFx0XHQgICBkZXYtXHUwMDNlcmVnX3N0YXRlICE9IE5FVFJFR19SRUdJU1RFUkVEKTtcbjE5NDk6XHRcdFx0LyogRGlzYWJsZSB0aW1lc3RhbXAgaWYgaXQgaXMgdGhlIG9uZSBzZWxlY3RlZCAqL1xuMTk1MDpcdFx0XHRpZiAoaHdwcm92IFx1MDAyNlx1MDAyNiBod3Byb3YtXHUwMDNlcGh5ZGV2ID09IHBoeWRldikge1xuMTk1MTpcdFx0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihkZXYtXHUwMDNlaHdwcm92LCBOVUxMKTtcbjE5NTI6XHRcdFx0XHRrZnJlZV9yY3UoaHdwcm92LCByY3VfaGVhZCk7XG4xOTUzOlx0XHRcdH1cbjE5NTQ6XHRcbjE5NTU6XHRcdFx0cGh5ZGV2LVx1MDAzZWF0dGFjaGVkX2Rldi1cdTAwM2VwaHlkZXYgPSBOVUxMO1xuMTk1NjpcdFx0XHRwaHlkZXYtXHUwMDNlYXR0YWNoZWRfZGV2ID0gTlVMTDtcbjE5NTc6XHRcdFx0cGh5X2xpbmtfdG9wb19kZWxfcGh5KGRldiwgcGh5ZGV2KTtcbjE5NTg6XHRcdH1cbjE5NTk6XHRcbjE5NjA6XHRcdHBoeWRldi1cdTAwM2VwaHlfbGlua19jaGFuZ2UgPSBOVUxMO1xuMTk2MTpcdFx0cGh5ZGV2LVx1MDAzZXBoeWxpbmsgPSBOVUxMO1xuMTk2MjpcdFxuMTk2MzpcdFx0aWYgKHBoeWRldi1cdTAwM2VtZGlvLmRldi5kcml2ZXIpXG4xOTY0Olx0XHRcdG1vZHVsZV9wdXQocGh5ZGV2LVx1MDAzZW1kaW8uZGV2LmRyaXZlci1cdTAwM2Vvd25lcik7XG4xOTY1Olx0XG4xOTY2Olx0XHQvKiBJZiB0aGUgZGV2aWNlIGhhZCBubyBzcGVjaWZpYyBkcml2ZXIgYmVmb3JlIChpLmUuIC0gaXRcbjE5Njc6XHRcdCAqIHdhcyB1c2luZyB0aGUgZ2VuZXJpYyBkcml2ZXIpLCB3ZSB1bmJpbmQgdGhlIGRldmljZVxuMTk2ODpcdFx0ICogZnJvbSB0aGUgZ2VuZXJpYyBkcml2ZXIgc28gdGhhdCB0aGVyZSYjMzk7cyBhIGNoYW5jZSBhXG4xOTY5Olx0XHQgKiByZWFsIGRyaXZlciBjb3VsZCBiZSBsb2FkZWRcbjE5NzA6XHRcdCAqL1xuMTk3MTpcdFx0aWYgKHBoeWRldi1cdTAwM2Vpc19nZW5waHlfZHJpdmVuKSB7XG4xOTcyOlx0XHRcdGRldmljZV9yZWxlYXNlX2RyaXZlcihcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYpO1xuMTk3MzpcdFx0XHRwaHlkZXYtXHUwMDNlaXNfZ2VucGh5X2RyaXZlbiA9IDA7XG4xOTc0Olx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTM6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDYyOAoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyBQSFkgRGV0YWNobWVudCBhbmQgRGV2aWNlIFVzYWdlKioKCk9rYXksIHNvIEkgbmVlZCB0byBkaWcgaW50byB0aGUgYHBoeV9kZXRhY2hgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiBpdHMgY2FsbHMuIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucyBmb3IgUEhZIGRldmljZSBtYW5hZ2VtZW50IGFuZCBob3cgdGhlc2UgcGh5c2ljYWwgbGF5ZXIgZGV2aWNlcyBhcmUgYWN0dWFsbHkgKnVzZWQqIHdpdGhpbiB0aGUgc3lzdGVtLgoKSSB3YW50IHRvIHNlZSB0aGUgdmFyaW91cyBzY2VuYXJpb3Mgd2hlcmUgYSBQSFkgaXMgZGV0YWNoZWQg4oCTIGlzIGl0IGp1c3QgZHVyaW5nIGRyaXZlciB1bmxvYWQsIG9yIGFyZSB0aGVyZSBzaXR1YXRpb25zIHdoZXJlIGEgUEhZIGlzIGR5bmFtaWNhbGx5IGRpc2Nvbm5lY3RlZCwgcGVyaGFwcyBkdWUgdG8gaG90LXBsdWcgZXZlbnRzLCBwb3dlciBtYW5hZ2VtZW50LCBvciBzb21lIG90aGVyIGhhcmR3YXJlIGVycm9yIGNvbmRpdGlvbj8gVW5kZXJzdGFuZGluZyB0aGUgZGV0YWNoIHNjZW5hcmlvcyB3aWxsIGltbWVkaWF0ZWx5IHNob3cgaG93IHJlc2lsaWVudCB0aGUgUEhZIGRyaXZlciBpcy4KClRoZSByZWFsIG1lYXQgd2lsbCBiZSBmaWd1cmluZyBvdXQgKmhvdyogdGhlIFBIWXMgYXJlIGVtcGxveWVkIGJlZm9yZSBkZXRhY2htZW50LiBJIG5lZWQgdG8gdHJhY2UgdGhlIHJlc291cmNlIGFsbG9jYXRpb24sIGRhdGEgdHJhbnNmZXIgaW5pdGlhdGlvbiwgYW5kIHNpZ25hbCBwcm9jZXNzaW5nIHdvcmtmbG93cyB0aGF0IGhhcHBlbiBhcm91bmQgdGhlIHVzZSBvZiB0aGUgUEhZLiBJJiMzOTtsbCBmb2N1cyBvbiBob3cgdGhlIFBIWSBhYnN0cmFjdGlvbiBsYXllciBpbnRlcmFjdHMgd2l0aCB0aGUgY29yZSBuZXR3b3JraW5nIHN0YWNrIG9yIHdoYXRldmVyIG90aGVyIHN1YnN5c3RlbXMgYXJlIHVzaW5nIGl0LiBBbnkgaW5zaWdodHMgaW50byBob3cgdGhlIFBIWSByZXNvdXJjZXMgYXJlIHJlbGVhc2VkIGR1cmluZyB0aGUgZGV0YWNoIHByb2Nlc3MgYXJlIGdvaW5nIHRvIGJlIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmRpbmcgZHJpdmVyIGJlaGF2aW9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDEzOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeV9kZXRhY2gmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYz04MDM9c3RhdGljIHZvaWQgeGdiZV9waHlfZnJlZV9waHlfZGV2aWNlKHN0cnVjdCB4Z2JlX3Bydl9kYXRhICpwZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTgwNy1cdGlmIChwaHlfZGF0YS1cdTAwM2VwaHlkZXYpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmM6ODA4Olx0XHRwaHlfZGV0YWNoKHBoeV9kYXRhLVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTgwOS1cdFx0cGh5X2RldmljZV9yZW1vdmUocGh5X2RhdGEtXHUwMDNlcGh5ZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21nZW5ldC5jPTE3MDk9c3RhdGljIGludCBiY21nZW5ldF9wb3dlcl9kb3duKHN0cnVjdCBiY21nZW5ldF9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbWdlbmV0LmMtMTcxNi1cdGNhc2UgR0VORVRfUE9XRVJfQ0FCTEVfU0VOU0U6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21nZW5ldC5jOjE3MTc6XHRcdHBoeV9kZXRhY2gocHJpdi1cdTAwM2VkZXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbWdlbmV0LmMtMTcxOC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM9Mjk5PUVYUE9SVF9TWU1CT0wob2ZfcGh5X2ZpbmRfZGV2aWNlKTtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0zMTAtICogc3RydWN0IGRldmljZSByZWZjb3VudCBpbmNyZW1lbnRlZCBieSBvbmUsIG9yIE5VTEwgb24gZmFpbHVyZS4gVGhlXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzozMTE6ICogcmVmY291bnQgbXVzdCBiZSBkcm9wcGVkIGJ5IGNhbGxpbmcgcGh5X2Rpc2Nvbm5lY3QoKSBvciBwaHlfZGV0YWNoKCkuXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0zMTItICovXG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM9MzMzPUVYUE9SVF9TWU1CT0wob2ZfcGh5X2Nvbm5lY3QpO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTM0My0gKiBzdHJ1Y3QgZGV2aWNlIHJlZmNvdW50IGluY3JlbWVudGVkIGJ5IG9uZSwgb3IgTlVMTCBvbiBmYWlsdXJlLiBUaGVcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjM0NDogKiByZWZjb3VudCBtdXN0IGJlIGRyb3BwZWQgYnkgY2FsbGluZyBwaHlfZGlzY29ubmVjdCgpIG9yIHBoeV9kZXRhY2goKS5cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTM0NS0gKi9cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LmM9MTMxOD1FWFBPUlRfU1lNQk9MX0dQTChwaHlfc3RhcnRfbWFjaGluZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTEzMjUtICogICBzdGF0ZSB0byBVUCAodW5sZXNzIGl0IHdhc24mIzM5O3QgdXAgeWV0KS4gVGhpcyBmdW5jdGlvbiBtdXN0IGJlXG5kcml2ZXJzL25ldC9waHkvcGh5LmM6MTMyNjogKiAgIGNhbGxlZCBCRUZPUkUgcGh5X2RldGFjaC5cbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0xMzI3LSAqL1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MzAxPXN0YXRpYyBib29sIG1kaW9fYnVzX3BoeV9tYXlfc3VzcGVuZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzE3LVx0ICogc3VzcGVuZGVkIGFzIHBhcnQgb2YgYSBwcmlvciBjYWxsIHRvIHBoeV9kaXNjb25uZWN0KCkgLVx1MDAzZVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzozMTg6XHQgKiBwaHlfZGV0YWNoKCkgLVx1MDAzZSBwaHlfc3VzcGVuZCgpIGJlY2F1c2UgdGhlIHBhcmVudCBuZXRkZXYgbWlnaHQgYmUgdGhlXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTMxOS1cdCAqIE1ESU8gYnVzIGRyaXZlciBhbmQgY2xvY2sgZ2F0ZWQgYXQgdGhpcyBwb2ludC5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTEyOTM9dm9pZCBwaHlfZGlzY29ubmVjdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTMwMi1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTMwMzpcdHBoeV9kZXRhY2gocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTMwNC19XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xNzUyPWludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTgyNC1cdCAqIHJlYWR5LiBPbmNlIHdlIGRvIHRoYXQgd2Ugc3RpbGwgbmVlZCB0byBrZWVwIHRyYWNrIG9mIHdoZXRoZXJcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTgyNTpcdCAqIGxpbmtzIHdlcmUgc3VjY2Vzc2Z1bGx5IHNldCB1cCBvciBub3QgZm9yIHBoeV9kZXRhY2goKSB0b1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xODI2LVx0ICogcmVtb3ZlIHRoZW0gYWNjb3JkaW5nbHkuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xODkyLWVycm9yOlxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxODkzOlx0LyogcGh5X2RldGFjaCgpIGRvZXMgYWxsIG9mIHRoZSBjbGVhbnVwIGJlbG93ICovXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjE4OTQ6XHRwaHlfZGV0YWNoKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE4OTUtXHRyZXR1cm4gZXJyO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTkwNz1FWFBPUlRfU1lNQk9MKHBoeV9hdHRhY2hfZGlyZWN0KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE5MDktLyoqXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjE5MTA6ICogcGh5X2RldGFjaCAtIGRldGFjaCBhIFBIWSBkZXZpY2UgZnJvbSBpdHMgbmV0d29yayBkZXZpY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTkxMS0gKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3Rcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE5MTUtICovXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjE5MTY6dm9pZCBwaHlfZGV0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE5MTcte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTk5MC19XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjE5OTE6RVhQT1JUX1NZTUJPTChwaHlfZGV0YWNoKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTk5Mi1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2xpbmtfdG9wb2xvZ3kuYz0zMT1pbnQgcGh5X2xpbmtfdG9wb19hZGRfcGh5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9saW5rX3RvcG9sb2d5LmMtNDItXHQgKiAgLSBldGhubF9yZXFfZ2V0X3BoeWRldigpXG5kcml2ZXJzL25ldC9waHkvcGh5X2xpbmtfdG9wb2xvZ3kuYzo0MzpcdCAqICAtIHBoeV9kZXRhY2goKVxuZHJpdmVycy9uZXQvcGh5L3BoeV9saW5rX3RvcG9sb2d5LmMtNDQtXHQgKi9cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyMzU9aW50IHBoeWxpbmtfY29ubmVjdF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI1MC1cdGlmIChyZXQpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyNTE6XHRcdHBoeV9kZXRhY2gocGh5KTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI1Mi1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyODc9aW50IHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0KHN0cnVjdCBwaHlsaW5rICpwbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzMjgtXHRpZiAocmV0KVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzI5Olx0XHRwaHlfZGV0YWNoKHBoeV9kZXYpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzMwLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzcwMD1zdGF0aWMgaW50IHBoeWxpbmtfc2ZwX2NvbmZpZ19waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzczOS1cdGlmIChyZXQgXHUwMDNjIDApIHtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mzc0MDpcdFx0cGh5X2RldGFjaChwaHkpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNzQxLVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9zZnAuYz0yMDkwPXN0YXRpYyB2b2lkIHNmcF9zbV9tb2RfbmV4dChzdHJ1Y3Qgc2ZwICpzZnAsIHVuc2lnbmVkIGludCBzdGF0ZSxcbi0tXG5kcml2ZXJzL25ldC9waHkvc2ZwLmMtMjA5Ni1cbmRyaXZlcnMvbmV0L3BoeS9zZnAuYzoyMDk3OnN0YXRpYyB2b2lkIHNmcF9zbV9waHlfZGV0YWNoKHN0cnVjdCBzZnAgKnNmcClcbmRyaXZlcnMvbmV0L3BoeS9zZnAuYy0yMDk4LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvc2ZwLmM9Mjg1ND1zdGF0aWMgdm9pZCBzZnBfc21fbWFpbihzdHJ1Y3Qgc2ZwICpzZnAsIHVuc2lnbmVkIGludCBldmVudClcbi0tXG5kcml2ZXJzL25ldC9waHkvc2ZwLmMtMjg2OC1cdFx0aWYgKHNmcC1cdTAwM2Vtb2RfcGh5KVxuZHJpdmVycy9uZXQvcGh5L3NmcC5jOjI4Njk6XHRcdFx0c2ZwX3NtX3BoeV9kZXRhY2goc2ZwKTtcbmRyaXZlcnMvbmV0L3BoeS9zZnAuYy0yODcwLVx0XHRpZiAoc2ZwLVx1MDAzZWkyY19taWkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYz00Nzc3PXN0YXRpYyB2b2lkIGJyY21zX2JfZGV0YWNoKHN0cnVjdCBicmNtc19jX2luZm8gKndsYylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jLTQ3ODgtXHRcdFx0LyogRGV0YWNoIHRoaXMgYmFuZCYjMzk7cyBwaHkgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmM6NDc4OTpcdFx0XHR3bGNfcGh5X2RldGFjaChiYW5kLVx1MDAzZXBpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmMtNDc5MC1cdFx0XHRiYW5kLVx1MDAzZXBpID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvcGh5L3BoeV9jbW4uYz0zOTc9d2xjX3BoeV9hdHRhY2goc3RydWN0IHNoYXJlZF9waHkgKnNoLCBzdHJ1Y3QgYmNtYV9kZXZpY2UgKmQxMWNvcmUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3BoeS9waHlfY21uLmMtNTUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3BoeS9waHlfY21uLmM6NTU0OnZvaWQgd2xjX3BoeV9kZXRhY2goc3RydWN0IGJyY21zX3BoeV9wdWIgKnBpaClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9waHkvcGh5X2Ntbi5jLTU1NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3BoeS9waHlfaGFsLmg9MTY3PXN0cnVjdCBicmNtc19waHlfcHViICp3bGNfcGh5X2F0dGFjaChzdHJ1Y3Qgc2hhcmVkX3BoeSAqc2gsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3BoeS9waHlfaGFsLmgtMTY5LVx0XHRcdFx0ICAgICBzdHJ1Y3Qgd2lwaHkgKndpcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9waHkvcGh5X2hhbC5oOjE3MDp2b2lkIHdsY19waHlfZGV0YWNoKHN0cnVjdCBicmNtc19waHlfcHViICpwcGkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3BoeS9waHlfaGFsLmgtMTcxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9waHkvcGh5X2ludC5oPTk0Mj1ib29sIHdsY19waHlfYXR0YWNoX2xjbnBoeShzdHJ1Y3QgYnJjbXNfcGh5ICpwaSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvcGh5L3BoeV9pbnQuaC05NDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvcGh5L3BoeV9pbnQuaDo5NDQ6dm9pZCB3bGNfcGh5X2RldGFjaF9sY25waHkoc3RydWN0IGJyY21zX3BoeSAqcGkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3BoeS9waHlfaW50LmgtOTQ1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9waHkvcGh5X2xjbi5jPTQ5MTQ9dm9pZCB3bGNfcGh5X2NoYW5zcGVjX3NldF9sY25waHkoc3RydWN0IGJyY21zX3BoeSAqcGksIHUxNiBjaGFuc3BlYylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvcGh5L3BoeV9sY24uYy00OTUyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3BoeS9waHlfbGNuLmM6NDk1Mzp2b2lkIHdsY19waHlfZGV0YWNoX2xjbnBoeShzdHJ1Y3QgYnJjbXNfcGh5ICpwaSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9waHkvcGh5X2xjbi5jLTQ5NTQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9waHkvcGh5X2xjbi5jPTQ5NTg9Ym9vbCB3bGNfcGh5X2F0dGFjaF9sY25waHkoc3RydWN0IGJyY21zX3BoeSAqcGkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3BoeS9waHlfbGNuLmMtNDk4My1cdHBpLVx1MDAzZXBpX2ZwdHIucmFkaW9sb2Z0Z2V0ID0gd2xjX2xjbnBoeV9nZXRfcmFkaW9fbG9mdDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9waHkvcGh5X2xjbi5jOjQ5ODQ6XHRwaS1cdTAwM2VwaV9mcHRyLmRldGFjaCA9IHdsY19waHlfZGV0YWNoX2xjbnBoeTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9waHkvcGh5X2xjbi5jLTQ5ODUtXG4tLVxuaW5jbHVkZS9saW51eC9waHkuaD0yMTc4PXZvaWQgcGh5X2Rpc2Nvbm5lY3Qoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG5pbmNsdWRlL2xpbnV4L3BoeS5oOjIxNzk6dm9pZCBwaHlfZGV0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuaW5jbHVkZS9saW51eC9waHkuaC0yMTgwLXZvaWQgcGh5X3N0YXJ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDEzOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgyMzMKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiA2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIFBIWSBEZXZpY2UgRGV0YWNobWVudCBpbiB0aGUgS2VybmVsKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBpbnRvIHRoZSBuZXR3b3JrIFBIWSBkZXZpY2UgY29kZSBhZ2Fpbi4gTGV0JiMzOTtzIHNlZS4uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGV0YWNobWVudCBwcm9jZXNzIGJldHRlci4gU3BlY2lmaWNhbGx5LCB3aGVyZSBhbmQgaG93IGBwaHlfZGV0YWNoYCBpcyB1c2VkLiBJIGFscmVhZHkga25vdyB0aGF0IGZ1bmN0aW9uIGlzIHNpdHRpbmcgaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLiBCdXQgd2hhdCYjMzk7cyB0aGUgd2hvbGUgcGljdHVyZT8KClNvLCBmaXJzdCB0aGluZ3MgZmlyc3QsIEkmIzM5O20gZ29pbmcgdG8gdHJhY2sgZG93biBldmVyeSBzaW5nbGUgY2FsbCB0byBib3RoIGBwaHlfZGlzY29ubmVjdGAgYW5kIGBwaHlfZGV0YWNoYCB0aHJvdWdob3V0IHRoZSBrZXJuZWwgc291cmNlLiBUaGF0JiMzOTtzIHRoZSBrZXkuIEtub3dpbmcgdGhlIGNhbGwgc2l0ZXMgd2lsbCBpbW1lZGlhdGVseSBnaXZlIG1lIHRoZSBjb250ZXh0LCBzaG93IG1lIHRoZSB2YXJpb3VzIHVzZSBjYXNlcywgYW5kIGdpdmUgbWUgYSBmZWVsIGZvciBob3cgdGhlc2UgZnVuY3Rpb25zIGZpdCBpbnRvIHRoZSBvdmVyYWxsIFBIWSBtYW5hZ2VtZW50IHNjaGVtZS4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgdHJpZ2dlcnMgdGhlc2UgZXZlbnRzIGFuZCB3aGF0IGVsc2UgaXMgaGFwcGVuaW5nIGFyb3VuZCB0aGVzZSBjYWxscy4gVGhhdCYjMzk7cyB0aGUgY3J1Y2lhbCBkYXRhLiBLbm93aW5nIHdoaWNoIGZ1bmN0aW9ucyBjYWxsIHRoZXNlIGFuZCBpbiB3aGF0IGNpcmN1bXN0YW5jZXMgd2lsbCBnaXZlIG1lIGEgaHVnZSBoZWFkIHN0YXJ0IGluIHVuZGVyc3RhbmRpbmcgdGhlIGJpZ2dlciBwaWN0dXJlLiBGcm9tIHRoZXJlLCBJIGNhbiBzdGFydCB0byB1bmRlcnN0YW5kIHRoZSBjb21wbGV0ZSBzZXF1ZW5jZSBvZiBldmVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTM6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5X2Rpc2Nvbm5lY3RcXCgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDc1MSBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdD03ND10aGlzIGRvY3VtZW50YXRpb24uXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdC0xMjktICAgICAgLSBwaHlsaW5rX2V0aHRvb2xfc2V0X3dvbChwcml2LVx1MDAzZXBoeWxpbmssIHdvbClcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3Q6MTMwOiAgICAqIC0gcGh5X2Rpc2Nvbm5lY3QocGh5ZGV2KVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdC0xMzEtICAgICAgLSBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5KHByaXYtXHUwMDNlcGh5bGluaylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmM9Njg4PXN0YXRpYyBib29sIGljbF90Y19waHlfY29ubmVjdChzdHJ1Y3QgaW50ZWxfdGNfcG9ydCAqdGMsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jLTcyOC0gKi9cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYzo3Mjk6c3RhdGljIHZvaWQgaWNsX3RjX3BoeV9kaXNjb25uZWN0KHN0cnVjdCBpbnRlbF90Y19wb3J0ICp0YylcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYy03MzAte1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYz05MDg9c3RhdGljIGJvb2wgYWRscF90Y19waHlfY29ubmVjdChzdHJ1Y3QgaW50ZWxfdGNfcG9ydCAqdGMsIGludCByZXF1aXJlZF9sYW5lcylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMtOTU5LVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jOjk2MDpzdGF0aWMgdm9pZCBhZGxwX3RjX3BoeV9kaXNjb25uZWN0KHN0cnVjdCBpbnRlbF90Y19wb3J0ICp0YylcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYy05NjEte1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYz0xMTk2PXN0YXRpYyBib29sIHhlbHBkcF90Y19waHlfY29ubmVjdChzdHJ1Y3QgaW50ZWxfdGNfcG9ydCAqdGMsIGludCByZXF1aXJlZF9sYW5lcylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMtMTIyNy1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYzoxMjI4OnN0YXRpYyB2b2lkIHhlbHBkcF90Y19waHlfZGlzY29ubmVjdChzdHJ1Y3QgaW50ZWxfdGNfcG9ydCAqdGMpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMtMTIyOS17XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jPTE0NzQ9c3RhdGljIHZvaWQgdGNfcGh5X2Nvbm5lY3Qoc3RydWN0IGludGVsX3RjX3BvcnQgKnRjLCBpbnQgcmVxdWlyZWRfbGFuZXMpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jLTE0OTItXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmM6MTQ5MzpzdGF0aWMgdm9pZCB0Y19waHlfZGlzY29ubmVjdChzdHJ1Y3QgaW50ZWxfdGNfcG9ydCAqdGMpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMtMTQ5NC17XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jPTE1MDg9c3RhdGljIHZvaWQgaW50ZWxfdGNfcG9ydF9yZXNldF9tb2RlKHN0cnVjdCBpbnRlbF90Y19wb3J0ICp0Yyxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMtMTUyNC1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYzoxNTI1Olx0dGNfcGh5X2Rpc2Nvbm5lY3QodGMpO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jLTE1MjYtXHRpZiAoIWZvcmNlX2Rpc2Nvbm5lY3QpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jPTE2NjQ9dm9pZCBpbnRlbF90Y19wb3J0X3Nhbml0aXplX21vZGUoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jLTE2ODUtXHRcdFx0XHQgICAgdGNfcG9ydF9tb2RlX25hbWUodGMtXHUwMDNlaW5pdF9tb2RlKSk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmM6MTY4NjpcdFx0dGNfcGh5X2Rpc2Nvbm5lY3QodGMpO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jLTE2ODctXHRcdF9faW50ZWxfdGNfcG9ydF9wdXRfbGluayh0Yyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmM9NDkxPXN0YXRpYyBpbnQgYXhfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jLTUyNy0gZmFpbGVkX2F4X2VpX29wZW46XG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYzo1Mjg6XHRwaHlfZGlzY29ubmVjdChkZXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jLTUyOS0gZmFpbGVkX21paV9wcm9iZTpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYz01NDA9c3RhdGljIGludCBheF9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jLTU1Mi1cdGF4X3BoeV9zd2l0Y2goZGV2LCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jOjU1MzpcdHBoeV9kaXNjb25uZWN0KGRldi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmMtNTU0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYz0xNDY1PXN0YXRpYyBpbnQgb3dsX2VtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmMtMTU3Mi1cdFx0bmV0aWZfbmFwaV9kZWwoXHUwMDI2cHJpdi1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYzoxNTczOlx0XHRwaHlfZGlzY29ubmVjdChuZXRkZXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYy0xNTc0LVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYz0xNTgwPXN0YXRpYyB2b2lkIG93bF9lbWFjX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYy0xNTg0LVx0bmV0aWZfbmFwaV9kZWwoXHUwMDI2cHJpdi1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYzoxNTg1Olx0cGh5X2Rpc2Nvbm5lY3QocHJpdi1cdTAwM2VuZXRkZXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYy0xNTg2LVx0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZwcml2LVx1MDAzZW1hY19yZXNldF90YXNrKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYz0xMjI4PXN0YXRpYyB2b2lkIGFkaW4xMTEwX2Rpc2Nvbm5lY3RfcGh5KHZvaWQgKmRhdGEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYy0xMjI5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jOjEyMzA6XHRwaHlfZGlzY29ubmVjdChkYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jLTEyMzEtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jPTY0NT1zdGF0aWMgdm9pZCBhZGluMTE0MF9waHlfcmVtb3ZlKHZvaWQgKmRhdGEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy02NDYte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmM6NjQ3Olx0cGh5X2Rpc2Nvbm5lY3QoZGF0YSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy02NDgtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FnZXJlL2V0MTMxeC5jPTMzMjY9c3RhdGljIHZvaWQgZXQxMzF4X3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmMtMzMzMi1cdG5ldGlmX25hcGlfZGVsKFx1MDAyNmFkYXB0ZXItXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYzozMzMzOlx0cGh5X2Rpc2Nvbm5lY3QobmV0ZGV2LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYy0zMzM0LVx0bWRpb2J1c191bnJlZ2lzdGVyKGFkYXB0ZXItXHUwMDNlbWlpX2J1cyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmM9MzkzMT1zdGF0aWMgaW50IGV0MTMxeF9wY2lfc2V0dXAoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmMtNDA2Ni1lcnJfcGh5X2Rpc2Nvbm5lY3Q6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYzo0MDY3Olx0cGh5X2Rpc2Nvbm5lY3QobmV0ZGV2LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYy00MDY4LWVycl9tZGlvX3VucmVnaXN0ZXI6XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxsd2lubmVyL3N1bjRpLWVtYWMuYz0xOTM9c3RhdGljIHZvaWQgZW1hY19tZGlvX3JlbW92ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxsd2lubmVyL3N1bjRpLWVtYWMuYy0xOTQte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxsd2lubmVyL3N1bjRpLWVtYWMuYzoxOTU6XHRwaHlfZGlzY29ubmVjdChkZXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsbHdpbm5lci9zdW40aS1lbWFjLmMtMTk2LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jPTg0PXZvaWQgeGdlX21kaW9fcmVtb3ZlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmMtODktXHRpZiAobmRldi1cdTAwM2VwaHlkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jOjkwOlx0XHRwaHlfZGlzY29ubmVjdChuZGV2LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jLTkxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM9OTM5PWludCB4Z2VuZV9lbmV0X21kaW9fY29uZmlnKHN0cnVjdCB4Z2VuZV9lbmV0X3BkYXRhICpwZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk3Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTczOnZvaWQgeGdlbmVfZW5ldF9waHlfZGlzY29ubmVjdChzdHJ1Y3QgeGdlbmVfZW5ldF9wZGF0YSAqcGRhdGEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk3NC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05NzctXHRpZiAobmRldi1cdTAwM2VwaHlkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjk3ODpcdFx0cGh5X2Rpc2Nvbm5lY3QobmRldi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05NzktfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM9OTgxPXZvaWQgeGdlbmVfZW5ldF9tZGlvX3JlbW92ZShzdHJ1Y3QgeGdlbmVfZW5ldF9wZGF0YSAqcGRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05ODUtXHRpZiAobmRldi1cdTAwM2VwaHlkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjk4NjpcdFx0cGh5X2Rpc2Nvbm5lY3QobmRldi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05ODctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuaD00Mjc9aW50IHhnZW5lX2VuZXRfcGh5X2Nvbm5lY3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuaDo0Mjg6dm9pZCB4Z2VuZV9lbmV0X3BoeV9kaXNjb25uZWN0KHN0cnVjdCB4Z2VuZV9lbmV0X3BkYXRhICpwZGF0YSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5oLTQyOS11MzIgeGdlbmVfZW5ldF9yZF9tYWMoc3RydWN0IHhnZW5lX2VuZXRfcGRhdGEgKnBkYXRhLCB1MzIgcmRfYWRkcik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfbWFpbi5jPTIwMTU9c3RhdGljIGludCB4Z2VuZV9lbmV0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfbWFpbi5jLTIxMDgtXHRpZiAocGRhdGEtXHUwMDNlbWRpb19kcml2ZXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9tYWluLmM6MjEwOTpcdFx0eGdlbmVfZW5ldF9waHlfZGlzY29ubmVjdChwZGF0YSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9tYWluLmMtMjExMC1cdGVsc2UgaWYgKHBoeV9pbnRlcmZhY2VfbW9kZV9pc19yZ21paShwZGF0YS1cdTAwM2VwaHlfbW9kZSkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfbWFpbi5jPTIxMTc9c3RhdGljIHZvaWQgeGdlbmVfZW5ldF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9tYWluLmMtMjEzMC1cdGlmIChwZGF0YS1cdTAwM2VtZGlvX2RyaXZlcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X21haW4uYzoyMTMxOlx0XHR4Z2VuZV9lbmV0X3BoeV9kaXNjb25uZWN0KHBkYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X21haW4uYy0yMTMyLVx0ZWxzZSBpZiAocGh5X2ludGVyZmFjZV9tb2RlX2lzX3JnbWlpKHBkYXRhLVx1MDAzZXBoeV9tb2RlKSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tYWluLmM9ODU4PWludCBhcmNfZW1hY19wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgaW50IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tYWluLmMtMTAxMy1cdG5ldGlmX25hcGlfZGVsKFx1MDAyNnByaXYtXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tYWluLmM6MTAxNDpcdHBoeV9kaXNjb25uZWN0KHBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tYWluLmMtMTAxNS1vdXRfbWRpbzpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tYWluLmM9MTAyNz12b2lkIGFyY19lbWFjX3JlbW92ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tYWluLmMtMTAzMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21haW4uYzoxMDMxOlx0cGh5X2Rpc2Nvbm5lY3QobmRldi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWFpbi5jLTEwMzItXHRhcmNfbWRpb19yZW1vdmUocHJpdik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmM9OTY2PXN0YXRpYyBpbnQgYXg4ODc5NmNfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYy0xMDk5LWVycl9waHlfZGlzOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmM6MTEwMDpcdHBoeV9kaXNjb25uZWN0KGF4X2xvY2FsLVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYy0xMTAxLWVycjpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYz0xMTA1PXN0YXRpYyB2b2lkIGF4ODg3OTZjX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jLTExMDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYzoxMTEwOlx0cGh5X2Rpc2Nvbm5lY3QobmRldi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmMtMTExMS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9hc3AyL2JjbWFzcF9pbnRmLmM9OTY5PXN0YXRpYyBpbnQgYmNtYXNwX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9hc3AyL2JjbWFzcF9pbnRmLmMtOTgxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfaW50Zi5jOjk4MjpcdHBoeV9kaXNjb25uZWN0KGRldi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfaW50Zi5jLTk4My1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYz0yMzEzPXN0YXRpYyB2b2lkIGI0NF91bnJlZ2lzdGVyX3BoeV9vbmUoc3RydWN0IGI0NCAqYnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMjMyMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jOjIzMjE6XHRwaHlfZGlzY29ubmVjdChwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMjMyMi1cdGlmIChwaHlfaXNfcHNldWRvX2ZpeGVkX2xpbmsocGh5ZGV2KSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYz04OTA9c3RhdGljIGludCBiY21fZW5ldF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmMtMTEzMy1cdGlmIChwaHlkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYzoxMTM0Olx0XHRwaHlfZGlzY29ubmVjdChwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmMtMTEzNS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYz0xMTg1PXN0YXRpYyBpbnQgYmNtX2VuZXRfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTEyMjktXHRpZiAocHJpdi1cdTAwM2VoYXNfcGh5KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmM6MTIzMDpcdFx0cGh5X2Rpc2Nvbm5lY3QoZGV2LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYy0xMjMxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYz0xOTI4PXN0YXRpYyBpbnQgYmNtX3N5c3BvcnRfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYy0yMDUyLW91dF9waHlfZGlzY29ubmVjdDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYzoyMDUzOlx0cGh5X2Rpc2Nvbm5lY3QocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYy0yMDU0LW91dF9jbGtfZGlzYWJsZTpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmM9MjA3Mz1zdGF0aWMgaW50IGJjbV9zeXNwb3J0X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmMtMjExMS1cdC8qIERpc2Nvbm5lY3QgZnJvbSBQSFkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYzoyMTEyOlx0cGh5X2Rpc2Nvbm5lY3QoZGV2LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmMtMjExMy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jPTE0ODc9aW50IGJnbWFjX2VuZXRfcHJvYmUoc3RydWN0IGJnbWFjICpiZ21hYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jLTE1NTgtZXJyX3BoeV9kaXNjb25uZWN0OlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYzoxNTU5Olx0cGh5X2Rpc2Nvbm5lY3QobmV0X2Rldi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYy0xNTYwLWVycl9kbWFfZnJlZTpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jPTE1Njg9dm9pZCBiZ21hY19lbmV0X3JlbW92ZShzdHJ1Y3QgYmdtYWMgKmJnbWFjKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmMtMTU3MC1cdHVucmVnaXN0ZXJfbmV0ZGV2KGJnbWFjLVx1MDAzZW5ldF9kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYzoxNTcxOlx0cGh5X2Rpc2Nvbm5lY3QoYmdtYWMtXHUwMDNlbmV0X2Rldi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYy0xNTcyLVx0bmV0aWZfbmFwaV9kZWwoXHUwMDI2YmdtYWMtXHUwMDNlbmFwaSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtZ2VuZXQuYz0zNDYzPXN0YXRpYyBpbnQgYmNtZ2VuZXRfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21nZW5ldC5jLTM0NzItXHQvKiBSZWFsbHkga2lsbCB0aGUgUEhZIHN0YXRlIG1hY2hpbmUgYW5kIGRpc2Nvbm5lY3QgZnJvbSBpdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtZ2VuZXQuYzozNDczOlx0cGh5X2Rpc2Nvbm5lY3QoZGV2LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21nZW5ldC5jLTM0NzQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmM9MzAxPWludCBiY21nZW5ldF9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYy0zOTUtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYzozOTY6XHRcdHBoeV9kaXNjb25uZWN0KGRldi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmMtMzk3LVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYz0yNDc1PXN0YXRpYyBpbnQgc2JtYWNfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9zYjEyNTAtbWFjLmMtMjQ4OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYzoyNDkwOlx0cGh5X2Rpc2Nvbm5lY3Qoc2MtXHUwMDNlcGh5X2Rldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9zYjEyNTAtbWFjLmMtMjQ5MS1cdHNjLVx1MDAzZXBoeV9kZXYgPSBOVUxMO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTIwODQ9c3RhdGljIGludCB0ZzNfcGh5X2luaXQoc3RydWN0IHRnMyAqdHApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMjExOC1cdGRlZmF1bHQ6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzoyMTE5Olx0XHRwaHlfZGlzY29ubmVjdChtZGlvYnVzX2dldF9waHkodHAtXHUwMDNlbWRpb19idXMsIHRwLVx1MDAzZXBoeV9hZGRyKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0yMTIwLVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYz0yMTYxPXN0YXRpYyB2b2lkIHRnM19waHlfZmluaShzdHJ1Y3QgdGczICp0cClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0yMTYzLVx0aWYgKHRwLVx1MDAzZXBoeV9mbGFncyBcdTAwMjYgVEczX1BIWUZMR19JU19DT05ORUNURUQpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jOjIxNjQ6XHRcdHBoeV9kaXNjb25uZWN0KG1kaW9idXNfZ2V0X3BoeSh0cC1cdTAwM2VtZGlvX2J1cywgdHAtXHUwMDNlcGh5X2FkZHIpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTIxNjUtXHRcdHRwLVx1MDAzZXBoeV9mbGFncyBcdTAwMjY9IH5URzNfUEhZRkxHX0lTX0NPTk5FQ1RFRDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vb2N0ZW9uL29jdGVvbl9tZ210LmM9MTI0MD1zdGF0aWMgaW50IG9jdGVvbl9tZ210X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vb2N0ZW9uL29jdGVvbl9tZ210LmMtMTI0OC1cdFx0cGh5X3N0b3AobmV0ZGV2LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vb2N0ZW9uL29jdGVvbl9tZ210LmM6MTI0OTpcdFx0cGh5X2Rpc2Nvbm5lY3QobmV0ZGV2LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vb2N0ZW9uL29jdGVvbl9tZ210LmMtMTI1MC1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci90aHVuZGVyX2JneC5jPTExMzk9c3RhdGljIHZvaWQgYmd4X2xtYWNfZGlzYWJsZShzdHJ1Y3QgYmd4ICpiZ3gsIHU4IGxtYWNpZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci90aHVuZGVyX2JneC5jLTExODQtXHQgICAgKGxtYWMtXHUwMDNlbG1hY190eXBlICE9IEJHWF9NT0RFXzEwR19LUikgXHUwMDI2XHUwMDI2IGxtYWMtXHUwMDNlcGh5ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvdGh1bmRlcl9iZ3guYzoxMTg1Olx0XHRwaHlfZGlzY29ubmVjdChsbWFjLVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci90aHVuZGVyX2JneC5jLTExODYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0zNjA9c3RhdGljIGludCBnbWFjX3NldHVwX3BoeShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMzk4LVx0XHRuZXRkZXZfZXJyKG5ldGRldiwgXCYjMzQ7VW5zdXBwb3J0ZWQgTUlJIGludGVyZmFjZVxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjM5OTpcdFx0cGh5X2Rpc2Nvbm5lY3QocGh5KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtNDAwLVx0XHRuZXRkZXYtXHUwMDNlcGh5ZGV2ID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTIzNjA9c3RhdGljIHZvaWQgZ2VtaW5pX3BvcnRfcmVtb3ZlKHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIzNjItXHRpZiAocG9ydC1cdTAwM2VuZXRkZXYpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjM2MzpcdFx0cGh5X2Rpc2Nvbm5lY3QocG9ydC1cdTAwM2VuZXRkZXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjM2NC1cdFx0dW5yZWdpc3Rlcl9uZXRkZXYocG9ydC1cdTAwM2VuZXRkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmM9MTE2ND1zdGF0aWMgaW50IGRtOTA1MV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmMtMTIxNy1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmM6MTIxODpcdFx0cGh5X2Rpc2Nvbm5lY3QoZGItXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmMtMTIxOS1cdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByZXQsIFwmIzM0O2RldmljZSByZWdpc3RlciBmYWlsZWRcJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmM9MTIyNT1zdGF0aWMgdm9pZCBkbTkwNTFfZHJ2X3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmMtMTIzMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmM6MTIzMTpcdHBoeV9kaXNjb25uZWN0KGRiLVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jLTEyMzItfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYz0yNzI9c3RhdGljIHZvaWQgdHNuZXBfcGh5X2Nsb3NlKHN0cnVjdCB0c25lcF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yNzQtXHRwaHlfc3RvcChhZGFwdGVyLVx1MDAzZW5ldGRldi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jOjI3NTpcdHBoeV9kaXNjb25uZWN0KGFkYXB0ZXItXHUwMDNlbmV0ZGV2LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMjc2LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jPTEyNTc9c3RhdGljIHZvaWQgZXRob2NfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZXRob2MuYy0xMjYzLVx0XHRuZXRpZl9uYXBpX2RlbChcdTAwMjZwcml2LVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZXRob2MuYzoxMjY0Olx0XHRwaHlfZGlzY29ubmVjdChuZXRkZXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmMtMTI2NS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jPTE3MzQ9c3RhdGljIGludCBmdGdtYWMxMDBfc2V0dXBfbWRpbyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTc3OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM6MTc4MDpzdGF0aWMgdm9pZCBmdGdtYWMxMDBfcGh5X2Rpc2Nvbm5lY3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTc4MS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xNzg3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYzoxNzg4Olx0cGh5X2Rpc2Nvbm5lY3QocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTc4OS1cdGlmIChvZl9waHlfaXNfZml4ZWRfbGluayhwcml2LVx1MDAzZWRldi1cdTAwM2VvZl9ub2RlKSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jPTE5NDI9c3RhdGljIGludCBmdGdtYWMxMDBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTIwOTUtZXJyOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYzoyMDk2Olx0ZnRnbWFjMTAwX3BoeV9kaXNjb25uZWN0KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTIwOTctXHRpZiAocHJpdi1cdTAwM2VuZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM9MjEwMj1zdGF0aWMgdm9pZCBmdGdtYWMxMDBfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0yMTE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYzoyMTE5Olx0ZnRnbWFjMTAwX3BoeV9kaXNjb25uZWN0KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTIxMjAtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jPTQyMjg9ZmVjX2VuZXRfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNDI0MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjQyNDE6XHRwaHlfZGlzY29ubmVjdChwaHlfZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTQyNDItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4LmM9MjE2PXN0YXRpYyBpbnQgbXBjNTJ4eF9mZWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eC5jLTI3NC1cdFx0cGh5X3N0b3AocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eC5jOjI3NTpcdFx0cGh5X2Rpc2Nvbm5lY3QocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eC5jLTI3Ni1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHguYz0yODE9c3RhdGljIGludCBtcGM1Mnh4X2ZlY19jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eC5jLTI5OC1cdFx0cGh5X3N0b3AocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eC5jOjI5OTpcdFx0cGh5X2Rpc2Nvbm5lY3QocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eC5jLTMwMC1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jPTI4ODQ9c3RhdGljIGludCBnZmFyX2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYy0yODkxLVx0LyogRGlzY29ubmVjdCBmcm9tIHRoZSBQSFkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmM6Mjg5MjpcdHBoeV9kaXNjb25uZWN0KGRldi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYy0yODkzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmM9MTYyPXN0YXRpYyB2b2lkIGhiZ19waHlfYWRqdXN0X2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfbWRpby5jLTE5NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmM6MTk2OnN0YXRpYyB2b2lkIGhiZ19waHlfZGlzY29ubmVjdCh2b2lkICpkYXRhKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYy0xOTcte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYzoxOTg6XHRwaHlfZGlzY29ubmVjdCgoc3RydWN0IHBoeV9kZXZpY2UgKilkYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmMtMTk5LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmM9MTAyOD1zdGF0aWMgdm9pZCBoaXAwNF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmMtMTAzNC1cdGlmIChwcml2LVx1MDAzZXBoeSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXAwNF9ldGguYzoxMDM1Olx0XHRwaHlfZGlzY29ubmVjdChwcml2LVx1MDAzZXBoeSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmMtMTAzNi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlzaV9mZW1hYy5jPTc2OD1zdGF0aWMgaW50IGhpc2lfZmVtYWNfZHJ2X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpc2lfZmVtYWMuYy04ODYtXHRuZXRpZl9uYXBpX2RlbChcdTAwMjZwcml2LVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpc2lfZmVtYWMuYzo4ODc6XHRwaHlfZGlzY29ubmVjdChwaHkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpc2lfZmVtYWMuYy04ODgtb3V0X2Rpc2FibGVfY2xrOlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXNpX2ZlbWFjLmM9ODk2PXN0YXRpYyB2b2lkIGhpc2lfZmVtYWNfZHJ2X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXNpX2ZlbWFjLmMtOTAzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpc2lfZmVtYWMuYzo5MDQ6XHRwaHlfZGlzY29ubmVjdChuZGV2LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlzaV9mZW1hYy5jLTkwNS1cdGNsa19kaXNhYmxlX3VucHJlcGFyZShwcml2LVx1MDAzZWNsayk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpeDVoZDJfZ21hYy5jPTg2Nz1zdGF0aWMgaW50IGhpeDVoZDJfbmV0X2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpeDVoZDJfZ21hYy5jLTg3OC1cdFx0cGh5X3N0b3AoZGV2LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGl4NWhkMl9nbWFjLmM6ODc5Olx0XHRwaHlfZGlzY29ubmVjdChkZXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYy04ODAtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZW5ldC5jPTIzOTY9c3RhdGljIHZvaWQgaG5zX25pY19kZXZfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZW5ldC5jLTI0MDgtXHRpZiAobmRldi1cdTAwM2VwaHlkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19lbmV0LmM6MjQwOTpcdFx0cGh5X2Rpc2Nvbm5lY3QobmRldi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZW5ldC5jLTI0MTAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21kaW8uYz0yNDI9dm9pZCBoY2xnZV9tYWNfZGlzY29ubmVjdF9waHkoc3RydWN0IGhuYWUzX2hhbmRsZSAqaGFuZGxlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9tZGlvLmMtMjUwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21kaW8uYzoyNTE6XHRwaHlfZGlzY29ubmVjdChwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21kaW8uYy0yNTItfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xhbnRpcV9ldG9wLmM9NDIzPWx0cV9ldG9wX21kaW9fY2xlYW51cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xhbnRpcV9ldG9wLmMtNDI2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbGFudGlxX2V0b3AuYzo0Mjc6XHRwaHlfZGlzY29ubmVjdChkZXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xhbnRpcV9ldG9wLmMtNDI4LVx0bWRpb2J1c191bnJlZ2lzdGVyKHByaXYtXHUwMDNlbWlpX2J1cyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdjY0M3h4X2V0aC5jPTMyNzI9c3RhdGljIHZvaWQgbXY2NDN4eF9ldGhfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdjY0M3h4X2V0aC5jLTMyNzgtXHRpZiAoZGV2LVx1MDAzZXBoeWRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXY2NDN4eF9ldGguYzozMjc5Olx0XHRwaHlfZGlzY29ubmVjdChkZXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXY2NDN4eF9ldGguYy0zMjgwLVx0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZtcC1cdTAwM2V0eF90aW1lb3V0X3Rhc2spO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jPTE1MjY9c3RhdGljIHZvaWQgcHhhMTY4X2V0aF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3B4YTE2OF9ldGguYy0xNTM3LVx0aWYgKGRldi1cdTAwM2VwaHlkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3B4YTE2OF9ldGguYzoxNTM4Olx0XHRwaHlfZGlzY29ubmVjdChkZXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jLTE1MzktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jPTEwMzc9c3RhdGljIHZvaWQgbXRrX3N0YXJfZGlzYWJsZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmMtMTA0Ny1cdHBoeV9zdG9wKHByaXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYzoxMDQ4Olx0cGh5X2Rpc2Nvbm5lY3QocHJpdi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jLTEwNDktXHRmcmVlX2lycShuZGV2LVx1MDAzZWlycSwgbmRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4YmZfZ2lnZS9tbHhiZl9naWdlX21haW4uYz0zODU9c3RhdGljIGludCBtbHhiZl9naWdlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4YmZfZ2lnZS9tbHhiZl9naWdlX21haW4uYy00OTItXHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O0ZhaWxlZCB0byByZWdpc3RlciBuZXRkZXY6ICVwZVxcblwmIzM0OywgRVJSX1BUUihlcnIpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seGJmX2dpZ2UvbWx4YmZfZ2lnZV9tYWluLmM6NDkzOlx0XHRwaHlfZGlzY29ubmVjdChwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4YmZfZ2lnZS9tbHhiZl9naWdlX21haW4uYy00OTQtXHRcdGdvdG8gb3V0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seGJmX2dpZ2UvbWx4YmZfZ2lnZV9tYWluLmM9NTA0PXN0YXRpYyB2b2lkIG1seGJmX2dpZ2VfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4YmZfZ2lnZS9tbHhiZl9naWdlX21haW4uYy01MDgtXHR1bnJlZ2lzdGVyX25ldGRldihwcml2LVx1MDAzZW5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhiZl9naWdlL21seGJmX2dpZ2VfbWFpbi5jOjUwOTpcdHBoeV9kaXNjb25uZWN0KHByaXYtXHUwMDNlbmV0ZGV2LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhiZl9naWdlL21seGJmX2dpZ2VfbWFpbi5jLTUxMC1cdG1seGJmX2dpZ2VfbWRpb19yZW1vdmUocHJpdik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmkvbml4Z2UuYz04NjY9c3RhdGljIGludCBuaXhnZV9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L25pL25peGdlLmMtOTAzLVx0cGh5X3N0b3AocGh5KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25pL25peGdlLmM6OTA0Olx0cGh5X2Rpc2Nvbm5lY3QocGh5KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25pL25peGdlLmMtOTA1LVx0dGFza2xldF9raWxsKFx1MDAyNnByaXYtXHUwMDNlZG1hX2Vycl90YXNrbGV0KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uaS9uaXhnZS5jPTkxMD1zdGF0aWMgaW50IG5peGdlX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmkvbml4Z2UuYy05MTktXHRcdHBoeV9zdG9wKG5kZXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25pL25peGdlLmM6OTIwOlx0XHRwaHlfZGlzY29ubmVjdChuZGV2LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uaS9uaXhnZS5jLTkyMS1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz02MTk9c3RhdGljIHZvaWQgb2FfdGM2X3BoeV9leGl0KHN0cnVjdCBvYV90YzYgKnRjNilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy02MjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo2MjQ6XHRwaHlfZGlzY29ubmVjdCh0YzYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTYyNS1cdG9hX3RjNl9tZGlvYnVzX3VucmVnaXN0ZXIodGM2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wYXNlbWkvcGFzZW1pX21hYy5jPTEyNzU9c3RhdGljIGludCBwYXNlbWlfbWFjX2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcGFzZW1pL3Bhc2VtaV9tYWMuYy0xMjg1LVx0XHRwaHlfc3RvcChkZXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Bhc2VtaS9wYXNlbWlfbWFjLmM6MTI4NjpcdFx0cGh5X2Rpc2Nvbm5lY3QoZGV2LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wYXNlbWkvcGFzZW1pX21hYy5jLTEyODctXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vZW1hYy9lbWFjLW1hYy5jPTk2Mz12b2lkIGVtYWNfbWFjX2Rvd24oc3RydWN0IGVtYWNfYWRhcHRlciAqYWRwdClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9lbWFjL2VtYWMtbWFjLmMtOTc5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vZW1hYy9lbWFjLW1hYy5jOjk4MDpcdHBoeV9kaXNjb25uZWN0KGFkcHQtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL2VtYWMvZW1hYy1tYWMuYy05ODEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmRjL3I2MDQwLmM9MTAyNz1zdGF0aWMgaW50IHI2MDQwX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JkYy9yNjA0MC5jLTExNjYtZXJyX291dF9waHlfZGlzY29ubmVjdDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JkYy9yNjA0MC5jOjExNjc6XHRwaHlfZGlzY29ubmVjdChkZXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JkYy9yNjA0MC5jLTExNjgtZXJyX291dF9tZGlvX3VucmVnaXN0ZXI6XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmRjL3I2MDQwLmM9MTE4NT1zdGF0aWMgdm9pZCByNjA0MF9yZW1vdmVfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JkYy9yNjA0MC5jLTExOTAtXHR1bnJlZ2lzdGVyX25ldGRldihkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmRjL3I2MDQwLmM6MTE5MTpcdHBoeV9kaXNjb25uZWN0KGRldi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmRjL3I2MDQwLmMtMTE5Mi1cdG1kaW9idXNfdW5yZWdpc3RlcihscC1cdTAwM2VtaWlfYnVzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz01MDQ1PXN0YXRpYyBpbnQgcnRsODE2OV9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTUwNTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1MDU4Olx0cGh5X2Rpc2Nvbm5lY3QodHAtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTUwNTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9yYXZiX21haW4uYz0yMzY3PXN0YXRpYyBpbnQgcmF2Yl9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3JhdmJfbWFpbi5jLTIzODYtXHRcdHBoeV9zdG9wKG5kZXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcmF2Yl9tYWluLmM6MjM4NzpcdFx0cGh5X2Rpc2Nvbm5lY3QobmRldi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9yYXZiX21haW4uYy0yMzg4LVx0XHRpZiAob2ZfcGh5X2lzX2ZpeGVkX2xpbmsobnApKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcnN3aXRjaF9tYWluLmM9MTUwMz1zdGF0aWMgdm9pZCByc3dpdGNoX3BoeV9kZXZpY2VfZGVpbml0KHN0cnVjdCByc3dpdGNoX2RldmljZSAqcmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3Jzd2l0Y2hfbWFpbi5jLTE1MDUtXHRpZiAocmRldi1cdTAwM2VuZGV2LVx1MDAzZXBoeWRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcnN3aXRjaF9tYWluLmM6MTUwNjpcdFx0cGh5X2Rpc2Nvbm5lY3QocmRldi1cdTAwM2VuZGV2LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3Jzd2l0Y2hfbWFpbi5jLTE1MDctfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcnRzbi5jPTkyMz1zdGF0aWMgdm9pZCBydHNuX3BoeV9kZWluaXQoc3RydWN0IHJ0c25fcHJpdmF0ZSAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcnRzbi5jLTkyNC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3J0c24uYzo5MjU6XHRwaHlfZGlzY29ubmVjdChwcml2LVx1MDAzZW5kZXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcnRzbi5jLTkyNi1cdHByaXYtXHUwMDNlbmRldi1cdTAwM2VwaHlkZXYgPSBOVUxMO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvc2hfZXRoLmM9MjU4OT1zdGF0aWMgaW50IHNoX2V0aF9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3NoX2V0aC5jLTI2MDgtXHRcdHBoeV9zdG9wKG5kZXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvc2hfZXRoLmM6MjYwOTpcdFx0cGh5X2Rpc2Nvbm5lY3QobmRldi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9zaF9ldGguYy0yNjEwLVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NhbXN1bmcvc3hnYmUvc3hnYmVfbWFpbi5jPTI2ND1zdGF0aWMgaW50IHN4Z2JlX2luaXRfcGh5KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NhbXN1bmcvc3hnYmUvc3hnYmVfbWFpbi5jLTMwMC1cdGlmIChwaHlkZXYtXHUwMDNlcGh5X2lkID09IDApIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NhbXN1bmcvc3hnYmUvc3hnYmVfbWFpbi5jOjMwMTpcdFx0cGh5X2Rpc2Nvbm5lY3QocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NhbXN1bmcvc3hnYmUvc3hnYmVfbWFpbi5jLTMwMi1cdFx0cmV0dXJuIC1FTk9ERVY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2Ftc3VuZy9zeGdiZS9zeGdiZV9tYWluLmM9MTA1OD1zdGF0aWMgaW50IHN4Z2JlX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zYW1zdW5nL3N4Z2JlL3N4Z2JlX21haW4uYy0xMTkzLVx0aWYgKGRldi1cdTAwM2VwaHlkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zYW1zdW5nL3N4Z2JlL3N4Z2JlX21haW4uYzoxMTk0Olx0XHRwaHlfZGlzY29ubmVjdChkZXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NhbXN1bmcvc3hnYmUvc3hnYmVfbWFpbi5jLTExOTUtcGh5X2Vycm9yOlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NhbXN1bmcvc3hnYmUvc3hnYmVfbWFpbi5jPTEyMDc9c3RhdGljIGludCBzeGdiZV9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2Ftc3VuZy9zeGdiZS9zeGdiZV9tYWluLmMtMTIxNi1cdFx0cGh5X3N0b3AoZGV2LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zYW1zdW5nL3N4Z2JlL3N4Z2JlX21haW4uYzoxMjE3Olx0XHRwaHlfZGlzY29ubmVjdChkZXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NhbXN1bmcvc3hnYmUvc3hnYmVfbWFpbi5jLTEyMTgtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc21zYy9zbXNjOTExeC5jPTEwMTU9c3RhdGljIGludCBzbXNjOTExeF9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zbXNjL3Ntc2M5MTF4LmMtMTA1MS1cdFx0U01TQ19XQVJOKHBkYXRhLCBodywgXCYjMzQ7RmFpbGVkIExvb3AgQmFjayBUZXN0XCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Ntc2Mvc21zYzkxMXguYzoxMDUyOlx0XHRwaHlfZGlzY29ubmVjdChwaHlkZXYpO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTM6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA3NzcKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAxMDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBQSFkgRGlzY29ubmVjdGlvbiBNZXRob2RzKioKCk9rYXksIHNvIEkgbmVlZCB0byBkaWcgaW50byBob3cgZHJpdmVycyBoYW5kbGUgUEhZIGRpc2Nvbm5lY3Rpb24uIE15IG1haW4gZm9jdXMgaXMgb24gd2hhdCBkaWZmZXJlbnQgZHJpdmVycyBhcmUgY2FsbGluZyB3aGVuIGEgcGh5c2ljYWwgbGF5ZXIgY29ubmVjdGlvbiBpcyBzZXZlcmVkIG9yIGEgZGV2aWNlIGlzIGRldGFjaGVkLiBJIGtub3cgdGhpcyBpcyB0eXBpY2FsbHkgYWNoaWV2ZWQgdGhyb3VnaCBlaXRoZXIgYHBoeV9kaXNjb25uZWN0YCBvciBgcGh5X2RldGFjaGAsIGJ1dCBJIG5lZWQgdG8gc2VlICp3aG8qIGlzIHVzaW5nIHdoYXQgYW5kIHdoZW4uIEkmIzM5O20gdGhpbmtpbmcsIGluIHRoZSBjb250ZXh0IG9mIG5ldHdvcmsgZGV2aWNlcywgdGhpcyBpcyBnb2luZyB0byBiZSBjb21tb24gaW4gVVNCLWJhc2VkIEV0aGVybmV0IGRvbmdsZXMg4oCTIHRob3NlIEFTaXgsIEFYODgxNzksIERNOTYwMSwgU01TQzk1eHggdHlwZXMg4oCTIGFuZCBhbHNvIHZpcnR1YWwgZHJpdmVycy4gQmV5b25kIHRoZXNlLCBJIHNob3VsZCBwcm9iYWJseSBhbHNvIGV4cGxvcmUgc3RhbmRhcmQgZHJpdmVycyB0b28sIHN1Y2ggYXMgYHI4MTY5YCBvbiBQQ0kgb3Igd2l0aGluIGEgUUVNVSBlbnZpcm9ubWVudCwgdG8gc2VlIGlmIHRoZXkgdXRpbGl6ZSB0aGVzZSBtZXRob2RzIGFzIHdlbGwuIFVsdGltYXRlbHksIHRoZSBxdWVzdGlvbiB0byBiZSBhbnN3ZXJlZCBpcywgZG9lcyBgcjgxNjlgLCBgdXNibmV0YCwgYG1kaW8tZ3Bpb2AsIG9yIGFueSBvdGhlciByZWxldmFudCBkcml2ZXIgdXNlIGBwaHlfZGlzY29ubmVjdGAgb3IgYHBoeV9kZXRhY2hgPyBUaW1lIHRvIHN0YXJ0IGNyb3NzLXJlZmVyZW5jaW5nIGFuZCByZWFkaW5nIHRoZSBzb3VyY2UgY29kZSEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTM6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5X2Rpc2Nvbm5lY3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jPTIzNz1zdGF0aWMgaW50IGF4ODgxNzJhX3N0b3Aoc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTI0Ni1cdFx0cGh5X3N0b3AocHJpdi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM6MjQ3Olx0XHRwaHlfZGlzY29ubmVjdChwcml2LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy0yNDgtXHR9XG4tLVxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmM9MTMxNz1zdGF0aWMgdm9pZCBzbXNjOTV4eF91bmJpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYy0xMzIwLVxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmM6MTMyMTpcdHBoeV9kaXNjb25uZWN0KGRldi1cdTAwM2VuZXQtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jLTEzMjItXHRtZGlvYnVzX3VucmVnaXN0ZXIocGRhdGEtXHUwMDNlbWRpb2J1cyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDEzOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNDIwCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMjcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEN1cnJlbnQgSW52ZXN0aWdhdGlvbiBpbnRvIE5ldHdvcmsgSW50ZXJmYWNlIERpc2Nvbm5lY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIG5ldHdvcmsgaW50ZXJmYWNlIGRpc2Nvbm5lY3Rpb25zLCBhbmQgSSYjMzk7dmUgc3R1bWJsZWQgdXBvbiBhIGZldyBpbnRlcmVzdGluZyBwb2ludHMuIEZpcnN0LCBJIG5vdGljZWQgdGhhdCBgcjgxNjlfbWFpbi5jYCBleHBsaWNpdGx5IHVzZXMgYHBoeV9kaXNjb25uZWN0KHRwLSZndDtwaHlkZXYpYCB3aXRoaW4gaXRzIGBydGw4MTY5X2Nsb3NlYCBmdW5jdGlvbi4gVGhpcyBpcyBzaWduaWZpY2FudC4gVGhlIGNydWNpYWwgcXVlc3Rpb24sIG9mIGNvdXJzZSwgaXM6IFdoZW4gZG9lcyBgcnRsODE2OV9jbG9zZWAgZ2V0IGV4ZWN1dGVkPyBGcm9tIG15IHVuZGVyc3RhbmRpbmcsIHRoaXMgZnVuY3Rpb24gcnVucyB3aGVuIEkgaXNzdWUgY29tbWFuZHMgbGlrZSBgaXAgbGluayBzZXQgZXRoMCBkb3duYCwgb3Igd2hlbiB0aGUgc29ja2V0IGNsb3Nlcywgb3Igd2hlbiB0aGUgbmV0d29yayBkZXZpY2UgaXRzZWxmIGlzIGJyb3VnaHQgZG93bi4KCk5vdywgcmVtZW1iZXIgdGhhdCBgcjgxNjlgIG9mdGVuIHJlcHJlc2VudHMgdGhlIHN0YW5kYXJkIFJlYWx0ZWsgTklDIHRoYXQmIzM5O3MgZW11bGF0ZWQgd2l0aGluIGEgUUVNVSBlbnZpcm9ubWVudCwgZXNwZWNpYWxseSB3aGVuIHVzaW5nIHRoZSBgLW5ldCBuaWMsbW9kZWw9cnRsODEzOWAgb3IgYC1uZXQgbmljLG1vZGVsPXJ0bDgxNjlgIG9wdGlvbnMsIG9yIGlmIGEgUENJIGRldmljZSBvZiB0aGF0IHR5cGUgaXMgc3BlY2lmaWVkLiBUaGlzIGlzIGltcG9ydGFudCB0byBrZWVwIGluIG1pbmQsIGJlY2F1c2UgaXQmIzM5O3MgYSBjb21tb24gc2NlbmFyaW8gaW4gbWFueSB0ZXN0aW5nIGVudmlyb25tZW50cy4gSSBzaG91bGQgYWxzbyByZW1lbWJlciB0aGF0IG90aGVyIHNpbWlsYXIgZHJpdmVycywgbGlrZSBgYXg4ODE3MmFgIGFuZCBgc21zYzk1eHhgLCBhcmUgYWxzbyBVU0IgZ2FkZ2V0cy9kcml2ZXJzIHdoaWNoIGFyZSBhY2Nlc3NpYmxlIGluIHN5emthbGxlci4KCk5leHQsIEkgdGhpbmsgaXQmIzM5O3Mgd29ydGggdGFraW5nIGEgY2xvc2VyIGxvb2sgYXQgYHBoeV9hdHRhY2hfZGlyZWN0YCB3aXRoaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLiBTcGVjaWZpY2FsbHksIEkgd2FudCB0byB1bmRlcnN0YW5kIGhvdyBpdCBoYW5kbGVzIGZhaWx1cmVzLiBJIHJlY2FsbCB0aGF0IHdoZW4gYHBoeV9hdHRhY2hfZGlyZWN0YCBmYWlscyDigJMgZm9yIGV4YW1wbGUsIGF0IHByb2JlIG9yIGF0dGFjaCB0aW1lLCBwcmlvciB0byBzdWNjZXNzZnVsIHJlZ2lzdHJhdGlvbiDigJMgaXQgY2FsbHMgYHBoeV9kZXRhY2gocGh5ZGV2KWAuIEkmIzM5O20gZ29pbmcgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIGFyb3VuZCBsaW5lcyAxODAwLTE5MDAgaW4gdGhhdCBmaWxlIHRvIGJldHRlciB1bmRlcnN0YW5kIHRoZSBmYWlsdXJlIHNjZW5hcmlvcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTM6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTg3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0NQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxODcwOlx0XG4xODcxOlx0XHQvKiBEbyBpbml0aWFsIGNvbmZpZ3VyYXRpb24gaGVyZSwgbm93IHRoYXRcbjE4NzI6XHRcdCAqIHdlIGhhdmUgY2VydGFpbiBrZXkgcGFyYW1ldGVyc1xuMTg3MzpcdFx0ICogKGRldl9mbGFncyBhbmQgaW50ZXJmYWNlKVxuMTg3NDpcdFx0ICovXG4xODc1Olx0XHRlcnIgPSBwaHlfaW5pdF9odyhwaHlkZXYpO1xuMTg3NjpcdFx0aWYgKGVycilcbjE4Nzc6XHRcdFx0Z290byBlcnJvcjtcbjE4Nzg6XHRcbjE4Nzk6XHRcdHBoeV9yZXN1bWUocGh5ZGV2KTtcbjE4ODA6XHRcbjE4ODE6XHRcdC8qKlxuMTg4MjpcdFx0ICogSWYgdGhlIGV4dGVybmFsIHBoeSB1c2VkIGJ5IGN1cnJlbnQgbWFjIGludGVyZmFjZSBpcyBtYW5hZ2VkIGJ5XG4xODgzOlx0XHQgKiBhbm90aGVyIG1hYyBpbnRlcmZhY2UsIHNvIHdlIHNob3VsZCBjcmVhdGUgYSBkZXZpY2UgbGluayBiZXR3ZWVuXG4xODg0Olx0XHQgKiBwaHkgZGV2IGFuZCBtYWMgZGV2LlxuMTg4NTpcdFx0ICovXG4xODg2Olx0XHRpZiAoZGV2IFx1MDAyNlx1MDAyNiBwaHlkZXYtXHUwMDNlbWRpby5idXMtXHUwMDNlcGFyZW50IFx1MDAyNlx1MDAyNiBkZXYtXHUwMDNlZGV2LnBhcmVudCAhPSBwaHlkZXYtXHUwMDNlbWRpby5idXMtXHUwMDNlcGFyZW50KVxuMTg4NzpcdFx0XHRwaHlkZXYtXHUwMDNlZGV2bGluayA9IGRldmljZV9saW5rX2FkZChkZXYtXHUwMDNlZGV2LnBhcmVudCwgXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2LFxuMTg4ODpcdFx0XHRcdFx0XHRcdCAgRExfRkxBR19QTV9SVU5USU1FIHwgRExfRkxBR19TVEFURUxFU1MpO1xuMTg4OTpcdFxuMTg5MDpcdFx0cmV0dXJuIGVycjtcbjE4OTE6XHRcbjE4OTI6XHRlcnJvcjpcbjE4OTM6XHRcdC8qIHBoeV9kZXRhY2goKSBkb2VzIGFsbCBvZiB0aGUgY2xlYW51cCBiZWxvdyAqL1xuMTg5NDpcdFx0cGh5X2RldGFjaChwaHlkZXYpO1xuMTg5NTpcdFx0cmV0dXJuIGVycjtcbjE4OTY6XHRcbjE4OTc6XHRlcnJvcl9tb2R1bGVfcHV0OlxuMTg5ODpcdFx0bW9kdWxlX3B1dChkLVx1MDAzZWRyaXZlci1cdTAwM2Vvd25lcik7XG4xODk5Olx0XHRwaHlkZXYtXHUwMDNlaXNfZ2VucGh5X2RyaXZlbiA9IDA7XG4xOTAwOlx0XHRkLVx1MDAzZWRyaXZlciA9IE5VTEw7XG4xOTAxOlx0ZXJyb3JfcHV0X2RldmljZTpcbjE5MDI6XHRcdHB1dF9kZXZpY2UoZCk7XG4xOTAzOlx0XHRpZiAobmRldl9vd25lciAhPSBidXMtXHUwMDNlb3duZXIpXG4xOTA0Olx0XHRcdG1vZHVsZV9wdXQoYnVzLVx1MDAzZW93bmVyKTtcbjE5MDU6XHRcdHJldHVybiBlcnI7XG4xOTA2Olx0fVxuMTkwNzpcdEVYUE9SVF9TWU1CT0wocGh5X2F0dGFjaF9kaXJlY3QpO1xuMTkwODpcdFxuMTkwOTpcdC8qKlxuMTkxMDpcdCAqIHBoeV9kZXRhY2ggLSBkZXRhY2ggYSBQSFkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlXG4xOTExOlx0ICogQHBoeWRldjogdGFyZ2V0IHBoeV9kZXZpY2Ugc3RydWN0XG4xOTEyOlx0ICpcbjE5MTM6XHQgKiBUaGlzIGRldGFjaGVzIHRoZSBwaHkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlIGFuZCB0aGUgcGh5XG4xOTE0Olx0ICogZHJpdmVyLCBhbmQgZHJvcHMgdGhlIHJlZmVyZW5jZSBjb3VudCB0YWtlbiBpbiBwaHlfYXR0YWNoX2RpcmVjdCgpLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxMzowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjc2NgoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDI4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBIWSBEZXZpY2UgRGV0YWNobWVudCBMb2dpYyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHBoeV9kZXRhY2hgLCB0aGUgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIGNsZWFubHkgc2VwYXJhdGluZyBhIFBIWSBkZXZpY2UgZnJvbSBpdHMgbmV0d29yayBkZXZpY2UuIE15IHByaW1hcnkgcXVlc3Rpb24gaXMgYWx3YXlzICp3aHkqIHdhcyB0aGlzIGNoYW5nZSBtYWRlPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbW90aXZhdGlvbiBiZWhpbmQgdGhpcyBtb2RpZmljYXRpb24sIHNvIGxldCYjMzk7cyBkaWcgaW50byB0aGUgZ2l0IGxvZyBhbmQgdGhlIGNvbW1pdCBtZXNzYWdlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNoYW5nZS4gQ29udGV4dCBpcyBldmVyeXRoaW5nLiBJJiMzOTtsbCBhbHNvIHJlYWQgdGhlIHN1cnJvdW5kaW5nIGNvZGUsIGVzcGVjaWFsbHkgYW55dGhpbmcgcmVsYXRlZCB0byB0aGUgYGh3cHJvdmAgdmFyaWFibGUgYW5kIHRoZSBgcnRubF9kZXJlZmVyZW5jZWAgbWFjcm8uCgpBaGEsIEkgc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nLiBUaGUgb3JpZ2luYWwgY29kZSB1c2VkIGBydG5sX2RlcmVmZXJlbmNlKGRldi0mZ3Q7aHdwcm92KWAsIHdoaWNoIGV4cGFuZHMgdG8gYHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoZGV2LSZndDtod3Byb3YsIGxvY2tkZXBfcnRubF9pc19oZWxkKCkpYC4gVGhlIGlzc3VlIGFwcGVhcnMgdG8gYmUgdGhhdCBgcGh5X2RldGFjaGAgY291bGQgYmUgY2FsbGVkICpiZWZvcmUqIHRoZSBSVE5MIGxvY2sgd2FzIGFjcXVpcmVkLiBGb3IgaW5zdGFuY2UsIHRoaXMgY291bGQgaGFwcGVuIGR1cmluZyBhIHByb2JlIGVycm9yIHNjZW5hcmlvLCBwZXJoYXBzIGJlZm9yZSB0aGUgbmV0d29yayBkZXZpY2Ugd2FzIGZ1bGx5IHJlZ2lzdGVyZWQgKGBkZXYtJmd0O3JlZ19zdGF0ZSAhPSBORVRSRUdfUkVHSVNURVJFRGApLiBJbiB0aGlzIGNhc2UsIGBsb2NrZGVwX3J0bmxfaXNfaGVsZCgpYCB3b3VsZCBldmFsdWF0ZSB0byBmYWxzZSwgbGVhZGluZyB0byBhIGxvY2tkZXAgd2FybmluZy4gSSYjMzk7dmUgc2VlbiB0aGVzZSBzb3J0cyBvZiB3YXJuaW5ncyBiZWZvcmU7IHRoZXkgY2FuIGJlIHRyaWNreSB0byBkZWJ1Zy4KClRoZSBwYXRjaCByZXNvbHZlcyB0aGUgcHJvYmxlbSBieSBjaGFuZ2luZyB0aGUgYHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWRgIHNlY29uZCBhcmd1bWVudCB0byBhbGxvdyB0aGUgY29kZSB0byBydW4sIGVzc2VudGlhbGx5IHVzaW5nIGFuICYjMzQ7b3ImIzM0OyBgfHxgIGNvbmRpdGlvbjogYGxvY2tkZXBfcnRubF9pc19oZWxkKCkgfHwgZGV2LSZndDtyZWdfc3RhdGUgIT0gTkVUUkVHX1JFR0lTVEVSRURgLiBUaGlzIGNvcnJlY3RseSBwcm90ZWN0cyB0aGUgZGVyZWZlcmVuY2UuCgpOb3csIGp1c3QgdG8gYmUgc3VyZSwgSSBzaG91bGQgY2hlY2sgdGhlIEtjb25maWcgc2V0dGluZ3MgZm9yIHRoaXMgcGFydCBvZiB0aGUgZHJpdmVyLiBJIHdpbGwgbG9vayBhdCB0aGUgYGRyaXZlcnMvbmV0L3BoeS9gIGRpcmVjdG9yeSwgdG8gY29uZmlybSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgaW1wYWN0IHRoaXMgcGFydGljdWxhciBsb2dpYy4gVGhpcyB3aWxsIGFsbG93IG1lIHRvIGJlIGZ1bGx5IGNvbmZpZGVudCBpbiB0aGUgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDEzOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1BIWUxJQiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L0tjb25maWc9Nj1jb25maWcgUEhZTElOS1xuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNy1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo4Olx0c2VsZWN0IFBIWUxJQlxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctOS1cdHNlbGVjdCBTV1BIWVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE0LVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6MTU6bWVudWNvbmZpZyBQSFlMSUJcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE2LVx0dHJpc3RhdGUgXCYjMzQ7UEhZIERldmljZSBzdXBwb3J0IGFuZCBpbmZyYXN0cnVjdHVyZVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTIxLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6MjI6aWYgUEhZTElCXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0yMy1cbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz00Nj1jb25maWcgT1BFTl9BTExJQU5DRV9IRUxQRVJTXG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNDgtXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo0OTpjb25maWcgUEhZTElCX0xFRFNcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTUwLVx0ZGVmX2Jvb2wgT0ZcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjUxOlx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1QSFlMSUJcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTUyLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTU2PWNvbmZpZyBGSVhFRF9QSFlcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy02NC1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjY1OmNvbmZpZyBSVVNUX1BIWUxJQl9BQlNUUkFDVElPTlNcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjY2OiAgICAgICAgYm9vbCBcJiMzNDtSdXN0IFBIWUxJQiBhYnN0cmFjdGlvbnMgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNjctICAgICAgICBkZXBlbmRzIG9uIFJVU1RcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjY4OiAgICAgICAgZGVwZW5kcyBvbiBQSFlMSUI9eVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNjktICAgICAgICBoZWxwXG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc9OTM9Y29uZmlnIEFJUl9BTjg4MDFfUEhZXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy05NC1cdHRyaXN0YXRlIFwmIzM0O0Fpcm9oYSBBTjg4MDEgR2lnYWJpdCBQSFlcJiMzNDtcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjk1Olx0c2VsZWN0IEFJUl9ORVRfUEhZTElCXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy05Ni1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz05OT1jb25maWcgQUlSX0VOODgxMUhfUEhZXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xMDAtXHR0cmlzdGF0ZSBcJiMzNDtBaXJvaGEgRU44ODExSCAyLjUgR2lnYWJpdCBQSFlcJiMzNDtcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjEwMTpcdHNlbGVjdCBBSVJfTkVUX1BIWUxJQlxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTAyLVx0c2VsZWN0IFBIWV9DT01NT05fUFJPUFNcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xMDUtXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzoxMDY6Y29uZmlnIEFJUl9ORVRfUEhZTElCXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xMDctXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTE0NT1jb25maWcgQU1DQ19RVDIwMjVfUEhZXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xNDYtXHR0cmlzdGF0ZSBcJiMzNDtBTUNDIFFUMjAyNSBQSFlcJiMzNDtcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjE0NzpcdGRlcGVuZHMgb24gUlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xNDgtXHRkZXBlbmRzIG9uIFJVU1RfRldfTE9BREVSX0FCU1RSQUNUSU9OU1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTE2MD1jb25maWcgQVg4ODc5NkJfUlVTVF9QSFlcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE2MS1cdGJvb2wgXCYjMzQ7UnVzdCByZWZlcmVuY2UgZHJpdmVyIGZvciBBc2l4IFBIWXNcJiMzNDtcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjE2MjpcdGRlcGVuZHMgb24gUlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TIFx1MDAyNlx1MDAyNiBBWDg4Nzk2Ql9QSFlcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE2My1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz0xNjg9Y29uZmlnIEJST0FEQ09NX1BIWVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTY5LVx0dHJpc3RhdGUgXCYjMzQ7QnJvYWRjb20gNTRYWCBQSFlzXCYjMzQ7XG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzoxNzA6XHRzZWxlY3QgQkNNX05FVF9QSFlMSUJcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE3MS1cdHNlbGVjdCBCQ01fTkVUX1BIWVBUUCBpZiBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz0xNzc9Y29uZmlnIEJDTTU0MTQwX1BIWVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE3OS1cdGRlcGVuZHMgb24gSFdNT04gfHwgSFdNT049blxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6MTgwOlx0c2VsZWN0IEJDTV9ORVRfUEhZTElCXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xODEtXHRzZWxlY3QgUEhZX1BBQ0tBR0Vcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz0xODg9Y29uZmlnIEJDTTYzWFhfUEhZXG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTkwLVx0ZGVwZW5kcyBvbiBCQ002M1hYIHx8IENPTVBJTEVfVEVTVFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6MTkxOlx0c2VsZWN0IEJDTV9ORVRfUEhZTElCXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xOTItXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc9MTk1PWNvbmZpZyBCQ003WFhYX1BIWVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTk2LVx0dHJpc3RhdGUgXCYjMzQ7QnJvYWRjb20gN3h4eCBTT0NzIGludGVybmFsIFBIWXNcJiMzNDtcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjE5NzpcdHNlbGVjdCBCQ01fTkVUX1BIWUxJQlxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTk4LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTIxMj1jb25maWcgQkNNX0NZR05VU19QSFlcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0yMTUtXHRkZXBlbmRzIG9uIE1ESU9fQkNNX0lQUk9DXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzoyMTY6XHRzZWxlY3QgQkNNX05FVF9QSFlMSUJcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTIxNy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0yMjQtXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzoyMjU6Y29uZmlnIEJDTV9ORVRfUEhZTElCXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0yMjYtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTQ4Nz1jb25maWcgWElMSU5YX0dNSUkyUkdNSUlcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy00OTMtXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo0OTQ6ZW5kaWYgIyBQSFlMSUJcbi0tXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU9ND1saWJwaHkteVx0XHRcdDo9IHBoeS5vIHBoeS1jNDUubyBwaHktY29yZS5vIHBoeV9kZXZpY2UubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS04LVxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjk6aWZkZWYgQ09ORklHX1BIWUxJQlxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjEwOiMgYnVpbHQtaW4gd2hlbmV2ZXIgUEhZTElCIGlzIGJ1aWx0LWluIG9yIG1vZHVsZVxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTExLW9iai15XHRcdFx0XHQmIzQzOz0gc3R1YnMub1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT0xNj1saWJwaHktJChDT05GSUdfT1BFTl9BTExJQU5DRV9IRUxQRVJTKSAmIzQzOz0gb3Blbl9hbGxpYW5jZV9oZWxwZXJzLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS0xNy1cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZToxODpvYmotJChDT05GSUdfUEhZTElCKVx0XHQmIzQzOz0gbWRpb19idXMub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTE5LW9iai0kKENPTkZJR19QSFlMSU5LKVx0XHQmIzQzOz0gcGh5bGluay5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MjA6b2JqLSQoQ09ORklHX1BIWUxJQilcdFx0JiM0Mzs9IGxpYnBoeS5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MjE6b2JqLSQoQ09ORklHX1BIWUxJQilcdFx0JiM0Mzs9IG1kaW9fZGV2cmVzLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS0yMi1vYmotJChDT05GSUdfUEhZX1BBQ0tBR0UpXHQmIzQzOz0gcGh5X3BhY2thZ2Uub1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT0zND1vYmotJChDT05GSUdfQUlSX0VOODgxMUhfUEhZKSAgICYjNDM7PSBhaXJfZW44ODExaC5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MzU6b2JqLSQoQ09ORklHX0FJUl9ORVRfUEhZTElCKVx0JiM0Mzs9IGFpcl9waHlfbGliLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS0zNi1vYmotJChDT05GSUdfQU1EX1BIWSlcdFx0JiM0Mzs9IGFtZC5vXG4tLVxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTUwPW9iai0kKENPTkZJR19CQ01fQ1lHTlVTX1BIWSlcdCYjNDM7PSBiY20tY3lnbnVzLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo1MTpvYmotJChDT05GSUdfQkNNX05FVF9QSFlMSUIpXHQmIzQzOz0gYmNtLXBoeS1saWIub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTUyLW9iai0kKENPTkZJR19CQ01fTkVUX1BIWVBUUClcdCYjNDM7PSBiY20tcGh5LXB0cC5vXG4tLVxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL0tjb25maWc9Mj1jb25maWcgTUVESUFURUtfMlA1R0VfUEhZXG4tLVxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL0tjb25maWctNC1cdGRlcGVuZHMgb24gKEFSTTY0IFx1MDAyNlx1MDAyNiBBUkNIX01FRElBVEVLKSB8fCBDT01QSUxFX1RFU1RcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9LY29uZmlnOjU6XHRzZWxlY3QgTVRLX05FVF9QSFlMSUJcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9LY29uZmlnLTYtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL0tjb25maWc9MTM9Y29uZmlnIE1FRElBVEVLX0dFX1BIWVxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL0tjb25maWctMTQtXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBHaWdhYml0IEV0aGVybmV0IFBIWXNcJiMzNDtcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9LY29uZmlnOjE1Olx0c2VsZWN0IE1US19ORVRfUEhZTElCXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvS2NvbmZpZy0xNi1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvS2NvbmZpZz0zMz1jb25maWcgTUVESUFURUtfR0VfU09DX1BIWVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9LY29uZmlnLTM3LVx0XHQgICBFQ09ORVQgfHwgQ09NUElMRV9URVNUXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvS2NvbmZpZzozODpcdHNlbGVjdCBNVEtfTkVUX1BIWUxJQlxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL0tjb25maWctMzktXHRzZWxlY3QgUEhZX1BBQ0tBR0Vcbi0tXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvS2NvbmZpZy01MS1cbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9LY29uZmlnOjUyOmNvbmZpZyBNVEtfTkVUX1BIWUxJQlxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL0tjb25maWctNTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9NYWtlZmlsZT01PW9iai0kKENPTkZJR19NRURJQVRFS19HRV9TT0NfUEhZKVx0JiM0Mzs9IG10ay1nZS1zb2Mub1xuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX01US19ORVRfUEhZTElCKVx0XHQmIzQzOz0gbXRrLXBoeS1saWIub1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MzY4OT1zdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zODA5LVx0ICovXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjM4MTA6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfUEhZTElCX0xFRFMpIFx1MDAyNlx1MDAyNiAhcGh5X2RyaXZlcl9pc19nZW5waHkocGh5ZGV2KSkge1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zODExLVx0XHRlcnIgPSBvZl9waHlfbGVkcyhwaHlkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MzgzMz1zdGF0aWMgaW50IHBoeV9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzgzOC1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MzgzOTpcdGlmIChJU19FTkFCTEVEKENPTkZJR19QSFlMSUJfTEVEUykgXHUwMDI2XHUwMDI2ICFwaHlfZHJpdmVyX2lzX2dlbnBoeShwaHlkZXYpKVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zODQwLVx0XHRwaHlfbGVkc191bnJlZ2lzdGVyKHBoeWRldik7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0zODY4PXN0YXRpYyBpbnQgcGh5X2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgcGh5X2RyaXZlciAqbmV3X2RyaXZlcixcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTM4ODEtXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjM4ODI6XHQvKiBQSFlMSUIgZGV2aWNlIGRyaXZlcnMgbXVzdCBub3QgbWF0Y2ggdXNpbmcgYSBEVCBjb21wYXRpYmxlIHRhYmxlXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTM4ODMtXHQgKiBhcyB0aGlzIGJ5cGFzc2VzIG91ciBjaGVja3MgdGhhdCB0aGUgbWRpb2RldiB0aGF0IGlzIGJlaW5nIG1hdGNoZWRcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmgtNS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaWItaW50ZXJuYWwuaDo2OiNpZm5kZWYgX19QSFlMSUJfSU5URVJOQUxfSFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpYi1pbnRlcm5hbC5oOjc6I2RlZmluZSBfX1BIWUxJQl9JTlRFUk5BTF9IXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmgtOC1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmg9MzA9aW50IGdlbnBoeV9jNDVfcmVhZF9lZWVfYWR2KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHVuc2lnbmVkIGxvbmcgKmFkdik7XG5kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmgtMzEtXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmg6MzI6I2VuZGlmIC8qIF9fUEhZTElCX0lOVEVSTkFMX0ggKi9cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLmgtNS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaWIuaDo2OiNpZm5kZWYgX19QSFlMSUJfSFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oOjc6I2RlZmluZSBfX1BIWUxJQl9IXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLmgtOC1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLmg9Mzg9aW50IG1tZF9waHlfd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9hZGRyLCBib29sIGlzX2M0NSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLmgtNDAtXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLmg6NDE6I2VuZGlmIC8qIF9fUEhZTElCX0ggKi9cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyMDM9c3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjIyNi0gKiBwaHlfYXR0YWNoX2RpcmVjdCgpLiBDb25maWd1cmUgdGhlIEBwaHkgYWNjb3JkaW5nIHRvIHRoZSBNQUMgZHJpdmVyJiMzOTtzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyMjc6ICogY2FwYWJpbGl0aWVzLCBzdGFydCB0aGUgUEhZTElCIHN0YXRlIG1hY2hpbmUgYW5kIGVuYWJsZSBhbnkgaW50ZXJydXB0c1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjI4LSAqIHRoYXQgdGhlIFBIWSBzdXBwb3J0cy5cbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnOjI6Y29uZmlnIFFDT01fTkVUX1BIWUxJQlxuZHJpdmVycy9uZXQvcGh5L3Fjb20vS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnPTU9Y29uZmlnIEFUODAzWF9QSFlcbmRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWctNi1cdHRyaXN0YXRlIFwmIzM0O1F1YWxjb21tIEF0aGVyb3MgQVI4MDNYIFBIWXNcJiMzNDtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWc6NzpcdHNlbGVjdCBRQ09NX05FVF9QSFlMSUJcbmRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWctOC1cdGRlcGVuZHMgb24gUkVHVUxBVE9SXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vS2NvbmZpZz0xMj1jb25maWcgUUNBODNYWF9QSFlcbmRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWctMTMtXHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBBdGhlcm9zIFFDQTgzM3ggUEhZc1wmIzM0O1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vS2NvbmZpZzoxNDpcdHNlbGVjdCBRQ09NX05FVF9QSFlMSUJcbmRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWctMTUtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vS2NvbmZpZz0xOD1jb25maWcgUUNBODA4WF9QSFlcbmRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWctMTktXHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBRQ0E4MDh4IFBIWXNcJiMzNDtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWc6MjA6XHRzZWxlY3QgUUNPTV9ORVRfUEhZTElCXG5kcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnLTIxLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWc9MjQ9Y29uZmlnIFFDQTgwN1hfUEhZXG5kcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnLTI1LVx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gUUNBODA3eCBQSFlzXCYjMzQ7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnOjI2Olx0c2VsZWN0IFFDT01fTkVUX1BIWUxJQlxuZHJpdmVycy9uZXQvcGh5L3Fjb20vS2NvbmZpZy0yNy1cdHNlbGVjdCBQSFlfUEFDS0FHRVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vTWFrZWZpbGU6MjpvYmotJChDT05GSUdfUUNPTV9ORVRfUEhZTElCKVx0JiM0Mzs9IHFjb20tcGh5LWxpYi5vXG5kcml2ZXJzL25ldC9waHkvcWNvbS9NYWtlZmlsZS0zLW9iai0kKENPTkZJR19BVDgwM1hfUEhZKVx0JiM0Mzs9IGF0ODAzeC5vXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Ntc2MuYz02Nj1pbnQgc21zY19waHlfY29uZmlnX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvc21zYy5jLTc1LVx0XHRyYyA9IHBoeV93cml0ZShwaHlkZXYsIE1JSV9MQU44M0MxODVfSU0sXG5kcml2ZXJzL25ldC9waHkvc21zYy5jOjc2Olx0XHRcdCAgICAgICBNSUlfTEFOODNDMTg1X0lTRl9JTlRfUEhZTElCX0VWRU5UUyk7XG5kcml2ZXJzL25ldC9waHkvc21zYy5jLTc3LVx0fSBlbHNlIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvc21zYy5jPTEwMT1pcnFyZXR1cm5fdCBzbXNjX3BoeV9oYW5kbGVfaW50ZXJydXB0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Ntc2MuYy0xMTItXG5kcml2ZXJzL25ldC9waHkvc21zYy5jOjExMzpcdGlmICghKGlycV9zdGF0dXMgXHUwMDI2IE1JSV9MQU44M0MxODVfSVNGX0lOVF9QSFlMSUJfRVZFTlRTKSlcbmRyaXZlcnMvbmV0L3BoeS9zbXNjLmMtMTE0LVx0XHRyZXR1cm4gSVJRX05PTkU7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3N0dWJzLmMtMy0gKiBTdHVicyBmb3IgUEhZIGxpYnJhcnkgZnVuY3Rpb25hbGl0eSBjYWxsZWQgYnkgdGhlIGNvcmUgbmV0d29yayBzdGFjay5cbmRyaXZlcnMvbmV0L3BoeS9zdHVicy5jOjQ6ICogVGhlc2UgYXJlIG5lY2Vzc2FyeSBiZWNhdXNlIENPTkZJR19QSFlMSUIgY2FuIGJlIGEgbW9kdWxlLCBhbmQgYnVpbHQtaW5cbmRyaXZlcnMvbmV0L3BoeS9zdHVicy5jLTUtICogY29kZSBjYW5ub3QgZGlyZWN0bHkgY2FsbCBzeW1ib2xzIGV4cG9ydGVkIGJ5IG1vZHVsZXMuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDEzOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3Njk1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgUEhZTElCIGFuZCBpdHMgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkgc2VlIHRoYXQgYENPTkZJR19QSFlMSUJgIGlzIGEgaGFyZCByZXF1aXJlbWVudCBmb3IgdGhlIGBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jYCBmaWxlLiBSaWdodCwgdGhhdCBtYWtlcyBzZW5zZSDigJMgUEhZTElCIGlzIGNsZWFybHkgdGhlIGNvcmUgbGlicmFyeSBmb3IgaGFuZGxpbmcgUEhZIGRldmljZXMuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgYFBIWUxJQmAgaXRzZWxmIHJlbGllcyBvbiBvdGhlciBjb3JlIG5ldHdvcmtpbmcgY29tcG9uZW50cy4gTXkgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gcXVpY2tseSBjaGVjayBpZiBgUEhZTElCYCBkZXBlbmRzIG9uIGBORVRERVZJQ0VTYC4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoYXQgcmVsYXRpb25zaGlwLiBUaGVuLCBJJiMzOTtsbCBnbyBzdHJhaWdodCB0byBgZHJpdmVycy9uZXQvcGh5L0tjb25maWdgIHRvIHBpbnBvaW50IGV4YWN0bHkgaG93IGBQSFlMSUJgIGlzIGNvbmZpZ3VyZWQgYW5kIGFueSBkZXBlbmRlbmNpZXMgd2l0aGluIHRoYXQgY29udGV4dC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgaXRzIHBsYWNlIGluIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTM6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIFBIWSBMYXllciBDb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBQSFlMSU5LXG4gICA3Olx0XHR0cmlzdGF0ZVxuICAgODpcdFx0c2VsZWN0IFBIWUxJQlxuICAgOTpcdFx0c2VsZWN0IFNXUEhZXG4gIDEwOlx0XHRoZWxwXG4gIDExOlx0XHQgIFBIWWxpbmsgbW9kZWxzIHRoZSBsaW5rIGJldHdlZW4gdGhlIFBIWSBhbmQgTUFDLCBhbGxvd2luZyBmaXhlZFxuICAxMjpcdFx0ICBjb25maWd1cmF0aW9uIGxpbmtzLCBQSFlzLCBhbmQgU2VyZGVzIGxpbmtzIHdpdGggTUFDIGxldmVsXG4gIDEzOlx0XHQgIGF1dG9uZWdvdGlhdGlvbiBtb2Rlcy5cbiAgMTQ6XHRcbiAgMTU6XHRtZW51Y29uZmlnIFBIWUxJQlxuICAxNjpcdFx0dHJpc3RhdGUgXCYjMzQ7UEhZIERldmljZSBzdXBwb3J0IGFuZCBpbmZyYXN0cnVjdHVyZVwmIzM0O1xuICAxNzpcdFx0aGVscFxuICAxODpcdFx0ICBFdGhlcm5ldCBjb250cm9sbGVycyBhcmUgdXN1YWxseSBhdHRhY2hlZCB0byBQSFlcbiAgMTk6XHRcdCAgZGV2aWNlcy4gIFRoaXMgb3B0aW9uIHByb3ZpZGVzIGluZnJhc3RydWN0dXJlIGZvclxuICAyMDpcdFx0ICBtYW5hZ2luZyBQSFkgZGV2aWNlcy5cbiAgMjE6XHRcbiAgMjI6XHRpZiBQSFlMSUJcbiAgMjM6XHRcbiAgMjQ6XHRjb25maWcgU1dQSFlcbiAgMjU6XHRcdGJvb2xcbiAgMjY6XHRcbiAgMjc6XHRjb25maWcgUEhZX1BBQ0tBR0VcbiAgMjg6XHRcdCB0cmlzdGF0ZVxuICAyOTpcdFxuICAzMDpcdGNvbmZpZyBMRURfVFJJR0dFUl9QSFlcbiAgMzE6XHRcdGJvb2wgXCYjMzQ7U3VwcG9ydCBMRUQgdHJpZ2dlcnMgZm9yIHRyYWNraW5nIGxpbmsgc3RhdGVcJiMzNDtcbiAgMzI6XHRcdGRlcGVuZHMgb24gTEVEU19UUklHR0VSU1xuICAzMzpcdFx0aGVscFxuICAzNDpcdFx0ICBBZGRzIHN1cHBvcnQgZm9yIGEgc2V0IG9mIExFRCB0cmlnZ2VyIGV2ZW50cyBwZXItUEhZLiAgTGlua1xuICAzNTpcdFx0ICBzdGF0ZSBjaGFuZ2Ugd2lsbCB0cmlnZ2VyIHRoZSBldmVudHMsIGZvciBjb25zdW1wdGlvbiBieSBhblxuICAzNjpcdFx0ICBMRUQgY2xhc3MgZHJpdmVyLiAgVGhlcmUgYXJlIHRyaWdnZXJzIGZvciBlYWNoIGxpbmsgc3BlZWQgY3VycmVudGx5XG4gIDM3Olx0XHQgIHN1cHBvcnRlZCBieSB0aGUgUEhZIGFuZCBhbHNvIGEgb25lIGNvbW1vbiBcJiMzNDtsaW5rXCYjMzQ7IHRyaWdnZXIgYXMgYVxuICAzODpcdFx0ICBsb2dpY2FsLW9yIG9mIGFsbCB0aGUgbGluayBzcGVlZCBvbmVzLlxuICAzOTpcdFx0ICBBbGwgdGhlc2UgdHJpZ2dlcnMgYXJlIG5hbWVkIGFjY29yZGluZyB0byB0aGUgZm9sbG93aW5nIHBhdHRlcm46XG4gIDQwOlx0XHQgICAgICBcdTAwM2NtaWkgYnVzIGlkXHUwMDNlOlx1MDAzY3BoeVx1MDAzZTpcdTAwM2NzcGVlZFx1MDAzZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxMzowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODQzMQoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgdGhvdWdoIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzOgoKKipOYXZpZ2F0aW5nIHRoZSBOZXR3b3JrIERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgYW5kIG9wdGlvbnMgcmVsYXRlZCB0byBhIHNwZWNpZmljIG5ldHdvcmsgZHJpdmVyLCBsaWtlbHkgYSBQSFkgZHJpdmVyIGdpdmVuIHRoZSBjb250ZXh0LiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIHN0YXJ0IGF0IHRoZSB0b3AgbGV2ZWwgYW5kIHRyYWNlIGRvd24uIEkmIzM5O20gZ29pbmcgdG8ganVtcCBpbnRvIGBkcml2ZXJzL25ldC9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgb3ZlcmFyY2hpbmcgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBuZXR3b3JrIGRyaXZlcnMgYXJlIGxpa2VseSBkZWZpbmVkLiBUaGlzIHdpbGwgYmUgdGhlIHN0YXJ0aW5nIHBvaW50LiBJIGtub3cgdGhhdCBgZHJpdmVycy9uZXQvcGh5L0tjb25maWdgIGlzIGluY2x1ZGVkIGZyb20gaGVyZS4gQnkgaW5zcGVjdGluZyBgZHJpdmVycy9uZXQvS2NvbmZpZ2AsIEkgc2hvdWxkIGJlIGFibGUgdG8gc2VlIGV4YWN0bHkgKmhvdyogdGhlIFBIWSBjb25maWd1cmF0aW9uIGlzIGJyb3VnaHQgaW4sIGFuZCB3aGF0IGNvbmRpdGlvbnMgdHJpZ2dlciBpdHMgaW5jbHVzaW9uLiBUaGF0JiMzOTtzIHRoZSBiZXN0IGZpcnN0IHN0ZXAuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiBgZHJpdmVycy9uZXQvS2NvbmZpZ2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDEzOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9NTEyPXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9pcGEvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZy01MTMtXG5kcml2ZXJzL25ldC9LY29uZmlnOjUxNDpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvcGh5L0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWctNTE1LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxMzowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODc0MAoJCQkJCQkJb3V0cHV0OiAxMzkKCQkJCQkJCXRob3VnaHRzOiA3NTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBBbmFseXNpczogYHBoeV9kZXRhY2hgIGluIE5ldHdvcmtpbmcgQ29kZSoqCgpPa2F5LCBzbyBoZXJlJiMzOTtzIHRoZSBicmVha2Rvd24gb2YgbXkgdGhpbmtpbmcgcmVnYXJkaW5nIHRoaXMgcGF0Y2guIEZpcnN0LCBpdCYjMzk7cyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBgZHJpdmVycy9uZXQvS2NvbmZpZ2AgaXMgZ3VhcmRlZCBieSBgbWVudWNvbmZpZyBORVRERVZJQ0VTYCwgd2hpY2ggcmVsaWVzIG9uIGBORVRgLCBhbmQgYFBIWUxJQmAgZGVwZW5kcyBvbiBgTkVUREVWSUNFU2AsIHNvIHdlIGhhdmUgYSBjbGVhciBwYXRoIHRvIHRoZSBjb2RlLgoKTm93LCB0byB0aGUgZnV6emluZyBxdWVzdGlvbnMuCgoxLiAgKipJcyB0aGUgcGF0Y2ggcmVhY2hhYmxlPyoqIEFic29sdXRlbHkuIFRoZSBgcGh5X2RldGFjaGAgZnVuY3Rpb24gaXMgZGVmaW5pdGVseSByZWFjaGFibGUuIEl0JiMzOTtzIGNhbGxlZCB3aGVuIG5ldHdvcmsgZGV2aWNlcyB3aXRoIFBIWSBkZXZpY2VzIChsaWtlIFJlYWx0ZWsgTklDcywgVVNCIG5ldHdvcmsgYWRhcHRlcnMsIGFuZCBldmVuIGR1bW15IG9yIG1vY2sgbmV0d29yayBkZXZpY2VzKSBhcmUgb3BlbmVkIG9yIGNsb3NlZCwgdW5yZWdpc3RlcmVkLCBvciB3aGVuIGF0dGFjaCBmYWlscy4gQWxzbyB3aGVuIFBIWUxpbmsgZGlzY29ubmVjdHMsIHdoaWNoIGlzIGFuIGltcG9ydGFudCBwYXRoIHRvIGNvdmVyLgoKMi4gICoqSXMgaXQgd29ydGggZnV6emluZz8qKiBUaGlzIGlzIHdoZXJlIGl0IGdldHMgaW50ZXJlc3RpbmcuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBmb2xsb3dpbmcgY29yZSB0cmlhZ2UgcGhpbG9zb3BoeS4KCiAgICAqICAgVGhpcyBwYXRjaCBtb2RpZmllcyBhIGNydWNpYWwgZnVuY3Rpb24gYHBoeV9kZXRhY2goKWAgaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLgogICAgKiAgIFNwZWNpZmljYWxseSwgaXQgY2hhbmdlcyBob3cgd2UgaGFuZGxlIGFuIFJDVSBwb2ludGVyLCBgZGV2LSZndDtod3Byb3ZgLCBhZGRpbmcgYW4gUkNVIHByb3RlY3Rpb24gY2hlY2ssIHdoaWNoIGlzIGFuIGFzc2VydGlvbiBvciBsb2NrZGVwIGFzc2VydGlvbiBjaGFuZ2UuCiAgICAqICAgYHBoeV9kZXRhY2goKWAgaXMgY2FsbGVkIGJ5IG5ldHdvcmtpbmcgY29kZSBpbiByZWFjaGFibGUgZHJpdmVycyBhbmQgY29yZSBwaHlsaWIuCiAgICAqICAgVGhpcyBtb2RpZmllcyBhIGNyaXRpY2FsIGxvY2tkZXAgYXNzZXJ0aW9uIC8gcHJvdGVjdGlvbiwgc28gSSYjMzk7bSB0aGlua2luZyB0aGUgYW5zd2VyIHRvIHdvcnRoIGZ1enppbmcgc2hvdWxkIGJlIGB0cnVlYC4KCiAgICBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gYmVpbmcgdGhvcm91Z2ggYW5kIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBJIG5lZWQgdG8ga25vdzoKICAgICogYFdvcnRoRnV6emluZ2A6IGB0cnVlYAogICAgKiAgIGBGb2N1c1N5bWJvbHNgOiBJJiMzOTttIHplcm9pbmcgaW4gb24gYHBoeV9kZXRhY2hgLCBgcGh5X2Rpc2Nvbm5lY3RgLCBhbmQgYHBoeV9hdHRhY2hfZGlyZWN0YC4gVGhlc2UgYXJlIHRoZSBkaXJlY3QgY2FsbGVycyBvciBlbnRyeXBvaW50cyByZWxhdGVkIHRvIHRoZSBtb2RpZmllZCBmdW5jdGlvbi4KICAgICogICBgRW5hYmxlQ29uZmlnc2A6IEkmIzM5O3ZlIGdvdCBgTkVUREVWSUNFU2AgYW5kIGBQSFlMSUJgLCB3aGljaCBhcmUgYm90aCBuZWNlc3NhcnkuIEFuZCBvZiBjb3Vyc2UsIGBORVRgIGlzIGltcGxpZWQgYmVjYXVzZSBvZiB0aGUgZGVwZW5kZW5jeSBjaGFpbi4KCiAgICBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueSBvdGhlciBjb25maWcgcmVxdWlyZW1lbnRzOgogICAgKiAgIGBDT05GSUdfTkVUREVWSUNFUz15YAogICAgKiAgIGBDT05GSUdfUEhZTElCPXlgCiAgICAqICAgYChhbmQgcG9zc2libHkgYENPTkZJR19ORVQ9eWAsIGJ1dCBgTkVUREVWSUNFU2AgZGVwZW5kcyBvbiBgTkVUYCkuCgogICAgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBteSBmb2N1cyBzeW1ib2xzIG9uZSBsYXN0IHRpbWU6CiAgICAqICAgYHBoeV9kZXRhY2hgIGlzIHRoZSAqZXhhY3QqIGZ1bmN0aW9uIGJlaW5nIG1vZGlmaWVkLgogICAgKiAgIGBwaHlfZGlzY29ubmVjdGAgaXMgdGhlIG1haW4gZXhwb3J0ZWQgd3JhcHBlciBmdW5jdGlvbiBjYWxsZWQgYnkgZHJpdmVycyBkdXJpbmcgY2xlYW51cCwgJiMzOTtkb3duJiMzOTssIG9yICYjMzk7dW5iaW5kJiMzOTsgb3BlcmF0aW9ucy4KICAgICogICBgcGh5X2F0dGFjaF9kaXJlY3RgIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGF0dGFjaGVzIGFuZCBjYWxscyBgcGh5X2RldGFjaGAgb24gdGhlIGVycm9yIHBhdGguIFRoaXMgaXMgYSB2ZXJ5IGltcG9ydGFudCBwYXRoIHRvIGNvdmVyLgoKSSYjMzk7bSBjb25maWRlbnQgSSBoYXZlIGFsbCB0aGUga2V5IHBpZWNlcy4gRXZlcnl0aGluZyBpcyBsb29raW5nIGdvb2QsIHNvIGxldCYjMzk7cyBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDEzOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRERVZJQ0VTJiMzNDssCiAgICAmIzM0O1BIWUxJQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BoeV9kZXRhY2gmIzM0OywKICAgICYjMzQ7cGh5X2Rpc2Nvbm5lY3QmIzM0OywKICAgICYjMzQ7cGh5X2F0dGFjaF9kaXJlY3QmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvY2tkZXAvUkNVIHByb3RlY3Rpb24gYXNzZXJ0aW9uIG9uIGRldi1cdTAwM2Vod3Byb3Ygd2l0aGluIHBoeV9kZXRhY2goKSB0byBhdm9pZCBmYWxzZSBwb3NpdGl2ZSBsb2NrZGVwIHdhcm5pbmdzIHdoZW4gY2xlYW5pbmcgdXAgb24gcHJvYmUgZmFpbHVyZSBiZWZvcmUgbmV0X2RldmljZSByZWdpc3RyYXRpb24uIHBoeV9kZXRhY2goKSBhbmQgaXRzIGNhbGxlcnMgKHN1Y2ggYXMgcGh5X2Rpc2Nvbm5lY3QoKSBhbmQgcGh5X2F0dGFjaF9kaXJlY3QoKSkgYXJlIHJlYWNoYWJsZSB0aHJvdWdoIG5ldHdvcmsgZGV2aWNlIGxpZmVjeWNsZSBhbmQgbmV0bGluay9zb2NrZXQgY29uZmlndXJhdGlvbiBvcGVyYXRpb25zIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUREVWSUNFUyYjMzQ7LAogICAgJiMzNDtQSFlMSUImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwaHlfZGV0YWNoJiMzNDssCiAgICAmIzM0O3BoeV9kaXNjb25uZWN0JiMzNDssCiAgICAmIzM0O3BoeV9hdHRhY2hfZGlyZWN0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NrZGVwL1JDVSBwcm90ZWN0aW9uIGFzc2VydGlvbiBvbiBkZXYtXHUwMDNlaHdwcm92IHdpdGhpbiBwaHlfZGV0YWNoKCkgdG8gYXZvaWQgZmFsc2UgcG9zaXRpdmUgbG9ja2RlcCB3YXJuaW5ncyB3aGVuIGNsZWFuaW5nIHVwIG9uIHByb2JlIGZhaWx1cmUgYmVmb3JlIG5ldF9kZXZpY2UgcmVnaXN0cmF0aW9uLiBwaHlfZGV0YWNoKCkgYW5kIGl0cyBjYWxsZXJzIChzdWNoIGFzIHBoeV9kaXNjb25uZWN0KCkgYW5kIHBoeV9hdHRhY2hfZGlyZWN0KCkpIGFyZSByZWFjaGFibGUgdGhyb3VnaCBuZXR3b3JrIGRldmljZSBsaWZlY3ljbGUgYW5kIG5ldGxpbmsvc29ja2V0IGNvbmZpZ3VyYXRpb24gb3BlcmF0aW9ucyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDEzOjA1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTM6MDU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBhbiBSQ1UgbG9ja2RlcCBjaGVjayBpbiBgcGh5X2RldGFjaCgpYCBieSByZXBsYWNpbmcgYHJ0bmxfZGVyZWZlcmVuY2UoZGV2LVx1MDAzZWh3cHJvdilgIHdpdGggYHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoZGV2LVx1MDAzZWh3cHJvdiwgbG9ja2RlcF9ydG5sX2lzX2hlbGQoKSB8fCBkZXYtXHUwMDNlcmVnX3N0YXRlICE9IE5FVFJFR19SRUdJU1RFUkVEKWAgdG8gcHJldmVudCBsb2NrZGVwIHdhcm5pbmdzIGR1cmluZyBlYXJseSBwcm9iZSBlcnJvciBjbGVhbnVwIHdoZW4gUlROTCBpcyBub3QgaGVsZC5cblxuVGhpcyBjaGFuZ2UgaXMgcHVyZWx5IGEgbG9ja2RlcCBhc3NlcnRpb24gYWRqdXN0bWVudCBpbiBSQ1UgcG9pbnRlciBkZXJlZmVyZW5jaW5nLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGFsbG9jYXRpb25zLCBkYXRhIGNvcGllcyB0byB1c2Vyc3BhY2UsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLiBTdGFuZGFyZCBLQVNBTi9MT0NLREVQIGJ1aWxkcyBhcmUgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgbG9ja2luZyBvciBtZW1vcnkgc2FmZXR5IGlzc3VlcyBoZXJlLCBhbmQgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSByZXF1aXJpbmcgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTBmMmE2MDQ0NDhlY2FkNWI1NGZlYmMwYmY1M2MxMDZkODdmZTU0NApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgU2VwIDggMTM6MDU6MDIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYwppbmRleCA5NGIyZTg1ZTAwYTM3Li5hYzA5OTQzZTEwMGZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMKQEAgLTE5MzksOSAmIzQzOzE5MzksMTMgQEAgdm9pZCBwaHlfZGV0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiAJCXN0cnVjdCBod3RzdGFtcF9wcm92aWRlciAqaHdwcm92OwogCiAJCS8qIGh3cHJvdiBtYXkgdGVjaG5pY2FsbHkgYmUgcHJvdGVjdGVkIGJ5IG9wcyBsb2NrIGJ1dAotCQkgKiBub3QgZm9yIGRldmljZXMgd2l0aCBhIHBoeWRldiwgc2VlIHBoeV9saW5rX3RvcG9fYWRkX3BoeSgpCiYjNDM7CQkgKiBub3QgZm9yIGRldmljZXMgd2l0aCBhIHBoeWRldiwgc2VlIHBoeV9saW5rX3RvcG9fYWRkX3BoeSgpLgomIzQzOwkJICogUlROTCBpcyBub3QgaGVsZCB3aGVuIGNsZWFuaW5nIHVwIG9uIHByb2JlIGZhaWx1cmUgYmVmb3JlCiYjNDM7CQkgKiBkZXZpY2UgcmVnaXN0cmF0aW9uLgogCQkgKi8KLQkJaHdwcm92ID0gcnRubF9kZXJlZmVyZW5jZShkZXYtJmd0O2h3cHJvdik7CiYjNDM7CQlod3Byb3YgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGRldi0mZ3Q7aHdwcm92LAomIzQzOwkJCQkJCSAgIGxvY2tkZXBfcnRubF9pc19oZWxkKCkgfHwKJiM0MzsJCQkJCQkgICBkZXYtJmd0O3JlZ19zdGF0ZSAhPSBORVRSRUdfUkVHSVNURVJFRCk7CiAJCS8qIERpc2FibGUgdGltZXN0YW1wIGlmIGl0IGlzIHRoZSBvbmUgc2VsZWN0ZWQgKi8KIAkJaWYgKGh3cHJvdiAmYW1wOyZhbXA7IGh3cHJvdi0mZ3Q7cGh5ZGV2ID09IHBoeWRldikgewogCQkJcmN1X2Fzc2lnbl9wb2ludGVyKGRldi0mZ3Q7aHdwcm92LCBOVUxMKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDEzOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMTMKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzOTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQSFkgRGV0YWNobWVudCBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kICp3aHkqIHRoaXMgY2hhbmdlIGlzIG5lY2Vzc2FyeSB3aXRoaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBgcGh5X2RldGFjaGAgZnVuY3Rpb24uIFRoZSBkaWZmIGhpZ2hsaWdodHMgYSBtb2RpZmljYXRpb24gcmVsYXRlZCB0byBoYXJkd2FyZSB0aW1lc3RhbXBpbmcgKGBod3Byb3ZgKSBhbmQgaXRzIGludGVyYWN0aW9uIHdpdGggYHBoeWRldmAuIEkga25vdyB0aGF0IGBwaHlfZGV0YWNoYCBpcyByZXNwb25zaWJsZSBmb3IgY2xlYW5pbmcgdXAgYW5kIHJlbGVhc2luZyByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIGEgUEhZIGRldmljZS4KCkxvb2tpbmcgYXQgdGhlIGNvZGUsIGl0IHNlZW1zIHRoZSBjb3JlIGlzc3VlIGlzIHJlbGF0ZWQgdG8gdGhlIHByb3RlY3Rpb24gb2YgYGRldi0mZ3Q7aHdwcm92YC4gVGhlIGNvbW1lbnQgcG9pbnRzIG91dCBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbi4gIFRoZSBjb21tZW50IG1lbnRpb25zICYjMzQ7ZGV2aWNlcyB3aXRoIGEgcGh5ZGV2JiMzNDsg4oCTIHRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgbXkgYXR0ZW50aW9uIGJlY2F1c2UgSSBuZWVkIHRvIGNvbnNpZGVyIGFsbCB0aGUgY2FzZXMuIEl0IGFsc28gZXhwbGljaXRseSBtZW50aW9ucyB0aGF0IFJUTkwgaXMgKm5vdCogaGVsZCBkdXJpbmcgY2xlYW51cCBpbiBwcm9iZSBmYWlsdXJlIGJlZm9yZSByZWdpc3RyYXRpb24g4oCTIHRoaXMgY29udGV4dCBpcyBrZXksIGFuZCBJIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucy4KClRoZSBvcmlnaW5hbCBjb2RlIHVzZWQgYHJ0bmxfZGVyZWZlcmVuY2UoZGV2LSZndDtod3Byb3YpYC4gTm93LCBpdCB1c2VzIGByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKClgLiBUaGlzIGluZGljYXRlcyBhIHNoaWZ0IHRvIFJDVSBwcm90ZWN0aW9uLCB3aGljaCBpcyB0aGUgY29ycmVjdCBhcHByb2FjaCBoZXJlLiBUaGUgc2Vjb25kIGFyZ3VtZW50IHRvIGByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkYCBzcGVjaWZpZXMgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhlIGFjY2VzcyBpcyBzYWZlLiBJJiMzOTttIHNlZWluZyB0aGF0IHRoZSBhY2Nlc3MgaXMgc2FmZSBpZiBlaXRoZXI6IDEpIFJUTkwgaXMgaGVsZCwgb3IgMikgdGhlIGRldmljZSBpc24mIzM5O3QgcmVnaXN0ZXJlZCB5ZXQgKGBkZXYtJmd0O3JlZ19zdGF0ZSAhPSBORVRSRUdfUkVHSVNURVJFRGApLiBJIHVuZGVyc3RhbmQgdGhpcyBsb2dpYyDigJMgUkNVIGd1YXJhbnRlZXMgdGhhdCByZWFkcyBhcmUgc2FmZSBpZiBlaXRoZXIgYW4gUlROTCByZWFkIGxvY2sgaXMgaGVsZCwgb3IgaWYgdGhlIGRldmljZSBpcyB1bnJlZ2lzdGVyZWQuCgpUaGVyZWZvcmUsIHRoZSBwYXRjaCBpcyBtYWtpbmcgdGhlIGNvZGUgc2FmZXIgYW5kIG1vcmUgcm9idXN0LiBUaGlzIGlzIGEgZ29vZCBpbXByb3ZlbWVudCwgc3BlY2lmaWNhbGx5IGF2b2lkaW5nIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkYXRhIGNvcnJ1cHRpb24gaXNzdWVzIGR1cmluZyBQSFkgZGV0YWNobWVudCwgZXNwZWNpYWxseSBpbiB0aGUgY29udGV4dCBvZiBwcm9iZSBmYWlsdXJlcyBiZWZvcmUgcmVnaXN0cmF0aW9uLCB3aGVyZSBSVE5MIGlzbiYjMzk7dCBoZWxkLCBhbmQgdGhlIGRldmljZSBpcyBiZWluZyBkZS1yZWdpc3RlcmVkLiBJIGFwcHJvdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDEzOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE5MjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTkyNTpcdFx0fVxuMTkyNjpcdFxuMTkyNzpcdFx0aWYgKHBoeWRldi1cdTAwM2VzeXNmc19saW5rcykge1xuMTkyODpcdFx0XHRpZiAoZGV2KVxuMTkyOTpcdFx0XHRcdHN5c2ZzX3JlbW92ZV9saW5rKFx1MDAyNmRldi1cdTAwM2VkZXYua29iaiwgXCYjMzQ7cGh5ZGV2XCYjMzQ7KTtcbjE5MzA6XHRcdFx0c3lzZnNfcmVtb3ZlX2xpbmsoXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2LmtvYmosIFwmIzM0O2F0dGFjaGVkX2RldlwmIzM0Oyk7XG4xOTMxOlx0XHR9XG4xOTMyOlx0XG4xOTMzOlx0XHRpZiAoIXBoeWRldi1cdTAwM2VhdHRhY2hlZF9kZXYpXG4xOTM0Olx0XHRcdHN5c2ZzX3JlbW92ZV9maWxlKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldi5rb2JqLFxuMTkzNTpcdFx0XHRcdFx0ICBcdTAwMjZkZXZfYXR0cl9waHlfc3RhbmRhbG9uZS5hdHRyKTtcbjE5MzY6XHRcbjE5Mzc6XHRcdHBoeV9zdXNwZW5kKHBoeWRldik7XG4xOTM4Olx0XHRpZiAoZGV2KSB7XG4xOTM5Olx0XHRcdHN0cnVjdCBod3RzdGFtcF9wcm92aWRlciAqaHdwcm92O1xuMTk0MDpcdFxuMTk0MTpcdFx0XHQvKiBod3Byb3YgbWF5IHRlY2huaWNhbGx5IGJlIHByb3RlY3RlZCBieSBvcHMgbG9jayBidXRcbjE5NDI6XHRcdFx0ICogbm90IGZvciBkZXZpY2VzIHdpdGggYSBwaHlkZXYsIHNlZSBwaHlfbGlua190b3BvX2FkZF9waHkoKS5cbjE5NDM6XHRcdFx0ICogUlROTCBpcyBub3QgaGVsZCB3aGVuIGNsZWFuaW5nIHVwIG9uIHByb2JlIGZhaWx1cmUgYmVmb3JlXG4xOTQ0Olx0XHRcdCAqIGRldmljZSByZWdpc3RyYXRpb24uXG4xOTQ1Olx0XHRcdCAqL1xuMTk0NjpcdFx0XHRod3Byb3YgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGRldi1cdTAwM2Vod3Byb3YsXG4xOTQ3Olx0XHRcdFx0XHRcdFx0ICAgbG9ja2RlcF9ydG5sX2lzX2hlbGQoKSB8fFxuMTk0ODpcdFx0XHRcdFx0XHRcdCAgIGRldi1cdTAwM2VyZWdfc3RhdGUgIT0gTkVUUkVHX1JFR0lTVEVSRUQpO1xuMTk0OTpcdFx0XHQvKiBEaXNhYmxlIHRpbWVzdGFtcCBpZiBpdCBpcyB0aGUgb25lIHNlbGVjdGVkICovXG4xOTUwOlx0XHRcdGlmIChod3Byb3YgXHUwMDI2XHUwMDI2IGh3cHJvdi1cdTAwM2VwaHlkZXYgPT0gcGh5ZGV2KSB7XG4xOTUxOlx0XHRcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKGRldi1cdTAwM2Vod3Byb3YsIE5VTEwpO1xuMTk1MjpcdFx0XHRcdGtmcmVlX3JjdShod3Byb3YsIHJjdV9oZWFkKTtcbjE5NTM6XHRcdFx0fVxuMTk1NDpcdFxuMTk1NTpcdFx0XHRwaHlkZXYtXHUwMDNlYXR0YWNoZWRfZGV2LVx1MDAzZXBoeWRldiA9IE5VTEw7XG4xOTU2Olx0XHRcdHBoeWRldi1cdTAwM2VhdHRhY2hlZF9kZXYgPSBOVUxMO1xuMTk1NzpcdFx0XHRwaHlfbGlua190b3BvX2RlbF9waHkoZGV2LCBwaHlkZXYpO1xuMTk1ODpcdFx0fVxuMTk1OTpcdFxuMTk2MDpcdFx0cGh5ZGV2LVx1MDAzZXBoeV9saW5rX2NoYW5nZSA9IE5VTEw7XG4xOTYxOlx0XHRwaHlkZXYtXHUwMDNlcGh5bGluayA9IE5VTEw7XG4xOTYyOlx0XG4xOTYzOlx0XHRpZiAocGh5ZGV2LVx1MDAzZW1kaW8uZGV2LmRyaXZlcilcbjE5NjQ6XHRcdFx0bW9kdWxlX3B1dChwaHlkZXYtXHUwMDNlbWRpby5kZXYuZHJpdmVyLVx1MDAzZW93bmVyKTtcbjE5NjU6XHRcbjE5NjY6XHRcdC8qIElmIHRoZSBkZXZpY2UgaGFkIG5vIHNwZWNpZmljIGRyaXZlciBiZWZvcmUgKGkuZS4gLSBpdFxuMTk2NzpcdFx0ICogd2FzIHVzaW5nIHRoZSBnZW5lcmljIGRyaXZlciksIHdlIHVuYmluZCB0aGUgZGV2aWNlXG4xOTY4Olx0XHQgKiBmcm9tIHRoZSBnZW5lcmljIGRyaXZlciBzbyB0aGF0IHRoZXJlJiMzOTtzIGEgY2hhbmNlIGFcbjE5Njk6XHRcdCAqIHJlYWwgZHJpdmVyIGNvdWxkIGJlIGxvYWRlZFxuMTk3MDpcdFx0ICovXG4xOTcxOlx0XHRpZiAocGh5ZGV2LVx1MDAzZWlzX2dlbnBoeV9kcml2ZW4pIHtcbjE5NzI6XHRcdFx0ZGV2aWNlX3JlbGVhc2VfZHJpdmVyKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldik7XG4xOTczOlx0XHRcdHBoeWRldi1cdTAwM2Vpc19nZW5waHlfZHJpdmVuID0gMDtcbjE5NzQ6XHRcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTM6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg0NgoJCQkJCQkJb3V0cHV0OiAxODYKCQkJCQkJCXRob3VnaHRzOiA0NjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTG9ja2RlcCBBc3NlcnRpb24gQWRqdXN0bWVudCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIGNoYW5nZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBtb2RpZmljYXRpb24gdG8gaG93IGBod3Byb3ZgIGlzIGFjY2Vzc2VkLiBQcmV2aW91c2x5LCB3ZSB3ZXJlIHVzaW5nIGBydG5sX2RlcmVmZXJlbmNlYCwgd2hpY2ggdHJhbnNsYXRlcyB0byBgcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZGAgd2l0aCBhIHNwZWNpZmljIGxvY2tkZXAgY29uZGl0aW9uIOKAkyB0aGF0IHRoZSBSVE5MIGxvY2sgaXMgaGVsZC4gVGhlIHByb2JsZW0/IEl0IHNlZW1zIHRoYXQgaW4gY2VydGFpbiBwcm9iZSBjbGVhbnVwIHNjZW5hcmlvcywgc3BlY2lmaWNhbGx5ICpiZWZvcmUqIHRoZSBuZXR3b3JrIGRldmljZSBpcyBmdWxseSByZWdpc3RlcmVkIChgZGV2LSZndDtyZWdfc3RhdGUgIT0gTkVUUkVHX1JFR0lTVEVSRURgKSwgdGhlIFJUTkwgbG9jayBtaWdodCBub3QgYmUgaGVsZCB3aGVuIGBwaHlfZGV0YWNoYCBpcyBjYWxsZWQuIFRoaXMgdHJpZ2dlcnMgYSBsb2NrZGVwIHdhcm5pbmcsIGEgJiMzNDtzdXNwaWNpb3VzIFJDVSB1c2FnZSYjMzQ7IG1lc3NhZ2UsIHdoaWNoIGlzbiYjMzk7dCBpZGVhbC4KClRoZSBwcm9wb3NlZCBzb2x1dGlvbj8gVG8gYWRqdXN0IHRoZSBsb2NrZGVwIGFzc2VydGlvbiB3aXRoaW4gYHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWRgLiBUaGUgY2hhbmdlIGlzIGVzc2VudGlhbGx5IGV4dGVuZGluZyB0aGUgcHJvdGVjdGlvbiBjb25kaXRpb24gdG8gaW5jbHVkZSB0aGUgcmVnaXN0cmF0aW9uIHN0YXRlIGNoZWNrOiBub3csIGByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkYCB3aWxsIGNvbnNpZGVyIGVpdGhlciB0aGUgUlROTCBsb2NrIGJlaW5nIGhlbGQgKm9yKiB0aGUgZGV2aWNlICpub3QqIGJlaW5nIHJlZ2lzdGVyZWQgYXMgYWNjZXB0YWJsZS4gVGhpcyBsb29rcyBsaWtlIGEgcHVyZWx5IGRlZmVuc2l2ZSBjaGFuZ2UgZm9yIHRoZSBsb2NrZGVwLCB3aGljaCBuZWVkcyB0byBiZSBjYXJlZnVsbHkgYXNzZXNzZWQuCgpOZXh0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5LXJlbGF0ZWQgaXNzdWVzLiBJcyB0aGVyZSBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrIGhlcmU/IEkmIzM5O20gdGhpbmtpbmcuLi4gbm8uIFRoZXJlJiMzOTtzIG5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbiwgbm8gY29weWluZyBkYXRhIHRvIHVzZXIgc3BhY2UgdGhhdCBjb3VsZCBsZWFkIHRvIGxlYWtzLCBubyBuZXcgZmllbGRzIGludHJvZHVjZWQsIGFuZCBjcnVjaWFsbHksIG5vIGNoYW5nZXMgdG8gaW5pdGlhbGl6YXRpb24gcGF0aHMuIEZ1cnRoZXJtb3JlLCB0aGVyZSYjMzk7cyBubyB1dGlsaXphdGlvbiBvZiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBpbiBjb25kaXRpb25zIG9yIGFyaXRobWV0aWMuIFRoZSBvbmx5IHRoaW5nIG1vZGlmaWVkIGlzIHRoZSBsb2NrZGVwIGFzc2VydGlvbiBpbiBgcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZGAuIFRoYXQmIzM5O3MgaW1wb3J0YW50LgoKSSB0aGVuIHBpdm90IHRvIGNvbnNpZGVyIEtNU0FOIGFuZCBLQVNBTi4gS0FTQU4gYW5kIExPQ0tERVAgdGFrZSBjYXJlIG9mIG1lbW9yeSBidWdzIGFuZCBsb2NrZGVwIGlzc3Vlcy4gS01TQU4gaXMgdGhlIGtleSBoZXJlLCBsb29raW5nIGZvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcy4gU2luY2UgdGhlIGNoYW5nZSBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgY29waWVzIHRvIHVzZXJzcGFjZSBvciBuZXcgZmllbGRzL3ZhcmlhYmxlcywgdGhlcmUmIzM5O3Mgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeS4gR2l2ZW4gdGhhdCwgYE5lZWRzS01TQU5gIHNob3VsZCBiZSBgZmFsc2VgLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCYjMzk7cyByZXZpZXcgYWxsIHRoZSBjb21wb25lbnRzLiBEb2VzIHRoZSB1c2Ugb2YgYGRldi0mZ3Q7cmVnX3N0YXRlYCBwb3NlIGEgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeT8gTm8sIGJlY2F1c2UgYHN0cnVjdCBuZXRfZGV2aWNlYCBhbGxvY2F0ZXMgYW5kIHNldHMgYHJlZ19zdGF0ZWAgZHVyaW5nIGluaXRpYWxpemF0aW9uLiBBbmQgd2hhdCBhYm91dCBgZGV2LSZndDtod3Byb3ZgPyBBZ2Fpbiwgbm8uIFRoZSBwYXRjaCBpcywgZXNzZW50aWFsbHksIHNpbGVuY2luZyBhIGxvY2tkZXAgd2FybmluZyB0aGF0IGFwcGVhcnMgZHVyaW5nIHByb2JlIGZhaWx1cmUgY2xlYW51cCwgKmJlZm9yZSogdGhlIGRldmljZSBpcyByZWdpc3RlcmVkLiBJdCYjMzk7cyBqdXN0IGEgZGVmZW5zaXZlIGFkanVzdG1lbnQgdG8gdGhlIGxvY2tkZXAgY29uZGl0aW9uIHRvIGF2b2lkIHRob3NlIHNwdXJpb3VzIHdhcm5pbmdzLiBOb3csIGxldCYjMzk7cyBjYWxsIHRoZSBgc2V0LXJlc3VsdHNgIHRvb2wgYW5kIG1vdmUgZm9yd2FyZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTM6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYW4gUkNVIGxvY2tkZXAgY2hlY2sgaW4gYHBoeV9kZXRhY2goKWAgYnkgcmVwbGFjaW5nIGBydG5sX2RlcmVmZXJlbmNlKGRldi1cdTAwM2Vod3Byb3YpYCB3aXRoIGByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGRldi1cdTAwM2Vod3Byb3YsIGxvY2tkZXBfcnRubF9pc19oZWxkKCkgfHwgZGV2LVx1MDAzZXJlZ19zdGF0ZSAhPSBORVRSRUdfUkVHSVNURVJFRClgIHRvIHByZXZlbnQgbG9ja2RlcCB3YXJuaW5ncyBkdXJpbmcgZWFybHkgcHJvYmUgZXJyb3IgY2xlYW51cCB3aGVuIFJUTkwgaXMgbm90IGhlbGQuXG5cblRoaXMgY2hhbmdlIGlzIHB1cmVseSBhIGxvY2tkZXAgYXNzZXJ0aW9uIGFkanVzdG1lbnQgaW4gUkNVIHBvaW50ZXIgZGVyZWZlcmVuY2luZy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG5ldyBhbGxvY2F0aW9ucywgZGF0YSBjb3BpZXMgdG8gdXNlcnNwYWNlLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gU3RhbmRhcmQgS0FTQU4vTE9DS0RFUCBidWlsZHMgYXJlIHN1ZmZpY2llbnQgdG8gY2F0Y2ggYW55IGxvY2tpbmcgb3IgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgaGVyZSwgYW5kIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UgcmVxdWlyaW5nIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGFuIFJDVSBsb2NrZGVwIGNoZWNrIGluIGBwaHlfZGV0YWNoKClgIGJ5IHJlcGxhY2luZyBgcnRubF9kZXJlZmVyZW5jZShkZXYtXHUwMDNlaHdwcm92KWAgd2l0aCBgcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChkZXYtXHUwMDNlaHdwcm92LCBsb2NrZGVwX3J0bmxfaXNfaGVsZCgpIHx8IGRldi1cdTAwM2VyZWdfc3RhdGUgIT0gTkVUUkVHX1JFR0lTVEVSRUQpYCB0byBwcmV2ZW50IGxvY2tkZXAgd2FybmluZ3MgZHVyaW5nIGVhcmx5IHByb2JlIGVycm9yIGNsZWFudXAgd2hlbiBSVE5MIGlzIG5vdCBoZWxkLlxuXG5UaGlzIGNoYW5nZSBpcyBwdXJlbHkgYSBsb2NrZGVwIGFzc2VydGlvbiBhZGp1c3RtZW50IGluIFJDVSBwb2ludGVyIGRlcmVmZXJlbmNpbmcuIEl0IGRvZXMgbm90IGludHJvZHVjZSBuZXcgYWxsb2NhdGlvbnMsIGRhdGEgY29waWVzIHRvIHVzZXJzcGFjZSwgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIFN0YW5kYXJkIEtBU0FOL0xPQ0tERVAgYnVpbGRzIGFyZSBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSBsb2NraW5nIG9yIG1lbW9yeSBzYWZldHkgaXNzdWVzIGhlcmUsIGFuZCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIHJlcXVpcmluZyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDEzOjA1OjAzLjM5NTM1MDc0M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxNjY1MTUxNDU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVERFVklDRVNcIixcbiAgICBcIlBIWUxJQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBoeV9kZXRhY2hcIixcbiAgICBcInBoeV9kaXNjb25uZWN0XCIsXG4gICAgXCJwaHlfYXR0YWNoX2RpcmVjdFwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYW4gUkNVIGxvY2tkZXAgY2hlY2sgaW4gYHBoeV9kZXRhY2goKWAgYnkgcmVwbGFjaW5nIGBydG5sX2RlcmVmZXJlbmNlKGRldi1cXHUwMDNlaHdwcm92KWAgd2l0aCBgcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChkZXYtXFx1MDAzZWh3cHJvdiwgbG9ja2RlcF9ydG5sX2lzX2hlbGQoKSB8fCBkZXYtXFx1MDAzZXJlZ19zdGF0ZSAhPSBORVRSRUdfUkVHSVNURVJFRClgIHRvIHByZXZlbnQgbG9ja2RlcCB3YXJuaW5ncyBkdXJpbmcgZWFybHkgcHJvYmUgZXJyb3IgY2xlYW51cCB3aGVuIFJUTkwgaXMgbm90IGhlbGQuXFxuXFxuVGhpcyBjaGFuZ2UgaXMgcHVyZWx5IGEgbG9ja2RlcCBhc3NlcnRpb24gYWRqdXN0bWVudCBpbiBSQ1UgcG9pbnRlciBkZXJlZmVyZW5jaW5nLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGFsbG9jYXRpb25zLCBkYXRhIGNvcGllcyB0byB1c2Vyc3BhY2UsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLiBTdGFuZGFyZCBLQVNBTi9MT0NLREVQIGJ1aWxkcyBhcmUgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgbG9ja2luZyBvciBtZW1vcnkgc2FmZXR5IGlzc3VlcyBoZXJlLCBhbmQgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSByZXF1aXJpbmcgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NrZGVwL1JDVSBwcm90ZWN0aW9uIGFzc2VydGlvbiBvbiBkZXYtXFx1MDAzZWh3cHJvdiB3aXRoaW4gcGh5X2RldGFjaCgpIHRvIGF2b2lkIGZhbHNlIHBvc2l0aXZlIGxvY2tkZXAgd2FybmluZ3Mgd2hlbiBjbGVhbmluZyB1cCBvbiBwcm9iZSBmYWlsdXJlIGJlZm9yZSBuZXRfZGV2aWNlIHJlZ2lzdHJhdGlvbi4gcGh5X2RldGFjaCgpIGFuZCBpdHMgY2FsbGVycyAoc3VjaCBhcyBwaHlfZGlzY29ubmVjdCgpIGFuZCBwaHlfYXR0YWNoX2RpcmVjdCgpKSBhcmUgcmVhY2hhYmxlIHRocm91Z2ggbmV0d29yayBkZXZpY2UgbGlmZWN5Y2xlIGFuZCBuZXRsaW5rL3NvY2tldCBjb25maWd1cmF0aW9uIG9wZXJhdGlvbnMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxMzowNTowMy4zOTUzNTYxODNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczMTY5ODgxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGEwZjJhNjA0NDQ4ZWNhZDViNTRmZWJjMGJmNTNjMTA2ZDg3ZmU1NDRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBTZXAgOCAxMzowNTowMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xcbmluZGV4IDk0YjJlODVlMDBhMzcuLmFjMDk5NDNlMTAwZmIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcXG5AQCAtMTkzOSw5ICsxOTM5LDEzIEBAIHZvaWQgcGh5X2RldGFjaChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiBcXHRcXHRzdHJ1Y3QgaHd0c3RhbXBfcHJvdmlkZXIgKmh3cHJvdjtcXG4gXFxuIFxcdFxcdC8qIGh3cHJvdiBtYXkgdGVjaG5pY2FsbHkgYmUgcHJvdGVjdGVkIGJ5IG9wcyBsb2NrIGJ1dFxcbi1cXHRcXHQgKiBub3QgZm9yIGRldmljZXMgd2l0aCBhIHBoeWRldiwgc2VlIHBoeV9saW5rX3RvcG9fYWRkX3BoeSgpXFxuK1xcdFxcdCAqIG5vdCBmb3IgZGV2aWNlcyB3aXRoIGEgcGh5ZGV2LCBzZWUgcGh5X2xpbmtfdG9wb19hZGRfcGh5KCkuXFxuK1xcdFxcdCAqIFJUTkwgaXMgbm90IGhlbGQgd2hlbiBjbGVhbmluZyB1cCBvbiBwcm9iZSBmYWlsdXJlIGJlZm9yZVxcbitcXHRcXHQgKiBkZXZpY2UgcmVnaXN0cmF0aW9uLlxcbiBcXHRcXHQgKi9cXG4tXFx0XFx0aHdwcm92ID0gcnRubF9kZXJlZmVyZW5jZShkZXYtXFx1MDAzZWh3cHJvdik7XFxuK1xcdFxcdGh3cHJvdiA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoZGV2LVxcdTAwM2Vod3Byb3YsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgIGxvY2tkZXBfcnRubF9pc19oZWxkKCkgfHxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgZGV2LVxcdTAwM2VyZWdfc3RhdGUgIT0gTkVUUkVHX1JFR0lTVEVSRUQpO1xcbiBcXHRcXHQvKiBEaXNhYmxlIHRpbWVzdGFtcCBpZiBpdCBpcyB0aGUgb25lIHNlbGVjdGVkICovXFxuIFxcdFxcdGlmIChod3Byb3YgXFx1MDAyNlxcdTAwMjYgaHdwcm92LVxcdTAwM2VwaHlkZXYgPT0gcGh5ZGV2KSB7XFxuIFxcdFxcdFxcdHJjdV9hc3NpZ25fcG9pbnRlcihkZXYtXFx1MDAzZWh3cHJvdiwgTlVMTCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDEzOjA1OjA0LjEyNzc1Njk2NFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NDY3MDM0NjAxMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUREVWSUNFU1wiLFxuICAgIFwiUEhZTElCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGh5X2RldGFjaFwiLFxuICAgIFwicGh5X2Rpc2Nvbm5lY3RcIixcbiAgICBcInBoeV9hdHRhY2hfZGlyZWN0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvY2tkZXAvUkNVIHByb3RlY3Rpb24gYXNzZXJ0aW9uIG9uIGRldi1cXHUwMDNlaHdwcm92IHdpdGhpbiBwaHlfZGV0YWNoKCkgdG8gYXZvaWQgZmFsc2UgcG9zaXRpdmUgbG9ja2RlcCB3YXJuaW5ncyB3aGVuIGNsZWFuaW5nIHVwIG9uIHByb2JlIGZhaWx1cmUgYmVmb3JlIG5ldF9kZXZpY2UgcmVnaXN0cmF0aW9uLiBwaHlfZGV0YWNoKCkgYW5kIGl0cyBjYWxsZXJzIChzdWNoIGFzIHBoeV9kaXNjb25uZWN0KCkgYW5kIHBoeV9hdHRhY2hfZGlyZWN0KCkpIGFyZSByZWFjaGFibGUgdGhyb3VnaCBuZXR3b3JrIGRldmljZSBsaWZlY3ljbGUgYW5kIG5ldGxpbmsvc29ja2V0IGNvbmZpZ3VyYXRpb24gb3BlcmF0aW9ucyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTBmMmE2MDQ0NDhlY2FkNWI1NGZlYmMwYmY1M2MxMDZkODdmZTU0NFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDggMTM6MDU6MDIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuaW5kZXggOTRiMmU4NWUwMGEzNy4uYWMwOTk0M2UxMDBmYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbkBAIC0xOTM5LDkgKzE5MzksMTMgQEAgdm9pZCBwaHlfZGV0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRcdHN0cnVjdCBod3RzdGFtcF9wcm92aWRlciAqaHdwcm92O1xuIFxuIFx0XHQvKiBod3Byb3YgbWF5IHRlY2huaWNhbGx5IGJlIHByb3RlY3RlZCBieSBvcHMgbG9jayBidXRcbi1cdFx0ICogbm90IGZvciBkZXZpY2VzIHdpdGggYSBwaHlkZXYsIHNlZSBwaHlfbGlua190b3BvX2FkZF9waHkoKVxuK1x0XHQgKiBub3QgZm9yIGRldmljZXMgd2l0aCBhIHBoeWRldiwgc2VlIHBoeV9saW5rX3RvcG9fYWRkX3BoeSgpLlxuK1x0XHQgKiBSVE5MIGlzIG5vdCBoZWxkIHdoZW4gY2xlYW5pbmcgdXAgb24gcHJvYmUgZmFpbHVyZSBiZWZvcmVcbitcdFx0ICogZGV2aWNlIHJlZ2lzdHJhdGlvbi5cbiBcdFx0ICovXG4tXHRcdGh3cHJvdiA9IHJ0bmxfZGVyZWZlcmVuY2UoZGV2LVx1MDAzZWh3cHJvdik7XG4rXHRcdGh3cHJvdiA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoZGV2LVx1MDAzZWh3cHJvdixcbitcdFx0XHRcdFx0XHQgICBsb2NrZGVwX3J0bmxfaXNfaGVsZCgpIHx8XG4rXHRcdFx0XHRcdFx0ICAgZGV2LVx1MDAzZXJlZ19zdGF0ZSAhPSBORVRSRUdfUkVHSVNURVJFRCk7XG4gXHRcdC8qIERpc2FibGUgdGltZXN0YW1wIGlmIGl0IGlzIHRoZSBvbmUgc2VsZWN0ZWQgKi9cbiBcdFx0aWYgKGh3cHJvdiBcdTAwMjZcdTAwMjYgaHdwcm92LVx1MDAzZXBoeWRldiA9PSBwaHlkZXYpIHtcbiBcdFx0XHRyY3VfYXNzaWduX3BvaW50ZXIoZGV2LVx1MDAzZWh3cHJvdiwgTlVMTCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxMzowNTowNC4xMjc3NTgzMzRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2ODA0NDU1MDQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBIWSBEZXZpY2UgRGV0YWNobWVudCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29tbWl0IHJlbGF0ZWQgdG8gYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBwaHlfZGV0YWNoYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRpdmUgaW50byB0aGUgY29kZSBhbmQgdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIGhlcmUgd2l0aCB0aGUgaGFyZHdhcmUgdGltZXN0YW1wIHByb3ZpZGVyIChgaHdwcm92YCkuIEkgbmVlZCB0byBncmFzcCB3aHkgdGhlcmUncyBhIGNoYW5nZSByZWxhdGVkIHRvIGhvdyB3ZSdyZSBhY2Nlc3NpbmcgdGhpcyBgaHdwcm92YCBzdHJ1Y3R1cmUsIHBhcnRpY3VsYXJseSBpbiB0aGUgY29udGV4dCBvZiBkZXZpY2UgZGV0YWNobWVudC5cblxuVGhlIGNvbW1lbnQgbWVudGlvbnMgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gaW52b2x2aW5nIGBwaHlfbGlua190b3BvX2FkZF9waHkoKWAsIGFuZCB0aGF0IFJUTkwgaXNuJ3QgYWx3YXlzIGhlbGQsIGVzcGVjaWFsbHkgZHVyaW5nIHByb2JlIGZhaWx1cmVzIGJlZm9yZSBkZXZpY2UgcmVnaXN0cmF0aW9uLiBUaGF0J3MgYSByZWQgZmxhZy4gSSBrbm93IHRoYXQgaWYgYGh3cHJvdmAgaXNuJ3QgaGFuZGxlZCBjb3JyZWN0bHkgZHVyaW5nIHRoZXNlIHNjZW5hcmlvcywgaXQgY2FuIGxlYWQgdG8gbWVtb3J5IGNvcnJ1cHRpb24gb3Igb3RoZXIgbmFzdHkgaXNzdWVzLiBUaGlzIGByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkYCB3aXRoIGFkZGVkIHByb3RlY3Rpb24gaXMgbGlrZWx5IHRoZSBmaXguXG5cbk15IGltbWVkaWF0ZSBwbGFuIGlzIHRvIHVzZSB0b29scywgYGdyZXBwZXJgIG9yIGByZWFkLWZpbGVgLCB0byBjaGVjayB0aGUgY29kZSBpdHNlbGYsIHRvIHZlcmlmeSB0aGUgY29udGV4dCBvZiBgcGh5X2RldGFjaGAgYW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gYGRldi1cdTAwM2Vod3Byb3ZgLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIHRoZSBhZGRlZCBwcm90ZWN0aW9uIGBsb2NrZGVwX3J0bmxfaXNfaGVsZCgpIHx8IGRldi1cdTAwM2VyZWdfc3RhdGUgIT0gTkVUUkVHX1JFR0lTVEVSRURgIGlzIHN1ZmZpY2llbnQgZm9yIGFsbCB0aGUgcG9zc2libGUgY29uZGl0aW9ucyBhbmQgdGhhdCBpdCBkb2Vzbid0IGludHJvZHVjZSBhbnkgbmV3IHJlZ3Jlc3Npb25zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZXhhY3QgY29uZGl0aW9ucyB1bmRlciB3aGljaCB3ZSBtaWdodCBiZSBhY2Nlc3NpbmcgYGRldi1cdTAwM2Vod3Byb3ZgIHdpdGhvdXQgUlROTCBoZWxkLiBBIGdvb2QgdW5kZXJzdGFuZGluZyBvZiB0aGUgbmV0ZGV2aWNlIHJlZ2lzdHJhdGlvbiBzdGF0ZSBpcyBlc3NlbnRpYWwgaGVyZS4gU3BlY2lmaWNhbGx5LCBgTkVUUkVHX1JFR0lTVEVSRURgIGFuZCByZWxhdGVkIHN0YXRlcy4gSSBhbHNvIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIFBIWSBkZXZpY2UgaW50ZXJhY3RzIHdpdGggdGhlIG5ldHdvcmtpbmcgc3RhY2sgYW5kIHRoZSBoYXJkd2FyZSB0aW1lc3RhbXBpbmcgY29uZmlndXJhdGlvbiB0byBldmFsdWF0ZSB0aGUgbG9naWMncyBjb3JyZWN0bmVzcyBhbmQgaW1wYWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDAxLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDE4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTM6MDU6MTAuOTMyMjE1NDk4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE4MTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTkyNSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTkyNTpcXHRcXHR9XFxuMTkyNjpcXHRcXG4xOTI3OlxcdFxcdGlmIChwaHlkZXYtXFx1MDAzZXN5c2ZzX2xpbmtzKSB7XFxuMTkyODpcXHRcXHRcXHRpZiAoZGV2KVxcbjE5Mjk6XFx0XFx0XFx0XFx0c3lzZnNfcmVtb3ZlX2xpbmsoXFx1MDAyNmRldi1cXHUwMDNlZGV2LmtvYmosIFxcXCJwaHlkZXZcXFwiKTtcXG4xOTMwOlxcdFxcdFxcdHN5c2ZzX3JlbW92ZV9saW5rKFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2LmtvYmosIFxcXCJhdHRhY2hlZF9kZXZcXFwiKTtcXG4xOTMxOlxcdFxcdH1cXG4xOTMyOlxcdFxcbjE5MzM6XFx0XFx0aWYgKCFwaHlkZXYtXFx1MDAzZWF0dGFjaGVkX2RldilcXG4xOTM0OlxcdFxcdFxcdHN5c2ZzX3JlbW92ZV9maWxlKFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2LmtvYmosXFxuMTkzNTpcXHRcXHRcXHRcXHRcXHQgIFxcdTAwMjZkZXZfYXR0cl9waHlfc3RhbmRhbG9uZS5hdHRyKTtcXG4xOTM2OlxcdFxcbjE5Mzc6XFx0XFx0cGh5X3N1c3BlbmQocGh5ZGV2KTtcXG4xOTM4OlxcdFxcdGlmIChkZXYpIHtcXG4xOTM5OlxcdFxcdFxcdHN0cnVjdCBod3RzdGFtcF9wcm92aWRlciAqaHdwcm92O1xcbjE5NDA6XFx0XFxuMTk0MTpcXHRcXHRcXHQvKiBod3Byb3YgbWF5IHRlY2huaWNhbGx5IGJlIHByb3RlY3RlZCBieSBvcHMgbG9jayBidXRcXG4xOTQyOlxcdFxcdFxcdCAqIG5vdCBmb3IgZGV2aWNlcyB3aXRoIGEgcGh5ZGV2LCBzZWUgcGh5X2xpbmtfdG9wb19hZGRfcGh5KCkuXFxuMTk0MzpcXHRcXHRcXHQgKiBSVE5MIGlzIG5vdCBoZWxkIHdoZW4gY2xlYW5pbmcgdXAgb24gcHJvYmUgZmFpbHVyZSBiZWZvcmVcXG4xOTQ0OlxcdFxcdFxcdCAqIGRldmljZSByZWdpc3RyYXRpb24uXFxuMTk0NTpcXHRcXHRcXHQgKi9cXG4xOTQ2OlxcdFxcdFxcdGh3cHJvdiA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoZGV2LVxcdTAwM2Vod3Byb3YsXFxuMTk0NzpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICBsb2NrZGVwX3J0bmxfaXNfaGVsZCgpIHx8XFxuMTk0ODpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICBkZXYtXFx1MDAzZXJlZ19zdGF0ZSAhPSBORVRSRUdfUkVHSVNURVJFRCk7XFxuMTk0OTpcXHRcXHRcXHQvKiBEaXNhYmxlIHRpbWVzdGFtcCBpZiBpdCBpcyB0aGUgb25lIHNlbGVjdGVkICovXFxuMTk1MDpcXHRcXHRcXHRpZiAoaHdwcm92IFxcdTAwMjZcXHUwMDI2IGh3cHJvdi1cXHUwMDNlcGh5ZGV2ID09IHBoeWRldikge1xcbjE5NTE6XFx0XFx0XFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKGRldi1cXHUwMDNlaHdwcm92LCBOVUxMKTtcXG4xOTUyOlxcdFxcdFxcdFxcdGtmcmVlX3JjdShod3Byb3YsIHJjdV9oZWFkKTtcXG4xOTUzOlxcdFxcdFxcdH1cXG4xOTU0OlxcdFxcbjE5NTU6XFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2VhdHRhY2hlZF9kZXYtXFx1MDAzZXBoeWRldiA9IE5VTEw7XFxuMTk1NjpcXHRcXHRcXHRwaHlkZXYtXFx1MDAzZWF0dGFjaGVkX2RldiA9IE5VTEw7XFxuMTk1NzpcXHRcXHRcXHRwaHlfbGlua190b3BvX2RlbF9waHkoZGV2LCBwaHlkZXYpO1xcbjE5NTg6XFx0XFx0fVxcbjE5NTk6XFx0XFxuMTk2MDpcXHRcXHRwaHlkZXYtXFx1MDAzZXBoeV9saW5rX2NoYW5nZSA9IE5VTEw7XFxuMTk2MTpcXHRcXHRwaHlkZXYtXFx1MDAzZXBoeWxpbmsgPSBOVUxMO1xcbjE5NjI6XFx0XFxuMTk2MzpcXHRcXHRpZiAocGh5ZGV2LVxcdTAwM2VtZGlvLmRldi5kcml2ZXIpXFxuMTk2NDpcXHRcXHRcXHRtb2R1bGVfcHV0KHBoeWRldi1cXHUwMDNlbWRpby5kZXYuZHJpdmVyLVxcdTAwM2Vvd25lcik7XFxuMTk2NTpcXHRcXG4xOTY2OlxcdFxcdC8qIElmIHRoZSBkZXZpY2UgaGFkIG5vIHNwZWNpZmljIGRyaXZlciBiZWZvcmUgKGkuZS4gLSBpdFxcbjE5Njc6XFx0XFx0ICogd2FzIHVzaW5nIHRoZSBnZW5lcmljIGRyaXZlciksIHdlIHVuYmluZCB0aGUgZGV2aWNlXFxuMTk2ODpcXHRcXHQgKiBmcm9tIHRoZSBnZW5lcmljIGRyaXZlciBzbyB0aGF0IHRoZXJlJ3MgYSBjaGFuY2UgYVxcbjE5Njk6XFx0XFx0ICogcmVhbCBkcml2ZXIgY291bGQgYmUgbG9hZGVkXFxuMTk3MDpcXHRcXHQgKi9cXG4xOTcxOlxcdFxcdGlmIChwaHlkZXYtXFx1MDAzZWlzX2dlbnBoeV9kcml2ZW4pIHtcXG4xOTcyOlxcdFxcdFxcdGRldmljZV9yZWxlYXNlX2RyaXZlcihcXHUwMDI2cGh5ZGV2LVxcdTAwM2VtZGlvLmRldik7XFxuMTk3MzpcXHRcXHRcXHRwaHlkZXYtXFx1MDAzZWlzX2dlbnBoeV9kcml2ZW4gPSAwO1xcbjE5NzQ6XFx0XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxMzowNToxMC45MzI2MzY4NThaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMTgyNTk2Njg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgUEhZIERldGFjaG1lbnQgYW5kIERldmljZSBVc2FnZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBkaWcgaW50byB0aGUgYHBoeV9kZXRhY2hgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiBpdHMgY2FsbHMuIEknbSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zIGZvciBQSFkgZGV2aWNlIG1hbmFnZW1lbnQgYW5kIGhvdyB0aGVzZSBwaHlzaWNhbCBsYXllciBkZXZpY2VzIGFyZSBhY3R1YWxseSAqdXNlZCogd2l0aGluIHRoZSBzeXN0ZW0uXG5cbkkgd2FudCB0byBzZWUgdGhlIHZhcmlvdXMgc2NlbmFyaW9zIHdoZXJlIGEgUEhZIGlzIGRldGFjaGVkIOKAkyBpcyBpdCBqdXN0IGR1cmluZyBkcml2ZXIgdW5sb2FkLCBvciBhcmUgdGhlcmUgc2l0dWF0aW9ucyB3aGVyZSBhIFBIWSBpcyBkeW5hbWljYWxseSBkaXNjb25uZWN0ZWQsIHBlcmhhcHMgZHVlIHRvIGhvdC1wbHVnIGV2ZW50cywgcG93ZXIgbWFuYWdlbWVudCwgb3Igc29tZSBvdGhlciBoYXJkd2FyZSBlcnJvciBjb25kaXRpb24/IFVuZGVyc3RhbmRpbmcgdGhlIGRldGFjaCBzY2VuYXJpb3Mgd2lsbCBpbW1lZGlhdGVseSBzaG93IGhvdyByZXNpbGllbnQgdGhlIFBIWSBkcml2ZXIgaXMuXG5cblRoZSByZWFsIG1lYXQgd2lsbCBiZSBmaWd1cmluZyBvdXQgKmhvdyogdGhlIFBIWXMgYXJlIGVtcGxveWVkIGJlZm9yZSBkZXRhY2htZW50LiBJIG5lZWQgdG8gdHJhY2UgdGhlIHJlc291cmNlIGFsbG9jYXRpb24sIGRhdGEgdHJhbnNmZXIgaW5pdGlhdGlvbiwgYW5kIHNpZ25hbCBwcm9jZXNzaW5nIHdvcmtmbG93cyB0aGF0IGhhcHBlbiBhcm91bmQgdGhlIHVzZSBvZiB0aGUgUEhZLiBJJ2xsIGZvY3VzIG9uIGhvdyB0aGUgUEhZIGFic3RyYWN0aW9uIGxheWVyIGludGVyYWN0cyB3aXRoIHRoZSBjb3JlIG5ldHdvcmtpbmcgc3RhY2sgb3Igd2hhdGV2ZXIgb3RoZXIgc3Vic3lzdGVtcyBhcmUgdXNpbmcgaXQuIEFueSBpbnNpZ2h0cyBpbnRvIGhvdyB0aGUgUEhZIHJlc291cmNlcyBhcmUgcmVsZWFzZWQgZHVyaW5nIHRoZSBkZXRhY2ggcHJvY2VzcyBhcmUgZ29pbmcgdG8gYmUgY3JpdGljYWwgdG8gdW5kZXJzdGFuZGluZyBkcml2ZXIgYmVoYXZpb3IuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2MjgsIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDEzOjA1OjE0LjExNTIzNzM1NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDYxNjg5MzQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeV9kZXRhY2hcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYz04MDM9c3RhdGljIHZvaWQgeGdiZV9waHlfZnJlZV9waHlfZGV2aWNlKHN0cnVjdCB4Z2JlX3Bydl9kYXRhICpwZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtODA3LVxcdGlmIChwaHlfZGF0YS1cXHUwMDNlcGh5ZGV2KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYzo4MDg6XFx0XFx0cGh5X2RldGFjaChwaHlfZGF0YS1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTgwOS1cXHRcXHRwaHlfZGV2aWNlX3JlbW92ZShwaHlfZGF0YS1cXHUwMDNlcGh5ZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbWdlbmV0LmM9MTcwOT1zdGF0aWMgaW50IGJjbWdlbmV0X3Bvd2VyX2Rvd24oc3RydWN0IGJjbWdlbmV0X3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21nZW5ldC5jLTE3MTYtXFx0Y2FzZSBHRU5FVF9QT1dFUl9DQUJMRV9TRU5TRTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21nZW5ldC5jOjE3MTc6XFx0XFx0cGh5X2RldGFjaChwcml2LVxcdTAwM2VkZXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtZ2VuZXQuYy0xNzE4LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM9Mjk5PUVYUE9SVF9TWU1CT0wob2ZfcGh5X2ZpbmRfZGV2aWNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTMxMC0gKiBzdHJ1Y3QgZGV2aWNlIHJlZmNvdW50IGluY3JlbWVudGVkIGJ5IG9uZSwgb3IgTlVMTCBvbiBmYWlsdXJlLiBUaGVcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzozMTE6ICogcmVmY291bnQgbXVzdCBiZSBkcm9wcGVkIGJ5IGNhbGxpbmcgcGh5X2Rpc2Nvbm5lY3QoKSBvciBwaHlfZGV0YWNoKCkuXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMzEyLSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM9MzMzPUVYUE9SVF9TWU1CT0wob2ZfcGh5X2Nvbm5lY3QpO1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMzQzLSAqIHN0cnVjdCBkZXZpY2UgcmVmY291bnQgaW5jcmVtZW50ZWQgYnkgb25lLCBvciBOVUxMIG9uIGZhaWx1cmUuIFRoZVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjM0NDogKiByZWZjb3VudCBtdXN0IGJlIGRyb3BwZWQgYnkgY2FsbGluZyBwaHlfZGlzY29ubmVjdCgpIG9yIHBoeV9kZXRhY2goKS5cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0zNDUtICovXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LmM9MTMxOD1FWFBPUlRfU1lNQk9MX0dQTChwaHlfc3RhcnRfbWFjaGluZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtMTMyNS0gKiAgIHN0YXRlIHRvIFVQICh1bmxlc3MgaXQgd2Fzbid0IHVwIHlldCkuIFRoaXMgZnVuY3Rpb24gbXVzdCBiZVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYzoxMzI2OiAqICAgY2FsbGVkIEJFRk9SRSBwaHlfZGV0YWNoLlxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0xMzI3LSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0zMDE9c3RhdGljIGJvb2wgbWRpb19idXNfcGh5X21heV9zdXNwZW5kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTMxNy1cXHQgKiBzdXNwZW5kZWQgYXMgcGFydCBvZiBhIHByaW9yIGNhbGwgdG8gcGh5X2Rpc2Nvbm5lY3QoKSAtXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MzE4OlxcdCAqIHBoeV9kZXRhY2goKSAtXFx1MDAzZSBwaHlfc3VzcGVuZCgpIGJlY2F1c2UgdGhlIHBhcmVudCBuZXRkZXYgbWlnaHQgYmUgdGhlXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zMTktXFx0ICogTURJTyBidXMgZHJpdmVyIGFuZCBjbG9jayBnYXRlZCBhdCB0aGlzIHBvaW50Llxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xMjkzPXZvaWQgcGh5X2Rpc2Nvbm5lY3Qoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTMwMi1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjEzMDM6XFx0cGh5X2RldGFjaChwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTMwNC19XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTE3NTI9aW50IHBoeV9hdHRhY2hfZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE4MjQtXFx0ICogcmVhZHkuIE9uY2Ugd2UgZG8gdGhhdCB3ZSBzdGlsbCBuZWVkIHRvIGtlZXAgdHJhY2sgb2Ygd2hldGhlclxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTgyNTpcXHQgKiBsaW5rcyB3ZXJlIHN1Y2Nlc3NmdWxseSBzZXQgdXAgb3Igbm90IGZvciBwaHlfZGV0YWNoKCkgdG9cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE4MjYtXFx0ICogcmVtb3ZlIHRoZW0gYWNjb3JkaW5nbHkuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE4OTItZXJyb3I6XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxODkzOlxcdC8qIHBoeV9kZXRhY2goKSBkb2VzIGFsbCBvZiB0aGUgY2xlYW51cCBiZWxvdyAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTg5NDpcXHRwaHlfZGV0YWNoKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xODk1LVxcdHJldHVybiBlcnI7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTE5MDc9RVhQT1JUX1NZTUJPTChwaHlfYXR0YWNoX2RpcmVjdCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE5MDktLyoqXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxOTEwOiAqIHBoeV9kZXRhY2ggLSBkZXRhY2ggYSBQSFkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xOTExLSAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xOTE1LSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTkxNjp2b2lkIHBoeV9kZXRhY2goc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE5MTcte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xOTkwLX1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjE5OTE6RVhQT1JUX1NZTUJPTChwaHlfZGV0YWNoKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE5OTItXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2xpbmtfdG9wb2xvZ3kuYz0zMT1pbnQgcGh5X2xpbmtfdG9wb19hZGRfcGh5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2xpbmtfdG9wb2xvZ3kuYy00Mi1cXHQgKiAgLSBldGhubF9yZXFfZ2V0X3BoeWRldigpXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9saW5rX3RvcG9sb2d5LmM6NDM6XFx0ICogIC0gcGh5X2RldGFjaCgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9saW5rX3RvcG9sb2d5LmMtNDQtXFx0ICovXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyMzU9aW50IHBoeWxpbmtfY29ubmVjdF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjUwLVxcdGlmIChyZXQpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMjUxOlxcdFxcdHBoeV9kZXRhY2gocGh5KTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNTItXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyODc9aW50IHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0KHN0cnVjdCBwaHlsaW5rICpwbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjMyOC1cXHRpZiAocmV0KVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjMyOTpcXHRcXHRwaHlfZGV0YWNoKHBoeV9kZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjMzMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzcwMD1zdGF0aWMgaW50IHBoeWxpbmtfc2ZwX2NvbmZpZ19waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNzM5LVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNzQwOlxcdFxcdHBoeV9kZXRhY2gocGh5KTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM3NDEtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9zZnAuYz0yMDkwPXN0YXRpYyB2b2lkIHNmcF9zbV9tb2RfbmV4dChzdHJ1Y3Qgc2ZwICpzZnAsIHVuc2lnbmVkIGludCBzdGF0ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9zZnAuYy0yMDk2LVxcbmRyaXZlcnMvbmV0L3BoeS9zZnAuYzoyMDk3OnN0YXRpYyB2b2lkIHNmcF9zbV9waHlfZGV0YWNoKHN0cnVjdCBzZnAgKnNmcClcXG5kcml2ZXJzL25ldC9waHkvc2ZwLmMtMjA5OC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvc2ZwLmM9Mjg1ND1zdGF0aWMgdm9pZCBzZnBfc21fbWFpbihzdHJ1Y3Qgc2ZwICpzZnAsIHVuc2lnbmVkIGludCBldmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9zZnAuYy0yODY4LVxcdFxcdGlmIChzZnAtXFx1MDAzZW1vZF9waHkpXFxuZHJpdmVycy9uZXQvcGh5L3NmcC5jOjI4Njk6XFx0XFx0XFx0c2ZwX3NtX3BoeV9kZXRhY2goc2ZwKTtcXG5kcml2ZXJzL25ldC9waHkvc2ZwLmMtMjg3MC1cXHRcXHRpZiAoc2ZwLVxcdTAwM2VpMmNfbWlpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYz00Nzc3PXN0YXRpYyB2b2lkIGJyY21zX2JfZGV0YWNoKHN0cnVjdCBicmNtc19jX2luZm8gKndsYylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmMtNDc4OC1cXHRcXHRcXHQvKiBEZXRhY2ggdGhpcyBiYW5kJ3MgcGh5ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYzo0Nzg5OlxcdFxcdFxcdHdsY19waHlfZGV0YWNoKGJhbmQtXFx1MDAzZXBpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jLTQ3OTAtXFx0XFx0XFx0YmFuZC1cXHUwMDNlcGkgPSBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3BoeS9waHlfY21uLmM9Mzk3PXdsY19waHlfYXR0YWNoKHN0cnVjdCBzaGFyZWRfcGh5ICpzaCwgc3RydWN0IGJjbWFfZGV2aWNlICpkMTFjb3JlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3BoeS9waHlfY21uLmMtNTUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9waHkvcGh5X2Ntbi5jOjU1NDp2b2lkIHdsY19waHlfZGV0YWNoKHN0cnVjdCBicmNtc19waHlfcHViICpwaWgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3BoeS9waHlfY21uLmMtNTU1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9waHkvcGh5X2hhbC5oPTE2Nz1zdHJ1Y3QgYnJjbXNfcGh5X3B1YiAqd2xjX3BoeV9hdHRhY2goc3RydWN0IHNoYXJlZF9waHkgKnNoLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3BoeS9waHlfaGFsLmgtMTY5LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHdpcGh5ICp3aXBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3BoeS9waHlfaGFsLmg6MTcwOnZvaWQgd2xjX3BoeV9kZXRhY2goc3RydWN0IGJyY21zX3BoeV9wdWIgKnBwaSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3BoeS9waHlfaGFsLmgtMTcxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3BoeS9waHlfaW50Lmg9OTQyPWJvb2wgd2xjX3BoeV9hdHRhY2hfbGNucGh5KHN0cnVjdCBicmNtc19waHkgKnBpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvcGh5L3BoeV9pbnQuaC05NDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3BoeS9waHlfaW50Lmg6OTQ0OnZvaWQgd2xjX3BoeV9kZXRhY2hfbGNucGh5KHN0cnVjdCBicmNtc19waHkgKnBpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvcGh5L3BoeV9pbnQuaC05NDUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvcGh5L3BoeV9sY24uYz00OTE0PXZvaWQgd2xjX3BoeV9jaGFuc3BlY19zZXRfbGNucGh5KHN0cnVjdCBicmNtc19waHkgKnBpLCB1MTYgY2hhbnNwZWMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvcGh5L3BoeV9sY24uYy00OTUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9waHkvcGh5X2xjbi5jOjQ5NTM6dm9pZCB3bGNfcGh5X2RldGFjaF9sY25waHkoc3RydWN0IGJyY21zX3BoeSAqcGkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3BoeS9waHlfbGNuLmMtNDk1NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvcGh5L3BoeV9sY24uYz00OTU4PWJvb2wgd2xjX3BoeV9hdHRhY2hfbGNucGh5KHN0cnVjdCBicmNtc19waHkgKnBpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3BoeS9waHlfbGNuLmMtNDk4My1cXHRwaS1cXHUwMDNlcGlfZnB0ci5yYWRpb2xvZnRnZXQgPSB3bGNfbGNucGh5X2dldF9yYWRpb19sb2Z0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9waHkvcGh5X2xjbi5jOjQ5ODQ6XFx0cGktXFx1MDAzZXBpX2ZwdHIuZGV0YWNoID0gd2xjX3BoeV9kZXRhY2hfbGNucGh5O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9waHkvcGh5X2xjbi5jLTQ5ODUtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeS5oPTIxNzg9dm9pZCBwaHlfZGlzY29ubmVjdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjIxNzk6dm9pZCBwaHlfZGV0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xcbmluY2x1ZGUvbGludXgvcGh5LmgtMjE4MC12b2lkIHBoeV9zdGFydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTM6MDU6MTYuNTc2OTMzMDQyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzI1MjgxMjI0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIFBIWSBEZXZpY2UgRGV0YWNobWVudCBpbiB0aGUgS2VybmVsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgaW50byB0aGUgbmV0d29yayBQSFkgZGV2aWNlIGNvZGUgYWdhaW4uIExldCdzIHNlZS4uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGV0YWNobWVudCBwcm9jZXNzIGJldHRlci4gU3BlY2lmaWNhbGx5LCB3aGVyZSBhbmQgaG93IGBwaHlfZGV0YWNoYCBpcyB1c2VkLiBJIGFscmVhZHkga25vdyB0aGF0IGZ1bmN0aW9uIGlzIHNpdHRpbmcgaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLiBCdXQgd2hhdCdzIHRoZSB3aG9sZSBwaWN0dXJlP1xuXG5TbywgZmlyc3QgdGhpbmdzIGZpcnN0LCBJJ20gZ29pbmcgdG8gdHJhY2sgZG93biBldmVyeSBzaW5nbGUgY2FsbCB0byBib3RoIGBwaHlfZGlzY29ubmVjdGAgYW5kIGBwaHlfZGV0YWNoYCB0aHJvdWdob3V0IHRoZSBrZXJuZWwgc291cmNlLiBUaGF0J3MgdGhlIGtleS4gS25vd2luZyB0aGUgY2FsbCBzaXRlcyB3aWxsIGltbWVkaWF0ZWx5IGdpdmUgbWUgdGhlIGNvbnRleHQsIHNob3cgbWUgdGhlIHZhcmlvdXMgdXNlIGNhc2VzLCBhbmQgZ2l2ZSBtZSBhIGZlZWwgZm9yIGhvdyB0aGVzZSBmdW5jdGlvbnMgZml0IGludG8gdGhlIG92ZXJhbGwgUEhZIG1hbmFnZW1lbnQgc2NoZW1lLiBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHRyaWdnZXJzIHRoZXNlIGV2ZW50cyBhbmQgd2hhdCBlbHNlIGlzIGhhcHBlbmluZyBhcm91bmQgdGhlc2UgY2FsbHMuIFRoYXQncyB0aGUgY3J1Y2lhbCBkYXRhLiBLbm93aW5nIHdoaWNoIGZ1bmN0aW9ucyBjYWxsIHRoZXNlIGFuZCBpbiB3aGF0IGNpcmN1bXN0YW5jZXMgd2lsbCBnaXZlIG1lIGEgaHVnZSBoZWFkIHN0YXJ0IGluIHVuZGVyc3RhbmRpbmcgdGhlIGJpZ2dlciBwaWN0dXJlLiBGcm9tIHRoZXJlLCBJIGNhbiBzdGFydCB0byB1bmRlcnN0YW5kIHRoZSBjb21wbGV0ZSBzZXF1ZW5jZSBvZiBldmVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgyMzMsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxMzowNToxOS44Mjk3NDg0NDVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUwMzc2Mjg5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlfZGlzY29ubmVjdFxcXFwoXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNzUxIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0PTc0PXRoaXMgZG9jdW1lbnRhdGlvbi5cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3QtMTI5LSAgICAgIC0gcGh5bGlua19ldGh0b29sX3NldF93b2wocHJpdi1cXHUwMDNlcGh5bGluaywgd29sKVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3Q6MTMwOiAgICAqIC0gcGh5X2Rpc2Nvbm5lY3QocGh5ZGV2KVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3QtMTMxLSAgICAgIC0gcGh5bGlua19kaXNjb25uZWN0X3BoeShwcml2LVxcdTAwM2VwaHlsaW5rKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jPTY4OD1zdGF0aWMgYm9vbCBpY2xfdGNfcGh5X2Nvbm5lY3Qoc3RydWN0IGludGVsX3RjX3BvcnQgKnRjLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jLTcyOC0gKi9cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmM6NzI5OnN0YXRpYyB2b2lkIGljbF90Y19waHlfZGlzY29ubmVjdChzdHJ1Y3QgaW50ZWxfdGNfcG9ydCAqdGMpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jLTczMC17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmM9OTA4PXN0YXRpYyBib29sIGFkbHBfdGNfcGh5X2Nvbm5lY3Qoc3RydWN0IGludGVsX3RjX3BvcnQgKnRjLCBpbnQgcmVxdWlyZWRfbGFuZXMpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMtOTU5LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYzo5NjA6c3RhdGljIHZvaWQgYWRscF90Y19waHlfZGlzY29ubmVjdChzdHJ1Y3QgaW50ZWxfdGNfcG9ydCAqdGMpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jLTk2MS17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmM9MTE5Nj1zdGF0aWMgYm9vbCB4ZWxwZHBfdGNfcGh5X2Nvbm5lY3Qoc3RydWN0IGludGVsX3RjX3BvcnQgKnRjLCBpbnQgcmVxdWlyZWRfbGFuZXMpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMtMTIyNy1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmM6MTIyODpzdGF0aWMgdm9pZCB4ZWxwZHBfdGNfcGh5X2Rpc2Nvbm5lY3Qoc3RydWN0IGludGVsX3RjX3BvcnQgKnRjKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYy0xMjI5LXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYz0xNDc0PXN0YXRpYyB2b2lkIHRjX3BoeV9jb25uZWN0KHN0cnVjdCBpbnRlbF90Y19wb3J0ICp0YywgaW50IHJlcXVpcmVkX2xhbmVzKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jLTE0OTItXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jOjE0OTM6c3RhdGljIHZvaWQgdGNfcGh5X2Rpc2Nvbm5lY3Qoc3RydWN0IGludGVsX3RjX3BvcnQgKnRjKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYy0xNDk0LXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYz0xNTA4PXN0YXRpYyB2b2lkIGludGVsX3RjX3BvcnRfcmVzZXRfbW9kZShzdHJ1Y3QgaW50ZWxfdGNfcG9ydCAqdGMsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMtMTUyNC1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmM6MTUyNTpcXHR0Y19waHlfZGlzY29ubmVjdCh0Yyk7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jLTE1MjYtXFx0aWYgKCFmb3JjZV9kaXNjb25uZWN0KVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jPTE2NjQ9dm9pZCBpbnRlbF90Y19wb3J0X3Nhbml0aXplX21vZGUoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMtMTY4NS1cXHRcXHRcXHRcXHQgICAgdGNfcG9ydF9tb2RlX25hbWUodGMtXFx1MDAzZWluaXRfbW9kZSkpO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYzoxNjg2OlxcdFxcdHRjX3BoeV9kaXNjb25uZWN0KHRjKTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMtMTY4Ny1cXHRcXHRfX2ludGVsX3RjX3BvcnRfcHV0X2xpbmsodGMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmM9NDkxPXN0YXRpYyBpbnQgYXhfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmMtNTI3LSBmYWlsZWRfYXhfZWlfb3BlbjpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYzo1Mjg6XFx0cGh5X2Rpc2Nvbm5lY3QoZGV2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jLTUyOS0gZmFpbGVkX21paV9wcm9iZTpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jPTU0MD1zdGF0aWMgaW50IGF4X2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYy01NTItXFx0YXhfcGh5X3N3aXRjaChkZXYsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jOjU1MzpcXHRwaHlfZGlzY29ubmVjdChkZXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmMtNTU0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jPTE0NjU9c3RhdGljIGludCBvd2xfZW1hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jLTE1NzItXFx0XFx0bmV0aWZfbmFwaV9kZWwoXFx1MDAyNnByaXYtXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYzoxNTczOlxcdFxcdHBoeV9kaXNjb25uZWN0KG5ldGRldi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmMtMTU3NC1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jPTE1ODA9c3RhdGljIHZvaWQgb3dsX2VtYWNfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmMtMTU4NC1cXHRuZXRpZl9uYXBpX2RlbChcXHUwMDI2cHJpdi1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jOjE1ODU6XFx0cGh5X2Rpc2Nvbm5lY3QocHJpdi1cXHUwMDNlbmV0ZGV2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYy0xNTg2LVxcdGNhbmNlbF93b3JrX3N5bmMoXFx1MDAyNnByaXYtXFx1MDAzZW1hY19yZXNldF90YXNrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jPTEyMjg9c3RhdGljIHZvaWQgYWRpbjExMTBfZGlzY29ubmVjdF9waHkodm9pZCAqZGF0YSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYy0xMjI5LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYzoxMjMwOlxcdHBoeV9kaXNjb25uZWN0KGRhdGEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jLTEyMzEtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmM9NjQ1PXN0YXRpYyB2b2lkIGFkaW4xMTQwX3BoeV9yZW1vdmUodm9pZCAqZGF0YSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy02NDYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jOjY0NzpcXHRwaHlfZGlzY29ubmVjdChkYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy02NDgtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmM9MzMyNj1zdGF0aWMgdm9pZCBldDEzMXhfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FnZXJlL2V0MTMxeC5jLTMzMzItXFx0bmV0aWZfbmFwaV9kZWwoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FnZXJlL2V0MTMxeC5jOjMzMzM6XFx0cGh5X2Rpc2Nvbm5lY3QobmV0ZGV2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FnZXJlL2V0MTMxeC5jLTMzMzQtXFx0bWRpb2J1c191bnJlZ2lzdGVyKGFkYXB0ZXItXFx1MDAzZW1paV9idXMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmM9MzkzMT1zdGF0aWMgaW50IGV0MTMxeF9wY2lfc2V0dXAoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYy00MDY2LWVycl9waHlfZGlzY29ubmVjdDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYzo0MDY3OlxcdHBoeV9kaXNjb25uZWN0KG5ldGRldi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYy00MDY4LWVycl9tZGlvX3VucmVnaXN0ZXI6XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGx3aW5uZXIvc3VuNGktZW1hYy5jPTE5Mz1zdGF0aWMgdm9pZCBlbWFjX21kaW9fcmVtb3ZlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxsd2lubmVyL3N1bjRpLWVtYWMuYy0xOTQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsbHdpbm5lci9zdW40aS1lbWFjLmM6MTk1OlxcdHBoeV9kaXNjb25uZWN0KGRldi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGx3aW5uZXIvc3VuNGktZW1hYy5jLTE5Ni19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jPTg0PXZvaWQgeGdlX21kaW9fcmVtb3ZlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYy04OS1cXHRpZiAobmRldi1cXHUwMDNlcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM6OTA6XFx0XFx0cGh5X2Rpc2Nvbm5lY3QobmRldi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jLTkxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYz05Mzk9aW50IHhnZW5lX2VuZXRfbWRpb19jb25maWcoc3RydWN0IHhnZW5lX2VuZXRfcGRhdGEgKnBkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05NzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo5NzM6dm9pZCB4Z2VuZV9lbmV0X3BoeV9kaXNjb25uZWN0KHN0cnVjdCB4Z2VuZV9lbmV0X3BkYXRhICpwZGF0YSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk3NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk3Ny1cXHRpZiAobmRldi1cXHUwMDNlcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTc4OlxcdFxcdHBoeV9kaXNjb25uZWN0KG5kZXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05NzktfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYz05ODE9dm9pZCB4Z2VuZV9lbmV0X21kaW9fcmVtb3ZlKHN0cnVjdCB4Z2VuZV9lbmV0X3BkYXRhICpwZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTg1LVxcdGlmIChuZGV2LVxcdTAwM2VwaHlkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo5ODY6XFx0XFx0cGh5X2Rpc2Nvbm5lY3QobmRldi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk4Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3Lmg9NDI3PWludCB4Z2VuZV9lbmV0X3BoeV9jb25uZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5oOjQyODp2b2lkIHhnZW5lX2VuZXRfcGh5X2Rpc2Nvbm5lY3Qoc3RydWN0IHhnZW5lX2VuZXRfcGRhdGEgKnBkYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5oLTQyOS11MzIgeGdlbmVfZW5ldF9yZF9tYWMoc3RydWN0IHhnZW5lX2VuZXRfcGRhdGEgKnBkYXRhLCB1MzIgcmRfYWRkcik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9tYWluLmM9MjAxNT1zdGF0aWMgaW50IHhnZW5lX2VuZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X21haW4uYy0yMTA4LVxcdGlmIChwZGF0YS1cXHUwMDNlbWRpb19kcml2ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfbWFpbi5jOjIxMDk6XFx0XFx0eGdlbmVfZW5ldF9waHlfZGlzY29ubmVjdChwZGF0YSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfbWFpbi5jLTIxMTAtXFx0ZWxzZSBpZiAocGh5X2ludGVyZmFjZV9tb2RlX2lzX3JnbWlpKHBkYXRhLVxcdTAwM2VwaHlfbW9kZSkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9tYWluLmM9MjExNz1zdGF0aWMgdm9pZCB4Z2VuZV9lbmV0X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfbWFpbi5jLTIxMzAtXFx0aWYgKHBkYXRhLVxcdTAwM2VtZGlvX2RyaXZlcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9tYWluLmM6MjEzMTpcXHRcXHR4Z2VuZV9lbmV0X3BoeV9kaXNjb25uZWN0KHBkYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9tYWluLmMtMjEzMi1cXHRlbHNlIGlmIChwaHlfaW50ZXJmYWNlX21vZGVfaXNfcmdtaWkocGRhdGEtXFx1MDAzZXBoeV9tb2RlKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21haW4uYz04NTg9aW50IGFyY19lbWFjX3Byb2JlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBpbnQgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWFpbi5jLTEwMTMtXFx0bmV0aWZfbmFwaV9kZWwoXFx1MDAyNnByaXYtXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21haW4uYzoxMDE0OlxcdHBoeV9kaXNjb25uZWN0KHBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWFpbi5jLTEwMTUtb3V0X21kaW86XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tYWluLmM9MTAyNz12b2lkIGFyY19lbWFjX3JlbW92ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21haW4uYy0xMDMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21haW4uYzoxMDMxOlxcdHBoeV9kaXNjb25uZWN0KG5kZXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWFpbi5jLTEwMzItXFx0YXJjX21kaW9fcmVtb3ZlKHByaXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmM9OTY2PXN0YXRpYyBpbnQgYXg4ODc5NmNfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jLTEwOTktZXJyX3BoeV9kaXM6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmM6MTEwMDpcXHRwaHlfZGlzY29ubmVjdChheF9sb2NhbC1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYy0xMTAxLWVycjpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jPTExMDU9c3RhdGljIHZvaWQgYXg4ODc5NmNfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYy0xMTA5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jOjExMTA6XFx0cGh5X2Rpc2Nvbm5lY3QobmRldi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYy0xMTExLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfaW50Zi5jPTk2OT1zdGF0aWMgaW50IGJjbWFzcF9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9hc3AyL2JjbWFzcF9pbnRmLmMtOTgxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2FzcDIvYmNtYXNwX2ludGYuYzo5ODI6XFx0cGh5X2Rpc2Nvbm5lY3QoZGV2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2FzcDIvYmNtYXNwX2ludGYuYy05ODMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYz0yMzEzPXN0YXRpYyB2b2lkIGI0NF91bnJlZ2lzdGVyX3BoeV9vbmUoc3RydWN0IGI0NCAqYnApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYy0yMzIwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jOjIzMjE6XFx0cGh5X2Rpc2Nvbm5lY3QocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYy0yMzIyLVxcdGlmIChwaHlfaXNfcHNldWRvX2ZpeGVkX2xpbmsocGh5ZGV2KSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jPTg5MD1zdGF0aWMgaW50IGJjbV9lbmV0X29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTExMzMtXFx0aWYgKHBoeWRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYzoxMTM0OlxcdFxcdHBoeV9kaXNjb25uZWN0KHBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmMtMTEzNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jPTExODU9c3RhdGljIGludCBiY21fZW5ldF9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYy0xMjI5LVxcdGlmIChwcml2LVxcdTAwM2VoYXNfcGh5KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jOjEyMzA6XFx0XFx0cGh5X2Rpc2Nvbm5lY3QoZGV2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTEyMzEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmM9MTkyOD1zdGF0aWMgaW50IGJjbV9zeXNwb3J0X29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYy0yMDUyLW91dF9waHlfZGlzY29ubmVjdDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmM6MjA1MzpcXHRwaHlfZGlzY29ubmVjdChwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYy0yMDU0LW91dF9jbGtfZGlzYWJsZTpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYz0yMDczPXN0YXRpYyBpbnQgYmNtX3N5c3BvcnRfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5jLTIxMTEtXFx0LyogRGlzY29ubmVjdCBmcm9tIFBIWSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYzoyMTEyOlxcdHBoeV9kaXNjb25uZWN0KGRldi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmMtMjExMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmM9MTQ4Nz1pbnQgYmdtYWNfZW5ldF9wcm9iZShzdHJ1Y3QgYmdtYWMgKmJnbWFjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYy0xNTU4LWVycl9waHlfZGlzY29ubmVjdDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jOjE1NTk6XFx0cGh5X2Rpc2Nvbm5lY3QobmV0X2Rldi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jLTE1NjAtZXJyX2RtYV9mcmVlOlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYz0xNTY4PXZvaWQgYmdtYWNfZW5ldF9yZW1vdmUoc3RydWN0IGJnbWFjICpiZ21hYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmMtMTU3MC1cXHR1bnJlZ2lzdGVyX25ldGRldihiZ21hYy1cXHUwMDNlbmV0X2Rldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYzoxNTcxOlxcdHBoeV9kaXNjb25uZWN0KGJnbWFjLVxcdTAwM2VuZXRfZGV2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmMtMTU3Mi1cXHRuZXRpZl9uYXBpX2RlbChcXHUwMDI2YmdtYWMtXFx1MDAzZW5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtZ2VuZXQuYz0zNDYzPXN0YXRpYyBpbnQgYmNtZ2VuZXRfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbWdlbmV0LmMtMzQ3Mi1cXHQvKiBSZWFsbHkga2lsbCB0aGUgUEhZIHN0YXRlIG1hY2hpbmUgYW5kIGRpc2Nvbm5lY3QgZnJvbSBpdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbWdlbmV0LmM6MzQ3MzpcXHRwaHlfZGlzY29ubmVjdChkZXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtZ2VuZXQuYy0zNDc0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmM9MzAxPWludCBiY21nZW5ldF9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jLTM5NS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmM6Mzk2OlxcdFxcdHBoeV9kaXNjb25uZWN0KGRldi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYy0zOTctXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYz0yNDc1PXN0YXRpYyBpbnQgc2JtYWNfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYy0yNDg5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYzoyNDkwOlxcdHBoeV9kaXNjb25uZWN0KHNjLVxcdTAwM2VwaHlfZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9zYjEyNTAtbWFjLmMtMjQ5MS1cXHRzYy1cXHUwMDNlcGh5X2RldiA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYz0yMDg0PXN0YXRpYyBpbnQgdGczX3BoeV9pbml0KHN0cnVjdCB0ZzMgKnRwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMjExOC1cXHRkZWZhdWx0OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jOjIxMTk6XFx0XFx0cGh5X2Rpc2Nvbm5lY3QobWRpb2J1c19nZXRfcGh5KHRwLVxcdTAwM2VtZGlvX2J1cywgdHAtXFx1MDAzZXBoeV9hZGRyKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMjEyMC1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTIxNjE9c3RhdGljIHZvaWQgdGczX3BoeV9maW5pKHN0cnVjdCB0ZzMgKnRwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMjE2My1cXHRpZiAodHAtXFx1MDAzZXBoeV9mbGFncyBcXHUwMDI2IFRHM19QSFlGTEdfSVNfQ09OTkVDVEVEKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6MjE2NDpcXHRcXHRwaHlfZGlzY29ubmVjdChtZGlvYnVzX2dldF9waHkodHAtXFx1MDAzZW1kaW9fYnVzLCB0cC1cXHUwMDNlcGh5X2FkZHIpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0yMTY1LVxcdFxcdHRwLVxcdTAwM2VwaHlfZmxhZ3MgXFx1MDAyNj0gflRHM19QSFlGTEdfSVNfQ09OTkVDVEVEO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL29jdGVvbi9vY3Rlb25fbWdtdC5jPTEyNDA9c3RhdGljIGludCBvY3Rlb25fbWdtdF9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vb2N0ZW9uL29jdGVvbl9tZ210LmMtMTI0OC1cXHRcXHRwaHlfc3RvcChuZXRkZXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL29jdGVvbi9vY3Rlb25fbWdtdC5jOjEyNDk6XFx0XFx0cGh5X2Rpc2Nvbm5lY3QobmV0ZGV2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9vY3Rlb24vb2N0ZW9uX21nbXQuYy0xMjUwLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL3RodW5kZXJfYmd4LmM9MTEzOT1zdGF0aWMgdm9pZCBiZ3hfbG1hY19kaXNhYmxlKHN0cnVjdCBiZ3ggKmJneCwgdTggbG1hY2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvdGh1bmRlcl9iZ3guYy0xMTg0LVxcdCAgICAobG1hYy1cXHUwMDNlbG1hY190eXBlICE9IEJHWF9NT0RFXzEwR19LUikgXFx1MDAyNlxcdTAwMjYgbG1hYy1cXHUwMDNlcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL3RodW5kZXJfYmd4LmM6MTE4NTpcXHRcXHRwaHlfZGlzY29ubmVjdChsbWFjLVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL3RodW5kZXJfYmd4LmMtMTE4Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MzYwPXN0YXRpYyBpbnQgZ21hY19zZXR1cF9waHkoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMzk4LVxcdFxcdG5ldGRldl9lcnIobmV0ZGV2LCBcXFwiVW5zdXBwb3J0ZWQgTUlJIGludGVyZmFjZVxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzozOTk6XFx0XFx0cGh5X2Rpc2Nvbm5lY3QocGh5KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTQwMC1cXHRcXHRuZXRkZXYtXFx1MDAzZXBoeWRldiA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTIzNjA9c3RhdGljIHZvaWQgZ2VtaW5pX3BvcnRfcmVtb3ZlKHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjM2Mi1cXHRpZiAocG9ydC1cXHUwMDNlbmV0ZGV2KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyMzYzOlxcdFxcdHBoeV9kaXNjb25uZWN0KHBvcnQtXFx1MDAzZW5ldGRldi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIzNjQtXFx0XFx0dW5yZWdpc3Rlcl9uZXRkZXYocG9ydC1cXHUwMDNlbmV0ZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmM9MTE2ND1zdGF0aWMgaW50IGRtOTA1MV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYy0xMjE3LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jOjEyMTg6XFx0XFx0cGh5X2Rpc2Nvbm5lY3QoZGItXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYy0xMjE5LVxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgcmV0LCBcXFwiZGV2aWNlIHJlZ2lzdGVyIGZhaWxlZFxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYz0xMjI1PXN0YXRpYyB2b2lkIGRtOTA1MV9kcnZfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jLTEyMzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYzoxMjMxOlxcdHBoeV9kaXNjb25uZWN0KGRiLVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmMtMTIzMi19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM9MjcyPXN0YXRpYyB2b2lkIHRzbmVwX3BoeV9jbG9zZShzdHJ1Y3QgdHNuZXBfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yNzQtXFx0cGh5X3N0b3AoYWRhcHRlci1cXHUwMDNlbmV0ZGV2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYzoyNzU6XFx0cGh5X2Rpc2Nvbm5lY3QoYWRhcHRlci1cXHUwMDNlbmV0ZGV2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yNzYtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZXRob2MuYz0xMjU3PXN0YXRpYyB2b2lkIGV0aG9jX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZXRob2MuYy0xMjYzLVxcdFxcdG5ldGlmX25hcGlfZGVsKFxcdTAwMjZwcml2LVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jOjEyNjQ6XFx0XFx0cGh5X2Rpc2Nvbm5lY3QobmV0ZGV2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmMtMTI2NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM9MTczND1zdGF0aWMgaW50IGZ0Z21hYzEwMF9zZXR1cF9tZGlvKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE3NzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYzoxNzgwOnN0YXRpYyB2b2lkIGZ0Z21hYzEwMF9waHlfZGlzY29ubmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTc4MS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE3ODctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYzoxNzg4OlxcdHBoeV9kaXNjb25uZWN0KHBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xNzg5LVxcdGlmIChvZl9waHlfaXNfZml4ZWRfbGluayhwcml2LVxcdTAwM2VkZXYtXFx1MDAzZW9mX25vZGUpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYz0xOTQyPXN0YXRpYyBpbnQgZnRnbWFjMTAwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTIwOTUtZXJyOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM6MjA5NjpcXHRmdGdtYWMxMDBfcGh5X2Rpc2Nvbm5lY3QobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTIwOTctXFx0aWYgKHByaXYtXFx1MDAzZW5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jPTIxMDI9c3RhdGljIHZvaWQgZnRnbWFjMTAwX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0yMTE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM6MjExOTpcXHRmdGdtYWMxMDBfcGh5X2Rpc2Nvbm5lY3QobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTIxMjAtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9NDIyOD1mZWNfZW5ldF9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTQyNDAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6NDI0MTpcXHRwaHlfZGlzY29ubmVjdChwaHlfZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy00MjQyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4LmM9MjE2PXN0YXRpYyBpbnQgbXBjNTJ4eF9mZWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4LmMtMjc0LVxcdFxcdHBoeV9zdG9wKHBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4LmM6Mjc1OlxcdFxcdHBoeV9kaXNjb25uZWN0KHBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4LmMtMjc2LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eC5jPTI4MT1zdGF0aWMgaW50IG1wYzUyeHhfZmVjX2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHguYy0yOTgtXFx0XFx0cGh5X3N0b3AocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHguYzoyOTk6XFx0XFx0cGh5X2Rpc2Nvbm5lY3QocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHguYy0zMDAtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYz0yODg0PXN0YXRpYyBpbnQgZ2Zhcl9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYy0yODkxLVxcdC8qIERpc2Nvbm5lY3QgZnJvbSB0aGUgUEhZICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYzoyODkyOlxcdHBoeV9kaXNjb25uZWN0KGRldi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jLTI4OTMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfbWRpby5jPTE2Mj1zdGF0aWMgdm9pZCBoYmdfcGh5X2FkanVzdF9saW5rKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfbWRpby5jLTE5NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfbWRpby5jOjE5NjpzdGF0aWMgdm9pZCBoYmdfcGh5X2Rpc2Nvbm5lY3Qodm9pZCAqZGF0YSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfbWRpby5jLTE5Ny17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYzoxOTg6XFx0cGh5X2Rpc2Nvbm5lY3QoKHN0cnVjdCBwaHlfZGV2aWNlICopZGF0YSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYy0xOTktfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpcDA0X2V0aC5jPTEwMjg9c3RhdGljIHZvaWQgaGlwMDRfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmMtMTAzNC1cXHRpZiAocHJpdi1cXHUwMDNlcGh5KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXAwNF9ldGguYzoxMDM1OlxcdFxcdHBoeV9kaXNjb25uZWN0KHByaXYtXFx1MDAzZXBoeSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpcDA0X2V0aC5jLTEwMzYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlzaV9mZW1hYy5jPTc2OD1zdGF0aWMgaW50IGhpc2lfZmVtYWNfZHJ2X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlzaV9mZW1hYy5jLTg4Ni1cXHRuZXRpZl9uYXBpX2RlbChcXHUwMDI2cHJpdi1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpc2lfZmVtYWMuYzo4ODc6XFx0cGh5X2Rpc2Nvbm5lY3QocGh5KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlzaV9mZW1hYy5jLTg4OC1vdXRfZGlzYWJsZV9jbGs6XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlzaV9mZW1hYy5jPTg5Nj1zdGF0aWMgdm9pZCBoaXNpX2ZlbWFjX2Rydl9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXNpX2ZlbWFjLmMtOTAzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXNpX2ZlbWFjLmM6OTA0OlxcdHBoeV9kaXNjb25uZWN0KG5kZXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpc2lfZmVtYWMuYy05MDUtXFx0Y2xrX2Rpc2FibGVfdW5wcmVwYXJlKHByaXYtXFx1MDAzZWNsayk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGl4NWhkMl9nbWFjLmM9ODY3PXN0YXRpYyBpbnQgaGl4NWhkMl9uZXRfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYy04NzgtXFx0XFx0cGh5X3N0b3AoZGV2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYzo4Nzk6XFx0XFx0cGh5X2Rpc2Nvbm5lY3QoZGV2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYy04ODAtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZW5ldC5jPTIzOTY9c3RhdGljIHZvaWQgaG5zX25pY19kZXZfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19lbmV0LmMtMjQwOC1cXHRpZiAobmRldi1cXHUwMDNlcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2VuZXQuYzoyNDA5OlxcdFxcdHBoeV9kaXNjb25uZWN0KG5kZXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZW5ldC5jLTI0MTAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfbWRpby5jPTI0Mj12b2lkIGhjbGdlX21hY19kaXNjb25uZWN0X3BoeShzdHJ1Y3QgaG5hZTNfaGFuZGxlICpoYW5kbGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfbWRpby5jLTI1MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfbWRpby5jOjI1MTpcXHRwaHlfZGlzY29ubmVjdChwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9tZGlvLmMtMjUyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xhbnRpcV9ldG9wLmM9NDIzPWx0cV9ldG9wX21kaW9fY2xlYW51cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbGFudGlxX2V0b3AuYy00MjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbGFudGlxX2V0b3AuYzo0Mjc6XFx0cGh5X2Rpc2Nvbm5lY3QoZGV2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xhbnRpcV9ldG9wLmMtNDI4LVxcdG1kaW9idXNfdW5yZWdpc3Rlcihwcml2LVxcdTAwM2VtaWlfYnVzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXY2NDN4eF9ldGguYz0zMjcyPXN0YXRpYyB2b2lkIG12NjQzeHhfZXRoX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdjY0M3h4X2V0aC5jLTMyNzgtXFx0aWYgKGRldi1cXHUwMDNlcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXY2NDN4eF9ldGguYzozMjc5OlxcdFxcdHBoeV9kaXNjb25uZWN0KGRldi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212NjQzeHhfZXRoLmMtMzI4MC1cXHRjYW5jZWxfd29ya19zeW5jKFxcdTAwMjZtcC1cXHUwMDNldHhfdGltZW91dF90YXNrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jPTE1MjY9c3RhdGljIHZvaWQgcHhhMTY4X2V0aF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jLTE1MzctXFx0aWYgKGRldi1cXHUwMDNlcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jOjE1Mzg6XFx0XFx0cGh5X2Rpc2Nvbm5lY3QoZGV2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jLTE1MzktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmM9MTAzNz1zdGF0aWMgdm9pZCBtdGtfc3Rhcl9kaXNhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jLTEwNDctXFx0cGh5X3N0b3AocHJpdi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmM6MTA0ODpcXHRwaHlfZGlzY29ubmVjdChwcml2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYy0xMDQ5LVxcdGZyZWVfaXJxKG5kZXYtXFx1MDAzZWlycSwgbmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhiZl9naWdlL21seGJmX2dpZ2VfbWFpbi5jPTM4NT1zdGF0aWMgaW50IG1seGJmX2dpZ2VfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seGJmX2dpZ2UvbWx4YmZfZ2lnZV9tYWluLmMtNDkyLVxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcIkZhaWxlZCB0byByZWdpc3RlciBuZXRkZXY6ICVwZVxcXFxuXFxcIiwgRVJSX1BUUihlcnIpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhiZl9naWdlL21seGJmX2dpZ2VfbWFpbi5jOjQ5MzpcXHRcXHRwaHlfZGlzY29ubmVjdChwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seGJmX2dpZ2UvbWx4YmZfZ2lnZV9tYWluLmMtNDk0LVxcdFxcdGdvdG8gb3V0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4YmZfZ2lnZS9tbHhiZl9naWdlX21haW4uYz01MDQ9c3RhdGljIHZvaWQgbWx4YmZfZ2lnZV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seGJmX2dpZ2UvbWx4YmZfZ2lnZV9tYWluLmMtNTA4LVxcdHVucmVnaXN0ZXJfbmV0ZGV2KHByaXYtXFx1MDAzZW5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4YmZfZ2lnZS9tbHhiZl9naWdlX21haW4uYzo1MDk6XFx0cGh5X2Rpc2Nvbm5lY3QocHJpdi1cXHUwMDNlbmV0ZGV2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seGJmX2dpZ2UvbWx4YmZfZ2lnZV9tYWluLmMtNTEwLVxcdG1seGJmX2dpZ2VfbWRpb19yZW1vdmUocHJpdik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uaS9uaXhnZS5jPTg2Nj1zdGF0aWMgaW50IG5peGdlX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uaS9uaXhnZS5jLTkwMy1cXHRwaHlfc3RvcChwaHkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25pL25peGdlLmM6OTA0OlxcdHBoeV9kaXNjb25uZWN0KHBoeSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmkvbml4Z2UuYy05MDUtXFx0dGFza2xldF9raWxsKFxcdTAwMjZwcml2LVxcdTAwM2VkbWFfZXJyX3Rhc2tsZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmkvbml4Z2UuYz05MTA9c3RhdGljIGludCBuaXhnZV9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmkvbml4Z2UuYy05MTktXFx0XFx0cGh5X3N0b3AobmRldi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uaS9uaXhnZS5jOjkyMDpcXHRcXHRwaHlfZGlzY29ubmVjdChuZGV2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25pL25peGdlLmMtOTIxLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTYxOT1zdGF0aWMgdm9pZCBvYV90YzZfcGh5X2V4aXQoc3RydWN0IG9hX3RjNiAqdGM2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNjIzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjYyNDpcXHRwaHlfZGlzY29ubmVjdCh0YzYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNjI1LVxcdG9hX3RjNl9tZGlvYnVzX3VucmVnaXN0ZXIodGM2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Bhc2VtaS9wYXNlbWlfbWFjLmM9MTI3NT1zdGF0aWMgaW50IHBhc2VtaV9tYWNfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Bhc2VtaS9wYXNlbWlfbWFjLmMtMTI4NS1cXHRcXHRwaHlfc3RvcChkZXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcGFzZW1pL3Bhc2VtaV9tYWMuYzoxMjg2OlxcdFxcdHBoeV9kaXNjb25uZWN0KGRldi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wYXNlbWkvcGFzZW1pX21hYy5jLTEyODctXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vZW1hYy9lbWFjLW1hYy5jPTk2Mz12b2lkIGVtYWNfbWFjX2Rvd24oc3RydWN0IGVtYWNfYWRhcHRlciAqYWRwdClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL2VtYWMvZW1hYy1tYWMuYy05NzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vZW1hYy9lbWFjLW1hYy5jOjk4MDpcXHRwaHlfZGlzY29ubmVjdChhZHB0LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL2VtYWMvZW1hYy1tYWMuYy05ODEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZGMvcjYwNDAuYz0xMDI3PXN0YXRpYyBpbnQgcjYwNDBfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZGMvcjYwNDAuYy0xMTY2LWVycl9vdXRfcGh5X2Rpc2Nvbm5lY3Q6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmRjL3I2MDQwLmM6MTE2NzpcXHRwaHlfZGlzY29ubmVjdChkZXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmRjL3I2MDQwLmMtMTE2OC1lcnJfb3V0X21kaW9fdW5yZWdpc3RlcjpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JkYy9yNjA0MC5jPTExODU9c3RhdGljIHZvaWQgcjYwNDBfcmVtb3ZlX29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JkYy9yNjA0MC5jLTExOTAtXFx0dW5yZWdpc3Rlcl9uZXRkZXYoZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZGMvcjYwNDAuYzoxMTkxOlxcdHBoeV9kaXNjb25uZWN0KGRldi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZGMvcjYwNDAuYy0xMTkyLVxcdG1kaW9idXNfdW5yZWdpc3RlcihscC1cXHUwMDNlbWlpX2J1cyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz01MDQ1PXN0YXRpYyBpbnQgcnRsODE2OV9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTA1Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1MDU4OlxcdHBoeV9kaXNjb25uZWN0KHRwLVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTUwNTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3JhdmJfbWFpbi5jPTIzNjc9c3RhdGljIGludCByYXZiX2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9yYXZiX21haW4uYy0yMzg2LVxcdFxcdHBoeV9zdG9wKG5kZXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9yYXZiX21haW4uYzoyMzg3OlxcdFxcdHBoeV9kaXNjb25uZWN0KG5kZXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9yYXZiX21haW4uYy0yMzg4LVxcdFxcdGlmIChvZl9waHlfaXNfZml4ZWRfbGluayhucCkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3Jzd2l0Y2hfbWFpbi5jPTE1MDM9c3RhdGljIHZvaWQgcnN3aXRjaF9waHlfZGV2aWNlX2RlaW5pdChzdHJ1Y3QgcnN3aXRjaF9kZXZpY2UgKnJkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3Jzd2l0Y2hfbWFpbi5jLTE1MDUtXFx0aWYgKHJkZXYtXFx1MDAzZW5kZXYtXFx1MDAzZXBoeWRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3Jzd2l0Y2hfbWFpbi5jOjE1MDY6XFx0XFx0cGh5X2Rpc2Nvbm5lY3QocmRldi1cXHUwMDNlbmRldi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3Jzd2l0Y2hfbWFpbi5jLTE1MDctfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9ydHNuLmM9OTIzPXN0YXRpYyB2b2lkIHJ0c25fcGh5X2RlaW5pdChzdHJ1Y3QgcnRzbl9wcml2YXRlICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcnRzbi5jLTkyNC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9ydHNuLmM6OTI1OlxcdHBoeV9kaXNjb25uZWN0KHByaXYtXFx1MDAzZW5kZXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9ydHNuLmMtOTI2LVxcdHByaXYtXFx1MDAzZW5kZXYtXFx1MDAzZXBoeWRldiA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3NoX2V0aC5jPTI1ODk9c3RhdGljIGludCBzaF9ldGhfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3NoX2V0aC5jLTI2MDgtXFx0XFx0cGh5X3N0b3AobmRldi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3NoX2V0aC5jOjI2MDk6XFx0XFx0cGh5X2Rpc2Nvbm5lY3QobmRldi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3NoX2V0aC5jLTI2MTAtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2Ftc3VuZy9zeGdiZS9zeGdiZV9tYWluLmM9MjY0PXN0YXRpYyBpbnQgc3hnYmVfaW5pdF9waHkoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zYW1zdW5nL3N4Z2JlL3N4Z2JlX21haW4uYy0zMDAtXFx0aWYgKHBoeWRldi1cXHUwMDNlcGh5X2lkID09IDApIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zYW1zdW5nL3N4Z2JlL3N4Z2JlX21haW4uYzozMDE6XFx0XFx0cGh5X2Rpc2Nvbm5lY3QocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zYW1zdW5nL3N4Z2JlL3N4Z2JlX21haW4uYy0zMDItXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zYW1zdW5nL3N4Z2JlL3N4Z2JlX21haW4uYz0xMDU4PXN0YXRpYyBpbnQgc3hnYmVfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2Ftc3VuZy9zeGdiZS9zeGdiZV9tYWluLmMtMTE5My1cXHRpZiAoZGV2LVxcdTAwM2VwaHlkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2Ftc3VuZy9zeGdiZS9zeGdiZV9tYWluLmM6MTE5NDpcXHRcXHRwaHlfZGlzY29ubmVjdChkZXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2Ftc3VuZy9zeGdiZS9zeGdiZV9tYWluLmMtMTE5NS1waHlfZXJyb3I6XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zYW1zdW5nL3N4Z2JlL3N4Z2JlX21haW4uYz0xMjA3PXN0YXRpYyBpbnQgc3hnYmVfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2Ftc3VuZy9zeGdiZS9zeGdiZV9tYWluLmMtMTIxNi1cXHRcXHRwaHlfc3RvcChkZXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2Ftc3VuZy9zeGdiZS9zeGdiZV9tYWluLmM6MTIxNzpcXHRcXHRwaHlfZGlzY29ubmVjdChkZXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2Ftc3VuZy9zeGdiZS9zeGdiZV9tYWluLmMtMTIxOC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zbXNjL3Ntc2M5MTF4LmM9MTAxNT1zdGF0aWMgaW50IHNtc2M5MTF4X21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc21zYy9zbXNjOTExeC5jLTEwNTEtXFx0XFx0U01TQ19XQVJOKHBkYXRhLCBodywgXFxcIkZhaWxlZCBMb29wIEJhY2sgVGVzdFxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Ntc2Mvc21zYzkxMXguYzoxMDUyOlxcdFxcdHBoeV9kaXNjb25uZWN0KHBoeWRldik7XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDEzOjA1OjIyLjMzMzUxNTQ2MloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMwMzU4NzI2NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBQSFkgRGlzY29ubmVjdGlvbiBNZXRob2RzKipcblxuT2theSwgc28gSSBuZWVkIHRvIGRpZyBpbnRvIGhvdyBkcml2ZXJzIGhhbmRsZSBQSFkgZGlzY29ubmVjdGlvbi4gTXkgbWFpbiBmb2N1cyBpcyBvbiB3aGF0IGRpZmZlcmVudCBkcml2ZXJzIGFyZSBjYWxsaW5nIHdoZW4gYSBwaHlzaWNhbCBsYXllciBjb25uZWN0aW9uIGlzIHNldmVyZWQgb3IgYSBkZXZpY2UgaXMgZGV0YWNoZWQuIEkga25vdyB0aGlzIGlzIHR5cGljYWxseSBhY2hpZXZlZCB0aHJvdWdoIGVpdGhlciBgcGh5X2Rpc2Nvbm5lY3RgIG9yIGBwaHlfZGV0YWNoYCwgYnV0IEkgbmVlZCB0byBzZWUgKndobyogaXMgdXNpbmcgd2hhdCBhbmQgd2hlbi4gSSdtIHRoaW5raW5nLCBpbiB0aGUgY29udGV4dCBvZiBuZXR3b3JrIGRldmljZXMsIHRoaXMgaXMgZ29pbmcgdG8gYmUgY29tbW9uIGluIFVTQi1iYXNlZCBFdGhlcm5ldCBkb25nbGVzIOKAkyB0aG9zZSBBU2l4LCBBWDg4MTc5LCBETTk2MDEsIFNNU0M5NXh4IHR5cGVzIOKAkyBhbmQgYWxzbyB2aXJ0dWFsIGRyaXZlcnMuIEJleW9uZCB0aGVzZSwgSSBzaG91bGQgcHJvYmFibHkgYWxzbyBleHBsb3JlIHN0YW5kYXJkIGRyaXZlcnMgdG9vLCBzdWNoIGFzIGByODE2OWAgb24gUENJIG9yIHdpdGhpbiBhIFFFTVUgZW52aXJvbm1lbnQsIHRvIHNlZSBpZiB0aGV5IHV0aWxpemUgdGhlc2UgbWV0aG9kcyBhcyB3ZWxsLiBVbHRpbWF0ZWx5LCB0aGUgcXVlc3Rpb24gdG8gYmUgYW5zd2VyZWQgaXMsIGRvZXMgYHI4MTY5YCwgYHVzYm5ldGAsIGBtZGlvLWdwaW9gLCBvciBhbnkgb3RoZXIgcmVsZXZhbnQgZHJpdmVyIHVzZSBgcGh5X2Rpc2Nvbm5lY3RgIG9yIGBwaHlfZGV0YWNoYD8gVGltZSB0byBzdGFydCBjcm9zcy1yZWZlcmVuY2luZyBhbmQgcmVhZGluZyB0aGUgc291cmNlIGNvZGUhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNzc3LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDEzOjA1OjI1LjM2OTM5MTE4OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzAyMTAwOTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5X2Rpc2Nvbm5lY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYz0yMzc9c3RhdGljIGludCBheDg4MTcyYV9zdG9wKHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTI0Ni1cXHRcXHRwaHlfc3RvcChwcml2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjI0NzpcXHRcXHRwaHlfZGlzY29ubmVjdChwcml2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTI0OC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYz0xMzE3PXN0YXRpYyB2b2lkIHNtc2M5NXh4X3VuYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMTMyMC1cXG5kcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYzoxMzIxOlxcdHBoeV9kaXNjb25uZWN0KGRldi1cXHUwMDNlbmV0LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jLTEzMjItXFx0bWRpb2J1c191bnJlZ2lzdGVyKHBkYXRhLVxcdTAwM2VtZGlvYnVzKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTM6MDU6MjUuNDM5NjA3MjU2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM4NTU0Mjk2NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ3VycmVudCBJbnZlc3RpZ2F0aW9uIGludG8gTmV0d29yayBJbnRlcmZhY2UgRGlzY29ubmVjdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIG5ldHdvcmsgaW50ZXJmYWNlIGRpc2Nvbm5lY3Rpb25zLCBhbmQgSSd2ZSBzdHVtYmxlZCB1cG9uIGEgZmV3IGludGVyZXN0aW5nIHBvaW50cy4gRmlyc3QsIEkgbm90aWNlZCB0aGF0IGByODE2OV9tYWluLmNgIGV4cGxpY2l0bHkgdXNlcyBgcGh5X2Rpc2Nvbm5lY3QodHAtXHUwMDNlcGh5ZGV2KWAgd2l0aGluIGl0cyBgcnRsODE2OV9jbG9zZWAgZnVuY3Rpb24uIFRoaXMgaXMgc2lnbmlmaWNhbnQuIFRoZSBjcnVjaWFsIHF1ZXN0aW9uLCBvZiBjb3Vyc2UsIGlzOiBXaGVuIGRvZXMgYHJ0bDgxNjlfY2xvc2VgIGdldCBleGVjdXRlZD8gRnJvbSBteSB1bmRlcnN0YW5kaW5nLCB0aGlzIGZ1bmN0aW9uIHJ1bnMgd2hlbiBJIGlzc3VlIGNvbW1hbmRzIGxpa2UgYGlwIGxpbmsgc2V0IGV0aDAgZG93bmAsIG9yIHdoZW4gdGhlIHNvY2tldCBjbG9zZXMsIG9yIHdoZW4gdGhlIG5ldHdvcmsgZGV2aWNlIGl0c2VsZiBpcyBicm91Z2h0IGRvd24uXG5cbk5vdywgcmVtZW1iZXIgdGhhdCBgcjgxNjlgIG9mdGVuIHJlcHJlc2VudHMgdGhlIHN0YW5kYXJkIFJlYWx0ZWsgTklDIHRoYXQncyBlbXVsYXRlZCB3aXRoaW4gYSBRRU1VIGVudmlyb25tZW50LCBlc3BlY2lhbGx5IHdoZW4gdXNpbmcgdGhlIGAtbmV0IG5pYyxtb2RlbD1ydGw4MTM5YCBvciBgLW5ldCBuaWMsbW9kZWw9cnRsODE2OWAgb3B0aW9ucywgb3IgaWYgYSBQQ0kgZGV2aWNlIG9mIHRoYXQgdHlwZSBpcyBzcGVjaWZpZWQuIFRoaXMgaXMgaW1wb3J0YW50IHRvIGtlZXAgaW4gbWluZCwgYmVjYXVzZSBpdCdzIGEgY29tbW9uIHNjZW5hcmlvIGluIG1hbnkgdGVzdGluZyBlbnZpcm9ubWVudHMuIEkgc2hvdWxkIGFsc28gcmVtZW1iZXIgdGhhdCBvdGhlciBzaW1pbGFyIGRyaXZlcnMsIGxpa2UgYGF4ODgxNzJhYCBhbmQgYHNtc2M5NXh4YCwgYXJlIGFsc28gVVNCIGdhZGdldHMvZHJpdmVycyB3aGljaCBhcmUgYWNjZXNzaWJsZSBpbiBzeXprYWxsZXIuXG5cbk5leHQsIEkgdGhpbmsgaXQncyB3b3J0aCB0YWtpbmcgYSBjbG9zZXIgbG9vayBhdCBgcGh5X2F0dGFjaF9kaXJlY3RgIHdpdGhpbiBgZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY2AuIFNwZWNpZmljYWxseSwgSSB3YW50IHRvIHVuZGVyc3RhbmQgaG93IGl0IGhhbmRsZXMgZmFpbHVyZXMuIEkgcmVjYWxsIHRoYXQgd2hlbiBgcGh5X2F0dGFjaF9kaXJlY3RgIGZhaWxzIOKAkyBmb3IgZXhhbXBsZSwgYXQgcHJvYmUgb3IgYXR0YWNoIHRpbWUsIHByaW9yIHRvIHN1Y2Nlc3NmdWwgcmVnaXN0cmF0aW9uIOKAkyBpdCBjYWxscyBgcGh5X2RldGFjaChwaHlkZXYpYC4gSSdtIGdvaW5nIHRvIGZvY3VzIG15IGF0dGVudGlvbiBhcm91bmQgbGluZXMgMTgwMC0xOTAwIGluIHRoYXQgZmlsZSB0byBiZXR0ZXIgdW5kZXJzdGFuZCB0aGUgZmFpbHVyZSBzY2VuYXJpb3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNDIwLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDEzOjA1OjI5LjI5NTAzOTc4NloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDI5NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxODcwLFxuICBcIkxpbmVDb3VudFwiOiA0NVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxODcwOlxcdFxcbjE4NzE6XFx0XFx0LyogRG8gaW5pdGlhbCBjb25maWd1cmF0aW9uIGhlcmUsIG5vdyB0aGF0XFxuMTg3MjpcXHRcXHQgKiB3ZSBoYXZlIGNlcnRhaW4ga2V5IHBhcmFtZXRlcnNcXG4xODczOlxcdFxcdCAqIChkZXZfZmxhZ3MgYW5kIGludGVyZmFjZSlcXG4xODc0OlxcdFxcdCAqL1xcbjE4NzU6XFx0XFx0ZXJyID0gcGh5X2luaXRfaHcocGh5ZGV2KTtcXG4xODc2OlxcdFxcdGlmIChlcnIpXFxuMTg3NzpcXHRcXHRcXHRnb3RvIGVycm9yO1xcbjE4Nzg6XFx0XFxuMTg3OTpcXHRcXHRwaHlfcmVzdW1lKHBoeWRldik7XFxuMTg4MDpcXHRcXG4xODgxOlxcdFxcdC8qKlxcbjE4ODI6XFx0XFx0ICogSWYgdGhlIGV4dGVybmFsIHBoeSB1c2VkIGJ5IGN1cnJlbnQgbWFjIGludGVyZmFjZSBpcyBtYW5hZ2VkIGJ5XFxuMTg4MzpcXHRcXHQgKiBhbm90aGVyIG1hYyBpbnRlcmZhY2UsIHNvIHdlIHNob3VsZCBjcmVhdGUgYSBkZXZpY2UgbGluayBiZXR3ZWVuXFxuMTg4NDpcXHRcXHQgKiBwaHkgZGV2IGFuZCBtYWMgZGV2LlxcbjE4ODU6XFx0XFx0ICovXFxuMTg4NjpcXHRcXHRpZiAoZGV2IFxcdTAwMjZcXHUwMDI2IHBoeWRldi1cXHUwMDNlbWRpby5idXMtXFx1MDAzZXBhcmVudCBcXHUwMDI2XFx1MDAyNiBkZXYtXFx1MDAzZWRldi5wYXJlbnQgIT0gcGh5ZGV2LVxcdTAwM2VtZGlvLmJ1cy1cXHUwMDNlcGFyZW50KVxcbjE4ODc6XFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2VkZXZsaW5rID0gZGV2aWNlX2xpbmtfYWRkKGRldi1cXHUwMDNlZGV2LnBhcmVudCwgXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5kZXYsXFxuMTg4ODpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgIERMX0ZMQUdfUE1fUlVOVElNRSB8IERMX0ZMQUdfU1RBVEVMRVNTKTtcXG4xODg5OlxcdFxcbjE4OTA6XFx0XFx0cmV0dXJuIGVycjtcXG4xODkxOlxcdFxcbjE4OTI6XFx0ZXJyb3I6XFxuMTg5MzpcXHRcXHQvKiBwaHlfZGV0YWNoKCkgZG9lcyBhbGwgb2YgdGhlIGNsZWFudXAgYmVsb3cgKi9cXG4xODk0OlxcdFxcdHBoeV9kZXRhY2gocGh5ZGV2KTtcXG4xODk1OlxcdFxcdHJldHVybiBlcnI7XFxuMTg5NjpcXHRcXG4xODk3OlxcdGVycm9yX21vZHVsZV9wdXQ6XFxuMTg5ODpcXHRcXHRtb2R1bGVfcHV0KGQtXFx1MDAzZWRyaXZlci1cXHUwMDNlb3duZXIpO1xcbjE4OTk6XFx0XFx0cGh5ZGV2LVxcdTAwM2Vpc19nZW5waHlfZHJpdmVuID0gMDtcXG4xOTAwOlxcdFxcdGQtXFx1MDAzZWRyaXZlciA9IE5VTEw7XFxuMTkwMTpcXHRlcnJvcl9wdXRfZGV2aWNlOlxcbjE5MDI6XFx0XFx0cHV0X2RldmljZShkKTtcXG4xOTAzOlxcdFxcdGlmIChuZGV2X293bmVyICE9IGJ1cy1cXHUwMDNlb3duZXIpXFxuMTkwNDpcXHRcXHRcXHRtb2R1bGVfcHV0KGJ1cy1cXHUwMDNlb3duZXIpO1xcbjE5MDU6XFx0XFx0cmV0dXJuIGVycjtcXG4xOTA2OlxcdH1cXG4xOTA3OlxcdEVYUE9SVF9TWU1CT0wocGh5X2F0dGFjaF9kaXJlY3QpO1xcbjE5MDg6XFx0XFxuMTkwOTpcXHQvKipcXG4xOTEwOlxcdCAqIHBoeV9kZXRhY2ggLSBkZXRhY2ggYSBQSFkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlXFxuMTkxMTpcXHQgKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3RcXG4xOTEyOlxcdCAqXFxuMTkxMzpcXHQgKiBUaGlzIGRldGFjaGVzIHRoZSBwaHkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlIGFuZCB0aGUgcGh5XFxuMTkxNDpcXHQgKiBkcml2ZXIsIGFuZCBkcm9wcyB0aGUgcmVmZXJlbmNlIGNvdW50IHRha2VuIGluIHBoeV9hdHRhY2hfZGlyZWN0KCkuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDEzOjA1OjI5LjI5NTQ0NjAzN1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3MTg0NTY0MzM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUEhZIERldmljZSBEZXRhY2htZW50IExvZ2ljKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYHBoeV9kZXRhY2hgLCB0aGUgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIGNsZWFubHkgc2VwYXJhdGluZyBhIFBIWSBkZXZpY2UgZnJvbSBpdHMgbmV0d29yayBkZXZpY2UuIE15IHByaW1hcnkgcXVlc3Rpb24gaXMgYWx3YXlzICp3aHkqIHdhcyB0aGlzIGNoYW5nZSBtYWRlPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbW90aXZhdGlvbiBiZWhpbmQgdGhpcyBtb2RpZmljYXRpb24sIHNvIGxldCdzIGRpZyBpbnRvIHRoZSBnaXQgbG9nIGFuZCB0aGUgY29tbWl0IG1lc3NhZ2UgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY2hhbmdlLiBDb250ZXh0IGlzIGV2ZXJ5dGhpbmcuIEknbGwgYWxzbyByZWFkIHRoZSBzdXJyb3VuZGluZyBjb2RlLCBlc3BlY2lhbGx5IGFueXRoaW5nIHJlbGF0ZWQgdG8gdGhlIGBod3Byb3ZgIHZhcmlhYmxlIGFuZCB0aGUgYHJ0bmxfZGVyZWZlcmVuY2VgIG1hY3JvLlxuXG5BaGEsIEkgc2VlIHdoYXQncyBoYXBwZW5pbmcuIFRoZSBvcmlnaW5hbCBjb2RlIHVzZWQgYHJ0bmxfZGVyZWZlcmVuY2UoZGV2LVx1MDAzZWh3cHJvdilgLCB3aGljaCBleHBhbmRzIHRvIGByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGRldi1cdTAwM2Vod3Byb3YsIGxvY2tkZXBfcnRubF9pc19oZWxkKCkpYC4gVGhlIGlzc3VlIGFwcGVhcnMgdG8gYmUgdGhhdCBgcGh5X2RldGFjaGAgY291bGQgYmUgY2FsbGVkICpiZWZvcmUqIHRoZSBSVE5MIGxvY2sgd2FzIGFjcXVpcmVkLiBGb3IgaW5zdGFuY2UsIHRoaXMgY291bGQgaGFwcGVuIGR1cmluZyBhIHByb2JlIGVycm9yIHNjZW5hcmlvLCBwZXJoYXBzIGJlZm9yZSB0aGUgbmV0d29yayBkZXZpY2Ugd2FzIGZ1bGx5IHJlZ2lzdGVyZWQgKGBkZXYtXHUwMDNlcmVnX3N0YXRlICE9IE5FVFJFR19SRUdJU1RFUkVEYCkuIEluIHRoaXMgY2FzZSwgYGxvY2tkZXBfcnRubF9pc19oZWxkKClgIHdvdWxkIGV2YWx1YXRlIHRvIGZhbHNlLCBsZWFkaW5nIHRvIGEgbG9ja2RlcCB3YXJuaW5nLiBJJ3ZlIHNlZW4gdGhlc2Ugc29ydHMgb2Ygd2FybmluZ3MgYmVmb3JlOyB0aGV5IGNhbiBiZSB0cmlja3kgdG8gZGVidWcuXG5cblRoZSBwYXRjaCByZXNvbHZlcyB0aGUgcHJvYmxlbSBieSBjaGFuZ2luZyB0aGUgYHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWRgIHNlY29uZCBhcmd1bWVudCB0byBhbGxvdyB0aGUgY29kZSB0byBydW4sIGVzc2VudGlhbGx5IHVzaW5nIGFuIFwib3JcIiBgfHxgIGNvbmRpdGlvbjogYGxvY2tkZXBfcnRubF9pc19oZWxkKCkgfHwgZGV2LVx1MDAzZXJlZ19zdGF0ZSAhPSBORVRSRUdfUkVHSVNURVJFRGAuIFRoaXMgY29ycmVjdGx5IHByb3RlY3RzIHRoZSBkZXJlZmVyZW5jZS5cblxuTm93LCBqdXN0IHRvIGJlIHN1cmUsIEkgc2hvdWxkIGNoZWNrIHRoZSBLY29uZmlnIHNldHRpbmdzIGZvciB0aGlzIHBhcnQgb2YgdGhlIGRyaXZlci4gSSB3aWxsIGxvb2sgYXQgdGhlIGBkcml2ZXJzL25ldC9waHkvYCBkaXJlY3RvcnksIHRvIGNvbmZpcm0gaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGltcGFjdCB0aGlzIHBhcnRpY3VsYXIgbG9naWMuIFRoaXMgd2lsbCBhbGxvdyBtZSB0byBiZSBmdWxseSBjb25maWRlbnQgaW4gdGhlIGFuYWx5c2lzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjc2NiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDEzOjA1OjM2LjQ4MDAxNDAwNVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU4MTAwMzY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBIWUxJQlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTY9Y29uZmlnIFBIWUxJTktcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy03LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6ODpcXHRzZWxlY3QgUEhZTElCXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctOS1cXHRzZWxlY3QgU1dQSFlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE0LVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjE1Om1lbnVjb25maWcgUEhZTElCXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTYtXFx0dHJpc3RhdGUgXFxcIlBIWSBEZXZpY2Ugc3VwcG9ydCBhbmQgaW5mcmFzdHJ1Y3R1cmVcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0yMS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzoyMjppZiBQSFlMSUJcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0yMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTQ2PWNvbmZpZyBPUEVOX0FMTElBTkNFX0hFTFBFUlNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTQ4LVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjQ5OmNvbmZpZyBQSFlMSUJfTEVEU1xcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTUwLVxcdGRlZl9ib29sIE9GXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6NTE6XFx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1QSFlMSUJcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy01Mi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz01Nj1jb25maWcgRklYRURfUEhZXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy02NC1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo2NTpjb25maWcgUlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6NjY6ICAgICAgICBib29sIFxcXCJSdXN0IFBIWUxJQiBhYnN0cmFjdGlvbnMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy02Ny0gICAgICAgIGRlcGVuZHMgb24gUlVTVFxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjY4OiAgICAgICAgZGVwZW5kcyBvbiBQSFlMSUI9eVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTY5LSAgICAgICAgaGVscFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc9OTM9Y29uZmlnIEFJUl9BTjg4MDFfUEhZXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctOTQtXFx0dHJpc3RhdGUgXFxcIkFpcm9oYSBBTjg4MDEgR2lnYWJpdCBQSFlcXFwiXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6OTU6XFx0c2VsZWN0IEFJUl9ORVRfUEhZTElCXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctOTYtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc9OTk9Y29uZmlnIEFJUl9FTjg4MTFIX1BIWVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTEwMC1cXHR0cmlzdGF0ZSBcXFwiQWlyb2hhIEVOODgxMUggMi41IEdpZ2FiaXQgUEhZXFxcIlxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjEwMTpcXHRzZWxlY3QgQUlSX05FVF9QSFlMSUJcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xMDItXFx0c2VsZWN0IFBIWV9DT01NT05fUFJPUFNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTEwNS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzoxMDY6Y29uZmlnIEFJUl9ORVRfUEhZTElCXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTA3LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz0xNDU9Y29uZmlnIEFNQ0NfUVQyMDI1X1BIWVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE0Ni1cXHR0cmlzdGF0ZSBcXFwiQU1DQyBRVDIwMjUgUEhZXFxcIlxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjE0NzpcXHRkZXBlbmRzIG9uIFJVU1RfUEhZTElCX0FCU1RSQUNUSU9OU1xcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE0OC1cXHRkZXBlbmRzIG9uIFJVU1RfRldfTE9BREVSX0FCU1RSQUNUSU9OU1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc9MTYwPWNvbmZpZyBBWDg4Nzk2Ql9SVVNUX1BIWVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE2MS1cXHRib29sIFxcXCJSdXN0IHJlZmVyZW5jZSBkcml2ZXIgZm9yIEFzaXggUEhZc1xcXCJcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzoxNjI6XFx0ZGVwZW5kcyBvbiBSVVNUX1BIWUxJQl9BQlNUUkFDVElPTlMgXFx1MDAyNlxcdTAwMjYgQVg4ODc5NkJfUEhZXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTYzLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTE2OD1jb25maWcgQlJPQURDT01fUEhZXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTY5LVxcdHRyaXN0YXRlIFxcXCJCcm9hZGNvbSA1NFhYIFBIWXNcXFwiXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6MTcwOlxcdHNlbGVjdCBCQ01fTkVUX1BIWUxJQlxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE3MS1cXHRzZWxlY3QgQkNNX05FVF9QSFlQVFAgaWYgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz0xNzc9Y29uZmlnIEJDTTU0MTQwX1BIWVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTc5LVxcdGRlcGVuZHMgb24gSFdNT04gfHwgSFdNT049blxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjE4MDpcXHRzZWxlY3QgQkNNX05FVF9QSFlMSUJcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xODEtXFx0c2VsZWN0IFBIWV9QQUNLQUdFXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz0xODg9Y29uZmlnIEJDTTYzWFhfUEhZXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xOTAtXFx0ZGVwZW5kcyBvbiBCQ002M1hYIHx8IENPTVBJTEVfVEVTVFxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjE5MTpcXHRzZWxlY3QgQkNNX05FVF9QSFlMSUJcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xOTItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc9MTk1PWNvbmZpZyBCQ003WFhYX1BIWVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE5Ni1cXHR0cmlzdGF0ZSBcXFwiQnJvYWRjb20gN3h4eCBTT0NzIGludGVybmFsIFBIWXNcXFwiXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6MTk3OlxcdHNlbGVjdCBCQ01fTkVUX1BIWUxJQlxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE5OC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz0yMTI9Y29uZmlnIEJDTV9DWUdOVVNfUEhZXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0yMTUtXFx0ZGVwZW5kcyBvbiBNRElPX0JDTV9JUFJPQ1xcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjIxNjpcXHRzZWxlY3QgQkNNX05FVF9QSFlMSUJcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0yMTctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMjI0LVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjIyNTpjb25maWcgQkNNX05FVF9QSFlMSUJcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0yMjYtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTQ4Nz1jb25maWcgWElMSU5YX0dNSUkyUkdNSUlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTQ5My1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo0OTQ6ZW5kaWYgIyBQSFlMSUJcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT00PWxpYnBoeS15XFx0XFx0XFx0Oj0gcGh5Lm8gcGh5LWM0NS5vIHBoeS1jb3JlLm8gcGh5X2RldmljZS5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS04LVxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo5OmlmZGVmIENPTkZJR19QSFlMSUJcXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MTA6IyBidWlsdC1pbiB3aGVuZXZlciBQSFlMSUIgaXMgYnVpbHQtaW4gb3IgbW9kdWxlXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTExLW9iai15XFx0XFx0XFx0XFx0Kz0gc3R1YnMub1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTE2PWxpYnBoeS0kKENPTkZJR19PUEVOX0FMTElBTkNFX0hFTFBFUlMpICs9IG9wZW5fYWxsaWFuY2VfaGVscGVycy5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTE3LVxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZToxODpvYmotJChDT05GSUdfUEhZTElCKVxcdFxcdCs9IG1kaW9fYnVzLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtMTktb2JqLSQoQ09ORklHX1BIWUxJTkspXFx0XFx0Kz0gcGh5bGluay5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjIwOm9iai0kKENPTkZJR19QSFlMSUIpXFx0XFx0Kz0gbGlicGh5Lm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MjE6b2JqLSQoQ09ORklHX1BIWUxJQilcXHRcXHQrPSBtZGlvX2RldnJlcy5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTIyLW9iai0kKENPTkZJR19QSFlfUEFDS0FHRSlcXHQrPSBwaHlfcGFja2FnZS5vXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU9MzQ9b2JqLSQoQ09ORklHX0FJUl9FTjg4MTFIX1BIWSkgICArPSBhaXJfZW44ODExaC5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjM1Om9iai0kKENPTkZJR19BSVJfTkVUX1BIWUxJQilcXHQrPSBhaXJfcGh5X2xpYi5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTM2LW9iai0kKENPTkZJR19BTURfUEhZKVxcdFxcdCs9IGFtZC5vXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU9NTA9b2JqLSQoQ09ORklHX0JDTV9DWUdOVVNfUEhZKVxcdCs9IGJjbS1jeWdudXMub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo1MTpvYmotJChDT05GSUdfQkNNX05FVF9QSFlMSUIpXFx0Kz0gYmNtLXBoeS1saWIub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS01Mi1vYmotJChDT05GSUdfQkNNX05FVF9QSFlQVFApXFx0Kz0gYmNtLXBoeS1wdHAub1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL0tjb25maWc9Mj1jb25maWcgTUVESUFURUtfMlA1R0VfUEhZXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvS2NvbmZpZy00LVxcdGRlcGVuZHMgb24gKEFSTTY0IFxcdTAwMjZcXHUwMDI2IEFSQ0hfTUVESUFURUspIHx8IENPTVBJTEVfVEVTVFxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9LY29uZmlnOjU6XFx0c2VsZWN0IE1US19ORVRfUEhZTElCXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL0tjb25maWctNi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvS2NvbmZpZz0xMz1jb25maWcgTUVESUFURUtfR0VfUEhZXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL0tjb25maWctMTQtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIEdpZ2FiaXQgRXRoZXJuZXQgUEhZc1xcXCJcXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvS2NvbmZpZzoxNTpcXHRzZWxlY3QgTVRLX05FVF9QSFlMSUJcXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvS2NvbmZpZy0xNi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvS2NvbmZpZz0zMz1jb25maWcgTUVESUFURUtfR0VfU09DX1BIWVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL0tjb25maWctMzctXFx0XFx0ICAgRUNPTkVUIHx8IENPTVBJTEVfVEVTVFxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9LY29uZmlnOjM4OlxcdHNlbGVjdCBNVEtfTkVUX1BIWUxJQlxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9LY29uZmlnLTM5LVxcdHNlbGVjdCBQSFlfUEFDS0FHRVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL0tjb25maWctNTEtXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL0tjb25maWc6NTI6Y29uZmlnIE1US19ORVRfUEhZTElCXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL0tjb25maWctNTMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9NYWtlZmlsZT01PW9iai0kKENPTkZJR19NRURJQVRFS19HRV9TT0NfUEhZKVxcdCs9IG10ay1nZS1zb2Mub1xcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19NVEtfTkVUX1BIWUxJQilcXHRcXHQrPSBtdGstcGh5LWxpYi5vXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTM2ODk9c3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zODA5LVxcdCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MzgxMDpcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfUEhZTElCX0xFRFMpIFxcdTAwMjZcXHUwMDI2ICFwaHlfZHJpdmVyX2lzX2dlbnBoeShwaHlkZXYpKSB7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zODExLVxcdFxcdGVyciA9IG9mX3BoeV9sZWRzKHBoeWRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTM4MzM9c3RhdGljIGludCBwaHlfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzgzOC1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjM4Mzk6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1BIWUxJQl9MRURTKSBcXHUwMDI2XFx1MDAyNiAhcGh5X2RyaXZlcl9pc19nZW5waHkocGh5ZGV2KSlcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTM4NDAtXFx0XFx0cGh5X2xlZHNfdW5yZWdpc3RlcihwaHlkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0zODY4PXN0YXRpYyBpbnQgcGh5X2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgcGh5X2RyaXZlciAqbmV3X2RyaXZlcixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzg4MS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjM4ODI6XFx0LyogUEhZTElCIGRldmljZSBkcml2ZXJzIG11c3Qgbm90IG1hdGNoIHVzaW5nIGEgRFQgY29tcGF0aWJsZSB0YWJsZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzg4My1cXHQgKiBhcyB0aGlzIGJ5cGFzc2VzIG91ciBjaGVja3MgdGhhdCB0aGUgbWRpb2RldiB0aGF0IGlzIGJlaW5nIG1hdGNoZWRcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWItaW50ZXJuYWwuaC01LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWItaW50ZXJuYWwuaDo2OiNpZm5kZWYgX19QSFlMSUJfSU5URVJOQUxfSFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWItaW50ZXJuYWwuaDo3OiNkZWZpbmUgX19QSFlMSUJfSU5URVJOQUxfSFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWItaW50ZXJuYWwuaC04LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpYi1pbnRlcm5hbC5oPTMwPWludCBnZW5waHlfYzQ1X3JlYWRfZWVlX2FkdihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1bnNpZ25lZCBsb25nICphZHYpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWItaW50ZXJuYWwuaC0zMS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmg6MzI6I2VuZGlmIC8qIF9fUEhZTElCX0lOVEVSTkFMX0ggKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWIuaC01LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWIuaDo2OiNpZm5kZWYgX19QSFlMSUJfSFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWIuaDo3OiNkZWZpbmUgX19QSFlMSUJfSFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWIuaC04LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oPTM4PWludCBtbWRfcGh5X3dyaXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfYWRkciwgYm9vbCBpc19jNDUsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLmgtNDAtXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oOjQxOiNlbmRpZiAvKiBfX1BIWUxJQl9IICovXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyMDM9c3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjI2LSAqIHBoeV9hdHRhY2hfZGlyZWN0KCkuIENvbmZpZ3VyZSB0aGUgQHBoeSBhY2NvcmRpbmcgdG8gdGhlIE1BQyBkcml2ZXInc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjIyNzogKiBjYXBhYmlsaXRpZXMsIHN0YXJ0IHRoZSBQSFlMSUIgc3RhdGUgbWFjaGluZSBhbmQgZW5hYmxlIGFueSBpbnRlcnJ1cHRzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjI4LSAqIHRoYXQgdGhlIFBIWSBzdXBwb3J0cy5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnOjI6Y29uZmlnIFFDT01fTkVUX1BIWUxJQlxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vS2NvbmZpZz01PWNvbmZpZyBBVDgwM1hfUEhZXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vS2NvbmZpZy02LVxcdHRyaXN0YXRlIFxcXCJRdWFsY29tbSBBdGhlcm9zIEFSODAzWCBQSFlzXFxcIlxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWc6NzpcXHRzZWxlY3QgUUNPTV9ORVRfUEhZTElCXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vS2NvbmZpZy04LVxcdGRlcGVuZHMgb24gUkVHVUxBVE9SXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnPTEyPWNvbmZpZyBRQ0E4M1hYX1BIWVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWctMTMtXFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIEF0aGVyb3MgUUNBODMzeCBQSFlzXFxcIlxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWc6MTQ6XFx0c2VsZWN0IFFDT01fTkVUX1BIWUxJQlxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWctMTUtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vS2NvbmZpZz0xOD1jb25maWcgUUNBODA4WF9QSFlcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnLTE5LVxcdHRyaXN0YXRlIFxcXCJRdWFsY29tbSBRQ0E4MDh4IFBIWXNcXFwiXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vS2NvbmZpZzoyMDpcXHRzZWxlY3QgUUNPTV9ORVRfUEhZTElCXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vS2NvbmZpZy0yMS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnPTI0PWNvbmZpZyBRQ0E4MDdYX1BIWVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL0tjb25maWctMjUtXFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIFFDQTgwN3ggUEhZc1xcXCJcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnOjI2OlxcdHNlbGVjdCBRQ09NX05FVF9QSFlMSUJcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9LY29uZmlnLTI3LVxcdHNlbGVjdCBQSFlfUEFDS0FHRVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vTWFrZWZpbGU6MjpvYmotJChDT05GSUdfUUNPTV9ORVRfUEhZTElCKVxcdCs9IHFjb20tcGh5LWxpYi5vXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vTWFrZWZpbGUtMy1vYmotJChDT05GSUdfQVQ4MDNYX1BIWSlcXHQrPSBhdDgwM3gub1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Ntc2MuYz02Nj1pbnQgc21zY19waHlfY29uZmlnX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9zbXNjLmMtNzUtXFx0XFx0cmMgPSBwaHlfd3JpdGUocGh5ZGV2LCBNSUlfTEFOODNDMTg1X0lNLFxcbmRyaXZlcnMvbmV0L3BoeS9zbXNjLmM6NzY6XFx0XFx0XFx0ICAgICAgIE1JSV9MQU44M0MxODVfSVNGX0lOVF9QSFlMSUJfRVZFTlRTKTtcXG5kcml2ZXJzL25ldC9waHkvc21zYy5jLTc3LVxcdH0gZWxzZSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvc21zYy5jPTEwMT1pcnFyZXR1cm5fdCBzbXNjX3BoeV9oYW5kbGVfaW50ZXJydXB0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvc21zYy5jLTExMi1cXG5kcml2ZXJzL25ldC9waHkvc21zYy5jOjExMzpcXHRpZiAoIShpcnFfc3RhdHVzIFxcdTAwMjYgTUlJX0xBTjgzQzE4NV9JU0ZfSU5UX1BIWUxJQl9FVkVOVFMpKVxcbmRyaXZlcnMvbmV0L3BoeS9zbXNjLmMtMTE0LVxcdFxcdHJldHVybiBJUlFfTk9ORTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9zdHVicy5jLTMtICogU3R1YnMgZm9yIFBIWSBsaWJyYXJ5IGZ1bmN0aW9uYWxpdHkgY2FsbGVkIGJ5IHRoZSBjb3JlIG5ldHdvcmsgc3RhY2suXFxuZHJpdmVycy9uZXQvcGh5L3N0dWJzLmM6NDogKiBUaGVzZSBhcmUgbmVjZXNzYXJ5IGJlY2F1c2UgQ09ORklHX1BIWUxJQiBjYW4gYmUgYSBtb2R1bGUsIGFuZCBidWlsdC1pblxcbmRyaXZlcnMvbmV0L3BoeS9zdHVicy5jLTUtICogY29kZSBjYW5ub3QgZGlyZWN0bHkgY2FsbCBzeW1ib2xzIGV4cG9ydGVkIGJ5IG1vZHVsZXMuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDEzOjA1OjM2LjczODExODY5MloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNTU2ODQ5ODc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIFBIWUxJQiBhbmQgaXRzIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgYENPTkZJR19QSFlMSUJgIGlzIGEgaGFyZCByZXF1aXJlbWVudCBmb3IgdGhlIGBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jYCBmaWxlLiBSaWdodCwgdGhhdCBtYWtlcyBzZW5zZSDigJMgUEhZTElCIGlzIGNsZWFybHkgdGhlIGNvcmUgbGlicmFyeSBmb3IgaGFuZGxpbmcgUEhZIGRldmljZXMuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgYFBIWUxJQmAgaXRzZWxmIHJlbGllcyBvbiBvdGhlciBjb3JlIG5ldHdvcmtpbmcgY29tcG9uZW50cy4gTXkgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gcXVpY2tseSBjaGVjayBpZiBgUEhZTElCYCBkZXBlbmRzIG9uIGBORVRERVZJQ0VTYC4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCByZWxhdGlvbnNoaXAuIFRoZW4sIEknbGwgZ28gc3RyYWlnaHQgdG8gYGRyaXZlcnMvbmV0L3BoeS9LY29uZmlnYCB0byBwaW5wb2ludCBleGFjdGx5IGhvdyBgUEhZTElCYCBpcyBjb25maWd1cmVkIGFuZCBhbnkgZGVwZW5kZW5jaWVzIHdpdGhpbiB0aGF0IGNvbnRleHQuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBjb21wbGV0ZSBwaWN0dXJlIG9mIGl0cyBwbGFjZSBpbiB0aGUgbmV0d29ya2luZyBzdWJzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3Njk1LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTM6MDU6NDAuMjk0OTcyODQ3WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MzE5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBQSFkgTGF5ZXIgQ29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgUEhZTElOS1xcbiAgIDc6XFx0XFx0dHJpc3RhdGVcXG4gICA4OlxcdFxcdHNlbGVjdCBQSFlMSUJcXG4gICA5OlxcdFxcdHNlbGVjdCBTV1BIWVxcbiAgMTA6XFx0XFx0aGVscFxcbiAgMTE6XFx0XFx0ICBQSFlsaW5rIG1vZGVscyB0aGUgbGluayBiZXR3ZWVuIHRoZSBQSFkgYW5kIE1BQywgYWxsb3dpbmcgZml4ZWRcXG4gIDEyOlxcdFxcdCAgY29uZmlndXJhdGlvbiBsaW5rcywgUEhZcywgYW5kIFNlcmRlcyBsaW5rcyB3aXRoIE1BQyBsZXZlbFxcbiAgMTM6XFx0XFx0ICBhdXRvbmVnb3RpYXRpb24gbW9kZXMuXFxuICAxNDpcXHRcXG4gIDE1OlxcdG1lbnVjb25maWcgUEhZTElCXFxuICAxNjpcXHRcXHR0cmlzdGF0ZSBcXFwiUEhZIERldmljZSBzdXBwb3J0IGFuZCBpbmZyYXN0cnVjdHVyZVxcXCJcXG4gIDE3OlxcdFxcdGhlbHBcXG4gIDE4OlxcdFxcdCAgRXRoZXJuZXQgY29udHJvbGxlcnMgYXJlIHVzdWFsbHkgYXR0YWNoZWQgdG8gUEhZXFxuICAxOTpcXHRcXHQgIGRldmljZXMuICBUaGlzIG9wdGlvbiBwcm92aWRlcyBpbmZyYXN0cnVjdHVyZSBmb3JcXG4gIDIwOlxcdFxcdCAgbWFuYWdpbmcgUEhZIGRldmljZXMuXFxuICAyMTpcXHRcXG4gIDIyOlxcdGlmIFBIWUxJQlxcbiAgMjM6XFx0XFxuICAyNDpcXHRjb25maWcgU1dQSFlcXG4gIDI1OlxcdFxcdGJvb2xcXG4gIDI2OlxcdFxcbiAgMjc6XFx0Y29uZmlnIFBIWV9QQUNLQUdFXFxuICAyODpcXHRcXHQgdHJpc3RhdGVcXG4gIDI5OlxcdFxcbiAgMzA6XFx0Y29uZmlnIExFRF9UUklHR0VSX1BIWVxcbiAgMzE6XFx0XFx0Ym9vbCBcXFwiU3VwcG9ydCBMRUQgdHJpZ2dlcnMgZm9yIHRyYWNraW5nIGxpbmsgc3RhdGVcXFwiXFxuICAzMjpcXHRcXHRkZXBlbmRzIG9uIExFRFNfVFJJR0dFUlNcXG4gIDMzOlxcdFxcdGhlbHBcXG4gIDM0OlxcdFxcdCAgQWRkcyBzdXBwb3J0IGZvciBhIHNldCBvZiBMRUQgdHJpZ2dlciBldmVudHMgcGVyLVBIWS4gIExpbmtcXG4gIDM1OlxcdFxcdCAgc3RhdGUgY2hhbmdlIHdpbGwgdHJpZ2dlciB0aGUgZXZlbnRzLCBmb3IgY29uc3VtcHRpb24gYnkgYW5cXG4gIDM2OlxcdFxcdCAgTEVEIGNsYXNzIGRyaXZlci4gIFRoZXJlIGFyZSB0cmlnZ2VycyBmb3IgZWFjaCBsaW5rIHNwZWVkIGN1cnJlbnRseVxcbiAgMzc6XFx0XFx0ICBzdXBwb3J0ZWQgYnkgdGhlIFBIWSBhbmQgYWxzbyBhIG9uZSBjb21tb24gXFxcImxpbmtcXFwiIHRyaWdnZXIgYXMgYVxcbiAgMzg6XFx0XFx0ICBsb2dpY2FsLW9yIG9mIGFsbCB0aGUgbGluayBzcGVlZCBvbmVzLlxcbiAgMzk6XFx0XFx0ICBBbGwgdGhlc2UgdHJpZ2dlcnMgYXJlIG5hbWVkIGFjY29yZGluZyB0byB0aGUgZm9sbG93aW5nIHBhdHRlcm46XFxuICA0MDpcXHRcXHQgICAgICBcXHUwMDNjbWlpIGJ1cyBpZFxcdTAwM2U6XFx1MDAzY3BoeVxcdTAwM2U6XFx1MDAzY3NwZWVkXFx1MDAzZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxMzowNTo0MC4yOTUxMjgzNzdaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjMyNTA5Mjg2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgdGhvdWdoIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzOlxuXG4qKk5hdmlnYXRpbmcgdGhlIE5ldHdvcmsgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBvcHRpb25zIHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBuZXR3b3JrIGRyaXZlciwgbGlrZWx5IGEgUEhZIGRyaXZlciBnaXZlbiB0aGUgY29udGV4dC4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBzdGFydCBhdCB0aGUgdG9wIGxldmVsIGFuZCB0cmFjZSBkb3duLiBJJ20gZ29pbmcgdG8ganVtcCBpbnRvIGBkcml2ZXJzL25ldC9LY29uZmlnYC4gVGhhdCdzIHdoZXJlIHRoZSBvdmVyYXJjaGluZyBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIG5ldHdvcmsgZHJpdmVycyBhcmUgbGlrZWx5IGRlZmluZWQuIFRoaXMgd2lsbCBiZSB0aGUgc3RhcnRpbmcgcG9pbnQuIEkga25vdyB0aGF0IGBkcml2ZXJzL25ldC9waHkvS2NvbmZpZ2AgaXMgaW5jbHVkZWQgZnJvbSBoZXJlLiBCeSBpbnNwZWN0aW5nIGBkcml2ZXJzL25ldC9LY29uZmlnYCwgSSBzaG91bGQgYmUgYWJsZSB0byBzZWUgZXhhY3RseSAqaG93KiB0aGUgUEhZIGNvbmZpZ3VyYXRpb24gaXMgYnJvdWdodCBpbiwgYW5kIHdoYXQgY29uZGl0aW9ucyB0cmlnZ2VyIGl0cyBpbmNsdXNpb24uIFRoYXQncyB0aGUgYmVzdCBmaXJzdCBzdGVwLiBMZXQncyBzZWUgd2hhdCdzIGluIGBkcml2ZXJzL25ldC9LY29uZmlnYC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg0MzEsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDEzOjA1OjQyLjYyMDIyNDU5M1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA5NDU4NzcxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkcml2ZXJzL25ldC9waHkvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnPTUxMj1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L2lwYS9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWctNTEzLVxcbmRyaXZlcnMvbmV0L0tjb25maWc6NTE0OnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZy01MTUtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDEzOjA1OjQ0LjcxNDgzMDAwOFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1OTczMTU0Njc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgQW5hbHlzaXM6IGBwaHlfZGV0YWNoYCBpbiBOZXR3b3JraW5nIENvZGUqKlxuXG5Pa2F5LCBzbyBoZXJlJ3MgdGhlIGJyZWFrZG93biBvZiBteSB0aGlua2luZyByZWdhcmRpbmcgdGhpcyBwYXRjaC4gRmlyc3QsIGl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogYGRyaXZlcnMvbmV0L0tjb25maWdgIGlzIGd1YXJkZWQgYnkgYG1lbnVjb25maWcgTkVUREVWSUNFU2AsIHdoaWNoIHJlbGllcyBvbiBgTkVUYCwgYW5kIGBQSFlMSUJgIGRlcGVuZHMgb24gYE5FVERFVklDRVNgLCBzbyB3ZSBoYXZlIGEgY2xlYXIgcGF0aCB0byB0aGUgY29kZS5cblxuTm93LCB0byB0aGUgZnV6emluZyBxdWVzdGlvbnMuXG5cbjEuICAqKklzIHRoZSBwYXRjaCByZWFjaGFibGU/KiogQWJzb2x1dGVseS4gVGhlIGBwaHlfZGV0YWNoYCBmdW5jdGlvbiBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZS4gSXQncyBjYWxsZWQgd2hlbiBuZXR3b3JrIGRldmljZXMgd2l0aCBQSFkgZGV2aWNlcyAobGlrZSBSZWFsdGVrIE5JQ3MsIFVTQiBuZXR3b3JrIGFkYXB0ZXJzLCBhbmQgZXZlbiBkdW1teSBvciBtb2NrIG5ldHdvcmsgZGV2aWNlcykgYXJlIG9wZW5lZCBvciBjbG9zZWQsIHVucmVnaXN0ZXJlZCwgb3Igd2hlbiBhdHRhY2ggZmFpbHMuIEFsc28gd2hlbiBQSFlMaW5rIGRpc2Nvbm5lY3RzLCB3aGljaCBpcyBhbiBpbXBvcnRhbnQgcGF0aCB0byBjb3Zlci5cblxuMi4gICoqSXMgaXQgd29ydGggZnV6emluZz8qKiBUaGlzIGlzIHdoZXJlIGl0IGdldHMgaW50ZXJlc3RpbmcuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBmb2xsb3dpbmcgY29yZSB0cmlhZ2UgcGhpbG9zb3BoeS5cblxuICAgICogICBUaGlzIHBhdGNoIG1vZGlmaWVzIGEgY3J1Y2lhbCBmdW5jdGlvbiBgcGh5X2RldGFjaCgpYCBpbiBgZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY2AuXG4gICAgKiAgIFNwZWNpZmljYWxseSwgaXQgY2hhbmdlcyBob3cgd2UgaGFuZGxlIGFuIFJDVSBwb2ludGVyLCBgZGV2LVx1MDAzZWh3cHJvdmAsIGFkZGluZyBhbiBSQ1UgcHJvdGVjdGlvbiBjaGVjaywgd2hpY2ggaXMgYW4gYXNzZXJ0aW9uIG9yIGxvY2tkZXAgYXNzZXJ0aW9uIGNoYW5nZS5cbiAgICAqICAgYHBoeV9kZXRhY2goKWAgaXMgY2FsbGVkIGJ5IG5ldHdvcmtpbmcgY29kZSBpbiByZWFjaGFibGUgZHJpdmVycyBhbmQgY29yZSBwaHlsaWIuXG4gICAgKiAgIFRoaXMgbW9kaWZpZXMgYSBjcml0aWNhbCBsb2NrZGVwIGFzc2VydGlvbiAvIHByb3RlY3Rpb24sIHNvIEknbSB0aGlua2luZyB0aGUgYW5zd2VyIHRvIHdvcnRoIGZ1enppbmcgc2hvdWxkIGJlIGB0cnVlYC5cblxuICAgIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBiZWluZyB0aG9yb3VnaCBhbmQgbm90IG1pc3NpbmcgYW55dGhpbmcuIEkgbmVlZCB0byBrbm93OlxuICAgICogYFdvcnRoRnV6emluZ2A6IGB0cnVlYFxuICAgICogICBgRm9jdXNTeW1ib2xzYDogSSdtIHplcm9pbmcgaW4gb24gYHBoeV9kZXRhY2hgLCBgcGh5X2Rpc2Nvbm5lY3RgLCBhbmQgYHBoeV9hdHRhY2hfZGlyZWN0YC4gVGhlc2UgYXJlIHRoZSBkaXJlY3QgY2FsbGVycyBvciBlbnRyeXBvaW50cyByZWxhdGVkIHRvIHRoZSBtb2RpZmllZCBmdW5jdGlvbi5cbiAgICAqICAgYEVuYWJsZUNvbmZpZ3NgOiBJJ3ZlIGdvdCBgTkVUREVWSUNFU2AgYW5kIGBQSFlMSUJgLCB3aGljaCBhcmUgYm90aCBuZWNlc3NhcnkuIEFuZCBvZiBjb3Vyc2UsIGBORVRgIGlzIGltcGxpZWQgYmVjYXVzZSBvZiB0aGUgZGVwZW5kZW5jeSBjaGFpbi5cblxuICAgIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnkgb3RoZXIgY29uZmlnIHJlcXVpcmVtZW50czpcbiAgICAqICAgYENPTkZJR19ORVRERVZJQ0VTPXlgXG4gICAgKiAgIGBDT05GSUdfUEhZTElCPXlgXG4gICAgKiAgIGAoYW5kIHBvc3NpYmx5IGBDT05GSUdfTkVUPXlgLCBidXQgYE5FVERFVklDRVNgIGRlcGVuZHMgb24gYE5FVGApLlxuXG4gICAgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBteSBmb2N1cyBzeW1ib2xzIG9uZSBsYXN0IHRpbWU6XG4gICAgKiAgIGBwaHlfZGV0YWNoYCBpcyB0aGUgKmV4YWN0KiBmdW5jdGlvbiBiZWluZyBtb2RpZmllZC5cbiAgICAqICAgYHBoeV9kaXNjb25uZWN0YCBpcyB0aGUgbWFpbiBleHBvcnRlZCB3cmFwcGVyIGZ1bmN0aW9uIGNhbGxlZCBieSBkcml2ZXJzIGR1cmluZyBjbGVhbnVwLCAnZG93bicsIG9yICd1bmJpbmQnIG9wZXJhdGlvbnMuXG4gICAgKiAgIGBwaHlfYXR0YWNoX2RpcmVjdGAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgYXR0YWNoZXMgYW5kIGNhbGxzIGBwaHlfZGV0YWNoYCBvbiB0aGUgZXJyb3IgcGF0aC4gVGhpcyBpcyBhIHZlcnkgaW1wb3J0YW50IHBhdGggdG8gY292ZXIuXG5cbkknbSBjb25maWRlbnQgSSBoYXZlIGFsbCB0aGUga2V5IHBpZWNlcy4gRXZlcnl0aGluZyBpcyBsb29raW5nIGdvb2QsIHNvIGxldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg3NDAsIk91dHB1dFRva2VucyI6MTM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDEzOjA1OjUwLjY4Nzk4OTE1NVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MzIyNDkzNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUREVWSUNFU1wiLFxuICAgIFwiUEhZTElCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGh5X2RldGFjaFwiLFxuICAgIFwicGh5X2Rpc2Nvbm5lY3RcIixcbiAgICBcInBoeV9hdHRhY2hfZGlyZWN0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvY2tkZXAvUkNVIHByb3RlY3Rpb24gYXNzZXJ0aW9uIG9uIGRldi1cXHUwMDNlaHdwcm92IHdpdGhpbiBwaHlfZGV0YWNoKCkgdG8gYXZvaWQgZmFsc2UgcG9zaXRpdmUgbG9ja2RlcCB3YXJuaW5ncyB3aGVuIGNsZWFuaW5nIHVwIG9uIHByb2JlIGZhaWx1cmUgYmVmb3JlIG5ldF9kZXZpY2UgcmVnaXN0cmF0aW9uLiBwaHlfZGV0YWNoKCkgYW5kIGl0cyBjYWxsZXJzIChzdWNoIGFzIHBoeV9kaXNjb25uZWN0KCkgYW5kIHBoeV9hdHRhY2hfZGlyZWN0KCkpIGFyZSByZWFjaGFibGUgdGhyb3VnaCBuZXR3b3JrIGRldmljZSBsaWZlY3ljbGUgYW5kIG5ldGxpbmsvc29ja2V0IGNvbmZpZ3VyYXRpb24gb3BlcmF0aW9ucyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUREVWSUNFU1wiLFxuICAgIFwiUEhZTElCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGh5X2RldGFjaFwiLFxuICAgIFwicGh5X2Rpc2Nvbm5lY3RcIixcbiAgICBcInBoeV9hdHRhY2hfZGlyZWN0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvY2tkZXAvUkNVIHByb3RlY3Rpb24gYXNzZXJ0aW9uIG9uIGRldi1cXHUwMDNlaHdwcm92IHdpdGhpbiBwaHlfZGV0YWNoKCkgdG8gYXZvaWQgZmFsc2UgcG9zaXRpdmUgbG9ja2RlcCB3YXJuaW5ncyB3aGVuIGNsZWFuaW5nIHVwIG9uIHByb2JlIGZhaWx1cmUgYmVmb3JlIG5ldF9kZXZpY2UgcmVnaXN0cmF0aW9uLiBwaHlfZGV0YWNoKCkgYW5kIGl0cyBjYWxsZXJzIChzdWNoIGFzIHBoeV9kaXNjb25uZWN0KCkgYW5kIHBoeV9hdHRhY2hfZGlyZWN0KCkpIGFyZSByZWFjaGFibGUgdGhyb3VnaCBuZXR3b3JrIGRldmljZSBsaWZlY3ljbGUgYW5kIG5ldGxpbmsvc29ja2V0IGNvbmZpZ3VyYXRpb24gb3BlcmF0aW9ucyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDEzOjA1OjUwLjgzMTIyMDU2MloiLCJTZXEiOjIxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQyMjkyNjkwMjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxMzowNTo1MC44MzE3MjcxOTNaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoyNDIyODc1NjI3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYW4gUkNVIGxvY2tkZXAgY2hlY2sgaW4gYHBoeV9kZXRhY2goKWAgYnkgcmVwbGFjaW5nIGBydG5sX2RlcmVmZXJlbmNlKGRldi1cXHUwMDNlaHdwcm92KWAgd2l0aCBgcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChkZXYtXFx1MDAzZWh3cHJvdiwgbG9ja2RlcF9ydG5sX2lzX2hlbGQoKSB8fCBkZXYtXFx1MDAzZXJlZ19zdGF0ZSAhPSBORVRSRUdfUkVHSVNURVJFRClgIHRvIHByZXZlbnQgbG9ja2RlcCB3YXJuaW5ncyBkdXJpbmcgZWFybHkgcHJvYmUgZXJyb3IgY2xlYW51cCB3aGVuIFJUTkwgaXMgbm90IGhlbGQuXFxuXFxuVGhpcyBjaGFuZ2UgaXMgcHVyZWx5IGEgbG9ja2RlcCBhc3NlcnRpb24gYWRqdXN0bWVudCBpbiBSQ1UgcG9pbnRlciBkZXJlZmVyZW5jaW5nLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGFsbG9jYXRpb25zLCBkYXRhIGNvcGllcyB0byB1c2Vyc3BhY2UsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLiBTdGFuZGFyZCBLQVNBTi9MT0NLREVQIGJ1aWxkcyBhcmUgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgbG9ja2luZyBvciBtZW1vcnkgc2FmZXR5IGlzc3VlcyBoZXJlLCBhbmQgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSByZXF1aXJpbmcgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGEwZjJhNjA0NDQ4ZWNhZDViNTRmZWJjMGJmNTNjMTA2ZDg3ZmU1NDRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCA4IDEzOjA1OjAyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbmluZGV4IDk0YjJlODVlMDBhMzcuLmFjMDk5NDNlMTAwZmIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG5AQCAtMTkzOSw5ICsxOTM5LDEzIEBAIHZvaWQgcGh5X2RldGFjaChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0XHRzdHJ1Y3QgaHd0c3RhbXBfcHJvdmlkZXIgKmh3cHJvdjtcbiBcbiBcdFx0LyogaHdwcm92IG1heSB0ZWNobmljYWxseSBiZSBwcm90ZWN0ZWQgYnkgb3BzIGxvY2sgYnV0XG4tXHRcdCAqIG5vdCBmb3IgZGV2aWNlcyB3aXRoIGEgcGh5ZGV2LCBzZWUgcGh5X2xpbmtfdG9wb19hZGRfcGh5KClcbitcdFx0ICogbm90IGZvciBkZXZpY2VzIHdpdGggYSBwaHlkZXYsIHNlZSBwaHlfbGlua190b3BvX2FkZF9waHkoKS5cbitcdFx0ICogUlROTCBpcyBub3QgaGVsZCB3aGVuIGNsZWFuaW5nIHVwIG9uIHByb2JlIGZhaWx1cmUgYmVmb3JlXG4rXHRcdCAqIGRldmljZSByZWdpc3RyYXRpb24uXG4gXHRcdCAqL1xuLVx0XHRod3Byb3YgPSBydG5sX2RlcmVmZXJlbmNlKGRldi1cdTAwM2Vod3Byb3YpO1xuK1x0XHRod3Byb3YgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGRldi1cdTAwM2Vod3Byb3YsXG4rXHRcdFx0XHRcdFx0ICAgbG9ja2RlcF9ydG5sX2lzX2hlbGQoKSB8fFxuK1x0XHRcdFx0XHRcdCAgIGRldi1cdTAwM2VyZWdfc3RhdGUgIT0gTkVUUkVHX1JFR0lTVEVSRUQpO1xuIFx0XHQvKiBEaXNhYmxlIHRpbWVzdGFtcCBpZiBpdCBpcyB0aGUgb25lIHNlbGVjdGVkICovXG4gXHRcdGlmIChod3Byb3YgXHUwMDI2XHUwMDI2IGh3cHJvdi1cdTAwM2VwaHlkZXYgPT0gcGh5ZGV2KSB7XG4gXHRcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKGRldi1cdTAwM2Vod3Byb3YsIE5VTEwpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTM6MDU6NTAuODMxNzI4MjkzWiIsIlNlcSI6MjMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE4OTIxMzU5MzIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUEhZIERldGFjaG1lbnQgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgKndoeSogdGhpcyBjaGFuZ2UgaXMgbmVjZXNzYXJ5IHdpdGhpbiBgZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY2AsIHNwZWNpZmljYWxseSBhcm91bmQgdGhlIGBwaHlfZGV0YWNoYCBmdW5jdGlvbi4gVGhlIGRpZmYgaGlnaGxpZ2h0cyBhIG1vZGlmaWNhdGlvbiByZWxhdGVkIHRvIGhhcmR3YXJlIHRpbWVzdGFtcGluZyAoYGh3cHJvdmApIGFuZCBpdHMgaW50ZXJhY3Rpb24gd2l0aCBgcGh5ZGV2YC4gSSBrbm93IHRoYXQgYHBoeV9kZXRhY2hgIGlzIHJlc3BvbnNpYmxlIGZvciBjbGVhbmluZyB1cCBhbmQgcmVsZWFzaW5nIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggYSBQSFkgZGV2aWNlLlxuXG5Mb29raW5nIGF0IHRoZSBjb2RlLCBpdCBzZWVtcyB0aGUgY29yZSBpc3N1ZSBpcyByZWxhdGVkIHRvIHRoZSBwcm90ZWN0aW9uIG9mIGBkZXYtXHUwMDNlaHdwcm92YC4gVGhlIGNvbW1lbnQgcG9pbnRzIG91dCBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbi4gIFRoZSBjb21tZW50IG1lbnRpb25zIFwiZGV2aWNlcyB3aXRoIGEgcGh5ZGV2XCIg4oCTIHRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgbXkgYXR0ZW50aW9uIGJlY2F1c2UgSSBuZWVkIHRvIGNvbnNpZGVyIGFsbCB0aGUgY2FzZXMuIEl0IGFsc28gZXhwbGljaXRseSBtZW50aW9ucyB0aGF0IFJUTkwgaXMgKm5vdCogaGVsZCBkdXJpbmcgY2xlYW51cCBpbiBwcm9iZSBmYWlsdXJlIGJlZm9yZSByZWdpc3RyYXRpb24g4oCTIHRoaXMgY29udGV4dCBpcyBrZXksIGFuZCBJIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucy5cblxuVGhlIG9yaWdpbmFsIGNvZGUgdXNlZCBgcnRubF9kZXJlZmVyZW5jZShkZXYtXHUwMDNlaHdwcm92KWAuIE5vdywgaXQgdXNlcyBgcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZCgpYC4gVGhpcyBpbmRpY2F0ZXMgYSBzaGlmdCB0byBSQ1UgcHJvdGVjdGlvbiwgd2hpY2ggaXMgdGhlIGNvcnJlY3QgYXBwcm9hY2ggaGVyZS4gVGhlIHNlY29uZCBhcmd1bWVudCB0byBgcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZGAgc3BlY2lmaWVzIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoZSBhY2Nlc3MgaXMgc2FmZS4gSSdtIHNlZWluZyB0aGF0IHRoZSBhY2Nlc3MgaXMgc2FmZSBpZiBlaXRoZXI6IDEpIFJUTkwgaXMgaGVsZCwgb3IgMikgdGhlIGRldmljZSBpc24ndCByZWdpc3RlcmVkIHlldCAoYGRldi1cdTAwM2VyZWdfc3RhdGUgIT0gTkVUUkVHX1JFR0lTVEVSRURgKS4gSSB1bmRlcnN0YW5kIHRoaXMgbG9naWMg4oCTIFJDVSBndWFyYW50ZWVzIHRoYXQgcmVhZHMgYXJlIHNhZmUgaWYgZWl0aGVyIGFuIFJUTkwgcmVhZCBsb2NrIGlzIGhlbGQsIG9yIGlmIHRoZSBkZXZpY2UgaXMgdW5yZWdpc3RlcmVkLlxuXG5UaGVyZWZvcmUsIHRoZSBwYXRjaCBpcyBtYWtpbmcgdGhlIGNvZGUgc2FmZXIgYW5kIG1vcmUgcm9idXN0LiBUaGlzIGlzIGEgZ29vZCBpbXByb3ZlbWVudCwgc3BlY2lmaWNhbGx5IGF2b2lkaW5nIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkYXRhIGNvcnJ1cHRpb24gaXNzdWVzIGR1cmluZyBQSFkgZGV0YWNobWVudCwgZXNwZWNpYWxseSBpbiB0aGUgY29udGV4dCBvZiBwcm9iZSBmYWlsdXJlcyBiZWZvcmUgcmVnaXN0cmF0aW9uLCB3aGVyZSBSVE5MIGlzbid0IGhlbGQsIGFuZCB0aGUgZGV2aWNlIGlzIGJlaW5nIGRlLXJlZ2lzdGVyZWQuIEkgYXBwcm92ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIxMywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDEzOjA2OjA5Ljc1MzA5MTM3NVoiLCJTZXEiOjI0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTA1ODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxOTI1LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxOTI1OlxcdFxcdH1cXG4xOTI2OlxcdFxcbjE5Mjc6XFx0XFx0aWYgKHBoeWRldi1cXHUwMDNlc3lzZnNfbGlua3MpIHtcXG4xOTI4OlxcdFxcdFxcdGlmIChkZXYpXFxuMTkyOTpcXHRcXHRcXHRcXHRzeXNmc19yZW1vdmVfbGluayhcXHUwMDI2ZGV2LVxcdTAwM2VkZXYua29iaiwgXFxcInBoeWRldlxcXCIpO1xcbjE5MzA6XFx0XFx0XFx0c3lzZnNfcmVtb3ZlX2xpbmsoXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5kZXYua29iaiwgXFxcImF0dGFjaGVkX2RldlxcXCIpO1xcbjE5MzE6XFx0XFx0fVxcbjE5MzI6XFx0XFxuMTkzMzpcXHRcXHRpZiAoIXBoeWRldi1cXHUwMDNlYXR0YWNoZWRfZGV2KVxcbjE5MzQ6XFx0XFx0XFx0c3lzZnNfcmVtb3ZlX2ZpbGUoXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5kZXYua29iaixcXG4xOTM1OlxcdFxcdFxcdFxcdFxcdCAgXFx1MDAyNmRldl9hdHRyX3BoeV9zdGFuZGFsb25lLmF0dHIpO1xcbjE5MzY6XFx0XFxuMTkzNzpcXHRcXHRwaHlfc3VzcGVuZChwaHlkZXYpO1xcbjE5Mzg6XFx0XFx0aWYgKGRldikge1xcbjE5Mzk6XFx0XFx0XFx0c3RydWN0IGh3dHN0YW1wX3Byb3ZpZGVyICpod3Byb3Y7XFxuMTk0MDpcXHRcXG4xOTQxOlxcdFxcdFxcdC8qIGh3cHJvdiBtYXkgdGVjaG5pY2FsbHkgYmUgcHJvdGVjdGVkIGJ5IG9wcyBsb2NrIGJ1dFxcbjE5NDI6XFx0XFx0XFx0ICogbm90IGZvciBkZXZpY2VzIHdpdGggYSBwaHlkZXYsIHNlZSBwaHlfbGlua190b3BvX2FkZF9waHkoKS5cXG4xOTQzOlxcdFxcdFxcdCAqIFJUTkwgaXMgbm90IGhlbGQgd2hlbiBjbGVhbmluZyB1cCBvbiBwcm9iZSBmYWlsdXJlIGJlZm9yZVxcbjE5NDQ6XFx0XFx0XFx0ICogZGV2aWNlIHJlZ2lzdHJhdGlvbi5cXG4xOTQ1OlxcdFxcdFxcdCAqL1xcbjE5NDY6XFx0XFx0XFx0aHdwcm92ID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChkZXYtXFx1MDAzZWh3cHJvdixcXG4xOTQ3OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgIGxvY2tkZXBfcnRubF9pc19oZWxkKCkgfHxcXG4xOTQ4OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgIGRldi1cXHUwMDNlcmVnX3N0YXRlICE9IE5FVFJFR19SRUdJU1RFUkVEKTtcXG4xOTQ5OlxcdFxcdFxcdC8qIERpc2FibGUgdGltZXN0YW1wIGlmIGl0IGlzIHRoZSBvbmUgc2VsZWN0ZWQgKi9cXG4xOTUwOlxcdFxcdFxcdGlmIChod3Byb3YgXFx1MDAyNlxcdTAwMjYgaHdwcm92LVxcdTAwM2VwaHlkZXYgPT0gcGh5ZGV2KSB7XFxuMTk1MTpcXHRcXHRcXHRcXHRyY3VfYXNzaWduX3BvaW50ZXIoZGV2LVxcdTAwM2Vod3Byb3YsIE5VTEwpO1xcbjE5NTI6XFx0XFx0XFx0XFx0a2ZyZWVfcmN1KGh3cHJvdiwgcmN1X2hlYWQpO1xcbjE5NTM6XFx0XFx0XFx0fVxcbjE5NTQ6XFx0XFxuMTk1NTpcXHRcXHRcXHRwaHlkZXYtXFx1MDAzZWF0dGFjaGVkX2Rldi1cXHUwMDNlcGh5ZGV2ID0gTlVMTDtcXG4xOTU2OlxcdFxcdFxcdHBoeWRldi1cXHUwMDNlYXR0YWNoZWRfZGV2ID0gTlVMTDtcXG4xOTU3OlxcdFxcdFxcdHBoeV9saW5rX3RvcG9fZGVsX3BoeShkZXYsIHBoeWRldik7XFxuMTk1ODpcXHRcXHR9XFxuMTk1OTpcXHRcXG4xOTYwOlxcdFxcdHBoeWRldi1cXHUwMDNlcGh5X2xpbmtfY2hhbmdlID0gTlVMTDtcXG4xOTYxOlxcdFxcdHBoeWRldi1cXHUwMDNlcGh5bGluayA9IE5VTEw7XFxuMTk2MjpcXHRcXG4xOTYzOlxcdFxcdGlmIChwaHlkZXYtXFx1MDAzZW1kaW8uZGV2LmRyaXZlcilcXG4xOTY0OlxcdFxcdFxcdG1vZHVsZV9wdXQocGh5ZGV2LVxcdTAwM2VtZGlvLmRldi5kcml2ZXItXFx1MDAzZW93bmVyKTtcXG4xOTY1OlxcdFxcbjE5NjY6XFx0XFx0LyogSWYgdGhlIGRldmljZSBoYWQgbm8gc3BlY2lmaWMgZHJpdmVyIGJlZm9yZSAoaS5lLiAtIGl0XFxuMTk2NzpcXHRcXHQgKiB3YXMgdXNpbmcgdGhlIGdlbmVyaWMgZHJpdmVyKSwgd2UgdW5iaW5kIHRoZSBkZXZpY2VcXG4xOTY4OlxcdFxcdCAqIGZyb20gdGhlIGdlbmVyaWMgZHJpdmVyIHNvIHRoYXQgdGhlcmUncyBhIGNoYW5jZSBhXFxuMTk2OTpcXHRcXHQgKiByZWFsIGRyaXZlciBjb3VsZCBiZSBsb2FkZWRcXG4xOTcwOlxcdFxcdCAqL1xcbjE5NzE6XFx0XFx0aWYgKHBoeWRldi1cXHUwMDNlaXNfZ2VucGh5X2RyaXZlbikge1xcbjE5NzI6XFx0XFx0XFx0ZGV2aWNlX3JlbGVhc2VfZHJpdmVyKFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2KTtcXG4xOTczOlxcdFxcdFxcdHBoeWRldi1cXHUwMDNlaXNfZ2VucGh5X2RyaXZlbiA9IDA7XFxuMTk3NDpcXHRcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDEzOjA2OjA5Ljc1MzMwNTE4NloiLCJTZXEiOjI1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MzA3MTQ5NDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIExvY2tkZXAgQXNzZXJ0aW9uIEFkanVzdG1lbnQqKlxuXG5Pa2F5LCBsZXQncyBicmVhayBkb3duIHRoaXMgY2hhbmdlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dC4gV2UncmUgZGVhbGluZyB3aXRoIGEgbW9kaWZpY2F0aW9uIHRvIGhvdyBgaHdwcm92YCBpcyBhY2Nlc3NlZC4gUHJldmlvdXNseSwgd2Ugd2VyZSB1c2luZyBgcnRubF9kZXJlZmVyZW5jZWAsIHdoaWNoIHRyYW5zbGF0ZXMgdG8gYHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWRgIHdpdGggYSBzcGVjaWZpYyBsb2NrZGVwIGNvbmRpdGlvbiDigJMgdGhhdCB0aGUgUlROTCBsb2NrIGlzIGhlbGQuIFRoZSBwcm9ibGVtPyBJdCBzZWVtcyB0aGF0IGluIGNlcnRhaW4gcHJvYmUgY2xlYW51cCBzY2VuYXJpb3MsIHNwZWNpZmljYWxseSAqYmVmb3JlKiB0aGUgbmV0d29yayBkZXZpY2UgaXMgZnVsbHkgcmVnaXN0ZXJlZCAoYGRldi1cdTAwM2VyZWdfc3RhdGUgIT0gTkVUUkVHX1JFR0lTVEVSRURgKSwgdGhlIFJUTkwgbG9jayBtaWdodCBub3QgYmUgaGVsZCB3aGVuIGBwaHlfZGV0YWNoYCBpcyBjYWxsZWQuIFRoaXMgdHJpZ2dlcnMgYSBsb2NrZGVwIHdhcm5pbmcsIGEgXCJzdXNwaWNpb3VzIFJDVSB1c2FnZVwiIG1lc3NhZ2UsIHdoaWNoIGlzbid0IGlkZWFsLlxuXG5UaGUgcHJvcG9zZWQgc29sdXRpb24/IFRvIGFkanVzdCB0aGUgbG9ja2RlcCBhc3NlcnRpb24gd2l0aGluIGByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkYC4gVGhlIGNoYW5nZSBpcyBlc3NlbnRpYWxseSBleHRlbmRpbmcgdGhlIHByb3RlY3Rpb24gY29uZGl0aW9uIHRvIGluY2x1ZGUgdGhlIHJlZ2lzdHJhdGlvbiBzdGF0ZSBjaGVjazogbm93LCBgcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZGAgd2lsbCBjb25zaWRlciBlaXRoZXIgdGhlIFJUTkwgbG9jayBiZWluZyBoZWxkICpvciogdGhlIGRldmljZSAqbm90KiBiZWluZyByZWdpc3RlcmVkIGFzIGFjY2VwdGFibGUuIFRoaXMgbG9va3MgbGlrZSBhIHB1cmVseSBkZWZlbnNpdmUgY2hhbmdlIGZvciB0aGUgbG9ja2RlcCwgd2hpY2ggbmVlZHMgdG8gYmUgY2FyZWZ1bGx5IGFzc2Vzc2VkLlxuXG5OZXh0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgZG9lc24ndCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnktcmVsYXRlZCBpc3N1ZXMuIElzIHRoZXJlIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2sgaGVyZT8gSSdtIHRoaW5raW5nLi4uIG5vLiBUaGVyZSdzIG5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbiwgbm8gY29weWluZyBkYXRhIHRvIHVzZXIgc3BhY2UgdGhhdCBjb3VsZCBsZWFkIHRvIGxlYWtzLCBubyBuZXcgZmllbGRzIGludHJvZHVjZWQsIGFuZCBjcnVjaWFsbHksIG5vIGNoYW5nZXMgdG8gaW5pdGlhbGl6YXRpb24gcGF0aHMuIEZ1cnRoZXJtb3JlLCB0aGVyZSdzIG5vIHV0aWxpemF0aW9uIG9mIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIGluIGNvbmRpdGlvbnMgb3IgYXJpdGhtZXRpYy4gVGhlIG9ubHkgdGhpbmcgbW9kaWZpZWQgaXMgdGhlIGxvY2tkZXAgYXNzZXJ0aW9uIGluIGByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkYC4gVGhhdCdzIGltcG9ydGFudC5cblxuSSB0aGVuIHBpdm90IHRvIGNvbnNpZGVyIEtNU0FOIGFuZCBLQVNBTi4gS0FTQU4gYW5kIExPQ0tERVAgdGFrZSBjYXJlIG9mIG1lbW9yeSBidWdzIGFuZCBsb2NrZGVwIGlzc3Vlcy4gS01TQU4gaXMgdGhlIGtleSBoZXJlLCBsb29raW5nIGZvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcy4gU2luY2UgdGhlIGNoYW5nZSBkb2Vzbid0IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBjb3BpZXMgdG8gdXNlcnNwYWNlIG9yIG5ldyBmaWVsZHMvdmFyaWFibGVzLCB0aGVyZSdzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkuIEdpdmVuIHRoYXQsIGBOZWVkc0tNU0FOYCBzaG91bGQgYmUgYGZhbHNlYC5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCdzIHJldmlldyBhbGwgdGhlIGNvbXBvbmVudHMuIERvZXMgdGhlIHVzZSBvZiBgZGV2LVx1MDAzZXJlZ19zdGF0ZWAgcG9zZSBhIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnk/IE5vLCBiZWNhdXNlIGBzdHJ1Y3QgbmV0X2RldmljZWAgYWxsb2NhdGVzIGFuZCBzZXRzIGByZWdfc3RhdGVgIGR1cmluZyBpbml0aWFsaXphdGlvbi4gQW5kIHdoYXQgYWJvdXQgYGRldi1cdTAwM2Vod3Byb3ZgPyBBZ2Fpbiwgbm8uIFRoZSBwYXRjaCBpcywgZXNzZW50aWFsbHksIHNpbGVuY2luZyBhIGxvY2tkZXAgd2FybmluZyB0aGF0IGFwcGVhcnMgZHVyaW5nIHByb2JlIGZhaWx1cmUgY2xlYW51cCwgKmJlZm9yZSogdGhlIGRldmljZSBpcyByZWdpc3RlcmVkLiBJdCdzIGp1c3QgYSBkZWZlbnNpdmUgYWRqdXN0bWVudCB0byB0aGUgbG9ja2RlcCBjb25kaXRpb24gdG8gYXZvaWQgdGhvc2Ugc3B1cmlvdXMgd2FybmluZ3MuIE5vdywgbGV0J3MgY2FsbCB0aGUgYHNldC1yZXN1bHRzYCB0b29sIGFuZCBtb3ZlIGZvcndhcmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4NDYsIk91dHB1dFRva2VucyI6MTg2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTM6MDY6MTUuMDYwNDU3MjI2WiIsIlNlcSI6MjYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMzNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBhbiBSQ1UgbG9ja2RlcCBjaGVjayBpbiBgcGh5X2RldGFjaCgpYCBieSByZXBsYWNpbmcgYHJ0bmxfZGVyZWZlcmVuY2UoZGV2LVxcdTAwM2Vod3Byb3YpYCB3aXRoIGByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGRldi1cXHUwMDNlaHdwcm92LCBsb2NrZGVwX3J0bmxfaXNfaGVsZCgpIHx8IGRldi1cXHUwMDNlcmVnX3N0YXRlICE9IE5FVFJFR19SRUdJU1RFUkVEKWAgdG8gcHJldmVudCBsb2NrZGVwIHdhcm5pbmdzIGR1cmluZyBlYXJseSBwcm9iZSBlcnJvciBjbGVhbnVwIHdoZW4gUlROTCBpcyBub3QgaGVsZC5cXG5cXG5UaGlzIGNoYW5nZSBpcyBwdXJlbHkgYSBsb2NrZGVwIGFzc2VydGlvbiBhZGp1c3RtZW50IGluIFJDVSBwb2ludGVyIGRlcmVmZXJlbmNpbmcuIEl0IGRvZXMgbm90IGludHJvZHVjZSBuZXcgYWxsb2NhdGlvbnMsIGRhdGEgY29waWVzIHRvIHVzZXJzcGFjZSwgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIFN0YW5kYXJkIEtBU0FOL0xPQ0tERVAgYnVpbGRzIGFyZSBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSBsb2NraW5nIG9yIG1lbW9yeSBzYWZldHkgaXNzdWVzIGhlcmUsIGFuZCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIHJlcXVpcmluZyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYW4gUkNVIGxvY2tkZXAgY2hlY2sgaW4gYHBoeV9kZXRhY2goKWAgYnkgcmVwbGFjaW5nIGBydG5sX2RlcmVmZXJlbmNlKGRldi1cXHUwMDNlaHdwcm92KWAgd2l0aCBgcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChkZXYtXFx1MDAzZWh3cHJvdiwgbG9ja2RlcF9ydG5sX2lzX2hlbGQoKSB8fCBkZXYtXFx1MDAzZXJlZ19zdGF0ZSAhPSBORVRSRUdfUkVHSVNURVJFRClgIHRvIHByZXZlbnQgbG9ja2RlcCB3YXJuaW5ncyBkdXJpbmcgZWFybHkgcHJvYmUgZXJyb3IgY2xlYW51cCB3aGVuIFJUTkwgaXMgbm90IGhlbGQuXFxuXFxuVGhpcyBjaGFuZ2UgaXMgcHVyZWx5IGEgbG9ja2RlcCBhc3NlcnRpb24gYWRqdXN0bWVudCBpbiBSQ1UgcG9pbnRlciBkZXJlZmVyZW5jaW5nLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGFsbG9jYXRpb25zLCBkYXRhIGNvcGllcyB0byB1c2Vyc3BhY2UsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLiBTdGFuZGFyZCBLQVNBTi9MT0NLREVQIGJ1aWxkcyBhcmUgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgbG9ja2luZyBvciBtZW1vcnkgc2FmZXR5IGlzc3VlcyBoZXJlLCBhbmQgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSByZXF1aXJpbmcgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow45wjk[1] Phase: Succeeded StartedAt: 2026-09-08 13:06:26 +0000 UTC FinishedAt: 2026-09-08 13:06:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45wjk[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-08 13:06:26 +0000 UTC FinishedAt: 2026-09-08 13:06:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45wjk[2] Phase: Succeeded StartedAt: 2026-09-08 13:06:26 +0000 UTC FinishedAt: 2026-09-08 14:46:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45wjk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_detach","phy_disconnect","phy_attach_direct"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"5ed69443-800e-46ba-b4f3-bb7fce04a97c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-08 13:06:26 +0000 UTC FinishedAt: 2026-09-08 14:46:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_detach","phy_disconnect","phy_attach_direct"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"5ed69443-800e-46ba-b4f3-bb7fce04a97c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow45wjk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_detach","phy_disconnect","phy_attach_direct"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"5ed69443-800e-46ba-b4f3-bb7fce04a97c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-08 13:06:26 +0000 UTC FinishedAt: 2026-09-08 13:06:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45wjk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_detach","phy_disconnect","phy_attach_direct"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"5ed69443-800e-46ba-b4f3-bb7fce04a97c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-08 13:06:26 +0000 UTC FinishedAt: 2026-09-08 13:06:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflow45wjk/series-workflow45wjk-convert-artifact-784530908/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow45wjk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_detach","phy_disconnect","phy_attach_direct"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"5ed69443-800e-46ba-b4f3-bb7fce04a97c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-08 13:06:49 +0000 UTC FinishedAt: 2026-09-08 13:24:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45wjk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_detach","phy_disconnect","phy_attach_direct"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"5ed69443-800e-46ba-b4f3-bb7fce04a97c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-08 13:06:49 +0000 UTC FinishedAt: 2026-09-08 13:24:33 +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:*33d93d7c-c757-432b-8441-5e536af6f044,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-workflow45wjk/series-workflow45wjk-convert-artifact-784530908/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": "ef21f2b8-074d-4400-adde-b0ce4cf1f89a", "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-workflow45wjk/series-workflow45wjk-build-action-2106929418/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow45wjk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_detach","phy_disconnect","phy_attach_direct"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"5ed69443-800e-46ba-b4f3-bb7fce04a97c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-08 13:06:49 +0000 UTC FinishedAt: 2026-09-08 13:24:23 +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:*33d93d7c-c757-432b-8441-5e536af6f044,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-workflow45wjk/series-workflow45wjk-convert-artifact-784530908/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": "ef21f2b8-074d-4400-adde-b0ce4cf1f89a", "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-workflow45wjk/series-workflow45wjk-build-action-2106929418/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow45wjk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_detach","phy_disconnect","phy_attach_direct"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"5ed69443-800e-46ba-b4f3-bb7fce04a97c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-08 13:24:33 +0000 UTC FinishedAt: 2026-09-08 13:24:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45wjk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_detach","phy_disconnect","phy_attach_direct"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"5ed69443-800e-46ba-b4f3-bb7fce04a97c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-08 13:24:33 +0000 UTC FinishedAt: 2026-09-08 13:24:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45wjk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_detach","phy_disconnect","phy_attach_direct"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"5ed69443-800e-46ba-b4f3-bb7fce04a97c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-08 13:24:33 +0000 UTC FinishedAt: 2026-09-08 13:24:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45wjk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_detach","phy_disconnect","phy_attach_direct"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"5ed69443-800e-46ba-b4f3-bb7fce04a97c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-08 13:24:33 +0000 UTC FinishedAt: 2026-09-08 13:24:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"5ed69443-800e-46ba-b4f3-bb7fce04a97c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflow45wjk/series-workflow45wjk-convert-artifact-1989842971/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow45wjk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_detach","phy_disconnect","phy_attach_direct"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"5ed69443-800e-46ba-b4f3-bb7fce04a97c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-08 13:24:43 +0000 UTC FinishedAt: 2026-09-08 13:26:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45wjk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_detach","phy_disconnect","phy_attach_direct"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"5ed69443-800e-46ba-b4f3-bb7fce04a97c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-08 13:24:43 +0000 UTC FinishedAt: 2026-09-08 13:26:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ef21f2b8-074d-4400-adde-b0ce4cf1f89a,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-workflow45wjk/series-workflow45wjk-build-action-2106929418/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-workflow45wjk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_detach","phy_disconnect","phy_attach_direct"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"5ed69443-800e-46ba-b4f3-bb7fce04a97c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-08 13:26:59 +0000 UTC FinishedAt: 2026-09-08 13:26:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45wjk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_detach","phy_disconnect","phy_attach_direct"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"5ed69443-800e-46ba-b4f3-bb7fce04a97c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-08 13:26:59 +0000 UTC FinishedAt: 2026-09-08 13:26:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45wjk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_detach","phy_disconnect","phy_attach_direct"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"5ed69443-800e-46ba-b4f3-bb7fce04a97c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-08 13:26:59 +0000 UTC FinishedAt: 2026-09-08 13:44:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45wjk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_detach","phy_disconnect","phy_attach_direct"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"5ed69443-800e-46ba-b4f3-bb7fce04a97c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-08 13:26:59 +0000 UTC FinishedAt: 2026-09-08 13:44:51 +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:*33d93d7c-c757-432b-8441-5e536af6f044,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-workflow45wjk/series-workflow45wjk-convert-artifact-1989842971/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": "d33f971b-95eb-4c47-9b24-8f4aa6e737cc", "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-workflow45wjk/series-workflow45wjk-build-action-3639215039/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow45wjk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_detach","phy_disconnect","phy_attach_direct"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"5ed69443-800e-46ba-b4f3-bb7fce04a97c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-08 13:26:59 +0000 UTC FinishedAt: 2026-09-08 13:44:41 +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:*33d93d7c-c757-432b-8441-5e536af6f044,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-workflow45wjk/series-workflow45wjk-convert-artifact-1989842971/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": "d33f971b-95eb-4c47-9b24-8f4aa6e737cc", "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-workflow45wjk/series-workflow45wjk-build-action-3639215039/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow45wjk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_detach","phy_disconnect","phy_attach_direct"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"5ed69443-800e-46ba-b4f3-bb7fce04a97c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-08 13:44:51 +0000 UTC FinishedAt: 2026-09-08 13:44:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45wjk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_detach","phy_disconnect","phy_attach_direct"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"5ed69443-800e-46ba-b4f3-bb7fce04a97c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-08 13:44:51 +0000 UTC FinishedAt: 2026-09-08 13:44:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45wjk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_detach","phy_disconnect","phy_attach_direct"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"5ed69443-800e-46ba-b4f3-bb7fce04a97c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-08 13:44:51 +0000 UTC FinishedAt: 2026-09-08 13:47:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45wjk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_detach","phy_disconnect","phy_attach_direct"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"5ed69443-800e-46ba-b4f3-bb7fce04a97c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-08 13:44:51 +0000 UTC FinishedAt: 2026-09-08 13:46:53 +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:*d33f971b-95eb-4c47-9b24-8f4aa6e737cc,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-workflow45wjk/series-workflow45wjk-build-action-3639215039/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-workflow45wjk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_detach","phy_disconnect","phy_attach_direct"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"5ed69443-800e-46ba-b4f3-bb7fce04a97c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-08 13:47:02 +0000 UTC FinishedAt: 2026-09-08 14:46:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45wjk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_detach","phy_disconnect","phy_attach_direct"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"5ed69443-800e-46ba-b4f3-bb7fce04a97c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-08 13:47:02 +0000 UTC FinishedAt: 2026-09-08 14:46:03 +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":["phy_detach","phy_disconnect","phy_attach_direct"],"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:*ef21f2b8-074d-4400-adde-b0ce4cf1f89a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d33f971b-95eb-4c47-9b24-8f4aa6e737cc,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-workflow45wjk/series-workflow45wjk-build-action-2106929418/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-workflow45wjk/series-workflow45wjk-build-action-3639215039/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow45wjk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_detach","phy_disconnect","phy_attach_direct"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"5ed69443-800e-46ba-b4f3-bb7fce04a97c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-08 13:47:02 +0000 UTC FinishedAt: 2026-09-08 13:47:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45wjk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_detach","phy_disconnect","phy_attach_direct"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"5ed69443-800e-46ba-b4f3-bb7fce04a97c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-08 13:47:02 +0000 UTC FinishedAt: 2026-09-08 13:47:07 +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":["phy_detach","phy_disconnect","phy_attach_direct"],"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-workflow45wjk/series-workflow45wjk-convert-artifact-3276916244/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow45wjk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_detach","phy_disconnect","phy_attach_direct"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"5ed69443-800e-46ba-b4f3-bb7fce04a97c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-08 13:47:02 +0000 UTC FinishedAt: 2026-09-08 13:47:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45wjk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_detach","phy_disconnect","phy_attach_direct"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"5ed69443-800e-46ba-b4f3-bb7fce04a97c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-08 13:47:02 +0000 UTC FinishedAt: 2026-09-08 13:47:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45wjk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_detach","phy_disconnect","phy_attach_direct"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"5ed69443-800e-46ba-b4f3-bb7fce04a97c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-08 13:47:02 +0000 UTC FinishedAt: 2026-09-08 13:47:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45wjk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_detach","phy_disconnect","phy_attach_direct"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"5ed69443-800e-46ba-b4f3-bb7fce04a97c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-08 13:47:12 +0000 UTC FinishedAt: 2026-09-08 14:46:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45wjk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_detach","phy_disconnect","phy_attach_direct"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVICES","PHYLIB"],"series_id":"5ed69443-800e-46ba-b4f3-bb7fce04a97c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-08 13:47:12 +0000 UTC FinishedAt: 2026-09-08 14:45:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ef21f2b8-074d-4400-adde-b0ce4cf1f89a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d33f971b-95eb-4c47-9b24-8f4aa6e737cc,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-workflow45wjk/series-workflow45wjk-build-action-2106929418/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-workflow45wjk/series-workflow45wjk-build-action-3639215039/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-workflow45wjk/series-workflow45wjk-convert-artifact-3276916244/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,}