Name: series-workflowwclsx Phase: Succeeded StartedAt: 2026-08-10 16:03:38 +0000 UTC FinishedAt: 2026-08-10 18:38:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwclsx[0] Phase: Succeeded StartedAt: 2026-08-10 16:03:38 +0000 UTC FinishedAt: 2026-08-10 16:56:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwclsx[0].run-triage Phase: Succeeded StartedAt: 2026-08-10 16:03:38 +0000 UTC FinishedAt: 2026-08-10 16:56:31 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "dd057113ac7ba5bdd2aed3d9405305911152f911", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DP83640_PHY", "NETWORK_PHY_TIMESTAMPING", "PHYLIB", "PTP_1588_CLOCK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "dd057113ac7ba5bdd2aed3d9405305911152f911", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DP83640_PHY", "NETWORK_PHY_TIMESTAMPING", "PHYLIB", "PTP_1588_CLOCK" ], "series_id": "a22b839e-ef06-4095-90e6-01cf0b770595" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "dp83640_probe", "dp83640_remove", "phy_package_lock", "phy_package_unlock" ], "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+CgkJCTx0ZD4yMDI2LzA4LzEwIDE2OjU0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RQODM2NDBfUEhZJiMzNDssCiAgICAmIzM0O05FVFdPUktfUEhZX1RJTUVTVEFNUElORyYjMzQ7LAogICAgJiMzNDtQSFlMSUImIzM0OywKICAgICYjMzQ7UFRQXzE1ODhfQ0xPQ0smIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkcDgzNjQwX3Byb2JlJiMzNDssCiAgICAmIzM0O2RwODM2NDBfcmVtb3ZlJiMzNDssCiAgICAmIzM0O3BoeV9wYWNrYWdlX2xvY2smIzM0OywKICAgICYjMzQ7cGh5X3BhY2thZ2VfdW5sb2NrJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSBkcDgzNjQwIFBIWSBkcml2ZXIgdG8gdXNlIHRoZSBzdGFuZGFyZCBgcGh5X3BhY2thZ2Vfam9pbmAgQVBJIGZvciBtYW5hZ2luZyBzaGFyZWQgY2xvY2sgc3RydWN0dXJlcywgcmVwbGFjaW5nIGEgY3VzdG9tIGdsb2JhbCBsaXN0IGFuZCBtYW51YWwgYWxsb2NhdGlvbnMuIFRoZSBzaGFyZWQgc3RydWN0dXJlIGBkcDgzNjQwX2Nsb2NrYCAoYW5kIGl0cyBlbWJlZGRlZCBgcGluX2NvbmZpZ2AgYXJyYXkpIGlzIGFsbG9jYXRlZCB2aWEgYGt6YWxsb2NgIGluc2lkZSBgcGh5X3BhY2thZ2Vfam9pbmAsIGVuc3VyaW5nIGFsbCBmaWVsZHMgYW5kIHBhZGRpbmcgYXJlIGZ1bGx5IHplcm8taW5pdGlhbGl6ZWQuIFRoZXJlIGFyZSBubyBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2guIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGludm9sdmUgb2JqZWN0IGxpZmVjeWNsZSBpc3N1ZXMgKGxpa2UgdXNlLWFmdGVyLWZyZWUgb3IgbWVtb3J5IGxlYWtzKSBvciBsb2NraW5nIGlzc3Vlcywgd2hpY2ggYXJlIGFscmVhZHkgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIExPQ0tERVAuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyB0aGUgRFA4MzY0MCBQSFkgZHJpdmVyIHRvIHVzZSB0aGUgc3RhbmRhcmQgcGh5X3BhY2thZ2UgQVBJIGZvciBzaGFyZWQgY2xvY2sgaW5pdGlhbGl6YXRpb24sIHJlcGxhY2luZyBhIGN1c3RvbSBnbG9iYWwgbGlzdC4gSXQgYWxzbyBpbnRyb2R1Y2VzIHBoeV9wYWNrYWdlX2xvY2sgYW5kIHBoeV9wYWNrYWdlX3VubG9jayB0byBzZXJpYWxpemUgYWNjZXNzIHRvIHBhY2thZ2UtcHJpdmF0ZSBkYXRhLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCB0aGUgcHJvYmUgYW5kIHJlbW92ZSBwYXRocyBvZiB0aGUgUEhZIGRyaXZlciwgd2hpY2ggY2FuIGJlIHJlYWNoZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBieSBlbXVsYXRpbmcgYW4gTURJTyBidXMgb3IgYSBVU0IgbmV0d29yayBkZXZpY2Ugd2l0aCB0aGUgc3BlY2lmaWMgUEhZIElELiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE2OjU0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMTViNzBkZGFhN2YzZGZmMzZiZDUxZTdlMmM2OGVlYzA4NTE5YTIzZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDEwIDE2OjUzOjU5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMgYi9kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jXG5pbmRleCA5ODQ3MmFiZGQzOTIwLi42ODY3ZTdjNmYzYjdlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuY1xuQEAgLTIxLDYgJiM0MzsyMSw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXCYjMzQ7ZHA4MzY0MF9yZWcuaFwmIzM0O1xuJiM0MzsjaW5jbHVkZSBcJiMzNDtwaHlsaWIuaFwmIzM0O1xuIFxuICNkZWZpbmUgRFA4MzY0MF9QSFlfSURcdDB4MjAwMDVjZTFcbiAjZGVmaW5lIFBBR0VTRUxcdFx0MHgxM1xuQEAgLTEyOCwxMCAmIzQzOzEyOSw2IEBAIHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUge1xuIH07XG4gXG4gc3RydWN0IGRwODM2NDBfY2xvY2sge1xuLVx0Lyoga2VlcHMgdGhlIGluc3RhbmNlIGluIHRoZSAmIzM5O3BoeXRlcl9jbG9ja3MmIzM5OyBsaXN0ICovXG4tXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7XG4tXHQvKiB3ZSBjcmVhdGUgb25lIGNsb2NrIGluc3RhbmNlIHBlciBNSUkgYnVzICovXG4tXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xuIFx0LyogcHJvdGVjdHMgZXh0ZW5kZWQgcmVnaXN0ZXJzIGZyb20gY29uY3VycmVudCBhY2Nlc3MgKi9cbiBcdHN0cnVjdCBtdXRleCBleHRyZWdfbG9jaztcbiBcdC8qIHJlbWVtYmVycyB3aGljaCBwYWdlIHdhcyBsYXN0IHNlbGVjdGVkICovXG5AQCAtMTQ2LDYgJiM0MzsxNDMsOCBAQCBzdHJ1Y3QgZHA4MzY0MF9jbG9jayB7XG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIHBoeWxpc3Q7XG4gXHQvKiByZWZlcmVuY2UgdG8gb3VyIFBUUCBoYXJkd2FyZSBjbG9jayAqL1xuIFx0c3RydWN0IHB0cF9jbG9jayAqcHRwX2Nsb2NrO1xuJiM0MztcdC8qIHByb3RlY3RlZCBieSB0aGUgUFRQIGNvcmUgcGluIGNvbmZpZ3VyYXRpb24gbG9jayAqL1xuJiM0MztcdHN0cnVjdCBwdHBfcGluX2Rlc2MgcGluX2NvbmZpZ1tEUDgzNjQwX05fUElOU107XG4gfTtcbiBcbiAvKiBnbG9iYWxzICovXG5AQCAtMjA2LDEwICYjNDM7MjA1LDYgQEAgc3RhdGljIHZvaWQgZHA4MzY0MF9ncGlvX2RlZmF1bHRzKHN0cnVjdCBwdHBfcGluX2Rlc2MgKnBkKVxuIFx0fVxuIH1cbiBcbi0vKiBhIGxpc3Qgb2YgY2xvY2tzIGFuZCBhIG11dGV4IHRvIHByb3RlY3QgaXQgKi9cbi1zdGF0aWMgTElTVF9IRUFEKHBoeXRlcl9jbG9ja3MpO1xuLXN0YXRpYyBERUZJTkVfTVVURVgocGh5dGVyX2Nsb2Nrc19sb2NrKTtcbi1cbiBzdGF0aWMgdm9pZCByeF90aW1lc3RhbXBfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xuIFxuIC8qIGV4dGVuZGVkIHJlZ2lzdGVyIGFjY2VzcyBmdW5jdGlvbnMgKi9cbkBAIC05NTMsMTMgJiM0Mzs5NDgsMTIgQEAgc3RhdGljIHZvaWQgZGVjb2RlX3N0YXR1c19mcmFtZShzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICpkcDgzNjQwLFxuIFx0fVxuIH1cbiBcbi1zdGF0aWMgdm9pZCBkcDgzNjQwX2Nsb2NrX2luaXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrLCBzdHJ1Y3QgbWlpX2J1cyAqYnVzKVxuJiM0MztzdGF0aWMgdm9pZCBkcDgzNjQwX2Nsb2NrX2luaXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrKVxuIHtcbi1cdElOSVRfTElTVF9IRUFEKFx1MDAyNmNsb2NrLVx1MDAzZWxpc3QpO1xuLVx0Y2xvY2stXHUwMDNlYnVzID0gYnVzO1xuIFx0bXV0ZXhfaW5pdChcdTAwMjZjbG9jay1cdTAwM2VleHRyZWdfbG9jayk7XG4gXHRtdXRleF9pbml0KFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2Y2xvY2stXHUwMDNlcGh5bGlzdCk7XG4mIzQzO1x0Y2xvY2stXHUwMDNlY2Fwcy5waW5fY29uZmlnID0gY2xvY2stXHUwMDNlcGluX2NvbmZpZztcbiBcdGNsb2NrLVx1MDAzZWNhcHMub3duZXIgPSBUSElTX01PRFVMRTtcbiBcdHNwcmludGYoY2xvY2stXHUwMDNlY2Fwcy5uYW1lLCBcJiMzNDtkcDgzNjQwIHRpbWVyXCYjMzQ7KTtcbiBcdGNsb2NrLVx1MDAzZWNhcHMubWF4X2Fkalx0PSAxOTUzMTI0O1xuQEAgLTk3NywxNCAmIzQzOzk3MSw4IEBAIHN0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfaW5pdChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2ssIHN0cnVjdCBtaWlfYnVzICpidXMpXG4gXHRjbG9jay1cdTAwM2VjYXBzLnNldHRpbWU2NFx0PSBwdHBfZHA4MzY0MF9zZXR0aW1lO1xuIFx0Y2xvY2stXHUwMDNlY2Fwcy5lbmFibGVcdD0gcHRwX2RwODM2NDBfZW5hYmxlO1xuIFx0Y2xvY2stXHUwMDNlY2Fwcy52ZXJpZnlcdD0gcHRwX2RwODM2NDBfdmVyaWZ5O1xuLVx0Lypcbi1cdCAqIENvbnZlcnQgdGhlIG1vZHVsZSBwYXJhbSBkZWZhdWx0cyBpbnRvIGEgZHluYW1pYyBwaW4gY29uZmlndXJhdGlvbi5cbi1cdCAqL1xuJiM0MztcdC8qIEluaXRpYWxpemUgdGhlIHJ1bnRpbWUgcGluIGNvbmZpZ3VyYXRpb24gZnJvbSBncGlvX3RhYi4gKi9cbiBcdGRwODM2NDBfZ3Bpb19kZWZhdWx0cyhjbG9jay1cdTAwM2VjYXBzLnBpbl9jb25maWcpO1xuLVx0Lypcbi1cdCAqIEdldCBhIHJlZmVyZW5jZSB0byB0aGlzIGJ1cyBpbnN0YW5jZS5cbi1cdCAqL1xuLVx0Z2V0X2RldmljZShcdTAwMjZidXMtXHUwMDNlZGV2KTtcbiB9XG4gXG4gc3RhdGljIGludCBjaG9vc2VfdGhpc19waHkoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrLFxuQEAgLTk5OSw1OCAmIzQzOzk4Nyw2IEBAIHN0YXRpYyBpbnQgY2hvb3NlX3RoaXNfcGh5KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jayxcbiBcdHJldHVybiAwO1xuIH1cbiBcbi1zdGF0aWMgc3RydWN0IGRwODM2NDBfY2xvY2sgKmRwODM2NDBfY2xvY2tfZ2V0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaylcbi17XG4tXHRpZiAoY2xvY2spXG4tXHRcdG11dGV4X2xvY2soXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4tXHRyZXR1cm4gY2xvY2s7XG4tfVxuLVxuLS8qXG4tICogTG9vayB1cCBhbmQgbG9jayBhIGNsb2NrIGJ5IGJ1cyBpbnN0YW5jZS5cbi0gKiBJZiB0aGVyZSBpcyBubyBjbG9jayBmb3IgdGhpcyBidXMsIHRoZW4gY3JlYXRlIGl0IGZpcnN0LlxuLSAqL1xuLXN0YXRpYyBzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqZHA4MzY0MF9jbG9ja19nZXRfYnVzKHN0cnVjdCBtaWlfYnVzICpidXMpXG4te1xuLVx0c3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrID0gTlVMTCwgKnRtcDtcbi1cdHN0cnVjdCBsaXN0X2hlYWQgKnRoaXM7XG4tXG4tXHRtdXRleF9sb2NrKFx1MDAyNnBoeXRlcl9jbG9ja3NfbG9jayk7XG4tXG4tXHRsaXN0X2Zvcl9lYWNoKHRoaXMsIFx1MDAyNnBoeXRlcl9jbG9ja3MpIHtcbi1cdFx0dG1wID0gbGlzdF9lbnRyeSh0aGlzLCBzdHJ1Y3QgZHA4MzY0MF9jbG9jaywgbGlzdCk7XG4tXHRcdGlmICh0bXAtXHUwMDNlYnVzID09IGJ1cykge1xuLVx0XHRcdGNsb2NrID0gdG1wO1xuLVx0XHRcdGJyZWFrO1xuLVx0XHR9XG4tXHR9XG4tXHRpZiAoY2xvY2spXG4tXHRcdGdvdG8gb3V0O1xuLVxuLVx0Y2xvY2sgPSBremFsbG9jX29iaihzdHJ1Y3QgZHA4MzY0MF9jbG9jayk7XG4tXHRpZiAoIWNsb2NrKVxuLVx0XHRnb3RvIG91dDtcbi1cbi1cdGNsb2NrLVx1MDAzZWNhcHMucGluX2NvbmZpZyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgcHRwX3Bpbl9kZXNjLFxuLVx0XHRcdFx0XHQgICAgICBEUDgzNjQwX05fUElOUyk7XG4tXHRpZiAoIWNsb2NrLVx1MDAzZWNhcHMucGluX2NvbmZpZykge1xuLVx0XHRrZnJlZShjbG9jayk7XG4tXHRcdGNsb2NrID0gTlVMTDtcbi1cdFx0Z290byBvdXQ7XG4tXHR9XG4tXHRkcDgzNjQwX2Nsb2NrX2luaXQoY2xvY2ssIGJ1cyk7XG4tXHRsaXN0X2FkZF90YWlsKFx1MDAyNmNsb2NrLVx1MDAzZWxpc3QsIFx1MDAyNnBoeXRlcl9jbG9ja3MpO1xuLW91dDpcbi1cdG11dGV4X3VubG9jayhcdTAwMjZwaHl0ZXJfY2xvY2tzX2xvY2spO1xuLVxuLVx0cmV0dXJuIGRwODM2NDBfY2xvY2tfZ2V0KGNsb2NrKTtcbi19XG4tXG4tc3RhdGljIHZvaWQgZHA4MzY0MF9jbG9ja19wdXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrKVxuLXtcbi1cdG11dGV4X3VubG9jayhcdTAwMjZjbG9jay1cdTAwM2VjbG9ja19sb2NrKTtcbi19XG4tXG4gc3RhdGljIGludCBkcDgzNjQwX3NvZnRfcmVzZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiB7XG4gXHRpbnQgcmV0O1xuQEAgLTE0MDAsMjAgJiM0MzsxMzM2LDMxIEBAIHN0YXRpYyBpbnQgZHA4MzY0MF90c19pbmZvKHN0cnVjdCBtaWlfdGltZXN0YW1wZXIgKm1paV90cyxcbiBcbiBzdGF0aWMgaW50IGRwODM2NDBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiB7XG4tXHRzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2s7XG4gXHRzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICpkcDgzNjQwO1xuLVx0aW50IGVyciA9IC1FTk9NRU0sIGk7XG4mIzQzO1x0c3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrO1xuJiM0MztcdGludCBlcnIsIGk7XG4gXG4gXHRpZiAocGh5ZGV2LVx1MDAzZW1kaW8uYWRkciA9PSBCUk9BRENBU1RfQUREUilcbiBcdFx0cmV0dXJuIDA7XG4gXG4tXHRjbG9jayA9IGRwODM2NDBfY2xvY2tfZ2V0X2J1cyhwaHlkZXYtXHUwMDNlbWRpby5idXMpO1xuLVx0aWYgKCFjbG9jaylcbi1cdFx0Z290byBub19jbG9jaztcbiYjNDM7XHRlcnIgPSBwaHlfcGFja2FnZV9qb2luKHBoeWRldiwgQlJPQURDQVNUX0FERFIsIHNpemVvZigqY2xvY2spKTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0cmV0dXJuIGVycjtcbiYjNDM7XG4mIzQzO1x0Y2xvY2sgPSBwaHlfcGFja2FnZV9nZXRfcHJpdihwaHlkZXYpO1xuJiM0MztcdC8qIEVuc3VyZSBvdGhlciBQSFkgcHJvYmVzIHdhaXQgZm9yIHNoYXJlZCBjbG9jayBpbml0aWFsaXphdGlvbi4gKi9cbiYjNDM7XHRwaHlfcGFja2FnZV9sb2NrKHBoeWRldik7XG4mIzQzO1x0aWYgKHBoeV9wYWNrYWdlX3Byb2JlX29uY2UocGh5ZGV2KSlcbiYjNDM7XHRcdGRwODM2NDBfY2xvY2tfaW5pdChjbG9jayk7XG4mIzQzO1x0cGh5X3BhY2thZ2VfdW5sb2NrKHBoeWRldik7XG4mIzQzO1xuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4gXG4gXHRkcDgzNjQwID0ga3phbGxvY19vYmooc3RydWN0IGRwODM2NDBfcHJpdmF0ZSk7XG4tXHRpZiAoIWRwODM2NDApXG4mIzQzO1x0aWYgKCFkcDgzNjQwKSB7XG4mIzQzO1x0XHRlcnIgPSAtRU5PTUVNO1xuIFx0XHRnb3RvIG5vX21lbW9yeTtcbiYjNDM7XHR9XG4gXG4gXHRkcDgzNjQwLVx1MDAzZXBoeWRldiA9IHBoeWRldjtcbiBcdGRwODM2NDAtXHUwMDNlbWlpX3RzLnJ4dHN0YW1wID0gZHA4MzY0MF9yeHRzdGFtcDtcbkBAIC0xNDUwLDE1ICYjNDM7MTM5NywyMCBAQCBzdGF0aWMgaW50IGRwODM2NDBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdH0gZWxzZVxuIFx0XHRsaXN0X2FkZF90YWlsKFx1MDAyNmRwODM2NDAtXHUwMDNlbGlzdCwgXHUwMDI2Y2xvY2stXHUwMDNlcGh5bGlzdCk7XG4gXG4tXHRkcDgzNjQwX2Nsb2NrX3B1dChjbG9jayk7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuJiM0MztcbiBcdHJldHVybiAwO1xuIFxuIG5vX3JlZ2lzdGVyOlxuIFx0Y2xvY2stXHUwMDNlY2hvc2VuID0gTlVMTDtcbiYjNDM7XHRjbG9jay1cdTAwM2VwdHBfY2xvY2sgPSBOVUxMO1xuJiM0MztcdHBoeWRldi1cdTAwM2VkZWZhdWx0X3RpbWVzdGFtcCA9IGZhbHNlO1xuJiM0MztcdHBoeWRldi1cdTAwM2VtaWlfdHMgPSBOVUxMO1xuJiM0MztcdHBoeWRldi1cdTAwM2Vwcml2ID0gTlVMTDtcbiBcdGtmcmVlKGRwODM2NDApO1xuIG5vX21lbW9yeTpcbi1cdGRwODM2NDBfY2xvY2tfcHV0KGNsb2NrKTtcbi1ub19jbG9jazpcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4mIzQzO1x0cGh5X3BhY2thZ2VfbGVhdmUocGh5ZGV2KTtcbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuQEAgLTE0NjcsNyAmIzQzOzE0MTksNiBAQCBzdGF0aWMgdm9pZCBkcDgzNjQwX3JlbW92ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0c3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrO1xuIFx0c3RydWN0IGxpc3RfaGVhZCAqdGhpcywgKm5leHQ7XG4gXHRzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICp0bXAsICpkcDgzNjQwID0gcGh5ZGV2LVx1MDAzZXByaXY7XG4tXHRib29sIHJlbW92ZV9jbG9jayA9IGZhbHNlO1xuIFxuIFx0aWYgKHBoeWRldi1cdTAwM2VtZGlvLmFkZHIgPT0gQlJPQURDQVNUX0FERFIpXG4gXHRcdHJldHVybjtcbkBAIC0xNDgwLDcgJiM0MzsxNDMxLDggQEAgc3RhdGljIHZvaWQgZHA4MzY0MF9yZW1vdmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdHNrYl9xdWV1ZV9wdXJnZShcdTAwMjZkcDgzNjQwLVx1MDAzZXJ4X3F1ZXVlKTtcbiBcdHNrYl9xdWV1ZV9wdXJnZShcdTAwMjZkcDgzNjQwLVx1MDAzZXR4X3F1ZXVlKTtcbiBcbi1cdGNsb2NrID0gZHA4MzY0MF9jbG9ja19nZXQoZHA4MzY0MC1cdTAwM2VjbG9jayk7XG4mIzQzO1x0Y2xvY2sgPSBkcDgzNjQwLVx1MDAzZWNsb2NrO1xuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4gXG4gXHRpZiAoZHA4MzY0MCA9PSBjbG9jay1cdTAwM2VjaG9zZW4pIHtcbiBcdFx0cHRwX2Nsb2NrX3VucmVnaXN0ZXIoY2xvY2stXHUwMDNlcHRwX2Nsb2NrKTtcbkBAIC0xNDk1LDIzICYjNDM7MTQ0NywxMCBAQCBzdGF0aWMgdm9pZCBkcDgzNjQwX3JlbW92ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0XHR9XG4gXHR9XG4gXG4tXHRpZiAoIWNsb2NrLVx1MDAzZWNob3NlbiBcdTAwMjZcdTAwMjYgbGlzdF9lbXB0eShcdTAwMjZjbG9jay1cdTAwM2VwaHlsaXN0KSlcbi1cdFx0cmVtb3ZlX2Nsb2NrID0gdHJ1ZTtcbi1cbi1cdGRwODM2NDBfY2xvY2tfcHV0KGNsb2NrKTtcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4gXHRrZnJlZShkcDgzNjQwKTtcbiBcbi1cdGlmIChyZW1vdmVfY2xvY2spIHtcbi1cdFx0bXV0ZXhfbG9jayhcdTAwMjZwaHl0ZXJfY2xvY2tzX2xvY2spO1xuLVx0XHRsaXN0X2RlbChcdTAwMjZjbG9jay1cdTAwM2VsaXN0KTtcbi1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBoeXRlcl9jbG9ja3NfbG9jayk7XG4tXG4tXHRcdG11dGV4X2Rlc3Ryb3koXHUwMDI2Y2xvY2stXHUwMDNlZXh0cmVnX2xvY2spO1xuLVx0XHRtdXRleF9kZXN0cm95KFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuLVx0XHRwdXRfZGV2aWNlKFx1MDAyNmNsb2NrLVx1MDAzZWJ1cy1cdTAwM2VkZXYpO1xuLVx0XHRrZnJlZShjbG9jay1cdTAwM2VjYXBzLnBpbl9jb25maWcpO1xuLVx0XHRrZnJlZShjbG9jayk7XG4tXHR9XG4mIzQzO1x0cGh5X3BhY2thZ2VfbGVhdmUocGh5ZGV2KTtcbiB9XG4gXG4gc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGRwODM2NDBfZHJpdmVyW10gPSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuY1xuaW5kZXggMTZhZThkMWMxZjg5YS4uNzM1ODA2YzViZWE4OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuY1xuQEAgLTUyLDYgJiM0Mzs1MiwyOSBAQCB2b2lkICpwaHlfcGFja2FnZV9nZXRfcHJpdihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChwaHlfcGFja2FnZV9nZXRfcHJpdik7XG4gXG4mIzQzOy8qKlxuJiM0MzsgKiBwaHlfcGFja2FnZV9sb2NrIC0gYWNxdWlyZSB0aGUgUEhZIHBhY2thZ2UgbG9ja1xuJiM0MzsgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHRoYXQgaGFzIGpvaW5lZCB0aGUgcGFja2FnZVxuJiM0MzsgKlxuJiM0MzsgKiBVc2UgdGhpcyB0byBzZXJpYWxpemUgYWNjZXNzIHRvIHBhY2thZ2UtcHJpdmF0ZSBkYXRhLiBSZWxlYXNlIHRoZSBsb2NrXG4mIzQzOyAqIHdpdGggcGh5X3BhY2thZ2VfdW5sb2NrKCkuXG4mIzQzOyAqL1xuJiM0Mzt2b2lkIHBoeV9wYWNrYWdlX2xvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiYjNDM7e1xuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uYnVzLVx1MDAzZXNoYXJlZF9sb2NrKTtcbiYjNDM7fVxuJiM0MztFWFBPUlRfU1lNQk9MX0dQTChwaHlfcGFja2FnZV9sb2NrKTtcbiYjNDM7XG4mIzQzOy8qKlxuJiM0MzsgKiBwaHlfcGFja2FnZV91bmxvY2sgLSByZWxlYXNlIHRoZSBQSFkgcGFja2FnZSBsb2NrXG4mIzQzOyAqIEBwaHlkZXY6IFBIWSBkZXZpY2UgdGhhdCBoYXMgam9pbmVkIHRoZSBwYWNrYWdlXG4mIzQzOyAqL1xuJiM0Mzt2b2lkIHBoeV9wYWNrYWdlX3VubG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuJiM0Mzt7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmJ1cy1cdTAwM2VzaGFyZWRfbG9jayk7XG4mIzQzO31cbiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwocGh5X3BhY2thZ2VfdW5sb2NrKTtcbiYjNDM7XG4gc3RhdGljIGludCBwaHlfcGFja2FnZV9hZGRyZXNzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4gXHRcdFx0ICAgICAgIHVuc2lnbmVkIGludCBhZGRyX29mZnNldClcbiB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oXG5pbmRleCAwZmJhMjQ1Zjk3NDU4Li5jNmUyNmFjNmIyOGYwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5bGliLmhcbkBAIC0xMiw2ICYjNDM7MTIsOCBAQCBzdHJ1Y3QgbWlpX2J1cztcbiBcbiBzdHJ1Y3QgZGV2aWNlX25vZGUgKnBoeV9wYWNrYWdlX2dldF9ub2RlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuIHZvaWQgKnBoeV9wYWNrYWdlX2dldF9wcml2KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuJiM0Mzt2b2lkIHBoeV9wYWNrYWdlX2xvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG4mIzQzO3ZvaWQgcGh5X3BhY2thZ2VfdW5sb2NrKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuIGludCBfX3BoeV9wYWNrYWdlX3JlYWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdW5zaWduZWQgaW50IGFkZHJfb2Zmc2V0LFxuIFx0XHQgICAgICAgdTMyIHJlZ251bSk7XG4gaW50IF9fcGh5X3BhY2thZ2Vfd3JpdGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdW5zaWduZWQgaW50IGFkZHJfb2Zmc2V0LFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHRwL0tjb25maWcgYi9kcml2ZXJzL3B0cC9LY29uZmlnXG5pbmRleCBiOTM2NDBjYTA4YjcyLi5mZWI1MGY4Y2M0MDZhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9wdHAvS2NvbmZpZ1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9wdHAvS2NvbmZpZ1xuQEAgLTc4LDYgJiM0Mzs3OCw3IEBAIGNvbmZpZyBEUDgzNjQwX1BIWVxuIFx0ZGVwZW5kcyBvbiBQSFlMSUJcbiBcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tcbiBcdHNlbGVjdCBDUkMzMlxuJiM0MztcdHNlbGVjdCBQSFlfUEFDS0FHRVxuIFx0aGVscFxuIFx0ICBTdXBwb3J0cyB0aGUgRFA4MzY0MCBQSFlURVIgd2l0aCBJRUVFIDE1ODggZmVhdHVyZXMuXG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTY6NTQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RQODM2NDBfUEhZJiMzNDssCiAgICAmIzM0O05FVFdPUktfUEhZX1RJTUVTVEFNUElORyYjMzQ7LAogICAgJiMzNDtQSFlMSUImIzM0OywKICAgICYjMzQ7UFRQXzE1ODhfQ0xPQ0smIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkcDgzNjQwX3Byb2JlJiMzNDssCiAgICAmIzM0O2RwODM2NDBfcmVtb3ZlJiMzNDssCiAgICAmIzM0O3BoeV9wYWNrYWdlX2xvY2smIzM0OywKICAgICYjMzQ7cGh5X3BhY2thZ2VfdW5sb2NrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyB0aGUgRFA4MzY0MCBQSFkgZHJpdmVyIHRvIHVzZSB0aGUgc3RhbmRhcmQgcGh5X3BhY2thZ2UgQVBJIGZvciBzaGFyZWQgY2xvY2sgaW5pdGlhbGl6YXRpb24sIHJlcGxhY2luZyBhIGN1c3RvbSBnbG9iYWwgbGlzdC4gSXQgYWxzbyBpbnRyb2R1Y2VzIHBoeV9wYWNrYWdlX2xvY2sgYW5kIHBoeV9wYWNrYWdlX3VubG9jayB0byBzZXJpYWxpemUgYWNjZXNzIHRvIHBhY2thZ2UtcHJpdmF0ZSBkYXRhLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCB0aGUgcHJvYmUgYW5kIHJlbW92ZSBwYXRocyBvZiB0aGUgUEhZIGRyaXZlciwgd2hpY2ggY2FuIGJlIHJlYWNoZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBieSBlbXVsYXRpbmcgYW4gTURJTyBidXMgb3IgYSBVU0IgbmV0d29yayBkZXZpY2Ugd2l0aCB0aGUgc3BlY2lmaWMgUEhZIElELiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTViNzBkZGFhN2YzZGZmMzZiZDUxZTdlMmM2OGVlYzA4NTE5YTIzZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDEwIDE2OjUzOjU5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYyBiL2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMKaW5kZXggOTg0NzJhYmRkMzkyMC4uNjg2N2U3YzZmM2I3ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jCkBAIC0yMSw2ICYjNDM7MjEsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaCZndDsKIAogI2luY2x1ZGUgJiMzNDtkcDgzNjQwX3JlZy5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O3BoeWxpYi5oJiMzNDsKIAogI2RlZmluZSBEUDgzNjQwX1BIWV9JRAkweDIwMDA1Y2UxCiAjZGVmaW5lIFBBR0VTRUwJCTB4MTMKQEAgLTEyOCwxMCAmIzQzOzEyOSw2IEBAIHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUgewogfTsKIAogc3RydWN0IGRwODM2NDBfY2xvY2sgewotCS8qIGtlZXBzIHRoZSBpbnN0YW5jZSBpbiB0aGUgJiMzOTtwaHl0ZXJfY2xvY2tzJiMzOTsgbGlzdCAqLwotCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKLQkvKiB3ZSBjcmVhdGUgb25lIGNsb2NrIGluc3RhbmNlIHBlciBNSUkgYnVzICovCi0Jc3RydWN0IG1paV9idXMgKmJ1czsKIAkvKiBwcm90ZWN0cyBleHRlbmRlZCByZWdpc3RlcnMgZnJvbSBjb25jdXJyZW50IGFjY2VzcyAqLwogCXN0cnVjdCBtdXRleCBleHRyZWdfbG9jazsKIAkvKiByZW1lbWJlcnMgd2hpY2ggcGFnZSB3YXMgbGFzdCBzZWxlY3RlZCAqLwpAQCAtMTQ2LDYgJiM0MzsxNDMsOCBAQCBzdHJ1Y3QgZHA4MzY0MF9jbG9jayB7CiAJc3RydWN0IGxpc3RfaGVhZCBwaHlsaXN0OwogCS8qIHJlZmVyZW5jZSB0byBvdXIgUFRQIGhhcmR3YXJlIGNsb2NrICovCiAJc3RydWN0IHB0cF9jbG9jayAqcHRwX2Nsb2NrOwomIzQzOwkvKiBwcm90ZWN0ZWQgYnkgdGhlIFBUUCBjb3JlIHBpbiBjb25maWd1cmF0aW9uIGxvY2sgKi8KJiM0MzsJc3RydWN0IHB0cF9waW5fZGVzYyBwaW5fY29uZmlnW0RQODM2NDBfTl9QSU5TXTsKIH07CiAKIC8qIGdsb2JhbHMgKi8KQEAgLTIwNiwxMCAmIzQzOzIwNSw2IEBAIHN0YXRpYyB2b2lkIGRwODM2NDBfZ3Bpb19kZWZhdWx0cyhzdHJ1Y3QgcHRwX3Bpbl9kZXNjICpwZCkKIAl9CiB9CiAKLS8qIGEgbGlzdCBvZiBjbG9ja3MgYW5kIGEgbXV0ZXggdG8gcHJvdGVjdCBpdCAqLwotc3RhdGljIExJU1RfSEVBRChwaHl0ZXJfY2xvY2tzKTsKLXN0YXRpYyBERUZJTkVfTVVURVgocGh5dGVyX2Nsb2Nrc19sb2NrKTsKLQogc3RhdGljIHZvaWQgcnhfdGltZXN0YW1wX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTsKIAogLyogZXh0ZW5kZWQgcmVnaXN0ZXIgYWNjZXNzIGZ1bmN0aW9ucyAqLwpAQCAtOTUzLDEzICYjNDM7OTQ4LDEyIEBAIHN0YXRpYyB2b2lkIGRlY29kZV9zdGF0dXNfZnJhbWUoc3RydWN0IGRwODM2NDBfcHJpdmF0ZSAqZHA4MzY0MCwKIAl9CiB9CiAKLXN0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfaW5pdChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2ssIHN0cnVjdCBtaWlfYnVzICpidXMpCiYjNDM7c3RhdGljIHZvaWQgZHA4MzY0MF9jbG9ja19pbml0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaykKIHsKLQlJTklUX0xJU1RfSEVBRCgmYW1wO2Nsb2NrLSZndDtsaXN0KTsKLQljbG9jay0mZ3Q7YnVzID0gYnVzOwogCW11dGV4X2luaXQoJmFtcDtjbG9jay0mZ3Q7ZXh0cmVnX2xvY2spOwogCW11dGV4X2luaXQoJmFtcDtjbG9jay0mZ3Q7Y2xvY2tfbG9jayk7CiAJSU5JVF9MSVNUX0hFQUQoJmFtcDtjbG9jay0mZ3Q7cGh5bGlzdCk7CiYjNDM7CWNsb2NrLSZndDtjYXBzLnBpbl9jb25maWcgPSBjbG9jay0mZ3Q7cGluX2NvbmZpZzsKIAljbG9jay0mZ3Q7Y2Fwcy5vd25lciA9IFRISVNfTU9EVUxFOwogCXNwcmludGYoY2xvY2stJmd0O2NhcHMubmFtZSwgJiMzNDtkcDgzNjQwIHRpbWVyJiMzNDspOwogCWNsb2NrLSZndDtjYXBzLm1heF9hZGoJPSAxOTUzMTI0OwpAQCAtOTc3LDE0ICYjNDM7OTcxLDggQEAgc3RhdGljIHZvaWQgZHA4MzY0MF9jbG9ja19pbml0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaywgc3RydWN0IG1paV9idXMgKmJ1cykKIAljbG9jay0mZ3Q7Y2Fwcy5zZXR0aW1lNjQJPSBwdHBfZHA4MzY0MF9zZXR0aW1lOwogCWNsb2NrLSZndDtjYXBzLmVuYWJsZQk9IHB0cF9kcDgzNjQwX2VuYWJsZTsKIAljbG9jay0mZ3Q7Y2Fwcy52ZXJpZnkJPSBwdHBfZHA4MzY0MF92ZXJpZnk7Ci0JLyoKLQkgKiBDb252ZXJ0IHRoZSBtb2R1bGUgcGFyYW0gZGVmYXVsdHMgaW50byBhIGR5bmFtaWMgcGluIGNvbmZpZ3VyYXRpb24uCi0JICovCiYjNDM7CS8qIEluaXRpYWxpemUgdGhlIHJ1bnRpbWUgcGluIGNvbmZpZ3VyYXRpb24gZnJvbSBncGlvX3RhYi4gKi8KIAlkcDgzNjQwX2dwaW9fZGVmYXVsdHMoY2xvY2stJmd0O2NhcHMucGluX2NvbmZpZyk7Ci0JLyoKLQkgKiBHZXQgYSByZWZlcmVuY2UgdG8gdGhpcyBidXMgaW5zdGFuY2UuCi0JICovCi0JZ2V0X2RldmljZSgmYW1wO2J1cy0mZ3Q7ZGV2KTsKIH0KIAogc3RhdGljIGludCBjaG9vc2VfdGhpc19waHkoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrLApAQCAtOTk5LDU4ICYjNDM7OTg3LDYgQEAgc3RhdGljIGludCBjaG9vc2VfdGhpc19waHkoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrLAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgc3RydWN0IGRwODM2NDBfY2xvY2sgKmRwODM2NDBfY2xvY2tfZ2V0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaykKLXsKLQlpZiAoY2xvY2spCi0JCW11dGV4X2xvY2soJmFtcDtjbG9jay0mZ3Q7Y2xvY2tfbG9jayk7Ci0JcmV0dXJuIGNsb2NrOwotfQotCi0vKgotICogTG9vayB1cCBhbmQgbG9jayBhIGNsb2NrIGJ5IGJ1cyBpbnN0YW5jZS4KLSAqIElmIHRoZXJlIGlzIG5vIGNsb2NrIGZvciB0aGlzIGJ1cywgdGhlbiBjcmVhdGUgaXQgZmlyc3QuCi0gKi8KLXN0YXRpYyBzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqZHA4MzY0MF9jbG9ja19nZXRfYnVzKHN0cnVjdCBtaWlfYnVzICpidXMpCi17Ci0Jc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrID0gTlVMTCwgKnRtcDsKLQlzdHJ1Y3QgbGlzdF9oZWFkICp0aGlzOwotCi0JbXV0ZXhfbG9jaygmYW1wO3BoeXRlcl9jbG9ja3NfbG9jayk7Ci0KLQlsaXN0X2Zvcl9lYWNoKHRoaXMsICZhbXA7cGh5dGVyX2Nsb2NrcykgewotCQl0bXAgPSBsaXN0X2VudHJ5KHRoaXMsIHN0cnVjdCBkcDgzNjQwX2Nsb2NrLCBsaXN0KTsKLQkJaWYgKHRtcC0mZ3Q7YnVzID09IGJ1cykgewotCQkJY2xvY2sgPSB0bXA7Ci0JCQlicmVhazsKLQkJfQotCX0KLQlpZiAoY2xvY2spCi0JCWdvdG8gb3V0OwotCi0JY2xvY2sgPSBremFsbG9jX29iaihzdHJ1Y3QgZHA4MzY0MF9jbG9jayk7Ci0JaWYgKCFjbG9jaykKLQkJZ290byBvdXQ7Ci0KLQljbG9jay0mZ3Q7Y2Fwcy5waW5fY29uZmlnID0ga3phbGxvY19vYmpzKHN0cnVjdCBwdHBfcGluX2Rlc2MsCi0JCQkJCSAgICAgIERQODM2NDBfTl9QSU5TKTsKLQlpZiAoIWNsb2NrLSZndDtjYXBzLnBpbl9jb25maWcpIHsKLQkJa2ZyZWUoY2xvY2spOwotCQljbG9jayA9IE5VTEw7Ci0JCWdvdG8gb3V0OwotCX0KLQlkcDgzNjQwX2Nsb2NrX2luaXQoY2xvY2ssIGJ1cyk7Ci0JbGlzdF9hZGRfdGFpbCgmYW1wO2Nsb2NrLSZndDtsaXN0LCAmYW1wO3BoeXRlcl9jbG9ja3MpOwotb3V0OgotCW11dGV4X3VubG9jaygmYW1wO3BoeXRlcl9jbG9ja3NfbG9jayk7Ci0KLQlyZXR1cm4gZHA4MzY0MF9jbG9ja19nZXQoY2xvY2spOwotfQotCi1zdGF0aWMgdm9pZCBkcDgzNjQwX2Nsb2NrX3B1dChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2spCi17Ci0JbXV0ZXhfdW5sb2NrKCZhbXA7Y2xvY2stJmd0O2Nsb2NrX2xvY2spOwotfQotCiBzdGF0aWMgaW50IGRwODM2NDBfc29mdF9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogewogCWludCByZXQ7CkBAIC0xNDAwLDIwICYjNDM7MTMzNiwzMSBAQCBzdGF0aWMgaW50IGRwODM2NDBfdHNfaW5mbyhzdHJ1Y3QgbWlpX3RpbWVzdGFtcGVyICptaWlfdHMsCiAKIHN0YXRpYyBpbnQgZHA4MzY0MF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogewotCXN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jazsKIAlzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICpkcDgzNjQwOwotCWludCBlcnIgPSAtRU5PTUVNLCBpOwomIzQzOwlzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2s7CiYjNDM7CWludCBlcnIsIGk7CiAKIAlpZiAocGh5ZGV2LSZndDttZGlvLmFkZHIgPT0gQlJPQURDQVNUX0FERFIpCiAJCXJldHVybiAwOwogCi0JY2xvY2sgPSBkcDgzNjQwX2Nsb2NrX2dldF9idXMocGh5ZGV2LSZndDttZGlvLmJ1cyk7Ci0JaWYgKCFjbG9jaykKLQkJZ290byBub19jbG9jazsKJiM0MzsJZXJyID0gcGh5X3BhY2thZ2Vfam9pbihwaHlkZXYsIEJST0FEQ0FTVF9BRERSLCBzaXplb2YoKmNsb2NrKSk7CiYjNDM7CWlmIChlcnIpCiYjNDM7CQlyZXR1cm4gZXJyOwomIzQzOwomIzQzOwljbG9jayA9IHBoeV9wYWNrYWdlX2dldF9wcml2KHBoeWRldik7CiYjNDM7CS8qIEVuc3VyZSBvdGhlciBQSFkgcHJvYmVzIHdhaXQgZm9yIHNoYXJlZCBjbG9jayBpbml0aWFsaXphdGlvbi4gKi8KJiM0MzsJcGh5X3BhY2thZ2VfbG9jayhwaHlkZXYpOwomIzQzOwlpZiAocGh5X3BhY2thZ2VfcHJvYmVfb25jZShwaHlkZXYpKQomIzQzOwkJZHA4MzY0MF9jbG9ja19pbml0KGNsb2NrKTsKJiM0MzsJcGh5X3BhY2thZ2VfdW5sb2NrKHBoeWRldik7CiYjNDM7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtjbG9jay0mZ3Q7Y2xvY2tfbG9jayk7CiAKIAlkcDgzNjQwID0ga3phbGxvY19vYmooc3RydWN0IGRwODM2NDBfcHJpdmF0ZSk7Ci0JaWYgKCFkcDgzNjQwKQomIzQzOwlpZiAoIWRwODM2NDApIHsKJiM0MzsJCWVyciA9IC1FTk9NRU07CiAJCWdvdG8gbm9fbWVtb3J5OwomIzQzOwl9CiAKIAlkcDgzNjQwLSZndDtwaHlkZXYgPSBwaHlkZXY7CiAJZHA4MzY0MC0mZ3Q7bWlpX3RzLnJ4dHN0YW1wID0gZHA4MzY0MF9yeHRzdGFtcDsKQEAgLTE0NTAsMTUgJiM0MzsxMzk3LDIwIEBAIHN0YXRpYyBpbnQgZHA4MzY0MF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogCX0gZWxzZQogCQlsaXN0X2FkZF90YWlsKCZhbXA7ZHA4MzY0MC0mZ3Q7bGlzdCwgJmFtcDtjbG9jay0mZ3Q7cGh5bGlzdCk7CiAKLQlkcDgzNjQwX2Nsb2NrX3B1dChjbG9jayk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2Nsb2NrLSZndDtjbG9ja19sb2NrKTsKJiM0MzsKIAlyZXR1cm4gMDsKIAogbm9fcmVnaXN0ZXI6CiAJY2xvY2stJmd0O2Nob3NlbiA9IE5VTEw7CiYjNDM7CWNsb2NrLSZndDtwdHBfY2xvY2sgPSBOVUxMOwomIzQzOwlwaHlkZXYtJmd0O2RlZmF1bHRfdGltZXN0YW1wID0gZmFsc2U7CiYjNDM7CXBoeWRldi0mZ3Q7bWlpX3RzID0gTlVMTDsKJiM0MzsJcGh5ZGV2LSZndDtwcml2ID0gTlVMTDsKIAlrZnJlZShkcDgzNjQwKTsKIG5vX21lbW9yeToKLQlkcDgzNjQwX2Nsb2NrX3B1dChjbG9jayk7Ci1ub19jbG9jazoKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7Y2xvY2stJmd0O2Nsb2NrX2xvY2spOwomIzQzOwlwaHlfcGFja2FnZV9sZWF2ZShwaHlkZXYpOwogCXJldHVybiBlcnI7CiB9CiAKQEAgLTE0NjcsNyAmIzQzOzE0MTksNiBAQCBzdGF0aWMgdm9pZCBkcDgzNjQwX3JlbW92ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogCXN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jazsKIAlzdHJ1Y3QgbGlzdF9oZWFkICp0aGlzLCAqbmV4dDsKIAlzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICp0bXAsICpkcDgzNjQwID0gcGh5ZGV2LSZndDtwcml2OwotCWJvb2wgcmVtb3ZlX2Nsb2NrID0gZmFsc2U7CiAKIAlpZiAocGh5ZGV2LSZndDttZGlvLmFkZHIgPT0gQlJPQURDQVNUX0FERFIpCiAJCXJldHVybjsKQEAgLTE0ODAsNyAmIzQzOzE0MzEsOCBAQCBzdGF0aWMgdm9pZCBkcDgzNjQwX3JlbW92ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogCXNrYl9xdWV1ZV9wdXJnZSgmYW1wO2RwODM2NDAtJmd0O3J4X3F1ZXVlKTsKIAlza2JfcXVldWVfcHVyZ2UoJmFtcDtkcDgzNjQwLSZndDt0eF9xdWV1ZSk7CiAKLQljbG9jayA9IGRwODM2NDBfY2xvY2tfZ2V0KGRwODM2NDAtJmd0O2Nsb2NrKTsKJiM0MzsJY2xvY2sgPSBkcDgzNjQwLSZndDtjbG9jazsKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO2Nsb2NrLSZndDtjbG9ja19sb2NrKTsKIAogCWlmIChkcDgzNjQwID09IGNsb2NrLSZndDtjaG9zZW4pIHsKIAkJcHRwX2Nsb2NrX3VucmVnaXN0ZXIoY2xvY2stJmd0O3B0cF9jbG9jayk7CkBAIC0xNDk1LDIzICYjNDM7MTQ0NywxMCBAQCBzdGF0aWMgdm9pZCBkcDgzNjQwX3JlbW92ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogCQl9CiAJfQogCi0JaWYgKCFjbG9jay0mZ3Q7Y2hvc2VuICZhbXA7JmFtcDsgbGlzdF9lbXB0eSgmYW1wO2Nsb2NrLSZndDtwaHlsaXN0KSkKLQkJcmVtb3ZlX2Nsb2NrID0gdHJ1ZTsKLQotCWRwODM2NDBfY2xvY2tfcHV0KGNsb2NrKTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7Y2xvY2stJmd0O2Nsb2NrX2xvY2spOwogCWtmcmVlKGRwODM2NDApOwogCi0JaWYgKHJlbW92ZV9jbG9jaykgewotCQltdXRleF9sb2NrKCZhbXA7cGh5dGVyX2Nsb2Nrc19sb2NrKTsKLQkJbGlzdF9kZWwoJmFtcDtjbG9jay0mZ3Q7bGlzdCk7Ci0JCW11dGV4X3VubG9jaygmYW1wO3BoeXRlcl9jbG9ja3NfbG9jayk7Ci0KLQkJbXV0ZXhfZGVzdHJveSgmYW1wO2Nsb2NrLSZndDtleHRyZWdfbG9jayk7Ci0JCW11dGV4X2Rlc3Ryb3koJmFtcDtjbG9jay0mZ3Q7Y2xvY2tfbG9jayk7Ci0JCXB1dF9kZXZpY2UoJmFtcDtjbG9jay0mZ3Q7YnVzLSZndDtkZXYpOwotCQlrZnJlZShjbG9jay0mZ3Q7Y2Fwcy5waW5fY29uZmlnKTsKLQkJa2ZyZWUoY2xvY2spOwotCX0KJiM0MzsJcGh5X3BhY2thZ2VfbGVhdmUocGh5ZGV2KTsKIH0KIAogc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGRwODM2NDBfZHJpdmVyW10gPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jCmluZGV4IDE2YWU4ZDFjMWY4OWEuLjczNTgwNmM1YmVhODggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jCkBAIC01Miw2ICYjNDM7NTIsMjkgQEAgdm9pZCAqcGh5X3BhY2thZ2VfZ2V0X3ByaXYoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHBoeV9wYWNrYWdlX2dldF9wcml2KTsKIAomIzQzOy8qKgomIzQzOyAqIHBoeV9wYWNrYWdlX2xvY2sgLSBhY3F1aXJlIHRoZSBQSFkgcGFja2FnZSBsb2NrCiYjNDM7ICogQHBoeWRldjogUEhZIGRldmljZSB0aGF0IGhhcyBqb2luZWQgdGhlIHBhY2thZ2UKJiM0MzsgKgomIzQzOyAqIFVzZSB0aGlzIHRvIHNlcmlhbGl6ZSBhY2Nlc3MgdG8gcGFja2FnZS1wcml2YXRlIGRhdGEuIFJlbGVhc2UgdGhlIGxvY2sKJiM0MzsgKiB3aXRoIHBoeV9wYWNrYWdlX3VubG9jaygpLgomIzQzOyAqLwomIzQzO3ZvaWQgcGh5X3BhY2thZ2VfbG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQomIzQzO3sKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO3BoeWRldi0mZ3Q7bWRpby5idXMtJmd0O3NoYXJlZF9sb2NrKTsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwocGh5X3BhY2thZ2VfbG9jayk7CiYjNDM7CiYjNDM7LyoqCiYjNDM7ICogcGh5X3BhY2thZ2VfdW5sb2NrIC0gcmVsZWFzZSB0aGUgUEhZIHBhY2thZ2UgbG9jawomIzQzOyAqIEBwaHlkZXY6IFBIWSBkZXZpY2UgdGhhdCBoYXMgam9pbmVkIHRoZSBwYWNrYWdlCiYjNDM7ICovCiYjNDM7dm9pZCBwaHlfcGFja2FnZV91bmxvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKJiM0Mzt7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO3BoeWRldi0mZ3Q7bWRpby5idXMtJmd0O3NoYXJlZF9sb2NrKTsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwocGh5X3BhY2thZ2VfdW5sb2NrKTsKJiM0MzsKIHN0YXRpYyBpbnQgcGh5X3BhY2thZ2VfYWRkcmVzcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LAogCQkJICAgICAgIHVuc2lnbmVkIGludCBhZGRyX29mZnNldCkKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaWIuaCBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaWIuaAppbmRleCAwZmJhMjQ1Zjk3NDU4Li5jNmUyNmFjNmIyOGYwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGliLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oCkBAIC0xMiw2ICYjNDM7MTIsOCBAQCBzdHJ1Y3QgbWlpX2J1czsKIAogc3RydWN0IGRldmljZV9ub2RlICpwaHlfcGFja2FnZV9nZXRfbm9kZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTsKIHZvaWQgKnBoeV9wYWNrYWdlX2dldF9wcml2KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpOwomIzQzO3ZvaWQgcGh5X3BhY2thZ2VfbG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTsKJiM0Mzt2b2lkIHBoeV9wYWNrYWdlX3VubG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTsKIGludCBfX3BoeV9wYWNrYWdlX3JlYWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdW5zaWduZWQgaW50IGFkZHJfb2Zmc2V0LAogCQkgICAgICAgdTMyIHJlZ251bSk7CiBpbnQgX19waHlfcGFja2FnZV93cml0ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1bnNpZ25lZCBpbnQgYWRkcl9vZmZzZXQsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3B0cC9LY29uZmlnIGIvZHJpdmVycy9wdHAvS2NvbmZpZwppbmRleCBiOTM2NDBjYTA4YjcyLi5mZWI1MGY4Y2M0MDZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3B0cC9LY29uZmlnCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvcHRwL0tjb25maWcKQEAgLTc4LDYgJiM0Mzs3OCw3IEBAIGNvbmZpZyBEUDgzNjQwX1BIWQogCWRlcGVuZHMgb24gUEhZTElCCiAJZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DSwogCXNlbGVjdCBDUkMzMgomIzQzOwlzZWxlY3QgUEhZX1BBQ0tBR0UKIAloZWxwCiAJICBTdXBwb3J0cyB0aGUgRFA4MzY0MCBQSFlURVIgd2l0aCBJRUVFIDE1ODggZmVhdHVyZXMuCiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTY6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQ4MQoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDU1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBIWSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0b3VjaGVzIHRoZSBgZHA4MzY0MC5jYCwgYHBoeV9wYWNrYWdlLmNgLCBgcGh5bGliLmhgLCBhbmQgYEtjb25maWdgIGZpbGVzLiBJdCYjMzk7cyBlc3NlbnRpYWxseSByZWZhY3RvcmluZyB0aGUgYGRwODM2NDBgIFBIWSBkcml2ZXIgdG8gdXNlIHRoZSBgcGh5X3BhY2thZ2VgIG1lY2hhbmlzbSwgcmVwbGFjaW5nIGEgY3VzdG9tIGdsb2JhbCBjbG9jayBsaXN0IHdpdGggdGhlIHN0YW5kYXJkIG9uZS4gVGhleSYjMzk7dmUgYWRkZWQgYHBoeV9wYWNrYWdlX2xvY2tgIGFuZCBgcGh5X3BhY2thZ2VfdW5sb2NrYCB0byB0aGUgYHBoeV9wYWNrYWdlLmNgIGZpbGUgYW5kIG1vZGlmaWVkIHRoZSBgZHA4MzY0MF9wcm9iZWAgYW5kIGBkcDgzNjQwX3JlbW92ZWAgZnVuY3Rpb25zIHRvIHVzZSB0aGUgc3RhbmRhcmQgbG9ja2luZyBhbmQgbWFuYWdlbWVudCBwcmltaXRpdmVzIG9mIHRoZSBuZXcgcGFja2FnZSBzeXN0ZW0uIFRoZXkmIzM5O3ZlIGFsc28gYWRkZWQgYHNlbGVjdCBQSFlfUEFDS0FHRWAgdG8gdGhlIGBEUDgzNjQwX1BIWWAgY29uZmlndXJhdGlvbiBvcHRpb24gaW4gdGhlIGBLY29uZmlnYCBmaWxlLCB3aGljaCBtYWtlcyBzZW5zZS4KCk15IGZpcnN0IHRob3VnaHQgaXMsIGNhbiBJIHJlYWNoIHRoaXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBmb3IgdGVzdGluZz8gVGhlIGBkcDgzNjQwYCBkcml2ZXIgaXMsIGFmdGVyIGFsbCwgYSBQSFkgZHJpdmVyLCB3aGljaCBhcmUgdHlwaWNhbGx5IHByb2JlZCB3aGVuIGEgbmV0d29yayBkZXZpY2UgY29ubmVjdHMgdG8gYW4gTURJTyBidXMgYW5kIHRoZSBQSFkgSUQgbWF0Y2hlcy4gUUVNVSBlbXVsYXRpb24gb2YgTURJTyBidXNlcyBhbmQgUEhZcyBpcyB1c3VhbGx5IGZlYXNpYmxlLCBhbmQgYGRwODM2NDBgIGl0c2VsZiBpcyBhIGZhaXJseSBzdGFuZGFyZCBQSFkuCgpOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gaXM6IGNhbiBzeXprYWxsZXIgZnV6eiB0aGlzPyBTeXprYWxsZXIgKmRvZXMqIGhhdmUgc3VwcG9ydCBmb3IgTURJTy9QSFkgZnV6emluZywgdHlwaWNhbGx5IHRocm91Z2ggZW11bGF0ZWQgbmV0d29yayBkZXZpY2VzIGxpa2UgYG1hY2JgLCBvciBtYXliZSBldmVuIGR1bW15IE1ESU8gYnVzZXMuIEkga25vdyBJIGNhbiB1c2UgYHZldGhgIG9yIGB0dW5gIGRldmljZXMsIGJ1dCB0aGV5IGRvbiYjMzk7dCBoYXZlIGJ1aWx0LWluIFBIWXMuIEhtbSwgSSB0aG91Z2h0IHN5emthbGxlciBoYWQgYHN5el9tZGlvX3JlYWRgLCBgc3l6X21kaW9fd3JpdGVgIGNhbGxzLCBidXQgbWF5YmUgbm90Li4uCgpPa2F5LCBidXQgdGhlIGtleSBpcyB0aGF0IGBkcDgzNjQwX3Byb2JlYCBpcyBjYWxsZWQgd2hlbiBhIFBIWSBkZXZpY2UgaXMgY3JlYXRlZCwgcmlnaHQ/IENhbiBhIFBIWSBkZXZpY2UgYmUgY3JlYXRlZCBmcm9tIHVzZXJzcGFjZT8gTm8sIG5vdCBkaXJlY3RseSB2aWEgbmV0bGluayBvciBzeXNmcywgYXMgdXN1YWxseSBNRElPIGJ1cyBzY2FubmluZyBpcyB0aGUgbWVhbnMuIFdhaXQsIHRoZXJlIGFyZSBgbWRpby1iY20tdW5pbWFjYCBvciBgZml4ZWQtcGh5YCwgcmlnaHQ/CgpBY3R1YWxseSwgc3l6a2FsbGVyICpkb2VzKiBmdXp6IE1ESU8gYnVzZXMgdGhyb3VnaCB2aXJ0dWFsIGRyaXZlcnMgb3IgbmV0bGluayBpbnRlcmZhY2VzLiBPa2F5LCBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlIGBkcDgzNjQwX3Byb2JlYCBmdW5jdGlvbiBpcyByZWFjaGFibGUuIEkgd2lsbCBncmVwIGZvciBgZHA4MzY0MF9wcm9iZWAgb3IgZXZlbiBgRFA4MzY0MF9QSFlfSURgIGluIHRoZSBrZXJuZWwgc291cmNlLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgc3l6a2FsbGVyIGNhbiB0cmlnZ2VyIHRoaXMgY29kZSBwYXRoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE2OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0RQODM2NDBfUEhZX0lEJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMjUtXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jOjI2OiNkZWZpbmUgRFA4MzY0MF9QSFlfSURcdDB4MjAwMDVjZTFcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMjctI2RlZmluZSBQQUdFU0VMXHRcdDB4MTNcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jPTE0NTY9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGRwODM2NDBfZHJpdmVyW10gPSB7XG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTE0NTcte1xuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYzoxNDU4Olx0LnBoeV9pZFx0XHQ9IERQODM2NDBfUEhZX0lELFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYy0xNDU5LVx0LnBoeV9pZF9tYXNrXHQ9IDB4ZmZmZmZmZjAsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYz0xNDc3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgZHA4MzY0MF90YmxbXSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM6MTQ3ODpcdHsgRFA4MzY0MF9QSFlfSUQsIDB4ZmZmZmZmZjAgfSxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTQ3OS1cdHsgfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE2OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5NzMKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBEUDgzNjQwIFBIWSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBjbGVhcmx5IGZvY3VzZWQgb24gdGhlIGBkcDgzNjQwYCBkcml2ZXIsIHNwZWNpZmljYWxseSB0b3VjaGluZyBgZHA4MzY0MF9wcm9iZWAgYW5kIGBkcDgzNjQwX3JlbW92ZWAuIEludGVyZXN0aW5nIHRoYXQgaXQmIzM5O3MgYWxzbyBhZGRpbmcgYHBoeV9wYWNrYWdlX2xvY2tgIGFuZCBgcGh5X3BhY2thZ2VfdW5sb2NrYCB0byBgcGh5X3BhY2thZ2UuY2AuIEhvbGQgb24sIGBwaHlfcGFja2FnZV9sb2NrYCBpcyAqZXhwb3J0ZWQqPyBUaGF0IG1lYW5zIG90aGVyIFBIWSBkcml2ZXJzIGNvdWxkIHBvdGVudGlhbGx5IGxldmVyYWdlIHRoaXMgbmV3IGxvY2tpbmcgbWVjaGFuaXNtLiBUaGF0JiMzOTtzIGEgZ29vZCBkZXNpZ24gZGVjaXNpb247IG1pbmltaXppbmcgY29kZSBkdXBsaWNhdGlvbiBpcyBhbHdheXMgYSBwbHVzLgoKQnV0IHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgZGVmaW5pdGVseSBzZWVtcyB0byBiZSB3aXRoaW4gYGRwODM2NDAuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O2NhbiBzeXprYWxsZXIgaGl0IGBkcDgzNjQwX3Byb2JlYD8mIzM0OyBLbm93aW5nIHRoZSBrZXJuZWwmIzM5O3MgZnV6emluZyBjYXBhYmlsaXRpZXMgaXMgY3J1Y2lhbC4gSWYgc3l6a2FsbGVyIGNhbiB0cmlnZ2VyIGEgUEhZIHByb2JlLCB0aGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBmb2N1cyBteSBhbmFseXNpcyBmb3IgcG90ZW50aWFsIGlzc3Vlcy4gVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lcywgd2hhdCBhcmUgdGhlIGVudHJ5IHBvaW50cyBmb3Igc3l6a2FsbGVyIHRvIHJlYWNoIHRoaXMgZnVuY3Rpb24/IEl0IGNvdWxkIHJlZ2lzdGVyIGFuIE1ESU8gZGV2aWNlIG9yIGxldmVyYWdlIGEgdmlydHVhbCBNRElPIGJ1cy4gSSB0aGluayB0aGVyZSB3YXMgc29tZXRoaW5nIGxpa2UgYG1kaW8tbW9ja3VwYCBvciBzaW1pbGFyLCByaWdodD8gTGV0IG1lIHF1aWNrbHkgY3Jvc3MtcmVmZXJlbmNlIHRoYXQgdG8gbWFrZSBzdXJlLiBJJiMzOTttIGdvaW5nIHRvIGNoZWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE2OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWRpby4qbW9ja3VwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNjo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NDQxCgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ29uc2lkZXJpbmcgUEhZIERldmljZSBDcmVhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkmIzM5O20gY3VycmVudGx5IHBvbmRlcmluZyB0aGUgbWVjaGFuaWNzIG9mIFBIWSBkZXZpY2UgY3JlYXRpb24gd2l0aGluIHRoZSBmcmFtZXdvcmsgd2UmIzM5O3JlIHdvcmtpbmcgd2l0aC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRyeWluZyB0byBwaW5wb2ludCB0aGUgZXhpc3RpbmcgcGF0aHdheXMgZm9yIGluc3RhbnRpYXRpb24gYW5kIHJlZ2lzdHJhdGlvbi4gQXJlIHRoZXJlIGVzdGFibGlzaGVkIGludGVyZmFjZXMgb3IgbWVjaGFuaXNtcyB0aGF0IGFsbG93IHVzIHRvIGRlZmluZSBhbmQgaW50ZWdyYXRlIHRoZXNlIHBoeXNpY2FsIGxheWVyIGNvbXBvbmVudHM/IE15IGltbWVkaWF0ZSBsaW5lIG9mIGlucXVpcnkgaW52b2x2ZXMgdW5kZXJzdGFuZGluZyB0aGUgYXZhaWxhYmxlIEFQSXMgYW5kIGV4cGxvcmluZyBhbnkgcG90ZW50aWFsICYjMzQ7aG9va3MmIzM0OyB3aXRoaW4gdGhlIHN5c3RlbSB0aGF0IG1pZ2h0IGZhY2lsaXRhdGUgc2VhbWxlc3MgaW50ZWdyYXRpb24uIFRoZSBmb2N1cyBpcyBlZmZpY2llbmN5OyBhcmUgdGhlcmUgc3RhbmRhcmRpemVkIHByb2Nlc3Nlcywgb3Igd2lsbCBhIG1vcmUgbWFudWFsLCBsb3dlci1sZXZlbCBhcHByb2FjaCBiZSByZXF1aXJlZD8gSSBuZWVkIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHRoZSBsZXZlbCBvZiBhYnN0cmFjdGlvbiB3ZSYjMzk7cmUgYWZmb3JkZWQgaW4gY3JlYXRpbmcgdGhlc2UgY3J1Y2lhbCBoYXJkd2FyZSBpbnRlcmZhY2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE2OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWRpby4qZHVtbXkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE2OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2NTAKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbml0aWFsIENvbmNlcHQ6ICYjMzQ7Zml4ZWQtcGh5JiMzNDsqKgoKUmlnaHQsIGxldCYjMzk7cyBjb25zaWRlciB0aGlzICYjMzQ7Zml4ZWQtcGh5JiMzNDsgY29uY2VwdC4gSW1tZWRpYXRlbHksIG15IG1pbmQgc3RhcnRzIHJhY2luZy4gV2hhdCBleGFjdGx5IGFyZSB3ZSBmaXhpbmc/IElzIHRoaXMgcmVsYXRlZCB0byBhIHNwZWNpZmljIHBoeXNpY2FsIGxheWVyIGltcGxlbWVudGF0aW9uLCBvciBhIGJyb2FkZXIgYXJjaGl0ZWN0dXJhbCBhcHByb2FjaD8gJiMzNDtGaXhlZCYjMzQ7IGltcGxpZXMgYSBkZWdyZWUgb2YgaW1tdXRhYmlsaXR5LCBhIGhhcmRlbmluZywgcGVyaGFwcy4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBwcmUtZGVmaW5lZCBQSFkgaW50ZXJmYWNlLCBzZXQgcGFyYW1ldGVycywgb3IgYSByaWdpZCBoYXJkd2FyZSBjb25maWd1cmF0aW9uPyBJdCYjMzk7cyBpbnRyaWd1aW5nLCBzdWdnZXN0aW5nIGEgcG90ZW50aWFsIHRyYWRlLW9mZiBiZXR3ZWVuIGZsZXhpYmlsaXR5IGFuZCBwZXJmb3JtYW5jZSwgb3IgcHJlZGljdGFiaWxpdHkgYW5kIGFkYXB0YWJpbGl0eS4gSeKAmW0gYWxyZWFkeSB0aGlua2luZyBhYm91dCBwb3RlbnRpYWwgYXBwbGljYXRpb25zOiBlbWJlZGRlZCBzeXN0ZW1zLCBzcGVjaWZpYyBjb21tdW5pY2F0aW9uIHByb3RvY29scywgbWF5YmUgZXZlbiBzcGVjaWFsaXplZCBoYXJkd2FyZSBhY2NlbGVyYXRvcnMgd2hlcmUgZGV0ZXJtaW5pc20gaXMgcGFyYW1vdW50LiBMZXQmIzM5O3Mgc2VlIHdoZXJlIHRoaXMgZ29lcy4uLiBJJiMzOTttIGN1cmlvdXMgd2hhdCB0aGlzICYjMzQ7Zml4ZWQtcGh5JiMzNDsgc2lnbmlmaWVzIGluIHRoZSBsYXJnZXIgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTY6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Zml4ZWRfcGh5X3JlZ2lzdGVyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTQ4Mj1zdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDkxLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTlVNX0ZJWEVEX1BIWVM7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDkyOlx0XHRwaHlkZXZzW2ldID0gZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM9MjIzND1zdGF0aWMgaW50IGI0NF9yZWdpc3Rlcl9waHlfb25lKHN0cnVjdCBiNDQgKmJwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyNzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYzoyMjczOlx0XHRwaHlkZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXJfMTAwZmQoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyNzQtXHRcdGlmICghSVNfRVJSKHBoeWRldikpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYz0xNDM5PWludCBiZ21hY19waHlfY29ubmVjdF9kaXJlY3Qoc3RydWN0IGJnbWFjICpiZ21hYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jLTE0NDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jOjE0NDk6XHRwaHlfZGV2ID0gZml4ZWRfcGh5X3JlZ2lzdGVyKFx1MDAyNmZwaHlfc3RhdHVzLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmMtMTQ1MC1cdGlmIChJU19FUlIocGh5X2RldikpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jPTE4NDg9c3RhdGljIGludCBmdGdtYWMxMDBfcHJvYmVfbmNzaShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTg2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM6MTg2NzpcdHBoeWRldiA9IGZpeGVkX3BoeV9yZWdpc3RlcihcdTAwMjZuY3NpX3BoeV9zdGF0dXMsIG5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTg2OC1cdGlmIChJU19FUlIocGh5ZGV2KSkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jPTI5ODE9c3RhdGljIGludCBmZWNfZW5ldF9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzAwMi1cdFx0XHRuZXRkZXZfaW5mbyhuZGV2LCBcJiMzNDtubyBQSFksIGFzc3VtaW5nIGRpcmVjdCBjb25uZWN0aW9uIHRvIHN3aXRjaFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzozMDAzOlx0XHRcdHBoeV9kZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXJfMTAwZmQoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTMwMDQtXHRcdFx0aWYgKElTX0VSUihwaHlfZGV2KSkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmM9MjM4PXN0YXRpYyBpbnQgaGJnX2ZpeGVkX3BoeV9pbml0KHN0cnVjdCBoYmdfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfbWRpby5jLTI1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmM6MjUxOlx0cGh5ZGV2ID0gZml4ZWRfcGh5X3JlZ2lzdGVyKFx1MDAyNmhiZ19maXhlZF9waHlfc3RhdHVzLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmMtMjUyLVx0aWYgKElTX0VSUihwaHlkZXYpKSB7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM9NDEyPWludCBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTQ1OS1yZWdpc3Rlcl9waHk6XG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzo0NjA6XHRyZXR1cm4gUFRSX0VSUl9PUl9aRVJPKGZpeGVkX3BoeV9yZWdpc3RlcihcdTAwMjZzdGF0dXMsIG5wKSk7XG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy00NjEtfVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYz0xMTg9c3RhdGljIGludCBmaXhlZF9waHlfZ2V0X2ZyZWVfYWRkcih2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xMzAtXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM6MTMxOnN0cnVjdCBwaHlfZGV2aWNlICpmaXhlZF9waHlfcmVnaXN0ZXIoY29uc3Qgc3RydWN0IGZpeGVkX3BoeV9zdGF0dXMgKnN0YXR1cyxcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xMzItXHRcdFx0XHQgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xNzItfVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jOjE3MzpFWFBPUlRfU1lNQk9MX0dQTChmaXhlZF9waHlfcmVnaXN0ZXIpO1xuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE3NC1cbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYzoxNzU6c3RydWN0IHBoeV9kZXZpY2UgKmZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCh2b2lkKVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE3Ni17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE4MS1cbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYzoxODI6XHRyZXR1cm4gZml4ZWRfcGh5X3JlZ2lzdGVyKFx1MDAyNnN0YXR1cywgTlVMTCk7XG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTgzLX1cbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYzoxODQ6RVhQT1JUX1NZTUJPTF9HUEwoZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKTtcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xODUtXG4tLVxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaD0xOT1leHRlcm4gaW50IGZpeGVkX3BoeV9jaGFuZ2VfY2FycmllcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBib29sIG5ld19jYXJyaWVyKTtcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmg6MjA6c3RydWN0IHBoeV9kZXZpY2UgKmZpeGVkX3BoeV9yZWdpc3Rlcihjb25zdCBzdHJ1Y3QgZml4ZWRfcGh5X3N0YXR1cyAqc3RhdHVzLFxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaC0yMS1cdFx0XHRcdCAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApO1xuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaDoyMjpzdHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKHZvaWQpO1xuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaC0yMy1cbi0tXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oPTI5PXN0YXRpYyBpbmxpbmUgc3RydWN0IHBoeV9kZXZpY2UgKlxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaDozMDpmaXhlZF9waHlfcmVnaXN0ZXIoY29uc3Qgc3RydWN0IGZpeGVkX3BoeV9zdGF0dXMgKnN0YXR1cyxcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmgtMzEtXHRcdCAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXG4tLVxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaC0zNS1cbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmg6MzY6c3RhdGljIGlubGluZSBzdHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKHZvaWQpXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oLTM3LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTY6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTUyMgoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDY0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBEUDgzNjQwIFBIWSBEcml2ZXIgd2l0aCBTeXprYWxsZXI6IEEgUGxhbiBvZiBBdHRhY2sqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyB0byB0YXJnZXQgdGhpcyBEUDgzNjQwIFBIWSBkcml2ZXIgd2l0aCBmdXp6aW5nLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgYGZpeGVkLXBoeWAgbWlnaHQgYmUgdGhlIHdheSwgYnV0IGl0IHNlZW1zIHRoYXQmIzM5O3Mgbm90IHNwZWNpZmljIGVub3VnaC4gQ2FuIFN5emthbGxlciBjcmVhdGUgYSAmIzM0O2Zha2UmIzM0OyBNRElPIGRldmljZSB3aXRoIGEgcGFydGljdWxhciBQSFkgSUQ/IFRoZSBgbWFjYmAgZHJpdmVyIGlzIGZ1enplZCwgYnV0IEkgZG9uJiMzOTt0IHRoaW5rIGl0IGxldHMgeW91IHNwZWNpZnkgdGhlIElELgoKVGhlbiBpdCBoaXRzIG1lOiBgc3l6X3VzYl9jb25uZWN0YCEgVGhhdCBsZXRzIHlvdSBjb25uZWN0IFVTQiBkZXZpY2VzLiBJcyB0aGVyZSBhIFVTQi10by1NRElPIGJyaWRnZT8gTm8sIGJ1dCB3YWl0Li4uIFVTQiBuZXR3b3JrIGRyaXZlcnMhIFNvbWUgb2YgdGhlbSAqaGF2ZSogTURJTyBidXNlcy4gYGxhbjc4eHhgLCBgc21zYzk1eHhgLCBhbmQgYGF4ODgxNzlfMTc4YWAgYWxsIGNvbWUgdG8gbWluZC4gVGhlIGtleSBpcyB0aGF0IHRoZSBQSFkgSUQgaXMgdXN1YWxseSAqcmVhZCogZnJvbSBoYXJkd2FyZSwgYnV0IHdpdGggU3l6a2FsbGVyIGVtdWxhdGluZyB0aGUgVVNCIGRldmljZSwgSSBjYW4gcHJvdmlkZSAqYW55KiBQSFkgSUQuCgpTbywgdGhlIHBsYW4gaXMgdG8gdXNlIGBzeXpfdXNiX2Nvbm5lY3RgIHRvIGVtdWxhdGUgYSBVU0IgbmV0d29yayBhZGFwdGVyLiBXaGVuIHRoZSBkcml2ZXIgcmVhZHMgdGhlIFBIWSBJRCBmcm9tIHRoZSBlbXVsYXRlZCBNRElPIGJ1cyAodmlhIFVTQiBjb250cm9sIG1lc3NhZ2VzKSwgSSYjMzk7bGwgbWFrZSBTeXprYWxsZXIgcmV0dXJuIGAweDIwMDA1Y2UxYCDigJMgdGhlIERQODM2NDAgUEhZIElEISBUaGVuLCB0aGUga2VybmVsICpzaG91bGQqIG1hdGNoIHRoZSBgZHA4MzY0MGAgUEhZIGRyaXZlciBhbmQgY2FsbCBgZHA4MzY0MF9wcm9iZWAuCgpJIG5lZWQgdG8gY29uZmlybSB0aGlzLiBJJiMzOTtsbCBjaGVjayB0aGF0IGEgVVNCIG5ldHdvcmsgZHJpdmVyIHJlZ2lzdGVycyBhbiBNRElPIGJ1cyB3aXRoIGByZWFkYCBhbmQgYHdyaXRlYCBmdW5jdGlvbnMsIGxpa2UgYHNtc2M5NXh4X21kaW9fcmVhZGAuIFdoZW4gdGhlIGJ1cyBpcyBzY2FubmVkLCBpdCByZWFkcyByZWdpc3RlcnMgMiBhbmQgMyAodGhlIFBIWSBJRCkuIElmIG15IGVtdWxhdGVkIGRldmljZSByZXR1cm5zIHRoZSByaWdodCB2YWx1ZSwgYGRwODM2NDBgIGlzIHByb2JlZC4gQnV0IGlzIHRoaXMgZXZlbiBwb3NzaWJsZT8gV2VsbCwgaXQgaXMhIFN5emthbGxlciBkb2VzIHRoaXMgZm9yIFBIWSBkcml2ZXJzIGFscmVhZHkhIExldCYjMzk7cyBjaGVjayB0aGF0IGBkcDgzNjQwX3Byb2JlYCBpcyByZWFjaGFibGUgdGhyb3VnaCBVU0IgZW11bGF0aW9uLiBZZXMsIEkgY2FuIHJlYWNoIGl0IHRoaXMgd2F5IQoKT2theSwgbGV0JiMzOTtzIGdvIGJhY2sgdG8gdGhlIHBhdGNoLiBJdCYjMzk7cyBtb2RpZnlpbmcgYGRwODM2NDBfcHJvYmVgLCBgZHA4MzY0MF9yZW1vdmVgLCBhbmQgYGRwODM2NDBfY2xvY2tfaW5pdGAuIEl0IGFsc28gYWRkcyB0aG9zZSBgcGh5X3BhY2thZ2VfbG9ja2AgYW5kIGBwaHlfcGFja2FnZV91bmxvY2tgIGNhbGxzIGluIGBwaHlfcGFja2FnZS5jYC4gVGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuIEkmIzM5O2xsIG5lZWQgdG8gZm9jdXMgb24gdGhlc2UgZnVuY3Rpb25zOgoKKiAgIGBkcDgzNjQwX3Byb2JlYAoqICAgYGRwODM2NDBfcmVtb3ZlYAoqICAgYHBoeV9wYWNrYWdlX2xvY2tgCiogICBgcGh5X3BhY2thZ2VfdW5sb2NrYAoKV2FpdCBhIG1pbnV0ZSwgYGRwODM2NDBfY2xvY2tfaW5pdGAgaXMgc3RhdGljLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBgZHA4MzY0MC5jYCBmaWxlIGZvciB0aGUgZGVmaW5pdGlvbi4gVGhpcyBhcHByb2FjaCwgdGhvdWdoLCBsb29rcyBzb3VuZC4gSSBhbSBjb25maWRlbnQgdGhhdCBpdCYjMzk7cyBwb3NzaWJsZSB0byBmdXp6IHRoZXNlIGZ1bmN0aW9ucyB1c2luZyBTeXprYWxsZXImIzM5O3MgVVNCIGVtdWxhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTY6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHA4MzY0MF9jbG9ja19pbml0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM9OTA4PXN0YXRpYyB2b2lkIGRlY29kZV9zdGF0dXNfZnJhbWUoc3RydWN0IGRwODM2NDBfcHJpdmF0ZSAqZHA4MzY0MCxcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTk1MC1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM6OTUxOnN0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfaW5pdChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2spXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTk1Mi17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYz0xMzM3PXN0YXRpYyBpbnQgZHA4MzY0MF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTM1My1cdGlmIChwaHlfcGFja2FnZV9wcm9iZV9vbmNlKHBoeWRldikpXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jOjEzNTQ6XHRcdGRwODM2NDBfY2xvY2tfaW5pdChjbG9jayk7XG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTEzNTUtXHRwaHlfcGFja2FnZV91bmxvY2socGh5ZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTY6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTExNjkKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERQODM2NDAgRHJpdmVyIFN0cnVjdHVyZSoqCgpPa2F5LCBzbyBJJiMzOTttIHRha2luZyBhIGxvb2sgYXQgdGhpcyBgZHA4MzY0MGAgZHJpdmVyLCBhbmQgaW1tZWRpYXRlbHkgYSBmZXcgdGhpbmdzIGp1bXAgb3V0LiBUaGUgYGRwODM2NDBfY2xvY2tfaW5pdGAgZnVuY3Rpb24gaXMgZGVjbGFyZWQgYXMgc3RhdGljLiBJbnRlcmVzdGluZywgdGhhdCBzdWdnZXN0cyBpdCYjMzk7cyBvbmx5IGludGVuZGVkIGZvciB1c2Ugd2l0aGluIHRoaXMgc3BlY2lmaWMgZmlsZSBvciBjb21waWxhdGlvbiB1bml0OyBJJiMzOTtsbCBrZWVwIHRoYXQgaW4gbWluZC4gTW9yZSBpbnRlcmVzdGluZ2x5LCBgZHA4MzY0MF9wcm9iZWAgYW5kIGBkcDgzNjQwX3JlbW92ZWAgYXJlIGFsc28gc3RhdGljLCBidXQgdGhleSYjMzk7cmUgKmFsc28qIGZ1bmN0aW9uIHBvaW50ZXJzLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgZHA4MzY0MF9kcml2ZXJgIHN0cnVjdHVyZS4gVGhhdCB0ZWxscyBtZSB0aGVzZSBhcmUgbGlrZWx5IHRoZSBlbnRyeSBhbmQgZXhpdCBwb2ludHMgZm9yIHRoZSBkcml2ZXImIzM5O3MgaW50ZXJhY3Rpb24gd2l0aCB0aGUga2VybmVsLCB0aGUgcHJvYmUgYmVpbmcgdHJpZ2dlcmVkIHdoZW4gdGhlIGRldmljZSBpcyBkZXRlY3RlZCBhbmQgcmVtb3ZlIGJlaW5nIHRyaWdnZXJlZCB3aGVuIHRoZSBkZXZpY2UgaXMgdW5ib3VuZC4gSSBzaG91bGQgcHJvYmFibHkgZ28gYW5kIGluc3BlY3QgdGhlIGBkcDgzNjQwX2RyaXZlcmAgc3RydWN0dXJlIGRpcmVjdGx5IHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhpcyBhbGwgZml0cyB0b2dldGhlciBhbmQgdG8gYmUgc3VyZSBvZiB0aGUgZHJpdmVyJiMzOTtzIHJvbGUgYW5kIHB1cnBvc2UuIExldCYjMzk7cyBzZWUgd2hhdCB0aGF0IHN0cnVjdHVyZSBoYXMgdG8gc2F5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNjo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkcDgzNjQwX2RyaXZlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jPTE0MTc9c3RhdGljIHZvaWQgZHA4MzY0MF9yZW1vdmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTE0NTUtXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jOjE0NTY6c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGRwODM2NDBfZHJpdmVyW10gPSB7XG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTE0NTcte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTQ3MC1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM6MTQ3MTptb2R1bGVfcGh5X2RyaXZlcihkcDgzNjQwX2RyaXZlcik7XG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTE0NzItXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE2OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNzA3CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDoKCioqTmF2aWdhdGluZyB0aGUgUEhZIERyaXZlciBMYW5kc2NhcGUqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIFBIWSBkcml2ZXIgY29kZSwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIHRoZSBEUDgzNjQwLiBSaWdodCBvZmYgdGhlIGJhdCwgSSBzZWUgdGhhdCBgZHA4MzY0MF9wcm9iZWAgYW5kIGBkcDgzNjQwX3JlbW92ZWAgYXJlIG15IHByaW1hcnkgZW50cnkgcG9pbnRzLiBUaGF0JiMzOTtzIHN0YW5kYXJkIHByYWN0aWNlLCB0aGUgcHJvYmUgZm9yIGluaXRpYWxpemF0aW9uIGFuZCB0aGUgcmVtb3ZlIGZvciBjbGVhbnVwLiBOb3csIEkgbm90aWNlIHRoZXNlIGZ1bmN0aW9uIGNhbGxzIGZvciBgcGh5X3BhY2thZ2VfbG9ja2AgYW5kIGBwaHlfcGFja2FnZV91bmxvY2tgIGFuZCwgZnJvbSB0aGUgbG9va3Mgb2YgaXQsIHRoZXNlIGFyZSBleHBvcnRlZCBmdW5jdGlvbnMsIGxpa2VseSBtYW5hZ2luZyBzb21lIHNvcnQgb2YgY29uY3VycmVuY3kgb3IgcmVzb3VyY2UgYWNjZXNzLiBHaXZlbiB0aGUgJiMzNDtwYWNrYWdlJiMzNDsgdGVybWlub2xvZ3ksIGl0IHN1Z2dlc3RzIHNvbWUgc2hhcmVkIGRhdGEgc3RydWN0dXJlcywgc28gdGhvc2UgZnVuY3Rpb25zIGNvdWxkIGJlIGltcG9ydGFudC4gTXkgaW5zdGluY3QgdGVsbHMgbWUgdG8gY2hlY2sgd2hlcmUgdGhvc2UgbG9jay91bmxvY2sgZnVuY3Rpb25zIGFyZSBkZWZpbmVkIGFuZCB1c2VkLCBzbyBJJiMzOTttIGdvaW5nIHRvIGp1bXAgaW50byBgcGh5X3BhY2thZ2UuY2AgdG8gdW5kZXJzdGFuZCB0aGF0IGxvY2tpbmcgbWVjaGFuaXNtIGJldHRlci4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgY29udGV4dCBJIG5lZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE2OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeV9wYWNrYWdlX2xvY2smIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYz0xMzM3PXN0YXRpYyBpbnQgZHA4MzY0MF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTM1MS1cdC8qIEVuc3VyZSBvdGhlciBQSFkgcHJvYmVzIHdhaXQgZm9yIHNoYXJlZCBjbG9jayBpbml0aWFsaXphdGlvbi4gKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM6MTM1MjpcdHBoeV9wYWNrYWdlX2xvY2socGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTM1My1cdGlmIChwaHlfcGFja2FnZV9wcm9iZV9vbmNlKHBoeWRldikpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmM9NTM9RVhQT1JUX1NZTUJPTF9HUEwocGh5X3BhY2thZ2VfZ2V0X3ByaXYpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTU1LS8qKlxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmM6NTY6ICogcGh5X3BhY2thZ2VfbG9jayAtIGFjcXVpcmUgdGhlIFBIWSBwYWNrYWdlIGxvY2tcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTU3LSAqIEBwaHlkZXY6IFBIWSBkZXZpY2UgdGhhdCBoYXMgam9pbmVkIHRoZSBwYWNrYWdlXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtNjEtICovXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzo2Mjp2b2lkIHBoeV9wYWNrYWdlX2xvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTYzLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy02NS19XG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzo2NjpFWFBPUlRfU1lNQk9MX0dQTChwaHlfcGFja2FnZV9sb2NrKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTY3LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaWIuaD0xND12b2lkICpwaHlfcGFja2FnZV9nZXRfcHJpdihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWIuaDoxNTp2b2lkIHBoeV9wYWNrYWdlX2xvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvcGh5bGliLmgtMTYtdm9pZCBwaHlfcGFja2FnZV91bmxvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE2OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNDkxCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMzEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEZ1enppbmcgU3RyYXRlZ3k6IERQODM2NDAgUEhZIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IGJlc3QgdG8gZnV6eiB0aGlzIGBkcDgzNjQwYCBQSFkgZHJpdmVyLiBJIHNlZSB0aGF0IGBwaHlfcGFja2FnZV9sb2NrYCBhbmQgYHBoeV9wYWNrYWdlX3VubG9ja2AgYXJlIGFscmVhZHkgZXhwb3J0ZWQsIHdoaWNoIGlzIGdvb2Q7IHRoZXkmIzM5O3JlIHJlYWRpbHkgYWNjZXNzaWJsZSBmb3IgZnV6emluZy4gTm93LCB3aGF0IGFib3V0IHRoZSBtYWluIGRyaXZlciBlbnRyeSBwb2ludHMsIGBkcDgzNjQwX3Byb2JlYCBhbmQgYGRwODM2NDBfcmVtb3ZlYD8gVGhleSYjMzk7cmUgZGVmaW5lZCBhcyBgc3RhdGljYCwgd2hpY2ggaW5pdGlhbGx5IGxvb2tzIGxpa2UgYSBwcm9ibGVtLiBCdXQgd2FpdCwgYHN5emthbGxlcmAgY2FuJiMzOTt0IGRpcmVjdGx5IGFkZHJlc3MgaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zLCBzbyBhbiBpbmxpbmVkIGZ1bmN0aW9uIHdvbiYjMzk7dCBoYXZlIGEgc3BlY2lmaWMgc3ltYm9sIGZvciBzeXprYWxsZXIgdG8gY2FsbC4gSSYjMzk7bSBub3RpbmcgYGRwODM2NDBfcHJvYmVgIGlzIGFjdHVhbGx5IGEgZnVuY3Rpb24gcG9pbnRlciAqd2l0aGluKiBhIHN0cnVjdCwgdGhlcmVmb3JlIG5vdCBpbmxpbmVkLgoKVGhlIGRvY3VtZW50YXRpb24gc2VlbXMgdG8gZW1waGFzaXplIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5IHBvaW50cy4gU28sIHdoaWxlIGBkcDgzNjQwX3Byb2JlYCBoYXMgYSBkaXN0aW5jdCBhZGRyZXNzIGFuZCB3b24mIzM5O3QgYmUgaW5saW5lZCwgaXMgdGhhdCB0aGUgKmJlc3QqIG9wdGlvbj8gU2hvdWxkIEkganVzdCBzdGljayB3aXRoIGBwaHlfcGFja2FnZV9sb2NrYCwgYHBoeV9wYWNrYWdlX3VubG9ja2AgZm9yIG5vdz8KCldhaXQgYSBtaW51dGUsIGBkcDgzNjQwX3Byb2JlYCAqaXMqIHRoZSBtYWluIGZ1bmN0aW9uIEkmIzM5O20gbW9kaWZ5aW5nIGhlcmUuIFJpZ2h0LCBJIHNob3VsZCBkZWZpbml0ZWx5IGluY2x1ZGUgdGhhdCBhcyBhIHRhcmdldCEKCk5vdywgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIGBLY29uZmlnYCBjaGFuZ2VzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBidWlsZCBvcHRpb25zLiBgRFA4MzY0MF9QSFlgIGRlcGVuZHMgb24gYFBIWUxJQmAgYW5kIGBQVFBfMTU4OF9DTE9DS2AgYW5kIGFsc28gc2VsZWN0cyBgUEhZX1BBQ0tBR0VgLiBUaW1lIHRvIGNoZWNrIGBkcml2ZXJzL3B0cC9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IHJlbGV2YW50IGNvbnRleHQgYXJvdW5kIGBEUDgzNjQwX1BIWWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE2OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEUDgzNjQwX1BIWSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3B0cC9LY29uZmlnPTcyPWNvbW1lbnQgXCYjMzQ7RW5hYmxlIFBIWUxJQiBhbmQgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HIHRvIHNlZSB0aGUgYWRkaXRpb25hbCBjbG9ja3MuXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy03NC1cbmRyaXZlcnMvcHRwL0tjb25maWc6NzU6Y29uZmlnIERQODM2NDBfUEhZXG5kcml2ZXJzL3B0cC9LY29uZmlnLTc2LVx0dHJpc3RhdGUgXCYjMzQ7RHJpdmVyIGZvciB0aGUgTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciBEUDgzNjQwIFBIWVRFUlwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNjo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzMyNgoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3M6CgoqKkluaXRpYWwgQ29uZmlndXJhdGlvbiBhbmQgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUsIGl0IGxvb2tzIGxpa2UgYERQODM2NDBfUEhZYCBpcyB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIGZpbGUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBoZXJlLiBCdXQgaGFuZyBvbiwgYSBiZWxsIHdlbnQgb2ZmIGluIG15IGhlYWQuIEkga25vdyB0aGF0IGBQVFBfMTU4OF9DTE9DS2AgaXMgYWxtb3N0IGFsd2F5cyBpbnRlcnR3aW5lZCB3aXRoIHRoaXMuIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSB0aW1lIHN5bmNocm9uaXphdGlvbiBpcyBjb25maWd1cmVkIHByb3Blcmx5LiBCZWZvcmUgSSBnbyBhbnkgZnVydGhlciwgSSBzaG91bGQgdmVyaWZ5IHRoZSBgUFRQXzE1ODhfQ0xPQ0tgIHNldHRpbmdzLiBJdCYjMzk7cyB0b28gZWFzeSB0byBvdmVybG9vayB0aGF0IHBpZWNlIGFuZCBoYXZlIGV2ZXJ5dGhpbmcgZ3JpbmQgdG8gYSBoYWx0LiBBbHdheXMgYmVzdCB0byBkb3VibGUtY2hlY2sgdGhvc2UgY3JpdGljYWwgZGVwZW5kZW5jaWVzLiBMZXQmIzM5O3MgZGlnIGludG8gYFBUUF8xNTg4X0NMT0NLYCBmaXJzdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTY6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFBUUF8xNTg4X0NMT0NLJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9LY29uZmlnPTIxPWNvbmZpZyBJWFA0WFhfRVRIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL0tjb25maWctMzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvS2NvbmZpZzozMTpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfSVhQNDZYXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvS2NvbmZpZy0zMi1cdGJvb2wgXCYjMzQ7SW50ZWwgSVhQNDZ4IGFzIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWc9Nj1tZW51IFwmIzM0O1BUUCBjbG9jayBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL3B0cC9LY29uZmlnLTctXG5kcml2ZXJzL3B0cC9LY29uZmlnOjg6Y29uZmlnIFBUUF8xNTg4X0NMT0NLXG5kcml2ZXJzL3B0cC9LY29uZmlnLTktXHR0cmlzdGF0ZSBcJiMzNDtQVFAgY2xvY2sgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMjktXG5kcml2ZXJzL3B0cC9LY29uZmlnOjMwOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuZHJpdmVycy9wdHAvS2NvbmZpZy0zMS1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy00MS1cbmRyaXZlcnMvcHRwL0tjb25maWc6NDI6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0RURVxuZHJpdmVycy9wdHAvS2NvbmZpZy00My1cdHRyaXN0YXRlIFwmIzM0O0Jyb2FkY29tIERURSBhcyBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTU3LVxuZHJpdmVycy9wdHAvS2NvbmZpZzo1ODpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfUU9SSVFcbmRyaXZlcnMvcHRwL0tjb25maWctNTktXHR0cmlzdGF0ZSBcJiMzNDtGcmVlc2NhbGUgUW9ySVEgMTU4OCB0aW1lciBhcyBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnPTc1PWNvbmZpZyBEUDgzNjQwX1BIWVxuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctOTItXG5kcml2ZXJzL3B0cC9LY29uZmlnOjkzOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JTkVTXG5kcml2ZXJzL3B0cC9LY29uZmlnLTk0LVx0dHJpc3RhdGUgXCYjMzQ7WkhBVyBJbkVTIFBUUCB0aW1lIHN0YW1waW5nIElQIGNvcmVcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEwMy1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTA0OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19QQ0hcbmRyaXZlcnMvcHRwL0tjb25maWctMTA1LVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgUENIIEVHMjBUIGFzIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTIyLVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxMjM6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0tWTVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMjQtXHR0cmlzdGF0ZSBcJiMzNDtLVk0gdmlydHVhbCBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEzNC1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTM1OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19WTUNMT0NLXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEzNi1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgbWFjaGluZSBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE1MS1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTUyOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JRFQ4MlAzM1xuZHJpdmVycy9wdHAvS2NvbmZpZy0xNTMtXHR0cmlzdGF0ZSBcJiMzNDtJRFQgODJQMzN4eHggUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNjMtXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE2NDpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfSURUQ01cbmRyaXZlcnMvcHRwL0tjb25maWctMTY1LVx0dHJpc3RhdGUgXCYjMzQ7SURUIENMT0NLTUFUUklYIGFzIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTc1LVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxNzY6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0ZDM1dcbmRyaXZlcnMvcHRwL0tjb25maWctMTc3LVx0dHJpc3RhdGUgXCYjMzQ7UkVORVNBUyBGZW10b0Nsb2NrMyBXaXJlbGVzcyBhcyBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE4Ny1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTg4OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19NT0NLXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE4OS1cdHRyaXN0YXRlIFwmIzM0O01vY2stdXAgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xOTgtXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE5OTpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfVk1XXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIwMC1cdHRyaXN0YXRlIFwmIzM0O1ZNd2FyZSB2aXJ0dWFsIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMjEwLVxuZHJpdmVycy9wdHAvS2NvbmZpZzoyMTE6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX09DUFxuZHJpdmVycy9wdHAvS2NvbmZpZy0yMTItXHR0cmlzdGF0ZSBcJiMzNDtPcGVuQ29tcHV0ZSBUaW1lQ2FyZCBhcyBQVFAgY2xvY2tcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTY6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ2NjkKCQkJCQkJCW91dHB1dDogMTcKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqQ2xvY2sgU3luY2hyb25pemF0aW9uICZhbXA7IFBoeXNpY2FsIExheWVyIENvbnNpZGVyYXRpb25zKioKCkFscmlnaHQsIHNvIHRoZSBwcm9qZWN0JiMzOTtzIG1hcmNoaW5nIGZvcndhcmQsIGFuZCBpdCYjMzk7cyBiZWNvbWUgY2xlYXIgdGhhdCB3ZSYjMzk7cmUgZ29pbmcgdG8gbmVlZCB0byBpbXBsZW1lbnQgYFBUUF8xNTg4X0NMT0NLYC4gTm8gc3VycHJpc2VzIHRoZXJlLiBUaGF0JiMzOTtzIHRoZSBiYXNlbGluZSBmb3IgcHJlY2lzZSB0aW1lIHN5bmNocm9uaXphdGlvbiwgZXNwZWNpYWxseSBmb3IgdGhpcyBraW5kIG9mIGFwcGxpY2F0aW9uLiBCdXQgYXMgSSB0aGluayBhYm91dCBpdCwgdGhlIHF1ZXN0aW9uIG9mIHRoZSBwaHlzaWNhbCBsYXllciBpbXBsZW1lbnRhdGlvbiBuYXR1cmFsbHkgcG9wcyB1cC4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgY29uc2lkZXIgdGhlIHJvbGUsIG9yIGxhY2sgdGhlcmVvZiwgb2YgYFBIWUxJQmAuIEl0JiMzOTtzIGNydWNpYWwgSSBkb24mIzM5O3Qgb3Zlcmxvb2sgYW55IGRldGFpbHMuIFdoYXQgZXhhY3RseSBkbyB3ZSBuZWVkIGZyb20gdGhlIHBoeXNpY2FsIGxheWVyIGludGVyZmFjZT8gSXMgYFBIWUxJQmAgZ29pbmcgdG8gYmUgb3VyIGJlc3Qgcm91dGUsIG9yIGFyZSB0aGVyZSBhbHRlcm5hdGUsIG1vcmUgc3VpdGFibGUgYXBwcm9hY2hlcywgdGhhdCB3aWxsIGJldHRlciBzdWl0IHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZT8gVGhpcyByZXF1aXJlcyBkZWVwZXIgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTY6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFBIWUxJQiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZz02PWNvbmZpZyBQSFlMSU5LXG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTQtXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzoxNTptZW51Y29uZmlnIFBIWUxJQlxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTYtXHR0cmlzdGF0ZSBcJiMzNDtQSFkgRGV2aWNlIHN1cHBvcnQgYW5kIGluZnJhc3RydWN0dXJlXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc9NDY9Y29uZmlnIE9QRU5fQUxMSUFOQ0VfSEVMUEVSU1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTQ4LVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6NDk6Y29uZmlnIFBIWUxJQl9MRURTXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy01MC1cdGRlZl9ib29sIE9GXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE2OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1MDUzCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBQSFlMSUIgYW5kIGl0cyBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSBzZWUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBgUEhZTElCYC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB3ZSYjMzk7cmUgd29ya2luZyB3aXRoIGEgUGh5c2ljYWwgTGF5ZXIgaW50ZXJmYWNlIGxpYnJhcnksIHdoaWNoIGlzIGEgY29tbW9uIGFic3RyYWN0aW9uIGluIG5ldHdvcmtpbmcgZHJpdmVycy4gQnV0LCBob2xkIG9uIGEgc2Vjb25kLi4uIGlzIGBEUDgzNjQwX1BIWWAgZGVmaW5lZCBpbiB0aGUgYGRyaXZlcnMvcHRwL0tjb25maWdgIGZpbGU/IFRoYXQmIzM5O3MgdW5leHBlY3RlZC4gUFRQIChQcmVjaXNpb24gVGltZSBQcm90b2NvbCkgaXMgb2Z0ZW4gcmVsYXRlZCB0byB0aW1pbmcgc3luY2hyb25pemF0aW9uLCB3aGljaCAqY291bGQqIGludm9sdmUgUEhZcywgYnV0IHRoZSBkaXJlY3QgbGlua2luZyBzZWVtcyBhIGxpdHRsZSBvZGQuIFRvIGJlIHN1cmUsIEkgbmVlZCB0byBvcGVuIHVwIGBkcml2ZXJzL3B0cC9LY29uZmlnYCBhbmQgdmVyaWZ5IHRoYXQgYERQODM2NDBfUEhZYCBpcywgaW4gZmFjdCwgZGVjbGFyZWQgdGhlcmUuIFRoaXMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBEUDgzNjQwIFBIWSBhbmQgdGhlIFBUUCBzdWJzeXN0ZW0sIGFuZCBjb25maXJtIG15IGluaXRpYWwgdGhvdWdodCBvbiBgUEhZTElCYC4gSSB3YW50IHRvIHNlZSBob3cgdGhhdCBkcml2ZXIgaXMgY29uZmlndXJlZCBpbiBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNjo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRFA4MzY0MF9QSFkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9wdHAvS2NvbmZpZz03Mj1jb21tZW50IFwmIzM0O0VuYWJsZSBQSFlMSUIgYW5kIE5FVFdPUktfUEhZX1RJTUVTVEFNUElORyB0byBzZWUgdGhlIGFkZGl0aW9uYWwgY2xvY2tzLlwmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctNzQtXG5kcml2ZXJzL3B0cC9LY29uZmlnOjc1OmNvbmZpZyBEUDgzNjQwX1BIWVxuZHJpdmVycy9wdHAvS2NvbmZpZy03Ni1cdHRyaXN0YXRlIFwmIzM0O0RyaXZlciBmb3IgdGhlIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgRFA4MzY0MCBQSFlURVJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTY6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU0NDUKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWwgRGVwZW5kZW5jeSoqCgpBbHJpZ2h0LCBob2xkIG9uIGEgc2Vjb25kLiBJIHNlZSB0aGlzIGNvbW1lbnQgcmVmZXJlbmNpbmcgYE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR2AuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIGJlY2F1c2UgaW1tZWRpYXRlbHkgbXkgYnJhaW4ganVtcHMgdG8gYERQODM2NDBfUEhZYC4gTm93LCBJIG5lZWQgdG8gZmlndXJlIG91dDogRG9lcyB0aGUgY29ycmVjdCBvcGVyYXRpb24gb2YgdGhlIGBEUDgzNjQwX1BIWWAgbW9kdWxlIGFjdHVhbGx5ICpyZWx5KiBvbiB0aGlzIHRpbWVzdGFtcGluZyBmdW5jdGlvbmFsaXR5PyBJcyB0aGlzIGEgaGFyZCByZXF1aXJlbWVudCwgb3IganVzdCBhbiBvcHRpbWl6YXRpb24/IEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiB0aGVzZSBhcmUgaW50ZXJjb25uZWN0ZWQgYW5kIGhvdyBiZWZvcmUgSSBtYWtlIGEgbmV4dCBtb3ZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNjo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3RpbWVzdGFtcGluZy5yc3Q9NzY5PXRvIGVhY2ggaW5kaXZpZHVhbCBNQUMgZHJpdmVyIGZvciBQSFkgdGltZXN0YW1waW5nIHN1cHBvcnQuIFRoaXMgZW50YWlsczpcbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvdGltZXN0YW1waW5nLnJzdC03NzgtICBgYHNrYl9kZWZlcl9yeF90aW1lc3RhbXAoc2tiKWBgIGlzIG5lY2Vzc2FyeSBvciBub3QgLSBhbmQgaWYgaXQgaXMsIGRvbiYjMzk7dFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3RpbWVzdGFtcGluZy5yc3Q6Nzc5OiAgY2FsbCBgYG5ldGlmX3J4KClgYCBhdCBhbGwuICBJZiBgYENPTkZJR19ORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdgYCBpc1xuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3RpbWVzdGFtcGluZy5yc3QtNzgwLSAgZW5hYmxlZCwgYW5kIGBgc2tiLVx1MDAzZWRldi1cdTAwM2VwaHlkZXYtXHUwMDNlbWlpX3RzYGAgZXhpc3RzLCBpdHMgYGAucnh0c3RhbXAoKWBgIGhvb2tcbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9uZXR3b3JraW5nL3RpbWVzdGFtcGluZy5yc3Q9NTcyPVNPX1RJTUVTVEFNUElORyBBUEkg5LiN5YWB6K645Li65ZCM5LiA5pWw5o2u5YyF5Lyg6YCS5aSa5Liq56Gs5Lu25pe26Ze05oiz77yM5Zug5q2k6Zmk5LqGIERTQVxuLS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL25ldHdvcmtpbmcvdGltZXN0YW1waW5nLnJzdC02MjEtICBgYHNrYl9kZWZlcl9yeF90aW1lc3RhbXAoc2tiKWBgIOaYr+W/heimgeeahO+8jOWmguaenOaYr++8jOWImeS4jeiwg+eUqCBgYG5ldGlmX3J4KClgYOOAglxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbmV0d29ya2luZy90aW1lc3RhbXBpbmcucnN0OjYyMjogIOWmguaenCBgYENPTkZJR19ORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdgYCDlkK/nlKjvvIzlubbkuJRcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL25ldHdvcmtpbmcvdGltZXN0YW1waW5nLnJzdC02MjMtICBgYHNrYi1cdTAwM2VkZXYtXHUwMDNlcGh5ZGV2LVx1MDAzZW1paV90c2BgIOWtmOWcqO+8jOWug+eahCBgYC5yeHRzdGFtcCgpYGAg6ZKp5a2Q546w5Zyo5bCG6KKr6LCDXG4tLVxuYXJjaC9hcm0vY29uZmlncy9heG01NXh4X2RlZmNvbmZpZz02OT1DT05GSUdfSU5FVF9JUENPTVA9eVxuYXJjaC9hcm0vY29uZmlncy9heG01NXh4X2RlZmNvbmZpZy03MC0jIENPTkZJR19JUFY2IGlzIG5vdCBzZXRcbmFyY2gvYXJtL2NvbmZpZ3MvYXhtNTV4eF9kZWZjb25maWc6NzE6Q09ORklHX05FVFdPUktfUEhZX1RJTUVTVEFNUElORz15XG5hcmNoL2FybS9jb25maWdzL2F4bTU1eHhfZGVmY29uZmlnLTcyLUNPTkZJR19CUklER0U9eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3Mvc29jZnBnYV9kZWZjb25maWc9MzE9Q09ORklHX0lQX1BOUF9SQVJQPXlcbmFyY2gvYXJtL2NvbmZpZ3Mvc29jZnBnYV9kZWZjb25maWc6MzI6Q09ORklHX05FVFdPUktfUEhZX1RJTUVTVEFNUElORz15XG5hcmNoL2FybS9jb25maWdzL3NvY2ZwZ2FfZGVmY29uZmlnLTMzLUNPTkZJR19WTEFOXzgwMjFRPXlcbi0tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnPTE2MT1DT05GSUdfTVBUQ1A9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZzoxNjI6Q09ORklHX05FVFdPUktfUEhZX1RJTUVTVEFNUElORz15XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnLTE2My1DT05GSUdfTkVURklMVEVSPXlcbi0tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnPTE3Nz1DT05GSUdfTVBUQ1A9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZzoxNzg6Q09ORklHX05FVFdPUktfUEhZX1RJTUVTVEFNUElORz15XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnLTE3OS1DT05GSUdfTkVURklMVEVSPXlcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz0xNjI9Y29uZmlnIEJST0FEQ09NX1BIWVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE2NC1cdHNlbGVjdCBCQ01fTkVUX1BIWUxJQlxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6MTY1Olx0c2VsZWN0IEJDTV9ORVRfUEhZUFRQIGlmIE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR1xuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTY2LVx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTMyNj1jb25maWcgTUlDUk9DSElQX1QxX1BIWVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMzI3LVx0dHJpc3RhdGUgXCYjMzQ7TWljcm9jaGlwIFQxIFBIWXNcJiMzNDtcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjMyODpcdHNlbGVjdCBNSUNST0NISVBfUEhZX1JEU19QVFAgaWYgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0zMjktXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc9MzM4PWNvbmZpZyBNSUNST1NFTUlfUEhZXG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMzQwLVx0ZGVwZW5kcyBvbiBNQUNTRUMgfHwgTUFDU0VDPW5cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjM0MTpcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUwgfHwgIU5FVFdPUktfUEhZX1RJTUVTVEFNUElOR1xuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMzQyLVx0c2VsZWN0IENSWVBUT19MSUJfQUVTIGlmIE1BQ1NFQ1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT0yMj1vYmotJChDT05GSUdfUEhZX1BBQ0tBR0UpXHQmIzQzOz0gcGh5X3BhY2thZ2Uub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTIzLVxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjI0Om9iai0kKENPTkZJR19ORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcpICYjNDM7PSBtaWlfdGltZXN0YW1wZXIub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTI1LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYz00NDQwPXN0YXRpYyB2b2lkIGxhbjg4MTRfcHRwX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmMtNDQ0NS1cdGlmICghSVNfRU5BQkxFRChDT05GSUdfUFRQXzE1ODhfQ0xPQ0spIHx8XG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmM6NDQ0NjpcdCAgICAhSVNfRU5BQkxFRChDT05GSUdfTkVUV09SS19QSFlfVElNRVNUQU1QSU5HKSlcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYy00NDQ3LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JlbC5jPTU5ODE9c3RhdGljIGludCBsYW44ODQxX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JlbC5jLTU5OTYtXHQvKiBSZWdpc3RlciB0aGUgY2xvY2sgKi9cbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYzo1OTk3Olx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19ORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcpKVxuZHJpdmVycy9uZXQvcGh5L21pY3JlbC5jLTU5OTgtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL01ha2VmaWxlPTExPWVuZGlmXG5kcml2ZXJzL25ldC9waHkvbXNjYy9NYWtlZmlsZS0xMi1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL01ha2VmaWxlOjEzOmlmZGVmIENPTkZJR19ORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL01ha2VmaWxlLTE0LW1zY2Mtb2JqcyAmIzQzOz0gbXNjY19wdHAub1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2MuaD00ODI9c3RhdGljIGlubGluZSB2b2lkIHZzYzg1ODRfY29uZmlnX21hY3NlY19pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjYy5oLTQ4Ni1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2MuaDo0ODc6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVFdPUktfUEhZX1RJTUVTVEFNUElORylcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2MuaC00ODgtdm9pZCB2c2M4NXh4X2xpbmtfY2hhbmdlX25vdGlmeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21hY3NlYy5jPTI0ND1zdGF0aWMgdm9pZCB2c2M4NTg0X21hY3NlY19tYWNfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFjc2VjLmMtMjg4LVx0XHRcdFx0ICBNU0NDX01BQ19DRkdfUEtUSU5GX0NGR19FTkFCTEVfVFhfUEFERElORyA6IDApIHxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFjc2VjLmM6Mjg5Olx0XHRcdFx0IChJU19FTkFCTEVEKENPTkZJR19ORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcpID9cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFjc2VjLmMtMjkwLVx0XHRcdFx0ICBNU0NDX01BQ19DRkdfUEtUSU5GX0NGR19NQUNTRUNfQllQQVNTX05VTV9QVFBfU1RBTExfQ0xLUygweDgpIDogMCkpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9ueHAtYzQ1LXRqYTExeHguYz0xNzMwPXN0YXRpYyBpbnQgbnhwX2M0NV9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9ueHAtYzQ1LXRqYTExeHguYy0xNzYxLVx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1BUUF8xNTg4X0NMT0NLKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3BoeS9ueHAtYzQ1LXRqYTExeHguYzoxNzYyOlx0ICAgIElTX0VOQUJMRUQoQ09ORklHX05FVFdPUktfUEhZX1RJTUVTVEFNUElORykpIHtcbmRyaXZlcnMvbmV0L3BoeS9ueHAtYzQ1LXRqYTExeHguYy0xNzYzLVx0XHRwcml2LVx1MDAzZW1paV90cy5yeHRzdGFtcCA9IG54cF9jNDVfcnh0c3RhbXA7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZz01OD1jb25maWcgUFRQXzE1ODhfQ0xPQ0tfUU9SSVFcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTcxLVxuZHJpdmVycy9wdHAvS2NvbmZpZzo3Mjpjb21tZW50IFwmIzM0O0VuYWJsZSBQSFlMSUIgYW5kIE5FVFdPUktfUEhZX1RJTUVTVEFNUElORyB0byBzZWUgdGhlIGFkZGl0aW9uYWwgY2xvY2tzLlwmIzM0O1xuZHJpdmVycy9wdHAvS2NvbmZpZzo3MzpcdGRlcGVuZHMgb24gUEhZTElCPW4gfHwgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HPW5cbmRyaXZlcnMvcHRwL0tjb25maWctNzQtXG5kcml2ZXJzL3B0cC9LY29uZmlnPTc1PWNvbmZpZyBEUDgzNjQwX1BIWVxuZHJpdmVycy9wdHAvS2NvbmZpZy03Ni1cdHRyaXN0YXRlIFwmIzM0O0RyaXZlciBmb3IgdGhlIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgRFA4MzY0MCBQSFlURVJcJiMzNDtcbmRyaXZlcnMvcHRwL0tjb25maWc6Nzc6XHRkZXBlbmRzIG9uIE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR1xuZHJpdmVycy9wdHAvS2NvbmZpZy03OC1cdGRlcGVuZHMgb24gUEhZTElCXG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZz05Mz1jb25maWcgUFRQXzE1ODhfQ0xPQ0tfSU5FU1xuZHJpdmVycy9wdHAvS2NvbmZpZy05NC1cdHRyaXN0YXRlIFwmIzM0O1pIQVcgSW5FUyBQVFAgdGltZSBzdGFtcGluZyBJUCBjb3JlXCYjMzQ7XG5kcml2ZXJzL3B0cC9LY29uZmlnOjk1Olx0ZGVwZW5kcyBvbiBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcbmRyaXZlcnMvcHRwL0tjb25maWctOTYtXHRkZXBlbmRzIG9uIEhBU19JT01FTVxuLS1cbmluY2x1ZGUvbGludXgvbWlpX3RpbWVzdGFtcGVyLmg9ODM9c3RydWN0IG1paV90aW1lc3RhbXBpbmdfY3RybCB7XG4tLVxuaW5jbHVkZS9saW51eC9taWlfdGltZXN0YW1wZXIuaC04OS1cbmluY2x1ZGUvbGludXgvbWlpX3RpbWVzdGFtcGVyLmg6OTA6I2lmZGVmIENPTkZJR19ORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcbmluY2x1ZGUvbGludXgvbWlpX3RpbWVzdGFtcGVyLmgtOTEtXG4tLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD00NjgyPXN0cnVjdCBza19idWZmICpza2JfY2xvbmVfc2soc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTQ2ODMtXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjQ2ODQ6I2lmZGVmIENPTkZJR19ORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtNDY4NS1cbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTQ2ODc9Ym9vbCBza2JfZGVmZXJfcnhfdGltZXN0YW1wKHN0cnVjdCBza19idWZmICpza2IpO1xuaW5jbHVkZS9saW51eC9za2J1ZmYuaC00Njg4LVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaDo0Njg5OiNlbHNlIC8qIENPTkZJR19ORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcgKi9cbmluY2x1ZGUvbGludXgvc2tidWZmLmgtNDY5MC1cbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTQ2OTU9c3RhdGljIGlubGluZSBib29sIHNrYl9kZWZlcl9yeF90aW1lc3RhbXAoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTQ2OTktXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjQ3MDA6I2VuZGlmIC8qICFDT05GSUdfTkVUV09SS19QSFlfVElNRVNUQU1QSU5HICovXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTQ3MDEtXG4tLVxubmV0L0tjb25maWc9MTUxPWNvbmZpZyBORVRfUFRQX0NMQVNTSUZZXG4tLVxubmV0L0tjb25maWctMTUzLVxubmV0L0tjb25maWc6MTU0OmNvbmZpZyBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcbm5ldC9LY29uZmlnLTE1NS1cdGJvb2wgXCYjMzQ7VGltZXN0YW1waW5nIGluIFBIWSBkZXZpY2VzXCYjMzQ7XG4tLVxubmV0L2NvcmUvTWFrZWZpbGU9MzM9b2JqLSQoQ09ORklHX05FVF9TRUxGVEVTVFMpICYjNDM7PSBzZWxmdGVzdHMub1xubmV0L2NvcmUvTWFrZWZpbGU6MzQ6b2JqLSQoQ09ORklHX05FVFdPUktfUEhZX1RJTUVTVEFNUElORykgJiM0Mzs9IHRpbWVzdGFtcGluZy5vXG5uZXQvY29yZS9NYWtlZmlsZS0zNS1vYmotJChDT05GSUdfTkVUX1BUUF9DTEFTU0lGWSkgJiM0Mzs9IHB0cF9jbGFzc2lmaWVyLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTY6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg0NTIKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAzNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQ29uZmlndXJpbmcgdGhlIERQODM2NDAgUEhZIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRvIHByb3Blcmx5IGNvbmZpZ3VyZSB0aGUgYERQODM2NDBfUEhZYCBkcml2ZXIuIEl0JiMzOTtzIGNsZWFyIHRoYXQgaXQgaGFzIHNldmVyYWwgZGVwZW5kZW5jaWVzLCBuYW1lbHkgYE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR2AsIGBQSFlMSUJgLCBhbmQgYFBUUF8xNTg4X0NMT0NLYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGVzZSBhcmUgZW5hYmxlZCBjb3JyZWN0bHkuIExldCYjMzk7cyBzZWUuLi4gYFBIWUxJQmAgaXMgYSBtZW51Y29uZmlnLCBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HYCBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCBib29sZWFuIG9wdGlvbiwgYW5kIGBQVFBfMTU4OF9DTE9DS2AgYW5kIGBEUDgzNjQwX1BIWWAgYXJlIGJvdGggdHJpc3RhdGVzLCBzbyBJJiMzOTtsbCBuZWVkIHRvIHNldCB0aGVtIGFwcHJvcHJpYXRlbHksIHdoaWNoIG1lYW5zIEkgc2hvdWxkIGxpc3QgdGhlbSBpbiBFbmFibGVDb25maWdzOiBgRFA4MzY0MF9QSFlgLCBgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HYCwgYFBIWUxJQmAsIGBQVFBfMTU4OF9DTE9DS2AuCgpJJiMzOTttIGJlaW5nIHRob3JvdWdoLCBzbyBJIHdhbnQgdG8gZG91YmxlLWNoZWNrIHRob3NlIGRlcGVuZGVuY2llcywganVzdCB0byBiZSBzdXJlLiBMZXQmIzM5O3Mgc2VlIHRoZSBLY29uZmlnIGVudHJ5IGZvciB0aGUgYERQODM2NDBfUEhZYC4gQWxyaWdodCwgaXQgY2xlYXJseSBzdGF0ZXMgdGhhdCB0aGUgZGVwZW5kZW5jaWVzIGFyZSBpbmRlZWQgYE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR2AsIGBQSFlMSUJgLCBhbmQgYFBUUF8xNTg4X0NMT0NLYCwgYXMgSSB0aG91Z2h0LiBMb29rcyBsaWtlIGl0IGFsc28gc2VsZWN0cyBgQ1JDMzJgIGFuZCBgUEhZX1BBQ0tBR0VgLCBidXQgdGhvc2UgYXJlIGhhbmRsZWQgYXV0b21hdGljYWxseS4KCk9rYXksIG5vdywgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgKmhpZGRlbiogZGVwZW5kZW5jaWVzIGZvciB0aGUgZGVwZW5kZW50IG9wdGlvbnMsIGxpa2UgYFBUUF8xNTg4X0NMT0NLYC4gTm9wZSwgdGhhdCBjb25maWcgaXMgdGhlIG1haW4gb25lLCBub3Qgc29tZSBvcHRpb25hbCBoZWxwZXIuIEkgc2hvdWxkIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgb2YgYFBUUF8xNTg4X0NMT0NLYCBsYXRlciBpZiBuZWVkZWQuIEJ1dCBmb3Igbm93LCBJJiMzOTttIGNvbmZpZGVudCBpbiB0aGVzZSBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE2OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBQVFBfMTU4OF9DTE9DSyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvS2NvbmZpZz0yMT1jb25maWcgSVhQNFhYX0VUSFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9LY29uZmlnLTMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL0tjb25maWc6MzE6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0lYUDQ2WFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL0tjb25maWctMzItXHRib29sIFwmIzM0O0ludGVsIElYUDQ2eCBhcyBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnPTY9bWVudSBcJiMzNDtQVFAgY2xvY2sgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9wdHAvS2NvbmZpZy03LVxuZHJpdmVycy9wdHAvS2NvbmZpZzo4OmNvbmZpZyBQVFBfMTU4OF9DTE9DS1xuZHJpdmVycy9wdHAvS2NvbmZpZy05LVx0dHJpc3RhdGUgXCYjMzQ7UFRQIGNsb2NrIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTI5LVxuZHJpdmVycy9wdHAvS2NvbmZpZzozMDpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbmRyaXZlcnMvcHRwL0tjb25maWctMzEtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctNDEtXG5kcml2ZXJzL3B0cC9LY29uZmlnOjQyOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19EVEVcbmRyaXZlcnMvcHRwL0tjb25maWctNDMtXHR0cmlzdGF0ZSBcJiMzNDtCcm9hZGNvbSBEVEUgYXMgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy01Ny1cbmRyaXZlcnMvcHRwL0tjb25maWc6NTg6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1FPUklRXG5kcml2ZXJzL3B0cC9LY29uZmlnLTU5LVx0dHJpc3RhdGUgXCYjMzQ7RnJlZXNjYWxlIFFvcklRIDE1ODggdGltZXIgYXMgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZz03NT1jb25maWcgRFA4MzY0MF9QSFlcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTkyLVxuZHJpdmVycy9wdHAvS2NvbmZpZzo5Mzpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfSU5FU1xuZHJpdmVycy9wdHAvS2NvbmZpZy05NC1cdHRyaXN0YXRlIFwmIzM0O1pIQVcgSW5FUyBQVFAgdGltZSBzdGFtcGluZyBJUCBjb3JlXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMDMtXG5kcml2ZXJzL3B0cC9LY29uZmlnOjEwNDpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfUENIXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEwNS1cdHRyaXN0YXRlIFwmIzM0O0ludGVsIFBDSCBFRzIwVCBhcyBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEyMi1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTIzOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19LVk1cbmRyaXZlcnMvcHRwL0tjb25maWctMTI0LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIHZpcnR1YWwgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMzQtXG5kcml2ZXJzL3B0cC9LY29uZmlnOjEzNTpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfVk1DTE9DS1xuZHJpdmVycy9wdHAvS2NvbmZpZy0xMzYtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0dWFsIG1hY2hpbmUgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNTEtXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE1Mjpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfSURUODJQMzNcbmRyaXZlcnMvcHRwL0tjb25maWctMTUzLVx0dHJpc3RhdGUgXCYjMzQ7SURUIDgyUDMzeHh4IFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTYzLVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxNjQ6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0lEVENNXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE2NS1cdHRyaXN0YXRlIFwmIzM0O0lEVCBDTE9DS01BVFJJWCBhcyBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE3NS1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTc2OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19GQzNXXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE3Ny1cdHRyaXN0YXRlIFwmIzM0O1JFTkVTQVMgRmVtdG9DbG9jazMgV2lyZWxlc3MgYXMgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xODctXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE4ODpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfTU9DS1xuZHJpdmVycy9wdHAvS2NvbmZpZy0xODktXHR0cmlzdGF0ZSBcJiMzNDtNb2NrLXVwIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTk4LVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxOTk6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1ZNV1xuZHJpdmVycy9wdHAvS2NvbmZpZy0yMDAtXHR0cmlzdGF0ZSBcJiMzNDtWTXdhcmUgdmlydHVhbCBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIxMC1cbmRyaXZlcnMvcHRwL0tjb25maWc6MjExOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19PQ1BcbmRyaXZlcnMvcHRwL0tjb25maWctMjEyLVx0dHJpc3RhdGUgXCYjMzQ7T3BlbkNvbXB1dGUgVGltZUNhcmQgYXMgUFRQIGNsb2NrXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE2OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMzE0CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyBQVFAgQ2xvY2sgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIGBQVFBfMTU4OF9DTE9DS2AuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpdmUgZGlyZWN0bHkgaW50byBgZHJpdmVycy9wdHAvS2NvbmZpZ2AuIFRoYXQmIzM5O3Mgd2hlcmUgSSBleHBlY3QgdG8gZmluZCB0aGUgY29uZGl0aW9uYWwgbG9naWMgdGhhdCBnb3Zlcm5zIHdoZXRoZXIgb3Igbm90IHRoaXMgZmVhdHVyZSBpcyBleHBvc2VkLiBJJiMzOTttIGxvb2tpbmcgZm9yIGFueSBgZGVwZW5kcyBvbmAgc3RhdGVtZW50cywgYHNlbGVjdGAgc3RhdGVtZW50cywgb3IgcG90ZW50aWFsbHkgZXZlbiBgaWZgIGNvbmRpdGlvbnMgdGhhdCBpbmZsdWVuY2UgdGhlIGF2YWlsYWJpbGl0eSBvZiBgUFRQXzE1ODhfQ0xPQ0tgIGF0IGJ1aWxkIHRpbWUuIEkmIzM5O2xsIGJlIG1ldGljdWxvdXNseSBjaGVja2luZyBmb3IgcmVsYXRpb25zaGlwcyB3aXRoIG90aGVyIGNvbmZpZ3VyYXRpb25zLCBwb3RlbnRpYWxseSBoYXJkd2FyZS1zcGVjaWZpYyBvcHRpb25zLCBvciBldmVuIG90aGVyIGtlcm5lbCBzdWJzeXN0ZW1zIHRoYXQgbWlnaHQgYmUgcHJlcmVxdWlzaXRlcy4gSXQmIzM5O3MgYWxsIGFib3V0IHRyYWNpbmcgdGhlIGNvbmZpZ3VyYXRpb24gcGF0aCB0byB1bmRlcnN0YW5kIHRoZSB1bmRlcmx5aW5nIHJlcXVpcmVtZW50cyBhbmQgYW55IHBvdGVudGlhbCBjb25mbGljdHMgdGhhdCBtaWdodCBhcmlzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTY6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFBUUF8xNTg4X0NMT0NLJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9LY29uZmlnPTIxPWNvbmZpZyBJWFA0WFhfRVRIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL0tjb25maWctMzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvS2NvbmZpZzozMTpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfSVhQNDZYXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvS2NvbmZpZy0zMi1cdGJvb2wgXCYjMzQ7SW50ZWwgSVhQNDZ4IGFzIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWc9Nj1tZW51IFwmIzM0O1BUUCBjbG9jayBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL3B0cC9LY29uZmlnLTctXG5kcml2ZXJzL3B0cC9LY29uZmlnOjg6Y29uZmlnIFBUUF8xNTg4X0NMT0NLXG5kcml2ZXJzL3B0cC9LY29uZmlnLTktXHR0cmlzdGF0ZSBcJiMzNDtQVFAgY2xvY2sgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMjktXG5kcml2ZXJzL3B0cC9LY29uZmlnOjMwOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuZHJpdmVycy9wdHAvS2NvbmZpZy0zMS1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy00MS1cbmRyaXZlcnMvcHRwL0tjb25maWc6NDI6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0RURVxuZHJpdmVycy9wdHAvS2NvbmZpZy00My1cdHRyaXN0YXRlIFwmIzM0O0Jyb2FkY29tIERURSBhcyBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTU3LVxuZHJpdmVycy9wdHAvS2NvbmZpZzo1ODpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfUU9SSVFcbmRyaXZlcnMvcHRwL0tjb25maWctNTktXHR0cmlzdGF0ZSBcJiMzNDtGcmVlc2NhbGUgUW9ySVEgMTU4OCB0aW1lciBhcyBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnPTc1PWNvbmZpZyBEUDgzNjQwX1BIWVxuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctOTItXG5kcml2ZXJzL3B0cC9LY29uZmlnOjkzOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JTkVTXG5kcml2ZXJzL3B0cC9LY29uZmlnLTk0LVx0dHJpc3RhdGUgXCYjMzQ7WkhBVyBJbkVTIFBUUCB0aW1lIHN0YW1waW5nIElQIGNvcmVcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEwMy1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTA0OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19QQ0hcbmRyaXZlcnMvcHRwL0tjb25maWctMTA1LVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgUENIIEVHMjBUIGFzIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTIyLVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxMjM6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0tWTVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMjQtXHR0cmlzdGF0ZSBcJiMzNDtLVk0gdmlydHVhbCBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEzNC1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTM1OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19WTUNMT0NLXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEzNi1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgbWFjaGluZSBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE1MS1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTUyOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JRFQ4MlAzM1xuZHJpdmVycy9wdHAvS2NvbmZpZy0xNTMtXHR0cmlzdGF0ZSBcJiMzNDtJRFQgODJQMzN4eHggUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNjMtXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE2NDpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfSURUQ01cbmRyaXZlcnMvcHRwL0tjb25maWctMTY1LVx0dHJpc3RhdGUgXCYjMzQ7SURUIENMT0NLTUFUUklYIGFzIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTc1LVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxNzY6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0ZDM1dcbmRyaXZlcnMvcHRwL0tjb25maWctMTc3LVx0dHJpc3RhdGUgXCYjMzQ7UkVORVNBUyBGZW10b0Nsb2NrMyBXaXJlbGVzcyBhcyBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE4Ny1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTg4OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19NT0NLXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE4OS1cdHRyaXN0YXRlIFwmIzM0O01vY2stdXAgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xOTgtXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE5OTpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfVk1XXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIwMC1cdHRyaXN0YXRlIFwmIzM0O1ZNd2FyZSB2aXJ0dWFsIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMjEwLVxuZHJpdmVycy9wdHAvS2NvbmZpZzoyMTE6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX09DUFxuZHJpdmVycy9wdHAvS2NvbmZpZy0yMTItXHR0cmlzdGF0ZSBcJiMzNDtPcGVuQ29tcHV0ZSBUaW1lQ2FyZCBhcyBQVFAgY2xvY2tcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTY6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE2NDUKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBgZHJpdmVycy9wdHAvS2NvbmZpZ2AgZmlsZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDguCgoqKkV4YW1pbmluZyB0aGUgUFRQIERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGBkcml2ZXJzL3B0cC9LY29uZmlnYCBmaWxlLiBJJiMzOTttIGZvY3VzaW5nIG9uIGxpbmUgOCwgaG9waW5nIHRvIGdldCBhIHF1aWNrIGdyYXNwIG9mIHRoZSBnZW5lcmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhdmFpbGFibGUgZm9yIFByZWNpc2lvbiBUaW1lIFByb3RvY29sIChQVFApIGRyaXZlcnMgaW4gdGhlIGtlcm5lbC4gS25vd2luZyB0aGUgZmlsZSBzdHJ1Y3R1cmUgZnJvbSBwYXN0IGV4cGVyaWVuY2VzLCBJIGV4cGVjdCB0aGlzIHRvIGJlIHRoZSBwb2ludCB3aGVyZSB0aGUgYnJvYWQgZmVhdHVyZSBzZXQgaXMgZGVmaW5lZC4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgZm91bmRhdGlvbmFsIGNob2ljZXM6IGFyZSB3ZSBkZWFsaW5nIHdpdGggaGFyZHdhcmUtYXNzaXN0ZWQgUFRQLCBzb2Z0d2FyZSBpbXBsZW1lbnRhdGlvbnMsIG9yIG1heWJlIG9wdGlvbnMgZm9yIHNwZWNpZmljIG5ldHdvcmsgaW50ZXJmYWNlIGNvbnRyb2xsZXJzPyBJJiMzOTttIGFudGljaXBhdGluZyBmaW5kaW5nIHRoZSBtYWluIEtjb25maWcgc3ltYm9sIGFuZCBpdHMgZGVwZW5kZW5jaWVzIG9yIHBvc3NpYmxlIGRlZmF1bHRzIGhlcmUuIFRoaXMgc2hvdWxkIGdpdmUgbWUgdGhlIGJyb2FkIHN0cm9rZXMgb2YgaG93IHRoZSBQVFAgc3Vic3lzdGVtIGlzIHN0cnVjdHVyZWQgZnJvbSBhIGNvbmZpZ3VyYXRpb24gc3RhbmRwb2ludCwgc28gSSBjYW4gYmV0dGVyIGdyYXNwIGhvdyB0byB0YWlsb3IgbXkgc3lzdGVtcy4gSG9wZWZ1bGx5LCB0aGlzIHNlY3Rpb24gd2lsbCBwb2ludCBtZSBpbiB0aGUgcmlnaHQgZGlyZWN0aW9uIHRvIHVuZGVyc3RhbmQgdGhlIGZpbmVyIGRldGFpbHMgbGF0ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE2OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9wdHAvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIFBUUCBjbG9jayBzdXBwb3J0IGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0bWVudSBcJiMzNDtQVFAgY2xvY2sgc3VwcG9ydFwmIzM0O1xuICAgNzpcdFxuICAgODpcdGNvbmZpZyBQVFBfMTU4OF9DTE9DS1xuICAgOTpcdFx0dHJpc3RhdGUgXCYjMzQ7UFRQIGNsb2NrIHN1cHBvcnRcJiMzNDtcbiAgMTA6XHRcdGRlcGVuZHMgb24gTkVUIFx1MDAyNlx1MDAyNiBQT1NJWF9USU1FUlNcbiAgMTE6XHRcdGRlZmF1bHQgRVRIRVJORVRcbiAgMTI6XHRcdHNlbGVjdCBQUFNcbiAgMTM6XHRcdHNlbGVjdCBORVRfUFRQX0NMQVNTSUZZXG4gIDE0Olx0XHRoZWxwXG4gIDE1Olx0XHQgIFRoZSBJRUVFIDE1ODggc3RhbmRhcmQgZGVmaW5lcyBhIG1ldGhvZCB0byBwcmVjaXNlbHlcbiAgMTY6XHRcdCAgc3luY2hyb25pemUgZGlzdHJpYnV0ZWQgY2xvY2tzIG92ZXIgRXRoZXJuZXQgbmV0d29ya3MuIFRoZVxuICAxNzpcdFx0ICBzdGFuZGFyZCBkZWZpbmVzIGEgUHJlY2lzaW9uIFRpbWUgUHJvdG9jb2wgKFBUUCksIHdoaWNoIGNhblxuICAxODpcdFx0ICBiZSB1c2VkIHRvIGFjaGlldmUgc3luY2hyb25pemF0aW9uIHdpdGhpbiBhIGZldyBkb3plblxuICAxOTpcdFx0ICBtaWNyb3NlY29uZHMuIEluIGFkZGl0aW9uLCB3aXRoIHRoZSBoZWxwIG9mIHNwZWNpYWwgaGFyZHdhcmVcbiAgMjA6XHRcdCAgdGltZSBzdGFtcGluZyB1bml0cywgaXQgY2FuIGJlIHBvc3NpYmxlIHRvIGFjaGlldmVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTY6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIxNzIKCQkJCQkJCW91dHB1dDogMTk5CgkJCQkJCQl0aG91Z2h0czogNTYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBEUDgzNjQwIFBIWSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGhlcmUmIzM5O3MgbXkgYnJlYWtkb3duLiBGaXJzdCwgSSBub3RpY2VkIHRoZSBkZXBlbmRlbmNpZXMuIGBQVFBfMTU4OF9DTE9DS2AgaXMgcmVsaWFudCBvbiBgTkVUYCBhbmQgYFBPU0lYX1RJTUVSU2AsIGJvdGggb2Ygd2hpY2ggYXJlIHN0YW5kYXJkIGNvbXBvbmVudHMuIGBEUDgzNjQwX1BIWWAgZGVwZW5kcyBvbiBgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HYCwgYFBIWUxJQmAsIGFuZCwgY3J1Y2lhbGx5LCBgUFRQXzE1ODhfQ0xPQ0tgLiBUaGVyZWZvcmUsIGEgc2Vuc2libGUgYEVuYWJsZUNvbmZpZ3NgIGxpc3Qgc2hvdWxkIGluY2x1ZGUgYERQODM2NDBfUEhZYCwgYE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR2AsIGBQSFlMSUJgLCBhbmQgYFBUUF8xNTg4X0NMT0NLYC4KCk5leHQsIEkgZXhhbWluZWQgdGhlIGBGb2N1c1N5bWJvbHNgLiBUaGUgcGF0Y2ggaXMgbW9kaWZ5aW5nIHNldmVyYWwgZnVuY3Rpb25zOiBgZHA4MzY0MF9wcm9iZWAsIGBkcDgzNjQwX3JlbW92ZWAsIGBkcDgzNjQwX2Nsb2NrX2luaXRgLCBgcGh5X3BhY2thZ2VfbG9ja2AsIGFuZCBgcGh5X3BhY2thZ2VfdW5sb2NrYC4gQWx0aG91Z2ggYGRwODM2NDBfY2xvY2tfaW5pdGAgaXMgc3RhdGljIGFuZCBjYWxsZWQgaW50ZXJuYWxseSwgSSB3aWxsIGluY2x1ZGUgaXQuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gbGlzdCBgZHA4MzY0MF9wcm9iZWAsIGBkcDgzNjQwX3JlbW92ZWAsIGBwaHlfcGFja2FnZV9sb2NrYCwgYW5kIGBwaHlfcGFja2FnZV91bmxvY2tgLiBCdXQgd2FpdCwgYGRwODM2NDBfcHJvYmVgIGFuZCBgZHA4MzY0MF9yZW1vdmVgIGFyZSBzdGF0aWMgZnVuY3Rpb25zLCBob3dldmVyIHRoZXkgKmFyZSogYXNzaWduZWQgdG8gZnVuY3Rpb24gcG9pbnRlcnMgd2l0aGluIGBkcDgzNjQwX2RyaXZlcmAuIFRoYXQmIzM5O3MgaW1wb3J0YW50OyB0aGV5IGFyZSB0aGUgZHJpdmVyJiMzOTtzIGVudHJ5IHBvaW50cy4gU28sIEkgd2lsbCBpbmNsdWRlIHRoZW0gaW4gbXkgbGlzdC4gYHBoeV9wYWNrYWdlX2xvY2tgIGFuZCBgcGh5X3BhY2thZ2VfdW5sb2NrYCBhcmUgZXhwb3J0ZWQgZnVuY3Rpb25zLCBzbyB0aGV5IGFyZSBkZWZpbml0ZWx5IHJlbGV2YW50LgoKTm93LCBsZXQmIzM5O3MgcmV2aWV3IHRoZSByYXRpb25hbGUuIFRoZSBwYXRjaCByZWZhY3RvcnMgdGhlIGRyaXZlciB0byB1c2UgdGhlIHN0YW5kYXJkIGBwaHlfcGFja2FnZWAgQVBJIHJhdGhlciB0aGFuIGEgY3VzdG9tIGdsb2JhbCBsaXN0IGZvciBzaGFyZWQgY2xvY2sgaW5pdGlhbGl6YXRpb24uIFRoZXkmIzM5O3JlIGFsc28gYWRkaW5nIGBwaHlfcGFja2FnZV9sb2NrYCBhbmQgYHBoeV9wYWNrYWdlX3VubG9ja2AgdG8gc2VyaWFsaXplIGFjY2VzcyB0byBwYWNrYWdlLXByaXZhdGUgZGF0YS4gVGhlc2UgY2hhbmdlcyB0b3VjaCB0aGUgcHJvYmUgYW5kIHJlbW92ZSBwYXRocyBvZiB0aGUgUEhZIGRyaXZlci4gVGhlc2UgcGF0aHMgY2FuIGJlIHJlYWNoZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB0aHJvdWdoIGVtdWxhdGluZyBhbiBNRElPIGJ1cywgb3IgZXZlbiB3aXRoIGEgVVNCIG5ldHdvcmsgZGV2aWNlIHRoYXQgaGFzIHRoZSBzcGVjaWZpYyBQSFkgSUQuIEdpdmVuIHRoaXMsIGZ1enppbmcgbWFrZXMgcGVyZmVjdCBzZW5zZSBoZXJlLiBUaGUgcG90ZW50aWFsIGZvciB1bmV4cGVjdGVkIHN0YXRlcywgcGFydGljdWxhcmx5IGFyb3VuZCB0aGUgbG9ja2luZyBtZWNoYW5pc21zLCBpcyBoaWdoIGVub3VnaCB0byB3YXJyYW50IGNsb3NlIHNjcnV0aW55LgoKRmluYWxseSwgSSYjMzk7bGwgZG8gYSBxdWljayBzd2VlcCB0byBlbnN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcuIEkmIzM5O3ZlIG5vdGVkIHRoZSByZW1vdmFsIG9mIGBkcDgzNjQwX2Nsb2NrX2dldF9idXNgLCBgZHA4MzY0MF9jbG9ja19nZXRgLCBhbmQgYGRwODM2NDBfY2xvY2tfcHV0YCwgYW5kIEkmIzM5O3ZlIGFsc28gbm90ZWQgdGhhdCBgZHA4MzY0MF9jbG9ja19pbml0YCBoYXMgYmVlbiBtb2RpZmllZCwgYWxvbmcgd2l0aCB0aGUgb3RoZXIgc3ltYm9scy4gSSB0aGluayB0aGF0IGNvdmVycyBpdC4gT2theSwgSSYjMzk7bSByZWFkeSB0byBzZXQgdGhlIHJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE2OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEUDgzNjQwX1BIWSYjMzQ7LAogICAgJiMzNDtORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcmIzM0OywKICAgICYjMzQ7UEhZTElCJiMzNDssCiAgICAmIzM0O1BUUF8xNTg4X0NMT0NLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZHA4MzY0MF9wcm9iZSYjMzQ7LAogICAgJiMzNDtkcDgzNjQwX3JlbW92ZSYjMzQ7LAogICAgJiMzNDtwaHlfcGFja2FnZV9sb2NrJiMzNDssCiAgICAmIzM0O3BoeV9wYWNrYWdlX3VubG9jayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgdGhlIERQODM2NDAgUEhZIGRyaXZlciB0byB1c2UgdGhlIHN0YW5kYXJkIHBoeV9wYWNrYWdlIEFQSSBmb3Igc2hhcmVkIGNsb2NrIGluaXRpYWxpemF0aW9uLCByZXBsYWNpbmcgYSBjdXN0b20gZ2xvYmFsIGxpc3QuIEl0IGFsc28gaW50cm9kdWNlcyBwaHlfcGFja2FnZV9sb2NrIGFuZCBwaHlfcGFja2FnZV91bmxvY2sgdG8gc2VyaWFsaXplIGFjY2VzcyB0byBwYWNrYWdlLXByaXZhdGUgZGF0YS4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIHByb2JlIGFuZCByZW1vdmUgcGF0aHMgb2YgdGhlIFBIWSBkcml2ZXIsIHdoaWNoIGNhbiBiZSByZWFjaGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgYnkgZW11bGF0aW5nIGFuIE1ESU8gYnVzIG9yIGEgVVNCIG5ldHdvcmsgZGV2aWNlIHdpdGggdGhlIHNwZWNpZmljIFBIWSBJRC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RFA4MzY0MF9QSFkmIzM0OywKICAgICYjMzQ7TkVUV09SS19QSFlfVElNRVNUQU1QSU5HJiMzNDssCiAgICAmIzM0O1BIWUxJQiYjMzQ7LAogICAgJiMzNDtQVFBfMTU4OF9DTE9DSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RwODM2NDBfcHJvYmUmIzM0OywKICAgICYjMzQ7ZHA4MzY0MF9yZW1vdmUmIzM0OywKICAgICYjMzQ7cGh5X3BhY2thZ2VfbG9jayYjMzQ7LAogICAgJiMzNDtwaHlfcGFja2FnZV91bmxvY2smIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSBEUDgzNjQwIFBIWSBkcml2ZXIgdG8gdXNlIHRoZSBzdGFuZGFyZCBwaHlfcGFja2FnZSBBUEkgZm9yIHNoYXJlZCBjbG9jayBpbml0aWFsaXphdGlvbiwgcmVwbGFjaW5nIGEgY3VzdG9tIGdsb2JhbCBsaXN0LiBJdCBhbHNvIGludHJvZHVjZXMgcGh5X3BhY2thZ2VfbG9jayBhbmQgcGh5X3BhY2thZ2VfdW5sb2NrIHRvIHNlcmlhbGl6ZSBhY2Nlc3MgdG8gcGFja2FnZS1wcml2YXRlIGRhdGEuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IHRoZSBwcm9iZSBhbmQgcmVtb3ZlIHBhdGhzIG9mIHRoZSBQSFkgZHJpdmVyLCB3aGljaCBjYW4gYmUgcmVhY2hlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGJ5IGVtdWxhdGluZyBhbiBNRElPIGJ1cyBvciBhIFVTQiBuZXR3b3JrIGRldmljZSB3aXRoIHRoZSBzcGVjaWZpYyBQSFkgSUQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE2OjU1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTY6NTU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSBkcDgzNjQwIFBIWSBkcml2ZXIgdG8gdXNlIHRoZSBzdGFuZGFyZCBgcGh5X3BhY2thZ2Vfam9pbmAgQVBJIGZvciBtYW5hZ2luZyBzaGFyZWQgY2xvY2sgc3RydWN0dXJlcywgcmVwbGFjaW5nIGEgY3VzdG9tIGdsb2JhbCBsaXN0IGFuZCBtYW51YWwgYWxsb2NhdGlvbnMuIFRoZSBzaGFyZWQgc3RydWN0dXJlIGBkcDgzNjQwX2Nsb2NrYCAoYW5kIGl0cyBlbWJlZGRlZCBgcGluX2NvbmZpZ2AgYXJyYXkpIGlzIGFsbG9jYXRlZCB2aWEgYGt6YWxsb2NgIGluc2lkZSBgcGh5X3BhY2thZ2Vfam9pbmAsIGVuc3VyaW5nIGFsbCBmaWVsZHMgYW5kIHBhZGRpbmcgYXJlIGZ1bGx5IHplcm8taW5pdGlhbGl6ZWQuIFRoZXJlIGFyZSBubyBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2guIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGludm9sdmUgb2JqZWN0IGxpZmVjeWNsZSBpc3N1ZXMgKGxpa2UgdXNlLWFmdGVyLWZyZWUgb3IgbWVtb3J5IGxlYWtzKSBvciBsb2NraW5nIGlzc3Vlcywgd2hpY2ggYXJlIGFscmVhZHkgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIExPQ0tERVAuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDE1YjcwZGRhYTdmM2RmZjM2YmQ1MWU3ZTJjNjhlZWMwODUxOWEyM2YKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAxMCAxNjo1Mzo1OSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMgYi9kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jCmluZGV4IDk4NDcyYWJkZDM5MjAuLjY4NjdlN2M2ZjNiN2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYwpAQCAtMjEsNiAmIzQzOzIxLDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9wdHBfY2xvY2tfa2VybmVsLmgmZ3Q7CiAKICNpbmNsdWRlICYjMzQ7ZHA4MzY0MF9yZWcuaCYjMzQ7CiYjNDM7I2luY2x1ZGUgJiMzNDtwaHlsaWIuaCYjMzQ7CiAKICNkZWZpbmUgRFA4MzY0MF9QSFlfSUQJMHgyMDAwNWNlMQogI2RlZmluZSBQQUdFU0VMCQkweDEzCkBAIC0xMjgsMTAgJiM0MzsxMjksNiBAQCBzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlIHsKIH07CiAKIHN0cnVjdCBkcDgzNjQwX2Nsb2NrIHsKLQkvKiBrZWVwcyB0aGUgaW5zdGFuY2UgaW4gdGhlICYjMzk7cGh5dGVyX2Nsb2NrcyYjMzk7IGxpc3QgKi8KLQlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7Ci0JLyogd2UgY3JlYXRlIG9uZSBjbG9jayBpbnN0YW5jZSBwZXIgTUlJIGJ1cyAqLwotCXN0cnVjdCBtaWlfYnVzICpidXM7CiAJLyogcHJvdGVjdHMgZXh0ZW5kZWQgcmVnaXN0ZXJzIGZyb20gY29uY3VycmVudCBhY2Nlc3MgKi8KIAlzdHJ1Y3QgbXV0ZXggZXh0cmVnX2xvY2s7CiAJLyogcmVtZW1iZXJzIHdoaWNoIHBhZ2Ugd2FzIGxhc3Qgc2VsZWN0ZWQgKi8KQEAgLTE0Niw2ICYjNDM7MTQzLDggQEAgc3RydWN0IGRwODM2NDBfY2xvY2sgewogCXN0cnVjdCBsaXN0X2hlYWQgcGh5bGlzdDsKIAkvKiByZWZlcmVuY2UgdG8gb3VyIFBUUCBoYXJkd2FyZSBjbG9jayAqLwogCXN0cnVjdCBwdHBfY2xvY2sgKnB0cF9jbG9jazsKJiM0MzsJLyogcHJvdGVjdGVkIGJ5IHRoZSBQVFAgY29yZSBwaW4gY29uZmlndXJhdGlvbiBsb2NrICovCiYjNDM7CXN0cnVjdCBwdHBfcGluX2Rlc2MgcGluX2NvbmZpZ1tEUDgzNjQwX05fUElOU107CiB9OwogCiAvKiBnbG9iYWxzICovCkBAIC0yMDYsMTAgJiM0MzsyMDUsNiBAQCBzdGF0aWMgdm9pZCBkcDgzNjQwX2dwaW9fZGVmYXVsdHMoc3RydWN0IHB0cF9waW5fZGVzYyAqcGQpCiAJfQogfQogCi0vKiBhIGxpc3Qgb2YgY2xvY2tzIGFuZCBhIG11dGV4IHRvIHByb3RlY3QgaXQgKi8KLXN0YXRpYyBMSVNUX0hFQUQocGh5dGVyX2Nsb2Nrcyk7Ci1zdGF0aWMgREVGSU5FX01VVEVYKHBoeXRlcl9jbG9ja3NfbG9jayk7Ci0KIHN0YXRpYyB2b2lkIHJ4X3RpbWVzdGFtcF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7CiAKIC8qIGV4dGVuZGVkIHJlZ2lzdGVyIGFjY2VzcyBmdW5jdGlvbnMgKi8KQEAgLTk1MywxMyAmIzQzOzk0OCwxMiBAQCBzdGF0aWMgdm9pZCBkZWNvZGVfc3RhdHVzX2ZyYW1lKHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUgKmRwODM2NDAsCiAJfQogfQogCi1zdGF0aWMgdm9pZCBkcDgzNjQwX2Nsb2NrX2luaXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrLCBzdHJ1Y3QgbWlpX2J1cyAqYnVzKQomIzQzO3N0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfaW5pdChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2spCiB7Ci0JSU5JVF9MSVNUX0hFQUQoJmFtcDtjbG9jay0mZ3Q7bGlzdCk7Ci0JY2xvY2stJmd0O2J1cyA9IGJ1czsKIAltdXRleF9pbml0KCZhbXA7Y2xvY2stJmd0O2V4dHJlZ19sb2NrKTsKIAltdXRleF9pbml0KCZhbXA7Y2xvY2stJmd0O2Nsb2NrX2xvY2spOwogCUlOSVRfTElTVF9IRUFEKCZhbXA7Y2xvY2stJmd0O3BoeWxpc3QpOwomIzQzOwljbG9jay0mZ3Q7Y2Fwcy5waW5fY29uZmlnID0gY2xvY2stJmd0O3Bpbl9jb25maWc7CiAJY2xvY2stJmd0O2NhcHMub3duZXIgPSBUSElTX01PRFVMRTsKIAlzcHJpbnRmKGNsb2NrLSZndDtjYXBzLm5hbWUsICYjMzQ7ZHA4MzY0MCB0aW1lciYjMzQ7KTsKIAljbG9jay0mZ3Q7Y2Fwcy5tYXhfYWRqCT0gMTk1MzEyNDsKQEAgLTk3NywxNCAmIzQzOzk3MSw4IEBAIHN0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfaW5pdChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2ssIHN0cnVjdCBtaWlfYnVzICpidXMpCiAJY2xvY2stJmd0O2NhcHMuc2V0dGltZTY0CT0gcHRwX2RwODM2NDBfc2V0dGltZTsKIAljbG9jay0mZ3Q7Y2Fwcy5lbmFibGUJPSBwdHBfZHA4MzY0MF9lbmFibGU7CiAJY2xvY2stJmd0O2NhcHMudmVyaWZ5CT0gcHRwX2RwODM2NDBfdmVyaWZ5OwotCS8qCi0JICogQ29udmVydCB0aGUgbW9kdWxlIHBhcmFtIGRlZmF1bHRzIGludG8gYSBkeW5hbWljIHBpbiBjb25maWd1cmF0aW9uLgotCSAqLwomIzQzOwkvKiBJbml0aWFsaXplIHRoZSBydW50aW1lIHBpbiBjb25maWd1cmF0aW9uIGZyb20gZ3Bpb190YWIuICovCiAJZHA4MzY0MF9ncGlvX2RlZmF1bHRzKGNsb2NrLSZndDtjYXBzLnBpbl9jb25maWcpOwotCS8qCi0JICogR2V0IGEgcmVmZXJlbmNlIHRvIHRoaXMgYnVzIGluc3RhbmNlLgotCSAqLwotCWdldF9kZXZpY2UoJmFtcDtidXMtJmd0O2Rldik7CiB9CiAKIHN0YXRpYyBpbnQgY2hvb3NlX3RoaXNfcGh5KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaywKQEAgLTk5OSw1OCAmIzQzOzk4Nyw2IEBAIHN0YXRpYyBpbnQgY2hvb3NlX3RoaXNfcGh5KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaywKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpkcDgzNjQwX2Nsb2NrX2dldChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2spCi17Ci0JaWYgKGNsb2NrKQotCQltdXRleF9sb2NrKCZhbXA7Y2xvY2stJmd0O2Nsb2NrX2xvY2spOwotCXJldHVybiBjbG9jazsKLX0KLQotLyoKLSAqIExvb2sgdXAgYW5kIGxvY2sgYSBjbG9jayBieSBidXMgaW5zdGFuY2UuCi0gKiBJZiB0aGVyZSBpcyBubyBjbG9jayBmb3IgdGhpcyBidXMsIHRoZW4gY3JlYXRlIGl0IGZpcnN0LgotICovCi1zdGF0aWMgc3RydWN0IGRwODM2NDBfY2xvY2sgKmRwODM2NDBfY2xvY2tfZ2V0X2J1cyhzdHJ1Y3QgbWlpX2J1cyAqYnVzKQotewotCXN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jayA9IE5VTEwsICp0bXA7Ci0Jc3RydWN0IGxpc3RfaGVhZCAqdGhpczsKLQotCW11dGV4X2xvY2soJmFtcDtwaHl0ZXJfY2xvY2tzX2xvY2spOwotCi0JbGlzdF9mb3JfZWFjaCh0aGlzLCAmYW1wO3BoeXRlcl9jbG9ja3MpIHsKLQkJdG1wID0gbGlzdF9lbnRyeSh0aGlzLCBzdHJ1Y3QgZHA4MzY0MF9jbG9jaywgbGlzdCk7Ci0JCWlmICh0bXAtJmd0O2J1cyA9PSBidXMpIHsKLQkJCWNsb2NrID0gdG1wOwotCQkJYnJlYWs7Ci0JCX0KLQl9Ci0JaWYgKGNsb2NrKQotCQlnb3RvIG91dDsKLQotCWNsb2NrID0ga3phbGxvY19vYmooc3RydWN0IGRwODM2NDBfY2xvY2spOwotCWlmICghY2xvY2spCi0JCWdvdG8gb3V0OwotCi0JY2xvY2stJmd0O2NhcHMucGluX2NvbmZpZyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgcHRwX3Bpbl9kZXNjLAotCQkJCQkgICAgICBEUDgzNjQwX05fUElOUyk7Ci0JaWYgKCFjbG9jay0mZ3Q7Y2Fwcy5waW5fY29uZmlnKSB7Ci0JCWtmcmVlKGNsb2NrKTsKLQkJY2xvY2sgPSBOVUxMOwotCQlnb3RvIG91dDsKLQl9Ci0JZHA4MzY0MF9jbG9ja19pbml0KGNsb2NrLCBidXMpOwotCWxpc3RfYWRkX3RhaWwoJmFtcDtjbG9jay0mZ3Q7bGlzdCwgJmFtcDtwaHl0ZXJfY2xvY2tzKTsKLW91dDoKLQltdXRleF91bmxvY2soJmFtcDtwaHl0ZXJfY2xvY2tzX2xvY2spOwotCi0JcmV0dXJuIGRwODM2NDBfY2xvY2tfZ2V0KGNsb2NrKTsKLX0KLQotc3RhdGljIHZvaWQgZHA4MzY0MF9jbG9ja19wdXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrKQotewotCW11dGV4X3VubG9jaygmYW1wO2Nsb2NrLSZndDtjbG9ja19sb2NrKTsKLX0KLQogc3RhdGljIGludCBkcDgzNjQwX3NvZnRfcmVzZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIHsKIAlpbnQgcmV0OwpAQCAtMTQwMCwyMCAmIzQzOzEzMzYsMzEgQEAgc3RhdGljIGludCBkcDgzNjQwX3RzX2luZm8oc3RydWN0IG1paV90aW1lc3RhbXBlciAqbWlpX3RzLAogCiBzdGF0aWMgaW50IGRwODM2NDBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIHsKLQlzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2s7CiAJc3RydWN0IGRwODM2NDBfcHJpdmF0ZSAqZHA4MzY0MDsKLQlpbnQgZXJyID0gLUVOT01FTSwgaTsKJiM0MzsJc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrOwomIzQzOwlpbnQgZXJyLCBpOwogCiAJaWYgKHBoeWRldi0mZ3Q7bWRpby5hZGRyID09IEJST0FEQ0FTVF9BRERSKQogCQlyZXR1cm4gMDsKIAotCWNsb2NrID0gZHA4MzY0MF9jbG9ja19nZXRfYnVzKHBoeWRldi0mZ3Q7bWRpby5idXMpOwotCWlmICghY2xvY2spCi0JCWdvdG8gbm9fY2xvY2s7CiYjNDM7CWVyciA9IHBoeV9wYWNrYWdlX2pvaW4ocGh5ZGV2LCBCUk9BRENBU1RfQUREUiwgc2l6ZW9mKCpjbG9jaykpOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIGVycjsKJiM0MzsKJiM0MzsJY2xvY2sgPSBwaHlfcGFja2FnZV9nZXRfcHJpdihwaHlkZXYpOwomIzQzOwkvKiBFbnN1cmUgb3RoZXIgUEhZIHByb2JlcyB3YWl0IGZvciBzaGFyZWQgY2xvY2sgaW5pdGlhbGl6YXRpb24uICovCiYjNDM7CXBoeV9wYWNrYWdlX2xvY2socGh5ZGV2KTsKJiM0MzsJaWYgKHBoeV9wYWNrYWdlX3Byb2JlX29uY2UocGh5ZGV2KSkKJiM0MzsJCWRwODM2NDBfY2xvY2tfaW5pdChjbG9jayk7CiYjNDM7CXBoeV9wYWNrYWdlX3VubG9jayhwaHlkZXYpOwomIzQzOwomIzQzOwltdXRleF9sb2NrKCZhbXA7Y2xvY2stJmd0O2Nsb2NrX2xvY2spOwogCiAJZHA4MzY0MCA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUpOwotCWlmICghZHA4MzY0MCkKJiM0MzsJaWYgKCFkcDgzNjQwKSB7CiYjNDM7CQllcnIgPSAtRU5PTUVNOwogCQlnb3RvIG5vX21lbW9yeTsKJiM0MzsJfQogCiAJZHA4MzY0MC0mZ3Q7cGh5ZGV2ID0gcGh5ZGV2OwogCWRwODM2NDAtJmd0O21paV90cy5yeHRzdGFtcCA9IGRwODM2NDBfcnh0c3RhbXA7CkBAIC0xNDUwLDE1ICYjNDM7MTM5NywyMCBAQCBzdGF0aWMgaW50IGRwODM2NDBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIAl9IGVsc2UKIAkJbGlzdF9hZGRfdGFpbCgmYW1wO2RwODM2NDAtJmd0O2xpc3QsICZhbXA7Y2xvY2stJmd0O3BoeWxpc3QpOwogCi0JZHA4MzY0MF9jbG9ja19wdXQoY2xvY2spOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtjbG9jay0mZ3Q7Y2xvY2tfbG9jayk7CiYjNDM7CiAJcmV0dXJuIDA7CiAKIG5vX3JlZ2lzdGVyOgogCWNsb2NrLSZndDtjaG9zZW4gPSBOVUxMOwomIzQzOwljbG9jay0mZ3Q7cHRwX2Nsb2NrID0gTlVMTDsKJiM0MzsJcGh5ZGV2LSZndDtkZWZhdWx0X3RpbWVzdGFtcCA9IGZhbHNlOwomIzQzOwlwaHlkZXYtJmd0O21paV90cyA9IE5VTEw7CiYjNDM7CXBoeWRldi0mZ3Q7cHJpdiA9IE5VTEw7CiAJa2ZyZWUoZHA4MzY0MCk7CiBub19tZW1vcnk6Ci0JZHA4MzY0MF9jbG9ja19wdXQoY2xvY2spOwotbm9fY2xvY2s6CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2Nsb2NrLSZndDtjbG9ja19sb2NrKTsKJiM0MzsJcGh5X3BhY2thZ2VfbGVhdmUocGh5ZGV2KTsKIAlyZXR1cm4gZXJyOwogfQogCkBAIC0xNDY3LDcgJiM0MzsxNDE5LDYgQEAgc3RhdGljIHZvaWQgZHA4MzY0MF9yZW1vdmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIAlzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2s7CiAJc3RydWN0IGxpc3RfaGVhZCAqdGhpcywgKm5leHQ7CiAJc3RydWN0IGRwODM2NDBfcHJpdmF0ZSAqdG1wLCAqZHA4MzY0MCA9IHBoeWRldi0mZ3Q7cHJpdjsKLQlib29sIHJlbW92ZV9jbG9jayA9IGZhbHNlOwogCiAJaWYgKHBoeWRldi0mZ3Q7bWRpby5hZGRyID09IEJST0FEQ0FTVF9BRERSKQogCQlyZXR1cm47CkBAIC0xNDgwLDcgJiM0MzsxNDMxLDggQEAgc3RhdGljIHZvaWQgZHA4MzY0MF9yZW1vdmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIAlza2JfcXVldWVfcHVyZ2UoJmFtcDtkcDgzNjQwLSZndDtyeF9xdWV1ZSk7CiAJc2tiX3F1ZXVlX3B1cmdlKCZhbXA7ZHA4MzY0MC0mZ3Q7dHhfcXVldWUpOwogCi0JY2xvY2sgPSBkcDgzNjQwX2Nsb2NrX2dldChkcDgzNjQwLSZndDtjbG9jayk7CiYjNDM7CWNsb2NrID0gZHA4MzY0MC0mZ3Q7Y2xvY2s7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtjbG9jay0mZ3Q7Y2xvY2tfbG9jayk7CiAKIAlpZiAoZHA4MzY0MCA9PSBjbG9jay0mZ3Q7Y2hvc2VuKSB7CiAJCXB0cF9jbG9ja191bnJlZ2lzdGVyKGNsb2NrLSZndDtwdHBfY2xvY2spOwpAQCAtMTQ5NSwyMyAmIzQzOzE0NDcsMTAgQEAgc3RhdGljIHZvaWQgZHA4MzY0MF9yZW1vdmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIAkJfQogCX0KIAotCWlmICghY2xvY2stJmd0O2Nob3NlbiAmYW1wOyZhbXA7IGxpc3RfZW1wdHkoJmFtcDtjbG9jay0mZ3Q7cGh5bGlzdCkpCi0JCXJlbW92ZV9jbG9jayA9IHRydWU7Ci0KLQlkcDgzNjQwX2Nsb2NrX3B1dChjbG9jayk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2Nsb2NrLSZndDtjbG9ja19sb2NrKTsKIAlrZnJlZShkcDgzNjQwKTsKIAotCWlmIChyZW1vdmVfY2xvY2spIHsKLQkJbXV0ZXhfbG9jaygmYW1wO3BoeXRlcl9jbG9ja3NfbG9jayk7Ci0JCWxpc3RfZGVsKCZhbXA7Y2xvY2stJmd0O2xpc3QpOwotCQltdXRleF91bmxvY2soJmFtcDtwaHl0ZXJfY2xvY2tzX2xvY2spOwotCi0JCW11dGV4X2Rlc3Ryb3koJmFtcDtjbG9jay0mZ3Q7ZXh0cmVnX2xvY2spOwotCQltdXRleF9kZXN0cm95KCZhbXA7Y2xvY2stJmd0O2Nsb2NrX2xvY2spOwotCQlwdXRfZGV2aWNlKCZhbXA7Y2xvY2stJmd0O2J1cy0mZ3Q7ZGV2KTsKLQkJa2ZyZWUoY2xvY2stJmd0O2NhcHMucGluX2NvbmZpZyk7Ci0JCWtmcmVlKGNsb2NrKTsKLQl9CiYjNDM7CXBoeV9wYWNrYWdlX2xlYXZlKHBoeWRldik7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkcDgzNjQwX2RyaXZlcltdID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYwppbmRleCAxNmFlOGQxYzFmODlhLi43MzU4MDZjNWJlYTg4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYwpAQCAtNTIsNiAmIzQzOzUyLDI5IEBAIHZvaWQgKnBoeV9wYWNrYWdlX2dldF9wcml2KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiB9CiBFWFBPUlRfU1lNQk9MX0dQTChwaHlfcGFja2FnZV9nZXRfcHJpdik7CiAKJiM0MzsvKioKJiM0MzsgKiBwaHlfcGFja2FnZV9sb2NrIC0gYWNxdWlyZSB0aGUgUEhZIHBhY2thZ2UgbG9jawomIzQzOyAqIEBwaHlkZXY6IFBIWSBkZXZpY2UgdGhhdCBoYXMgam9pbmVkIHRoZSBwYWNrYWdlCiYjNDM7ICoKJiM0MzsgKiBVc2UgdGhpcyB0byBzZXJpYWxpemUgYWNjZXNzIHRvIHBhY2thZ2UtcHJpdmF0ZSBkYXRhLiBSZWxlYXNlIHRoZSBsb2NrCiYjNDM7ICogd2l0aCBwaHlfcGFja2FnZV91bmxvY2soKS4KJiM0MzsgKi8KJiM0Mzt2b2lkIHBoeV9wYWNrYWdlX2xvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKJiM0Mzt7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtwaHlkZXYtJmd0O21kaW8uYnVzLSZndDtzaGFyZWRfbG9jayk7CiYjNDM7fQomIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHBoeV9wYWNrYWdlX2xvY2spOwomIzQzOwomIzQzOy8qKgomIzQzOyAqIHBoeV9wYWNrYWdlX3VubG9jayAtIHJlbGVhc2UgdGhlIFBIWSBwYWNrYWdlIGxvY2sKJiM0MzsgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHRoYXQgaGFzIGpvaW5lZCB0aGUgcGFja2FnZQomIzQzOyAqLwomIzQzO3ZvaWQgcGh5X3BhY2thZ2VfdW5sb2NrKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiYjNDM7ewomIzQzOwltdXRleF91bmxvY2soJmFtcDtwaHlkZXYtJmd0O21kaW8uYnVzLSZndDtzaGFyZWRfbG9jayk7CiYjNDM7fQomIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHBoeV9wYWNrYWdlX3VubG9jayk7CiYjNDM7CiBzdGF0aWMgaW50IHBoeV9wYWNrYWdlX2FkZHJlc3Moc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwKIAkJCSAgICAgICB1bnNpZ25lZCBpbnQgYWRkcl9vZmZzZXQpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGliLmggYi9kcml2ZXJzL25ldC9waHkvcGh5bGliLmgKaW5kZXggMGZiYTI0NWY5NzQ1OC4uYzZlMjZhYzZiMjhmMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaWIuaApAQCAtMTIsNiAmIzQzOzEyLDggQEAgc3RydWN0IG1paV9idXM7CiAKIHN0cnVjdCBkZXZpY2Vfbm9kZSAqcGh5X3BhY2thZ2VfZ2V0X25vZGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7CiB2b2lkICpwaHlfcGFja2FnZV9nZXRfcHJpdihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTsKJiM0Mzt2b2lkIHBoeV9wYWNrYWdlX2xvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7CiYjNDM7dm9pZCBwaHlfcGFja2FnZV91bmxvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7CiBpbnQgX19waHlfcGFja2FnZV9yZWFkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHVuc2lnbmVkIGludCBhZGRyX29mZnNldCwKIAkJICAgICAgIHUzMiByZWdudW0pOwogaW50IF9fcGh5X3BhY2thZ2Vfd3JpdGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdW5zaWduZWQgaW50IGFkZHJfb2Zmc2V0LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9wdHAvS2NvbmZpZyBiL2RyaXZlcnMvcHRwL0tjb25maWcKaW5kZXggYjkzNjQwY2EwOGI3Mi4uZmViNTBmOGNjNDA2YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9wdHAvS2NvbmZpZwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3B0cC9LY29uZmlnCkBAIC03OCw2ICYjNDM7NzgsNyBAQCBjb25maWcgRFA4MzY0MF9QSFkKIAlkZXBlbmRzIG9uIFBIWUxJQgogCWRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0sKIAlzZWxlY3QgQ1JDMzIKJiM0MzsJc2VsZWN0IFBIWV9QQUNLQUdFCiAJaGVscAogCSAgU3VwcG9ydHMgdGhlIERQODM2NDAgUEhZVEVSIHdpdGggSUVFRSAxNTg4IGZlYXR1cmVzLgogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNjo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDc4CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRFA4MzY0MCBQSFkgRHJpdmVyIE1vZGlmaWNhdGlvbioqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGRpZ2dpbmcgaW50byB0aGUgYGRwODM2NDBgIFBIWSBkcml2ZXIsIHNwZWNpZmljYWxseSBtZXNzaW5nIHdpdGggaG93IHRoZSBgZHA4MzY0MF9jbG9ja2Agc3RydWN0dXJlIGlzIGhhbmRsZWQuIEl0JiMzOTtzIGFsc28gdG91Y2hpbmcgdGhlIGBwaHlfcGFja2FnZWAgY29yZSBjb2RlLCB3aGljaCBpcyBpbnRlcmVzdGluZyBiZWNhdXNlIHRoYXQmIzM5O3Mgd2hlcmUgc2hhcmVkIFBIWSByZXNvdXJjZXMgYXJlIG1hbmFnZWQuCgpQcmV2aW91c2x5LCB0aGUgYGRwODM2NDBfY2xvY2tgIHdhcyBhbGxvY2F0ZWQgd2l0aCBga3phbGxvY2AgYW5kIHRvc3NlZCBpbnRvIGEgZ2xvYmFsIGxpc3QsIGBwaHl0ZXJfY2xvY2tzYC4gQSBnbG9iYWwgbGlzdCBpcyBmaW5lLCBidXQgaXQgY2FuIGJlIHByb2JsZW1hdGljIHdpdGggdGhyZWFkaW5nLCBhbmQgZ2VuZXJhbGx5IG1ha2VzIGNvZGUgaGFyZGVyIHRvIGZvbGxvdy4gTm93LCB0aGUgcGF0Y2ggaXMgc3dhcHBpbmcgdGhhdCBvdXQgZm9yIGBwaHlfcGFja2FnZV9qb2luYCBhbmQgYHBoeV9wYWNrYWdlX2dldF9wcml2YCBmb3IgbWFuYWdpbmcgdGhlIHNoYXJlZCBjbG9jay4gVGhhdCYjMzk7cyBhIGdvb2QgYXBwcm9hY2ggZm9yIHJlc291cmNlIHNoYXJpbmcgYW1vbmcgZGV2aWNlcywgYXMgaXQgd2lsbCByZWR1Y2UgcmVkdW5kYW5jeS4KClRoZSBvdGhlciBjaGFuZ2UgaXMgdGhhdCB0aGUgYHBpbl9jb25maWdgIGFycmF5LCB3aGljaCB1c2VkIHRvIGJlIGBremFsbG9jYC1lZCwgaXMgbm93IGVtYmVkZGVkIGRpcmVjdGx5IHdpdGhpbiB0aGUgYHN0cnVjdCBkcDgzNjQwX2Nsb2NrYCBhcyBgc3RydWN0IHB0cF9waW5fZGVzYyBwaW5fY29uZmlnW0RQODM2NDBfTl9QSU5TXWAuIFNvIHdlIGFyZSByZW1vdmluZyB0aGUgYWxsb2NhdGlvbiBhbmQgbWFuYWdlbWVudCBvZiBhIGRlZGljYXRlZCBhcnJheSwgYXMgdGhlIGFycmF5IGlzIGluY2x1ZGVkIHdpdGhpbiB0aGUgc3RydWN0IGFuZCBzbyBpdCBpcyBhbGxvY2F0ZWQgYW5kIGZyZWVkIHdpdGggdGhlIHN0cnVjdC4gVGhpcyBzZWVtcyBjbGVhbmVyIGFuZCBsZXNzIHByb25lIHRvIG1lbW9yeSBsZWFrcyBpZiBkb25lIGNvcnJlY3RseS4KCk5vdywgYSByZWQgZmxhZyBqdXN0IHdlbnQgdXAgaW4gbXkgaGVhZC4gV2hlbmV2ZXIgSSBzZWUgYWxsb2NhdGlvbiBjaGFuZ2VzLCB0aGUgZmlyc3QgdGhpbmcgSSBkbyBpcyBjaGVjayBmb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIFdlIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYHBoeV9wYWNrYWdlX2pvaW5gLCB3aGVuIGl0IGFsbG9jYXRlcyBtZW1vcnkgZm9yIHRoZSBzaGFyZWQgZGF0YSwgYWN0dWFsbHkgKnplcm9zKiB0aGF0IG1lbW9yeS4gSWYgaXQgZG9lc24mIzM5O3QsIHdlJiMzOTtyZSBzdGFyaW5nIGRvd24gdGhlIGJhcnJlbCBvZiBhIHBvdGVudGlhbCBzZWN1cml0eSB2dWxuZXJhYmlsaXR5IG9yLCBhdCB0aGUgdmVyeSBsZWFzdCwgdW5wcmVkaWN0YWJsZSBiZWhhdmlvci4gTGV0JiMzOTtzIGdvIGFuZCBjaGVjayB0aGUgaW1wbGVtZW50YXRpb24gb2YgYHBoeV9wYWNrYWdlX2pvaW5gIGltbWVkaWF0ZWx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNjo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlfcGFja2FnZV9qb2luJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvYmNtNTQxNDAuYz01ODA9c3RhdGljIGludCBiY201NDE0MF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY201NDE0MC5jLTU5NC1cbmRyaXZlcnMvbmV0L3BoeS9iY201NDE0MC5jOjU5NTpcdGRldm1fcGh5X3BhY2thZ2Vfam9pbihcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYsIHBoeWRldiwgcHJpdi1cdTAwM2ViYXNlX2FkZHIsIDApO1xuZHJpdmVycy9uZXQvcGh5L2JjbTU0MTQwLmMtNTk2LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM9MTMzNz1zdGF0aWMgaW50IGRwODM2NDBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTEzNDUtXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jOjEzNDY6XHRlcnIgPSBwaHlfcGFja2FnZV9qb2luKHBoeWRldiwgQlJPQURDQVNUX0FERFIsIHNpemVvZigqY2xvY2spKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTM0Ny1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYz0xMzY0PXN0YXRpYyBpbnQgbXQ3OTg4X3BoeV9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmMtMTM3Mi1cbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmM6MTM3MzpcdGVyciA9IGRldm1fcGh5X3BhY2thZ2Vfam9pbihcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYsIHBoeWRldiwgMCxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmMtMTM3NC1cdFx0XHRcdCAgICBzaXplb2Yoc3RydWN0IG10a19zb2NwaHlfc2hhcmVkKSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JlbC5jPTQ2ODg9c3RhdGljIGludCBsYW44ODE0X3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JlbC5jLTQ3MDgtXHRhZGRyID0gbGFucGh5X3JlYWRfcGFnZV9yZWcocGh5ZGV2LCBMQU44ODE0X1BBR0VfQ09NTU9OX1JFR1MsIDApIFx1MDAyNiAweDFGO1xuZHJpdmVycy9uZXQvcGh5L21pY3JlbC5jOjQ3MDk6XHRkZXZtX3BoeV9wYWNrYWdlX2pvaW4oXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2LCBwaHlkZXYsXG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmMtNDcxMC1cdFx0XHQgICAgICBhZGRyLCBzaXplb2Yoc3RydWN0IGxhbjg4MTRfc2hhcmVkX3ByaXYpKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmM9NjEwMD1zdGF0aWMgaW50IGxhbjg4NDJfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmMtNjE1MS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYzo2MTUyOlx0cmV0ID0gZGV2bV9waHlfcGFja2FnZV9qb2luKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldiwgcGh5ZGV2LCBhZGRyLFxuZHJpdmVycy9uZXQvcGh5L21pY3JlbC5jLTYxNTMtXHRcdFx0XHQgICAgc2l6ZW9mKHN0cnVjdCBsYW44ODE0X3NoYXJlZF9wcml2KSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmM9MjI0MT1zdGF0aWMgaW50IHZzYzg1eHhfcHJvYmVfY29tbW9uKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4tLVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMjI2Ni1cdFx0dnNjODU4NF9nZXRfYmFzZV9hZGRyKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYzoyMjY3Olx0XHRyZXQgPSBkZXZtX3BoeV9wYWNrYWdlX2pvaW4oXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2LCBwaHlkZXYsXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYy0yMjY4LVx0XHRcdFx0XHQgICAgdnNjODUzMS1cdTAwM2ViYXNlX2FkZHIsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMjItICogUmVwcmVzZW50cyBhIHNoYXJlZCBzdHJ1Y3R1cmUgYmV0d2VlbiBkaWZmZXJlbnQgcGh5ZGV2JiMzOTtzIGluIHRoZSBzYW1lXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzoyMzogKiBwYWNrYWdlLCBmb3IgZXhhbXBsZSBhIHF1YWQgUEhZLiBTZWUgcGh5X3BhY2thZ2Vfam9pbigpIGFuZFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMjQtICogcGh5X3BhY2thZ2VfbGVhdmUoKS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYz0yNj1zdHJ1Y3QgcGh5X3BhY2thZ2Vfc2hhcmVkIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0zNi1cdCAqIHRoZSB1c2VyIGhhcyB0byB0YWtlIGNhcmUgb2YgYXBwcm9wcmlhdGUgbG9ja2luZy4gSXQgaXMgYWxsb2NhdGVkXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzozNzpcdCAqIGFuZCBmcmVlZCBhdXRvbWF0aWNhbGx5IGJ5IHBoeV9wYWNrYWdlX2pvaW4oKSBhbmRcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTM4LVx0ICogcGh5X3BhY2thZ2VfbGVhdmUoKS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYz0yMDI9RVhQT1JUX1NZTUJPTF9HUEwocGh5X3BhY2thZ2VfcHJvYmVfb25jZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMjA0LS8qKlxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmM6MjA1OiAqIHBoeV9wYWNrYWdlX2pvaW4gLSBqb2luIGEgY29tbW9uIFBIWSBncm91cFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMjA2LSAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTIyOC0gKlxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmM6MjI5OiAqIFJldHVybnMgXHUwMDNjIDEgb24gZXJyb3IsIDAgb24gc3VjY2Vzcy4gRXNwLiBjYWxsaW5nIHBoeV9wYWNrYWdlX2pvaW4oKVxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMjMwLSAqIHdpdGggdGhlIHNhbWUgY29va2llIGJ1dCBhIGRpZmZlcmVudCBwcml2X3NpemUgaXMgYW4gZXJyb3IuXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0yMzEtICovXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzoyMzI6aW50IHBoeV9wYWNrYWdlX2pvaW4oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGJhc2VfYWRkciwgc2l6ZV90IHByaXZfc2l6ZSlcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTIzMy17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMjc1LX1cbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jOjI3NjpFWFBPUlRfU1lNQk9MX0dQTChwaHlfcGFja2FnZV9qb2luKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTI3Ny1cbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTI3OC0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jOjI3OTogKiBvZl9waHlfcGFja2FnZV9qb2luIC0gam9pbiBhIGNvbW1vbiBQSFkgZ3JvdXAgaW4gUEhZIHBhY2thZ2VcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTI4MC0gKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3Rcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0yODItICpcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jOjI4MzogKiBUaGlzIGlzIGEgdmFyaWFudCBvZiBwaHlfcGFja2FnZV9qb2luIGZvciBQSFkgcGFja2FnZSBkZWZpbmVkIGluIERULlxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMjg0LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMjg2LSAqIHN0cnVjdHVyZSAoYnkgbWF0Y2hpbmcgdGhlIG5vZGUgbmFtZSBcJiMzNDtldGhlcm5ldC1waHktcGFja2FnZVwmIzM0OykgYW5kIHRoZVxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmM6Mjg3OiAqIGJhc2VfYWRkciBmb3IgdGhlIFBIWSBwYWNrYWdlIGlzIHBhc3NlZCB0byBwaHlfcGFja2FnZV9qb2luLlxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMjg4LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMjkyLSAqXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzoyOTM6ICogUmV0dXJucyBcdTAwM2MgMCBvbiBlcnJvciwgMCBvbiBzdWNjZXNzLiBFc3AuIGNhbGxpbmcgcGh5X3BhY2thZ2Vfam9pbigpXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0yOTQtICogd2l0aCB0aGUgc2FtZSBjb29raWUgYnV0IGEgZGlmZmVyZW50IHByaXZfc2l6ZSBpcyBhbiBlcnJvci4gT3IgYSBwYXJlbnRcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0yOTctICovXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzoyOTg6aW50IG9mX3BoeV9wYWNrYWdlX2pvaW4oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgc2l6ZV90IHByaXZfc2l6ZSlcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTI5OS17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMzIxLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmM6MzIyOlx0cmV0ID0gcGh5X3BhY2thZ2Vfam9pbihwaHlkZXYsIGJhc2VfYWRkciwgcHJpdl9zaXplKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTMyMy1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMzMyLX1cbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jOjMzMzpFWFBPUlRfU1lNQk9MX0dQTChvZl9waHlfcGFja2FnZV9qb2luKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTMzNC1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0zMzgtICpcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jOjMzOTogKiBUaGlzIGxlYXZlcyBhIFBIWSBncm91cCBjcmVhdGVkIGJ5IHBoeV9wYWNrYWdlX2pvaW4oKS4gSWYgdGhpcyBwaHlkZXZcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTM0MC0gKiB3YXMgdGhlIGxhc3QgdXNlciBvZiB0aGUgc2hhcmVkIGRhdGEgYmV0d2VlbiB0aGUgZ3JvdXAsIHRoaXMgZGF0YSBpc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jPTM2Nj1zdGF0aWMgdm9pZCBkZXZtX3BoeV9wYWNrYWdlX2xlYXZlKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcmVzKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTM3MS0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jOjM3MjogKiBkZXZtX3BoeV9wYWNrYWdlX2pvaW4gLSByZXNvdXJjZSBtYW5hZ2VkIHBoeV9wYWNrYWdlX2pvaW4oKVxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMzczLSAqIEBkZXY6IGRldmljZSB0aGF0IGlzIHJlZ2lzdGVyaW5nIHRoaXMgUEhZIHBhY2thZ2Vcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0zNzgtICpcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jOjM3OTogKiBNYW5hZ2VkIHBoeV9wYWNrYWdlX2pvaW4oKS4gU2hhcmVkIHN0b3JhZ2UgZmV0Y2hlZCBieSB0aGlzIGZ1bmN0aW9uLFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMzgwLSAqIHBoeV9wYWNrYWdlX2xlYXZlKCkgaXMgYXV0b21hdGljYWxseSBjYWxsZWQgb24gZHJpdmVyIGRldGFjaC4gU2VlXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzozODE6ICogcGh5X3BhY2thZ2Vfam9pbigpIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMzgyLSAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmM6MzgzOmludCBkZXZtX3BoeV9wYWNrYWdlX2pvaW4oc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMzg0LVx0XHRcdCAgaW50IGJhc2VfYWRkciwgc2l6ZV90IHByaXZfc2l6ZSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0zOTMtXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzozOTQ6XHRyZXQgPSBwaHlfcGFja2FnZV9qb2luKHBoeWRldiwgYmFzZV9hZGRyLCBwcml2X3NpemUpO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMzk1LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTQwNC19XG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzo0MDU6RVhQT1JUX1NZTUJPTF9HUEwoZGV2bV9waHlfcGFja2FnZV9qb2luKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTQwNi1cbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTQwNy0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jOjQwODogKiBkZXZtX29mX3BoeV9wYWNrYWdlX2pvaW4gLSByZXNvdXJjZSBtYW5hZ2VkIG9mX3BoeV9wYWNrYWdlX2pvaW4oKVxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtNDA5LSAqIEBkZXY6IGRldmljZSB0aGF0IGlzIHJlZ2lzdGVyaW5nIHRoaXMgUEhZIHBhY2thZ2Vcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy00MTItICpcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jOjQxMzogKiBNYW5hZ2VkIG9mX3BoeV9wYWNrYWdlX2pvaW4oKS4gU2hhcmVkIHN0b3JhZ2UgZmV0Y2hlZCBieSB0aGlzIGZ1bmN0aW9uLFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtNDE0LSAqIHBoeV9wYWNrYWdlX2xlYXZlKCkgaXMgYXV0b21hdGljYWxseSBjYWxsZWQgb24gZHJpdmVyIGRldGFjaC4gU2VlXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzo0MTU6ICogb2ZfcGh5X3BhY2thZ2Vfam9pbigpIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtNDE2LSAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmM6NDE3OmludCBkZXZtX29mX3BoeV9wYWNrYWdlX2pvaW4oc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtNDE4LVx0XHRcdCAgICAgc2l6ZV90IHByaXZfc2l6ZSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy00MjctXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzo0Mjg6XHRyZXQgPSBvZl9waHlfcGFja2FnZV9qb2luKHBoeWRldiwgcHJpdl9zaXplKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTQyOS1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy00MzgtfVxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmM6NDM5OkVYUE9SVF9TWU1CT0xfR1BMKGRldm1fb2ZfcGh5X3BhY2thZ2Vfam9pbik7XG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy00NDAtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oPTI4PWJvb2wgcGh5X3BhY2thZ2VfcHJvYmVfb25jZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWIuaDoyOTppbnQgcGh5X3BhY2thZ2Vfam9pbihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgYmFzZV9hZGRyLCBzaXplX3QgcHJpdl9zaXplKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWIuaDozMDppbnQgb2ZfcGh5X3BhY2thZ2Vfam9pbihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBzaXplX3QgcHJpdl9zaXplKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWIuaC0zMS12b2lkIHBoeV9wYWNrYWdlX2xlYXZlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oOjMyOmludCBkZXZtX3BoeV9wYWNrYWdlX2pvaW4oc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oLTMzLVx0XHRcdCAgaW50IGJhc2VfYWRkciwgc2l6ZV90IHByaXZfc2l6ZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGliLmg6MzQ6aW50IGRldm1fb2ZfcGh5X3BhY2thZ2Vfam9pbihzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLmgtMzUtXHRcdFx0ICAgICBzaXplX3QgcHJpdl9zaXplKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM9Njk0PXN0YXRpYyBpbnQgcWNhODA3eF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy03MDEtXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6NzAyOlx0cmV0ID0gZGV2bV9vZl9waHlfcGFja2FnZV9qb2luKGRldiwgcGh5ZGV2LCBzaXplb2YoKnNoYXJlZF9wcml2KSk7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNzAzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0yMzYyPXN0YXRpYyBpbnQgcnRsODIyNF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTIzNjQtXHQvKiBDaGlwIGV4cG9zZXMgNCBwb3J0cywgam9pbiBhbGwgb2YgdGhlbSBpbiB0aGUgc2FtZSBwYWNrYWdlICovXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyMzY1Olx0cmV0dXJuIGRldm1fcGh5X3BhY2thZ2Vfam9pbihcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYsIHBoeWRldixcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTIzNjYtXHRcdFx0XHQgICAgIHBoeWRldi1cdTAwM2VtZGlvLmFkZHIgXHUwMDI2IH4zLCAwKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTY6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTY5NAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkludmVzdGlnYXRpbmcgYHBoeV9wYWNrYWdlX2pvaW5gKioKCkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbi4gQmFzZWQgb24gdGhlIGNvbnRleHQsIEkmIzM5O20gZ29pbmcgdG8gaGVhZCBkaXJlY3RseSB0byB0aGUgc291cmNlIGNvZGUuIExldCYjMzk7cyBzdGFydCB3aXRoIGBwaHlfcGFja2FnZV9qb2luYCwgYW5kIHNwZWNpZmljYWxseSwgSSYjMzk7bGwgYmUgbG9va2luZyBpbiB0aGUgYGRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jYCBmaWxlLiBJJiMzOTttIGdvaW5nIHRvIGFzc3VtZSB0aGVyZSBpcyBhIHNwZWNpZmljIHJlYXNvbiBmb3IgZXhhbWluaW5nIHRoaXMgZnVuY3Rpb24gbm93LCBwZXJoYXBzIGEgYnVnIHJlcG9ydCBvciBwZXJmb3JtYW5jZSBpc3N1ZSByZWxhdGVkIHRvIFBIWSBwYWNrYWdlIG1hbmFnZW1lbnQuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSB3aXRoaW4gdGhlIGJyb2FkZXIgUEhZIGRyaXZlciBmcmFtZXdvcmsuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGFueSBwb3RlbnRpYWwgc3luY2hyb25pemF0aW9uIGlzc3VlcywgcmVzb3VyY2UgY29udGVudGlvbiwgZXJyb3IgaGFuZGxpbmcsIGFuZCBnZW5lcmFsIGVmZmljaWVuY3kuIE15IGltbWVkaWF0ZSBnb2FscyBhcmUgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93LCBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQsIGFuZCBhbnkgcG90ZW50aWFsIGJvdHRsZW5lY2tzLiBJJiMzOTtsbCBwcm9iYWJseSBiZSBjcm9zcy1yZWZlcmVuY2luZyB0aGlzIGZ1bmN0aW9uIHdpdGggb3RoZXIgcmVsYXRlZCBQSFkgZHJpdmVyIGZ1bmN0aW9ucyBhcyBJIGdvLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNjo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjIwOlx0ICogVGhlIGFkZHJlc3Mgd2hpY2ggaXMgZ2l2ZW4gaGVyZSwgd2lsbCBiZSB1c2VkIGluIHRoZSBfX3BoeV9wYWNrYWdlX3JlYWQoKVxuIDIyMTpcdCAqIGFuZCBfX3BoeV9wYWNrYWdlX3dyaXRlKCkgY29udmVuaWVuY2UgZnVuY3Rpb25zIGFzIGJhc2UgYW5kIGFkZGVkIHRvIHRoZVxuIDIyMjpcdCAqIHBhc3NlZCBvZmZzZXQgaW4gdGhvc2UgZnVuY3Rpb25zLlxuIDIyMzpcdCAqXG4gMjI0Olx0ICogVGhpcyB3aWxsIHNldCB0aGUgc2hhcmVkIHBvaW50ZXIgb2YgdGhlIHBoeWRldiB0byB0aGUgc2hhcmVkIHN0b3JhZ2UuXG4gMjI1Olx0ICogSWYgdGhpcyBpcyB0aGUgZmlyc3QgY2FsbCBmb3IgYSB0aGlzIGNvb2tpZSB0aGUgc2hhcmVkIHN0b3JhZ2Ugd2lsbCBiZVxuIDIyNjpcdCAqIGFsbG9jYXRlZC4gSWYgcHJpdl9zaXplIGlzIG5vbi16ZXJvLCB0aGUgZ2l2ZW4gYW1vdW50IG9mIGJ5dGVzIGFyZVxuIDIyNzpcdCAqIGFsbG9jYXRlZCBmb3IgdGhlIHByaXYgbWVtYmVyLlxuIDIyODpcdCAqXG4gMjI5Olx0ICogUmV0dXJucyBcdTAwM2MgMSBvbiBlcnJvciwgMCBvbiBzdWNjZXNzLiBFc3AuIGNhbGxpbmcgcGh5X3BhY2thZ2Vfam9pbigpXG4gMjMwOlx0ICogd2l0aCB0aGUgc2FtZSBjb29raWUgYnV0IGEgZGlmZmVyZW50IHByaXZfc2l6ZSBpcyBhbiBlcnJvci5cbiAyMzE6XHQgKi9cbiAyMzI6XHRpbnQgcGh5X3BhY2thZ2Vfam9pbihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgYmFzZV9hZGRyLCBzaXplX3QgcHJpdl9zaXplKVxuIDIzMzpcdHtcbiAyMzQ6XHRcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwaHlkZXYtXHUwMDNlbWRpby5idXM7XG4gMjM1Olx0XHRzdHJ1Y3QgcGh5X3BhY2thZ2Vfc2hhcmVkICpzaGFyZWQ7XG4gMjM2Olx0XHRpbnQgcmV0O1xuIDIzNzpcdFxuIDIzODpcdFx0aWYgKGJhc2VfYWRkciBcdTAwM2MgMCB8fCBiYXNlX2FkZHIgXHUwMDNlPSBQSFlfTUFYX0FERFIpXG4gMjM5Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDI0MDpcdFxuIDI0MTpcdFx0bXV0ZXhfbG9jayhcdTAwMjZidXMtXHUwMDNlc2hhcmVkX2xvY2spO1xuIDI0MjpcdFx0c2hhcmVkID0gYnVzLVx1MDAzZXNoYXJlZFtiYXNlX2FkZHJdO1xuIDI0MzpcdFx0aWYgKCFzaGFyZWQpIHtcbiAyNDQ6XHRcdFx0cmV0ID0gLUVOT01FTTtcbiAyNDU6XHRcdFx0c2hhcmVkID0ga3phbGxvY19vYmooKnNoYXJlZCk7XG4gMjQ2Olx0XHRcdGlmICghc2hhcmVkKVxuIDI0NzpcdFx0XHRcdGdvdG8gZXJyX3VubG9jaztcbiAyNDg6XHRcdFx0aWYgKHByaXZfc2l6ZSkge1xuIDI0OTpcdFx0XHRcdHNoYXJlZC1cdTAwM2Vwcml2ID0ga3phbGxvYyhwcml2X3NpemUsIEdGUF9LRVJORUwpO1xuIDI1MDpcdFx0XHRcdGlmICghc2hhcmVkLVx1MDAzZXByaXYpXG4gMjUxOlx0XHRcdFx0XHRnb3RvIGVycl9mcmVlO1xuIDI1MjpcdFx0XHRcdHNoYXJlZC1cdTAwM2Vwcml2X3NpemUgPSBwcml2X3NpemU7XG4gMjUzOlx0XHRcdH1cbiAyNTQ6XHRcdFx0c2hhcmVkLVx1MDAzZWJhc2VfYWRkciA9IGJhc2VfYWRkcjtcbiAyNTU6XHRcdFx0c2hhcmVkLVx1MDAzZW5wID0gTlVMTDtcbiAyNTY6XHRcdFx0cmVmY291bnRfc2V0KFx1MDAyNnNoYXJlZC1cdTAwM2VyZWZjbnQsIDEpO1xuIDI1NzpcdFx0XHRidXMtXHUwMDNlc2hhcmVkW2Jhc2VfYWRkcl0gPSBzaGFyZWQ7XG4gMjU4Olx0XHR9IGVsc2Uge1xuIDI1OTpcdFx0XHRyZXQgPSAtRUlOVkFMO1xuIDI2MDpcdFx0XHRpZiAocHJpdl9zaXplIFx1MDAyNlx1MDAyNiBwcml2X3NpemUgIT0gc2hhcmVkLVx1MDAzZXByaXZfc2l6ZSlcbiAyNjE6XHRcdFx0XHRnb3RvIGVycl91bmxvY2s7XG4gMjYyOlx0XHRcdHJlZmNvdW50X2luYyhcdTAwMjZzaGFyZWQtXHUwMDNlcmVmY250KTtcbiAyNjM6XHRcdH1cbiAyNjQ6XHRcdG11dGV4X3VubG9jayhcdTAwMjZidXMtXHUwMDNlc2hhcmVkX2xvY2spO1xuIDI2NTpcdFxuIDI2NjpcdFx0cGh5ZGV2LVx1MDAzZXNoYXJlZCA9IHNoYXJlZDtcbiAyNjc6XHRcbiAyNjg6XHRcdHJldHVybiAwO1xuIDI2OTpcdFxuIDI3MDpcdGVycl9mcmVlOlxuIDI3MTpcdFx0a2ZyZWUoc2hhcmVkKTtcbiAyNzI6XHRlcnJfdW5sb2NrOlxuIDI3MzpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmJ1cy1cdTAwM2VzaGFyZWRfbG9jayk7XG4gMjc0Olx0XHRyZXR1cm4gcmV0O1xuIDI3NTpcdH1cbiAyNzY6XHRFWFBPUlRfU1lNQk9MX0dQTChwaHlfcGFja2FnZV9qb2luKTtcbiAyNzc6XHRcbiAyNzg6XHQvKipcbiAyNzk6XHQgKiBvZl9waHlfcGFja2FnZV9qb2luIC0gam9pbiBhIGNvbW1vbiBQSFkgZ3JvdXAgaW4gUEhZIHBhY2thZ2VcbiAyODA6XHQgKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3RcbiAyODE6XHQgKiBAcHJpdl9zaXplOiBpZiBub24temVybyBhbGxvY2F0ZSB0aGlzIGFtb3VudCBvZiBieXRlcyBmb3IgcHJpdmF0ZSBkYXRhXG4gMjgyOlx0ICpcbiAyODM6XHQgKiBUaGlzIGlzIGEgdmFyaWFudCBvZiBwaHlfcGFja2FnZV9qb2luIGZvciBQSFkgcGFja2FnZSBkZWZpbmVkIGluIERULlxuIDI4NDpcdCAqXG4gMjg1Olx0ICogVGhlIHBhcmVudCBub2RlIG9mIHRoZSBAcGh5ZGV2IGlzIGNoZWNrZWQgYXMgYSB2YWxpZCBQSFkgcGFja2FnZSBub2RlXG4gMjg2Olx0ICogc3RydWN0dXJlIChieSBtYXRjaGluZyB0aGUgbm9kZSBuYW1lIFwmIzM0O2V0aGVybmV0LXBoeS1wYWNrYWdlXCYjMzQ7KSBhbmQgdGhlXG4gMjg3Olx0ICogYmFzZV9hZGRyIGZvciB0aGUgUEhZIHBhY2thZ2UgaXMgcGFzc2VkIHRvIHBoeV9wYWNrYWdlX2pvaW4uXG4gMjg4Olx0ICpcbiAyODk6XHQgKiBXaXRoIHRoaXMgY29uZmlndXJhdGlvbiB0aGUgc2hhcmVkIHN0cnVjdCB3aWxsIGFsc28gaGF2ZSB0aGUgbnAgdmFsdWVcbiAyOTA6XHQgKiBmaWxsZWQgdG8gdXNlIGFkZGl0aW9uYWwgRFQgZGVmaW5lZCBwcm9wZXJ0aWVzIGluIFBIWSBzcGVjaWZpY1xuIDI5MTpcdCAqIHByb2JlX29uY2UgYW5kIGNvbmZpZ19pbml0X29uY2UgUEhZIHBhY2thZ2UgT1BzLlxuIDI5MjpcdCAqXG4gMjkzOlx0ICogUmV0dXJucyBcdTAwM2MgMCBvbiBlcnJvciwgMCBvbiBzdWNjZXNzLiBFc3AuIGNhbGxpbmcgcGh5X3BhY2thZ2Vfam9pbigpXG4gMjk0Olx0ICogd2l0aCB0aGUgc2FtZSBjb29raWUgYnV0IGEgZGlmZmVyZW50IHByaXZfc2l6ZSBpcyBhbiBlcnJvci4gT3IgYSBwYXJlbnRcbiAyOTU6XHQgKiBub2RlIGlzIG5vdCBkZXRlY3RlZCBvciBpcyBub3QgdmFsaWQgb3IgZG9lc24mIzM5O3QgbWF0Y2ggdGhlIGV4cGVjdGVkIG5vZGVcbiAyOTY6XHQgKiBuYW1lIGZvciBQSFkgcGFja2FnZS5cbiAyOTc6XHQgKi9cbiAyOTg6XHRpbnQgb2ZfcGh5X3BhY2thZ2Vfam9pbihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBzaXplX3QgcHJpdl9zaXplKVxuIDI5OTpcdHtcbiAzMDA6XHRcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSA9IHBoeWRldi1cdTAwM2VtZGlvLmRldi5vZl9ub2RlO1xuIDMwMTpcdFx0c3RydWN0IGRldmljZV9ub2RlICpwYWNrYWdlX25vZGU7XG4gMzAyOlx0XHR1MzIgYmFzZV9hZGRyO1xuIDMwMzpcdFx0aW50IHJldDtcbiAzMDQ6XHRcbiAzMDU6XHRcdGlmICghbm9kZSlcbiAzMDY6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gMzA3Olx0XG4gMzA4Olx0XHRwYWNrYWdlX25vZGUgPSBvZl9nZXRfcGFyZW50KG5vZGUpO1xuIDMwOTpcdFx0aWYgKCFwYWNrYWdlX25vZGUpXG4gMzEwOlx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDMxMTpcdFxuIDMxMjpcdFx0aWYgKCFvZl9ub2RlX25hbWVfZXEocGFja2FnZV9ub2RlLCBcJiMzNDtldGhlcm5ldC1waHktcGFja2FnZVwmIzM0OykpIHtcbiAzMTM6XHRcdFx0cmV0ID0gLUVJTlZBTDtcbiAzMTQ6XHRcdFx0Z290byBleGl0O1xuIDMxNTpcdFx0fVxuIDMxNjpcdFxuIDMxNzpcdFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKHBhY2thZ2Vfbm9kZSwgXCYjMzQ7cmVnXCYjMzQ7LCBcdTAwMjZiYXNlX2FkZHIpKSB7XG4gMzE4Olx0XHRcdHJldCA9IC1FSU5WQUw7XG4gMzE5Olx0XHRcdGdvdG8gZXhpdDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTY6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE1MTIKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAzNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgZHA4MzY0MGAgQ2xvY2sgU3RydWN0dXJlIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIHRoZSBgcGh5X3BhY2thZ2Vfam9pbmAgZnVuY3Rpb24gaXMgdXNpbmcgYGt6YWxsb2NgIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIHNoYXJlZCBtZW1vcnkgcmVnaW9uLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGVudGlyZSBgZHA4MzY0MF9jbG9ja2Agc3RydWN0dXJlLCBpbmNsdWRpbmcgdGhlIGBwaW5fY29uZmlnYCBhcnJheSwgZ2V0cyBpbml0aWFsaXplZCB0byB6ZXJvLiBUaGF0JiMzOTtzIGdvb2QuIFRoZSBpbml0aWFsIHRob3VnaHRzIHdlcmUgY29ycmVjdDogdGhlIGBkcDgzNjQwX2Nsb2NrYCBpcyBhbGxvY2F0ZWQgd2l0aCBgc2l6ZW9mKCpjbG9jaylgIGFuZCB0aGVuIGluaXRpYWxpemVkIHZpYSBgZHA4MzY0MF9jbG9ja19pbml0YC4KClRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgYGt6YWxsb2Nfb2Jqc2AgY2FsbCBmb3IgYHBpbl9jb25maWdgIGFuZCBlbWJlZHMgaXQgZGlyZWN0bHkgaW4gdGhlIHN0cnVjdHVyZS4gVGhlcmUmIzM5O3Mgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyBleHBvc2VkIGhlcmUgYmVjYXVzZSBga3phbGxvY2AgemVyb2VzIHRoZSBtZW1vcnkuIEdvb2QsIGdvb2QsIGdvb2QuIE5vdyBsZXQmIzM5O3MganVzdCBtYWtlIGFic29sdXRlbHkgc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBjaGFuZ2VzLgoKQWgsIGxvb2tzIGxpa2UgYHBoeV9wYWNrYWdlX2xvY2tgIGFuZCBgcGh5X3BhY2thZ2VfdW5sb2NrYCBoYXZlIGJlZW4gYWRkZWQsIGFuZCBgZHA4MzY0MF9wcm9iZWAgaGFzIGJlZW4gbW9kaWZpZWQgdG8gdXRpbGl6ZSBgcGh5X3BhY2thZ2Vfam9pbmAuIEFnYWluLCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBhcHBlYXJzIHRvIGJlIGV4cG9zZWQgdG8gdXNlciBzcGFjZS4gVGhlIGBwaW5fY29uZmlnYCBpcyBpbml0aWFsaXplZCB1c2luZyBgZHA4MzY0MF9ncGlvX2RlZmF1bHRzYCwgd2hpY2ggc2V0cyBzb21lIG9mIHRoZSBmaWVsZHMsIGJ1dCB0aGUgcmVtYWluaW5nIGZpZWxkcyBhcmUgemVyb2VkIGJ5IGBremFsbG9jYC4KCldhaXQgYSBtaW51dGUuLi4gY291bGQgdGhlIGBkcDgzNjQwX2Nsb2NrYCBpdHNlbGYgc29tZWhvdyBiZSBwYXNzZWQgdG8gdXNlciBzcGFjZT8gTm8sIG5vLCBpdCYjMzk7cyBhIGNvbXBsZXRlbHkga2VybmVsLWludGVybmFsIHN0cnVjdHVyZS4gT2theSwgc28gdGhlIGBwdHBfcGluX2Rlc2NgICppcyogZXhwb3NlZCB2aWEgdGhlIGBQVFBfUElOX0dFVEZVTkNgIGlvY3RsLCBidXQgdGhlIFBUUCBjb3JlIGhhbmRsZXMgY29weWluZyB0aGF0LiBBbHJpZ2h0LCBqdXN0IHRvIGJlIGNvbXBsZXRlbHkgY2VydGFpbiwgbGV0JiMzOTtzIHRha2UgYSBxdWljayBsb29rIGF0IHRoZSBgcHRwX3Bpbl9kZXNjYCBzdHJ1Y3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE2OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3B0cF9waW5fZGVzYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvdWFwaS9saW51eC9wdHBfY2xvY2suaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL3VhcGkvbGludXgvcHRwX2Nsb2NrLmg9MTkwPWVudW0gcHRwX3Bpbl9mdW5jdGlvbiB7XG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L3B0cF9jbG9jay5oLTE5Ni1cbmluY2x1ZGUvdWFwaS9saW51eC9wdHBfY2xvY2suaDoxOTc6c3RydWN0IHB0cF9waW5fZGVzYyB7XG5pbmNsdWRlL3VhcGkvbGludXgvcHRwX2Nsb2NrLmgtMTk4LVx0Lypcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvcHRwX2Nsb2NrLmgtMjMwLSNkZWZpbmUgUFRQX1NZU19PRkZTRVQgICAgIF9JT1coUFRQX0NMS19NQUdJQywgNSwgc3RydWN0IHB0cF9zeXNfb2Zmc2V0KVxuaW5jbHVkZS91YXBpL2xpbnV4L3B0cF9jbG9jay5oOjIzMTojZGVmaW5lIFBUUF9QSU5fR0VURlVOQyAgICBfSU9XUihQVFBfQ0xLX01BR0lDLCA2LCBzdHJ1Y3QgcHRwX3Bpbl9kZXNjKVxuaW5jbHVkZS91YXBpL2xpbnV4L3B0cF9jbG9jay5oOjIzMjojZGVmaW5lIFBUUF9QSU5fU0VURlVOQyAgICBfSU9XKFBUUF9DTEtfTUFHSUMsIDcsIHN0cnVjdCBwdHBfcGluX2Rlc2MpXG5pbmNsdWRlL3VhcGkvbGludXgvcHRwX2Nsb2NrLmgtMjMzLSNkZWZpbmUgUFRQX1NZU19PRkZTRVRfUFJFQ0lTRSBcXFxuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9wdHBfY2xvY2suaC0yNDItI2RlZmluZSBQVFBfU1lTX09GRlNFVDIgICAgIF9JT1coUFRQX0NMS19NQUdJQywgMTQsIHN0cnVjdCBwdHBfc3lzX29mZnNldClcbmluY2x1ZGUvdWFwaS9saW51eC9wdHBfY2xvY2suaDoyNDM6I2RlZmluZSBQVFBfUElOX0dFVEZVTkMyICAgIF9JT1dSKFBUUF9DTEtfTUFHSUMsIDE1LCBzdHJ1Y3QgcHRwX3Bpbl9kZXNjKVxuaW5jbHVkZS91YXBpL2xpbnV4L3B0cF9jbG9jay5oOjI0NDojZGVmaW5lIFBUUF9QSU5fU0VURlVOQzIgICAgX0lPVyhQVFBfQ0xLX01BR0lDLCAxNiwgc3RydWN0IHB0cF9waW5fZGVzYylcbmluY2x1ZGUvdWFwaS9saW51eC9wdHBfY2xvY2suaC0yNDUtI2RlZmluZSBQVFBfU1lTX09GRlNFVF9QUkVDSVNFMiBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNjo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjgwMAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU2FmZXR5IG9mIGBwdHBfcGluX2Rlc2NgIEV4cG9zdXJlKioKCk9rYXksIHNvIHRoZSBjb2RlIGV4cG9zZXMgYHB0cF9waW5fZGVzY2AgdG8gdXNlciBzcGFjZSwgd2hpY2ggaXMgc29tZXRoaW5nIEkgbmVlZCB0byBjYXJlZnVsbHkgY29uc2lkZXIuIE15IGluaXRpYWwgY29uY2VybiBpcyBhbHdheXMgYXJvdW5kIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBwb3RlbnRpYWwgZm9yIGluZm9ybWF0aW9uIGxlYWtzLCBvciB1bmV4cGVjdGVkIGJlaGF2aW9yLiBIb3dldmVyLCBhZnRlciByZXZpZXdpbmcgdGhlIGNvZGUsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBwaHlfcGFja2FnZV9qb2luYCBmdW5jdGlvbiwgaXQmIzM5O3MgY2xlYXIgdGhhdCB0aGUgYWxsb2NhdGlvbiBoYXBwZW5zIHZpYSBga3phbGxvY2AuIFRoaXMgaXMgZ29vZC4gQSBga3phbGxvY2AgZ3VhcmFudGVlcyB0aGF0IGFsbCBmaWVsZHMgd2l0aGluIGBwdHBfcGluX2Rlc2NgIGFyZSB6ZXJvZWQgb3V0IGJlZm9yZSBiZWluZyBleHBvc2VkLiBUaGVyZWZvcmUsIG15IGltbWVkaWF0ZSBjb25jZXJuIGFib3V0IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGFsbGV2aWF0ZWQuIFRoZSByaXNrIGhlcmUgc2VlbXMgbWluaW1hbC4gSSBub3cga25vdyBJIG5lZWQgdG8gbW92ZSBvbiBhbmQgaW52ZXN0aWdhdGUgYSBzZXBhcmF0ZSBjb25jZXJuLiBJIG5lZWQgdG8gbm93IGNoZWNrIHRoZSBgZHA4MzY0MF9ncGlvX2RlZmF1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTY6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHA4MzY0MF9ncGlvX2RlZmF1bHRzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jPTE3ND1NT0RVTEVfUEFSTV9ERVNDKGdwaW9fdGFiLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTc2LVxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYzoxNzc6c3RhdGljIHZvaWQgZHA4MzY0MF9ncGlvX2RlZmF1bHRzKHN0cnVjdCBwdHBfcGluX2Rlc2MgKnBkKVxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYy0xNzgte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM9OTUxPXN0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfaW5pdChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2spXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYy05NzQtXHQvKiBJbml0aWFsaXplIHRoZSBydW50aW1lIHBpbiBjb25maWd1cmF0aW9uIGZyb20gZ3Bpb190YWIuICovXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jOjk3NTpcdGRwODM2NDBfZ3Bpb19kZWZhdWx0cyhjbG9jay1cdTAwM2VjYXBzLnBpbl9jb25maWcpO1xuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYy05NzYtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNjo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzM1OAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYGRwODM2NDBfZ3Bpb19kZWZhdWx0c2AgaW1wbGVtZW50YXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGZ1bmN0aW9uIHNldHMgdXAgdGhlIEdQSU8gcGlucyBmb3IgdGhpcyBzcGVjaWZpYyBFdGhlcm5ldCBQSFkuIEl0JiMzOTtzIGNydWNpYWwgZm9yIGNvbmZpZ3VyaW5nIHRoZSBoYXJkd2FyZSBhbmQgZW5zdXJpbmcgcHJvcGVyIGNvbW11bmljYXRpb24sIHNvIEkgd2FudCB0byBnZXQgdGhpcyByaWdodC4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBjb2RlJiMzOTtzIGRvaW5nLiBJJiMzOTtsbCBmb2N1cyBvbiB0aGUgc3BlY2lmaWMgcmVnaXN0ZXIgdmFsdWVzIGFuZCBwaW4gY29uZmlndXJhdGlvbnMgdG8gc2VlIGhvdyB0aGUgc29mdHdhcmUgaXMgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgaGFyZHdhcmUuIFVuZGVyc3RhbmRpbmcgdGhlIGRlZmF1bHQgc2V0dXAgaXMgYWx3YXlzIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgY3VzdG9taXphdGlvbiBhbmQgZGVidWdnaW5nIGxhdGVyIG9uLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgaGludHMgb24gY2xvY2sgc2V0dGluZ3MsIGludGVycnVwdCBhc3NpZ25tZW50cywgb3Igb3RoZXIgY3J1Y2lhbCBpbml0aWFsaXphdGlvbnMuIEkmIzM5O20gZXNzZW50aWFsbHkgcmV2ZXJzZS1lbmdpbmVlcmluZyB0aGUgaW50ZW5kZWQgaGFyZHdhcmUgY29uZmlndXJhdGlvbiB0aHJvdWdoIHRoZSBzb2Z0d2FyZSYjMzk7cyBpbml0aWFsIHN0YXRlIGRlZmluaXRpb24uIEhvcGVmdWxseSwgaXQmIzM5O3Mgd2VsbC1jb21tZW50ZWQ7IHRoYXQgd291bGQgYmUgYSBib251cyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTY6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTc3LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNzc6XHRzdGF0aWMgdm9pZCBkcDgzNjQwX2dwaW9fZGVmYXVsdHMoc3RydWN0IHB0cF9waW5fZGVzYyAqcGQpXG4gMTc4Olx0e1xuIDE3OTpcdFx0aW50IGksIGluZGV4O1xuIDE4MDpcdFxuIDE4MTpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgRFA4MzY0MF9OX1BJTlM7IGkmIzQzOyYjNDM7KSB7XG4gMTgyOlx0XHRcdHNucHJpbnRmKHBkW2ldLm5hbWUsIHNpemVvZihwZFtpXS5uYW1lKSwgXCYjMzQ7R1BJTyVkXCYjMzQ7LCAxICYjNDM7IGkpO1xuIDE4MzpcdFx0XHRwZFtpXS5pbmRleCA9IGk7XG4gMTg0Olx0XHR9XG4gMTg1Olx0XG4gMTg2Olx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBHUElPX1RBQkxFX1NJWkU7IGkmIzQzOyYjNDM7KSB7XG4gMTg3Olx0XHRcdGlmIChncGlvX3RhYltpXSBcdTAwM2MgMSB8fCBncGlvX3RhYltpXSBcdTAwM2UgRFA4MzY0MF9OX1BJTlMpIHtcbiAxODg6XHRcdFx0XHRwcl9lcnIoXCYjMzQ7Z3Bpb190YWJbJWRdPSVodSBvdXQgb2YgcmFuZ2VcJiMzNDssIGksIGdwaW9fdGFiW2ldKTtcbiAxODk6XHRcdFx0XHRyZXR1cm47XG4gMTkwOlx0XHRcdH1cbiAxOTE6XHRcdH1cbiAxOTI6XHRcbiAxOTM6XHRcdGluZGV4ID0gZ3Bpb190YWJbQ0FMSUJSQVRFX0dQSU9dIC0gMTtcbiAxOTQ6XHRcdHBkW2luZGV4XS5mdW5jID0gUFRQX1BGX1BIWVNZTkM7XG4gMTk1Olx0XHRwZFtpbmRleF0uY2hhbiA9IDA7XG4gMTk2Olx0XG4gMTk3Olx0XHRpbmRleCA9IGdwaW9fdGFiW1BFUk9VVF9HUElPXSAtIDE7XG4gMTk4Olx0XHRwZFtpbmRleF0uZnVuYyA9IFBUUF9QRl9QRVJPVVQ7XG4gMTk5Olx0XHRwZFtpbmRleF0uY2hhbiA9IDA7XG4gMjAwOlx0XG4gMjAxOlx0XHRmb3IgKGkgPSBFWFRUUzBfR1BJTzsgaSBcdTAwM2MgR1BJT19UQUJMRV9TSVpFOyBpJiM0MzsmIzQzOykge1xuIDIwMjpcdFx0XHRpbmRleCA9IGdwaW9fdGFiW2ldIC0gMTtcbiAyMDM6XHRcdFx0cGRbaW5kZXhdLmZ1bmMgPSBQVFBfUEZfRVhUVFM7XG4gMjA0Olx0XHRcdHBkW2luZGV4XS5jaGFuID0gaSAtIEVYVFRTMF9HUElPO1xuIDIwNTpcdFx0fVxuIDIwNjpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ny8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTY6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQxMTkKCQkJCQkJCW91dHB1dDogMTc1CgkJCQkJCQl0aG91Z2h0czogMTM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBIWSBDbG9jayBNYW5hZ2VtZW50IFJlZmFjdG9yaW5nKioKCk9rYXksIHNvIEkmIzM5O3ZlIHJldmlld2VkIHRoaXMgcGF0Y2gsIGFuZCBoZXJlJiMzOTtzIG15IHRha2UuIEluaXRpYWxseSwgdGhlIGBwZGAgYXJyYXkgaXMgcG9wdWxhdGVkIHVzaW5nIGBzbnByaW50ZmAgdG8gc2V0IHVwIHNvbWUgZmllbGRzLiBCZWNhdXNlIGBremFsbG9jYCBpcyB1c2VkIGluIGBwaHlfcGFja2FnZV9qb2luYCwgdGhlIGVudGlyZSBhcnJheSBnZXRzIHplcm8taW5pdGlhbGl6ZWQuIFRoYXQgbWVhbnMgYW55IHBhZGRpbmcgb3IgZmllbGRzIHRoYXQgYXJlbiYjMzk7dCBzcGVjaWZpY2FsbHkgb3ZlcndyaXR0ZW4gYnkgYHNucHJpbnRmYCB3aWxsIGJlIHNhZmVseSB6ZXJvLiBUaGlzIGVsaW1pbmF0ZXMgYW55IGltbWVkaWF0ZSBjb25jZXJucyBhYm91dCB1bmluaXRpYWxpemVkIG1lbW9yeSBwb3RlbnRpYWxseSBsZWFraW5nIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbiwgd2hpY2ggaXMgYWx3YXlzIGEgY3JpdGljYWwgcG9pbnQgdG8gY29uc2lkZXIuCgpUaGUgY29yZSBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGJlIHJlZmFjdG9yaW5nIHRoZSBQSFkgY2xvY2sgbWFuYWdlbWVudC4gVGhlIGNvZGUgc2hpZnRzIGZyb20gdXNpbmcgYSBjdXN0b20gZ2xvYmFsIGxpc3QgdG8gbm93IGxldmVyYWdlIGBwaHlfcGFja2FnZV9qb2luYC4gVGhpcyBpcyBhIHByZXR0eSBzaWduaWZpY2FudCBhcmNoaXRlY3R1cmFsIGNoYW5nZSwgYW5kIGZyb20gd2hhdCBJIGNhbiB0ZWxsLCBpdCYjMzk7cyBhZGRyZXNzaW5nIHNvbWUgbmFzdHkgbGlmZWN5Y2xlIGFuZCBsb2NraW5nIGlzc3Vlcy4gSSBzdXNwZWN0IHdlJiMzOTtyZSBsb29raW5nIGF0IHRoaW5ncyBsaWtlIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvcyBvciBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzLCBhbGwgb2Ygd2hpY2ggS0FTQU4gd291bGQgYmUgaW52YWx1YWJsZSBpbiBjYXRjaGluZy4gVGhlIGdvb2QgbmV3cyBpcywgSSBkb24mIzM5O3Qgc2VlIGFueSBldmlkZW5jZSBvZiAqbmV3KiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMgYmVpbmcgaW50cm9kdWNlZCBieSB0aGlzIGNoYW5nZS4gSXQgc2VlbXMgbGlrZSB0aGUgcmVmYWN0b3JpbmcgaXMgc291bmQgaW4gdGhhdCByZWdhcmQuCgpHaXZlbiBhbGwgb2YgdGhpcywgSSB0aGluayB3ZSBjYW4gc2FmZWx5IHNldCBgTmVlZHNLTVNBTj1mYWxzZWAgZm9yIHRoaXMgcGF0Y2guIFRoZSBleGlzdGluZyBLQVNBTiBjb3ZlcmFnZSBpcyBsaWtlbHkgc3VmZmljaWVudCB0byBtb25pdG9yIHRoaXMsIGFuZCB0aGlzIGNoYW5nZSBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyBpbW1lZGlhdGUgbmVlZHMgaW4gdGhpcyByZWdhcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE2OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyB0aGUgZHA4MzY0MCBQSFkgZHJpdmVyIHRvIHVzZSB0aGUgc3RhbmRhcmQgYHBoeV9wYWNrYWdlX2pvaW5gIEFQSSBmb3IgbWFuYWdpbmcgc2hhcmVkIGNsb2NrIHN0cnVjdHVyZXMsIHJlcGxhY2luZyBhIGN1c3RvbSBnbG9iYWwgbGlzdCBhbmQgbWFudWFsIGFsbG9jYXRpb25zLiBUaGUgc2hhcmVkIHN0cnVjdHVyZSBgZHA4MzY0MF9jbG9ja2AgKGFuZCBpdHMgZW1iZWRkZWQgYHBpbl9jb25maWdgIGFycmF5KSBpcyBhbGxvY2F0ZWQgdmlhIGBremFsbG9jYCBpbnNpZGUgYHBoeV9wYWNrYWdlX2pvaW5gLCBlbnN1cmluZyBhbGwgZmllbGRzIGFuZCBwYWRkaW5nIGFyZSBmdWxseSB6ZXJvLWluaXRpYWxpemVkLiBUaGVyZSBhcmUgbm8gbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGluZm8tbGVha3MgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoLiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBpbnZvbHZlIG9iamVjdCBsaWZlY3ljbGUgaXNzdWVzIChsaWtlIHVzZS1hZnRlci1mcmVlIG9yIG1lbW9yeSBsZWFrcykgb3IgbG9ja2luZyBpc3N1ZXMsIHdoaWNoIGFyZSBhbHJlYWR5IGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBMT0NLREVQLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSBkcDgzNjQwIFBIWSBkcml2ZXIgdG8gdXNlIHRoZSBzdGFuZGFyZCBgcGh5X3BhY2thZ2Vfam9pbmAgQVBJIGZvciBtYW5hZ2luZyBzaGFyZWQgY2xvY2sgc3RydWN0dXJlcywgcmVwbGFjaW5nIGEgY3VzdG9tIGdsb2JhbCBsaXN0IGFuZCBtYW51YWwgYWxsb2NhdGlvbnMuIFRoZSBzaGFyZWQgc3RydWN0dXJlIGBkcDgzNjQwX2Nsb2NrYCAoYW5kIGl0cyBlbWJlZGRlZCBgcGluX2NvbmZpZ2AgYXJyYXkpIGlzIGFsbG9jYXRlZCB2aWEgYGt6YWxsb2NgIGluc2lkZSBgcGh5X3BhY2thZ2Vfam9pbmAsIGVuc3VyaW5nIGFsbCBmaWVsZHMgYW5kIHBhZGRpbmcgYXJlIGZ1bGx5IHplcm8taW5pdGlhbGl6ZWQuIFRoZXJlIGFyZSBubyBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2guIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGludm9sdmUgb2JqZWN0IGxpZmVjeWNsZSBpc3N1ZXMgKGxpa2UgdXNlLWFmdGVyLWZyZWUgb3IgbWVtb3J5IGxlYWtzKSBvciBsb2NraW5nIGlzc3Vlcywgd2hpY2ggYXJlIGFscmVhZHkgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIExPQ0tERVAuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU0OjAwLjU5NDA4NDI2NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzOTU4MTI4MDAzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEUDgzNjQwX1BIWVwiLFxuICAgIFwiTkVUV09SS19QSFlfVElNRVNUQU1QSU5HXCIsXG4gICAgXCJQSFlMSUJcIixcbiAgICBcIlBUUF8xNTg4X0NMT0NLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZHA4MzY0MF9wcm9iZVwiLFxuICAgIFwiZHA4MzY0MF9yZW1vdmVcIixcbiAgICBcInBoeV9wYWNrYWdlX2xvY2tcIixcbiAgICBcInBoeV9wYWNrYWdlX3VubG9ja1wiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSBkcDgzNjQwIFBIWSBkcml2ZXIgdG8gdXNlIHRoZSBzdGFuZGFyZCBgcGh5X3BhY2thZ2Vfam9pbmAgQVBJIGZvciBtYW5hZ2luZyBzaGFyZWQgY2xvY2sgc3RydWN0dXJlcywgcmVwbGFjaW5nIGEgY3VzdG9tIGdsb2JhbCBsaXN0IGFuZCBtYW51YWwgYWxsb2NhdGlvbnMuIFRoZSBzaGFyZWQgc3RydWN0dXJlIGBkcDgzNjQwX2Nsb2NrYCAoYW5kIGl0cyBlbWJlZGRlZCBgcGluX2NvbmZpZ2AgYXJyYXkpIGlzIGFsbG9jYXRlZCB2aWEgYGt6YWxsb2NgIGluc2lkZSBgcGh5X3BhY2thZ2Vfam9pbmAsIGVuc3VyaW5nIGFsbCBmaWVsZHMgYW5kIHBhZGRpbmcgYXJlIGZ1bGx5IHplcm8taW5pdGlhbGl6ZWQuIFRoZXJlIGFyZSBubyBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2guIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGludm9sdmUgb2JqZWN0IGxpZmVjeWNsZSBpc3N1ZXMgKGxpa2UgdXNlLWFmdGVyLWZyZWUgb3IgbWVtb3J5IGxlYWtzKSBvciBsb2NraW5nIGlzc3Vlcywgd2hpY2ggYXJlIGFscmVhZHkgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIExPQ0tERVAuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSBEUDgzNjQwIFBIWSBkcml2ZXIgdG8gdXNlIHRoZSBzdGFuZGFyZCBwaHlfcGFja2FnZSBBUEkgZm9yIHNoYXJlZCBjbG9jayBpbml0aWFsaXphdGlvbiwgcmVwbGFjaW5nIGEgY3VzdG9tIGdsb2JhbCBsaXN0LiBJdCBhbHNvIGludHJvZHVjZXMgcGh5X3BhY2thZ2VfbG9jayBhbmQgcGh5X3BhY2thZ2VfdW5sb2NrIHRvIHNlcmlhbGl6ZSBhY2Nlc3MgdG8gcGFja2FnZS1wcml2YXRlIGRhdGEuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IHRoZSBwcm9iZSBhbmQgcmVtb3ZlIHBhdGhzIG9mIHRoZSBQSFkgZHJpdmVyLCB3aGljaCBjYW4gYmUgcmVhY2hlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGJ5IGVtdWxhdGluZyBhbiBNRElPIGJ1cyBvciBhIFVTQiBuZXR3b3JrIGRldmljZSB3aXRoIHRoZSBzcGVjaWZpYyBQSFkgSUQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU0OjAwLjU5NDA4ODg4NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTExNzAyODQwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDE1YjcwZGRhYTdmM2RmZjM2YmQ1MWU3ZTJjNjhlZWMwODUxOWEyM2ZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMTAgMTY6NTM6NTkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYyBiL2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmNcXG5pbmRleCA5ODQ3MmFiZGQzOTIwLi42ODY3ZTdjNmYzYjdlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmNcXG4rKysgYi9kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jXFxuQEAgLTIxLDYgKzIxLDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaFxcdTAwM2VcXG4gXFxuICNpbmNsdWRlIFxcXCJkcDgzNjQwX3JlZy5oXFxcIlxcbisjaW5jbHVkZSBcXFwicGh5bGliLmhcXFwiXFxuIFxcbiAjZGVmaW5lIERQODM2NDBfUEhZX0lEXFx0MHgyMDAwNWNlMVxcbiAjZGVmaW5lIFBBR0VTRUxcXHRcXHQweDEzXFxuQEAgLTEyOCwxMCArMTI5LDYgQEAgc3RydWN0IGRwODM2NDBfcHJpdmF0ZSB7XFxuIH07XFxuIFxcbiBzdHJ1Y3QgZHA4MzY0MF9jbG9jayB7XFxuLVxcdC8qIGtlZXBzIHRoZSBpbnN0YW5jZSBpbiB0aGUgJ3BoeXRlcl9jbG9ja3MnIGxpc3QgKi9cXG4tXFx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xcbi1cXHQvKiB3ZSBjcmVhdGUgb25lIGNsb2NrIGluc3RhbmNlIHBlciBNSUkgYnVzICovXFxuLVxcdHN0cnVjdCBtaWlfYnVzICpidXM7XFxuIFxcdC8qIHByb3RlY3RzIGV4dGVuZGVkIHJlZ2lzdGVycyBmcm9tIGNvbmN1cnJlbnQgYWNjZXNzICovXFxuIFxcdHN0cnVjdCBtdXRleCBleHRyZWdfbG9jaztcXG4gXFx0LyogcmVtZW1iZXJzIHdoaWNoIHBhZ2Ugd2FzIGxhc3Qgc2VsZWN0ZWQgKi9cXG5AQCAtMTQ2LDYgKzE0Myw4IEBAIHN0cnVjdCBkcDgzNjQwX2Nsb2NrIHtcXG4gXFx0c3RydWN0IGxpc3RfaGVhZCBwaHlsaXN0O1xcbiBcXHQvKiByZWZlcmVuY2UgdG8gb3VyIFBUUCBoYXJkd2FyZSBjbG9jayAqL1xcbiBcXHRzdHJ1Y3QgcHRwX2Nsb2NrICpwdHBfY2xvY2s7XFxuK1xcdC8qIHByb3RlY3RlZCBieSB0aGUgUFRQIGNvcmUgcGluIGNvbmZpZ3VyYXRpb24gbG9jayAqL1xcbitcXHRzdHJ1Y3QgcHRwX3Bpbl9kZXNjIHBpbl9jb25maWdbRFA4MzY0MF9OX1BJTlNdO1xcbiB9O1xcbiBcXG4gLyogZ2xvYmFscyAqL1xcbkBAIC0yMDYsMTAgKzIwNSw2IEBAIHN0YXRpYyB2b2lkIGRwODM2NDBfZ3Bpb19kZWZhdWx0cyhzdHJ1Y3QgcHRwX3Bpbl9kZXNjICpwZClcXG4gXFx0fVxcbiB9XFxuIFxcbi0vKiBhIGxpc3Qgb2YgY2xvY2tzIGFuZCBhIG11dGV4IHRvIHByb3RlY3QgaXQgKi9cXG4tc3RhdGljIExJU1RfSEVBRChwaHl0ZXJfY2xvY2tzKTtcXG4tc3RhdGljIERFRklORV9NVVRFWChwaHl0ZXJfY2xvY2tzX2xvY2spO1xcbi1cXG4gc3RhdGljIHZvaWQgcnhfdGltZXN0YW1wX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcXG4gXFxuIC8qIGV4dGVuZGVkIHJlZ2lzdGVyIGFjY2VzcyBmdW5jdGlvbnMgKi9cXG5AQCAtOTUzLDEzICs5NDgsMTIgQEAgc3RhdGljIHZvaWQgZGVjb2RlX3N0YXR1c19mcmFtZShzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICpkcDgzNjQwLFxcbiBcXHR9XFxuIH1cXG4gXFxuLXN0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfaW5pdChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2ssIHN0cnVjdCBtaWlfYnVzICpidXMpXFxuK3N0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfaW5pdChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2spXFxuIHtcXG4tXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNmNsb2NrLVxcdTAwM2VsaXN0KTtcXG4tXFx0Y2xvY2stXFx1MDAzZWJ1cyA9IGJ1cztcXG4gXFx0bXV0ZXhfaW5pdChcXHUwMDI2Y2xvY2stXFx1MDAzZWV4dHJlZ19sb2NrKTtcXG4gXFx0bXV0ZXhfaW5pdChcXHUwMDI2Y2xvY2stXFx1MDAzZWNsb2NrX2xvY2spO1xcbiBcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2Y2xvY2stXFx1MDAzZXBoeWxpc3QpO1xcbitcXHRjbG9jay1cXHUwMDNlY2Fwcy5waW5fY29uZmlnID0gY2xvY2stXFx1MDAzZXBpbl9jb25maWc7XFxuIFxcdGNsb2NrLVxcdTAwM2VjYXBzLm93bmVyID0gVEhJU19NT0RVTEU7XFxuIFxcdHNwcmludGYoY2xvY2stXFx1MDAzZWNhcHMubmFtZSwgXFxcImRwODM2NDAgdGltZXJcXFwiKTtcXG4gXFx0Y2xvY2stXFx1MDAzZWNhcHMubWF4X2FkalxcdD0gMTk1MzEyNDtcXG5AQCAtOTc3LDE0ICs5NzEsOCBAQCBzdGF0aWMgdm9pZCBkcDgzNjQwX2Nsb2NrX2luaXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrLCBzdHJ1Y3QgbWlpX2J1cyAqYnVzKVxcbiBcXHRjbG9jay1cXHUwMDNlY2Fwcy5zZXR0aW1lNjRcXHQ9IHB0cF9kcDgzNjQwX3NldHRpbWU7XFxuIFxcdGNsb2NrLVxcdTAwM2VjYXBzLmVuYWJsZVxcdD0gcHRwX2RwODM2NDBfZW5hYmxlO1xcbiBcXHRjbG9jay1cXHUwMDNlY2Fwcy52ZXJpZnlcXHQ9IHB0cF9kcDgzNjQwX3ZlcmlmeTtcXG4tXFx0LypcXG4tXFx0ICogQ29udmVydCB0aGUgbW9kdWxlIHBhcmFtIGRlZmF1bHRzIGludG8gYSBkeW5hbWljIHBpbiBjb25maWd1cmF0aW9uLlxcbi1cXHQgKi9cXG4rXFx0LyogSW5pdGlhbGl6ZSB0aGUgcnVudGltZSBwaW4gY29uZmlndXJhdGlvbiBmcm9tIGdwaW9fdGFiLiAqL1xcbiBcXHRkcDgzNjQwX2dwaW9fZGVmYXVsdHMoY2xvY2stXFx1MDAzZWNhcHMucGluX2NvbmZpZyk7XFxuLVxcdC8qXFxuLVxcdCAqIEdldCBhIHJlZmVyZW5jZSB0byB0aGlzIGJ1cyBpbnN0YW5jZS5cXG4tXFx0ICovXFxuLVxcdGdldF9kZXZpY2UoXFx1MDAyNmJ1cy1cXHUwMDNlZGV2KTtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBjaG9vc2VfdGhpc19waHkoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrLFxcbkBAIC05OTksNTggKzk4Nyw2IEBAIHN0YXRpYyBpbnQgY2hvb3NlX3RoaXNfcGh5KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jayxcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuLXN0YXRpYyBzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqZHA4MzY0MF9jbG9ja19nZXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrKVxcbi17XFxuLVxcdGlmIChjbG9jaylcXG4tXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2Y2xvY2stXFx1MDAzZWNsb2NrX2xvY2spO1xcbi1cXHRyZXR1cm4gY2xvY2s7XFxuLX1cXG4tXFxuLS8qXFxuLSAqIExvb2sgdXAgYW5kIGxvY2sgYSBjbG9jayBieSBidXMgaW5zdGFuY2UuXFxuLSAqIElmIHRoZXJlIGlzIG5vIGNsb2NrIGZvciB0aGlzIGJ1cywgdGhlbiBjcmVhdGUgaXQgZmlyc3QuXFxuLSAqL1xcbi1zdGF0aWMgc3RydWN0IGRwODM2NDBfY2xvY2sgKmRwODM2NDBfY2xvY2tfZ2V0X2J1cyhzdHJ1Y3QgbWlpX2J1cyAqYnVzKVxcbi17XFxuLVxcdHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jayA9IE5VTEwsICp0bXA7XFxuLVxcdHN0cnVjdCBsaXN0X2hlYWQgKnRoaXM7XFxuLVxcbi1cXHRtdXRleF9sb2NrKFxcdTAwMjZwaHl0ZXJfY2xvY2tzX2xvY2spO1xcbi1cXG4tXFx0bGlzdF9mb3JfZWFjaCh0aGlzLCBcXHUwMDI2cGh5dGVyX2Nsb2Nrcykge1xcbi1cXHRcXHR0bXAgPSBsaXN0X2VudHJ5KHRoaXMsIHN0cnVjdCBkcDgzNjQwX2Nsb2NrLCBsaXN0KTtcXG4tXFx0XFx0aWYgKHRtcC1cXHUwMDNlYnVzID09IGJ1cykge1xcbi1cXHRcXHRcXHRjbG9jayA9IHRtcDtcXG4tXFx0XFx0XFx0YnJlYWs7XFxuLVxcdFxcdH1cXG4tXFx0fVxcbi1cXHRpZiAoY2xvY2spXFxuLVxcdFxcdGdvdG8gb3V0O1xcbi1cXG4tXFx0Y2xvY2sgPSBremFsbG9jX29iaihzdHJ1Y3QgZHA4MzY0MF9jbG9jayk7XFxuLVxcdGlmICghY2xvY2spXFxuLVxcdFxcdGdvdG8gb3V0O1xcbi1cXG4tXFx0Y2xvY2stXFx1MDAzZWNhcHMucGluX2NvbmZpZyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgcHRwX3Bpbl9kZXNjLFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgICBEUDgzNjQwX05fUElOUyk7XFxuLVxcdGlmICghY2xvY2stXFx1MDAzZWNhcHMucGluX2NvbmZpZykge1xcbi1cXHRcXHRrZnJlZShjbG9jayk7XFxuLVxcdFxcdGNsb2NrID0gTlVMTDtcXG4tXFx0XFx0Z290byBvdXQ7XFxuLVxcdH1cXG4tXFx0ZHA4MzY0MF9jbG9ja19pbml0KGNsb2NrLCBidXMpO1xcbi1cXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZjbG9jay1cXHUwMDNlbGlzdCwgXFx1MDAyNnBoeXRlcl9jbG9ja3MpO1xcbi1vdXQ6XFxuLVxcdG11dGV4X3VubG9jayhcXHUwMDI2cGh5dGVyX2Nsb2Nrc19sb2NrKTtcXG4tXFxuLVxcdHJldHVybiBkcDgzNjQwX2Nsb2NrX2dldChjbG9jayk7XFxuLX1cXG4tXFxuLXN0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfcHV0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaylcXG4te1xcbi1cXHRtdXRleF91bmxvY2soXFx1MDAyNmNsb2NrLVxcdTAwM2VjbG9ja19sb2NrKTtcXG4tfVxcbi1cXG4gc3RhdGljIGludCBkcDgzNjQwX3NvZnRfcmVzZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4ge1xcbiBcXHRpbnQgcmV0O1xcbkBAIC0xNDAwLDIwICsxMzM2LDMxIEBAIHN0YXRpYyBpbnQgZHA4MzY0MF90c19pbmZvKHN0cnVjdCBtaWlfdGltZXN0YW1wZXIgKm1paV90cyxcXG4gXFxuIHN0YXRpYyBpbnQgZHA4MzY0MF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiB7XFxuLVxcdHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaztcXG4gXFx0c3RydWN0IGRwODM2NDBfcHJpdmF0ZSAqZHA4MzY0MDtcXG4tXFx0aW50IGVyciA9IC1FTk9NRU0sIGk7XFxuK1xcdHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaztcXG4rXFx0aW50IGVyciwgaTtcXG4gXFxuIFxcdGlmIChwaHlkZXYtXFx1MDAzZW1kaW8uYWRkciA9PSBCUk9BRENBU1RfQUREUilcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcbi1cXHRjbG9jayA9IGRwODM2NDBfY2xvY2tfZ2V0X2J1cyhwaHlkZXYtXFx1MDAzZW1kaW8uYnVzKTtcXG4tXFx0aWYgKCFjbG9jaylcXG4tXFx0XFx0Z290byBub19jbG9jaztcXG4rXFx0ZXJyID0gcGh5X3BhY2thZ2Vfam9pbihwaHlkZXYsIEJST0FEQ0FTVF9BRERSLCBzaXplb2YoKmNsb2NrKSk7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiBlcnI7XFxuK1xcbitcXHRjbG9jayA9IHBoeV9wYWNrYWdlX2dldF9wcml2KHBoeWRldik7XFxuK1xcdC8qIEVuc3VyZSBvdGhlciBQSFkgcHJvYmVzIHdhaXQgZm9yIHNoYXJlZCBjbG9jayBpbml0aWFsaXphdGlvbi4gKi9cXG4rXFx0cGh5X3BhY2thZ2VfbG9jayhwaHlkZXYpO1xcbitcXHRpZiAocGh5X3BhY2thZ2VfcHJvYmVfb25jZShwaHlkZXYpKVxcbitcXHRcXHRkcDgzNjQwX2Nsb2NrX2luaXQoY2xvY2spO1xcbitcXHRwaHlfcGFja2FnZV91bmxvY2socGh5ZGV2KTtcXG4rXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNmNsb2NrLVxcdTAwM2VjbG9ja19sb2NrKTtcXG4gXFxuIFxcdGRwODM2NDAgPSBremFsbG9jX29iaihzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlKTtcXG4tXFx0aWYgKCFkcDgzNjQwKVxcbitcXHRpZiAoIWRwODM2NDApIHtcXG4rXFx0XFx0ZXJyID0gLUVOT01FTTtcXG4gXFx0XFx0Z290byBub19tZW1vcnk7XFxuK1xcdH1cXG4gXFxuIFxcdGRwODM2NDAtXFx1MDAzZXBoeWRldiA9IHBoeWRldjtcXG4gXFx0ZHA4MzY0MC1cXHUwMDNlbWlpX3RzLnJ4dHN0YW1wID0gZHA4MzY0MF9yeHRzdGFtcDtcXG5AQCAtMTQ1MCwxNSArMTM5NywyMCBAQCBzdGF0aWMgaW50IGRwODM2NDBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gXFx0fSBlbHNlXFxuIFxcdFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNmRwODM2NDAtXFx1MDAzZWxpc3QsIFxcdTAwMjZjbG9jay1cXHUwMDNlcGh5bGlzdCk7XFxuIFxcbi1cXHRkcDgzNjQwX2Nsb2NrX3B1dChjbG9jayk7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2Y2xvY2stXFx1MDAzZWNsb2NrX2xvY2spO1xcbitcXG4gXFx0cmV0dXJuIDA7XFxuIFxcbiBub19yZWdpc3RlcjpcXG4gXFx0Y2xvY2stXFx1MDAzZWNob3NlbiA9IE5VTEw7XFxuK1xcdGNsb2NrLVxcdTAwM2VwdHBfY2xvY2sgPSBOVUxMO1xcbitcXHRwaHlkZXYtXFx1MDAzZWRlZmF1bHRfdGltZXN0YW1wID0gZmFsc2U7XFxuK1xcdHBoeWRldi1cXHUwMDNlbWlpX3RzID0gTlVMTDtcXG4rXFx0cGh5ZGV2LVxcdTAwM2Vwcml2ID0gTlVMTDtcXG4gXFx0a2ZyZWUoZHA4MzY0MCk7XFxuIG5vX21lbW9yeTpcXG4tXFx0ZHA4MzY0MF9jbG9ja19wdXQoY2xvY2spO1xcbi1ub19jbG9jazpcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZjbG9jay1cXHUwMDNlY2xvY2tfbG9jayk7XFxuK1xcdHBoeV9wYWNrYWdlX2xlYXZlKHBoeWRldik7XFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG4gXFxuQEAgLTE0NjcsNyArMTQxOSw2IEBAIHN0YXRpYyB2b2lkIGRwODM2NDBfcmVtb3ZlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuIFxcdHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaztcXG4gXFx0c3RydWN0IGxpc3RfaGVhZCAqdGhpcywgKm5leHQ7XFxuIFxcdHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUgKnRtcCwgKmRwODM2NDAgPSBwaHlkZXYtXFx1MDAzZXByaXY7XFxuLVxcdGJvb2wgcmVtb3ZlX2Nsb2NrID0gZmFsc2U7XFxuIFxcbiBcXHRpZiAocGh5ZGV2LVxcdTAwM2VtZGlvLmFkZHIgPT0gQlJPQURDQVNUX0FERFIpXFxuIFxcdFxcdHJldHVybjtcXG5AQCAtMTQ4MCw3ICsxNDMxLDggQEAgc3RhdGljIHZvaWQgZHA4MzY0MF9yZW1vdmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gXFx0c2tiX3F1ZXVlX3B1cmdlKFxcdTAwMjZkcDgzNjQwLVxcdTAwM2VyeF9xdWV1ZSk7XFxuIFxcdHNrYl9xdWV1ZV9wdXJnZShcXHUwMDI2ZHA4MzY0MC1cXHUwMDNldHhfcXVldWUpO1xcbiBcXG4tXFx0Y2xvY2sgPSBkcDgzNjQwX2Nsb2NrX2dldChkcDgzNjQwLVxcdTAwM2VjbG9jayk7XFxuK1xcdGNsb2NrID0gZHA4MzY0MC1cXHUwMDNlY2xvY2s7XFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNmNsb2NrLVxcdTAwM2VjbG9ja19sb2NrKTtcXG4gXFxuIFxcdGlmIChkcDgzNjQwID09IGNsb2NrLVxcdTAwM2VjaG9zZW4pIHtcXG4gXFx0XFx0cHRwX2Nsb2NrX3VucmVnaXN0ZXIoY2xvY2stXFx1MDAzZXB0cF9jbG9jayk7XFxuQEAgLTE0OTUsMjMgKzE0NDcsMTAgQEAgc3RhdGljIHZvaWQgZHA4MzY0MF9yZW1vdmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gXFx0XFx0fVxcbiBcXHR9XFxuIFxcbi1cXHRpZiAoIWNsb2NrLVxcdTAwM2VjaG9zZW4gXFx1MDAyNlxcdTAwMjYgbGlzdF9lbXB0eShcXHUwMDI2Y2xvY2stXFx1MDAzZXBoeWxpc3QpKVxcbi1cXHRcXHRyZW1vdmVfY2xvY2sgPSB0cnVlO1xcbi1cXG4tXFx0ZHA4MzY0MF9jbG9ja19wdXQoY2xvY2spO1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNmNsb2NrLVxcdTAwM2VjbG9ja19sb2NrKTtcXG4gXFx0a2ZyZWUoZHA4MzY0MCk7XFxuIFxcbi1cXHRpZiAocmVtb3ZlX2Nsb2NrKSB7XFxuLVxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnBoeXRlcl9jbG9ja3NfbG9jayk7XFxuLVxcdFxcdGxpc3RfZGVsKFxcdTAwMjZjbG9jay1cXHUwMDNlbGlzdCk7XFxuLVxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2cGh5dGVyX2Nsb2Nrc19sb2NrKTtcXG4tXFxuLVxcdFxcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNmNsb2NrLVxcdTAwM2VleHRyZWdfbG9jayk7XFxuLVxcdFxcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNmNsb2NrLVxcdTAwM2VjbG9ja19sb2NrKTtcXG4tXFx0XFx0cHV0X2RldmljZShcXHUwMDI2Y2xvY2stXFx1MDAzZWJ1cy1cXHUwMDNlZGV2KTtcXG4tXFx0XFx0a2ZyZWUoY2xvY2stXFx1MDAzZWNhcHMucGluX2NvbmZpZyk7XFxuLVxcdFxcdGtmcmVlKGNsb2NrKTtcXG4tXFx0fVxcbitcXHRwaHlfcGFja2FnZV9sZWF2ZShwaHlkZXYpO1xcbiB9XFxuIFxcbiBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZHA4MzY0MF9kcml2ZXJbXSA9IHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuY1xcbmluZGV4IDE2YWU4ZDFjMWY4OWEuLjczNTgwNmM1YmVhODggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmNcXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuY1xcbkBAIC01Miw2ICs1MiwyOSBAQCB2b2lkICpwaHlfcGFja2FnZV9nZXRfcHJpdihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiB9XFxuIEVYUE9SVF9TWU1CT0xfR1BMKHBoeV9wYWNrYWdlX2dldF9wcml2KTtcXG4gXFxuKy8qKlxcbisgKiBwaHlfcGFja2FnZV9sb2NrIC0gYWNxdWlyZSB0aGUgUEhZIHBhY2thZ2UgbG9ja1xcbisgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHRoYXQgaGFzIGpvaW5lZCB0aGUgcGFja2FnZVxcbisgKlxcbisgKiBVc2UgdGhpcyB0byBzZXJpYWxpemUgYWNjZXNzIHRvIHBhY2thZ2UtcHJpdmF0ZSBkYXRhLiBSZWxlYXNlIHRoZSBsb2NrXFxuKyAqIHdpdGggcGh5X3BhY2thZ2VfdW5sb2NrKCkuXFxuKyAqL1xcbit2b2lkIHBoeV9wYWNrYWdlX2xvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4re1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uYnVzLVxcdTAwM2VzaGFyZWRfbG9jayk7XFxuK31cXG4rRVhQT1JUX1NZTUJPTF9HUEwocGh5X3BhY2thZ2VfbG9jayk7XFxuK1xcbisvKipcXG4rICogcGh5X3BhY2thZ2VfdW5sb2NrIC0gcmVsZWFzZSB0aGUgUEhZIHBhY2thZ2UgbG9ja1xcbisgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHRoYXQgaGFzIGpvaW5lZCB0aGUgcGFja2FnZVxcbisgKi9cXG4rdm9pZCBwaHlfcGFja2FnZV91bmxvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4re1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5idXMtXFx1MDAzZXNoYXJlZF9sb2NrKTtcXG4rfVxcbitFWFBPUlRfU1lNQk9MX0dQTChwaHlfcGFja2FnZV91bmxvY2spO1xcbitcXG4gc3RhdGljIGludCBwaHlfcGFja2FnZV9hZGRyZXNzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuIFxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgYWRkcl9vZmZzZXQpXFxuIHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oXFxuaW5kZXggMGZiYTI0NWY5NzQ1OC4uYzZlMjZhYzZiMjhmMCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGliLmhcXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5bGliLmhcXG5AQCAtMTIsNiArMTIsOCBAQCBzdHJ1Y3QgbWlpX2J1cztcXG4gXFxuIHN0cnVjdCBkZXZpY2Vfbm9kZSAqcGh5X3BhY2thZ2VfZ2V0X25vZGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XFxuIHZvaWQgKnBoeV9wYWNrYWdlX2dldF9wcml2KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xcbit2b2lkIHBoeV9wYWNrYWdlX2xvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XFxuK3ZvaWQgcGh5X3BhY2thZ2VfdW5sb2NrKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xcbiBpbnQgX19waHlfcGFja2FnZV9yZWFkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHVuc2lnbmVkIGludCBhZGRyX29mZnNldCxcXG4gXFx0XFx0ICAgICAgIHUzMiByZWdudW0pO1xcbiBpbnQgX19waHlfcGFja2FnZV93cml0ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1bnNpZ25lZCBpbnQgYWRkcl9vZmZzZXQsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHRwL0tjb25maWcgYi9kcml2ZXJzL3B0cC9LY29uZmlnXFxuaW5kZXggYjkzNjQwY2EwOGI3Mi4uZmViNTBmOGNjNDA2YSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3B0cC9LY29uZmlnXFxuKysrIGIvZHJpdmVycy9wdHAvS2NvbmZpZ1xcbkBAIC03OCw2ICs3OCw3IEBAIGNvbmZpZyBEUDgzNjQwX1BIWVxcbiBcXHRkZXBlbmRzIG9uIFBIWUxJQlxcbiBcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLXFxuIFxcdHNlbGVjdCBDUkMzMlxcbitcXHRzZWxlY3QgUEhZX1BBQ0tBR0VcXG4gXFx0aGVscFxcbiBcXHQgIFN1cHBvcnRzIHRoZSBEUDgzNjQwIFBIWVRFUiB3aXRoIElFRUUgMTU4OCBmZWF0dXJlcy5cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU0OjAxLjcxMTc5NTE5OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjEwNjQ3MzkwNjg3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEUDgzNjQwX1BIWVwiLFxuICAgIFwiTkVUV09SS19QSFlfVElNRVNUQU1QSU5HXCIsXG4gICAgXCJQSFlMSUJcIixcbiAgICBcIlBUUF8xNTg4X0NMT0NLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZHA4MzY0MF9wcm9iZVwiLFxuICAgIFwiZHA4MzY0MF9yZW1vdmVcIixcbiAgICBcInBoeV9wYWNrYWdlX2xvY2tcIixcbiAgICBcInBoeV9wYWNrYWdlX3VubG9ja1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyB0aGUgRFA4MzY0MCBQSFkgZHJpdmVyIHRvIHVzZSB0aGUgc3RhbmRhcmQgcGh5X3BhY2thZ2UgQVBJIGZvciBzaGFyZWQgY2xvY2sgaW5pdGlhbGl6YXRpb24sIHJlcGxhY2luZyBhIGN1c3RvbSBnbG9iYWwgbGlzdC4gSXQgYWxzbyBpbnRyb2R1Y2VzIHBoeV9wYWNrYWdlX2xvY2sgYW5kIHBoeV9wYWNrYWdlX3VubG9jayB0byBzZXJpYWxpemUgYWNjZXNzIHRvIHBhY2thZ2UtcHJpdmF0ZSBkYXRhLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCB0aGUgcHJvYmUgYW5kIHJlbW92ZSBwYXRocyBvZiB0aGUgUEhZIGRyaXZlciwgd2hpY2ggY2FuIGJlIHJlYWNoZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBieSBlbXVsYXRpbmcgYW4gTURJTyBidXMgb3IgYSBVU0IgbmV0d29yayBkZXZpY2Ugd2l0aCB0aGUgc3BlY2lmaWMgUEhZIElELlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxNWI3MGRkYWE3ZjNkZmYzNmJkNTFlN2UyYzY4ZWVjMDg1MTlhMjNmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMTAgMTY6NTM6NTkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jIGIvZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuY1xuaW5kZXggOTg0NzJhYmRkMzkyMC4uNjg2N2U3YzZmM2I3ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmNcbkBAIC0yMSw2ICsyMSw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXCJkcDgzNjQwX3JlZy5oXCJcbisjaW5jbHVkZSBcInBoeWxpYi5oXCJcbiBcbiAjZGVmaW5lIERQODM2NDBfUEhZX0lEXHQweDIwMDA1Y2UxXG4gI2RlZmluZSBQQUdFU0VMXHRcdDB4MTNcbkBAIC0xMjgsMTAgKzEyOSw2IEBAIHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUge1xuIH07XG4gXG4gc3RydWN0IGRwODM2NDBfY2xvY2sge1xuLVx0Lyoga2VlcHMgdGhlIGluc3RhbmNlIGluIHRoZSAncGh5dGVyX2Nsb2NrcycgbGlzdCAqL1xuLVx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xuLVx0Lyogd2UgY3JlYXRlIG9uZSBjbG9jayBpbnN0YW5jZSBwZXIgTUlJIGJ1cyAqL1xuLVx0c3RydWN0IG1paV9idXMgKmJ1cztcbiBcdC8qIHByb3RlY3RzIGV4dGVuZGVkIHJlZ2lzdGVycyBmcm9tIGNvbmN1cnJlbnQgYWNjZXNzICovXG4gXHRzdHJ1Y3QgbXV0ZXggZXh0cmVnX2xvY2s7XG4gXHQvKiByZW1lbWJlcnMgd2hpY2ggcGFnZSB3YXMgbGFzdCBzZWxlY3RlZCAqL1xuQEAgLTE0Niw2ICsxNDMsOCBAQCBzdHJ1Y3QgZHA4MzY0MF9jbG9jayB7XG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIHBoeWxpc3Q7XG4gXHQvKiByZWZlcmVuY2UgdG8gb3VyIFBUUCBoYXJkd2FyZSBjbG9jayAqL1xuIFx0c3RydWN0IHB0cF9jbG9jayAqcHRwX2Nsb2NrO1xuK1x0LyogcHJvdGVjdGVkIGJ5IHRoZSBQVFAgY29yZSBwaW4gY29uZmlndXJhdGlvbiBsb2NrICovXG4rXHRzdHJ1Y3QgcHRwX3Bpbl9kZXNjIHBpbl9jb25maWdbRFA4MzY0MF9OX1BJTlNdO1xuIH07XG4gXG4gLyogZ2xvYmFscyAqL1xuQEAgLTIwNiwxMCArMjA1LDYgQEAgc3RhdGljIHZvaWQgZHA4MzY0MF9ncGlvX2RlZmF1bHRzKHN0cnVjdCBwdHBfcGluX2Rlc2MgKnBkKVxuIFx0fVxuIH1cbiBcbi0vKiBhIGxpc3Qgb2YgY2xvY2tzIGFuZCBhIG11dGV4IHRvIHByb3RlY3QgaXQgKi9cbi1zdGF0aWMgTElTVF9IRUFEKHBoeXRlcl9jbG9ja3MpO1xuLXN0YXRpYyBERUZJTkVfTVVURVgocGh5dGVyX2Nsb2Nrc19sb2NrKTtcbi1cbiBzdGF0aWMgdm9pZCByeF90aW1lc3RhbXBfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xuIFxuIC8qIGV4dGVuZGVkIHJlZ2lzdGVyIGFjY2VzcyBmdW5jdGlvbnMgKi9cbkBAIC05NTMsMTMgKzk0OCwxMiBAQCBzdGF0aWMgdm9pZCBkZWNvZGVfc3RhdHVzX2ZyYW1lKHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUgKmRwODM2NDAsXG4gXHR9XG4gfVxuIFxuLXN0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfaW5pdChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2ssIHN0cnVjdCBtaWlfYnVzICpidXMpXG4rc3RhdGljIHZvaWQgZHA4MzY0MF9jbG9ja19pbml0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaylcbiB7XG4tXHRJTklUX0xJU1RfSEVBRChcdTAwMjZjbG9jay1cdTAwM2VsaXN0KTtcbi1cdGNsb2NrLVx1MDAzZWJ1cyA9IGJ1cztcbiBcdG11dGV4X2luaXQoXHUwMDI2Y2xvY2stXHUwMDNlZXh0cmVnX2xvY2spO1xuIFx0bXV0ZXhfaW5pdChcdTAwMjZjbG9jay1cdTAwM2VjbG9ja19sb2NrKTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmNsb2NrLVx1MDAzZXBoeWxpc3QpO1xuK1x0Y2xvY2stXHUwMDNlY2Fwcy5waW5fY29uZmlnID0gY2xvY2stXHUwMDNlcGluX2NvbmZpZztcbiBcdGNsb2NrLVx1MDAzZWNhcHMub3duZXIgPSBUSElTX01PRFVMRTtcbiBcdHNwcmludGYoY2xvY2stXHUwMDNlY2Fwcy5uYW1lLCBcImRwODM2NDAgdGltZXJcIik7XG4gXHRjbG9jay1cdTAwM2VjYXBzLm1heF9hZGpcdD0gMTk1MzEyNDtcbkBAIC05NzcsMTQgKzk3MSw4IEBAIHN0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfaW5pdChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2ssIHN0cnVjdCBtaWlfYnVzICpidXMpXG4gXHRjbG9jay1cdTAwM2VjYXBzLnNldHRpbWU2NFx0PSBwdHBfZHA4MzY0MF9zZXR0aW1lO1xuIFx0Y2xvY2stXHUwMDNlY2Fwcy5lbmFibGVcdD0gcHRwX2RwODM2NDBfZW5hYmxlO1xuIFx0Y2xvY2stXHUwMDNlY2Fwcy52ZXJpZnlcdD0gcHRwX2RwODM2NDBfdmVyaWZ5O1xuLVx0Lypcbi1cdCAqIENvbnZlcnQgdGhlIG1vZHVsZSBwYXJhbSBkZWZhdWx0cyBpbnRvIGEgZHluYW1pYyBwaW4gY29uZmlndXJhdGlvbi5cbi1cdCAqL1xuK1x0LyogSW5pdGlhbGl6ZSB0aGUgcnVudGltZSBwaW4gY29uZmlndXJhdGlvbiBmcm9tIGdwaW9fdGFiLiAqL1xuIFx0ZHA4MzY0MF9ncGlvX2RlZmF1bHRzKGNsb2NrLVx1MDAzZWNhcHMucGluX2NvbmZpZyk7XG4tXHQvKlxuLVx0ICogR2V0IGEgcmVmZXJlbmNlIHRvIHRoaXMgYnVzIGluc3RhbmNlLlxuLVx0ICovXG4tXHRnZXRfZGV2aWNlKFx1MDAyNmJ1cy1cdTAwM2VkZXYpO1xuIH1cbiBcbiBzdGF0aWMgaW50IGNob29zZV90aGlzX3BoeShzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2ssXG5AQCAtOTk5LDU4ICs5ODcsNiBAQCBzdGF0aWMgaW50IGNob29zZV90aGlzX3BoeShzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2ssXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpkcDgzNjQwX2Nsb2NrX2dldChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2spXG4te1xuLVx0aWYgKGNsb2NrKVxuLVx0XHRtdXRleF9sb2NrKFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuLVx0cmV0dXJuIGNsb2NrO1xuLX1cbi1cbi0vKlxuLSAqIExvb2sgdXAgYW5kIGxvY2sgYSBjbG9jayBieSBidXMgaW5zdGFuY2UuXG4tICogSWYgdGhlcmUgaXMgbm8gY2xvY2sgZm9yIHRoaXMgYnVzLCB0aGVuIGNyZWF0ZSBpdCBmaXJzdC5cbi0gKi9cbi1zdGF0aWMgc3RydWN0IGRwODM2NDBfY2xvY2sgKmRwODM2NDBfY2xvY2tfZ2V0X2J1cyhzdHJ1Y3QgbWlpX2J1cyAqYnVzKVxuLXtcbi1cdHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jayA9IE5VTEwsICp0bXA7XG4tXHRzdHJ1Y3QgbGlzdF9oZWFkICp0aGlzO1xuLVxuLVx0bXV0ZXhfbG9jayhcdTAwMjZwaHl0ZXJfY2xvY2tzX2xvY2spO1xuLVxuLVx0bGlzdF9mb3JfZWFjaCh0aGlzLCBcdTAwMjZwaHl0ZXJfY2xvY2tzKSB7XG4tXHRcdHRtcCA9IGxpc3RfZW50cnkodGhpcywgc3RydWN0IGRwODM2NDBfY2xvY2ssIGxpc3QpO1xuLVx0XHRpZiAodG1wLVx1MDAzZWJ1cyA9PSBidXMpIHtcbi1cdFx0XHRjbG9jayA9IHRtcDtcbi1cdFx0XHRicmVhaztcbi1cdFx0fVxuLVx0fVxuLVx0aWYgKGNsb2NrKVxuLVx0XHRnb3RvIG91dDtcbi1cbi1cdGNsb2NrID0ga3phbGxvY19vYmooc3RydWN0IGRwODM2NDBfY2xvY2spO1xuLVx0aWYgKCFjbG9jaylcbi1cdFx0Z290byBvdXQ7XG4tXG4tXHRjbG9jay1cdTAwM2VjYXBzLnBpbl9jb25maWcgPSBremFsbG9jX29ianMoc3RydWN0IHB0cF9waW5fZGVzYyxcbi1cdFx0XHRcdFx0ICAgICAgRFA4MzY0MF9OX1BJTlMpO1xuLVx0aWYgKCFjbG9jay1cdTAwM2VjYXBzLnBpbl9jb25maWcpIHtcbi1cdFx0a2ZyZWUoY2xvY2spO1xuLVx0XHRjbG9jayA9IE5VTEw7XG4tXHRcdGdvdG8gb3V0O1xuLVx0fVxuLVx0ZHA4MzY0MF9jbG9ja19pbml0KGNsb2NrLCBidXMpO1xuLVx0bGlzdF9hZGRfdGFpbChcdTAwMjZjbG9jay1cdTAwM2VsaXN0LCBcdTAwMjZwaHl0ZXJfY2xvY2tzKTtcbi1vdXQ6XG4tXHRtdXRleF91bmxvY2soXHUwMDI2cGh5dGVyX2Nsb2Nrc19sb2NrKTtcbi1cbi1cdHJldHVybiBkcDgzNjQwX2Nsb2NrX2dldChjbG9jayk7XG4tfVxuLVxuLXN0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfcHV0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaylcbi17XG4tXHRtdXRleF91bmxvY2soXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4tfVxuLVxuIHN0YXRpYyBpbnQgZHA4MzY0MF9zb2Z0X3Jlc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4ge1xuIFx0aW50IHJldDtcbkBAIC0xNDAwLDIwICsxMzM2LDMxIEBAIHN0YXRpYyBpbnQgZHA4MzY0MF90c19pbmZvKHN0cnVjdCBtaWlfdGltZXN0YW1wZXIgKm1paV90cyxcbiBcbiBzdGF0aWMgaW50IGRwODM2NDBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiB7XG4tXHRzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2s7XG4gXHRzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICpkcDgzNjQwO1xuLVx0aW50IGVyciA9IC1FTk9NRU0sIGk7XG4rXHRzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2s7XG4rXHRpbnQgZXJyLCBpO1xuIFxuIFx0aWYgKHBoeWRldi1cdTAwM2VtZGlvLmFkZHIgPT0gQlJPQURDQVNUX0FERFIpXG4gXHRcdHJldHVybiAwO1xuIFxuLVx0Y2xvY2sgPSBkcDgzNjQwX2Nsb2NrX2dldF9idXMocGh5ZGV2LVx1MDAzZW1kaW8uYnVzKTtcbi1cdGlmICghY2xvY2spXG4tXHRcdGdvdG8gbm9fY2xvY2s7XG4rXHRlcnIgPSBwaHlfcGFja2FnZV9qb2luKHBoeWRldiwgQlJPQURDQVNUX0FERFIsIHNpemVvZigqY2xvY2spKTtcbitcdGlmIChlcnIpXG4rXHRcdHJldHVybiBlcnI7XG4rXG4rXHRjbG9jayA9IHBoeV9wYWNrYWdlX2dldF9wcml2KHBoeWRldik7XG4rXHQvKiBFbnN1cmUgb3RoZXIgUEhZIHByb2JlcyB3YWl0IGZvciBzaGFyZWQgY2xvY2sgaW5pdGlhbGl6YXRpb24uICovXG4rXHRwaHlfcGFja2FnZV9sb2NrKHBoeWRldik7XG4rXHRpZiAocGh5X3BhY2thZ2VfcHJvYmVfb25jZShwaHlkZXYpKVxuK1x0XHRkcDgzNjQwX2Nsb2NrX2luaXQoY2xvY2spO1xuK1x0cGh5X3BhY2thZ2VfdW5sb2NrKHBoeWRldik7XG4rXG4rXHRtdXRleF9sb2NrKFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuIFxuIFx0ZHA4MzY0MCA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUpO1xuLVx0aWYgKCFkcDgzNjQwKVxuK1x0aWYgKCFkcDgzNjQwKSB7XG4rXHRcdGVyciA9IC1FTk9NRU07XG4gXHRcdGdvdG8gbm9fbWVtb3J5O1xuK1x0fVxuIFxuIFx0ZHA4MzY0MC1cdTAwM2VwaHlkZXYgPSBwaHlkZXY7XG4gXHRkcDgzNjQwLVx1MDAzZW1paV90cy5yeHRzdGFtcCA9IGRwODM2NDBfcnh0c3RhbXA7XG5AQCAtMTQ1MCwxNSArMTM5NywyMCBAQCBzdGF0aWMgaW50IGRwODM2NDBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdH0gZWxzZVxuIFx0XHRsaXN0X2FkZF90YWlsKFx1MDAyNmRwODM2NDAtXHUwMDNlbGlzdCwgXHUwMDI2Y2xvY2stXHUwMDNlcGh5bGlzdCk7XG4gXG4tXHRkcDgzNjQwX2Nsb2NrX3B1dChjbG9jayk7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4rXG4gXHRyZXR1cm4gMDtcbiBcbiBub19yZWdpc3RlcjpcbiBcdGNsb2NrLVx1MDAzZWNob3NlbiA9IE5VTEw7XG4rXHRjbG9jay1cdTAwM2VwdHBfY2xvY2sgPSBOVUxMO1xuK1x0cGh5ZGV2LVx1MDAzZWRlZmF1bHRfdGltZXN0YW1wID0gZmFsc2U7XG4rXHRwaHlkZXYtXHUwMDNlbWlpX3RzID0gTlVMTDtcbitcdHBoeWRldi1cdTAwM2Vwcml2ID0gTlVMTDtcbiBcdGtmcmVlKGRwODM2NDApO1xuIG5vX21lbW9yeTpcbi1cdGRwODM2NDBfY2xvY2tfcHV0KGNsb2NrKTtcbi1ub19jbG9jazpcbitcdG11dGV4X3VubG9jayhcdTAwMjZjbG9jay1cdTAwM2VjbG9ja19sb2NrKTtcbitcdHBoeV9wYWNrYWdlX2xlYXZlKHBoeWRldik7XG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbkBAIC0xNDY3LDcgKzE0MTksNiBAQCBzdGF0aWMgdm9pZCBkcDgzNjQwX3JlbW92ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0c3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrO1xuIFx0c3RydWN0IGxpc3RfaGVhZCAqdGhpcywgKm5leHQ7XG4gXHRzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICp0bXAsICpkcDgzNjQwID0gcGh5ZGV2LVx1MDAzZXByaXY7XG4tXHRib29sIHJlbW92ZV9jbG9jayA9IGZhbHNlO1xuIFxuIFx0aWYgKHBoeWRldi1cdTAwM2VtZGlvLmFkZHIgPT0gQlJPQURDQVNUX0FERFIpXG4gXHRcdHJldHVybjtcbkBAIC0xNDgwLDcgKzE0MzEsOCBAQCBzdGF0aWMgdm9pZCBkcDgzNjQwX3JlbW92ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmRwODM2NDAtXHUwMDNlcnhfcXVldWUpO1xuIFx0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmRwODM2NDAtXHUwMDNldHhfcXVldWUpO1xuIFxuLVx0Y2xvY2sgPSBkcDgzNjQwX2Nsb2NrX2dldChkcDgzNjQwLVx1MDAzZWNsb2NrKTtcbitcdGNsb2NrID0gZHA4MzY0MC1cdTAwM2VjbG9jaztcbitcdG11dGV4X2xvY2soXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4gXG4gXHRpZiAoZHA4MzY0MCA9PSBjbG9jay1cdTAwM2VjaG9zZW4pIHtcbiBcdFx0cHRwX2Nsb2NrX3VucmVnaXN0ZXIoY2xvY2stXHUwMDNlcHRwX2Nsb2NrKTtcbkBAIC0xNDk1LDIzICsxNDQ3LDEwIEBAIHN0YXRpYyB2b2lkIGRwODM2NDBfcmVtb3ZlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRcdH1cbiBcdH1cbiBcbi1cdGlmICghY2xvY2stXHUwMDNlY2hvc2VuIFx1MDAyNlx1MDAyNiBsaXN0X2VtcHR5KFx1MDAyNmNsb2NrLVx1MDAzZXBoeWxpc3QpKVxuLVx0XHRyZW1vdmVfY2xvY2sgPSB0cnVlO1xuLVxuLVx0ZHA4MzY0MF9jbG9ja19wdXQoY2xvY2spO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuIFx0a2ZyZWUoZHA4MzY0MCk7XG4gXG4tXHRpZiAocmVtb3ZlX2Nsb2NrKSB7XG4tXHRcdG11dGV4X2xvY2soXHUwMDI2cGh5dGVyX2Nsb2Nrc19sb2NrKTtcbi1cdFx0bGlzdF9kZWwoXHUwMDI2Y2xvY2stXHUwMDNlbGlzdCk7XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZwaHl0ZXJfY2xvY2tzX2xvY2spO1xuLVxuLVx0XHRtdXRleF9kZXN0cm95KFx1MDAyNmNsb2NrLVx1MDAzZWV4dHJlZ19sb2NrKTtcbi1cdFx0bXV0ZXhfZGVzdHJveShcdTAwMjZjbG9jay1cdTAwM2VjbG9ja19sb2NrKTtcbi1cdFx0cHV0X2RldmljZShcdTAwMjZjbG9jay1cdTAwM2VidXMtXHUwMDNlZGV2KTtcbi1cdFx0a2ZyZWUoY2xvY2stXHUwMDNlY2Fwcy5waW5fY29uZmlnKTtcbi1cdFx0a2ZyZWUoY2xvY2spO1xuLVx0fVxuK1x0cGh5X3BhY2thZ2VfbGVhdmUocGh5ZGV2KTtcbiB9XG4gXG4gc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGRwODM2NDBfZHJpdmVyW10gPSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuY1xuaW5kZXggMTZhZThkMWMxZjg5YS4uNzM1ODA2YzViZWE4OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuY1xuQEAgLTUyLDYgKzUyLDI5IEBAIHZvaWQgKnBoeV9wYWNrYWdlX2dldF9wcml2KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHBoeV9wYWNrYWdlX2dldF9wcml2KTtcbiBcbisvKipcbisgKiBwaHlfcGFja2FnZV9sb2NrIC0gYWNxdWlyZSB0aGUgUEhZIHBhY2thZ2UgbG9ja1xuKyAqIEBwaHlkZXY6IFBIWSBkZXZpY2UgdGhhdCBoYXMgam9pbmVkIHRoZSBwYWNrYWdlXG4rICpcbisgKiBVc2UgdGhpcyB0byBzZXJpYWxpemUgYWNjZXNzIHRvIHBhY2thZ2UtcHJpdmF0ZSBkYXRhLiBSZWxlYXNlIHRoZSBsb2NrXG4rICogd2l0aCBwaHlfcGFja2FnZV91bmxvY2soKS5cbisgKi9cbit2b2lkIHBoeV9wYWNrYWdlX2xvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbit7XG4rXHRtdXRleF9sb2NrKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmJ1cy1cdTAwM2VzaGFyZWRfbG9jayk7XG4rfVxuK0VYUE9SVF9TWU1CT0xfR1BMKHBoeV9wYWNrYWdlX2xvY2spO1xuK1xuKy8qKlxuKyAqIHBoeV9wYWNrYWdlX3VubG9jayAtIHJlbGVhc2UgdGhlIFBIWSBwYWNrYWdlIGxvY2tcbisgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHRoYXQgaGFzIGpvaW5lZCB0aGUgcGFja2FnZVxuKyAqL1xuK3ZvaWQgcGh5X3BhY2thZ2VfdW5sb2NrKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4re1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmJ1cy1cdTAwM2VzaGFyZWRfbG9jayk7XG4rfVxuK0VYUE9SVF9TWU1CT0xfR1BMKHBoeV9wYWNrYWdlX3VubG9jayk7XG4rXG4gc3RhdGljIGludCBwaHlfcGFja2FnZV9hZGRyZXNzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4gXHRcdFx0ICAgICAgIHVuc2lnbmVkIGludCBhZGRyX29mZnNldClcbiB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oXG5pbmRleCAwZmJhMjQ1Zjk3NDU4Li5jNmUyNmFjNmIyOGYwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5bGliLmhcbkBAIC0xMiw2ICsxMiw4IEBAIHN0cnVjdCBtaWlfYnVzO1xuIFxuIHN0cnVjdCBkZXZpY2Vfbm9kZSAqcGh5X3BhY2thZ2VfZ2V0X25vZGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG4gdm9pZCAqcGh5X3BhY2thZ2VfZ2V0X3ByaXYoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG4rdm9pZCBwaHlfcGFja2FnZV9sb2NrKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuK3ZvaWQgcGh5X3BhY2thZ2VfdW5sb2NrKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuIGludCBfX3BoeV9wYWNrYWdlX3JlYWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdW5zaWduZWQgaW50IGFkZHJfb2Zmc2V0LFxuIFx0XHQgICAgICAgdTMyIHJlZ251bSk7XG4gaW50IF9fcGh5X3BhY2thZ2Vfd3JpdGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdW5zaWduZWQgaW50IGFkZHJfb2Zmc2V0LFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHRwL0tjb25maWcgYi9kcml2ZXJzL3B0cC9LY29uZmlnXG5pbmRleCBiOTM2NDBjYTA4YjcyLi5mZWI1MGY4Y2M0MDZhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9wdHAvS2NvbmZpZ1xuKysrIGIvZHJpdmVycy9wdHAvS2NvbmZpZ1xuQEAgLTc4LDYgKzc4LDcgQEAgY29uZmlnIERQODM2NDBfUEhZXG4gXHRkZXBlbmRzIG9uIFBIWUxJQlxuIFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS1xuIFx0c2VsZWN0IENSQzMyXG4rXHRzZWxlY3QgUEhZX1BBQ0tBR0VcbiBcdGhlbHBcbiBcdCAgU3VwcG9ydHMgdGhlIERQODM2NDAgUEhZVEVSIHdpdGggSUVFRSAxNTg4IGZlYXR1cmVzLlxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTY6NTQ6MDEuNzExNzk2MzQ5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTI3ODM1MzEzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBIWSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdG91Y2hlcyB0aGUgYGRwODM2NDAuY2AsIGBwaHlfcGFja2FnZS5jYCwgYHBoeWxpYi5oYCwgYW5kIGBLY29uZmlnYCBmaWxlcy4gSXQncyBlc3NlbnRpYWxseSByZWZhY3RvcmluZyB0aGUgYGRwODM2NDBgIFBIWSBkcml2ZXIgdG8gdXNlIHRoZSBgcGh5X3BhY2thZ2VgIG1lY2hhbmlzbSwgcmVwbGFjaW5nIGEgY3VzdG9tIGdsb2JhbCBjbG9jayBsaXN0IHdpdGggdGhlIHN0YW5kYXJkIG9uZS4gVGhleSd2ZSBhZGRlZCBgcGh5X3BhY2thZ2VfbG9ja2AgYW5kIGBwaHlfcGFja2FnZV91bmxvY2tgIHRvIHRoZSBgcGh5X3BhY2thZ2UuY2AgZmlsZSBhbmQgbW9kaWZpZWQgdGhlIGBkcDgzNjQwX3Byb2JlYCBhbmQgYGRwODM2NDBfcmVtb3ZlYCBmdW5jdGlvbnMgdG8gdXNlIHRoZSBzdGFuZGFyZCBsb2NraW5nIGFuZCBtYW5hZ2VtZW50IHByaW1pdGl2ZXMgb2YgdGhlIG5ldyBwYWNrYWdlIHN5c3RlbS4gVGhleSd2ZSBhbHNvIGFkZGVkIGBzZWxlY3QgUEhZX1BBQ0tBR0VgIHRvIHRoZSBgRFA4MzY0MF9QSFlgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGluIHRoZSBgS2NvbmZpZ2AgZmlsZSwgd2hpY2ggbWFrZXMgc2Vuc2UuXG5cbk15IGZpcnN0IHRob3VnaHQgaXMsIGNhbiBJIHJlYWNoIHRoaXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBmb3IgdGVzdGluZz8gVGhlIGBkcDgzNjQwYCBkcml2ZXIgaXMsIGFmdGVyIGFsbCwgYSBQSFkgZHJpdmVyLCB3aGljaCBhcmUgdHlwaWNhbGx5IHByb2JlZCB3aGVuIGEgbmV0d29yayBkZXZpY2UgY29ubmVjdHMgdG8gYW4gTURJTyBidXMgYW5kIHRoZSBQSFkgSUQgbWF0Y2hlcy4gUUVNVSBlbXVsYXRpb24gb2YgTURJTyBidXNlcyBhbmQgUEhZcyBpcyB1c3VhbGx5IGZlYXNpYmxlLCBhbmQgYGRwODM2NDBgIGl0c2VsZiBpcyBhIGZhaXJseSBzdGFuZGFyZCBQSFkuXG5cbk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiBpczogY2FuIHN5emthbGxlciBmdXp6IHRoaXM/IFN5emthbGxlciAqZG9lcyogaGF2ZSBzdXBwb3J0IGZvciBNRElPL1BIWSBmdXp6aW5nLCB0eXBpY2FsbHkgdGhyb3VnaCBlbXVsYXRlZCBuZXR3b3JrIGRldmljZXMgbGlrZSBgbWFjYmAsIG9yIG1heWJlIGV2ZW4gZHVtbXkgTURJTyBidXNlcy4gSSBrbm93IEkgY2FuIHVzZSBgdmV0aGAgb3IgYHR1bmAgZGV2aWNlcywgYnV0IHRoZXkgZG9uJ3QgaGF2ZSBidWlsdC1pbiBQSFlzLiBIbW0sIEkgdGhvdWdodCBzeXprYWxsZXIgaGFkIGBzeXpfbWRpb19yZWFkYCwgYHN5el9tZGlvX3dyaXRlYCBjYWxscywgYnV0IG1heWJlIG5vdC4uLlxuXG5Pa2F5LCBidXQgdGhlIGtleSBpcyB0aGF0IGBkcDgzNjQwX3Byb2JlYCBpcyBjYWxsZWQgd2hlbiBhIFBIWSBkZXZpY2UgaXMgY3JlYXRlZCwgcmlnaHQ/IENhbiBhIFBIWSBkZXZpY2UgYmUgY3JlYXRlZCBmcm9tIHVzZXJzcGFjZT8gTm8sIG5vdCBkaXJlY3RseSB2aWEgbmV0bGluayBvciBzeXNmcywgYXMgdXN1YWxseSBNRElPIGJ1cyBzY2FubmluZyBpcyB0aGUgbWVhbnMuIFdhaXQsIHRoZXJlIGFyZSBgbWRpby1iY20tdW5pbWFjYCBvciBgZml4ZWQtcGh5YCwgcmlnaHQ/XG5cbkFjdHVhbGx5LCBzeXprYWxsZXIgKmRvZXMqIGZ1enogTURJTyBidXNlcyB0aHJvdWdoIHZpcnR1YWwgZHJpdmVycyBvciBuZXRsaW5rIGludGVyZmFjZXMuIE9rYXksIEkgbmVlZCB0byBjaGVjayBpZiB0aGUgYGRwODM2NDBfcHJvYmVgIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZS4gSSB3aWxsIGdyZXAgZm9yIGBkcDgzNjQwX3Byb2JlYCBvciBldmVuIGBEUDgzNjQwX1BIWV9JRGAgaW4gdGhlIGtlcm5lbCBzb3VyY2UuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBzeXprYWxsZXIgY2FuIHRyaWdnZXIgdGhpcyBjb2RlIHBhdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0ODEsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NTgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNjo1NDoxMC45OTAxNTIzNDNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYyNTA4NzM3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJEUDgzNjQwX1BIWV9JRFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTI1LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM6MjY6I2RlZmluZSBEUDgzNjQwX1BIWV9JRFxcdDB4MjAwMDVjZTFcXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTI3LSNkZWZpbmUgUEFHRVNFTFxcdFxcdDB4MTNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM9MTQ1Nj1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZHA4MzY0MF9kcml2ZXJbXSA9IHtcXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTE0NTcte1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM6MTQ1ODpcXHQucGh5X2lkXFx0XFx0PSBEUDgzNjQwX1BIWV9JRCxcXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTE0NTktXFx0LnBoeV9pZF9tYXNrXFx0PSAweGZmZmZmZmYwLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYz0xNDc3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgZHA4MzY0MF90YmxbXSA9IHtcXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jOjE0Nzg6XFx0eyBEUDgzNjQwX1BIWV9JRCwgMHhmZmZmZmZmMCB9LFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTQ3OS1cXHR7IH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTY6NTQ6MTIuNjE1MjQzNzgyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM4MDQ4Mzg0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERQODM2NDAgUEhZIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgY2xlYXJseSBmb2N1c2VkIG9uIHRoZSBgZHA4MzY0MGAgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdG91Y2hpbmcgYGRwODM2NDBfcHJvYmVgIGFuZCBgZHA4MzY0MF9yZW1vdmVgLiBJbnRlcmVzdGluZyB0aGF0IGl0J3MgYWxzbyBhZGRpbmcgYHBoeV9wYWNrYWdlX2xvY2tgIGFuZCBgcGh5X3BhY2thZ2VfdW5sb2NrYCB0byBgcGh5X3BhY2thZ2UuY2AuIEhvbGQgb24sIGBwaHlfcGFja2FnZV9sb2NrYCBpcyAqZXhwb3J0ZWQqPyBUaGF0IG1lYW5zIG90aGVyIFBIWSBkcml2ZXJzIGNvdWxkIHBvdGVudGlhbGx5IGxldmVyYWdlIHRoaXMgbmV3IGxvY2tpbmcgbWVjaGFuaXNtLiBUaGF0J3MgYSBnb29kIGRlc2lnbiBkZWNpc2lvbjsgbWluaW1pemluZyBjb2RlIGR1cGxpY2F0aW9uIGlzIGFsd2F5cyBhIHBsdXMuXG5cbkJ1dCB0aGUgY29yZSBvZiB0aGUgY2hhbmdlIGRlZmluaXRlbHkgc2VlbXMgdG8gYmUgd2l0aGluIGBkcDgzNjQwLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJjYW4gc3l6a2FsbGVyIGhpdCBgZHA4MzY0MF9wcm9iZWA/XCIgS25vd2luZyB0aGUga2VybmVsJ3MgZnV6emluZyBjYXBhYmlsaXRpZXMgaXMgY3J1Y2lhbC4gSWYgc3l6a2FsbGVyIGNhbiB0cmlnZ2VyIGEgUEhZIHByb2JlLCB0aGF0J3Mgd2hlcmUgSSBuZWVkIHRvIGZvY3VzIG15IGFuYWx5c2lzIGZvciBwb3RlbnRpYWwgaXNzdWVzLiBUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzLCB3aGF0IGFyZSB0aGUgZW50cnkgcG9pbnRzIGZvciBzeXprYWxsZXIgdG8gcmVhY2ggdGhpcyBmdW5jdGlvbj8gSXQgY291bGQgcmVnaXN0ZXIgYW4gTURJTyBkZXZpY2Ugb3IgbGV2ZXJhZ2UgYSB2aXJ0dWFsIE1ESU8gYnVzLiBJIHRoaW5rIHRoZXJlIHdhcyBzb21ldGhpbmcgbGlrZSBgbWRpby1tb2NrdXBgIG9yIHNpbWlsYXIsIHJpZ2h0PyBMZXQgbWUgcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgdGhhdCB0byBtYWtlIHN1cmUuIEknbSBnb2luZyB0byBjaGVjay5cblxuXG4iLCJJbnB1dFRva2VucyI6Njk3MywiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNjo1NDoxNi45OTU3MzA4MjJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAzOTkwODIxMSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpby4qbW9ja3VwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNjo1NDoxOS4wMzU2NTAxMjJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTU4MTU4NTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipDb25zaWRlcmluZyBQSFkgRGV2aWNlIENyZWF0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEknbSBjdXJyZW50bHkgcG9uZGVyaW5nIHRoZSBtZWNoYW5pY3Mgb2YgUEhZIGRldmljZSBjcmVhdGlvbiB3aXRoaW4gdGhlIGZyYW1ld29yayB3ZSdyZSB3b3JraW5nIHdpdGguIFNwZWNpZmljYWxseSwgSSdtIHRyeWluZyB0byBwaW5wb2ludCB0aGUgZXhpc3RpbmcgcGF0aHdheXMgZm9yIGluc3RhbnRpYXRpb24gYW5kIHJlZ2lzdHJhdGlvbi4gQXJlIHRoZXJlIGVzdGFibGlzaGVkIGludGVyZmFjZXMgb3IgbWVjaGFuaXNtcyB0aGF0IGFsbG93IHVzIHRvIGRlZmluZSBhbmQgaW50ZWdyYXRlIHRoZXNlIHBoeXNpY2FsIGxheWVyIGNvbXBvbmVudHM/IE15IGltbWVkaWF0ZSBsaW5lIG9mIGlucXVpcnkgaW52b2x2ZXMgdW5kZXJzdGFuZGluZyB0aGUgYXZhaWxhYmxlIEFQSXMgYW5kIGV4cGxvcmluZyBhbnkgcG90ZW50aWFsIFwiaG9va3NcIiB3aXRoaW4gdGhlIHN5c3RlbSB0aGF0IG1pZ2h0IGZhY2lsaXRhdGUgc2VhbWxlc3MgaW50ZWdyYXRpb24uIFRoZSBmb2N1cyBpcyBlZmZpY2llbmN5OyBhcmUgdGhlcmUgc3RhbmRhcmRpemVkIHByb2Nlc3Nlcywgb3Igd2lsbCBhIG1vcmUgbWFudWFsLCBsb3dlci1sZXZlbCBhcHByb2FjaCBiZSByZXF1aXJlZD8gSSBuZWVkIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHRoZSBsZXZlbCBvZiBhYnN0cmFjdGlvbiB3ZSdyZSBhZmZvcmRlZCBpbiBjcmVhdGluZyB0aGVzZSBjcnVjaWFsIGhhcmR3YXJlIGludGVyZmFjZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0NDEsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNjo1NDoyMS45OTM4MTA4MDlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg5NzU2ODg0MCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpby4qZHVtbXlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU0OjIzLjg5MTM5NjI0OVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMjE1MDg4NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJbml0aWFsIENvbmNlcHQ6IFwiZml4ZWQtcGh5XCIqKlxuXG5SaWdodCwgbGV0J3MgY29uc2lkZXIgdGhpcyBcImZpeGVkLXBoeVwiIGNvbmNlcHQuIEltbWVkaWF0ZWx5LCBteSBtaW5kIHN0YXJ0cyByYWNpbmcuIFdoYXQgZXhhY3RseSBhcmUgd2UgZml4aW5nPyBJcyB0aGlzIHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBwaHlzaWNhbCBsYXllciBpbXBsZW1lbnRhdGlvbiwgb3IgYSBicm9hZGVyIGFyY2hpdGVjdHVyYWwgYXBwcm9hY2g/IFwiRml4ZWRcIiBpbXBsaWVzIGEgZGVncmVlIG9mIGltbXV0YWJpbGl0eSwgYSBoYXJkZW5pbmcsIHBlcmhhcHMuIEFyZSB3ZSB0YWxraW5nIGFib3V0IGEgcHJlLWRlZmluZWQgUEhZIGludGVyZmFjZSwgc2V0IHBhcmFtZXRlcnMsIG9yIGEgcmlnaWQgaGFyZHdhcmUgY29uZmlndXJhdGlvbj8gSXQncyBpbnRyaWd1aW5nLCBzdWdnZXN0aW5nIGEgcG90ZW50aWFsIHRyYWRlLW9mZiBiZXR3ZWVuIGZsZXhpYmlsaXR5IGFuZCBwZXJmb3JtYW5jZSwgb3IgcHJlZGljdGFiaWxpdHkgYW5kIGFkYXB0YWJpbGl0eS4gSeKAmW0gYWxyZWFkeSB0aGlua2luZyBhYm91dCBwb3RlbnRpYWwgYXBwbGljYXRpb25zOiBlbWJlZGRlZCBzeXN0ZW1zLCBzcGVjaWZpYyBjb21tdW5pY2F0aW9uIHByb3RvY29scywgbWF5YmUgZXZlbiBzcGVjaWFsaXplZCBoYXJkd2FyZSBhY2NlbGVyYXRvcnMgd2hlcmUgZGV0ZXJtaW5pc20gaXMgcGFyYW1vdW50LiBMZXQncyBzZWUgd2hlcmUgdGhpcyBnb2VzLi4uIEknbSBjdXJpb3VzIHdoYXQgdGhpcyBcImZpeGVkLXBoeVwiIHNpZ25pZmllcyBpbiB0aGUgbGFyZ2VyIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2NTAsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU0OjI3LjIxMjkwODI2MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ3OTAyNDgwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmaXhlZF9waHlfcmVnaXN0ZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9NDgyPXN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5MS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTlVNX0ZJWEVEX1BIWVM7IGkrKylcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTI6XFx0XFx0cGh5ZGV2c1tpXSA9IGZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCgpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5My1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jPTIyMzQ9c3RhdGljIGludCBiNDRfcmVnaXN0ZXJfcGh5X29uZShzdHJ1Y3QgYjQ0ICpicClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyNzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM6MjI3MzpcXHRcXHRwaHlkZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXJfMTAwZmQoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYy0yMjc0LVxcdFxcdGlmICghSVNfRVJSKHBoeWRldikpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jPTE0Mzk9aW50IGJnbWFjX3BoeV9jb25uZWN0X2RpcmVjdChzdHJ1Y3QgYmdtYWMgKmJnbWFjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYy0xNDQ4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmM6MTQ0OTpcXHRwaHlfZGV2ID0gZml4ZWRfcGh5X3JlZ2lzdGVyKFxcdTAwMjZmcGh5X3N0YXR1cywgTlVMTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYy0xNDUwLVxcdGlmIChJU19FUlIocGh5X2RldikpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM9MTg0OD1zdGF0aWMgaW50IGZ0Z21hYzEwMF9wcm9iZV9uY3NpKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE4NjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYzoxODY3OlxcdHBoeWRldiA9IGZpeGVkX3BoeV9yZWdpc3RlcihcXHUwMDI2bmNzaV9waHlfc3RhdHVzLCBucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xODY4LVxcdGlmIChJU19FUlIocGh5ZGV2KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9Mjk4MT1zdGF0aWMgaW50IGZlY19lbmV0X21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTMwMDItXFx0XFx0XFx0bmV0ZGV2X2luZm8obmRldiwgXFxcIm5vIFBIWSwgYXNzdW1pbmcgZGlyZWN0IGNvbm5lY3Rpb24gdG8gc3dpdGNoXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzozMDAzOlxcdFxcdFxcdHBoeV9kZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXJfMTAwZmQoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy0zMDA0LVxcdFxcdFxcdGlmIChJU19FUlIocGh5X2RldikpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmM9MjM4PXN0YXRpYyBpbnQgaGJnX2ZpeGVkX3BoeV9pbml0KHN0cnVjdCBoYmdfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmMtMjUwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmM6MjUxOlxcdHBoeWRldiA9IGZpeGVkX3BoeV9yZWdpc3RlcihcXHUwMDI2aGJnX2ZpeGVkX3BoeV9zdGF0dXMsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmMtMjUyLVxcdGlmIChJU19FUlIocGh5ZGV2KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM9NDEyPWludCBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtNDU5LXJlZ2lzdGVyX3BoeTpcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzo0NjA6XFx0cmV0dXJuIFBUUl9FUlJfT1JfWkVSTyhmaXhlZF9waHlfcmVnaXN0ZXIoXFx1MDAyNnN0YXR1cywgbnApKTtcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy00NjEtfVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jPTExOD1zdGF0aWMgaW50IGZpeGVkX3BoeV9nZXRfZnJlZV9hZGRyKHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTMwLVxcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYzoxMzE6c3RydWN0IHBoeV9kZXZpY2UgKmZpeGVkX3BoeV9yZWdpc3Rlcihjb25zdCBzdHJ1Y3QgZml4ZWRfcGh5X3N0YXR1cyAqc3RhdHVzLFxcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xMzItXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGRldmljZV9ub2RlICpucClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xNzItfVxcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYzoxNzM6RVhQT1JUX1NZTUJPTF9HUEwoZml4ZWRfcGh5X3JlZ2lzdGVyKTtcXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTc0LVxcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYzoxNzU6c3RydWN0IHBoeV9kZXZpY2UgKmZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCh2b2lkKVxcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xNzYte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE4MS1cXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM6MTgyOlxcdHJldHVybiBmaXhlZF9waHlfcmVnaXN0ZXIoXFx1MDAyNnN0YXR1cywgTlVMTCk7XFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE4My19XFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jOjE4NDpFWFBPUlRfU1lNQk9MX0dQTChmaXhlZF9waHlfcmVnaXN0ZXJfMTAwZmQpO1xcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xODUtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oPTE5PWV4dGVybiBpbnQgZml4ZWRfcGh5X2NoYW5nZV9jYXJyaWVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGJvb2wgbmV3X2NhcnJpZXIpO1xcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmg6MjA6c3RydWN0IHBoeV9kZXZpY2UgKmZpeGVkX3BoeV9yZWdpc3Rlcihjb25zdCBzdHJ1Y3QgZml4ZWRfcGh5X3N0YXR1cyAqc3RhdHVzLFxcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmgtMjEtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGRldmljZV9ub2RlICpucCk7XFxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaDoyMjpzdHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKHZvaWQpO1xcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmgtMjMtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oPTI5PXN0YXRpYyBpbmxpbmUgc3RydWN0IHBoeV9kZXZpY2UgKlxcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmg6MzA6Zml4ZWRfcGh5X3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBmaXhlZF9waHlfc3RhdHVzICpzdGF0dXMsXFxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaC0zMS1cXHRcXHQgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxcbi0tXFxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaC0zNS1cXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oOjM2OnN0YXRpYyBpbmxpbmUgc3RydWN0IHBoeV9kZXZpY2UgKmZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCh2b2lkKVxcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmgtMzcte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNjo1NDoyOC42OTE5Mzk2MloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDM0MDkwOTUzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBEUDgzNjQwIFBIWSBEcml2ZXIgd2l0aCBTeXprYWxsZXI6IEEgUGxhbiBvZiBBdHRhY2sqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdG8gdGFyZ2V0IHRoaXMgRFA4MzY0MCBQSFkgZHJpdmVyIHdpdGggZnV6emluZy4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0aGF0IGBmaXhlZC1waHlgIG1pZ2h0IGJlIHRoZSB3YXksIGJ1dCBpdCBzZWVtcyB0aGF0J3Mgbm90IHNwZWNpZmljIGVub3VnaC4gQ2FuIFN5emthbGxlciBjcmVhdGUgYSBcImZha2VcIiBNRElPIGRldmljZSB3aXRoIGEgcGFydGljdWxhciBQSFkgSUQ/IFRoZSBgbWFjYmAgZHJpdmVyIGlzIGZ1enplZCwgYnV0IEkgZG9uJ3QgdGhpbmsgaXQgbGV0cyB5b3Ugc3BlY2lmeSB0aGUgSUQuXG5cblRoZW4gaXQgaGl0cyBtZTogYHN5el91c2JfY29ubmVjdGAhIFRoYXQgbGV0cyB5b3UgY29ubmVjdCBVU0IgZGV2aWNlcy4gSXMgdGhlcmUgYSBVU0ItdG8tTURJTyBicmlkZ2U/IE5vLCBidXQgd2FpdC4uLiBVU0IgbmV0d29yayBkcml2ZXJzISBTb21lIG9mIHRoZW0gKmhhdmUqIE1ESU8gYnVzZXMuIGBsYW43OHh4YCwgYHNtc2M5NXh4YCwgYW5kIGBheDg4MTc5XzE3OGFgIGFsbCBjb21lIHRvIG1pbmQuIFRoZSBrZXkgaXMgdGhhdCB0aGUgUEhZIElEIGlzIHVzdWFsbHkgKnJlYWQqIGZyb20gaGFyZHdhcmUsIGJ1dCB3aXRoIFN5emthbGxlciBlbXVsYXRpbmcgdGhlIFVTQiBkZXZpY2UsIEkgY2FuIHByb3ZpZGUgKmFueSogUEhZIElELlxuXG5TbywgdGhlIHBsYW4gaXMgdG8gdXNlIGBzeXpfdXNiX2Nvbm5lY3RgIHRvIGVtdWxhdGUgYSBVU0IgbmV0d29yayBhZGFwdGVyLiBXaGVuIHRoZSBkcml2ZXIgcmVhZHMgdGhlIFBIWSBJRCBmcm9tIHRoZSBlbXVsYXRlZCBNRElPIGJ1cyAodmlhIFVTQiBjb250cm9sIG1lc3NhZ2VzKSwgSSdsbCBtYWtlIFN5emthbGxlciByZXR1cm4gYDB4MjAwMDVjZTFgIOKAkyB0aGUgRFA4MzY0MCBQSFkgSUQhIFRoZW4sIHRoZSBrZXJuZWwgKnNob3VsZCogbWF0Y2ggdGhlIGBkcDgzNjQwYCBQSFkgZHJpdmVyIGFuZCBjYWxsIGBkcDgzNjQwX3Byb2JlYC5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy4gSSdsbCBjaGVjayB0aGF0IGEgVVNCIG5ldHdvcmsgZHJpdmVyIHJlZ2lzdGVycyBhbiBNRElPIGJ1cyB3aXRoIGByZWFkYCBhbmQgYHdyaXRlYCBmdW5jdGlvbnMsIGxpa2UgYHNtc2M5NXh4X21kaW9fcmVhZGAuIFdoZW4gdGhlIGJ1cyBpcyBzY2FubmVkLCBpdCByZWFkcyByZWdpc3RlcnMgMiBhbmQgMyAodGhlIFBIWSBJRCkuIElmIG15IGVtdWxhdGVkIGRldmljZSByZXR1cm5zIHRoZSByaWdodCB2YWx1ZSwgYGRwODM2NDBgIGlzIHByb2JlZC4gQnV0IGlzIHRoaXMgZXZlbiBwb3NzaWJsZT8gV2VsbCwgaXQgaXMhIFN5emthbGxlciBkb2VzIHRoaXMgZm9yIFBIWSBkcml2ZXJzIGFscmVhZHkhIExldCdzIGNoZWNrIHRoYXQgYGRwODM2NDBfcHJvYmVgIGlzIHJlYWNoYWJsZSB0aHJvdWdoIFVTQiBlbXVsYXRpb24uIFllcywgSSBjYW4gcmVhY2ggaXQgdGhpcyB3YXkhXG5cbk9rYXksIGxldCdzIGdvIGJhY2sgdG8gdGhlIHBhdGNoLiBJdCdzIG1vZGlmeWluZyBgZHA4MzY0MF9wcm9iZWAsIGBkcDgzNjQwX3JlbW92ZWAsIGFuZCBgZHA4MzY0MF9jbG9ja19pbml0YC4gSXQgYWxzbyBhZGRzIHRob3NlIGBwaHlfcGFja2FnZV9sb2NrYCBhbmQgYHBoeV9wYWNrYWdlX3VubG9ja2AgY2FsbHMgaW4gYHBoeV9wYWNrYWdlLmNgLiBUaGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4gSSdsbCBuZWVkIHRvIGZvY3VzIG9uIHRoZXNlIGZ1bmN0aW9uczpcblxuKiAgIGBkcDgzNjQwX3Byb2JlYFxuKiAgIGBkcDgzNjQwX3JlbW92ZWBcbiogICBgcGh5X3BhY2thZ2VfbG9ja2BcbiogICBgcGh5X3BhY2thZ2VfdW5sb2NrYFxuXG5XYWl0IGEgbWludXRlLCBgZHA4MzY0MF9jbG9ja19pbml0YCBpcyBzdGF0aWMuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgYGRwODM2NDAuY2AgZmlsZSBmb3IgdGhlIGRlZmluaXRpb24uIFRoaXMgYXBwcm9hY2gsIHRob3VnaCwgbG9va3Mgc291bmQuIEkgYW0gY29uZmlkZW50IHRoYXQgaXQncyBwb3NzaWJsZSB0byBmdXp6IHRoZXNlIGZ1bmN0aW9ucyB1c2luZyBTeXprYWxsZXIncyBVU0IgZW11bGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NTIyLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjQ5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU0OjM5LjAzMjg1MTc0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDU5Mzc5MzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRwODM2NDBfY2xvY2tfaW5pdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jPTkwOD1zdGF0aWMgdm9pZCBkZWNvZGVfc3RhdHVzX2ZyYW1lKHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUgKmRwODM2NDAsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTk1MC1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jOjk1MTpzdGF0aWMgdm9pZCBkcDgzNjQwX2Nsb2NrX2luaXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtOTUyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM9MTMzNz1zdGF0aWMgaW50IGRwODM2NDBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTM1My1cXHRpZiAocGh5X3BhY2thZ2VfcHJvYmVfb25jZShwaHlkZXYpKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM6MTM1NDpcXHRcXHRkcDgzNjQwX2Nsb2NrX2luaXQoY2xvY2spO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTM1NS1cXHRwaHlfcGFja2FnZV91bmxvY2socGh5ZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTY6NTQ6NDAuNDkyMjM1NTVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg3NTAyNjQ5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERQODM2NDAgRHJpdmVyIFN0cnVjdHVyZSoqXG5cbk9rYXksIHNvIEknbSB0YWtpbmcgYSBsb29rIGF0IHRoaXMgYGRwODM2NDBgIGRyaXZlciwgYW5kIGltbWVkaWF0ZWx5IGEgZmV3IHRoaW5ncyBqdW1wIG91dC4gVGhlIGBkcDgzNjQwX2Nsb2NrX2luaXRgIGZ1bmN0aW9uIGlzIGRlY2xhcmVkIGFzIHN0YXRpYy4gSW50ZXJlc3RpbmcsIHRoYXQgc3VnZ2VzdHMgaXQncyBvbmx5IGludGVuZGVkIGZvciB1c2Ugd2l0aGluIHRoaXMgc3BlY2lmaWMgZmlsZSBvciBjb21waWxhdGlvbiB1bml0OyBJJ2xsIGtlZXAgdGhhdCBpbiBtaW5kLiBNb3JlIGludGVyZXN0aW5nbHksIGBkcDgzNjQwX3Byb2JlYCBhbmQgYGRwODM2NDBfcmVtb3ZlYCBhcmUgYWxzbyBzdGF0aWMsIGJ1dCB0aGV5J3JlICphbHNvKiBmdW5jdGlvbiBwb2ludGVycywgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGRwODM2NDBfZHJpdmVyYCBzdHJ1Y3R1cmUuIFRoYXQgdGVsbHMgbWUgdGhlc2UgYXJlIGxpa2VseSB0aGUgZW50cnkgYW5kIGV4aXQgcG9pbnRzIGZvciB0aGUgZHJpdmVyJ3MgaW50ZXJhY3Rpb24gd2l0aCB0aGUga2VybmVsLCB0aGUgcHJvYmUgYmVpbmcgdHJpZ2dlcmVkIHdoZW4gdGhlIGRldmljZSBpcyBkZXRlY3RlZCBhbmQgcmVtb3ZlIGJlaW5nIHRyaWdnZXJlZCB3aGVuIHRoZSBkZXZpY2UgaXMgdW5ib3VuZC4gSSBzaG91bGQgcHJvYmFibHkgZ28gYW5kIGluc3BlY3QgdGhlIGBkcDgzNjQwX2RyaXZlcmAgc3RydWN0dXJlIGRpcmVjdGx5IHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhpcyBhbGwgZml0cyB0b2dldGhlciBhbmQgdG8gYmUgc3VyZSBvZiB0aGUgZHJpdmVyJ3Mgcm9sZSBhbmQgcHVycG9zZS4gTGV0J3Mgc2VlIHdoYXQgdGhhdCBzdHJ1Y3R1cmUgaGFzIHRvIHNheS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTExNjksIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNjo1NDo0NC4zNjcyNjQ0NjVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NjU3MDU0NjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHA4MzY0MF9kcml2ZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYz0xNDE3PXN0YXRpYyB2b2lkIGRwODM2NDBfcmVtb3ZlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTE0NTUtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYzoxNDU2OnN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkcDgzNjQwX2RyaXZlcltdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTQ1Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTE0NzAtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYzoxNDcxOm1vZHVsZV9waHlfZHJpdmVyKGRwODM2NDBfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTE0NzItXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU0OjQ1LjkzMjk3Mzc3N1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTkzNzE4OTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDpcblxuKipOYXZpZ2F0aW5nIHRoZSBQSFkgRHJpdmVyIExhbmRzY2FwZSoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIFBIWSBkcml2ZXIgY29kZSwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIHRoZSBEUDgzNjQwLiBSaWdodCBvZmYgdGhlIGJhdCwgSSBzZWUgdGhhdCBgZHA4MzY0MF9wcm9iZWAgYW5kIGBkcDgzNjQwX3JlbW92ZWAgYXJlIG15IHByaW1hcnkgZW50cnkgcG9pbnRzLiBUaGF0J3Mgc3RhbmRhcmQgcHJhY3RpY2UsIHRoZSBwcm9iZSBmb3IgaW5pdGlhbGl6YXRpb24gYW5kIHRoZSByZW1vdmUgZm9yIGNsZWFudXAuIE5vdywgSSBub3RpY2UgdGhlc2UgZnVuY3Rpb24gY2FsbHMgZm9yIGBwaHlfcGFja2FnZV9sb2NrYCBhbmQgYHBoeV9wYWNrYWdlX3VubG9ja2AgYW5kLCBmcm9tIHRoZSBsb29rcyBvZiBpdCwgdGhlc2UgYXJlIGV4cG9ydGVkIGZ1bmN0aW9ucywgbGlrZWx5IG1hbmFnaW5nIHNvbWUgc29ydCBvZiBjb25jdXJyZW5jeSBvciByZXNvdXJjZSBhY2Nlc3MuIEdpdmVuIHRoZSBcInBhY2thZ2VcIiB0ZXJtaW5vbG9neSwgaXQgc3VnZ2VzdHMgc29tZSBzaGFyZWQgZGF0YSBzdHJ1Y3R1cmVzLCBzbyB0aG9zZSBmdW5jdGlvbnMgY291bGQgYmUgaW1wb3J0YW50LiBNeSBpbnN0aW5jdCB0ZWxscyBtZSB0byBjaGVjayB3aGVyZSB0aG9zZSBsb2NrL3VubG9jayBmdW5jdGlvbnMgYXJlIGRlZmluZWQgYW5kIHVzZWQsIHNvIEknbSBnb2luZyB0byBqdW1wIGludG8gYHBoeV9wYWNrYWdlLmNgIHRvIHVuZGVyc3RhbmQgdGhhdCBsb2NraW5nIG1lY2hhbmlzbSBiZXR0ZXIuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbnRleHQgSSBuZWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTcwNywiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU0OjQ5LjkyNjY5NDYzM1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQyMzAzMjI0MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlfcGFja2FnZV9sb2NrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM9MTMzNz1zdGF0aWMgaW50IGRwODM2NDBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTM1MS1cXHQvKiBFbnN1cmUgb3RoZXIgUEhZIHByb2JlcyB3YWl0IGZvciBzaGFyZWQgY2xvY2sgaW5pdGlhbGl6YXRpb24uICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYzoxMzUyOlxcdHBoeV9wYWNrYWdlX2xvY2socGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTEzNTMtXFx0aWYgKHBoeV9wYWNrYWdlX3Byb2JlX29uY2UocGh5ZGV2KSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jPTUzPUVYUE9SVF9TWU1CT0xfR1BMKHBoeV9wYWNrYWdlX2dldF9wcml2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTU1LS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jOjU2OiAqIHBoeV9wYWNrYWdlX2xvY2sgLSBhY3F1aXJlIHRoZSBQSFkgcGFja2FnZSBsb2NrXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtNTctICogQHBoeWRldjogUEhZIGRldmljZSB0aGF0IGhhcyBqb2luZWQgdGhlIHBhY2thZ2VcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTYxLSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jOjYyOnZvaWQgcGh5X3BhY2thZ2VfbG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTYzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTY1LX1cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzo2NjpFWFBPUlRfU1lNQk9MX0dQTChwaHlfcGFja2FnZV9sb2NrKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy02Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWIuaD0xND12b2lkICpwaHlfcGFja2FnZV9nZXRfcHJpdihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLmg6MTU6dm9pZCBwaHlfcGFja2FnZV9sb2NrKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWIuaC0xNi12b2lkIHBoeV9wYWNrYWdlX3VubG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTY6NTQ6NTEuMzQ5NzMxMDg2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcxNDk0NTQ4NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgRnV6emluZyBTdHJhdGVneTogRFA4MzY0MCBQSFkgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IGJlc3QgdG8gZnV6eiB0aGlzIGBkcDgzNjQwYCBQSFkgZHJpdmVyLiBJIHNlZSB0aGF0IGBwaHlfcGFja2FnZV9sb2NrYCBhbmQgYHBoeV9wYWNrYWdlX3VubG9ja2AgYXJlIGFscmVhZHkgZXhwb3J0ZWQsIHdoaWNoIGlzIGdvb2Q7IHRoZXkncmUgcmVhZGlseSBhY2Nlc3NpYmxlIGZvciBmdXp6aW5nLiBOb3csIHdoYXQgYWJvdXQgdGhlIG1haW4gZHJpdmVyIGVudHJ5IHBvaW50cywgYGRwODM2NDBfcHJvYmVgIGFuZCBgZHA4MzY0MF9yZW1vdmVgPyBUaGV5J3JlIGRlZmluZWQgYXMgYHN0YXRpY2AsIHdoaWNoIGluaXRpYWxseSBsb29rcyBsaWtlIGEgcHJvYmxlbS4gQnV0IHdhaXQsIGBzeXprYWxsZXJgIGNhbid0IGRpcmVjdGx5IGFkZHJlc3MgaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zLCBzbyBhbiBpbmxpbmVkIGZ1bmN0aW9uIHdvbid0IGhhdmUgYSBzcGVjaWZpYyBzeW1ib2wgZm9yIHN5emthbGxlciB0byBjYWxsLiBJJ20gbm90aW5nIGBkcDgzNjQwX3Byb2JlYCBpcyBhY3R1YWxseSBhIGZ1bmN0aW9uIHBvaW50ZXIgKndpdGhpbiogYSBzdHJ1Y3QsIHRoZXJlZm9yZSBub3QgaW5saW5lZC5cblxuVGhlIGRvY3VtZW50YXRpb24gc2VlbXMgdG8gZW1waGFzaXplIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5IHBvaW50cy4gU28sIHdoaWxlIGBkcDgzNjQwX3Byb2JlYCBoYXMgYSBkaXN0aW5jdCBhZGRyZXNzIGFuZCB3b24ndCBiZSBpbmxpbmVkLCBpcyB0aGF0IHRoZSAqYmVzdCogb3B0aW9uPyBTaG91bGQgSSBqdXN0IHN0aWNrIHdpdGggYHBoeV9wYWNrYWdlX2xvY2tgLCBgcGh5X3BhY2thZ2VfdW5sb2NrYCBmb3Igbm93P1xuXG5XYWl0IGEgbWludXRlLCBgZHA4MzY0MF9wcm9iZWAgKmlzKiB0aGUgbWFpbiBmdW5jdGlvbiBJJ20gbW9kaWZ5aW5nIGhlcmUuIFJpZ2h0LCBJIHNob3VsZCBkZWZpbml0ZWx5IGluY2x1ZGUgdGhhdCBhcyBhIHRhcmdldCFcblxuTm93LCBsZXQncyBsb29rIGF0IHRoZSBgS2NvbmZpZ2AgY2hhbmdlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgYnVpbGQgb3B0aW9ucy4gYERQODM2NDBfUEhZYCBkZXBlbmRzIG9uIGBQSFlMSUJgIGFuZCBgUFRQXzE1ODhfQ0xPQ0tgIGFuZCBhbHNvIHNlbGVjdHMgYFBIWV9QQUNLQUdFYC4gVGltZSB0byBjaGVjayBgZHJpdmVycy9wdHAvS2NvbmZpZ2AgdG8gc2VlIGlmIHRoZXJlJ3MgYW55IHJlbGV2YW50IGNvbnRleHQgYXJvdW5kIGBEUDgzNjQwX1BIWWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNDkxLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU0OjU4LjQ5OTE4ODYyNVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ1MTczMTYwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRFA4MzY0MF9QSFlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9wdHAvS2NvbmZpZz03Mj1jb21tZW50IFxcXCJFbmFibGUgUEhZTElCIGFuZCBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcgdG8gc2VlIHRoZSBhZGRpdGlvbmFsIGNsb2Nrcy5cXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTc0LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6NzU6Y29uZmlnIERQODM2NDBfUEhZXFxuZHJpdmVycy9wdHAvS2NvbmZpZy03Ni1cXHR0cmlzdGF0ZSBcXFwiRHJpdmVyIGZvciB0aGUgTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciBEUDgzNjQwIFBIWVRFUlxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTY6NTQ6NTkuOTUwOTI3MTY2WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NjA2MDU5MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzOlxuXG4qKkluaXRpYWwgQ29uZmlndXJhdGlvbiBhbmQgRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLCBpdCBsb29rcyBsaWtlIGBEUDgzNjQwX1BIWWAgaXMgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiBmaWxlIHdlJ3JlIGRlYWxpbmcgd2l0aCBoZXJlLiBCdXQgaGFuZyBvbiwgYSBiZWxsIHdlbnQgb2ZmIGluIG15IGhlYWQuIEkga25vdyB0aGF0IGBQVFBfMTU4OF9DTE9DS2AgaXMgYWxtb3N0IGFsd2F5cyBpbnRlcnR3aW5lZCB3aXRoIHRoaXMuIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSB0aW1lIHN5bmNocm9uaXphdGlvbiBpcyBjb25maWd1cmVkIHByb3Blcmx5LiBCZWZvcmUgSSBnbyBhbnkgZnVydGhlciwgSSBzaG91bGQgdmVyaWZ5IHRoZSBgUFRQXzE1ODhfQ0xPQ0tgIHNldHRpbmdzLiBJdCdzIHRvbyBlYXN5IHRvIG92ZXJsb29rIHRoYXQgcGllY2UgYW5kIGhhdmUgZXZlcnl0aGluZyBncmluZCB0byBhIGhhbHQuIEFsd2F5cyBiZXN0IHRvIGRvdWJsZS1jaGVjayB0aG9zZSBjcml0aWNhbCBkZXBlbmRlbmNpZXMuIExldCdzIGRpZyBpbnRvIGBQVFBfMTU4OF9DTE9DS2AgZmlyc3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMzI2LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTY6NTU6MDMuNDExNTM2MDU5WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTEyMzkwMDA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBQVFBfMTU4OF9DTE9DS1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvS2NvbmZpZz0yMT1jb25maWcgSVhQNFhYX0VUSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL0tjb25maWctMzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL0tjb25maWc6MzE6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0lYUDQ2WFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9LY29uZmlnLTMyLVxcdGJvb2wgXFxcIkludGVsIElYUDQ2eCBhcyBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnPTY9bWVudSBcXFwiUFRQIGNsb2NrIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9wdHAvS2NvbmZpZy03LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6ODpjb25maWcgUFRQXzE1ODhfQ0xPQ0tcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTktXFx0dHJpc3RhdGUgXFxcIlBUUCBjbG9jayBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0yOS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjMwOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbmRyaXZlcnMvcHRwL0tjb25maWctMzEtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctNDEtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzo0Mjpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfRFRFXFxuZHJpdmVycy9wdHAvS2NvbmZpZy00My1cXHR0cmlzdGF0ZSBcXFwiQnJvYWRjb20gRFRFIGFzIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctNTctXFxuZHJpdmVycy9wdHAvS2NvbmZpZzo1ODpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfUU9SSVFcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTU5LVxcdHRyaXN0YXRlIFxcXCJGcmVlc2NhbGUgUW9ySVEgMTU4OCB0aW1lciBhcyBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnPTc1PWNvbmZpZyBEUDgzNjQwX1BIWVxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy05Mi1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjkzOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JTkVTXFxuZHJpdmVycy9wdHAvS2NvbmZpZy05NC1cXHR0cmlzdGF0ZSBcXFwiWkhBVyBJbkVTIFBUUCB0aW1lIHN0YW1waW5nIElQIGNvcmVcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEwMy1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjEwNDpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfUENIXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMDUtXFx0dHJpc3RhdGUgXFxcIkludGVsIFBDSCBFRzIwVCBhcyBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEyMi1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjEyMzpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfS1ZNXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMjQtXFx0dHJpc3RhdGUgXFxcIktWTSB2aXJ0dWFsIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTM0LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTM1OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19WTUNMT0NLXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMzYtXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgbWFjaGluZSBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE1MS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE1Mjpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfSURUODJQMzNcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE1My1cXHR0cmlzdGF0ZSBcXFwiSURUIDgyUDMzeHh4IFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTYzLVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTY0OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JRFRDTVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTY1LVxcdHRyaXN0YXRlIFxcXCJJRFQgQ0xPQ0tNQVRSSVggYXMgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNzUtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoxNzY6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0ZDM1dcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE3Ny1cXHR0cmlzdGF0ZSBcXFwiUkVORVNBUyBGZW10b0Nsb2NrMyBXaXJlbGVzcyBhcyBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE4Ny1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE4ODpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfTU9DS1xcbmRyaXZlcnMvcHRwL0tjb25maWctMTg5LVxcdHRyaXN0YXRlIFxcXCJNb2NrLXVwIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTk4LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTk5OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19WTVdcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIwMC1cXHR0cmlzdGF0ZSBcXFwiVk13YXJlIHZpcnR1YWwgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0yMTAtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoyMTE6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX09DUFxcbmRyaXZlcnMvcHRwL0tjb25maWctMjEyLVxcdHRyaXN0YXRlIFxcXCJPcGVuQ29tcHV0ZSBUaW1lQ2FyZCBhcyBQVFAgY2xvY2tcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU1OjA0LjkyMzkzMTQzNVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzA5NTc0ODYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipDbG9jayBTeW5jaHJvbml6YXRpb24gXHUwMDI2IFBoeXNpY2FsIExheWVyIENvbnNpZGVyYXRpb25zKipcblxuQWxyaWdodCwgc28gdGhlIHByb2plY3QncyBtYXJjaGluZyBmb3J3YXJkLCBhbmQgaXQncyBiZWNvbWUgY2xlYXIgdGhhdCB3ZSdyZSBnb2luZyB0byBuZWVkIHRvIGltcGxlbWVudCBgUFRQXzE1ODhfQ0xPQ0tgLiBObyBzdXJwcmlzZXMgdGhlcmUuIFRoYXQncyB0aGUgYmFzZWxpbmUgZm9yIHByZWNpc2UgdGltZSBzeW5jaHJvbml6YXRpb24sIGVzcGVjaWFsbHkgZm9yIHRoaXMga2luZCBvZiBhcHBsaWNhdGlvbi4gQnV0IGFzIEkgdGhpbmsgYWJvdXQgaXQsIHRoZSBxdWVzdGlvbiBvZiB0aGUgcGh5c2ljYWwgbGF5ZXIgaW1wbGVtZW50YXRpb24gbmF0dXJhbGx5IHBvcHMgdXAuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGNvbnNpZGVyIHRoZSByb2xlLCBvciBsYWNrIHRoZXJlb2YsIG9mIGBQSFlMSUJgLiBJdCdzIGNydWNpYWwgSSBkb24ndCBvdmVybG9vayBhbnkgZGV0YWlscy4gV2hhdCBleGFjdGx5IGRvIHdlIG5lZWQgZnJvbSB0aGUgcGh5c2ljYWwgbGF5ZXIgaW50ZXJmYWNlPyBJcyBgUEhZTElCYCBnb2luZyB0byBiZSBvdXIgYmVzdCByb3V0ZSwgb3IgYXJlIHRoZXJlIGFsdGVybmF0ZSwgbW9yZSBzdWl0YWJsZSBhcHByb2FjaGVzLCB0aGF0IHdpbGwgYmV0dGVyIHN1aXQgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlPyBUaGlzIHJlcXVpcmVzIGRlZXBlciBpbnZlc3RpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDY2OSwiT3V0cHV0VG9rZW5zIjoxNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU1OjA4LjIzMzUwODc2OFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ5NTk2MTAyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUEhZTElCXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTY9Y29uZmlnIFBIWUxJTktcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE0LVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjE1Om1lbnVjb25maWcgUEhZTElCXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTYtXFx0dHJpc3RhdGUgXFxcIlBIWSBEZXZpY2Ugc3VwcG9ydCBhbmQgaW5mcmFzdHJ1Y3R1cmVcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz00Nj1jb25maWcgT1BFTl9BTExJQU5DRV9IRUxQRVJTXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy00OC1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo0OTpjb25maWcgUEhZTElCX0xFRFNcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy01MC1cXHRkZWZfYm9vbCBPRlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNjo1NTowOS43Mjk0NzQwNTVaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg0MjMyNDMyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIFBIWUxJQiBhbmQgaXRzIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEkgc2VlIHdlJ3JlIGRlYWxpbmcgd2l0aCBgUEhZTElCYC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB3ZSdyZSB3b3JraW5nIHdpdGggYSBQaHlzaWNhbCBMYXllciBpbnRlcmZhY2UgbGlicmFyeSwgd2hpY2ggaXMgYSBjb21tb24gYWJzdHJhY3Rpb24gaW4gbmV0d29ya2luZyBkcml2ZXJzLiBCdXQsIGhvbGQgb24gYSBzZWNvbmQuLi4gaXMgYERQODM2NDBfUEhZYCBkZWZpbmVkIGluIHRoZSBgZHJpdmVycy9wdHAvS2NvbmZpZ2AgZmlsZT8gVGhhdCdzIHVuZXhwZWN0ZWQuIFBUUCAoUHJlY2lzaW9uIFRpbWUgUHJvdG9jb2wpIGlzIG9mdGVuIHJlbGF0ZWQgdG8gdGltaW5nIHN5bmNocm9uaXphdGlvbiwgd2hpY2ggKmNvdWxkKiBpbnZvbHZlIFBIWXMsIGJ1dCB0aGUgZGlyZWN0IGxpbmtpbmcgc2VlbXMgYSBsaXR0bGUgb2RkLiBUbyBiZSBzdXJlLCBJIG5lZWQgdG8gb3BlbiB1cCBgZHJpdmVycy9wdHAvS2NvbmZpZ2AgYW5kIHZlcmlmeSB0aGF0IGBEUDgzNjQwX1BIWWAgaXMsIGluIGZhY3QsIGRlY2xhcmVkIHRoZXJlLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgRFA4MzY0MCBQSFkgYW5kIHRoZSBQVFAgc3Vic3lzdGVtLCBhbmQgY29uZmlybSBteSBpbml0aWFsIHRob3VnaHQgb24gYFBIWUxJQmAuIEkgd2FudCB0byBzZWUgaG93IHRoYXQgZHJpdmVyIGlzIGNvbmZpZ3VyZWQgaW4gY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUwNTMsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNjo1NToxMy41NzE4MDE5MTJaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NDk1MTIwMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERQODM2NDBfUEhZXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvcHRwL0tjb25maWc9NzI9Y29tbWVudCBcXFwiRW5hYmxlIFBIWUxJQiBhbmQgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HIHRvIHNlZSB0aGUgYWRkaXRpb25hbCBjbG9ja3MuXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy03NC1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjc1OmNvbmZpZyBEUDgzNjQwX1BIWVxcbmRyaXZlcnMvcHRwL0tjb25maWctNzYtXFx0dHJpc3RhdGUgXFxcIkRyaXZlciBmb3IgdGhlIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgRFA4MzY0MCBQSFlURVJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU1OjE1LjAyMTMxOTgyM1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTQ3NDAyNjkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqSW52ZXN0aWdhdGluZyBhIFBvdGVudGlhbCBEZXBlbmRlbmN5KipcblxuQWxyaWdodCwgaG9sZCBvbiBhIHNlY29uZC4gSSBzZWUgdGhpcyBjb21tZW50IHJlZmVyZW5jaW5nIGBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIGJlY2F1c2UgaW1tZWRpYXRlbHkgbXkgYnJhaW4ganVtcHMgdG8gYERQODM2NDBfUEhZYC4gTm93LCBJIG5lZWQgdG8gZmlndXJlIG91dDogRG9lcyB0aGUgY29ycmVjdCBvcGVyYXRpb24gb2YgdGhlIGBEUDgzNjQwX1BIWWAgbW9kdWxlIGFjdHVhbGx5ICpyZWx5KiBvbiB0aGlzIHRpbWVzdGFtcGluZyBmdW5jdGlvbmFsaXR5PyBJcyB0aGlzIGEgaGFyZCByZXF1aXJlbWVudCwgb3IganVzdCBhbiBvcHRpbWl6YXRpb24/IEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiB0aGVzZSBhcmUgaW50ZXJjb25uZWN0ZWQgYW5kIGhvdyBiZWZvcmUgSSBtYWtlIGEgbmV4dCBtb3ZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTQ0NSwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU1OjE4LjE2ODcyNTMyN1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ0OTE5MzIwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3RpbWVzdGFtcGluZy5yc3Q9NzY5PXRvIGVhY2ggaW5kaXZpZHVhbCBNQUMgZHJpdmVyIGZvciBQSFkgdGltZXN0YW1waW5nIHN1cHBvcnQuIFRoaXMgZW50YWlsczpcXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy90aW1lc3RhbXBpbmcucnN0LTc3OC0gIGBgc2tiX2RlZmVyX3J4X3RpbWVzdGFtcChza2IpYGAgaXMgbmVjZXNzYXJ5IG9yIG5vdCAtIGFuZCBpZiBpdCBpcywgZG9uJ3RcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvdGltZXN0YW1waW5nLnJzdDo3Nzk6ICBjYWxsIGBgbmV0aWZfcngoKWBgIGF0IGFsbC4gIElmIGBgQ09ORklHX05FVFdPUktfUEhZX1RJTUVTVEFNUElOR2BgIGlzXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3RpbWVzdGFtcGluZy5yc3QtNzgwLSAgZW5hYmxlZCwgYW5kIGBgc2tiLVxcdTAwM2VkZXYtXFx1MDAzZXBoeWRldi1cXHUwMDNlbWlpX3RzYGAgZXhpc3RzLCBpdHMgYGAucnh0c3RhbXAoKWBgIGhvb2tcXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL25ldHdvcmtpbmcvdGltZXN0YW1waW5nLnJzdD01NzI9U09fVElNRVNUQU1QSU5HIEFQSSDkuI3lhYHorrjkuLrlkIzkuIDmlbDmja7ljIXkvKDpgJLlpJrkuKrnoazku7bml7bpl7TmiLPvvIzlm6DmraTpmaTkuoYgRFNBXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9uZXR3b3JraW5nL3RpbWVzdGFtcGluZy5yc3QtNjIxLSAgYGBza2JfZGVmZXJfcnhfdGltZXN0YW1wKHNrYilgYCDmmK/lv4XopoHnmoTvvIzlpoLmnpzmmK/vvIzliJnkuI3osIPnlKggYGBuZXRpZl9yeCgpYGDjgIJcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9uZXR3b3JraW5nL3RpbWVzdGFtcGluZy5yc3Q6NjIyOiAg5aaC5p6cIGBgQ09ORklHX05FVFdPUktfUEhZX1RJTUVTVEFNUElOR2BgIOWQr+eUqO+8jOW5tuS4lFxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL25ldHdvcmtpbmcvdGltZXN0YW1waW5nLnJzdC02MjMtICBgYHNrYi1cXHUwMDNlZGV2LVxcdTAwM2VwaHlkZXYtXFx1MDAzZW1paV90c2BgIOWtmOWcqO+8jOWug+eahCBgYC5yeHRzdGFtcCgpYGAg6ZKp5a2Q546w5Zyo5bCG6KKr6LCDXFxuLS1cXG5hcmNoL2FybS9jb25maWdzL2F4bTU1eHhfZGVmY29uZmlnPTY5PUNPTkZJR19JTkVUX0lQQ09NUD15XFxuYXJjaC9hcm0vY29uZmlncy9heG01NXh4X2RlZmNvbmZpZy03MC0jIENPTkZJR19JUFY2IGlzIG5vdCBzZXRcXG5hcmNoL2FybS9jb25maWdzL2F4bTU1eHhfZGVmY29uZmlnOjcxOkNPTkZJR19ORVRXT1JLX1BIWV9USU1FU1RBTVBJTkc9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvYXhtNTV4eF9kZWZjb25maWctNzItQ09ORklHX0JSSURHRT15XFxuLS1cXG5hcmNoL2FybS9jb25maWdzL3NvY2ZwZ2FfZGVmY29uZmlnPTMxPUNPTkZJR19JUF9QTlBfUkFSUD15XFxuYXJjaC9hcm0vY29uZmlncy9zb2NmcGdhX2RlZmNvbmZpZzozMjpDT05GSUdfTkVUV09SS19QSFlfVElNRVNUQU1QSU5HPXlcXG5hcmNoL2FybS9jb25maWdzL3NvY2ZwZ2FfZGVmY29uZmlnLTMzLUNPTkZJR19WTEFOXzgwMjFRPXlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWc9MTYxPUNPTkZJR19NUFRDUD15XFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZzoxNjI6Q09ORklHX05FVFdPUktfUEhZX1RJTUVTVEFNUElORz15XFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZy0xNjMtQ09ORklHX05FVEZJTFRFUj15XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnPTE3Nz1DT05GSUdfTVBUQ1A9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc6MTc4OkNPTkZJR19ORVRXT1JLX1BIWV9USU1FU1RBTVBJTkc9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctMTc5LUNPTkZJR19ORVRGSUxURVI9eVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc9MTYyPWNvbmZpZyBCUk9BRENPTV9QSFlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE2NC1cXHRzZWxlY3QgQkNNX05FVF9QSFlMSUJcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzoxNjU6XFx0c2VsZWN0IEJDTV9ORVRfUEhZUFRQIGlmIE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR1xcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE2Ni1cXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz0zMjY9Y29uZmlnIE1JQ1JPQ0hJUF9UMV9QSFlcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0zMjctXFx0dHJpc3RhdGUgXFxcIk1pY3JvY2hpcCBUMSBQSFlzXFxcIlxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjMyODpcXHRzZWxlY3QgTUlDUk9DSElQX1BIWV9SRFNfUFRQIGlmIE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR1xcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTMyOS1cXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz0zMzg9Y29uZmlnIE1JQ1JPU0VNSV9QSFlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTM0MC1cXHRkZXBlbmRzIG9uIE1BQ1NFQyB8fCBNQUNTRUM9blxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjM0MTpcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMIHx8ICFORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0zNDItXFx0c2VsZWN0IENSWVBUT19MSUJfQUVTIGlmIE1BQ1NFQ1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTIyPW9iai0kKENPTkZJR19QSFlfUEFDS0FHRSlcXHQrPSBwaHlfcGFja2FnZS5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTIzLVxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZToyNDpvYmotJChDT05GSUdfTkVUV09SS19QSFlfVElNRVNUQU1QSU5HKSArPSBtaWlfdGltZXN0YW1wZXIub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS0yNS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYz00NDQwPXN0YXRpYyB2b2lkIGxhbjg4MTRfcHRwX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYy00NDQ1LVxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfUFRQXzE1ODhfQ0xPQ0spIHx8XFxuZHJpdmVycy9uZXQvcGh5L21pY3JlbC5jOjQ0NDY6XFx0ICAgICFJU19FTkFCTEVEKENPTkZJR19ORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcpKVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYy00NDQ3LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYz01OTgxPXN0YXRpYyBpbnQgbGFuODg0MV9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JlbC5jLTU5OTYtXFx0LyogUmVnaXN0ZXIgdGhlIGNsb2NrICovXFxuZHJpdmVycy9uZXQvcGh5L21pY3JlbC5jOjU5OTc6XFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19ORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcpKVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYy01OTk4LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvTWFrZWZpbGU9MTE9ZW5kaWZcXG5kcml2ZXJzL25ldC9waHkvbXNjYy9NYWtlZmlsZS0xMi1cXG5kcml2ZXJzL25ldC9waHkvbXNjYy9NYWtlZmlsZToxMzppZmRlZiBDT05GSUdfTkVUV09SS19QSFlfVElNRVNUQU1QSU5HXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvTWFrZWZpbGUtMTQtbXNjYy1vYmpzICs9IG1zY2NfcHRwLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2MuaD00ODI9c3RhdGljIGlubGluZSB2b2lkIHZzYzg1ODRfY29uZmlnX21hY3NlY19pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjLmgtNDg2LVxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2MuaDo0ODc6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVFdPUktfUEhZX1RJTUVTVEFNUElORylcXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjLmgtNDg4LXZvaWQgdnNjODV4eF9saW5rX2NoYW5nZV9ub3RpZnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21hY3NlYy5jPTI0ND1zdGF0aWMgdm9pZCB2c2M4NTg0X21hY3NlY19tYWNfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWNzZWMuYy0yODgtXFx0XFx0XFx0XFx0ICBNU0NDX01BQ19DRkdfUEtUSU5GX0NGR19FTkFCTEVfVFhfUEFERElORyA6IDApIHxcXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21hY3NlYy5jOjI4OTpcXHRcXHRcXHRcXHQgKElTX0VOQUJMRUQoQ09ORklHX05FVFdPUktfUEhZX1RJTUVTVEFNUElORykgP1xcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFjc2VjLmMtMjkwLVxcdFxcdFxcdFxcdCAgTVNDQ19NQUNfQ0ZHX1BLVElORl9DRkdfTUFDU0VDX0JZUEFTU19OVU1fUFRQX1NUQUxMX0NMS1MoMHg4KSA6IDApKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9ueHAtYzQ1LXRqYTExeHguYz0xNzMwPXN0YXRpYyBpbnQgbnhwX2M0NV9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L254cC1jNDUtdGphMTF4eC5jLTE3NjEtXFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1BUUF8xNTg4X0NMT0NLKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3BoeS9ueHAtYzQ1LXRqYTExeHguYzoxNzYyOlxcdCAgICBJU19FTkFCTEVEKENPTkZJR19ORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcpKSB7XFxuZHJpdmVycy9uZXQvcGh5L254cC1jNDUtdGphMTF4eC5jLTE3NjMtXFx0XFx0cHJpdi1cXHUwMDNlbWlpX3RzLnJ4dHN0YW1wID0gbnhwX2M0NV9yeHRzdGFtcDtcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWc9NTg9Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1FPUklRXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTcxLVxcbmRyaXZlcnMvcHRwL0tjb25maWc6NzI6Y29tbWVudCBcXFwiRW5hYmxlIFBIWUxJQiBhbmQgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HIHRvIHNlZSB0aGUgYWRkaXRpb25hbCBjbG9ja3MuXFxcIlxcbmRyaXZlcnMvcHRwL0tjb25maWc6NzM6XFx0ZGVwZW5kcyBvbiBQSFlMSUI9biB8fCBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkc9blxcbmRyaXZlcnMvcHRwL0tjb25maWctNzQtXFxuZHJpdmVycy9wdHAvS2NvbmZpZz03NT1jb25maWcgRFA4MzY0MF9QSFlcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTc2LVxcdHRyaXN0YXRlIFxcXCJEcml2ZXIgZm9yIHRoZSBOYXRpb25hbCBTZW1pY29uZHVjdG9yIERQODM2NDAgUEhZVEVSXFxcIlxcbmRyaXZlcnMvcHRwL0tjb25maWc6Nzc6XFx0ZGVwZW5kcyBvbiBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTc4LVxcdGRlcGVuZHMgb24gUEhZTElCXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnPTkzPWNvbmZpZyBQVFBfMTU4OF9DTE9DS19JTkVTXFxuZHJpdmVycy9wdHAvS2NvbmZpZy05NC1cXHR0cmlzdGF0ZSBcXFwiWkhBVyBJbkVTIFBUUCB0aW1lIHN0YW1waW5nIElQIGNvcmVcXFwiXFxuZHJpdmVycy9wdHAvS2NvbmZpZzo5NTpcXHRkZXBlbmRzIG9uIE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR1xcbmRyaXZlcnMvcHRwL0tjb25maWctOTYtXFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cXG4tLVxcbmluY2x1ZGUvbGludXgvbWlpX3RpbWVzdGFtcGVyLmg9ODM9c3RydWN0IG1paV90aW1lc3RhbXBpbmdfY3RybCB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21paV90aW1lc3RhbXBlci5oLTg5LVxcbmluY2x1ZGUvbGludXgvbWlpX3RpbWVzdGFtcGVyLmg6OTA6I2lmZGVmIENPTkZJR19ORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcXG5pbmNsdWRlL2xpbnV4L21paV90aW1lc3RhbXBlci5oLTkxLVxcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD00NjgyPXN0cnVjdCBza19idWZmICpza2JfY2xvbmVfc2soc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC00NjgzLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6NDY4NDojaWZkZWYgQ09ORklHX05FVFdPUktfUEhZX1RJTUVTVEFNUElOR1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtNDY4NS1cXG4tLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmg9NDY4Nz1ib29sIHNrYl9kZWZlcl9yeF90aW1lc3RhbXAoc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC00Njg4LVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6NDY4OTojZWxzZSAvKiBDT05GSUdfTkVUV09SS19QSFlfVElNRVNUQU1QSU5HICovXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC00NjkwLVxcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD00Njk1PXN0YXRpYyBpbmxpbmUgYm9vbCBza2JfZGVmZXJfcnhfdGltZXN0YW1wKHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTQ2OTktXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaDo0NzAwOiNlbmRpZiAvKiAhQ09ORklHX05FVFdPUktfUEhZX1RJTUVTVEFNUElORyAqL1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtNDcwMS1cXG4tLVxcbm5ldC9LY29uZmlnPTE1MT1jb25maWcgTkVUX1BUUF9DTEFTU0lGWVxcbi0tXFxubmV0L0tjb25maWctMTUzLVxcbm5ldC9LY29uZmlnOjE1NDpjb25maWcgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HXFxubmV0L0tjb25maWctMTU1LVxcdGJvb2wgXFxcIlRpbWVzdGFtcGluZyBpbiBQSFkgZGV2aWNlc1xcXCJcXG4tLVxcbm5ldC9jb3JlL01ha2VmaWxlPTMzPW9iai0kKENPTkZJR19ORVRfU0VMRlRFU1RTKSArPSBzZWxmdGVzdHMub1xcbm5ldC9jb3JlL01ha2VmaWxlOjM0Om9iai0kKENPTkZJR19ORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcpICs9IHRpbWVzdGFtcGluZy5vXFxubmV0L2NvcmUvTWFrZWZpbGUtMzUtb2JqLSQoQ09ORklHX05FVF9QVFBfQ0xBU1NJRlkpICs9IHB0cF9jbGFzc2lmaWVyLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTY6NTU6MTkuNjE3OTIzNjg3WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwMzU2OTU2ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ29uZmlndXJpbmcgdGhlIERQODM2NDAgUEhZIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyB0byBwcm9wZXJseSBjb25maWd1cmUgdGhlIGBEUDgzNjQwX1BIWWAgZHJpdmVyLiBJdCdzIGNsZWFyIHRoYXQgaXQgaGFzIHNldmVyYWwgZGVwZW5kZW5jaWVzLCBuYW1lbHkgYE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR2AsIGBQSFlMSUJgLCBhbmQgYFBUUF8xNTg4X0NMT0NLYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGVzZSBhcmUgZW5hYmxlZCBjb3JyZWN0bHkuIExldCdzIHNlZS4uLiBgUEhZTElCYCBpcyBhIG1lbnVjb25maWcsIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guIGBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdgIGlzIGEgc3RyYWlnaHRmb3J3YXJkIGJvb2xlYW4gb3B0aW9uLCBhbmQgYFBUUF8xNTg4X0NMT0NLYCBhbmQgYERQODM2NDBfUEhZYCBhcmUgYm90aCB0cmlzdGF0ZXMsIHNvIEknbGwgbmVlZCB0byBzZXQgdGhlbSBhcHByb3ByaWF0ZWx5LCB3aGljaCBtZWFucyBJIHNob3VsZCBsaXN0IHRoZW0gaW4gRW5hYmxlQ29uZmlnczogYERQODM2NDBfUEhZYCwgYE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR2AsIGBQSFlMSUJgLCBgUFRQXzE1ODhfQ0xPQ0tgLlxuXG5JJ20gYmVpbmcgdGhvcm91Z2gsIHNvIEkgd2FudCB0byBkb3VibGUtY2hlY2sgdGhvc2UgZGVwZW5kZW5jaWVzLCBqdXN0IHRvIGJlIHN1cmUuIExldCdzIHNlZSB0aGUgS2NvbmZpZyBlbnRyeSBmb3IgdGhlIGBEUDgzNjQwX1BIWWAuIEFscmlnaHQsIGl0IGNsZWFybHkgc3RhdGVzIHRoYXQgdGhlIGRlcGVuZGVuY2llcyBhcmUgaW5kZWVkIGBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdgLCBgUEhZTElCYCwgYW5kIGBQVFBfMTU4OF9DTE9DS2AsIGFzIEkgdGhvdWdodC4gTG9va3MgbGlrZSBpdCBhbHNvIHNlbGVjdHMgYENSQzMyYCBhbmQgYFBIWV9QQUNLQUdFYCwgYnV0IHRob3NlIGFyZSBoYW5kbGVkIGF1dG9tYXRpY2FsbHkuXG5cbk9rYXksIG5vdywgbGV0J3MganVzdCBtYWtlIHN1cmUgdGhlcmUgYXJlbid0ICpoaWRkZW4qIGRlcGVuZGVuY2llcyBmb3IgdGhlIGRlcGVuZGVudCBvcHRpb25zLCBsaWtlIGBQVFBfMTU4OF9DTE9DS2AuIE5vcGUsIHRoYXQgY29uZmlnIGlzIHRoZSBtYWluIG9uZSwgbm90IHNvbWUgb3B0aW9uYWwgaGVscGVyLiBJIHNob3VsZCBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIG9mIGBQVFBfMTU4OF9DTE9DS2AgbGF0ZXIgaWYgbmVlZGVkLiBCdXQgZm9yIG5vdywgSSdtIGNvbmZpZGVudCBpbiB0aGVzZSBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NDUyLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU1OjI2LjY1MzYyMjYwNVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ2Mjc4Mjc3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUFRQXzE1ODhfQ0xPQ0tcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL0tjb25maWc9MjE9Y29uZmlnIElYUDRYWF9FVEhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9LY29uZmlnLTMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9LY29uZmlnOjMxOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JWFA0NlhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvS2NvbmZpZy0zMi1cXHRib29sIFxcXCJJbnRlbCBJWFA0NnggYXMgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZz02PW1lbnUgXFxcIlBUUCBjbG9jayBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvcHRwL0tjb25maWctNy1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjg6Y29uZmlnIFBUUF8xNTg4X0NMT0NLXFxuZHJpdmVycy9wdHAvS2NvbmZpZy05LVxcdHRyaXN0YXRlIFxcXCJQVFAgY2xvY2sgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMjktXFxuZHJpdmVycy9wdHAvS2NvbmZpZzozMDpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTMxLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTQxLVxcbmRyaXZlcnMvcHRwL0tjb25maWc6NDI6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0RURVxcbmRyaXZlcnMvcHRwL0tjb25maWctNDMtXFx0dHJpc3RhdGUgXFxcIkJyb2FkY29tIERURSBhcyBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTU3LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6NTg6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1FPUklRXFxuZHJpdmVycy9wdHAvS2NvbmZpZy01OS1cXHR0cmlzdGF0ZSBcXFwiRnJlZXNjYWxlIFFvcklRIDE1ODggdGltZXIgYXMgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZz03NT1jb25maWcgRFA4MzY0MF9QSFlcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctOTItXFxuZHJpdmVycy9wdHAvS2NvbmZpZzo5Mzpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfSU5FU1xcbmRyaXZlcnMvcHRwL0tjb25maWctOTQtXFx0dHJpc3RhdGUgXFxcIlpIQVcgSW5FUyBQVFAgdGltZSBzdGFtcGluZyBJUCBjb3JlXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMDMtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoxMDQ6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1BDSFxcbmRyaXZlcnMvcHRwL0tjb25maWctMTA1LVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBQQ0ggRUcyMFQgYXMgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMjItXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoxMjM6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0tWTVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTI0LVxcdHRyaXN0YXRlIFxcXCJLVk0gdmlydHVhbCBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEzNC1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjEzNTpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfVk1DTE9DS1xcbmRyaXZlcnMvcHRwL0tjb25maWctMTM2LVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIG1hY2hpbmUgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNTEtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoxNTI6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0lEVDgyUDMzXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNTMtXFx0dHJpc3RhdGUgXFxcIklEVCA4MlAzM3h4eCBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE2My1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE2NDpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfSURUQ01cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE2NS1cXHR0cmlzdGF0ZSBcXFwiSURUIENMT0NLTUFUUklYIGFzIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTc1LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTc2OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19GQzNXXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNzctXFx0dHJpc3RhdGUgXFxcIlJFTkVTQVMgRmVtdG9DbG9jazMgV2lyZWxlc3MgYXMgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xODctXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoxODg6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX01PQ0tcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE4OS1cXHR0cmlzdGF0ZSBcXFwiTW9jay11cCBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE5OC1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE5OTpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfVk1XXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0yMDAtXFx0dHJpc3RhdGUgXFxcIlZNd2FyZSB2aXJ0dWFsIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMjEwLVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MjExOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19PQ1BcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIxMi1cXHR0cmlzdGF0ZSBcXFwiT3BlbkNvbXB1dGUgVGltZUNhcmQgYXMgUFRQIGNsb2NrXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNjo1NToyOC4xMTY0MTA2NjVaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM3MzA4MzIyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBQVFAgQ2xvY2sgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIHJlbGF0ZWQgdG8gYFBUUF8xNTg4X0NMT0NLYC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZGl2ZSBkaXJlY3RseSBpbnRvIGBkcml2ZXJzL3B0cC9LY29uZmlnYC4gVGhhdCdzIHdoZXJlIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGNvbmRpdGlvbmFsIGxvZ2ljIHRoYXQgZ292ZXJucyB3aGV0aGVyIG9yIG5vdCB0aGlzIGZlYXR1cmUgaXMgZXhwb3NlZC4gSSdtIGxvb2tpbmcgZm9yIGFueSBgZGVwZW5kcyBvbmAgc3RhdGVtZW50cywgYHNlbGVjdGAgc3RhdGVtZW50cywgb3IgcG90ZW50aWFsbHkgZXZlbiBgaWZgIGNvbmRpdGlvbnMgdGhhdCBpbmZsdWVuY2UgdGhlIGF2YWlsYWJpbGl0eSBvZiBgUFRQXzE1ODhfQ0xPQ0tgIGF0IGJ1aWxkIHRpbWUuIEknbGwgYmUgbWV0aWN1bG91c2x5IGNoZWNraW5nIGZvciByZWxhdGlvbnNoaXBzIHdpdGggb3RoZXIgY29uZmlndXJhdGlvbnMsIHBvdGVudGlhbGx5IGhhcmR3YXJlLXNwZWNpZmljIG9wdGlvbnMsIG9yIGV2ZW4gb3RoZXIga2VybmVsIHN1YnN5c3RlbXMgdGhhdCBtaWdodCBiZSBwcmVyZXF1aXNpdGVzLiBJdCdzIGFsbCBhYm91dCB0cmFjaW5nIHRoZSBjb25maWd1cmF0aW9uIHBhdGggdG8gdW5kZXJzdGFuZCB0aGUgdW5kZXJseWluZyByZXF1aXJlbWVudHMgYW5kIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIHRoYXQgbWlnaHQgYXJpc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMzE0LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTY6NTU6MzIuNDg5NDk2Nzk0WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDM1MzUyMDYxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBQVFBfMTU4OF9DTE9DS1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvS2NvbmZpZz0yMT1jb25maWcgSVhQNFhYX0VUSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL0tjb25maWctMzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL0tjb25maWc6MzE6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0lYUDQ2WFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9LY29uZmlnLTMyLVxcdGJvb2wgXFxcIkludGVsIElYUDQ2eCBhcyBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnPTY9bWVudSBcXFwiUFRQIGNsb2NrIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9wdHAvS2NvbmZpZy03LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6ODpjb25maWcgUFRQXzE1ODhfQ0xPQ0tcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTktXFx0dHJpc3RhdGUgXFxcIlBUUCBjbG9jayBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0yOS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjMwOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbmRyaXZlcnMvcHRwL0tjb25maWctMzEtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctNDEtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzo0Mjpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfRFRFXFxuZHJpdmVycy9wdHAvS2NvbmZpZy00My1cXHR0cmlzdGF0ZSBcXFwiQnJvYWRjb20gRFRFIGFzIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctNTctXFxuZHJpdmVycy9wdHAvS2NvbmZpZzo1ODpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfUU9SSVFcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTU5LVxcdHRyaXN0YXRlIFxcXCJGcmVlc2NhbGUgUW9ySVEgMTU4OCB0aW1lciBhcyBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnPTc1PWNvbmZpZyBEUDgzNjQwX1BIWVxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy05Mi1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjkzOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JTkVTXFxuZHJpdmVycy9wdHAvS2NvbmZpZy05NC1cXHR0cmlzdGF0ZSBcXFwiWkhBVyBJbkVTIFBUUCB0aW1lIHN0YW1waW5nIElQIGNvcmVcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEwMy1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjEwNDpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfUENIXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMDUtXFx0dHJpc3RhdGUgXFxcIkludGVsIFBDSCBFRzIwVCBhcyBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEyMi1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjEyMzpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfS1ZNXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMjQtXFx0dHJpc3RhdGUgXFxcIktWTSB2aXJ0dWFsIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTM0LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTM1OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19WTUNMT0NLXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMzYtXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgbWFjaGluZSBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE1MS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE1Mjpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfSURUODJQMzNcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE1My1cXHR0cmlzdGF0ZSBcXFwiSURUIDgyUDMzeHh4IFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTYzLVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTY0OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JRFRDTVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTY1LVxcdHRyaXN0YXRlIFxcXCJJRFQgQ0xPQ0tNQVRSSVggYXMgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNzUtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoxNzY6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0ZDM1dcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE3Ny1cXHR0cmlzdGF0ZSBcXFwiUkVORVNBUyBGZW10b0Nsb2NrMyBXaXJlbGVzcyBhcyBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE4Ny1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE4ODpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfTU9DS1xcbmRyaXZlcnMvcHRwL0tjb25maWctMTg5LVxcdHRyaXN0YXRlIFxcXCJNb2NrLXVwIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTk4LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTk5OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19WTVdcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIwMC1cXHR0cmlzdGF0ZSBcXFwiVk13YXJlIHZpcnR1YWwgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0yMTAtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoyMTE6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX09DUFxcbmRyaXZlcnMvcHRwL0tjb25maWctMjEyLVxcdHRyaXN0YXRlIFxcXCJPcGVuQ29tcHV0ZSBUaW1lQ2FyZCBhcyBQVFAgY2xvY2tcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU1OjMzLjkyNDg1NTA3NloiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTc0ODM0OTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgYGRyaXZlcnMvcHRwL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSA4LlxuXG4qKkV4YW1pbmluZyB0aGUgUFRQIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBgZHJpdmVycy9wdHAvS2NvbmZpZ2AgZmlsZS4gSSdtIGZvY3VzaW5nIG9uIGxpbmUgOCwgaG9waW5nIHRvIGdldCBhIHF1aWNrIGdyYXNwIG9mIHRoZSBnZW5lcmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhdmFpbGFibGUgZm9yIFByZWNpc2lvbiBUaW1lIFByb3RvY29sIChQVFApIGRyaXZlcnMgaW4gdGhlIGtlcm5lbC4gS25vd2luZyB0aGUgZmlsZSBzdHJ1Y3R1cmUgZnJvbSBwYXN0IGV4cGVyaWVuY2VzLCBJIGV4cGVjdCB0aGlzIHRvIGJlIHRoZSBwb2ludCB3aGVyZSB0aGUgYnJvYWQgZmVhdHVyZSBzZXQgaXMgZGVmaW5lZC4gSSdtIGxvb2tpbmcgZm9yIHRoZSBmb3VuZGF0aW9uYWwgY2hvaWNlczogYXJlIHdlIGRlYWxpbmcgd2l0aCBoYXJkd2FyZS1hc3Npc3RlZCBQVFAsIHNvZnR3YXJlIGltcGxlbWVudGF0aW9ucywgb3IgbWF5YmUgb3B0aW9ucyBmb3Igc3BlY2lmaWMgbmV0d29yayBpbnRlcmZhY2UgY29udHJvbGxlcnM/IEknbSBhbnRpY2lwYXRpbmcgZmluZGluZyB0aGUgbWFpbiBLY29uZmlnIHN5bWJvbCBhbmQgaXRzIGRlcGVuZGVuY2llcyBvciBwb3NzaWJsZSBkZWZhdWx0cyBoZXJlLiBUaGlzIHNob3VsZCBnaXZlIG1lIHRoZSBicm9hZCBzdHJva2VzIG9mIGhvdyB0aGUgUFRQIHN1YnN5c3RlbSBpcyBzdHJ1Y3R1cmVkIGZyb20gYSBjb25maWd1cmF0aW9uIHN0YW5kcG9pbnQsIHNvIEkgY2FuIGJldHRlciBncmFzcCBob3cgdG8gdGFpbG9yIG15IHN5c3RlbXMuIEhvcGVmdWxseSwgdGhpcyBzZWN0aW9uIHdpbGwgcG9pbnQgbWUgaW4gdGhlIHJpZ2h0IGRpcmVjdGlvbiB0byB1bmRlcnN0YW5kIHRoZSBmaW5lciBkZXRhaWxzIGxhdGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTY0NSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU1OjM3LjQ5OTY5MjY0MVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDA4MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9wdHAvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBQVFAgY2xvY2sgc3VwcG9ydCBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdG1lbnUgXFxcIlBUUCBjbG9jayBzdXBwb3J0XFxcIlxcbiAgIDc6XFx0XFxuICAgODpcXHRjb25maWcgUFRQXzE1ODhfQ0xPQ0tcXG4gICA5OlxcdFxcdHRyaXN0YXRlIFxcXCJQVFAgY2xvY2sgc3VwcG9ydFxcXCJcXG4gIDEwOlxcdFxcdGRlcGVuZHMgb24gTkVUIFxcdTAwMjZcXHUwMDI2IFBPU0lYX1RJTUVSU1xcbiAgMTE6XFx0XFx0ZGVmYXVsdCBFVEhFUk5FVFxcbiAgMTI6XFx0XFx0c2VsZWN0IFBQU1xcbiAgMTM6XFx0XFx0c2VsZWN0IE5FVF9QVFBfQ0xBU1NJRllcXG4gIDE0OlxcdFxcdGhlbHBcXG4gIDE1OlxcdFxcdCAgVGhlIElFRUUgMTU4OCBzdGFuZGFyZCBkZWZpbmVzIGEgbWV0aG9kIHRvIHByZWNpc2VseVxcbiAgMTY6XFx0XFx0ICBzeW5jaHJvbml6ZSBkaXN0cmlidXRlZCBjbG9ja3Mgb3ZlciBFdGhlcm5ldCBuZXR3b3Jrcy4gVGhlXFxuICAxNzpcXHRcXHQgIHN0YW5kYXJkIGRlZmluZXMgYSBQcmVjaXNpb24gVGltZSBQcm90b2NvbCAoUFRQKSwgd2hpY2ggY2FuXFxuICAxODpcXHRcXHQgIGJlIHVzZWQgdG8gYWNoaWV2ZSBzeW5jaHJvbml6YXRpb24gd2l0aGluIGEgZmV3IGRvemVuXFxuICAxOTpcXHRcXHQgIG1pY3Jvc2Vjb25kcy4gSW4gYWRkaXRpb24sIHdpdGggdGhlIGhlbHAgb2Ygc3BlY2lhbCBoYXJkd2FyZVxcbiAgMjA6XFx0XFx0ICB0aW1lIHN0YW1waW5nIHVuaXRzLCBpdCBjYW4gYmUgcG9zc2libGUgdG8gYWNoaWV2ZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNjo1NTozNy40OTk3OTQ3NzFaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA2MTQ0NDYzNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIERQODM2NDAgUEhZIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGhlcmUncyBteSBicmVha2Rvd24uIEZpcnN0LCBJIG5vdGljZWQgdGhlIGRlcGVuZGVuY2llcy4gYFBUUF8xNTg4X0NMT0NLYCBpcyByZWxpYW50IG9uIGBORVRgIGFuZCBgUE9TSVhfVElNRVJTYCwgYm90aCBvZiB3aGljaCBhcmUgc3RhbmRhcmQgY29tcG9uZW50cy4gYERQODM2NDBfUEhZYCBkZXBlbmRzIG9uIGBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdgLCBgUEhZTElCYCwgYW5kLCBjcnVjaWFsbHksIGBQVFBfMTU4OF9DTE9DS2AuIFRoZXJlZm9yZSwgYSBzZW5zaWJsZSBgRW5hYmxlQ29uZmlnc2AgbGlzdCBzaG91bGQgaW5jbHVkZSBgRFA4MzY0MF9QSFlgLCBgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HYCwgYFBIWUxJQmAsIGFuZCBgUFRQXzE1ODhfQ0xPQ0tgLlxuXG5OZXh0LCBJIGV4YW1pbmVkIHRoZSBgRm9jdXNTeW1ib2xzYC4gVGhlIHBhdGNoIGlzIG1vZGlmeWluZyBzZXZlcmFsIGZ1bmN0aW9uczogYGRwODM2NDBfcHJvYmVgLCBgZHA4MzY0MF9yZW1vdmVgLCBgZHA4MzY0MF9jbG9ja19pbml0YCwgYHBoeV9wYWNrYWdlX2xvY2tgLCBhbmQgYHBoeV9wYWNrYWdlX3VubG9ja2AuIEFsdGhvdWdoIGBkcDgzNjQwX2Nsb2NrX2luaXRgIGlzIHN0YXRpYyBhbmQgY2FsbGVkIGludGVybmFsbHksIEkgd2lsbCBpbmNsdWRlIGl0LiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGxpc3QgYGRwODM2NDBfcHJvYmVgLCBgZHA4MzY0MF9yZW1vdmVgLCBgcGh5X3BhY2thZ2VfbG9ja2AsIGFuZCBgcGh5X3BhY2thZ2VfdW5sb2NrYC4gQnV0IHdhaXQsIGBkcDgzNjQwX3Byb2JlYCBhbmQgYGRwODM2NDBfcmVtb3ZlYCBhcmUgc3RhdGljIGZ1bmN0aW9ucywgaG93ZXZlciB0aGV5ICphcmUqIGFzc2lnbmVkIHRvIGZ1bmN0aW9uIHBvaW50ZXJzIHdpdGhpbiBgZHA4MzY0MF9kcml2ZXJgLiBUaGF0J3MgaW1wb3J0YW50OyB0aGV5IGFyZSB0aGUgZHJpdmVyJ3MgZW50cnkgcG9pbnRzLiBTbywgSSB3aWxsIGluY2x1ZGUgdGhlbSBpbiBteSBsaXN0LiBgcGh5X3BhY2thZ2VfbG9ja2AgYW5kIGBwaHlfcGFja2FnZV91bmxvY2tgIGFyZSBleHBvcnRlZCBmdW5jdGlvbnMsIHNvIHRoZXkgYXJlIGRlZmluaXRlbHkgcmVsZXZhbnQuXG5cbk5vdywgbGV0J3MgcmV2aWV3IHRoZSByYXRpb25hbGUuIFRoZSBwYXRjaCByZWZhY3RvcnMgdGhlIGRyaXZlciB0byB1c2UgdGhlIHN0YW5kYXJkIGBwaHlfcGFja2FnZWAgQVBJIHJhdGhlciB0aGFuIGEgY3VzdG9tIGdsb2JhbCBsaXN0IGZvciBzaGFyZWQgY2xvY2sgaW5pdGlhbGl6YXRpb24uIFRoZXkncmUgYWxzbyBhZGRpbmcgYHBoeV9wYWNrYWdlX2xvY2tgIGFuZCBgcGh5X3BhY2thZ2VfdW5sb2NrYCB0byBzZXJpYWxpemUgYWNjZXNzIHRvIHBhY2thZ2UtcHJpdmF0ZSBkYXRhLiBUaGVzZSBjaGFuZ2VzIHRvdWNoIHRoZSBwcm9iZSBhbmQgcmVtb3ZlIHBhdGhzIG9mIHRoZSBQSFkgZHJpdmVyLiBUaGVzZSBwYXRocyBjYW4gYmUgcmVhY2hlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IHRocm91Z2ggZW11bGF0aW5nIGFuIE1ESU8gYnVzLCBvciBldmVuIHdpdGggYSBVU0IgbmV0d29yayBkZXZpY2UgdGhhdCBoYXMgdGhlIHNwZWNpZmljIFBIWSBJRC4gR2l2ZW4gdGhpcywgZnV6emluZyBtYWtlcyBwZXJmZWN0IHNlbnNlIGhlcmUuIFRoZSBwb3RlbnRpYWwgZm9yIHVuZXhwZWN0ZWQgc3RhdGVzLCBwYXJ0aWN1bGFybHkgYXJvdW5kIHRoZSBsb2NraW5nIG1lY2hhbmlzbXMsIGlzIGhpZ2ggZW5vdWdoIHRvIHdhcnJhbnQgY2xvc2Ugc2NydXRpbnkuXG5cbkZpbmFsbHksIEknbGwgZG8gYSBxdWljayBzd2VlcCB0byBlbnN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZy4gSSd2ZSBub3RlZCB0aGUgcmVtb3ZhbCBvZiBgZHA4MzY0MF9jbG9ja19nZXRfYnVzYCwgYGRwODM2NDBfY2xvY2tfZ2V0YCwgYW5kIGBkcDgzNjQwX2Nsb2NrX3B1dGAsIGFuZCBJJ3ZlIGFsc28gbm90ZWQgdGhhdCBgZHA4MzY0MF9jbG9ja19pbml0YCBoYXMgYmVlbiBtb2RpZmllZCwgYWxvbmcgd2l0aCB0aGUgb3RoZXIgc3ltYm9scy4gSSB0aGluayB0aGF0IGNvdmVycyBpdC4gT2theSwgSSdtIHJlYWR5IHRvIHNldCB0aGUgcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIxNzIsIk91dHB1dFRva2VucyI6MTk5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTYyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTY6NTU6NDguMTE0MjQ2OTAzWiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE0NTMxMTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRQODM2NDBfUEhZXCIsXG4gICAgXCJORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcIixcbiAgICBcIlBIWUxJQlwiLFxuICAgIFwiUFRQXzE1ODhfQ0xPQ0tcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkcDgzNjQwX3Byb2JlXCIsXG4gICAgXCJkcDgzNjQwX3JlbW92ZVwiLFxuICAgIFwicGh5X3BhY2thZ2VfbG9ja1wiLFxuICAgIFwicGh5X3BhY2thZ2VfdW5sb2NrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSBEUDgzNjQwIFBIWSBkcml2ZXIgdG8gdXNlIHRoZSBzdGFuZGFyZCBwaHlfcGFja2FnZSBBUEkgZm9yIHNoYXJlZCBjbG9jayBpbml0aWFsaXphdGlvbiwgcmVwbGFjaW5nIGEgY3VzdG9tIGdsb2JhbCBsaXN0LiBJdCBhbHNvIGludHJvZHVjZXMgcGh5X3BhY2thZ2VfbG9jayBhbmQgcGh5X3BhY2thZ2VfdW5sb2NrIHRvIHNlcmlhbGl6ZSBhY2Nlc3MgdG8gcGFja2FnZS1wcml2YXRlIGRhdGEuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IHRoZSBwcm9iZSBhbmQgcmVtb3ZlIHBhdGhzIG9mIHRoZSBQSFkgZHJpdmVyLCB3aGljaCBjYW4gYmUgcmVhY2hlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGJ5IGVtdWxhdGluZyBhbiBNRElPIGJ1cyBvciBhIFVTQiBuZXR3b3JrIGRldmljZSB3aXRoIHRoZSBzcGVjaWZpYyBQSFkgSUQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRFA4MzY0MF9QSFlcIixcbiAgICBcIk5FVFdPUktfUEhZX1RJTUVTVEFNUElOR1wiLFxuICAgIFwiUEhZTElCXCIsXG4gICAgXCJQVFBfMTU4OF9DTE9DS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRwODM2NDBfcHJvYmVcIixcbiAgICBcImRwODM2NDBfcmVtb3ZlXCIsXG4gICAgXCJwaHlfcGFja2FnZV9sb2NrXCIsXG4gICAgXCJwaHlfcGFja2FnZV91bmxvY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgdGhlIERQODM2NDAgUEhZIGRyaXZlciB0byB1c2UgdGhlIHN0YW5kYXJkIHBoeV9wYWNrYWdlIEFQSSBmb3Igc2hhcmVkIGNsb2NrIGluaXRpYWxpemF0aW9uLCByZXBsYWNpbmcgYSBjdXN0b20gZ2xvYmFsIGxpc3QuIEl0IGFsc28gaW50cm9kdWNlcyBwaHlfcGFja2FnZV9sb2NrIGFuZCBwaHlfcGFja2FnZV91bmxvY2sgdG8gc2VyaWFsaXplIGFjY2VzcyB0byBwYWNrYWdlLXByaXZhdGUgZGF0YS4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIHByb2JlIGFuZCByZW1vdmUgcGF0aHMgb2YgdGhlIFBIWSBkcml2ZXIsIHdoaWNoIGNhbiBiZSByZWFjaGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgYnkgZW11bGF0aW5nIGFuIE1ESU8gYnVzIG9yIGEgVVNCIG5ldHdvcmsgZGV2aWNlIHdpdGggdGhlIHNwZWNpZmljIFBIWSBJRC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTY6NTU6NDguMTg1NzA1NDg4WiIsIlNlcSI6MzUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTk4OTY0NTY5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU1OjQ4LjE4NjEzOTQzOFoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozMTk4OTIwNzkyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSBkcDgzNjQwIFBIWSBkcml2ZXIgdG8gdXNlIHRoZSBzdGFuZGFyZCBgcGh5X3BhY2thZ2Vfam9pbmAgQVBJIGZvciBtYW5hZ2luZyBzaGFyZWQgY2xvY2sgc3RydWN0dXJlcywgcmVwbGFjaW5nIGEgY3VzdG9tIGdsb2JhbCBsaXN0IGFuZCBtYW51YWwgYWxsb2NhdGlvbnMuIFRoZSBzaGFyZWQgc3RydWN0dXJlIGBkcDgzNjQwX2Nsb2NrYCAoYW5kIGl0cyBlbWJlZGRlZCBgcGluX2NvbmZpZ2AgYXJyYXkpIGlzIGFsbG9jYXRlZCB2aWEgYGt6YWxsb2NgIGluc2lkZSBgcGh5X3BhY2thZ2Vfam9pbmAsIGVuc3VyaW5nIGFsbCBmaWVsZHMgYW5kIHBhZGRpbmcgYXJlIGZ1bGx5IHplcm8taW5pdGlhbGl6ZWQuIFRoZXJlIGFyZSBubyBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2guIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGludm9sdmUgb2JqZWN0IGxpZmVjeWNsZSBpc3N1ZXMgKGxpa2UgdXNlLWFmdGVyLWZyZWUgb3IgbWVtb3J5IGxlYWtzKSBvciBsb2NraW5nIGlzc3Vlcywgd2hpY2ggYXJlIGFscmVhZHkgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIExPQ0tERVAuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMTViNzBkZGFhN2YzZGZmMzZiZDUxZTdlMmM2OGVlYzA4NTE5YTIzZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDEwIDE2OjUzOjU5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYyBiL2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmNcbmluZGV4IDk4NDcyYWJkZDM5MjAuLjY4NjdlN2M2ZjNiN2UgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jXG5AQCAtMjEsNiArMjEsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwiZHA4MzY0MF9yZWcuaFwiXG4rI2luY2x1ZGUgXCJwaHlsaWIuaFwiXG4gXG4gI2RlZmluZSBEUDgzNjQwX1BIWV9JRFx0MHgyMDAwNWNlMVxuICNkZWZpbmUgUEFHRVNFTFx0XHQweDEzXG5AQCAtMTI4LDEwICsxMjksNiBAQCBzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlIHtcbiB9O1xuIFxuIHN0cnVjdCBkcDgzNjQwX2Nsb2NrIHtcbi1cdC8qIGtlZXBzIHRoZSBpbnN0YW5jZSBpbiB0aGUgJ3BoeXRlcl9jbG9ja3MnIGxpc3QgKi9cbi1cdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcbi1cdC8qIHdlIGNyZWF0ZSBvbmUgY2xvY2sgaW5zdGFuY2UgcGVyIE1JSSBidXMgKi9cbi1cdHN0cnVjdCBtaWlfYnVzICpidXM7XG4gXHQvKiBwcm90ZWN0cyBleHRlbmRlZCByZWdpc3RlcnMgZnJvbSBjb25jdXJyZW50IGFjY2VzcyAqL1xuIFx0c3RydWN0IG11dGV4IGV4dHJlZ19sb2NrO1xuIFx0LyogcmVtZW1iZXJzIHdoaWNoIHBhZ2Ugd2FzIGxhc3Qgc2VsZWN0ZWQgKi9cbkBAIC0xNDYsNiArMTQzLDggQEAgc3RydWN0IGRwODM2NDBfY2xvY2sge1xuIFx0c3RydWN0IGxpc3RfaGVhZCBwaHlsaXN0O1xuIFx0LyogcmVmZXJlbmNlIHRvIG91ciBQVFAgaGFyZHdhcmUgY2xvY2sgKi9cbiBcdHN0cnVjdCBwdHBfY2xvY2sgKnB0cF9jbG9jaztcbitcdC8qIHByb3RlY3RlZCBieSB0aGUgUFRQIGNvcmUgcGluIGNvbmZpZ3VyYXRpb24gbG9jayAqL1xuK1x0c3RydWN0IHB0cF9waW5fZGVzYyBwaW5fY29uZmlnW0RQODM2NDBfTl9QSU5TXTtcbiB9O1xuIFxuIC8qIGdsb2JhbHMgKi9cbkBAIC0yMDYsMTAgKzIwNSw2IEBAIHN0YXRpYyB2b2lkIGRwODM2NDBfZ3Bpb19kZWZhdWx0cyhzdHJ1Y3QgcHRwX3Bpbl9kZXNjICpwZClcbiBcdH1cbiB9XG4gXG4tLyogYSBsaXN0IG9mIGNsb2NrcyBhbmQgYSBtdXRleCB0byBwcm90ZWN0IGl0ICovXG4tc3RhdGljIExJU1RfSEVBRChwaHl0ZXJfY2xvY2tzKTtcbi1zdGF0aWMgREVGSU5FX01VVEVYKHBoeXRlcl9jbG9ja3NfbG9jayk7XG4tXG4gc3RhdGljIHZvaWQgcnhfdGltZXN0YW1wX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbiBcbiAvKiBleHRlbmRlZCByZWdpc3RlciBhY2Nlc3MgZnVuY3Rpb25zICovXG5AQCAtOTUzLDEzICs5NDgsMTIgQEAgc3RhdGljIHZvaWQgZGVjb2RlX3N0YXR1c19mcmFtZShzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICpkcDgzNjQwLFxuIFx0fVxuIH1cbiBcbi1zdGF0aWMgdm9pZCBkcDgzNjQwX2Nsb2NrX2luaXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrLCBzdHJ1Y3QgbWlpX2J1cyAqYnVzKVxuK3N0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfaW5pdChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2spXG4ge1xuLVx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2Y2xvY2stXHUwMDNlbGlzdCk7XG4tXHRjbG9jay1cdTAwM2VidXMgPSBidXM7XG4gXHRtdXRleF9pbml0KFx1MDAyNmNsb2NrLVx1MDAzZWV4dHJlZ19sb2NrKTtcbiBcdG11dGV4X2luaXQoXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZjbG9jay1cdTAwM2VwaHlsaXN0KTtcbitcdGNsb2NrLVx1MDAzZWNhcHMucGluX2NvbmZpZyA9IGNsb2NrLVx1MDAzZXBpbl9jb25maWc7XG4gXHRjbG9jay1cdTAwM2VjYXBzLm93bmVyID0gVEhJU19NT0RVTEU7XG4gXHRzcHJpbnRmKGNsb2NrLVx1MDAzZWNhcHMubmFtZSwgXCJkcDgzNjQwIHRpbWVyXCIpO1xuIFx0Y2xvY2stXHUwMDNlY2Fwcy5tYXhfYWRqXHQ9IDE5NTMxMjQ7XG5AQCAtOTc3LDE0ICs5NzEsOCBAQCBzdGF0aWMgdm9pZCBkcDgzNjQwX2Nsb2NrX2luaXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrLCBzdHJ1Y3QgbWlpX2J1cyAqYnVzKVxuIFx0Y2xvY2stXHUwMDNlY2Fwcy5zZXR0aW1lNjRcdD0gcHRwX2RwODM2NDBfc2V0dGltZTtcbiBcdGNsb2NrLVx1MDAzZWNhcHMuZW5hYmxlXHQ9IHB0cF9kcDgzNjQwX2VuYWJsZTtcbiBcdGNsb2NrLVx1MDAzZWNhcHMudmVyaWZ5XHQ9IHB0cF9kcDgzNjQwX3ZlcmlmeTtcbi1cdC8qXG4tXHQgKiBDb252ZXJ0IHRoZSBtb2R1bGUgcGFyYW0gZGVmYXVsdHMgaW50byBhIGR5bmFtaWMgcGluIGNvbmZpZ3VyYXRpb24uXG4tXHQgKi9cbitcdC8qIEluaXRpYWxpemUgdGhlIHJ1bnRpbWUgcGluIGNvbmZpZ3VyYXRpb24gZnJvbSBncGlvX3RhYi4gKi9cbiBcdGRwODM2NDBfZ3Bpb19kZWZhdWx0cyhjbG9jay1cdTAwM2VjYXBzLnBpbl9jb25maWcpO1xuLVx0Lypcbi1cdCAqIEdldCBhIHJlZmVyZW5jZSB0byB0aGlzIGJ1cyBpbnN0YW5jZS5cbi1cdCAqL1xuLVx0Z2V0X2RldmljZShcdTAwMjZidXMtXHUwMDNlZGV2KTtcbiB9XG4gXG4gc3RhdGljIGludCBjaG9vc2VfdGhpc19waHkoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrLFxuQEAgLTk5OSw1OCArOTg3LDYgQEAgc3RhdGljIGludCBjaG9vc2VfdGhpc19waHkoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLXN0YXRpYyBzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqZHA4MzY0MF9jbG9ja19nZXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrKVxuLXtcbi1cdGlmIChjbG9jaylcbi1cdFx0bXV0ZXhfbG9jayhcdTAwMjZjbG9jay1cdTAwM2VjbG9ja19sb2NrKTtcbi1cdHJldHVybiBjbG9jaztcbi19XG4tXG4tLypcbi0gKiBMb29rIHVwIGFuZCBsb2NrIGEgY2xvY2sgYnkgYnVzIGluc3RhbmNlLlxuLSAqIElmIHRoZXJlIGlzIG5vIGNsb2NrIGZvciB0aGlzIGJ1cywgdGhlbiBjcmVhdGUgaXQgZmlyc3QuXG4tICovXG4tc3RhdGljIHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpkcDgzNjQwX2Nsb2NrX2dldF9idXMoc3RydWN0IG1paV9idXMgKmJ1cylcbi17XG4tXHRzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2sgPSBOVUxMLCAqdG1wO1xuLVx0c3RydWN0IGxpc3RfaGVhZCAqdGhpcztcbi1cbi1cdG11dGV4X2xvY2soXHUwMDI2cGh5dGVyX2Nsb2Nrc19sb2NrKTtcbi1cbi1cdGxpc3RfZm9yX2VhY2godGhpcywgXHUwMDI2cGh5dGVyX2Nsb2Nrcykge1xuLVx0XHR0bXAgPSBsaXN0X2VudHJ5KHRoaXMsIHN0cnVjdCBkcDgzNjQwX2Nsb2NrLCBsaXN0KTtcbi1cdFx0aWYgKHRtcC1cdTAwM2VidXMgPT0gYnVzKSB7XG4tXHRcdFx0Y2xvY2sgPSB0bXA7XG4tXHRcdFx0YnJlYWs7XG4tXHRcdH1cbi1cdH1cbi1cdGlmIChjbG9jaylcbi1cdFx0Z290byBvdXQ7XG4tXG4tXHRjbG9jayA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBkcDgzNjQwX2Nsb2NrKTtcbi1cdGlmICghY2xvY2spXG4tXHRcdGdvdG8gb3V0O1xuLVxuLVx0Y2xvY2stXHUwMDNlY2Fwcy5waW5fY29uZmlnID0ga3phbGxvY19vYmpzKHN0cnVjdCBwdHBfcGluX2Rlc2MsXG4tXHRcdFx0XHRcdCAgICAgIERQODM2NDBfTl9QSU5TKTtcbi1cdGlmICghY2xvY2stXHUwMDNlY2Fwcy5waW5fY29uZmlnKSB7XG4tXHRcdGtmcmVlKGNsb2NrKTtcbi1cdFx0Y2xvY2sgPSBOVUxMO1xuLVx0XHRnb3RvIG91dDtcbi1cdH1cbi1cdGRwODM2NDBfY2xvY2tfaW5pdChjbG9jaywgYnVzKTtcbi1cdGxpc3RfYWRkX3RhaWwoXHUwMDI2Y2xvY2stXHUwMDNlbGlzdCwgXHUwMDI2cGh5dGVyX2Nsb2Nrcyk7XG4tb3V0OlxuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBoeXRlcl9jbG9ja3NfbG9jayk7XG4tXG4tXHRyZXR1cm4gZHA4MzY0MF9jbG9ja19nZXQoY2xvY2spO1xuLX1cbi1cbi1zdGF0aWMgdm9pZCBkcDgzNjQwX2Nsb2NrX3B1dChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2spXG4te1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuLX1cbi1cbiBzdGF0aWMgaW50IGRwODM2NDBfc29mdF9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIHtcbiBcdGludCByZXQ7XG5AQCAtMTQwMCwyMCArMTMzNiwzMSBAQCBzdGF0aWMgaW50IGRwODM2NDBfdHNfaW5mbyhzdHJ1Y3QgbWlpX3RpbWVzdGFtcGVyICptaWlfdHMsXG4gXG4gc3RhdGljIGludCBkcDgzNjQwX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4ge1xuLVx0c3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrO1xuIFx0c3RydWN0IGRwODM2NDBfcHJpdmF0ZSAqZHA4MzY0MDtcbi1cdGludCBlcnIgPSAtRU5PTUVNLCBpO1xuK1x0c3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrO1xuK1x0aW50IGVyciwgaTtcbiBcbiBcdGlmIChwaHlkZXYtXHUwMDNlbWRpby5hZGRyID09IEJST0FEQ0FTVF9BRERSKVxuIFx0XHRyZXR1cm4gMDtcbiBcbi1cdGNsb2NrID0gZHA4MzY0MF9jbG9ja19nZXRfYnVzKHBoeWRldi1cdTAwM2VtZGlvLmJ1cyk7XG4tXHRpZiAoIWNsb2NrKVxuLVx0XHRnb3RvIG5vX2Nsb2NrO1xuK1x0ZXJyID0gcGh5X3BhY2thZ2Vfam9pbihwaHlkZXYsIEJST0FEQ0FTVF9BRERSLCBzaXplb2YoKmNsb2NrKSk7XG4rXHRpZiAoZXJyKVxuK1x0XHRyZXR1cm4gZXJyO1xuK1xuK1x0Y2xvY2sgPSBwaHlfcGFja2FnZV9nZXRfcHJpdihwaHlkZXYpO1xuK1x0LyogRW5zdXJlIG90aGVyIFBIWSBwcm9iZXMgd2FpdCBmb3Igc2hhcmVkIGNsb2NrIGluaXRpYWxpemF0aW9uLiAqL1xuK1x0cGh5X3BhY2thZ2VfbG9jayhwaHlkZXYpO1xuK1x0aWYgKHBoeV9wYWNrYWdlX3Byb2JlX29uY2UocGh5ZGV2KSlcbitcdFx0ZHA4MzY0MF9jbG9ja19pbml0KGNsb2NrKTtcbitcdHBoeV9wYWNrYWdlX3VubG9jayhwaHlkZXYpO1xuK1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZjbG9jay1cdTAwM2VjbG9ja19sb2NrKTtcbiBcbiBcdGRwODM2NDAgPSBremFsbG9jX29iaihzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlKTtcbi1cdGlmICghZHA4MzY0MClcbitcdGlmICghZHA4MzY0MCkge1xuK1x0XHRlcnIgPSAtRU5PTUVNO1xuIFx0XHRnb3RvIG5vX21lbW9yeTtcbitcdH1cbiBcbiBcdGRwODM2NDAtXHUwMDNlcGh5ZGV2ID0gcGh5ZGV2O1xuIFx0ZHA4MzY0MC1cdTAwM2VtaWlfdHMucnh0c3RhbXAgPSBkcDgzNjQwX3J4dHN0YW1wO1xuQEAgLTE0NTAsMTUgKzEzOTcsMjAgQEAgc3RhdGljIGludCBkcDgzNjQwX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHR9IGVsc2VcbiBcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZkcDgzNjQwLVx1MDAzZWxpc3QsIFx1MDAyNmNsb2NrLVx1MDAzZXBoeWxpc3QpO1xuIFxuLVx0ZHA4MzY0MF9jbG9ja19wdXQoY2xvY2spO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuK1xuIFx0cmV0dXJuIDA7XG4gXG4gbm9fcmVnaXN0ZXI6XG4gXHRjbG9jay1cdTAwM2VjaG9zZW4gPSBOVUxMO1xuK1x0Y2xvY2stXHUwMDNlcHRwX2Nsb2NrID0gTlVMTDtcbitcdHBoeWRldi1cdTAwM2VkZWZhdWx0X3RpbWVzdGFtcCA9IGZhbHNlO1xuK1x0cGh5ZGV2LVx1MDAzZW1paV90cyA9IE5VTEw7XG4rXHRwaHlkZXYtXHUwMDNlcHJpdiA9IE5VTEw7XG4gXHRrZnJlZShkcDgzNjQwKTtcbiBub19tZW1vcnk6XG4tXHRkcDgzNjQwX2Nsb2NrX3B1dChjbG9jayk7XG4tbm9fY2xvY2s6XG4rXHRtdXRleF91bmxvY2soXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4rXHRwaHlfcGFja2FnZV9sZWF2ZShwaHlkZXYpO1xuIFx0cmV0dXJuIGVycjtcbiB9XG4gXG5AQCAtMTQ2Nyw3ICsxNDE5LDYgQEAgc3RhdGljIHZvaWQgZHA4MzY0MF9yZW1vdmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaztcbiBcdHN0cnVjdCBsaXN0X2hlYWQgKnRoaXMsICpuZXh0O1xuIFx0c3RydWN0IGRwODM2NDBfcHJpdmF0ZSAqdG1wLCAqZHA4MzY0MCA9IHBoeWRldi1cdTAwM2Vwcml2O1xuLVx0Ym9vbCByZW1vdmVfY2xvY2sgPSBmYWxzZTtcbiBcbiBcdGlmIChwaHlkZXYtXHUwMDNlbWRpby5hZGRyID09IEJST0FEQ0FTVF9BRERSKVxuIFx0XHRyZXR1cm47XG5AQCAtMTQ4MCw3ICsxNDMxLDggQEAgc3RhdGljIHZvaWQgZHA4MzY0MF9yZW1vdmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdHNrYl9xdWV1ZV9wdXJnZShcdTAwMjZkcDgzNjQwLVx1MDAzZXJ4X3F1ZXVlKTtcbiBcdHNrYl9xdWV1ZV9wdXJnZShcdTAwMjZkcDgzNjQwLVx1MDAzZXR4X3F1ZXVlKTtcbiBcbi1cdGNsb2NrID0gZHA4MzY0MF9jbG9ja19nZXQoZHA4MzY0MC1cdTAwM2VjbG9jayk7XG4rXHRjbG9jayA9IGRwODM2NDAtXHUwMDNlY2xvY2s7XG4rXHRtdXRleF9sb2NrKFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuIFxuIFx0aWYgKGRwODM2NDAgPT0gY2xvY2stXHUwMDNlY2hvc2VuKSB7XG4gXHRcdHB0cF9jbG9ja191bnJlZ2lzdGVyKGNsb2NrLVx1MDAzZXB0cF9jbG9jayk7XG5AQCAtMTQ5NSwyMyArMTQ0NywxMCBAQCBzdGF0aWMgdm9pZCBkcDgzNjQwX3JlbW92ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0XHR9XG4gXHR9XG4gXG4tXHRpZiAoIWNsb2NrLVx1MDAzZWNob3NlbiBcdTAwMjZcdTAwMjYgbGlzdF9lbXB0eShcdTAwMjZjbG9jay1cdTAwM2VwaHlsaXN0KSlcbi1cdFx0cmVtb3ZlX2Nsb2NrID0gdHJ1ZTtcbi1cbi1cdGRwODM2NDBfY2xvY2tfcHV0KGNsb2NrKTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZjbG9jay1cdTAwM2VjbG9ja19sb2NrKTtcbiBcdGtmcmVlKGRwODM2NDApO1xuIFxuLVx0aWYgKHJlbW92ZV9jbG9jaykge1xuLVx0XHRtdXRleF9sb2NrKFx1MDAyNnBoeXRlcl9jbG9ja3NfbG9jayk7XG4tXHRcdGxpc3RfZGVsKFx1MDAyNmNsb2NrLVx1MDAzZWxpc3QpO1xuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2cGh5dGVyX2Nsb2Nrc19sb2NrKTtcbi1cbi1cdFx0bXV0ZXhfZGVzdHJveShcdTAwMjZjbG9jay1cdTAwM2VleHRyZWdfbG9jayk7XG4tXHRcdG11dGV4X2Rlc3Ryb3koXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4tXHRcdHB1dF9kZXZpY2UoXHUwMDI2Y2xvY2stXHUwMDNlYnVzLVx1MDAzZWRldik7XG4tXHRcdGtmcmVlKGNsb2NrLVx1MDAzZWNhcHMucGluX2NvbmZpZyk7XG4tXHRcdGtmcmVlKGNsb2NrKTtcbi1cdH1cbitcdHBoeV9wYWNrYWdlX2xlYXZlKHBoeWRldik7XG4gfVxuIFxuIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkcDgzNjQwX2RyaXZlcltdID0ge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmNcbmluZGV4IDE2YWU4ZDFjMWY4OWEuLjczNTgwNmM1YmVhODggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuY1xuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmNcbkBAIC01Miw2ICs1MiwyOSBAQCB2b2lkICpwaHlfcGFja2FnZV9nZXRfcHJpdihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChwaHlfcGFja2FnZV9nZXRfcHJpdik7XG4gXG4rLyoqXG4rICogcGh5X3BhY2thZ2VfbG9jayAtIGFjcXVpcmUgdGhlIFBIWSBwYWNrYWdlIGxvY2tcbisgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHRoYXQgaGFzIGpvaW5lZCB0aGUgcGFja2FnZVxuKyAqXG4rICogVXNlIHRoaXMgdG8gc2VyaWFsaXplIGFjY2VzcyB0byBwYWNrYWdlLXByaXZhdGUgZGF0YS4gUmVsZWFzZSB0aGUgbG9ja1xuKyAqIHdpdGggcGh5X3BhY2thZ2VfdW5sb2NrKCkuXG4rICovXG4rdm9pZCBwaHlfcGFja2FnZV9sb2NrKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4re1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5idXMtXHUwMDNlc2hhcmVkX2xvY2spO1xuK31cbitFWFBPUlRfU1lNQk9MX0dQTChwaHlfcGFja2FnZV9sb2NrKTtcbitcbisvKipcbisgKiBwaHlfcGFja2FnZV91bmxvY2sgLSByZWxlYXNlIHRoZSBQSFkgcGFja2FnZSBsb2NrXG4rICogQHBoeWRldjogUEhZIGRldmljZSB0aGF0IGhhcyBqb2luZWQgdGhlIHBhY2thZ2VcbisgKi9cbit2b2lkIHBoeV9wYWNrYWdlX3VubG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuK3tcbitcdG11dGV4X3VubG9jayhcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5idXMtXHUwMDNlc2hhcmVkX2xvY2spO1xuK31cbitFWFBPUlRfU1lNQk9MX0dQTChwaHlfcGFja2FnZV91bmxvY2spO1xuK1xuIHN0YXRpYyBpbnQgcGh5X3BhY2thZ2VfYWRkcmVzcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuIFx0XHRcdCAgICAgICB1bnNpZ25lZCBpbnQgYWRkcl9vZmZzZXQpXG4ge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaWIuaCBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaWIuaFxuaW5kZXggMGZiYTI0NWY5NzQ1OC4uYzZlMjZhYzZiMjhmMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaWIuaFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oXG5AQCAtMTIsNiArMTIsOCBAQCBzdHJ1Y3QgbWlpX2J1cztcbiBcbiBzdHJ1Y3QgZGV2aWNlX25vZGUgKnBoeV9wYWNrYWdlX2dldF9ub2RlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuIHZvaWQgKnBoeV9wYWNrYWdlX2dldF9wcml2KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuK3ZvaWQgcGh5X3BhY2thZ2VfbG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbit2b2lkIHBoeV9wYWNrYWdlX3VubG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbiBpbnQgX19waHlfcGFja2FnZV9yZWFkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHVuc2lnbmVkIGludCBhZGRyX29mZnNldCxcbiBcdFx0ICAgICAgIHUzMiByZWdudW0pO1xuIGludCBfX3BoeV9wYWNrYWdlX3dyaXRlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHVuc2lnbmVkIGludCBhZGRyX29mZnNldCxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3B0cC9LY29uZmlnIGIvZHJpdmVycy9wdHAvS2NvbmZpZ1xuaW5kZXggYjkzNjQwY2EwOGI3Mi4uZmViNTBmOGNjNDA2YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvcHRwL0tjb25maWdcbisrKyBiL2RyaXZlcnMvcHRwL0tjb25maWdcbkBAIC03OCw2ICs3OCw3IEBAIGNvbmZpZyBEUDgzNjQwX1BIWVxuIFx0ZGVwZW5kcyBvbiBQSFlMSUJcbiBcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tcbiBcdHNlbGVjdCBDUkMzMlxuK1x0c2VsZWN0IFBIWV9QQUNLQUdFXG4gXHRoZWxwXG4gXHQgIFN1cHBvcnRzIHRoZSBEUDgzNjQwIFBIWVRFUiB3aXRoIElFRUUgMTU4OCBmZWF0dXJlcy5cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU1OjQ4LjE4NjE0MDQ2OFoiLCJTZXEiOjM3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjA3MzEwNDc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRFA4MzY0MCBQSFkgRHJpdmVyIE1vZGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZGlnZ2luZyBpbnRvIHRoZSBgZHA4MzY0MGAgUEhZIGRyaXZlciwgc3BlY2lmaWNhbGx5IG1lc3Npbmcgd2l0aCBob3cgdGhlIGBkcDgzNjQwX2Nsb2NrYCBzdHJ1Y3R1cmUgaXMgaGFuZGxlZC4gSXQncyBhbHNvIHRvdWNoaW5nIHRoZSBgcGh5X3BhY2thZ2VgIGNvcmUgY29kZSwgd2hpY2ggaXMgaW50ZXJlc3RpbmcgYmVjYXVzZSB0aGF0J3Mgd2hlcmUgc2hhcmVkIFBIWSByZXNvdXJjZXMgYXJlIG1hbmFnZWQuXG5cblByZXZpb3VzbHksIHRoZSBgZHA4MzY0MF9jbG9ja2Agd2FzIGFsbG9jYXRlZCB3aXRoIGBremFsbG9jYCBhbmQgdG9zc2VkIGludG8gYSBnbG9iYWwgbGlzdCwgYHBoeXRlcl9jbG9ja3NgLiBBIGdsb2JhbCBsaXN0IGlzIGZpbmUsIGJ1dCBpdCBjYW4gYmUgcHJvYmxlbWF0aWMgd2l0aCB0aHJlYWRpbmcsIGFuZCBnZW5lcmFsbHkgbWFrZXMgY29kZSBoYXJkZXIgdG8gZm9sbG93LiBOb3csIHRoZSBwYXRjaCBpcyBzd2FwcGluZyB0aGF0IG91dCBmb3IgYHBoeV9wYWNrYWdlX2pvaW5gIGFuZCBgcGh5X3BhY2thZ2VfZ2V0X3ByaXZgIGZvciBtYW5hZ2luZyB0aGUgc2hhcmVkIGNsb2NrLiBUaGF0J3MgYSBnb29kIGFwcHJvYWNoIGZvciByZXNvdXJjZSBzaGFyaW5nIGFtb25nIGRldmljZXMsIGFzIGl0IHdpbGwgcmVkdWNlIHJlZHVuZGFuY3kuXG5cblRoZSBvdGhlciBjaGFuZ2UgaXMgdGhhdCB0aGUgYHBpbl9jb25maWdgIGFycmF5LCB3aGljaCB1c2VkIHRvIGJlIGBremFsbG9jYC1lZCwgaXMgbm93IGVtYmVkZGVkIGRpcmVjdGx5IHdpdGhpbiB0aGUgYHN0cnVjdCBkcDgzNjQwX2Nsb2NrYCBhcyBgc3RydWN0IHB0cF9waW5fZGVzYyBwaW5fY29uZmlnW0RQODM2NDBfTl9QSU5TXWAuIFNvIHdlIGFyZSByZW1vdmluZyB0aGUgYWxsb2NhdGlvbiBhbmQgbWFuYWdlbWVudCBvZiBhIGRlZGljYXRlZCBhcnJheSwgYXMgdGhlIGFycmF5IGlzIGluY2x1ZGVkIHdpdGhpbiB0aGUgc3RydWN0IGFuZCBzbyBpdCBpcyBhbGxvY2F0ZWQgYW5kIGZyZWVkIHdpdGggdGhlIHN0cnVjdC4gVGhpcyBzZWVtcyBjbGVhbmVyIGFuZCBsZXNzIHByb25lIHRvIG1lbW9yeSBsZWFrcyBpZiBkb25lIGNvcnJlY3RseS5cblxuTm93LCBhIHJlZCBmbGFnIGp1c3Qgd2VudCB1cCBpbiBteSBoZWFkLiBXaGVuZXZlciBJIHNlZSBhbGxvY2F0aW9uIGNoYW5nZXMsIHRoZSBmaXJzdCB0aGluZyBJIGRvIGlzIGNoZWNrIGZvciB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gV2UgbmVlZCB0byB2ZXJpZnkgdGhhdCBgcGh5X3BhY2thZ2Vfam9pbmAsIHdoZW4gaXQgYWxsb2NhdGVzIG1lbW9yeSBmb3IgdGhlIHNoYXJlZCBkYXRhLCBhY3R1YWxseSAqemVyb3MqIHRoYXQgbWVtb3J5LiBJZiBpdCBkb2Vzbid0LCB3ZSdyZSBzdGFyaW5nIGRvd24gdGhlIGJhcnJlbCBvZiBhIHBvdGVudGlhbCBzZWN1cml0eSB2dWxuZXJhYmlsaXR5IG9yLCBhdCB0aGUgdmVyeSBsZWFzdCwgdW5wcmVkaWN0YWJsZSBiZWhhdmlvci4gTGV0J3MgZ28gYW5kIGNoZWNrIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgcGh5X3BhY2thZ2Vfam9pbmAgaW1tZWRpYXRlbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0NzgsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNjo1NTo1My43OTM0NTQwNzRaIiwiU2VxIjozOCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NDE1NTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeV9wYWNrYWdlX2pvaW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvYmNtNTQxNDAuYz01ODA9c3RhdGljIGludCBiY201NDE0MF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2JjbTU0MTQwLmMtNTk0LVxcbmRyaXZlcnMvbmV0L3BoeS9iY201NDE0MC5jOjU5NTpcXHRkZXZtX3BoeV9wYWNrYWdlX2pvaW4oXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5kZXYsIHBoeWRldiwgcHJpdi1cXHUwMDNlYmFzZV9hZGRyLCAwKTtcXG5kcml2ZXJzL25ldC9waHkvYmNtNTQxNDAuYy01OTYtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jPTEzMzc9c3RhdGljIGludCBkcDgzNjQwX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTEzNDUtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYzoxMzQ2OlxcdGVyciA9IHBoeV9wYWNrYWdlX2pvaW4ocGh5ZGV2LCBCUk9BRENBU1RfQUREUiwgc2l6ZW9mKCpjbG9jaykpO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTM0Ny1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYz0xMzY0PXN0YXRpYyBpbnQgbXQ3OTg4X3BoeV9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYy0xMzcyLVxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmM6MTM3MzpcXHRlcnIgPSBkZXZtX3BoeV9wYWNrYWdlX2pvaW4oXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5kZXYsIHBoeWRldiwgMCxcXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jLTEzNzQtXFx0XFx0XFx0XFx0ICAgIHNpemVvZihzdHJ1Y3QgbXRrX3NvY3BoeV9zaGFyZWQpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYz00Njg4PXN0YXRpYyBpbnQgbGFuODgxNF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JlbC5jLTQ3MDgtXFx0YWRkciA9IGxhbnBoeV9yZWFkX3BhZ2VfcmVnKHBoeWRldiwgTEFOODgxNF9QQUdFX0NPTU1PTl9SRUdTLCAwKSBcXHUwMDI2IDB4MUY7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JlbC5jOjQ3MDk6XFx0ZGV2bV9waHlfcGFja2FnZV9qb2luKFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2LCBwaHlkZXYsXFxuZHJpdmVycy9uZXQvcGh5L21pY3JlbC5jLTQ3MTAtXFx0XFx0XFx0ICAgICAgYWRkciwgc2l6ZW9mKHN0cnVjdCBsYW44ODE0X3NoYXJlZF9wcml2KSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmM9NjEwMD1zdGF0aWMgaW50IGxhbjg4NDJfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYy02MTUxLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYzo2MTUyOlxcdHJldCA9IGRldm1fcGh5X3BhY2thZ2Vfam9pbihcXHUwMDI2cGh5ZGV2LVxcdTAwM2VtZGlvLmRldiwgcGh5ZGV2LCBhZGRyLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYy02MTUzLVxcdFxcdFxcdFxcdCAgICBzaXplb2Yoc3RydWN0IGxhbjg4MTRfc2hhcmVkX3ByaXYpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jPTIyNDE9c3RhdGljIGludCB2c2M4NXh4X3Byb2JlX2NvbW1vbihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMjI2Ni1cXHRcXHR2c2M4NTg0X2dldF9iYXNlX2FkZHIocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYzoyMjY3OlxcdFxcdHJldCA9IGRldm1fcGh5X3BhY2thZ2Vfam9pbihcXHUwMDI2cGh5ZGV2LVxcdTAwM2VtZGlvLmRldiwgcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jLTIyNjgtXFx0XFx0XFx0XFx0XFx0ICAgIHZzYzg1MzEtXFx1MDAzZWJhc2VfYWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTIyLSAqIFJlcHJlc2VudHMgYSBzaGFyZWQgc3RydWN0dXJlIGJldHdlZW4gZGlmZmVyZW50IHBoeWRldidzIGluIHRoZSBzYW1lXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmM6MjM6ICogcGFja2FnZSwgZm9yIGV4YW1wbGUgYSBxdWFkIFBIWS4gU2VlIHBoeV9wYWNrYWdlX2pvaW4oKSBhbmRcXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0yNC0gKiBwaHlfcGFja2FnZV9sZWF2ZSgpLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmM9MjY9c3RydWN0IHBoeV9wYWNrYWdlX3NoYXJlZCB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0zNi1cXHQgKiB0aGUgdXNlciBoYXMgdG8gdGFrZSBjYXJlIG9mIGFwcHJvcHJpYXRlIGxvY2tpbmcuIEl0IGlzIGFsbG9jYXRlZFxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jOjM3OlxcdCAqIGFuZCBmcmVlZCBhdXRvbWF0aWNhbGx5IGJ5IHBoeV9wYWNrYWdlX2pvaW4oKSBhbmRcXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0zOC1cXHQgKiBwaHlfcGFja2FnZV9sZWF2ZSgpLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmM9MjAyPUVYUE9SVF9TWU1CT0xfR1BMKHBoeV9wYWNrYWdlX3Byb2JlX29uY2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMjA0LS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jOjIwNTogKiBwaHlfcGFja2FnZV9qb2luIC0gam9pbiBhIGNvbW1vbiBQSFkgZ3JvdXBcXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0yMDYtICogQHBoeWRldjogdGFyZ2V0IHBoeV9kZXZpY2Ugc3RydWN0XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0yMjgtICpcXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzoyMjk6ICogUmV0dXJucyBcXHUwMDNjIDEgb24gZXJyb3IsIDAgb24gc3VjY2Vzcy4gRXNwLiBjYWxsaW5nIHBoeV9wYWNrYWdlX2pvaW4oKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTIzMC0gKiB3aXRoIHRoZSBzYW1lIGNvb2tpZSBidXQgYSBkaWZmZXJlbnQgcHJpdl9zaXplIGlzIGFuIGVycm9yLlxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTIzMS0gKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzoyMzI6aW50IHBoeV9wYWNrYWdlX2pvaW4oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGJhc2VfYWRkciwgc2l6ZV90IHByaXZfc2l6ZSlcXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0yMzMte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMjc1LX1cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzoyNzY6RVhQT1JUX1NZTUJPTF9HUEwocGh5X3BhY2thZ2Vfam9pbik7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMjc3LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTI3OC0vKipcXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzoyNzk6ICogb2ZfcGh5X3BhY2thZ2Vfam9pbiAtIGpvaW4gYSBjb21tb24gUEhZIGdyb3VwIGluIFBIWSBwYWNrYWdlXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMjgwLSAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMjgyLSAqXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmM6MjgzOiAqIFRoaXMgaXMgYSB2YXJpYW50IG9mIHBoeV9wYWNrYWdlX2pvaW4gZm9yIFBIWSBwYWNrYWdlIGRlZmluZWQgaW4gRFQuXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMjg0LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0yODYtICogc3RydWN0dXJlIChieSBtYXRjaGluZyB0aGUgbm9kZSBuYW1lIFxcXCJldGhlcm5ldC1waHktcGFja2FnZVxcXCIpIGFuZCB0aGVcXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzoyODc6ICogYmFzZV9hZGRyIGZvciB0aGUgUEhZIHBhY2thZ2UgaXMgcGFzc2VkIHRvIHBoeV9wYWNrYWdlX2pvaW4uXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMjg4LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0yOTItICpcXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzoyOTM6ICogUmV0dXJucyBcXHUwMDNjIDAgb24gZXJyb3IsIDAgb24gc3VjY2Vzcy4gRXNwLiBjYWxsaW5nIHBoeV9wYWNrYWdlX2pvaW4oKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTI5NC0gKiB3aXRoIHRoZSBzYW1lIGNvb2tpZSBidXQgYSBkaWZmZXJlbnQgcHJpdl9zaXplIGlzIGFuIGVycm9yLiBPciBhIHBhcmVudFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMjk3LSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jOjI5ODppbnQgb2ZfcGh5X3BhY2thZ2Vfam9pbihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBzaXplX3QgcHJpdl9zaXplKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTI5OS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0zMjEtXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmM6MzIyOlxcdHJldCA9IHBoeV9wYWNrYWdlX2pvaW4ocGh5ZGV2LCBiYXNlX2FkZHIsIHByaXZfc2l6ZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMzIzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0zMzItfVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jOjMzMzpFWFBPUlRfU1lNQk9MX0dQTChvZl9waHlfcGFja2FnZV9qb2luKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0zMzQtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0zMzgtICpcXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzozMzk6ICogVGhpcyBsZWF2ZXMgYSBQSFkgZ3JvdXAgY3JlYXRlZCBieSBwaHlfcGFja2FnZV9qb2luKCkuIElmIHRoaXMgcGh5ZGV2XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMzQwLSAqIHdhcyB0aGUgbGFzdCB1c2VyIG9mIHRoZSBzaGFyZWQgZGF0YSBiZXR3ZWVuIHRoZSBncm91cCwgdGhpcyBkYXRhIGlzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYz0zNjY9c3RhdGljIHZvaWQgZGV2bV9waHlfcGFja2FnZV9sZWF2ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKnJlcylcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTM3MS0vKipcXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzozNzI6ICogZGV2bV9waHlfcGFja2FnZV9qb2luIC0gcmVzb3VyY2UgbWFuYWdlZCBwaHlfcGFja2FnZV9qb2luKClcXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0zNzMtICogQGRldjogZGV2aWNlIHRoYXQgaXMgcmVnaXN0ZXJpbmcgdGhpcyBQSFkgcGFja2FnZVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMzc4LSAqXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmM6Mzc5OiAqIE1hbmFnZWQgcGh5X3BhY2thZ2Vfam9pbigpLiBTaGFyZWQgc3RvcmFnZSBmZXRjaGVkIGJ5IHRoaXMgZnVuY3Rpb24sXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMzgwLSAqIHBoeV9wYWNrYWdlX2xlYXZlKCkgaXMgYXV0b21hdGljYWxseSBjYWxsZWQgb24gZHJpdmVyIGRldGFjaC4gU2VlXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmM6MzgxOiAqIHBoeV9wYWNrYWdlX2pvaW4oKSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0zODItICovXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmM6MzgzOmludCBkZXZtX3BoeV9wYWNrYWdlX2pvaW4oc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTM4NC1cXHRcXHRcXHQgIGludCBiYXNlX2FkZHIsIHNpemVfdCBwcml2X3NpemUpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0zOTMtXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmM6Mzk0OlxcdHJldCA9IHBoeV9wYWNrYWdlX2pvaW4ocGh5ZGV2LCBiYXNlX2FkZHIsIHByaXZfc2l6ZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMzk1LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtNDA0LX1cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzo0MDU6RVhQT1JUX1NZTUJPTF9HUEwoZGV2bV9waHlfcGFja2FnZV9qb2luKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy00MDYtXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtNDA3LS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jOjQwODogKiBkZXZtX29mX3BoeV9wYWNrYWdlX2pvaW4gLSByZXNvdXJjZSBtYW5hZ2VkIG9mX3BoeV9wYWNrYWdlX2pvaW4oKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTQwOS0gKiBAZGV2OiBkZXZpY2UgdGhhdCBpcyByZWdpc3RlcmluZyB0aGlzIFBIWSBwYWNrYWdlXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy00MTItICpcXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzo0MTM6ICogTWFuYWdlZCBvZl9waHlfcGFja2FnZV9qb2luKCkuIFNoYXJlZCBzdG9yYWdlIGZldGNoZWQgYnkgdGhpcyBmdW5jdGlvbixcXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy00MTQtICogcGh5X3BhY2thZ2VfbGVhdmUoKSBpcyBhdXRvbWF0aWNhbGx5IGNhbGxlZCBvbiBkcml2ZXIgZGV0YWNoLiBTZWVcXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzo0MTU6ICogb2ZfcGh5X3BhY2thZ2Vfam9pbigpIGZvciBtb3JlIGluZm9ybWF0aW9uLlxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTQxNi0gKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzo0MTc6aW50IGRldm1fb2ZfcGh5X3BhY2thZ2Vfam9pbihzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtNDE4LVxcdFxcdFxcdCAgICAgc2l6ZV90IHByaXZfc2l6ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTQyNy1cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzo0Mjg6XFx0cmV0ID0gb2ZfcGh5X3BhY2thZ2Vfam9pbihwaHlkZXYsIHByaXZfc2l6ZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtNDI5LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtNDM4LX1cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzo0Mzk6RVhQT1JUX1NZTUJPTF9HUEwoZGV2bV9vZl9waHlfcGFja2FnZV9qb2luKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy00NDAtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLmg9Mjg9Ym9vbCBwaHlfcGFja2FnZV9wcm9iZV9vbmNlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWIuaDoyOTppbnQgcGh5X3BhY2thZ2Vfam9pbihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgYmFzZV9hZGRyLCBzaXplX3QgcHJpdl9zaXplKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLmg6MzA6aW50IG9mX3BoeV9wYWNrYWdlX2pvaW4oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgc2l6ZV90IHByaXZfc2l6ZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oLTMxLXZvaWQgcGh5X3BhY2thZ2VfbGVhdmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oOjMyOmludCBkZXZtX3BoeV9wYWNrYWdlX2pvaW4oc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWIuaC0zMy1cXHRcXHRcXHQgIGludCBiYXNlX2FkZHIsIHNpemVfdCBwcml2X3NpemUpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWIuaDozNDppbnQgZGV2bV9vZl9waHlfcGFja2FnZV9qb2luKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLmgtMzUtXFx0XFx0XFx0ICAgICBzaXplX3QgcHJpdl9zaXplKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYz02OTQ9c3RhdGljIGludCBxY2E4MDd4X3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNzAxLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo3MDI6XFx0cmV0ID0gZGV2bV9vZl9waHlfcGFja2FnZV9qb2luKGRldiwgcGh5ZGV2LCBzaXplb2YoKnNoYXJlZF9wcml2KSk7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTcwMy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9MjM2Mj1zdGF0aWMgaW50IHJ0bDgyMjRfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTIzNjQtXFx0LyogQ2hpcCBleHBvc2VzIDQgcG9ydHMsIGpvaW4gYWxsIG9mIHRoZW0gaW4gdGhlIHNhbWUgcGFja2FnZSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjIzNjU6XFx0cmV0dXJuIGRldm1fcGh5X3BhY2thZ2Vfam9pbihcXHUwMDI2cGh5ZGV2LVxcdTAwM2VtZGlvLmRldiwgcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTIzNjYtXFx0XFx0XFx0XFx0ICAgICBwaHlkZXYtXFx1MDAzZW1kaW8uYWRkciBcXHUwMDI2IH4zLCAwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTY6NTU6NTMuODM5ODc0MDQxWiIsIlNlcSI6MzksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NDg3OTk1OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgYHBoeV9wYWNrYWdlX2pvaW5gKipcblxuQWxyaWdodCwgdGltZSB0byBkaXZlIGluLiBCYXNlZCBvbiB0aGUgY29udGV4dCwgSSdtIGdvaW5nIHRvIGhlYWQgZGlyZWN0bHkgdG8gdGhlIHNvdXJjZSBjb2RlLiBMZXQncyBzdGFydCB3aXRoIGBwaHlfcGFja2FnZV9qb2luYCwgYW5kIHNwZWNpZmljYWxseSwgSSdsbCBiZSBsb29raW5nIGluIHRoZSBgZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmNgIGZpbGUuIEknbSBnb2luZyB0byBhc3N1bWUgdGhlcmUgaXMgYSBzcGVjaWZpYyByZWFzb24gZm9yIGV4YW1pbmluZyB0aGlzIGZ1bmN0aW9uIG5vdywgcGVyaGFwcyBhIGJ1ZyByZXBvcnQgb3IgcGVyZm9ybWFuY2UgaXNzdWUgcmVsYXRlZCB0byBQSFkgcGFja2FnZSBtYW5hZ2VtZW50LiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSB3aXRoaW4gdGhlIGJyb2FkZXIgUEhZIGRyaXZlciBmcmFtZXdvcmsuIEknbGwgYmUgbG9va2luZyBmb3IgYW55IHBvdGVudGlhbCBzeW5jaHJvbml6YXRpb24gaXNzdWVzLCByZXNvdXJjZSBjb250ZW50aW9uLCBlcnJvciBoYW5kbGluZywgYW5kIGdlbmVyYWwgZWZmaWNpZW5jeS4gTXkgaW1tZWRpYXRlIGdvYWxzIGFyZSB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIGRhdGEgc3RydWN0dXJlcyBpbnZvbHZlZCwgYW5kIGFueSBwb3RlbnRpYWwgYm90dGxlbmVja3MuIEknbGwgcHJvYmFibHkgYmUgY3Jvc3MtcmVmZXJlbmNpbmcgdGhpcyBmdW5jdGlvbiB3aXRoIG90aGVyIHJlbGF0ZWQgUEhZIGRyaXZlciBmdW5jdGlvbnMgYXMgSSBnby5cblxuXG4iLCJJbnB1dFRva2VucyI6OTY5NCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU1OjU3LjQ4ODY3Njc4WiIsIlNlcSI6NDAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyMjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIyMCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyMjA6XFx0ICogVGhlIGFkZHJlc3Mgd2hpY2ggaXMgZ2l2ZW4gaGVyZSwgd2lsbCBiZSB1c2VkIGluIHRoZSBfX3BoeV9wYWNrYWdlX3JlYWQoKVxcbiAyMjE6XFx0ICogYW5kIF9fcGh5X3BhY2thZ2Vfd3JpdGUoKSBjb252ZW5pZW5jZSBmdW5jdGlvbnMgYXMgYmFzZSBhbmQgYWRkZWQgdG8gdGhlXFxuIDIyMjpcXHQgKiBwYXNzZWQgb2Zmc2V0IGluIHRob3NlIGZ1bmN0aW9ucy5cXG4gMjIzOlxcdCAqXFxuIDIyNDpcXHQgKiBUaGlzIHdpbGwgc2V0IHRoZSBzaGFyZWQgcG9pbnRlciBvZiB0aGUgcGh5ZGV2IHRvIHRoZSBzaGFyZWQgc3RvcmFnZS5cXG4gMjI1OlxcdCAqIElmIHRoaXMgaXMgdGhlIGZpcnN0IGNhbGwgZm9yIGEgdGhpcyBjb29raWUgdGhlIHNoYXJlZCBzdG9yYWdlIHdpbGwgYmVcXG4gMjI2OlxcdCAqIGFsbG9jYXRlZC4gSWYgcHJpdl9zaXplIGlzIG5vbi16ZXJvLCB0aGUgZ2l2ZW4gYW1vdW50IG9mIGJ5dGVzIGFyZVxcbiAyMjc6XFx0ICogYWxsb2NhdGVkIGZvciB0aGUgcHJpdiBtZW1iZXIuXFxuIDIyODpcXHQgKlxcbiAyMjk6XFx0ICogUmV0dXJucyBcXHUwMDNjIDEgb24gZXJyb3IsIDAgb24gc3VjY2Vzcy4gRXNwLiBjYWxsaW5nIHBoeV9wYWNrYWdlX2pvaW4oKVxcbiAyMzA6XFx0ICogd2l0aCB0aGUgc2FtZSBjb29raWUgYnV0IGEgZGlmZmVyZW50IHByaXZfc2l6ZSBpcyBhbiBlcnJvci5cXG4gMjMxOlxcdCAqL1xcbiAyMzI6XFx0aW50IHBoeV9wYWNrYWdlX2pvaW4oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGJhc2VfYWRkciwgc2l6ZV90IHByaXZfc2l6ZSlcXG4gMjMzOlxcdHtcXG4gMjM0OlxcdFxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwaHlkZXYtXFx1MDAzZW1kaW8uYnVzO1xcbiAyMzU6XFx0XFx0c3RydWN0IHBoeV9wYWNrYWdlX3NoYXJlZCAqc2hhcmVkO1xcbiAyMzY6XFx0XFx0aW50IHJldDtcXG4gMjM3OlxcdFxcbiAyMzg6XFx0XFx0aWYgKGJhc2VfYWRkciBcXHUwMDNjIDAgfHwgYmFzZV9hZGRyIFxcdTAwM2U9IFBIWV9NQVhfQUREUilcXG4gMjM5OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAyNDA6XFx0XFxuIDI0MTpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZidXMtXFx1MDAzZXNoYXJlZF9sb2NrKTtcXG4gMjQyOlxcdFxcdHNoYXJlZCA9IGJ1cy1cXHUwMDNlc2hhcmVkW2Jhc2VfYWRkcl07XFxuIDI0MzpcXHRcXHRpZiAoIXNoYXJlZCkge1xcbiAyNDQ6XFx0XFx0XFx0cmV0ID0gLUVOT01FTTtcXG4gMjQ1OlxcdFxcdFxcdHNoYXJlZCA9IGt6YWxsb2Nfb2JqKCpzaGFyZWQpO1xcbiAyNDY6XFx0XFx0XFx0aWYgKCFzaGFyZWQpXFxuIDI0NzpcXHRcXHRcXHRcXHRnb3RvIGVycl91bmxvY2s7XFxuIDI0ODpcXHRcXHRcXHRpZiAocHJpdl9zaXplKSB7XFxuIDI0OTpcXHRcXHRcXHRcXHRzaGFyZWQtXFx1MDAzZXByaXYgPSBremFsbG9jKHByaXZfc2l6ZSwgR0ZQX0tFUk5FTCk7XFxuIDI1MDpcXHRcXHRcXHRcXHRpZiAoIXNoYXJlZC1cXHUwMDNlcHJpdilcXG4gMjUxOlxcdFxcdFxcdFxcdFxcdGdvdG8gZXJyX2ZyZWU7XFxuIDI1MjpcXHRcXHRcXHRcXHRzaGFyZWQtXFx1MDAzZXByaXZfc2l6ZSA9IHByaXZfc2l6ZTtcXG4gMjUzOlxcdFxcdFxcdH1cXG4gMjU0OlxcdFxcdFxcdHNoYXJlZC1cXHUwMDNlYmFzZV9hZGRyID0gYmFzZV9hZGRyO1xcbiAyNTU6XFx0XFx0XFx0c2hhcmVkLVxcdTAwM2VucCA9IE5VTEw7XFxuIDI1NjpcXHRcXHRcXHRyZWZjb3VudF9zZXQoXFx1MDAyNnNoYXJlZC1cXHUwMDNlcmVmY250LCAxKTtcXG4gMjU3OlxcdFxcdFxcdGJ1cy1cXHUwMDNlc2hhcmVkW2Jhc2VfYWRkcl0gPSBzaGFyZWQ7XFxuIDI1ODpcXHRcXHR9IGVsc2Uge1xcbiAyNTk6XFx0XFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4gMjYwOlxcdFxcdFxcdGlmIChwcml2X3NpemUgXFx1MDAyNlxcdTAwMjYgcHJpdl9zaXplICE9IHNoYXJlZC1cXHUwMDNlcHJpdl9zaXplKVxcbiAyNjE6XFx0XFx0XFx0XFx0Z290byBlcnJfdW5sb2NrO1xcbiAyNjI6XFx0XFx0XFx0cmVmY291bnRfaW5jKFxcdTAwMjZzaGFyZWQtXFx1MDAzZXJlZmNudCk7XFxuIDI2MzpcXHRcXHR9XFxuIDI2NDpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNmJ1cy1cXHUwMDNlc2hhcmVkX2xvY2spO1xcbiAyNjU6XFx0XFxuIDI2NjpcXHRcXHRwaHlkZXYtXFx1MDAzZXNoYXJlZCA9IHNoYXJlZDtcXG4gMjY3OlxcdFxcbiAyNjg6XFx0XFx0cmV0dXJuIDA7XFxuIDI2OTpcXHRcXG4gMjcwOlxcdGVycl9mcmVlOlxcbiAyNzE6XFx0XFx0a2ZyZWUoc2hhcmVkKTtcXG4gMjcyOlxcdGVycl91bmxvY2s6XFxuIDI3MzpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNmJ1cy1cXHUwMDNlc2hhcmVkX2xvY2spO1xcbiAyNzQ6XFx0XFx0cmV0dXJuIHJldDtcXG4gMjc1OlxcdH1cXG4gMjc2OlxcdEVYUE9SVF9TWU1CT0xfR1BMKHBoeV9wYWNrYWdlX2pvaW4pO1xcbiAyNzc6XFx0XFxuIDI3ODpcXHQvKipcXG4gMjc5OlxcdCAqIG9mX3BoeV9wYWNrYWdlX2pvaW4gLSBqb2luIGEgY29tbW9uIFBIWSBncm91cCBpbiBQSFkgcGFja2FnZVxcbiAyODA6XFx0ICogQHBoeWRldjogdGFyZ2V0IHBoeV9kZXZpY2Ugc3RydWN0XFxuIDI4MTpcXHQgKiBAcHJpdl9zaXplOiBpZiBub24temVybyBhbGxvY2F0ZSB0aGlzIGFtb3VudCBvZiBieXRlcyBmb3IgcHJpdmF0ZSBkYXRhXFxuIDI4MjpcXHQgKlxcbiAyODM6XFx0ICogVGhpcyBpcyBhIHZhcmlhbnQgb2YgcGh5X3BhY2thZ2Vfam9pbiBmb3IgUEhZIHBhY2thZ2UgZGVmaW5lZCBpbiBEVC5cXG4gMjg0OlxcdCAqXFxuIDI4NTpcXHQgKiBUaGUgcGFyZW50IG5vZGUgb2YgdGhlIEBwaHlkZXYgaXMgY2hlY2tlZCBhcyBhIHZhbGlkIFBIWSBwYWNrYWdlIG5vZGVcXG4gMjg2OlxcdCAqIHN0cnVjdHVyZSAoYnkgbWF0Y2hpbmcgdGhlIG5vZGUgbmFtZSBcXFwiZXRoZXJuZXQtcGh5LXBhY2thZ2VcXFwiKSBhbmQgdGhlXFxuIDI4NzpcXHQgKiBiYXNlX2FkZHIgZm9yIHRoZSBQSFkgcGFja2FnZSBpcyBwYXNzZWQgdG8gcGh5X3BhY2thZ2Vfam9pbi5cXG4gMjg4OlxcdCAqXFxuIDI4OTpcXHQgKiBXaXRoIHRoaXMgY29uZmlndXJhdGlvbiB0aGUgc2hhcmVkIHN0cnVjdCB3aWxsIGFsc28gaGF2ZSB0aGUgbnAgdmFsdWVcXG4gMjkwOlxcdCAqIGZpbGxlZCB0byB1c2UgYWRkaXRpb25hbCBEVCBkZWZpbmVkIHByb3BlcnRpZXMgaW4gUEhZIHNwZWNpZmljXFxuIDI5MTpcXHQgKiBwcm9iZV9vbmNlIGFuZCBjb25maWdfaW5pdF9vbmNlIFBIWSBwYWNrYWdlIE9Qcy5cXG4gMjkyOlxcdCAqXFxuIDI5MzpcXHQgKiBSZXR1cm5zIFxcdTAwM2MgMCBvbiBlcnJvciwgMCBvbiBzdWNjZXNzLiBFc3AuIGNhbGxpbmcgcGh5X3BhY2thZ2Vfam9pbigpXFxuIDI5NDpcXHQgKiB3aXRoIHRoZSBzYW1lIGNvb2tpZSBidXQgYSBkaWZmZXJlbnQgcHJpdl9zaXplIGlzIGFuIGVycm9yLiBPciBhIHBhcmVudFxcbiAyOTU6XFx0ICogbm9kZSBpcyBub3QgZGV0ZWN0ZWQgb3IgaXMgbm90IHZhbGlkIG9yIGRvZXNuJ3QgbWF0Y2ggdGhlIGV4cGVjdGVkIG5vZGVcXG4gMjk2OlxcdCAqIG5hbWUgZm9yIFBIWSBwYWNrYWdlLlxcbiAyOTc6XFx0ICovXFxuIDI5ODpcXHRpbnQgb2ZfcGh5X3BhY2thZ2Vfam9pbihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBzaXplX3QgcHJpdl9zaXplKVxcbiAyOTk6XFx0e1xcbiAzMDA6XFx0XFx0c3RydWN0IGRldmljZV9ub2RlICpub2RlID0gcGh5ZGV2LVxcdTAwM2VtZGlvLmRldi5vZl9ub2RlO1xcbiAzMDE6XFx0XFx0c3RydWN0IGRldmljZV9ub2RlICpwYWNrYWdlX25vZGU7XFxuIDMwMjpcXHRcXHR1MzIgYmFzZV9hZGRyO1xcbiAzMDM6XFx0XFx0aW50IHJldDtcXG4gMzA0OlxcdFxcbiAzMDU6XFx0XFx0aWYgKCFub2RlKVxcbiAzMDY6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDMwNzpcXHRcXG4gMzA4OlxcdFxcdHBhY2thZ2Vfbm9kZSA9IG9mX2dldF9wYXJlbnQobm9kZSk7XFxuIDMwOTpcXHRcXHRpZiAoIXBhY2thZ2Vfbm9kZSlcXG4gMzEwOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAzMTE6XFx0XFxuIDMxMjpcXHRcXHRpZiAoIW9mX25vZGVfbmFtZV9lcShwYWNrYWdlX25vZGUsIFxcXCJldGhlcm5ldC1waHktcGFja2FnZVxcXCIpKSB7XFxuIDMxMzpcXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbiAzMTQ6XFx0XFx0XFx0Z290byBleGl0O1xcbiAzMTU6XFx0XFx0fVxcbiAzMTY6XFx0XFxuIDMxNzpcXHRcXHRpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIocGFja2FnZV9ub2RlLCBcXFwicmVnXFxcIiwgXFx1MDAyNmJhc2VfYWRkcikpIHtcXG4gMzE4OlxcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuIDMxOTpcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU1OjU3LjQ4ODc3MDY5WiIsIlNlcSI6NDEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0ODMzMzgwNDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgZHA4MzY0MGAgQ2xvY2sgU3RydWN0dXJlIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gdGhlIGBwaHlfcGFja2FnZV9qb2luYCBmdW5jdGlvbiBpcyB1c2luZyBga3phbGxvY2AgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgc2hhcmVkIG1lbW9yeSByZWdpb24uIFRoaXMgbWVhbnMgdGhhdCB0aGUgZW50aXJlIGBkcDgzNjQwX2Nsb2NrYCBzdHJ1Y3R1cmUsIGluY2x1ZGluZyB0aGUgYHBpbl9jb25maWdgIGFycmF5LCBnZXRzIGluaXRpYWxpemVkIHRvIHplcm8uIFRoYXQncyBnb29kLiBUaGUgaW5pdGlhbCB0aG91Z2h0cyB3ZXJlIGNvcnJlY3Q6IHRoZSBgZHA4MzY0MF9jbG9ja2AgaXMgYWxsb2NhdGVkIHdpdGggYHNpemVvZigqY2xvY2spYCBhbmQgdGhlbiBpbml0aWFsaXplZCB2aWEgYGRwODM2NDBfY2xvY2tfaW5pdGAuXG5cblRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgYGt6YWxsb2Nfb2Jqc2AgY2FsbCBmb3IgYHBpbl9jb25maWdgIGFuZCBlbWJlZHMgaXQgZGlyZWN0bHkgaW4gdGhlIHN0cnVjdHVyZS4gVGhlcmUncyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIGV4cG9zZWQgaGVyZSBiZWNhdXNlIGBremFsbG9jYCB6ZXJvZXMgdGhlIG1lbW9yeS4gR29vZCwgZ29vZCwgZ29vZC4gTm93IGxldCdzIGp1c3QgbWFrZSBhYnNvbHV0ZWx5IHN1cmUgdGhlcmUgYXJlbid0IGFueSBvdGhlciBjaGFuZ2VzLlxuXG5BaCwgbG9va3MgbGlrZSBgcGh5X3BhY2thZ2VfbG9ja2AgYW5kIGBwaHlfcGFja2FnZV91bmxvY2tgIGhhdmUgYmVlbiBhZGRlZCwgYW5kIGBkcDgzNjQwX3Byb2JlYCBoYXMgYmVlbiBtb2RpZmllZCB0byB1dGlsaXplIGBwaHlfcGFja2FnZV9qb2luYC4gQWdhaW4sIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFwcGVhcnMgdG8gYmUgZXhwb3NlZCB0byB1c2VyIHNwYWNlLiBUaGUgYHBpbl9jb25maWdgIGlzIGluaXRpYWxpemVkIHVzaW5nIGBkcDgzNjQwX2dwaW9fZGVmYXVsdHNgLCB3aGljaCBzZXRzIHNvbWUgb2YgdGhlIGZpZWxkcywgYnV0IHRoZSByZW1haW5pbmcgZmllbGRzIGFyZSB6ZXJvZWQgYnkgYGt6YWxsb2NgLlxuXG5XYWl0IGEgbWludXRlLi4uIGNvdWxkIHRoZSBgZHA4MzY0MF9jbG9ja2AgaXRzZWxmIHNvbWVob3cgYmUgcGFzc2VkIHRvIHVzZXIgc3BhY2U/IE5vLCBubywgaXQncyBhIGNvbXBsZXRlbHkga2VybmVsLWludGVybmFsIHN0cnVjdHVyZS4gT2theSwgc28gdGhlIGBwdHBfcGluX2Rlc2NgICppcyogZXhwb3NlZCB2aWEgdGhlIGBQVFBfUElOX0dFVEZVTkNgIGlvY3RsLCBidXQgdGhlIFBUUCBjb3JlIGhhbmRsZXMgY29weWluZyB0aGF0LiBBbHJpZ2h0LCBqdXN0IHRvIGJlIGNvbXBsZXRlbHkgY2VydGFpbiwgbGV0J3MgdGFrZSBhIHF1aWNrIGxvb2sgYXQgdGhlIGBwdHBfcGluX2Rlc2NgIHN0cnVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE1MTIsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNjo1NjowMy45NzIxMTQ5MDZaIiwiU2VxIjo0MiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2ODk2MzM3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInB0cF9waW5fZGVzY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL3VhcGkvbGludXgvcHRwX2Nsb2NrLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS91YXBpL2xpbnV4L3B0cF9jbG9jay5oPTE5MD1lbnVtIHB0cF9waW5fZnVuY3Rpb24ge1xcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L3B0cF9jbG9jay5oLTE5Ni1cXG5pbmNsdWRlL3VhcGkvbGludXgvcHRwX2Nsb2NrLmg6MTk3OnN0cnVjdCBwdHBfcGluX2Rlc2Mge1xcbmluY2x1ZGUvdWFwaS9saW51eC9wdHBfY2xvY2suaC0xOTgtXFx0LypcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9wdHBfY2xvY2suaC0yMzAtI2RlZmluZSBQVFBfU1lTX09GRlNFVCAgICAgX0lPVyhQVFBfQ0xLX01BR0lDLCA1LCBzdHJ1Y3QgcHRwX3N5c19vZmZzZXQpXFxuaW5jbHVkZS91YXBpL2xpbnV4L3B0cF9jbG9jay5oOjIzMTojZGVmaW5lIFBUUF9QSU5fR0VURlVOQyAgICBfSU9XUihQVFBfQ0xLX01BR0lDLCA2LCBzdHJ1Y3QgcHRwX3Bpbl9kZXNjKVxcbmluY2x1ZGUvdWFwaS9saW51eC9wdHBfY2xvY2suaDoyMzI6I2RlZmluZSBQVFBfUElOX1NFVEZVTkMgICAgX0lPVyhQVFBfQ0xLX01BR0lDLCA3LCBzdHJ1Y3QgcHRwX3Bpbl9kZXNjKVxcbmluY2x1ZGUvdWFwaS9saW51eC9wdHBfY2xvY2suaC0yMzMtI2RlZmluZSBQVFBfU1lTX09GRlNFVF9QUkVDSVNFIFxcXFxcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9wdHBfY2xvY2suaC0yNDItI2RlZmluZSBQVFBfU1lTX09GRlNFVDIgICAgIF9JT1coUFRQX0NMS19NQUdJQywgMTQsIHN0cnVjdCBwdHBfc3lzX29mZnNldClcXG5pbmNsdWRlL3VhcGkvbGludXgvcHRwX2Nsb2NrLmg6MjQzOiNkZWZpbmUgUFRQX1BJTl9HRVRGVU5DMiAgICBfSU9XUihQVFBfQ0xLX01BR0lDLCAxNSwgc3RydWN0IHB0cF9waW5fZGVzYylcXG5pbmNsdWRlL3VhcGkvbGludXgvcHRwX2Nsb2NrLmg6MjQ0OiNkZWZpbmUgUFRQX1BJTl9TRVRGVU5DMiAgICBfSU9XKFBUUF9DTEtfTUFHSUMsIDE2LCBzdHJ1Y3QgcHRwX3Bpbl9kZXNjKVxcbmluY2x1ZGUvdWFwaS9saW51eC9wdHBfY2xvY2suaC0yNDUtI2RlZmluZSBQVFBfU1lTX09GRlNFVF9QUkVDSVNFMiBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU2OjA0LjAxOTAxNTg3MloiLCJTZXEiOjQzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTA4MDM4Mjc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU2FmZXR5IG9mIGBwdHBfcGluX2Rlc2NgIEV4cG9zdXJlKipcblxuT2theSwgc28gdGhlIGNvZGUgZXhwb3NlcyBgcHRwX3Bpbl9kZXNjYCB0byB1c2VyIHNwYWNlLCB3aGljaCBpcyBzb21ldGhpbmcgSSBuZWVkIHRvIGNhcmVmdWxseSBjb25zaWRlci4gTXkgaW5pdGlhbCBjb25jZXJuIGlzIGFsd2F5cyBhcm91bmQgdW5pbml0aWFsaXplZCBtZW1vcnksIHBvdGVudGlhbCBmb3IgaW5mb3JtYXRpb24gbGVha3MsIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IuIEhvd2V2ZXIsIGFmdGVyIHJldmlld2luZyB0aGUgY29kZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYHBoeV9wYWNrYWdlX2pvaW5gIGZ1bmN0aW9uLCBpdCdzIGNsZWFyIHRoYXQgdGhlIGFsbG9jYXRpb24gaGFwcGVucyB2aWEgYGt6YWxsb2NgLiBUaGlzIGlzIGdvb2QuIEEgYGt6YWxsb2NgIGd1YXJhbnRlZXMgdGhhdCBhbGwgZmllbGRzIHdpdGhpbiBgcHRwX3Bpbl9kZXNjYCBhcmUgemVyb2VkIG91dCBiZWZvcmUgYmVpbmcgZXhwb3NlZC4gVGhlcmVmb3JlLCBteSBpbW1lZGlhdGUgY29uY2VybiBhYm91dCB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBhbGxldmlhdGVkLiBUaGUgcmlzayBoZXJlIHNlZW1zIG1pbmltYWwuIEkgbm93IGtub3cgSSBuZWVkIHRvIG1vdmUgb24gYW5kIGludmVzdGlnYXRlIGEgc2VwYXJhdGUgY29uY2Vybi4gSSBuZWVkIHRvIG5vdyBjaGVjayB0aGUgYGRwODM2NDBfZ3Bpb19kZWZhdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyODAwLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTY6NTY6MDkuMTI3MDU2NzIyWiIsIlNlcSI6NDQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjYzNjE5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkcDgzNjQwX2dwaW9fZGVmYXVsdHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jPTE3ND1NT0RVTEVfUEFSTV9ERVNDKGdwaW9fdGFiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYy0xNzYtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYzoxNzc6c3RhdGljIHZvaWQgZHA4MzY0MF9ncGlvX2RlZmF1bHRzKHN0cnVjdCBwdHBfcGluX2Rlc2MgKnBkKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTc4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM9OTUxPXN0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfaW5pdChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2spXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTk3NC1cXHQvKiBJbml0aWFsaXplIHRoZSBydW50aW1lIHBpbiBjb25maWd1cmF0aW9uIGZyb20gZ3Bpb190YWIuICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYzo5NzU6XFx0ZHA4MzY0MF9ncGlvX2RlZmF1bHRzKGNsb2NrLVxcdTAwM2VjYXBzLnBpbl9jb25maWcpO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtOTc2LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTY6NTY6MDkuMTY5Njk1MDU5WiIsIlNlcSI6NDUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzMDAyOTE4NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIGBkcDgzNjQwX2dwaW9fZGVmYXVsdHNgIGltcGxlbWVudGF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBmdW5jdGlvbiBzZXRzIHVwIHRoZSBHUElPIHBpbnMgZm9yIHRoaXMgc3BlY2lmaWMgRXRoZXJuZXQgUEhZLiBJdCdzIGNydWNpYWwgZm9yIGNvbmZpZ3VyaW5nIHRoZSBoYXJkd2FyZSBhbmQgZW5zdXJpbmcgcHJvcGVyIGNvbW11bmljYXRpb24sIHNvIEkgd2FudCB0byBnZXQgdGhpcyByaWdodC4gTGV0J3Mgc2VlIHdoYXQgdGhlIGNvZGUncyBkb2luZy4gSSdsbCBmb2N1cyBvbiB0aGUgc3BlY2lmaWMgcmVnaXN0ZXIgdmFsdWVzIGFuZCBwaW4gY29uZmlndXJhdGlvbnMgdG8gc2VlIGhvdyB0aGUgc29mdHdhcmUgaXMgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgaGFyZHdhcmUuIFVuZGVyc3RhbmRpbmcgdGhlIGRlZmF1bHQgc2V0dXAgaXMgYWx3YXlzIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgY3VzdG9taXphdGlvbiBhbmQgZGVidWdnaW5nIGxhdGVyIG9uLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGFueSBoaW50cyBvbiBjbG9jayBzZXR0aW5ncywgaW50ZXJydXB0IGFzc2lnbm1lbnRzLCBvciBvdGhlciBjcnVjaWFsIGluaXRpYWxpemF0aW9ucy4gSSdtIGVzc2VudGlhbGx5IHJldmVyc2UtZW5naW5lZXJpbmcgdGhlIGludGVuZGVkIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gdGhyb3VnaCB0aGUgc29mdHdhcmUncyBpbml0aWFsIHN0YXRlIGRlZmluaXRpb24uIEhvcGVmdWxseSwgaXQncyB3ZWxsLWNvbW1lbnRlZDsgdGhhdCB3b3VsZCBiZSBhIGJvbnVzIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzM1OCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU2OjEzLjQ2OTk4OTA5NFoiLCJTZXEiOjQ2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTgzNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNzcsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNzc6XFx0c3RhdGljIHZvaWQgZHA4MzY0MF9ncGlvX2RlZmF1bHRzKHN0cnVjdCBwdHBfcGluX2Rlc2MgKnBkKVxcbiAxNzg6XFx0e1xcbiAxNzk6XFx0XFx0aW50IGksIGluZGV4O1xcbiAxODA6XFx0XFxuIDE4MTpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgRFA4MzY0MF9OX1BJTlM7IGkrKykge1xcbiAxODI6XFx0XFx0XFx0c25wcmludGYocGRbaV0ubmFtZSwgc2l6ZW9mKHBkW2ldLm5hbWUpLCBcXFwiR1BJTyVkXFxcIiwgMSArIGkpO1xcbiAxODM6XFx0XFx0XFx0cGRbaV0uaW5kZXggPSBpO1xcbiAxODQ6XFx0XFx0fVxcbiAxODU6XFx0XFxuIDE4NjpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgR1BJT19UQUJMRV9TSVpFOyBpKyspIHtcXG4gMTg3OlxcdFxcdFxcdGlmIChncGlvX3RhYltpXSBcXHUwMDNjIDEgfHwgZ3Bpb190YWJbaV0gXFx1MDAzZSBEUDgzNjQwX05fUElOUykge1xcbiAxODg6XFx0XFx0XFx0XFx0cHJfZXJyKFxcXCJncGlvX3RhYlslZF09JWh1IG91dCBvZiByYW5nZVxcXCIsIGksIGdwaW9fdGFiW2ldKTtcXG4gMTg5OlxcdFxcdFxcdFxcdHJldHVybjtcXG4gMTkwOlxcdFxcdFxcdH1cXG4gMTkxOlxcdFxcdH1cXG4gMTkyOlxcdFxcbiAxOTM6XFx0XFx0aW5kZXggPSBncGlvX3RhYltDQUxJQlJBVEVfR1BJT10gLSAxO1xcbiAxOTQ6XFx0XFx0cGRbaW5kZXhdLmZ1bmMgPSBQVFBfUEZfUEhZU1lOQztcXG4gMTk1OlxcdFxcdHBkW2luZGV4XS5jaGFuID0gMDtcXG4gMTk2OlxcdFxcbiAxOTc6XFx0XFx0aW5kZXggPSBncGlvX3RhYltQRVJPVVRfR1BJT10gLSAxO1xcbiAxOTg6XFx0XFx0cGRbaW5kZXhdLmZ1bmMgPSBQVFBfUEZfUEVST1VUO1xcbiAxOTk6XFx0XFx0cGRbaW5kZXhdLmNoYW4gPSAwO1xcbiAyMDA6XFx0XFxuIDIwMTpcXHRcXHRmb3IgKGkgPSBFWFRUUzBfR1BJTzsgaSBcXHUwMDNjIEdQSU9fVEFCTEVfU0laRTsgaSsrKSB7XFxuIDIwMjpcXHRcXHRcXHRpbmRleCA9IGdwaW9fdGFiW2ldIC0gMTtcXG4gMjAzOlxcdFxcdFxcdHBkW2luZGV4XS5mdW5jID0gUFRQX1BGX0VYVFRTO1xcbiAyMDQ6XFx0XFx0XFx0cGRbaW5kZXhdLmNoYW4gPSBpIC0gRVhUVFMwX0dQSU87XFxuIDIwNTpcXHRcXHR9XFxuIDIwNjpcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU2OjEzLjQ3MDEwODUzNFoiLCJTZXEiOjQ3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NzA1MjA5NzgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBIWSBDbG9jayBNYW5hZ2VtZW50IFJlZmFjdG9yaW5nKipcblxuT2theSwgc28gSSd2ZSByZXZpZXdlZCB0aGlzIHBhdGNoLCBhbmQgaGVyZSdzIG15IHRha2UuIEluaXRpYWxseSwgdGhlIGBwZGAgYXJyYXkgaXMgcG9wdWxhdGVkIHVzaW5nIGBzbnByaW50ZmAgdG8gc2V0IHVwIHNvbWUgZmllbGRzLiBCZWNhdXNlIGBremFsbG9jYCBpcyB1c2VkIGluIGBwaHlfcGFja2FnZV9qb2luYCwgdGhlIGVudGlyZSBhcnJheSBnZXRzIHplcm8taW5pdGlhbGl6ZWQuIFRoYXQgbWVhbnMgYW55IHBhZGRpbmcgb3IgZmllbGRzIHRoYXQgYXJlbid0IHNwZWNpZmljYWxseSBvdmVyd3JpdHRlbiBieSBgc25wcmludGZgIHdpbGwgYmUgc2FmZWx5IHplcm8uIFRoaXMgZWxpbWluYXRlcyBhbnkgaW1tZWRpYXRlIGNvbmNlcm5zIGFib3V0IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHBvdGVudGlhbGx5IGxlYWtpbmcgc2Vuc2l0aXZlIGluZm9ybWF0aW9uLCB3aGljaCBpcyBhbHdheXMgYSBjcml0aWNhbCBwb2ludCB0byBjb25zaWRlci5cblxuVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSByZWZhY3RvcmluZyB0aGUgUEhZIGNsb2NrIG1hbmFnZW1lbnQuIFRoZSBjb2RlIHNoaWZ0cyBmcm9tIHVzaW5nIGEgY3VzdG9tIGdsb2JhbCBsaXN0IHRvIG5vdyBsZXZlcmFnZSBgcGh5X3BhY2thZ2Vfam9pbmAuIFRoaXMgaXMgYSBwcmV0dHkgc2lnbmlmaWNhbnQgYXJjaGl0ZWN0dXJhbCBjaGFuZ2UsIGFuZCBmcm9tIHdoYXQgSSBjYW4gdGVsbCwgaXQncyBhZGRyZXNzaW5nIHNvbWUgbmFzdHkgbGlmZWN5Y2xlIGFuZCBsb2NraW5nIGlzc3Vlcy4gSSBzdXNwZWN0IHdlJ3JlIGxvb2tpbmcgYXQgdGhpbmdzIGxpa2UgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW9zIG9yIHBvdGVudGlhbCBtZW1vcnkgbGVha3MsIGFsbCBvZiB3aGljaCBLQVNBTiB3b3VsZCBiZSBpbnZhbHVhYmxlIGluIGNhdGNoaW5nLiBUaGUgZ29vZCBuZXdzIGlzLCBJIGRvbid0IHNlZSBhbnkgZXZpZGVuY2Ugb2YgKm5ldyogdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzIGJlaW5nIGludHJvZHVjZWQgYnkgdGhpcyBjaGFuZ2UuIEl0IHNlZW1zIGxpa2UgdGhlIHJlZmFjdG9yaW5nIGlzIHNvdW5kIGluIHRoYXQgcmVnYXJkLlxuXG5HaXZlbiBhbGwgb2YgdGhpcywgSSB0aGluayB3ZSBjYW4gc2FmZWx5IHNldCBgTmVlZHNLTVNBTj1mYWxzZWAgZm9yIHRoaXMgcGF0Y2guIFRoZSBleGlzdGluZyBLQVNBTiBjb3ZlcmFnZSBpcyBsaWtlbHkgc3VmZmljaWVudCB0byBtb25pdG9yIHRoaXMsIGFuZCB0aGlzIGNoYW5nZSBkb2Vzbid0IGludHJvZHVjZSBhbnkgbmV3IGltbWVkaWF0ZSBuZWVkcyBpbiB0aGlzIHJlZ2FyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQxMTksIk91dHB1dFRva2VucyI6MTc1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTY6NTY6MjAuMTc1MzIxMTM1WiIsIlNlcSI6NDgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUwNjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgdGhlIGRwODM2NDAgUEhZIGRyaXZlciB0byB1c2UgdGhlIHN0YW5kYXJkIGBwaHlfcGFja2FnZV9qb2luYCBBUEkgZm9yIG1hbmFnaW5nIHNoYXJlZCBjbG9jayBzdHJ1Y3R1cmVzLCByZXBsYWNpbmcgYSBjdXN0b20gZ2xvYmFsIGxpc3QgYW5kIG1hbnVhbCBhbGxvY2F0aW9ucy4gVGhlIHNoYXJlZCBzdHJ1Y3R1cmUgYGRwODM2NDBfY2xvY2tgIChhbmQgaXRzIGVtYmVkZGVkIGBwaW5fY29uZmlnYCBhcnJheSkgaXMgYWxsb2NhdGVkIHZpYSBga3phbGxvY2AgaW5zaWRlIGBwaHlfcGFja2FnZV9qb2luYCwgZW5zdXJpbmcgYWxsIGZpZWxkcyBhbmQgcGFkZGluZyBhcmUgZnVsbHkgemVyby1pbml0aWFsaXplZC4gVGhlcmUgYXJlIG5vIG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaC4gQW55IHBvdGVudGlhbCBidWdzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2Ugd291bGQgaW52b2x2ZSBvYmplY3QgbGlmZWN5Y2xlIGlzc3VlcyAobGlrZSB1c2UtYWZ0ZXItZnJlZSBvciBtZW1vcnkgbGVha3MpIG9yIGxvY2tpbmcgaXNzdWVzLCB3aGljaCBhcmUgYWxyZWFkeSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgTE9DS0RFUC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgdGhlIGRwODM2NDAgUEhZIGRyaXZlciB0byB1c2UgdGhlIHN0YW5kYXJkIGBwaHlfcGFja2FnZV9qb2luYCBBUEkgZm9yIG1hbmFnaW5nIHNoYXJlZCBjbG9jayBzdHJ1Y3R1cmVzLCByZXBsYWNpbmcgYSBjdXN0b20gZ2xvYmFsIGxpc3QgYW5kIG1hbnVhbCBhbGxvY2F0aW9ucy4gVGhlIHNoYXJlZCBzdHJ1Y3R1cmUgYGRwODM2NDBfY2xvY2tgIChhbmQgaXRzIGVtYmVkZGVkIGBwaW5fY29uZmlnYCBhcnJheSkgaXMgYWxsb2NhdGVkIHZpYSBga3phbGxvY2AgaW5zaWRlIGBwaHlfcGFja2FnZV9qb2luYCwgZW5zdXJpbmcgYWxsIGZpZWxkcyBhbmQgcGFkZGluZyBhcmUgZnVsbHkgemVyby1pbml0aWFsaXplZC4gVGhlcmUgYXJlIG5vIG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaC4gQW55IHBvdGVudGlhbCBidWdzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2Ugd291bGQgaW52b2x2ZSBvYmplY3QgbGlmZWN5Y2xlIGlzc3VlcyAobGlrZSB1c2UtYWZ0ZXItZnJlZSBvciBtZW1vcnkgbGVha3MpIG9yIGxvY2tpbmcgaXNzdWVzLCB3aGljaCBhcmUgYWxyZWFkeSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgTE9DS0RFUC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowwclsx[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-10 16:03:38 +0000 UTC FinishedAt: 2026-08-10 16:56:22 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "dd057113ac7ba5bdd2aed3d9405305911152f911", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DP83640_PHY", "NETWORK_PHY_TIMESTAMPING", "PHYLIB", "PTP_1588_CLOCK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "dd057113ac7ba5bdd2aed3d9405305911152f911", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DP83640_PHY", "NETWORK_PHY_TIMESTAMPING", "PHYLIB", "PTP_1588_CLOCK" ], "series_id": "a22b839e-ef06-4095-90e6-01cf0b770595" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "dp83640_probe", "dp83640_remove", "phy_package_lock", "phy_package_unlock" ], "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+CgkJCTx0ZD4yMDI2LzA4LzEwIDE2OjU0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RQODM2NDBfUEhZJiMzNDssCiAgICAmIzM0O05FVFdPUktfUEhZX1RJTUVTVEFNUElORyYjMzQ7LAogICAgJiMzNDtQSFlMSUImIzM0OywKICAgICYjMzQ7UFRQXzE1ODhfQ0xPQ0smIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkcDgzNjQwX3Byb2JlJiMzNDssCiAgICAmIzM0O2RwODM2NDBfcmVtb3ZlJiMzNDssCiAgICAmIzM0O3BoeV9wYWNrYWdlX2xvY2smIzM0OywKICAgICYjMzQ7cGh5X3BhY2thZ2VfdW5sb2NrJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSBkcDgzNjQwIFBIWSBkcml2ZXIgdG8gdXNlIHRoZSBzdGFuZGFyZCBgcGh5X3BhY2thZ2Vfam9pbmAgQVBJIGZvciBtYW5hZ2luZyBzaGFyZWQgY2xvY2sgc3RydWN0dXJlcywgcmVwbGFjaW5nIGEgY3VzdG9tIGdsb2JhbCBsaXN0IGFuZCBtYW51YWwgYWxsb2NhdGlvbnMuIFRoZSBzaGFyZWQgc3RydWN0dXJlIGBkcDgzNjQwX2Nsb2NrYCAoYW5kIGl0cyBlbWJlZGRlZCBgcGluX2NvbmZpZ2AgYXJyYXkpIGlzIGFsbG9jYXRlZCB2aWEgYGt6YWxsb2NgIGluc2lkZSBgcGh5X3BhY2thZ2Vfam9pbmAsIGVuc3VyaW5nIGFsbCBmaWVsZHMgYW5kIHBhZGRpbmcgYXJlIGZ1bGx5IHplcm8taW5pdGlhbGl6ZWQuIFRoZXJlIGFyZSBubyBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2guIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGludm9sdmUgb2JqZWN0IGxpZmVjeWNsZSBpc3N1ZXMgKGxpa2UgdXNlLWFmdGVyLWZyZWUgb3IgbWVtb3J5IGxlYWtzKSBvciBsb2NraW5nIGlzc3Vlcywgd2hpY2ggYXJlIGFscmVhZHkgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIExPQ0tERVAuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyB0aGUgRFA4MzY0MCBQSFkgZHJpdmVyIHRvIHVzZSB0aGUgc3RhbmRhcmQgcGh5X3BhY2thZ2UgQVBJIGZvciBzaGFyZWQgY2xvY2sgaW5pdGlhbGl6YXRpb24sIHJlcGxhY2luZyBhIGN1c3RvbSBnbG9iYWwgbGlzdC4gSXQgYWxzbyBpbnRyb2R1Y2VzIHBoeV9wYWNrYWdlX2xvY2sgYW5kIHBoeV9wYWNrYWdlX3VubG9jayB0byBzZXJpYWxpemUgYWNjZXNzIHRvIHBhY2thZ2UtcHJpdmF0ZSBkYXRhLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCB0aGUgcHJvYmUgYW5kIHJlbW92ZSBwYXRocyBvZiB0aGUgUEhZIGRyaXZlciwgd2hpY2ggY2FuIGJlIHJlYWNoZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBieSBlbXVsYXRpbmcgYW4gTURJTyBidXMgb3IgYSBVU0IgbmV0d29yayBkZXZpY2Ugd2l0aCB0aGUgc3BlY2lmaWMgUEhZIElELiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE2OjU0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMTViNzBkZGFhN2YzZGZmMzZiZDUxZTdlMmM2OGVlYzA4NTE5YTIzZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDEwIDE2OjUzOjU5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMgYi9kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jXG5pbmRleCA5ODQ3MmFiZGQzOTIwLi42ODY3ZTdjNmYzYjdlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuY1xuQEAgLTIxLDYgJiM0MzsyMSw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXCYjMzQ7ZHA4MzY0MF9yZWcuaFwmIzM0O1xuJiM0MzsjaW5jbHVkZSBcJiMzNDtwaHlsaWIuaFwmIzM0O1xuIFxuICNkZWZpbmUgRFA4MzY0MF9QSFlfSURcdDB4MjAwMDVjZTFcbiAjZGVmaW5lIFBBR0VTRUxcdFx0MHgxM1xuQEAgLTEyOCwxMCAmIzQzOzEyOSw2IEBAIHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUge1xuIH07XG4gXG4gc3RydWN0IGRwODM2NDBfY2xvY2sge1xuLVx0Lyoga2VlcHMgdGhlIGluc3RhbmNlIGluIHRoZSAmIzM5O3BoeXRlcl9jbG9ja3MmIzM5OyBsaXN0ICovXG4tXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7XG4tXHQvKiB3ZSBjcmVhdGUgb25lIGNsb2NrIGluc3RhbmNlIHBlciBNSUkgYnVzICovXG4tXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xuIFx0LyogcHJvdGVjdHMgZXh0ZW5kZWQgcmVnaXN0ZXJzIGZyb20gY29uY3VycmVudCBhY2Nlc3MgKi9cbiBcdHN0cnVjdCBtdXRleCBleHRyZWdfbG9jaztcbiBcdC8qIHJlbWVtYmVycyB3aGljaCBwYWdlIHdhcyBsYXN0IHNlbGVjdGVkICovXG5AQCAtMTQ2LDYgJiM0MzsxNDMsOCBAQCBzdHJ1Y3QgZHA4MzY0MF9jbG9jayB7XG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIHBoeWxpc3Q7XG4gXHQvKiByZWZlcmVuY2UgdG8gb3VyIFBUUCBoYXJkd2FyZSBjbG9jayAqL1xuIFx0c3RydWN0IHB0cF9jbG9jayAqcHRwX2Nsb2NrO1xuJiM0MztcdC8qIHByb3RlY3RlZCBieSB0aGUgUFRQIGNvcmUgcGluIGNvbmZpZ3VyYXRpb24gbG9jayAqL1xuJiM0MztcdHN0cnVjdCBwdHBfcGluX2Rlc2MgcGluX2NvbmZpZ1tEUDgzNjQwX05fUElOU107XG4gfTtcbiBcbiAvKiBnbG9iYWxzICovXG5AQCAtMjA2LDEwICYjNDM7MjA1LDYgQEAgc3RhdGljIHZvaWQgZHA4MzY0MF9ncGlvX2RlZmF1bHRzKHN0cnVjdCBwdHBfcGluX2Rlc2MgKnBkKVxuIFx0fVxuIH1cbiBcbi0vKiBhIGxpc3Qgb2YgY2xvY2tzIGFuZCBhIG11dGV4IHRvIHByb3RlY3QgaXQgKi9cbi1zdGF0aWMgTElTVF9IRUFEKHBoeXRlcl9jbG9ja3MpO1xuLXN0YXRpYyBERUZJTkVfTVVURVgocGh5dGVyX2Nsb2Nrc19sb2NrKTtcbi1cbiBzdGF0aWMgdm9pZCByeF90aW1lc3RhbXBfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xuIFxuIC8qIGV4dGVuZGVkIHJlZ2lzdGVyIGFjY2VzcyBmdW5jdGlvbnMgKi9cbkBAIC05NTMsMTMgJiM0Mzs5NDgsMTIgQEAgc3RhdGljIHZvaWQgZGVjb2RlX3N0YXR1c19mcmFtZShzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICpkcDgzNjQwLFxuIFx0fVxuIH1cbiBcbi1zdGF0aWMgdm9pZCBkcDgzNjQwX2Nsb2NrX2luaXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrLCBzdHJ1Y3QgbWlpX2J1cyAqYnVzKVxuJiM0MztzdGF0aWMgdm9pZCBkcDgzNjQwX2Nsb2NrX2luaXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrKVxuIHtcbi1cdElOSVRfTElTVF9IRUFEKFx1MDAyNmNsb2NrLVx1MDAzZWxpc3QpO1xuLVx0Y2xvY2stXHUwMDNlYnVzID0gYnVzO1xuIFx0bXV0ZXhfaW5pdChcdTAwMjZjbG9jay1cdTAwM2VleHRyZWdfbG9jayk7XG4gXHRtdXRleF9pbml0KFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2Y2xvY2stXHUwMDNlcGh5bGlzdCk7XG4mIzQzO1x0Y2xvY2stXHUwMDNlY2Fwcy5waW5fY29uZmlnID0gY2xvY2stXHUwMDNlcGluX2NvbmZpZztcbiBcdGNsb2NrLVx1MDAzZWNhcHMub3duZXIgPSBUSElTX01PRFVMRTtcbiBcdHNwcmludGYoY2xvY2stXHUwMDNlY2Fwcy5uYW1lLCBcJiMzNDtkcDgzNjQwIHRpbWVyXCYjMzQ7KTtcbiBcdGNsb2NrLVx1MDAzZWNhcHMubWF4X2Fkalx0PSAxOTUzMTI0O1xuQEAgLTk3NywxNCAmIzQzOzk3MSw4IEBAIHN0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfaW5pdChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2ssIHN0cnVjdCBtaWlfYnVzICpidXMpXG4gXHRjbG9jay1cdTAwM2VjYXBzLnNldHRpbWU2NFx0PSBwdHBfZHA4MzY0MF9zZXR0aW1lO1xuIFx0Y2xvY2stXHUwMDNlY2Fwcy5lbmFibGVcdD0gcHRwX2RwODM2NDBfZW5hYmxlO1xuIFx0Y2xvY2stXHUwMDNlY2Fwcy52ZXJpZnlcdD0gcHRwX2RwODM2NDBfdmVyaWZ5O1xuLVx0Lypcbi1cdCAqIENvbnZlcnQgdGhlIG1vZHVsZSBwYXJhbSBkZWZhdWx0cyBpbnRvIGEgZHluYW1pYyBwaW4gY29uZmlndXJhdGlvbi5cbi1cdCAqL1xuJiM0MztcdC8qIEluaXRpYWxpemUgdGhlIHJ1bnRpbWUgcGluIGNvbmZpZ3VyYXRpb24gZnJvbSBncGlvX3RhYi4gKi9cbiBcdGRwODM2NDBfZ3Bpb19kZWZhdWx0cyhjbG9jay1cdTAwM2VjYXBzLnBpbl9jb25maWcpO1xuLVx0Lypcbi1cdCAqIEdldCBhIHJlZmVyZW5jZSB0byB0aGlzIGJ1cyBpbnN0YW5jZS5cbi1cdCAqL1xuLVx0Z2V0X2RldmljZShcdTAwMjZidXMtXHUwMDNlZGV2KTtcbiB9XG4gXG4gc3RhdGljIGludCBjaG9vc2VfdGhpc19waHkoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrLFxuQEAgLTk5OSw1OCAmIzQzOzk4Nyw2IEBAIHN0YXRpYyBpbnQgY2hvb3NlX3RoaXNfcGh5KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jayxcbiBcdHJldHVybiAwO1xuIH1cbiBcbi1zdGF0aWMgc3RydWN0IGRwODM2NDBfY2xvY2sgKmRwODM2NDBfY2xvY2tfZ2V0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaylcbi17XG4tXHRpZiAoY2xvY2spXG4tXHRcdG11dGV4X2xvY2soXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4tXHRyZXR1cm4gY2xvY2s7XG4tfVxuLVxuLS8qXG4tICogTG9vayB1cCBhbmQgbG9jayBhIGNsb2NrIGJ5IGJ1cyBpbnN0YW5jZS5cbi0gKiBJZiB0aGVyZSBpcyBubyBjbG9jayBmb3IgdGhpcyBidXMsIHRoZW4gY3JlYXRlIGl0IGZpcnN0LlxuLSAqL1xuLXN0YXRpYyBzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqZHA4MzY0MF9jbG9ja19nZXRfYnVzKHN0cnVjdCBtaWlfYnVzICpidXMpXG4te1xuLVx0c3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrID0gTlVMTCwgKnRtcDtcbi1cdHN0cnVjdCBsaXN0X2hlYWQgKnRoaXM7XG4tXG4tXHRtdXRleF9sb2NrKFx1MDAyNnBoeXRlcl9jbG9ja3NfbG9jayk7XG4tXG4tXHRsaXN0X2Zvcl9lYWNoKHRoaXMsIFx1MDAyNnBoeXRlcl9jbG9ja3MpIHtcbi1cdFx0dG1wID0gbGlzdF9lbnRyeSh0aGlzLCBzdHJ1Y3QgZHA4MzY0MF9jbG9jaywgbGlzdCk7XG4tXHRcdGlmICh0bXAtXHUwMDNlYnVzID09IGJ1cykge1xuLVx0XHRcdGNsb2NrID0gdG1wO1xuLVx0XHRcdGJyZWFrO1xuLVx0XHR9XG4tXHR9XG4tXHRpZiAoY2xvY2spXG4tXHRcdGdvdG8gb3V0O1xuLVxuLVx0Y2xvY2sgPSBremFsbG9jX29iaihzdHJ1Y3QgZHA4MzY0MF9jbG9jayk7XG4tXHRpZiAoIWNsb2NrKVxuLVx0XHRnb3RvIG91dDtcbi1cbi1cdGNsb2NrLVx1MDAzZWNhcHMucGluX2NvbmZpZyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgcHRwX3Bpbl9kZXNjLFxuLVx0XHRcdFx0XHQgICAgICBEUDgzNjQwX05fUElOUyk7XG4tXHRpZiAoIWNsb2NrLVx1MDAzZWNhcHMucGluX2NvbmZpZykge1xuLVx0XHRrZnJlZShjbG9jayk7XG4tXHRcdGNsb2NrID0gTlVMTDtcbi1cdFx0Z290byBvdXQ7XG4tXHR9XG4tXHRkcDgzNjQwX2Nsb2NrX2luaXQoY2xvY2ssIGJ1cyk7XG4tXHRsaXN0X2FkZF90YWlsKFx1MDAyNmNsb2NrLVx1MDAzZWxpc3QsIFx1MDAyNnBoeXRlcl9jbG9ja3MpO1xuLW91dDpcbi1cdG11dGV4X3VubG9jayhcdTAwMjZwaHl0ZXJfY2xvY2tzX2xvY2spO1xuLVxuLVx0cmV0dXJuIGRwODM2NDBfY2xvY2tfZ2V0KGNsb2NrKTtcbi19XG4tXG4tc3RhdGljIHZvaWQgZHA4MzY0MF9jbG9ja19wdXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrKVxuLXtcbi1cdG11dGV4X3VubG9jayhcdTAwMjZjbG9jay1cdTAwM2VjbG9ja19sb2NrKTtcbi19XG4tXG4gc3RhdGljIGludCBkcDgzNjQwX3NvZnRfcmVzZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiB7XG4gXHRpbnQgcmV0O1xuQEAgLTE0MDAsMjAgJiM0MzsxMzM2LDMxIEBAIHN0YXRpYyBpbnQgZHA4MzY0MF90c19pbmZvKHN0cnVjdCBtaWlfdGltZXN0YW1wZXIgKm1paV90cyxcbiBcbiBzdGF0aWMgaW50IGRwODM2NDBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiB7XG4tXHRzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2s7XG4gXHRzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICpkcDgzNjQwO1xuLVx0aW50IGVyciA9IC1FTk9NRU0sIGk7XG4mIzQzO1x0c3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrO1xuJiM0MztcdGludCBlcnIsIGk7XG4gXG4gXHRpZiAocGh5ZGV2LVx1MDAzZW1kaW8uYWRkciA9PSBCUk9BRENBU1RfQUREUilcbiBcdFx0cmV0dXJuIDA7XG4gXG4tXHRjbG9jayA9IGRwODM2NDBfY2xvY2tfZ2V0X2J1cyhwaHlkZXYtXHUwMDNlbWRpby5idXMpO1xuLVx0aWYgKCFjbG9jaylcbi1cdFx0Z290byBub19jbG9jaztcbiYjNDM7XHRlcnIgPSBwaHlfcGFja2FnZV9qb2luKHBoeWRldiwgQlJPQURDQVNUX0FERFIsIHNpemVvZigqY2xvY2spKTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0cmV0dXJuIGVycjtcbiYjNDM7XG4mIzQzO1x0Y2xvY2sgPSBwaHlfcGFja2FnZV9nZXRfcHJpdihwaHlkZXYpO1xuJiM0MztcdC8qIEVuc3VyZSBvdGhlciBQSFkgcHJvYmVzIHdhaXQgZm9yIHNoYXJlZCBjbG9jayBpbml0aWFsaXphdGlvbi4gKi9cbiYjNDM7XHRwaHlfcGFja2FnZV9sb2NrKHBoeWRldik7XG4mIzQzO1x0aWYgKHBoeV9wYWNrYWdlX3Byb2JlX29uY2UocGh5ZGV2KSlcbiYjNDM7XHRcdGRwODM2NDBfY2xvY2tfaW5pdChjbG9jayk7XG4mIzQzO1x0cGh5X3BhY2thZ2VfdW5sb2NrKHBoeWRldik7XG4mIzQzO1xuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4gXG4gXHRkcDgzNjQwID0ga3phbGxvY19vYmooc3RydWN0IGRwODM2NDBfcHJpdmF0ZSk7XG4tXHRpZiAoIWRwODM2NDApXG4mIzQzO1x0aWYgKCFkcDgzNjQwKSB7XG4mIzQzO1x0XHRlcnIgPSAtRU5PTUVNO1xuIFx0XHRnb3RvIG5vX21lbW9yeTtcbiYjNDM7XHR9XG4gXG4gXHRkcDgzNjQwLVx1MDAzZXBoeWRldiA9IHBoeWRldjtcbiBcdGRwODM2NDAtXHUwMDNlbWlpX3RzLnJ4dHN0YW1wID0gZHA4MzY0MF9yeHRzdGFtcDtcbkBAIC0xNDUwLDE1ICYjNDM7MTM5NywyMCBAQCBzdGF0aWMgaW50IGRwODM2NDBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdH0gZWxzZVxuIFx0XHRsaXN0X2FkZF90YWlsKFx1MDAyNmRwODM2NDAtXHUwMDNlbGlzdCwgXHUwMDI2Y2xvY2stXHUwMDNlcGh5bGlzdCk7XG4gXG4tXHRkcDgzNjQwX2Nsb2NrX3B1dChjbG9jayk7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuJiM0MztcbiBcdHJldHVybiAwO1xuIFxuIG5vX3JlZ2lzdGVyOlxuIFx0Y2xvY2stXHUwMDNlY2hvc2VuID0gTlVMTDtcbiYjNDM7XHRjbG9jay1cdTAwM2VwdHBfY2xvY2sgPSBOVUxMO1xuJiM0MztcdHBoeWRldi1cdTAwM2VkZWZhdWx0X3RpbWVzdGFtcCA9IGZhbHNlO1xuJiM0MztcdHBoeWRldi1cdTAwM2VtaWlfdHMgPSBOVUxMO1xuJiM0MztcdHBoeWRldi1cdTAwM2Vwcml2ID0gTlVMTDtcbiBcdGtmcmVlKGRwODM2NDApO1xuIG5vX21lbW9yeTpcbi1cdGRwODM2NDBfY2xvY2tfcHV0KGNsb2NrKTtcbi1ub19jbG9jazpcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4mIzQzO1x0cGh5X3BhY2thZ2VfbGVhdmUocGh5ZGV2KTtcbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuQEAgLTE0NjcsNyAmIzQzOzE0MTksNiBAQCBzdGF0aWMgdm9pZCBkcDgzNjQwX3JlbW92ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0c3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrO1xuIFx0c3RydWN0IGxpc3RfaGVhZCAqdGhpcywgKm5leHQ7XG4gXHRzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICp0bXAsICpkcDgzNjQwID0gcGh5ZGV2LVx1MDAzZXByaXY7XG4tXHRib29sIHJlbW92ZV9jbG9jayA9IGZhbHNlO1xuIFxuIFx0aWYgKHBoeWRldi1cdTAwM2VtZGlvLmFkZHIgPT0gQlJPQURDQVNUX0FERFIpXG4gXHRcdHJldHVybjtcbkBAIC0xNDgwLDcgJiM0MzsxNDMxLDggQEAgc3RhdGljIHZvaWQgZHA4MzY0MF9yZW1vdmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdHNrYl9xdWV1ZV9wdXJnZShcdTAwMjZkcDgzNjQwLVx1MDAzZXJ4X3F1ZXVlKTtcbiBcdHNrYl9xdWV1ZV9wdXJnZShcdTAwMjZkcDgzNjQwLVx1MDAzZXR4X3F1ZXVlKTtcbiBcbi1cdGNsb2NrID0gZHA4MzY0MF9jbG9ja19nZXQoZHA4MzY0MC1cdTAwM2VjbG9jayk7XG4mIzQzO1x0Y2xvY2sgPSBkcDgzNjQwLVx1MDAzZWNsb2NrO1xuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4gXG4gXHRpZiAoZHA4MzY0MCA9PSBjbG9jay1cdTAwM2VjaG9zZW4pIHtcbiBcdFx0cHRwX2Nsb2NrX3VucmVnaXN0ZXIoY2xvY2stXHUwMDNlcHRwX2Nsb2NrKTtcbkBAIC0xNDk1LDIzICYjNDM7MTQ0NywxMCBAQCBzdGF0aWMgdm9pZCBkcDgzNjQwX3JlbW92ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0XHR9XG4gXHR9XG4gXG4tXHRpZiAoIWNsb2NrLVx1MDAzZWNob3NlbiBcdTAwMjZcdTAwMjYgbGlzdF9lbXB0eShcdTAwMjZjbG9jay1cdTAwM2VwaHlsaXN0KSlcbi1cdFx0cmVtb3ZlX2Nsb2NrID0gdHJ1ZTtcbi1cbi1cdGRwODM2NDBfY2xvY2tfcHV0KGNsb2NrKTtcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4gXHRrZnJlZShkcDgzNjQwKTtcbiBcbi1cdGlmIChyZW1vdmVfY2xvY2spIHtcbi1cdFx0bXV0ZXhfbG9jayhcdTAwMjZwaHl0ZXJfY2xvY2tzX2xvY2spO1xuLVx0XHRsaXN0X2RlbChcdTAwMjZjbG9jay1cdTAwM2VsaXN0KTtcbi1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBoeXRlcl9jbG9ja3NfbG9jayk7XG4tXG4tXHRcdG11dGV4X2Rlc3Ryb3koXHUwMDI2Y2xvY2stXHUwMDNlZXh0cmVnX2xvY2spO1xuLVx0XHRtdXRleF9kZXN0cm95KFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuLVx0XHRwdXRfZGV2aWNlKFx1MDAyNmNsb2NrLVx1MDAzZWJ1cy1cdTAwM2VkZXYpO1xuLVx0XHRrZnJlZShjbG9jay1cdTAwM2VjYXBzLnBpbl9jb25maWcpO1xuLVx0XHRrZnJlZShjbG9jayk7XG4tXHR9XG4mIzQzO1x0cGh5X3BhY2thZ2VfbGVhdmUocGh5ZGV2KTtcbiB9XG4gXG4gc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGRwODM2NDBfZHJpdmVyW10gPSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuY1xuaW5kZXggMTZhZThkMWMxZjg5YS4uNzM1ODA2YzViZWE4OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuY1xuQEAgLTUyLDYgJiM0Mzs1MiwyOSBAQCB2b2lkICpwaHlfcGFja2FnZV9nZXRfcHJpdihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChwaHlfcGFja2FnZV9nZXRfcHJpdik7XG4gXG4mIzQzOy8qKlxuJiM0MzsgKiBwaHlfcGFja2FnZV9sb2NrIC0gYWNxdWlyZSB0aGUgUEhZIHBhY2thZ2UgbG9ja1xuJiM0MzsgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHRoYXQgaGFzIGpvaW5lZCB0aGUgcGFja2FnZVxuJiM0MzsgKlxuJiM0MzsgKiBVc2UgdGhpcyB0byBzZXJpYWxpemUgYWNjZXNzIHRvIHBhY2thZ2UtcHJpdmF0ZSBkYXRhLiBSZWxlYXNlIHRoZSBsb2NrXG4mIzQzOyAqIHdpdGggcGh5X3BhY2thZ2VfdW5sb2NrKCkuXG4mIzQzOyAqL1xuJiM0Mzt2b2lkIHBoeV9wYWNrYWdlX2xvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiYjNDM7e1xuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uYnVzLVx1MDAzZXNoYXJlZF9sb2NrKTtcbiYjNDM7fVxuJiM0MztFWFBPUlRfU1lNQk9MX0dQTChwaHlfcGFja2FnZV9sb2NrKTtcbiYjNDM7XG4mIzQzOy8qKlxuJiM0MzsgKiBwaHlfcGFja2FnZV91bmxvY2sgLSByZWxlYXNlIHRoZSBQSFkgcGFja2FnZSBsb2NrXG4mIzQzOyAqIEBwaHlkZXY6IFBIWSBkZXZpY2UgdGhhdCBoYXMgam9pbmVkIHRoZSBwYWNrYWdlXG4mIzQzOyAqL1xuJiM0Mzt2b2lkIHBoeV9wYWNrYWdlX3VubG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuJiM0Mzt7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmJ1cy1cdTAwM2VzaGFyZWRfbG9jayk7XG4mIzQzO31cbiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwocGh5X3BhY2thZ2VfdW5sb2NrKTtcbiYjNDM7XG4gc3RhdGljIGludCBwaHlfcGFja2FnZV9hZGRyZXNzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4gXHRcdFx0ICAgICAgIHVuc2lnbmVkIGludCBhZGRyX29mZnNldClcbiB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oXG5pbmRleCAwZmJhMjQ1Zjk3NDU4Li5jNmUyNmFjNmIyOGYwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5bGliLmhcbkBAIC0xMiw2ICYjNDM7MTIsOCBAQCBzdHJ1Y3QgbWlpX2J1cztcbiBcbiBzdHJ1Y3QgZGV2aWNlX25vZGUgKnBoeV9wYWNrYWdlX2dldF9ub2RlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuIHZvaWQgKnBoeV9wYWNrYWdlX2dldF9wcml2KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuJiM0Mzt2b2lkIHBoeV9wYWNrYWdlX2xvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG4mIzQzO3ZvaWQgcGh5X3BhY2thZ2VfdW5sb2NrKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuIGludCBfX3BoeV9wYWNrYWdlX3JlYWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdW5zaWduZWQgaW50IGFkZHJfb2Zmc2V0LFxuIFx0XHQgICAgICAgdTMyIHJlZ251bSk7XG4gaW50IF9fcGh5X3BhY2thZ2Vfd3JpdGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdW5zaWduZWQgaW50IGFkZHJfb2Zmc2V0LFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHRwL0tjb25maWcgYi9kcml2ZXJzL3B0cC9LY29uZmlnXG5pbmRleCBiOTM2NDBjYTA4YjcyLi5mZWI1MGY4Y2M0MDZhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9wdHAvS2NvbmZpZ1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9wdHAvS2NvbmZpZ1xuQEAgLTc4LDYgJiM0Mzs3OCw3IEBAIGNvbmZpZyBEUDgzNjQwX1BIWVxuIFx0ZGVwZW5kcyBvbiBQSFlMSUJcbiBcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tcbiBcdHNlbGVjdCBDUkMzMlxuJiM0MztcdHNlbGVjdCBQSFlfUEFDS0FHRVxuIFx0aGVscFxuIFx0ICBTdXBwb3J0cyB0aGUgRFA4MzY0MCBQSFlURVIgd2l0aCBJRUVFIDE1ODggZmVhdHVyZXMuXG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTY6NTQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RQODM2NDBfUEhZJiMzNDssCiAgICAmIzM0O05FVFdPUktfUEhZX1RJTUVTVEFNUElORyYjMzQ7LAogICAgJiMzNDtQSFlMSUImIzM0OywKICAgICYjMzQ7UFRQXzE1ODhfQ0xPQ0smIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkcDgzNjQwX3Byb2JlJiMzNDssCiAgICAmIzM0O2RwODM2NDBfcmVtb3ZlJiMzNDssCiAgICAmIzM0O3BoeV9wYWNrYWdlX2xvY2smIzM0OywKICAgICYjMzQ7cGh5X3BhY2thZ2VfdW5sb2NrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyB0aGUgRFA4MzY0MCBQSFkgZHJpdmVyIHRvIHVzZSB0aGUgc3RhbmRhcmQgcGh5X3BhY2thZ2UgQVBJIGZvciBzaGFyZWQgY2xvY2sgaW5pdGlhbGl6YXRpb24sIHJlcGxhY2luZyBhIGN1c3RvbSBnbG9iYWwgbGlzdC4gSXQgYWxzbyBpbnRyb2R1Y2VzIHBoeV9wYWNrYWdlX2xvY2sgYW5kIHBoeV9wYWNrYWdlX3VubG9jayB0byBzZXJpYWxpemUgYWNjZXNzIHRvIHBhY2thZ2UtcHJpdmF0ZSBkYXRhLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCB0aGUgcHJvYmUgYW5kIHJlbW92ZSBwYXRocyBvZiB0aGUgUEhZIGRyaXZlciwgd2hpY2ggY2FuIGJlIHJlYWNoZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBieSBlbXVsYXRpbmcgYW4gTURJTyBidXMgb3IgYSBVU0IgbmV0d29yayBkZXZpY2Ugd2l0aCB0aGUgc3BlY2lmaWMgUEhZIElELiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTViNzBkZGFhN2YzZGZmMzZiZDUxZTdlMmM2OGVlYzA4NTE5YTIzZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDEwIDE2OjUzOjU5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYyBiL2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMKaW5kZXggOTg0NzJhYmRkMzkyMC4uNjg2N2U3YzZmM2I3ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jCkBAIC0yMSw2ICYjNDM7MjEsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaCZndDsKIAogI2luY2x1ZGUgJiMzNDtkcDgzNjQwX3JlZy5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O3BoeWxpYi5oJiMzNDsKIAogI2RlZmluZSBEUDgzNjQwX1BIWV9JRAkweDIwMDA1Y2UxCiAjZGVmaW5lIFBBR0VTRUwJCTB4MTMKQEAgLTEyOCwxMCAmIzQzOzEyOSw2IEBAIHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUgewogfTsKIAogc3RydWN0IGRwODM2NDBfY2xvY2sgewotCS8qIGtlZXBzIHRoZSBpbnN0YW5jZSBpbiB0aGUgJiMzOTtwaHl0ZXJfY2xvY2tzJiMzOTsgbGlzdCAqLwotCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKLQkvKiB3ZSBjcmVhdGUgb25lIGNsb2NrIGluc3RhbmNlIHBlciBNSUkgYnVzICovCi0Jc3RydWN0IG1paV9idXMgKmJ1czsKIAkvKiBwcm90ZWN0cyBleHRlbmRlZCByZWdpc3RlcnMgZnJvbSBjb25jdXJyZW50IGFjY2VzcyAqLwogCXN0cnVjdCBtdXRleCBleHRyZWdfbG9jazsKIAkvKiByZW1lbWJlcnMgd2hpY2ggcGFnZSB3YXMgbGFzdCBzZWxlY3RlZCAqLwpAQCAtMTQ2LDYgJiM0MzsxNDMsOCBAQCBzdHJ1Y3QgZHA4MzY0MF9jbG9jayB7CiAJc3RydWN0IGxpc3RfaGVhZCBwaHlsaXN0OwogCS8qIHJlZmVyZW5jZSB0byBvdXIgUFRQIGhhcmR3YXJlIGNsb2NrICovCiAJc3RydWN0IHB0cF9jbG9jayAqcHRwX2Nsb2NrOwomIzQzOwkvKiBwcm90ZWN0ZWQgYnkgdGhlIFBUUCBjb3JlIHBpbiBjb25maWd1cmF0aW9uIGxvY2sgKi8KJiM0MzsJc3RydWN0IHB0cF9waW5fZGVzYyBwaW5fY29uZmlnW0RQODM2NDBfTl9QSU5TXTsKIH07CiAKIC8qIGdsb2JhbHMgKi8KQEAgLTIwNiwxMCAmIzQzOzIwNSw2IEBAIHN0YXRpYyB2b2lkIGRwODM2NDBfZ3Bpb19kZWZhdWx0cyhzdHJ1Y3QgcHRwX3Bpbl9kZXNjICpwZCkKIAl9CiB9CiAKLS8qIGEgbGlzdCBvZiBjbG9ja3MgYW5kIGEgbXV0ZXggdG8gcHJvdGVjdCBpdCAqLwotc3RhdGljIExJU1RfSEVBRChwaHl0ZXJfY2xvY2tzKTsKLXN0YXRpYyBERUZJTkVfTVVURVgocGh5dGVyX2Nsb2Nrc19sb2NrKTsKLQogc3RhdGljIHZvaWQgcnhfdGltZXN0YW1wX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTsKIAogLyogZXh0ZW5kZWQgcmVnaXN0ZXIgYWNjZXNzIGZ1bmN0aW9ucyAqLwpAQCAtOTUzLDEzICYjNDM7OTQ4LDEyIEBAIHN0YXRpYyB2b2lkIGRlY29kZV9zdGF0dXNfZnJhbWUoc3RydWN0IGRwODM2NDBfcHJpdmF0ZSAqZHA4MzY0MCwKIAl9CiB9CiAKLXN0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfaW5pdChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2ssIHN0cnVjdCBtaWlfYnVzICpidXMpCiYjNDM7c3RhdGljIHZvaWQgZHA4MzY0MF9jbG9ja19pbml0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaykKIHsKLQlJTklUX0xJU1RfSEVBRCgmYW1wO2Nsb2NrLSZndDtsaXN0KTsKLQljbG9jay0mZ3Q7YnVzID0gYnVzOwogCW11dGV4X2luaXQoJmFtcDtjbG9jay0mZ3Q7ZXh0cmVnX2xvY2spOwogCW11dGV4X2luaXQoJmFtcDtjbG9jay0mZ3Q7Y2xvY2tfbG9jayk7CiAJSU5JVF9MSVNUX0hFQUQoJmFtcDtjbG9jay0mZ3Q7cGh5bGlzdCk7CiYjNDM7CWNsb2NrLSZndDtjYXBzLnBpbl9jb25maWcgPSBjbG9jay0mZ3Q7cGluX2NvbmZpZzsKIAljbG9jay0mZ3Q7Y2Fwcy5vd25lciA9IFRISVNfTU9EVUxFOwogCXNwcmludGYoY2xvY2stJmd0O2NhcHMubmFtZSwgJiMzNDtkcDgzNjQwIHRpbWVyJiMzNDspOwogCWNsb2NrLSZndDtjYXBzLm1heF9hZGoJPSAxOTUzMTI0OwpAQCAtOTc3LDE0ICYjNDM7OTcxLDggQEAgc3RhdGljIHZvaWQgZHA4MzY0MF9jbG9ja19pbml0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaywgc3RydWN0IG1paV9idXMgKmJ1cykKIAljbG9jay0mZ3Q7Y2Fwcy5zZXR0aW1lNjQJPSBwdHBfZHA4MzY0MF9zZXR0aW1lOwogCWNsb2NrLSZndDtjYXBzLmVuYWJsZQk9IHB0cF9kcDgzNjQwX2VuYWJsZTsKIAljbG9jay0mZ3Q7Y2Fwcy52ZXJpZnkJPSBwdHBfZHA4MzY0MF92ZXJpZnk7Ci0JLyoKLQkgKiBDb252ZXJ0IHRoZSBtb2R1bGUgcGFyYW0gZGVmYXVsdHMgaW50byBhIGR5bmFtaWMgcGluIGNvbmZpZ3VyYXRpb24uCi0JICovCiYjNDM7CS8qIEluaXRpYWxpemUgdGhlIHJ1bnRpbWUgcGluIGNvbmZpZ3VyYXRpb24gZnJvbSBncGlvX3RhYi4gKi8KIAlkcDgzNjQwX2dwaW9fZGVmYXVsdHMoY2xvY2stJmd0O2NhcHMucGluX2NvbmZpZyk7Ci0JLyoKLQkgKiBHZXQgYSByZWZlcmVuY2UgdG8gdGhpcyBidXMgaW5zdGFuY2UuCi0JICovCi0JZ2V0X2RldmljZSgmYW1wO2J1cy0mZ3Q7ZGV2KTsKIH0KIAogc3RhdGljIGludCBjaG9vc2VfdGhpc19waHkoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrLApAQCAtOTk5LDU4ICYjNDM7OTg3LDYgQEAgc3RhdGljIGludCBjaG9vc2VfdGhpc19waHkoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrLAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgc3RydWN0IGRwODM2NDBfY2xvY2sgKmRwODM2NDBfY2xvY2tfZ2V0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaykKLXsKLQlpZiAoY2xvY2spCi0JCW11dGV4X2xvY2soJmFtcDtjbG9jay0mZ3Q7Y2xvY2tfbG9jayk7Ci0JcmV0dXJuIGNsb2NrOwotfQotCi0vKgotICogTG9vayB1cCBhbmQgbG9jayBhIGNsb2NrIGJ5IGJ1cyBpbnN0YW5jZS4KLSAqIElmIHRoZXJlIGlzIG5vIGNsb2NrIGZvciB0aGlzIGJ1cywgdGhlbiBjcmVhdGUgaXQgZmlyc3QuCi0gKi8KLXN0YXRpYyBzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqZHA4MzY0MF9jbG9ja19nZXRfYnVzKHN0cnVjdCBtaWlfYnVzICpidXMpCi17Ci0Jc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrID0gTlVMTCwgKnRtcDsKLQlzdHJ1Y3QgbGlzdF9oZWFkICp0aGlzOwotCi0JbXV0ZXhfbG9jaygmYW1wO3BoeXRlcl9jbG9ja3NfbG9jayk7Ci0KLQlsaXN0X2Zvcl9lYWNoKHRoaXMsICZhbXA7cGh5dGVyX2Nsb2NrcykgewotCQl0bXAgPSBsaXN0X2VudHJ5KHRoaXMsIHN0cnVjdCBkcDgzNjQwX2Nsb2NrLCBsaXN0KTsKLQkJaWYgKHRtcC0mZ3Q7YnVzID09IGJ1cykgewotCQkJY2xvY2sgPSB0bXA7Ci0JCQlicmVhazsKLQkJfQotCX0KLQlpZiAoY2xvY2spCi0JCWdvdG8gb3V0OwotCi0JY2xvY2sgPSBremFsbG9jX29iaihzdHJ1Y3QgZHA4MzY0MF9jbG9jayk7Ci0JaWYgKCFjbG9jaykKLQkJZ290byBvdXQ7Ci0KLQljbG9jay0mZ3Q7Y2Fwcy5waW5fY29uZmlnID0ga3phbGxvY19vYmpzKHN0cnVjdCBwdHBfcGluX2Rlc2MsCi0JCQkJCSAgICAgIERQODM2NDBfTl9QSU5TKTsKLQlpZiAoIWNsb2NrLSZndDtjYXBzLnBpbl9jb25maWcpIHsKLQkJa2ZyZWUoY2xvY2spOwotCQljbG9jayA9IE5VTEw7Ci0JCWdvdG8gb3V0OwotCX0KLQlkcDgzNjQwX2Nsb2NrX2luaXQoY2xvY2ssIGJ1cyk7Ci0JbGlzdF9hZGRfdGFpbCgmYW1wO2Nsb2NrLSZndDtsaXN0LCAmYW1wO3BoeXRlcl9jbG9ja3MpOwotb3V0OgotCW11dGV4X3VubG9jaygmYW1wO3BoeXRlcl9jbG9ja3NfbG9jayk7Ci0KLQlyZXR1cm4gZHA4MzY0MF9jbG9ja19nZXQoY2xvY2spOwotfQotCi1zdGF0aWMgdm9pZCBkcDgzNjQwX2Nsb2NrX3B1dChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2spCi17Ci0JbXV0ZXhfdW5sb2NrKCZhbXA7Y2xvY2stJmd0O2Nsb2NrX2xvY2spOwotfQotCiBzdGF0aWMgaW50IGRwODM2NDBfc29mdF9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogewogCWludCByZXQ7CkBAIC0xNDAwLDIwICYjNDM7MTMzNiwzMSBAQCBzdGF0aWMgaW50IGRwODM2NDBfdHNfaW5mbyhzdHJ1Y3QgbWlpX3RpbWVzdGFtcGVyICptaWlfdHMsCiAKIHN0YXRpYyBpbnQgZHA4MzY0MF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogewotCXN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jazsKIAlzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICpkcDgzNjQwOwotCWludCBlcnIgPSAtRU5PTUVNLCBpOwomIzQzOwlzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2s7CiYjNDM7CWludCBlcnIsIGk7CiAKIAlpZiAocGh5ZGV2LSZndDttZGlvLmFkZHIgPT0gQlJPQURDQVNUX0FERFIpCiAJCXJldHVybiAwOwogCi0JY2xvY2sgPSBkcDgzNjQwX2Nsb2NrX2dldF9idXMocGh5ZGV2LSZndDttZGlvLmJ1cyk7Ci0JaWYgKCFjbG9jaykKLQkJZ290byBub19jbG9jazsKJiM0MzsJZXJyID0gcGh5X3BhY2thZ2Vfam9pbihwaHlkZXYsIEJST0FEQ0FTVF9BRERSLCBzaXplb2YoKmNsb2NrKSk7CiYjNDM7CWlmIChlcnIpCiYjNDM7CQlyZXR1cm4gZXJyOwomIzQzOwomIzQzOwljbG9jayA9IHBoeV9wYWNrYWdlX2dldF9wcml2KHBoeWRldik7CiYjNDM7CS8qIEVuc3VyZSBvdGhlciBQSFkgcHJvYmVzIHdhaXQgZm9yIHNoYXJlZCBjbG9jayBpbml0aWFsaXphdGlvbi4gKi8KJiM0MzsJcGh5X3BhY2thZ2VfbG9jayhwaHlkZXYpOwomIzQzOwlpZiAocGh5X3BhY2thZ2VfcHJvYmVfb25jZShwaHlkZXYpKQomIzQzOwkJZHA4MzY0MF9jbG9ja19pbml0KGNsb2NrKTsKJiM0MzsJcGh5X3BhY2thZ2VfdW5sb2NrKHBoeWRldik7CiYjNDM7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtjbG9jay0mZ3Q7Y2xvY2tfbG9jayk7CiAKIAlkcDgzNjQwID0ga3phbGxvY19vYmooc3RydWN0IGRwODM2NDBfcHJpdmF0ZSk7Ci0JaWYgKCFkcDgzNjQwKQomIzQzOwlpZiAoIWRwODM2NDApIHsKJiM0MzsJCWVyciA9IC1FTk9NRU07CiAJCWdvdG8gbm9fbWVtb3J5OwomIzQzOwl9CiAKIAlkcDgzNjQwLSZndDtwaHlkZXYgPSBwaHlkZXY7CiAJZHA4MzY0MC0mZ3Q7bWlpX3RzLnJ4dHN0YW1wID0gZHA4MzY0MF9yeHRzdGFtcDsKQEAgLTE0NTAsMTUgJiM0MzsxMzk3LDIwIEBAIHN0YXRpYyBpbnQgZHA4MzY0MF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogCX0gZWxzZQogCQlsaXN0X2FkZF90YWlsKCZhbXA7ZHA4MzY0MC0mZ3Q7bGlzdCwgJmFtcDtjbG9jay0mZ3Q7cGh5bGlzdCk7CiAKLQlkcDgzNjQwX2Nsb2NrX3B1dChjbG9jayk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2Nsb2NrLSZndDtjbG9ja19sb2NrKTsKJiM0MzsKIAlyZXR1cm4gMDsKIAogbm9fcmVnaXN0ZXI6CiAJY2xvY2stJmd0O2Nob3NlbiA9IE5VTEw7CiYjNDM7CWNsb2NrLSZndDtwdHBfY2xvY2sgPSBOVUxMOwomIzQzOwlwaHlkZXYtJmd0O2RlZmF1bHRfdGltZXN0YW1wID0gZmFsc2U7CiYjNDM7CXBoeWRldi0mZ3Q7bWlpX3RzID0gTlVMTDsKJiM0MzsJcGh5ZGV2LSZndDtwcml2ID0gTlVMTDsKIAlrZnJlZShkcDgzNjQwKTsKIG5vX21lbW9yeToKLQlkcDgzNjQwX2Nsb2NrX3B1dChjbG9jayk7Ci1ub19jbG9jazoKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7Y2xvY2stJmd0O2Nsb2NrX2xvY2spOwomIzQzOwlwaHlfcGFja2FnZV9sZWF2ZShwaHlkZXYpOwogCXJldHVybiBlcnI7CiB9CiAKQEAgLTE0NjcsNyAmIzQzOzE0MTksNiBAQCBzdGF0aWMgdm9pZCBkcDgzNjQwX3JlbW92ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogCXN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jazsKIAlzdHJ1Y3QgbGlzdF9oZWFkICp0aGlzLCAqbmV4dDsKIAlzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICp0bXAsICpkcDgzNjQwID0gcGh5ZGV2LSZndDtwcml2OwotCWJvb2wgcmVtb3ZlX2Nsb2NrID0gZmFsc2U7CiAKIAlpZiAocGh5ZGV2LSZndDttZGlvLmFkZHIgPT0gQlJPQURDQVNUX0FERFIpCiAJCXJldHVybjsKQEAgLTE0ODAsNyAmIzQzOzE0MzEsOCBAQCBzdGF0aWMgdm9pZCBkcDgzNjQwX3JlbW92ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogCXNrYl9xdWV1ZV9wdXJnZSgmYW1wO2RwODM2NDAtJmd0O3J4X3F1ZXVlKTsKIAlza2JfcXVldWVfcHVyZ2UoJmFtcDtkcDgzNjQwLSZndDt0eF9xdWV1ZSk7CiAKLQljbG9jayA9IGRwODM2NDBfY2xvY2tfZ2V0KGRwODM2NDAtJmd0O2Nsb2NrKTsKJiM0MzsJY2xvY2sgPSBkcDgzNjQwLSZndDtjbG9jazsKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO2Nsb2NrLSZndDtjbG9ja19sb2NrKTsKIAogCWlmIChkcDgzNjQwID09IGNsb2NrLSZndDtjaG9zZW4pIHsKIAkJcHRwX2Nsb2NrX3VucmVnaXN0ZXIoY2xvY2stJmd0O3B0cF9jbG9jayk7CkBAIC0xNDk1LDIzICYjNDM7MTQ0NywxMCBAQCBzdGF0aWMgdm9pZCBkcDgzNjQwX3JlbW92ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogCQl9CiAJfQogCi0JaWYgKCFjbG9jay0mZ3Q7Y2hvc2VuICZhbXA7JmFtcDsgbGlzdF9lbXB0eSgmYW1wO2Nsb2NrLSZndDtwaHlsaXN0KSkKLQkJcmVtb3ZlX2Nsb2NrID0gdHJ1ZTsKLQotCWRwODM2NDBfY2xvY2tfcHV0KGNsb2NrKTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7Y2xvY2stJmd0O2Nsb2NrX2xvY2spOwogCWtmcmVlKGRwODM2NDApOwogCi0JaWYgKHJlbW92ZV9jbG9jaykgewotCQltdXRleF9sb2NrKCZhbXA7cGh5dGVyX2Nsb2Nrc19sb2NrKTsKLQkJbGlzdF9kZWwoJmFtcDtjbG9jay0mZ3Q7bGlzdCk7Ci0JCW11dGV4X3VubG9jaygmYW1wO3BoeXRlcl9jbG9ja3NfbG9jayk7Ci0KLQkJbXV0ZXhfZGVzdHJveSgmYW1wO2Nsb2NrLSZndDtleHRyZWdfbG9jayk7Ci0JCW11dGV4X2Rlc3Ryb3koJmFtcDtjbG9jay0mZ3Q7Y2xvY2tfbG9jayk7Ci0JCXB1dF9kZXZpY2UoJmFtcDtjbG9jay0mZ3Q7YnVzLSZndDtkZXYpOwotCQlrZnJlZShjbG9jay0mZ3Q7Y2Fwcy5waW5fY29uZmlnKTsKLQkJa2ZyZWUoY2xvY2spOwotCX0KJiM0MzsJcGh5X3BhY2thZ2VfbGVhdmUocGh5ZGV2KTsKIH0KIAogc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGRwODM2NDBfZHJpdmVyW10gPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jCmluZGV4IDE2YWU4ZDFjMWY4OWEuLjczNTgwNmM1YmVhODggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jCkBAIC01Miw2ICYjNDM7NTIsMjkgQEAgdm9pZCAqcGh5X3BhY2thZ2VfZ2V0X3ByaXYoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHBoeV9wYWNrYWdlX2dldF9wcml2KTsKIAomIzQzOy8qKgomIzQzOyAqIHBoeV9wYWNrYWdlX2xvY2sgLSBhY3F1aXJlIHRoZSBQSFkgcGFja2FnZSBsb2NrCiYjNDM7ICogQHBoeWRldjogUEhZIGRldmljZSB0aGF0IGhhcyBqb2luZWQgdGhlIHBhY2thZ2UKJiM0MzsgKgomIzQzOyAqIFVzZSB0aGlzIHRvIHNlcmlhbGl6ZSBhY2Nlc3MgdG8gcGFja2FnZS1wcml2YXRlIGRhdGEuIFJlbGVhc2UgdGhlIGxvY2sKJiM0MzsgKiB3aXRoIHBoeV9wYWNrYWdlX3VubG9jaygpLgomIzQzOyAqLwomIzQzO3ZvaWQgcGh5X3BhY2thZ2VfbG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQomIzQzO3sKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO3BoeWRldi0mZ3Q7bWRpby5idXMtJmd0O3NoYXJlZF9sb2NrKTsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwocGh5X3BhY2thZ2VfbG9jayk7CiYjNDM7CiYjNDM7LyoqCiYjNDM7ICogcGh5X3BhY2thZ2VfdW5sb2NrIC0gcmVsZWFzZSB0aGUgUEhZIHBhY2thZ2UgbG9jawomIzQzOyAqIEBwaHlkZXY6IFBIWSBkZXZpY2UgdGhhdCBoYXMgam9pbmVkIHRoZSBwYWNrYWdlCiYjNDM7ICovCiYjNDM7dm9pZCBwaHlfcGFja2FnZV91bmxvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKJiM0Mzt7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO3BoeWRldi0mZ3Q7bWRpby5idXMtJmd0O3NoYXJlZF9sb2NrKTsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwocGh5X3BhY2thZ2VfdW5sb2NrKTsKJiM0MzsKIHN0YXRpYyBpbnQgcGh5X3BhY2thZ2VfYWRkcmVzcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LAogCQkJICAgICAgIHVuc2lnbmVkIGludCBhZGRyX29mZnNldCkKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaWIuaCBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaWIuaAppbmRleCAwZmJhMjQ1Zjk3NDU4Li5jNmUyNmFjNmIyOGYwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGliLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oCkBAIC0xMiw2ICYjNDM7MTIsOCBAQCBzdHJ1Y3QgbWlpX2J1czsKIAogc3RydWN0IGRldmljZV9ub2RlICpwaHlfcGFja2FnZV9nZXRfbm9kZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTsKIHZvaWQgKnBoeV9wYWNrYWdlX2dldF9wcml2KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpOwomIzQzO3ZvaWQgcGh5X3BhY2thZ2VfbG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTsKJiM0Mzt2b2lkIHBoeV9wYWNrYWdlX3VubG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTsKIGludCBfX3BoeV9wYWNrYWdlX3JlYWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdW5zaWduZWQgaW50IGFkZHJfb2Zmc2V0LAogCQkgICAgICAgdTMyIHJlZ251bSk7CiBpbnQgX19waHlfcGFja2FnZV93cml0ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1bnNpZ25lZCBpbnQgYWRkcl9vZmZzZXQsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3B0cC9LY29uZmlnIGIvZHJpdmVycy9wdHAvS2NvbmZpZwppbmRleCBiOTM2NDBjYTA4YjcyLi5mZWI1MGY4Y2M0MDZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3B0cC9LY29uZmlnCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvcHRwL0tjb25maWcKQEAgLTc4LDYgJiM0Mzs3OCw3IEBAIGNvbmZpZyBEUDgzNjQwX1BIWQogCWRlcGVuZHMgb24gUEhZTElCCiAJZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DSwogCXNlbGVjdCBDUkMzMgomIzQzOwlzZWxlY3QgUEhZX1BBQ0tBR0UKIAloZWxwCiAJICBTdXBwb3J0cyB0aGUgRFA4MzY0MCBQSFlURVIgd2l0aCBJRUVFIDE1ODggZmVhdHVyZXMuCiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTY6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQ4MQoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDU1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBIWSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0b3VjaGVzIHRoZSBgZHA4MzY0MC5jYCwgYHBoeV9wYWNrYWdlLmNgLCBgcGh5bGliLmhgLCBhbmQgYEtjb25maWdgIGZpbGVzLiBJdCYjMzk7cyBlc3NlbnRpYWxseSByZWZhY3RvcmluZyB0aGUgYGRwODM2NDBgIFBIWSBkcml2ZXIgdG8gdXNlIHRoZSBgcGh5X3BhY2thZ2VgIG1lY2hhbmlzbSwgcmVwbGFjaW5nIGEgY3VzdG9tIGdsb2JhbCBjbG9jayBsaXN0IHdpdGggdGhlIHN0YW5kYXJkIG9uZS4gVGhleSYjMzk7dmUgYWRkZWQgYHBoeV9wYWNrYWdlX2xvY2tgIGFuZCBgcGh5X3BhY2thZ2VfdW5sb2NrYCB0byB0aGUgYHBoeV9wYWNrYWdlLmNgIGZpbGUgYW5kIG1vZGlmaWVkIHRoZSBgZHA4MzY0MF9wcm9iZWAgYW5kIGBkcDgzNjQwX3JlbW92ZWAgZnVuY3Rpb25zIHRvIHVzZSB0aGUgc3RhbmRhcmQgbG9ja2luZyBhbmQgbWFuYWdlbWVudCBwcmltaXRpdmVzIG9mIHRoZSBuZXcgcGFja2FnZSBzeXN0ZW0uIFRoZXkmIzM5O3ZlIGFsc28gYWRkZWQgYHNlbGVjdCBQSFlfUEFDS0FHRWAgdG8gdGhlIGBEUDgzNjQwX1BIWWAgY29uZmlndXJhdGlvbiBvcHRpb24gaW4gdGhlIGBLY29uZmlnYCBmaWxlLCB3aGljaCBtYWtlcyBzZW5zZS4KCk15IGZpcnN0IHRob3VnaHQgaXMsIGNhbiBJIHJlYWNoIHRoaXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBmb3IgdGVzdGluZz8gVGhlIGBkcDgzNjQwYCBkcml2ZXIgaXMsIGFmdGVyIGFsbCwgYSBQSFkgZHJpdmVyLCB3aGljaCBhcmUgdHlwaWNhbGx5IHByb2JlZCB3aGVuIGEgbmV0d29yayBkZXZpY2UgY29ubmVjdHMgdG8gYW4gTURJTyBidXMgYW5kIHRoZSBQSFkgSUQgbWF0Y2hlcy4gUUVNVSBlbXVsYXRpb24gb2YgTURJTyBidXNlcyBhbmQgUEhZcyBpcyB1c3VhbGx5IGZlYXNpYmxlLCBhbmQgYGRwODM2NDBgIGl0c2VsZiBpcyBhIGZhaXJseSBzdGFuZGFyZCBQSFkuCgpOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gaXM6IGNhbiBzeXprYWxsZXIgZnV6eiB0aGlzPyBTeXprYWxsZXIgKmRvZXMqIGhhdmUgc3VwcG9ydCBmb3IgTURJTy9QSFkgZnV6emluZywgdHlwaWNhbGx5IHRocm91Z2ggZW11bGF0ZWQgbmV0d29yayBkZXZpY2VzIGxpa2UgYG1hY2JgLCBvciBtYXliZSBldmVuIGR1bW15IE1ESU8gYnVzZXMuIEkga25vdyBJIGNhbiB1c2UgYHZldGhgIG9yIGB0dW5gIGRldmljZXMsIGJ1dCB0aGV5IGRvbiYjMzk7dCBoYXZlIGJ1aWx0LWluIFBIWXMuIEhtbSwgSSB0aG91Z2h0IHN5emthbGxlciBoYWQgYHN5el9tZGlvX3JlYWRgLCBgc3l6X21kaW9fd3JpdGVgIGNhbGxzLCBidXQgbWF5YmUgbm90Li4uCgpPa2F5LCBidXQgdGhlIGtleSBpcyB0aGF0IGBkcDgzNjQwX3Byb2JlYCBpcyBjYWxsZWQgd2hlbiBhIFBIWSBkZXZpY2UgaXMgY3JlYXRlZCwgcmlnaHQ/IENhbiBhIFBIWSBkZXZpY2UgYmUgY3JlYXRlZCBmcm9tIHVzZXJzcGFjZT8gTm8sIG5vdCBkaXJlY3RseSB2aWEgbmV0bGluayBvciBzeXNmcywgYXMgdXN1YWxseSBNRElPIGJ1cyBzY2FubmluZyBpcyB0aGUgbWVhbnMuIFdhaXQsIHRoZXJlIGFyZSBgbWRpby1iY20tdW5pbWFjYCBvciBgZml4ZWQtcGh5YCwgcmlnaHQ/CgpBY3R1YWxseSwgc3l6a2FsbGVyICpkb2VzKiBmdXp6IE1ESU8gYnVzZXMgdGhyb3VnaCB2aXJ0dWFsIGRyaXZlcnMgb3IgbmV0bGluayBpbnRlcmZhY2VzLiBPa2F5LCBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlIGBkcDgzNjQwX3Byb2JlYCBmdW5jdGlvbiBpcyByZWFjaGFibGUuIEkgd2lsbCBncmVwIGZvciBgZHA4MzY0MF9wcm9iZWAgb3IgZXZlbiBgRFA4MzY0MF9QSFlfSURgIGluIHRoZSBrZXJuZWwgc291cmNlLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgc3l6a2FsbGVyIGNhbiB0cmlnZ2VyIHRoaXMgY29kZSBwYXRoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE2OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0RQODM2NDBfUEhZX0lEJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMjUtXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jOjI2OiNkZWZpbmUgRFA4MzY0MF9QSFlfSURcdDB4MjAwMDVjZTFcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMjctI2RlZmluZSBQQUdFU0VMXHRcdDB4MTNcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jPTE0NTY9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGRwODM2NDBfZHJpdmVyW10gPSB7XG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTE0NTcte1xuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYzoxNDU4Olx0LnBoeV9pZFx0XHQ9IERQODM2NDBfUEhZX0lELFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYy0xNDU5LVx0LnBoeV9pZF9tYXNrXHQ9IDB4ZmZmZmZmZjAsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYz0xNDc3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgZHA4MzY0MF90YmxbXSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM6MTQ3ODpcdHsgRFA4MzY0MF9QSFlfSUQsIDB4ZmZmZmZmZjAgfSxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTQ3OS1cdHsgfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE2OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5NzMKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBEUDgzNjQwIFBIWSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBjbGVhcmx5IGZvY3VzZWQgb24gdGhlIGBkcDgzNjQwYCBkcml2ZXIsIHNwZWNpZmljYWxseSB0b3VjaGluZyBgZHA4MzY0MF9wcm9iZWAgYW5kIGBkcDgzNjQwX3JlbW92ZWAuIEludGVyZXN0aW5nIHRoYXQgaXQmIzM5O3MgYWxzbyBhZGRpbmcgYHBoeV9wYWNrYWdlX2xvY2tgIGFuZCBgcGh5X3BhY2thZ2VfdW5sb2NrYCB0byBgcGh5X3BhY2thZ2UuY2AuIEhvbGQgb24sIGBwaHlfcGFja2FnZV9sb2NrYCBpcyAqZXhwb3J0ZWQqPyBUaGF0IG1lYW5zIG90aGVyIFBIWSBkcml2ZXJzIGNvdWxkIHBvdGVudGlhbGx5IGxldmVyYWdlIHRoaXMgbmV3IGxvY2tpbmcgbWVjaGFuaXNtLiBUaGF0JiMzOTtzIGEgZ29vZCBkZXNpZ24gZGVjaXNpb247IG1pbmltaXppbmcgY29kZSBkdXBsaWNhdGlvbiBpcyBhbHdheXMgYSBwbHVzLgoKQnV0IHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgZGVmaW5pdGVseSBzZWVtcyB0byBiZSB3aXRoaW4gYGRwODM2NDAuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O2NhbiBzeXprYWxsZXIgaGl0IGBkcDgzNjQwX3Byb2JlYD8mIzM0OyBLbm93aW5nIHRoZSBrZXJuZWwmIzM5O3MgZnV6emluZyBjYXBhYmlsaXRpZXMgaXMgY3J1Y2lhbC4gSWYgc3l6a2FsbGVyIGNhbiB0cmlnZ2VyIGEgUEhZIHByb2JlLCB0aGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBmb2N1cyBteSBhbmFseXNpcyBmb3IgcG90ZW50aWFsIGlzc3Vlcy4gVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lcywgd2hhdCBhcmUgdGhlIGVudHJ5IHBvaW50cyBmb3Igc3l6a2FsbGVyIHRvIHJlYWNoIHRoaXMgZnVuY3Rpb24/IEl0IGNvdWxkIHJlZ2lzdGVyIGFuIE1ESU8gZGV2aWNlIG9yIGxldmVyYWdlIGEgdmlydHVhbCBNRElPIGJ1cy4gSSB0aGluayB0aGVyZSB3YXMgc29tZXRoaW5nIGxpa2UgYG1kaW8tbW9ja3VwYCBvciBzaW1pbGFyLCByaWdodD8gTGV0IG1lIHF1aWNrbHkgY3Jvc3MtcmVmZXJlbmNlIHRoYXQgdG8gbWFrZSBzdXJlLiBJJiMzOTttIGdvaW5nIHRvIGNoZWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE2OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWRpby4qbW9ja3VwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNjo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NDQxCgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ29uc2lkZXJpbmcgUEhZIERldmljZSBDcmVhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkmIzM5O20gY3VycmVudGx5IHBvbmRlcmluZyB0aGUgbWVjaGFuaWNzIG9mIFBIWSBkZXZpY2UgY3JlYXRpb24gd2l0aGluIHRoZSBmcmFtZXdvcmsgd2UmIzM5O3JlIHdvcmtpbmcgd2l0aC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRyeWluZyB0byBwaW5wb2ludCB0aGUgZXhpc3RpbmcgcGF0aHdheXMgZm9yIGluc3RhbnRpYXRpb24gYW5kIHJlZ2lzdHJhdGlvbi4gQXJlIHRoZXJlIGVzdGFibGlzaGVkIGludGVyZmFjZXMgb3IgbWVjaGFuaXNtcyB0aGF0IGFsbG93IHVzIHRvIGRlZmluZSBhbmQgaW50ZWdyYXRlIHRoZXNlIHBoeXNpY2FsIGxheWVyIGNvbXBvbmVudHM/IE15IGltbWVkaWF0ZSBsaW5lIG9mIGlucXVpcnkgaW52b2x2ZXMgdW5kZXJzdGFuZGluZyB0aGUgYXZhaWxhYmxlIEFQSXMgYW5kIGV4cGxvcmluZyBhbnkgcG90ZW50aWFsICYjMzQ7aG9va3MmIzM0OyB3aXRoaW4gdGhlIHN5c3RlbSB0aGF0IG1pZ2h0IGZhY2lsaXRhdGUgc2VhbWxlc3MgaW50ZWdyYXRpb24uIFRoZSBmb2N1cyBpcyBlZmZpY2llbmN5OyBhcmUgdGhlcmUgc3RhbmRhcmRpemVkIHByb2Nlc3Nlcywgb3Igd2lsbCBhIG1vcmUgbWFudWFsLCBsb3dlci1sZXZlbCBhcHByb2FjaCBiZSByZXF1aXJlZD8gSSBuZWVkIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHRoZSBsZXZlbCBvZiBhYnN0cmFjdGlvbiB3ZSYjMzk7cmUgYWZmb3JkZWQgaW4gY3JlYXRpbmcgdGhlc2UgY3J1Y2lhbCBoYXJkd2FyZSBpbnRlcmZhY2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE2OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWRpby4qZHVtbXkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE2OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2NTAKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbml0aWFsIENvbmNlcHQ6ICYjMzQ7Zml4ZWQtcGh5JiMzNDsqKgoKUmlnaHQsIGxldCYjMzk7cyBjb25zaWRlciB0aGlzICYjMzQ7Zml4ZWQtcGh5JiMzNDsgY29uY2VwdC4gSW1tZWRpYXRlbHksIG15IG1pbmQgc3RhcnRzIHJhY2luZy4gV2hhdCBleGFjdGx5IGFyZSB3ZSBmaXhpbmc/IElzIHRoaXMgcmVsYXRlZCB0byBhIHNwZWNpZmljIHBoeXNpY2FsIGxheWVyIGltcGxlbWVudGF0aW9uLCBvciBhIGJyb2FkZXIgYXJjaGl0ZWN0dXJhbCBhcHByb2FjaD8gJiMzNDtGaXhlZCYjMzQ7IGltcGxpZXMgYSBkZWdyZWUgb2YgaW1tdXRhYmlsaXR5LCBhIGhhcmRlbmluZywgcGVyaGFwcy4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBwcmUtZGVmaW5lZCBQSFkgaW50ZXJmYWNlLCBzZXQgcGFyYW1ldGVycywgb3IgYSByaWdpZCBoYXJkd2FyZSBjb25maWd1cmF0aW9uPyBJdCYjMzk7cyBpbnRyaWd1aW5nLCBzdWdnZXN0aW5nIGEgcG90ZW50aWFsIHRyYWRlLW9mZiBiZXR3ZWVuIGZsZXhpYmlsaXR5IGFuZCBwZXJmb3JtYW5jZSwgb3IgcHJlZGljdGFiaWxpdHkgYW5kIGFkYXB0YWJpbGl0eS4gSeKAmW0gYWxyZWFkeSB0aGlua2luZyBhYm91dCBwb3RlbnRpYWwgYXBwbGljYXRpb25zOiBlbWJlZGRlZCBzeXN0ZW1zLCBzcGVjaWZpYyBjb21tdW5pY2F0aW9uIHByb3RvY29scywgbWF5YmUgZXZlbiBzcGVjaWFsaXplZCBoYXJkd2FyZSBhY2NlbGVyYXRvcnMgd2hlcmUgZGV0ZXJtaW5pc20gaXMgcGFyYW1vdW50LiBMZXQmIzM5O3Mgc2VlIHdoZXJlIHRoaXMgZ29lcy4uLiBJJiMzOTttIGN1cmlvdXMgd2hhdCB0aGlzICYjMzQ7Zml4ZWQtcGh5JiMzNDsgc2lnbmlmaWVzIGluIHRoZSBsYXJnZXIgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTY6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Zml4ZWRfcGh5X3JlZ2lzdGVyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTQ4Mj1zdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDkxLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTlVNX0ZJWEVEX1BIWVM7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDkyOlx0XHRwaHlkZXZzW2ldID0gZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM9MjIzND1zdGF0aWMgaW50IGI0NF9yZWdpc3Rlcl9waHlfb25lKHN0cnVjdCBiNDQgKmJwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyNzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYzoyMjczOlx0XHRwaHlkZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXJfMTAwZmQoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyNzQtXHRcdGlmICghSVNfRVJSKHBoeWRldikpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYz0xNDM5PWludCBiZ21hY19waHlfY29ubmVjdF9kaXJlY3Qoc3RydWN0IGJnbWFjICpiZ21hYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jLTE0NDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jOjE0NDk6XHRwaHlfZGV2ID0gZml4ZWRfcGh5X3JlZ2lzdGVyKFx1MDAyNmZwaHlfc3RhdHVzLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmMtMTQ1MC1cdGlmIChJU19FUlIocGh5X2RldikpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jPTE4NDg9c3RhdGljIGludCBmdGdtYWMxMDBfcHJvYmVfbmNzaShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTg2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM6MTg2NzpcdHBoeWRldiA9IGZpeGVkX3BoeV9yZWdpc3RlcihcdTAwMjZuY3NpX3BoeV9zdGF0dXMsIG5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTg2OC1cdGlmIChJU19FUlIocGh5ZGV2KSkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jPTI5ODE9c3RhdGljIGludCBmZWNfZW5ldF9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzAwMi1cdFx0XHRuZXRkZXZfaW5mbyhuZGV2LCBcJiMzNDtubyBQSFksIGFzc3VtaW5nIGRpcmVjdCBjb25uZWN0aW9uIHRvIHN3aXRjaFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzozMDAzOlx0XHRcdHBoeV9kZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXJfMTAwZmQoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTMwMDQtXHRcdFx0aWYgKElTX0VSUihwaHlfZGV2KSkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmM9MjM4PXN0YXRpYyBpbnQgaGJnX2ZpeGVkX3BoeV9pbml0KHN0cnVjdCBoYmdfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfbWRpby5jLTI1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmM6MjUxOlx0cGh5ZGV2ID0gZml4ZWRfcGh5X3JlZ2lzdGVyKFx1MDAyNmhiZ19maXhlZF9waHlfc3RhdHVzLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmMtMjUyLVx0aWYgKElTX0VSUihwaHlkZXYpKSB7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM9NDEyPWludCBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTQ1OS1yZWdpc3Rlcl9waHk6XG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzo0NjA6XHRyZXR1cm4gUFRSX0VSUl9PUl9aRVJPKGZpeGVkX3BoeV9yZWdpc3RlcihcdTAwMjZzdGF0dXMsIG5wKSk7XG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy00NjEtfVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYz0xMTg9c3RhdGljIGludCBmaXhlZF9waHlfZ2V0X2ZyZWVfYWRkcih2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xMzAtXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM6MTMxOnN0cnVjdCBwaHlfZGV2aWNlICpmaXhlZF9waHlfcmVnaXN0ZXIoY29uc3Qgc3RydWN0IGZpeGVkX3BoeV9zdGF0dXMgKnN0YXR1cyxcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xMzItXHRcdFx0XHQgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xNzItfVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jOjE3MzpFWFBPUlRfU1lNQk9MX0dQTChmaXhlZF9waHlfcmVnaXN0ZXIpO1xuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE3NC1cbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYzoxNzU6c3RydWN0IHBoeV9kZXZpY2UgKmZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCh2b2lkKVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE3Ni17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE4MS1cbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYzoxODI6XHRyZXR1cm4gZml4ZWRfcGh5X3JlZ2lzdGVyKFx1MDAyNnN0YXR1cywgTlVMTCk7XG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTgzLX1cbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYzoxODQ6RVhQT1JUX1NZTUJPTF9HUEwoZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKTtcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xODUtXG4tLVxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaD0xOT1leHRlcm4gaW50IGZpeGVkX3BoeV9jaGFuZ2VfY2FycmllcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBib29sIG5ld19jYXJyaWVyKTtcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmg6MjA6c3RydWN0IHBoeV9kZXZpY2UgKmZpeGVkX3BoeV9yZWdpc3Rlcihjb25zdCBzdHJ1Y3QgZml4ZWRfcGh5X3N0YXR1cyAqc3RhdHVzLFxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaC0yMS1cdFx0XHRcdCAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApO1xuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaDoyMjpzdHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKHZvaWQpO1xuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaC0yMy1cbi0tXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oPTI5PXN0YXRpYyBpbmxpbmUgc3RydWN0IHBoeV9kZXZpY2UgKlxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaDozMDpmaXhlZF9waHlfcmVnaXN0ZXIoY29uc3Qgc3RydWN0IGZpeGVkX3BoeV9zdGF0dXMgKnN0YXR1cyxcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmgtMzEtXHRcdCAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXG4tLVxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaC0zNS1cbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmg6MzY6c3RhdGljIGlubGluZSBzdHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKHZvaWQpXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oLTM3LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTY6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTUyMgoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDY0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBEUDgzNjQwIFBIWSBEcml2ZXIgd2l0aCBTeXprYWxsZXI6IEEgUGxhbiBvZiBBdHRhY2sqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyB0byB0YXJnZXQgdGhpcyBEUDgzNjQwIFBIWSBkcml2ZXIgd2l0aCBmdXp6aW5nLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgYGZpeGVkLXBoeWAgbWlnaHQgYmUgdGhlIHdheSwgYnV0IGl0IHNlZW1zIHRoYXQmIzM5O3Mgbm90IHNwZWNpZmljIGVub3VnaC4gQ2FuIFN5emthbGxlciBjcmVhdGUgYSAmIzM0O2Zha2UmIzM0OyBNRElPIGRldmljZSB3aXRoIGEgcGFydGljdWxhciBQSFkgSUQ/IFRoZSBgbWFjYmAgZHJpdmVyIGlzIGZ1enplZCwgYnV0IEkgZG9uJiMzOTt0IHRoaW5rIGl0IGxldHMgeW91IHNwZWNpZnkgdGhlIElELgoKVGhlbiBpdCBoaXRzIG1lOiBgc3l6X3VzYl9jb25uZWN0YCEgVGhhdCBsZXRzIHlvdSBjb25uZWN0IFVTQiBkZXZpY2VzLiBJcyB0aGVyZSBhIFVTQi10by1NRElPIGJyaWRnZT8gTm8sIGJ1dCB3YWl0Li4uIFVTQiBuZXR3b3JrIGRyaXZlcnMhIFNvbWUgb2YgdGhlbSAqaGF2ZSogTURJTyBidXNlcy4gYGxhbjc4eHhgLCBgc21zYzk1eHhgLCBhbmQgYGF4ODgxNzlfMTc4YWAgYWxsIGNvbWUgdG8gbWluZC4gVGhlIGtleSBpcyB0aGF0IHRoZSBQSFkgSUQgaXMgdXN1YWxseSAqcmVhZCogZnJvbSBoYXJkd2FyZSwgYnV0IHdpdGggU3l6a2FsbGVyIGVtdWxhdGluZyB0aGUgVVNCIGRldmljZSwgSSBjYW4gcHJvdmlkZSAqYW55KiBQSFkgSUQuCgpTbywgdGhlIHBsYW4gaXMgdG8gdXNlIGBzeXpfdXNiX2Nvbm5lY3RgIHRvIGVtdWxhdGUgYSBVU0IgbmV0d29yayBhZGFwdGVyLiBXaGVuIHRoZSBkcml2ZXIgcmVhZHMgdGhlIFBIWSBJRCBmcm9tIHRoZSBlbXVsYXRlZCBNRElPIGJ1cyAodmlhIFVTQiBjb250cm9sIG1lc3NhZ2VzKSwgSSYjMzk7bGwgbWFrZSBTeXprYWxsZXIgcmV0dXJuIGAweDIwMDA1Y2UxYCDigJMgdGhlIERQODM2NDAgUEhZIElEISBUaGVuLCB0aGUga2VybmVsICpzaG91bGQqIG1hdGNoIHRoZSBgZHA4MzY0MGAgUEhZIGRyaXZlciBhbmQgY2FsbCBgZHA4MzY0MF9wcm9iZWAuCgpJIG5lZWQgdG8gY29uZmlybSB0aGlzLiBJJiMzOTtsbCBjaGVjayB0aGF0IGEgVVNCIG5ldHdvcmsgZHJpdmVyIHJlZ2lzdGVycyBhbiBNRElPIGJ1cyB3aXRoIGByZWFkYCBhbmQgYHdyaXRlYCBmdW5jdGlvbnMsIGxpa2UgYHNtc2M5NXh4X21kaW9fcmVhZGAuIFdoZW4gdGhlIGJ1cyBpcyBzY2FubmVkLCBpdCByZWFkcyByZWdpc3RlcnMgMiBhbmQgMyAodGhlIFBIWSBJRCkuIElmIG15IGVtdWxhdGVkIGRldmljZSByZXR1cm5zIHRoZSByaWdodCB2YWx1ZSwgYGRwODM2NDBgIGlzIHByb2JlZC4gQnV0IGlzIHRoaXMgZXZlbiBwb3NzaWJsZT8gV2VsbCwgaXQgaXMhIFN5emthbGxlciBkb2VzIHRoaXMgZm9yIFBIWSBkcml2ZXJzIGFscmVhZHkhIExldCYjMzk7cyBjaGVjayB0aGF0IGBkcDgzNjQwX3Byb2JlYCBpcyByZWFjaGFibGUgdGhyb3VnaCBVU0IgZW11bGF0aW9uLiBZZXMsIEkgY2FuIHJlYWNoIGl0IHRoaXMgd2F5IQoKT2theSwgbGV0JiMzOTtzIGdvIGJhY2sgdG8gdGhlIHBhdGNoLiBJdCYjMzk7cyBtb2RpZnlpbmcgYGRwODM2NDBfcHJvYmVgLCBgZHA4MzY0MF9yZW1vdmVgLCBhbmQgYGRwODM2NDBfY2xvY2tfaW5pdGAuIEl0IGFsc28gYWRkcyB0aG9zZSBgcGh5X3BhY2thZ2VfbG9ja2AgYW5kIGBwaHlfcGFja2FnZV91bmxvY2tgIGNhbGxzIGluIGBwaHlfcGFja2FnZS5jYC4gVGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuIEkmIzM5O2xsIG5lZWQgdG8gZm9jdXMgb24gdGhlc2UgZnVuY3Rpb25zOgoKKiAgIGBkcDgzNjQwX3Byb2JlYAoqICAgYGRwODM2NDBfcmVtb3ZlYAoqICAgYHBoeV9wYWNrYWdlX2xvY2tgCiogICBgcGh5X3BhY2thZ2VfdW5sb2NrYAoKV2FpdCBhIG1pbnV0ZSwgYGRwODM2NDBfY2xvY2tfaW5pdGAgaXMgc3RhdGljLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBgZHA4MzY0MC5jYCBmaWxlIGZvciB0aGUgZGVmaW5pdGlvbi4gVGhpcyBhcHByb2FjaCwgdGhvdWdoLCBsb29rcyBzb3VuZC4gSSBhbSBjb25maWRlbnQgdGhhdCBpdCYjMzk7cyBwb3NzaWJsZSB0byBmdXp6IHRoZXNlIGZ1bmN0aW9ucyB1c2luZyBTeXprYWxsZXImIzM5O3MgVVNCIGVtdWxhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTY6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHA4MzY0MF9jbG9ja19pbml0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM9OTA4PXN0YXRpYyB2b2lkIGRlY29kZV9zdGF0dXNfZnJhbWUoc3RydWN0IGRwODM2NDBfcHJpdmF0ZSAqZHA4MzY0MCxcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTk1MC1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM6OTUxOnN0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfaW5pdChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2spXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTk1Mi17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYz0xMzM3PXN0YXRpYyBpbnQgZHA4MzY0MF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTM1My1cdGlmIChwaHlfcGFja2FnZV9wcm9iZV9vbmNlKHBoeWRldikpXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jOjEzNTQ6XHRcdGRwODM2NDBfY2xvY2tfaW5pdChjbG9jayk7XG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTEzNTUtXHRwaHlfcGFja2FnZV91bmxvY2socGh5ZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTY6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTExNjkKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERQODM2NDAgRHJpdmVyIFN0cnVjdHVyZSoqCgpPa2F5LCBzbyBJJiMzOTttIHRha2luZyBhIGxvb2sgYXQgdGhpcyBgZHA4MzY0MGAgZHJpdmVyLCBhbmQgaW1tZWRpYXRlbHkgYSBmZXcgdGhpbmdzIGp1bXAgb3V0LiBUaGUgYGRwODM2NDBfY2xvY2tfaW5pdGAgZnVuY3Rpb24gaXMgZGVjbGFyZWQgYXMgc3RhdGljLiBJbnRlcmVzdGluZywgdGhhdCBzdWdnZXN0cyBpdCYjMzk7cyBvbmx5IGludGVuZGVkIGZvciB1c2Ugd2l0aGluIHRoaXMgc3BlY2lmaWMgZmlsZSBvciBjb21waWxhdGlvbiB1bml0OyBJJiMzOTtsbCBrZWVwIHRoYXQgaW4gbWluZC4gTW9yZSBpbnRlcmVzdGluZ2x5LCBgZHA4MzY0MF9wcm9iZWAgYW5kIGBkcDgzNjQwX3JlbW92ZWAgYXJlIGFsc28gc3RhdGljLCBidXQgdGhleSYjMzk7cmUgKmFsc28qIGZ1bmN0aW9uIHBvaW50ZXJzLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgZHA4MzY0MF9kcml2ZXJgIHN0cnVjdHVyZS4gVGhhdCB0ZWxscyBtZSB0aGVzZSBhcmUgbGlrZWx5IHRoZSBlbnRyeSBhbmQgZXhpdCBwb2ludHMgZm9yIHRoZSBkcml2ZXImIzM5O3MgaW50ZXJhY3Rpb24gd2l0aCB0aGUga2VybmVsLCB0aGUgcHJvYmUgYmVpbmcgdHJpZ2dlcmVkIHdoZW4gdGhlIGRldmljZSBpcyBkZXRlY3RlZCBhbmQgcmVtb3ZlIGJlaW5nIHRyaWdnZXJlZCB3aGVuIHRoZSBkZXZpY2UgaXMgdW5ib3VuZC4gSSBzaG91bGQgcHJvYmFibHkgZ28gYW5kIGluc3BlY3QgdGhlIGBkcDgzNjQwX2RyaXZlcmAgc3RydWN0dXJlIGRpcmVjdGx5IHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhpcyBhbGwgZml0cyB0b2dldGhlciBhbmQgdG8gYmUgc3VyZSBvZiB0aGUgZHJpdmVyJiMzOTtzIHJvbGUgYW5kIHB1cnBvc2UuIExldCYjMzk7cyBzZWUgd2hhdCB0aGF0IHN0cnVjdHVyZSBoYXMgdG8gc2F5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNjo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkcDgzNjQwX2RyaXZlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jPTE0MTc9c3RhdGljIHZvaWQgZHA4MzY0MF9yZW1vdmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTE0NTUtXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jOjE0NTY6c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGRwODM2NDBfZHJpdmVyW10gPSB7XG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTE0NTcte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTQ3MC1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM6MTQ3MTptb2R1bGVfcGh5X2RyaXZlcihkcDgzNjQwX2RyaXZlcik7XG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTE0NzItXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE2OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNzA3CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDoKCioqTmF2aWdhdGluZyB0aGUgUEhZIERyaXZlciBMYW5kc2NhcGUqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIFBIWSBkcml2ZXIgY29kZSwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIHRoZSBEUDgzNjQwLiBSaWdodCBvZmYgdGhlIGJhdCwgSSBzZWUgdGhhdCBgZHA4MzY0MF9wcm9iZWAgYW5kIGBkcDgzNjQwX3JlbW92ZWAgYXJlIG15IHByaW1hcnkgZW50cnkgcG9pbnRzLiBUaGF0JiMzOTtzIHN0YW5kYXJkIHByYWN0aWNlLCB0aGUgcHJvYmUgZm9yIGluaXRpYWxpemF0aW9uIGFuZCB0aGUgcmVtb3ZlIGZvciBjbGVhbnVwLiBOb3csIEkgbm90aWNlIHRoZXNlIGZ1bmN0aW9uIGNhbGxzIGZvciBgcGh5X3BhY2thZ2VfbG9ja2AgYW5kIGBwaHlfcGFja2FnZV91bmxvY2tgIGFuZCwgZnJvbSB0aGUgbG9va3Mgb2YgaXQsIHRoZXNlIGFyZSBleHBvcnRlZCBmdW5jdGlvbnMsIGxpa2VseSBtYW5hZ2luZyBzb21lIHNvcnQgb2YgY29uY3VycmVuY3kgb3IgcmVzb3VyY2UgYWNjZXNzLiBHaXZlbiB0aGUgJiMzNDtwYWNrYWdlJiMzNDsgdGVybWlub2xvZ3ksIGl0IHN1Z2dlc3RzIHNvbWUgc2hhcmVkIGRhdGEgc3RydWN0dXJlcywgc28gdGhvc2UgZnVuY3Rpb25zIGNvdWxkIGJlIGltcG9ydGFudC4gTXkgaW5zdGluY3QgdGVsbHMgbWUgdG8gY2hlY2sgd2hlcmUgdGhvc2UgbG9jay91bmxvY2sgZnVuY3Rpb25zIGFyZSBkZWZpbmVkIGFuZCB1c2VkLCBzbyBJJiMzOTttIGdvaW5nIHRvIGp1bXAgaW50byBgcGh5X3BhY2thZ2UuY2AgdG8gdW5kZXJzdGFuZCB0aGF0IGxvY2tpbmcgbWVjaGFuaXNtIGJldHRlci4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgY29udGV4dCBJIG5lZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE2OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeV9wYWNrYWdlX2xvY2smIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYz0xMzM3PXN0YXRpYyBpbnQgZHA4MzY0MF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTM1MS1cdC8qIEVuc3VyZSBvdGhlciBQSFkgcHJvYmVzIHdhaXQgZm9yIHNoYXJlZCBjbG9jayBpbml0aWFsaXphdGlvbi4gKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM6MTM1MjpcdHBoeV9wYWNrYWdlX2xvY2socGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTM1My1cdGlmIChwaHlfcGFja2FnZV9wcm9iZV9vbmNlKHBoeWRldikpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmM9NTM9RVhQT1JUX1NZTUJPTF9HUEwocGh5X3BhY2thZ2VfZ2V0X3ByaXYpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTU1LS8qKlxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmM6NTY6ICogcGh5X3BhY2thZ2VfbG9jayAtIGFjcXVpcmUgdGhlIFBIWSBwYWNrYWdlIGxvY2tcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTU3LSAqIEBwaHlkZXY6IFBIWSBkZXZpY2UgdGhhdCBoYXMgam9pbmVkIHRoZSBwYWNrYWdlXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtNjEtICovXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzo2Mjp2b2lkIHBoeV9wYWNrYWdlX2xvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTYzLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy02NS19XG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzo2NjpFWFBPUlRfU1lNQk9MX0dQTChwaHlfcGFja2FnZV9sb2NrKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTY3LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaWIuaD0xND12b2lkICpwaHlfcGFja2FnZV9nZXRfcHJpdihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWIuaDoxNTp2b2lkIHBoeV9wYWNrYWdlX2xvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvcGh5bGliLmgtMTYtdm9pZCBwaHlfcGFja2FnZV91bmxvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE2OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNDkxCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMzEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEZ1enppbmcgU3RyYXRlZ3k6IERQODM2NDAgUEhZIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IGJlc3QgdG8gZnV6eiB0aGlzIGBkcDgzNjQwYCBQSFkgZHJpdmVyLiBJIHNlZSB0aGF0IGBwaHlfcGFja2FnZV9sb2NrYCBhbmQgYHBoeV9wYWNrYWdlX3VubG9ja2AgYXJlIGFscmVhZHkgZXhwb3J0ZWQsIHdoaWNoIGlzIGdvb2Q7IHRoZXkmIzM5O3JlIHJlYWRpbHkgYWNjZXNzaWJsZSBmb3IgZnV6emluZy4gTm93LCB3aGF0IGFib3V0IHRoZSBtYWluIGRyaXZlciBlbnRyeSBwb2ludHMsIGBkcDgzNjQwX3Byb2JlYCBhbmQgYGRwODM2NDBfcmVtb3ZlYD8gVGhleSYjMzk7cmUgZGVmaW5lZCBhcyBgc3RhdGljYCwgd2hpY2ggaW5pdGlhbGx5IGxvb2tzIGxpa2UgYSBwcm9ibGVtLiBCdXQgd2FpdCwgYHN5emthbGxlcmAgY2FuJiMzOTt0IGRpcmVjdGx5IGFkZHJlc3MgaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zLCBzbyBhbiBpbmxpbmVkIGZ1bmN0aW9uIHdvbiYjMzk7dCBoYXZlIGEgc3BlY2lmaWMgc3ltYm9sIGZvciBzeXprYWxsZXIgdG8gY2FsbC4gSSYjMzk7bSBub3RpbmcgYGRwODM2NDBfcHJvYmVgIGlzIGFjdHVhbGx5IGEgZnVuY3Rpb24gcG9pbnRlciAqd2l0aGluKiBhIHN0cnVjdCwgdGhlcmVmb3JlIG5vdCBpbmxpbmVkLgoKVGhlIGRvY3VtZW50YXRpb24gc2VlbXMgdG8gZW1waGFzaXplIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5IHBvaW50cy4gU28sIHdoaWxlIGBkcDgzNjQwX3Byb2JlYCBoYXMgYSBkaXN0aW5jdCBhZGRyZXNzIGFuZCB3b24mIzM5O3QgYmUgaW5saW5lZCwgaXMgdGhhdCB0aGUgKmJlc3QqIG9wdGlvbj8gU2hvdWxkIEkganVzdCBzdGljayB3aXRoIGBwaHlfcGFja2FnZV9sb2NrYCwgYHBoeV9wYWNrYWdlX3VubG9ja2AgZm9yIG5vdz8KCldhaXQgYSBtaW51dGUsIGBkcDgzNjQwX3Byb2JlYCAqaXMqIHRoZSBtYWluIGZ1bmN0aW9uIEkmIzM5O20gbW9kaWZ5aW5nIGhlcmUuIFJpZ2h0LCBJIHNob3VsZCBkZWZpbml0ZWx5IGluY2x1ZGUgdGhhdCBhcyBhIHRhcmdldCEKCk5vdywgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIGBLY29uZmlnYCBjaGFuZ2VzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBidWlsZCBvcHRpb25zLiBgRFA4MzY0MF9QSFlgIGRlcGVuZHMgb24gYFBIWUxJQmAgYW5kIGBQVFBfMTU4OF9DTE9DS2AgYW5kIGFsc28gc2VsZWN0cyBgUEhZX1BBQ0tBR0VgLiBUaW1lIHRvIGNoZWNrIGBkcml2ZXJzL3B0cC9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IHJlbGV2YW50IGNvbnRleHQgYXJvdW5kIGBEUDgzNjQwX1BIWWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE2OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEUDgzNjQwX1BIWSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3B0cC9LY29uZmlnPTcyPWNvbW1lbnQgXCYjMzQ7RW5hYmxlIFBIWUxJQiBhbmQgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HIHRvIHNlZSB0aGUgYWRkaXRpb25hbCBjbG9ja3MuXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy03NC1cbmRyaXZlcnMvcHRwL0tjb25maWc6NzU6Y29uZmlnIERQODM2NDBfUEhZXG5kcml2ZXJzL3B0cC9LY29uZmlnLTc2LVx0dHJpc3RhdGUgXCYjMzQ7RHJpdmVyIGZvciB0aGUgTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciBEUDgzNjQwIFBIWVRFUlwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNjo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzMyNgoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3M6CgoqKkluaXRpYWwgQ29uZmlndXJhdGlvbiBhbmQgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUsIGl0IGxvb2tzIGxpa2UgYERQODM2NDBfUEhZYCBpcyB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIGZpbGUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBoZXJlLiBCdXQgaGFuZyBvbiwgYSBiZWxsIHdlbnQgb2ZmIGluIG15IGhlYWQuIEkga25vdyB0aGF0IGBQVFBfMTU4OF9DTE9DS2AgaXMgYWxtb3N0IGFsd2F5cyBpbnRlcnR3aW5lZCB3aXRoIHRoaXMuIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSB0aW1lIHN5bmNocm9uaXphdGlvbiBpcyBjb25maWd1cmVkIHByb3Blcmx5LiBCZWZvcmUgSSBnbyBhbnkgZnVydGhlciwgSSBzaG91bGQgdmVyaWZ5IHRoZSBgUFRQXzE1ODhfQ0xPQ0tgIHNldHRpbmdzLiBJdCYjMzk7cyB0b28gZWFzeSB0byBvdmVybG9vayB0aGF0IHBpZWNlIGFuZCBoYXZlIGV2ZXJ5dGhpbmcgZ3JpbmQgdG8gYSBoYWx0LiBBbHdheXMgYmVzdCB0byBkb3VibGUtY2hlY2sgdGhvc2UgY3JpdGljYWwgZGVwZW5kZW5jaWVzLiBMZXQmIzM5O3MgZGlnIGludG8gYFBUUF8xNTg4X0NMT0NLYCBmaXJzdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTY6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFBUUF8xNTg4X0NMT0NLJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9LY29uZmlnPTIxPWNvbmZpZyBJWFA0WFhfRVRIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL0tjb25maWctMzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvS2NvbmZpZzozMTpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfSVhQNDZYXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvS2NvbmZpZy0zMi1cdGJvb2wgXCYjMzQ7SW50ZWwgSVhQNDZ4IGFzIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWc9Nj1tZW51IFwmIzM0O1BUUCBjbG9jayBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL3B0cC9LY29uZmlnLTctXG5kcml2ZXJzL3B0cC9LY29uZmlnOjg6Y29uZmlnIFBUUF8xNTg4X0NMT0NLXG5kcml2ZXJzL3B0cC9LY29uZmlnLTktXHR0cmlzdGF0ZSBcJiMzNDtQVFAgY2xvY2sgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMjktXG5kcml2ZXJzL3B0cC9LY29uZmlnOjMwOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuZHJpdmVycy9wdHAvS2NvbmZpZy0zMS1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy00MS1cbmRyaXZlcnMvcHRwL0tjb25maWc6NDI6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0RURVxuZHJpdmVycy9wdHAvS2NvbmZpZy00My1cdHRyaXN0YXRlIFwmIzM0O0Jyb2FkY29tIERURSBhcyBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTU3LVxuZHJpdmVycy9wdHAvS2NvbmZpZzo1ODpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfUU9SSVFcbmRyaXZlcnMvcHRwL0tjb25maWctNTktXHR0cmlzdGF0ZSBcJiMzNDtGcmVlc2NhbGUgUW9ySVEgMTU4OCB0aW1lciBhcyBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnPTc1PWNvbmZpZyBEUDgzNjQwX1BIWVxuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctOTItXG5kcml2ZXJzL3B0cC9LY29uZmlnOjkzOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JTkVTXG5kcml2ZXJzL3B0cC9LY29uZmlnLTk0LVx0dHJpc3RhdGUgXCYjMzQ7WkhBVyBJbkVTIFBUUCB0aW1lIHN0YW1waW5nIElQIGNvcmVcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEwMy1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTA0OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19QQ0hcbmRyaXZlcnMvcHRwL0tjb25maWctMTA1LVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgUENIIEVHMjBUIGFzIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTIyLVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxMjM6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0tWTVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMjQtXHR0cmlzdGF0ZSBcJiMzNDtLVk0gdmlydHVhbCBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEzNC1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTM1OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19WTUNMT0NLXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEzNi1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgbWFjaGluZSBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE1MS1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTUyOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JRFQ4MlAzM1xuZHJpdmVycy9wdHAvS2NvbmZpZy0xNTMtXHR0cmlzdGF0ZSBcJiMzNDtJRFQgODJQMzN4eHggUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNjMtXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE2NDpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfSURUQ01cbmRyaXZlcnMvcHRwL0tjb25maWctMTY1LVx0dHJpc3RhdGUgXCYjMzQ7SURUIENMT0NLTUFUUklYIGFzIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTc1LVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxNzY6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0ZDM1dcbmRyaXZlcnMvcHRwL0tjb25maWctMTc3LVx0dHJpc3RhdGUgXCYjMzQ7UkVORVNBUyBGZW10b0Nsb2NrMyBXaXJlbGVzcyBhcyBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE4Ny1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTg4OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19NT0NLXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE4OS1cdHRyaXN0YXRlIFwmIzM0O01vY2stdXAgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xOTgtXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE5OTpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfVk1XXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIwMC1cdHRyaXN0YXRlIFwmIzM0O1ZNd2FyZSB2aXJ0dWFsIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMjEwLVxuZHJpdmVycy9wdHAvS2NvbmZpZzoyMTE6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX09DUFxuZHJpdmVycy9wdHAvS2NvbmZpZy0yMTItXHR0cmlzdGF0ZSBcJiMzNDtPcGVuQ29tcHV0ZSBUaW1lQ2FyZCBhcyBQVFAgY2xvY2tcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTY6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ2NjkKCQkJCQkJCW91dHB1dDogMTcKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqQ2xvY2sgU3luY2hyb25pemF0aW9uICZhbXA7IFBoeXNpY2FsIExheWVyIENvbnNpZGVyYXRpb25zKioKCkFscmlnaHQsIHNvIHRoZSBwcm9qZWN0JiMzOTtzIG1hcmNoaW5nIGZvcndhcmQsIGFuZCBpdCYjMzk7cyBiZWNvbWUgY2xlYXIgdGhhdCB3ZSYjMzk7cmUgZ29pbmcgdG8gbmVlZCB0byBpbXBsZW1lbnQgYFBUUF8xNTg4X0NMT0NLYC4gTm8gc3VycHJpc2VzIHRoZXJlLiBUaGF0JiMzOTtzIHRoZSBiYXNlbGluZSBmb3IgcHJlY2lzZSB0aW1lIHN5bmNocm9uaXphdGlvbiwgZXNwZWNpYWxseSBmb3IgdGhpcyBraW5kIG9mIGFwcGxpY2F0aW9uLiBCdXQgYXMgSSB0aGluayBhYm91dCBpdCwgdGhlIHF1ZXN0aW9uIG9mIHRoZSBwaHlzaWNhbCBsYXllciBpbXBsZW1lbnRhdGlvbiBuYXR1cmFsbHkgcG9wcyB1cC4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgY29uc2lkZXIgdGhlIHJvbGUsIG9yIGxhY2sgdGhlcmVvZiwgb2YgYFBIWUxJQmAuIEl0JiMzOTtzIGNydWNpYWwgSSBkb24mIzM5O3Qgb3Zlcmxvb2sgYW55IGRldGFpbHMuIFdoYXQgZXhhY3RseSBkbyB3ZSBuZWVkIGZyb20gdGhlIHBoeXNpY2FsIGxheWVyIGludGVyZmFjZT8gSXMgYFBIWUxJQmAgZ29pbmcgdG8gYmUgb3VyIGJlc3Qgcm91dGUsIG9yIGFyZSB0aGVyZSBhbHRlcm5hdGUsIG1vcmUgc3VpdGFibGUgYXBwcm9hY2hlcywgdGhhdCB3aWxsIGJldHRlciBzdWl0IHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZT8gVGhpcyByZXF1aXJlcyBkZWVwZXIgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTY6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFBIWUxJQiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZz02PWNvbmZpZyBQSFlMSU5LXG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTQtXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzoxNTptZW51Y29uZmlnIFBIWUxJQlxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTYtXHR0cmlzdGF0ZSBcJiMzNDtQSFkgRGV2aWNlIHN1cHBvcnQgYW5kIGluZnJhc3RydWN0dXJlXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc9NDY9Y29uZmlnIE9QRU5fQUxMSUFOQ0VfSEVMUEVSU1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTQ4LVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6NDk6Y29uZmlnIFBIWUxJQl9MRURTXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy01MC1cdGRlZl9ib29sIE9GXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE2OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1MDUzCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBQSFlMSUIgYW5kIGl0cyBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSBzZWUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBgUEhZTElCYC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB3ZSYjMzk7cmUgd29ya2luZyB3aXRoIGEgUGh5c2ljYWwgTGF5ZXIgaW50ZXJmYWNlIGxpYnJhcnksIHdoaWNoIGlzIGEgY29tbW9uIGFic3RyYWN0aW9uIGluIG5ldHdvcmtpbmcgZHJpdmVycy4gQnV0LCBob2xkIG9uIGEgc2Vjb25kLi4uIGlzIGBEUDgzNjQwX1BIWWAgZGVmaW5lZCBpbiB0aGUgYGRyaXZlcnMvcHRwL0tjb25maWdgIGZpbGU/IFRoYXQmIzM5O3MgdW5leHBlY3RlZC4gUFRQIChQcmVjaXNpb24gVGltZSBQcm90b2NvbCkgaXMgb2Z0ZW4gcmVsYXRlZCB0byB0aW1pbmcgc3luY2hyb25pemF0aW9uLCB3aGljaCAqY291bGQqIGludm9sdmUgUEhZcywgYnV0IHRoZSBkaXJlY3QgbGlua2luZyBzZWVtcyBhIGxpdHRsZSBvZGQuIFRvIGJlIHN1cmUsIEkgbmVlZCB0byBvcGVuIHVwIGBkcml2ZXJzL3B0cC9LY29uZmlnYCBhbmQgdmVyaWZ5IHRoYXQgYERQODM2NDBfUEhZYCBpcywgaW4gZmFjdCwgZGVjbGFyZWQgdGhlcmUuIFRoaXMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBEUDgzNjQwIFBIWSBhbmQgdGhlIFBUUCBzdWJzeXN0ZW0sIGFuZCBjb25maXJtIG15IGluaXRpYWwgdGhvdWdodCBvbiBgUEhZTElCYC4gSSB3YW50IHRvIHNlZSBob3cgdGhhdCBkcml2ZXIgaXMgY29uZmlndXJlZCBpbiBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNjo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRFA4MzY0MF9QSFkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9wdHAvS2NvbmZpZz03Mj1jb21tZW50IFwmIzM0O0VuYWJsZSBQSFlMSUIgYW5kIE5FVFdPUktfUEhZX1RJTUVTVEFNUElORyB0byBzZWUgdGhlIGFkZGl0aW9uYWwgY2xvY2tzLlwmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctNzQtXG5kcml2ZXJzL3B0cC9LY29uZmlnOjc1OmNvbmZpZyBEUDgzNjQwX1BIWVxuZHJpdmVycy9wdHAvS2NvbmZpZy03Ni1cdHRyaXN0YXRlIFwmIzM0O0RyaXZlciBmb3IgdGhlIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgRFA4MzY0MCBQSFlURVJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTY6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU0NDUKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWwgRGVwZW5kZW5jeSoqCgpBbHJpZ2h0LCBob2xkIG9uIGEgc2Vjb25kLiBJIHNlZSB0aGlzIGNvbW1lbnQgcmVmZXJlbmNpbmcgYE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR2AuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIGJlY2F1c2UgaW1tZWRpYXRlbHkgbXkgYnJhaW4ganVtcHMgdG8gYERQODM2NDBfUEhZYC4gTm93LCBJIG5lZWQgdG8gZmlndXJlIG91dDogRG9lcyB0aGUgY29ycmVjdCBvcGVyYXRpb24gb2YgdGhlIGBEUDgzNjQwX1BIWWAgbW9kdWxlIGFjdHVhbGx5ICpyZWx5KiBvbiB0aGlzIHRpbWVzdGFtcGluZyBmdW5jdGlvbmFsaXR5PyBJcyB0aGlzIGEgaGFyZCByZXF1aXJlbWVudCwgb3IganVzdCBhbiBvcHRpbWl6YXRpb24/IEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiB0aGVzZSBhcmUgaW50ZXJjb25uZWN0ZWQgYW5kIGhvdyBiZWZvcmUgSSBtYWtlIGEgbmV4dCBtb3ZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNjo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3RpbWVzdGFtcGluZy5yc3Q9NzY5PXRvIGVhY2ggaW5kaXZpZHVhbCBNQUMgZHJpdmVyIGZvciBQSFkgdGltZXN0YW1waW5nIHN1cHBvcnQuIFRoaXMgZW50YWlsczpcbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvdGltZXN0YW1waW5nLnJzdC03NzgtICBgYHNrYl9kZWZlcl9yeF90aW1lc3RhbXAoc2tiKWBgIGlzIG5lY2Vzc2FyeSBvciBub3QgLSBhbmQgaWYgaXQgaXMsIGRvbiYjMzk7dFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3RpbWVzdGFtcGluZy5yc3Q6Nzc5OiAgY2FsbCBgYG5ldGlmX3J4KClgYCBhdCBhbGwuICBJZiBgYENPTkZJR19ORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdgYCBpc1xuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3RpbWVzdGFtcGluZy5yc3QtNzgwLSAgZW5hYmxlZCwgYW5kIGBgc2tiLVx1MDAzZWRldi1cdTAwM2VwaHlkZXYtXHUwMDNlbWlpX3RzYGAgZXhpc3RzLCBpdHMgYGAucnh0c3RhbXAoKWBgIGhvb2tcbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9uZXR3b3JraW5nL3RpbWVzdGFtcGluZy5yc3Q9NTcyPVNPX1RJTUVTVEFNUElORyBBUEkg5LiN5YWB6K645Li65ZCM5LiA5pWw5o2u5YyF5Lyg6YCS5aSa5Liq56Gs5Lu25pe26Ze05oiz77yM5Zug5q2k6Zmk5LqGIERTQVxuLS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL25ldHdvcmtpbmcvdGltZXN0YW1waW5nLnJzdC02MjEtICBgYHNrYl9kZWZlcl9yeF90aW1lc3RhbXAoc2tiKWBgIOaYr+W/heimgeeahO+8jOWmguaenOaYr++8jOWImeS4jeiwg+eUqCBgYG5ldGlmX3J4KClgYOOAglxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbmV0d29ya2luZy90aW1lc3RhbXBpbmcucnN0OjYyMjogIOWmguaenCBgYENPTkZJR19ORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdgYCDlkK/nlKjvvIzlubbkuJRcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL25ldHdvcmtpbmcvdGltZXN0YW1waW5nLnJzdC02MjMtICBgYHNrYi1cdTAwM2VkZXYtXHUwMDNlcGh5ZGV2LVx1MDAzZW1paV90c2BgIOWtmOWcqO+8jOWug+eahCBgYC5yeHRzdGFtcCgpYGAg6ZKp5a2Q546w5Zyo5bCG6KKr6LCDXG4tLVxuYXJjaC9hcm0vY29uZmlncy9heG01NXh4X2RlZmNvbmZpZz02OT1DT05GSUdfSU5FVF9JUENPTVA9eVxuYXJjaC9hcm0vY29uZmlncy9heG01NXh4X2RlZmNvbmZpZy03MC0jIENPTkZJR19JUFY2IGlzIG5vdCBzZXRcbmFyY2gvYXJtL2NvbmZpZ3MvYXhtNTV4eF9kZWZjb25maWc6NzE6Q09ORklHX05FVFdPUktfUEhZX1RJTUVTVEFNUElORz15XG5hcmNoL2FybS9jb25maWdzL2F4bTU1eHhfZGVmY29uZmlnLTcyLUNPTkZJR19CUklER0U9eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3Mvc29jZnBnYV9kZWZjb25maWc9MzE9Q09ORklHX0lQX1BOUF9SQVJQPXlcbmFyY2gvYXJtL2NvbmZpZ3Mvc29jZnBnYV9kZWZjb25maWc6MzI6Q09ORklHX05FVFdPUktfUEhZX1RJTUVTVEFNUElORz15XG5hcmNoL2FybS9jb25maWdzL3NvY2ZwZ2FfZGVmY29uZmlnLTMzLUNPTkZJR19WTEFOXzgwMjFRPXlcbi0tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnPTE2MT1DT05GSUdfTVBUQ1A9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZzoxNjI6Q09ORklHX05FVFdPUktfUEhZX1RJTUVTVEFNUElORz15XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnLTE2My1DT05GSUdfTkVURklMVEVSPXlcbi0tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnPTE3Nz1DT05GSUdfTVBUQ1A9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZzoxNzg6Q09ORklHX05FVFdPUktfUEhZX1RJTUVTVEFNUElORz15XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnLTE3OS1DT05GSUdfTkVURklMVEVSPXlcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz0xNjI9Y29uZmlnIEJST0FEQ09NX1BIWVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE2NC1cdHNlbGVjdCBCQ01fTkVUX1BIWUxJQlxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6MTY1Olx0c2VsZWN0IEJDTV9ORVRfUEhZUFRQIGlmIE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR1xuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTY2LVx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTMyNj1jb25maWcgTUlDUk9DSElQX1QxX1BIWVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMzI3LVx0dHJpc3RhdGUgXCYjMzQ7TWljcm9jaGlwIFQxIFBIWXNcJiMzNDtcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjMyODpcdHNlbGVjdCBNSUNST0NISVBfUEhZX1JEU19QVFAgaWYgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0zMjktXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc9MzM4PWNvbmZpZyBNSUNST1NFTUlfUEhZXG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMzQwLVx0ZGVwZW5kcyBvbiBNQUNTRUMgfHwgTUFDU0VDPW5cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjM0MTpcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUwgfHwgIU5FVFdPUktfUEhZX1RJTUVTVEFNUElOR1xuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMzQyLVx0c2VsZWN0IENSWVBUT19MSUJfQUVTIGlmIE1BQ1NFQ1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT0yMj1vYmotJChDT05GSUdfUEhZX1BBQ0tBR0UpXHQmIzQzOz0gcGh5X3BhY2thZ2Uub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTIzLVxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjI0Om9iai0kKENPTkZJR19ORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcpICYjNDM7PSBtaWlfdGltZXN0YW1wZXIub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTI1LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYz00NDQwPXN0YXRpYyB2b2lkIGxhbjg4MTRfcHRwX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmMtNDQ0NS1cdGlmICghSVNfRU5BQkxFRChDT05GSUdfUFRQXzE1ODhfQ0xPQ0spIHx8XG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmM6NDQ0NjpcdCAgICAhSVNfRU5BQkxFRChDT05GSUdfTkVUV09SS19QSFlfVElNRVNUQU1QSU5HKSlcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYy00NDQ3LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JlbC5jPTU5ODE9c3RhdGljIGludCBsYW44ODQxX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JlbC5jLTU5OTYtXHQvKiBSZWdpc3RlciB0aGUgY2xvY2sgKi9cbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYzo1OTk3Olx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19ORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcpKVxuZHJpdmVycy9uZXQvcGh5L21pY3JlbC5jLTU5OTgtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL01ha2VmaWxlPTExPWVuZGlmXG5kcml2ZXJzL25ldC9waHkvbXNjYy9NYWtlZmlsZS0xMi1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL01ha2VmaWxlOjEzOmlmZGVmIENPTkZJR19ORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL01ha2VmaWxlLTE0LW1zY2Mtb2JqcyAmIzQzOz0gbXNjY19wdHAub1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2MuaD00ODI9c3RhdGljIGlubGluZSB2b2lkIHZzYzg1ODRfY29uZmlnX21hY3NlY19pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjYy5oLTQ4Ni1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2MuaDo0ODc6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVFdPUktfUEhZX1RJTUVTVEFNUElORylcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2MuaC00ODgtdm9pZCB2c2M4NXh4X2xpbmtfY2hhbmdlX25vdGlmeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21hY3NlYy5jPTI0ND1zdGF0aWMgdm9pZCB2c2M4NTg0X21hY3NlY19tYWNfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFjc2VjLmMtMjg4LVx0XHRcdFx0ICBNU0NDX01BQ19DRkdfUEtUSU5GX0NGR19FTkFCTEVfVFhfUEFERElORyA6IDApIHxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFjc2VjLmM6Mjg5Olx0XHRcdFx0IChJU19FTkFCTEVEKENPTkZJR19ORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcpID9cbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFjc2VjLmMtMjkwLVx0XHRcdFx0ICBNU0NDX01BQ19DRkdfUEtUSU5GX0NGR19NQUNTRUNfQllQQVNTX05VTV9QVFBfU1RBTExfQ0xLUygweDgpIDogMCkpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9ueHAtYzQ1LXRqYTExeHguYz0xNzMwPXN0YXRpYyBpbnQgbnhwX2M0NV9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9ueHAtYzQ1LXRqYTExeHguYy0xNzYxLVx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1BUUF8xNTg4X0NMT0NLKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3BoeS9ueHAtYzQ1LXRqYTExeHguYzoxNzYyOlx0ICAgIElTX0VOQUJMRUQoQ09ORklHX05FVFdPUktfUEhZX1RJTUVTVEFNUElORykpIHtcbmRyaXZlcnMvbmV0L3BoeS9ueHAtYzQ1LXRqYTExeHguYy0xNzYzLVx0XHRwcml2LVx1MDAzZW1paV90cy5yeHRzdGFtcCA9IG54cF9jNDVfcnh0c3RhbXA7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZz01OD1jb25maWcgUFRQXzE1ODhfQ0xPQ0tfUU9SSVFcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTcxLVxuZHJpdmVycy9wdHAvS2NvbmZpZzo3Mjpjb21tZW50IFwmIzM0O0VuYWJsZSBQSFlMSUIgYW5kIE5FVFdPUktfUEhZX1RJTUVTVEFNUElORyB0byBzZWUgdGhlIGFkZGl0aW9uYWwgY2xvY2tzLlwmIzM0O1xuZHJpdmVycy9wdHAvS2NvbmZpZzo3MzpcdGRlcGVuZHMgb24gUEhZTElCPW4gfHwgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HPW5cbmRyaXZlcnMvcHRwL0tjb25maWctNzQtXG5kcml2ZXJzL3B0cC9LY29uZmlnPTc1PWNvbmZpZyBEUDgzNjQwX1BIWVxuZHJpdmVycy9wdHAvS2NvbmZpZy03Ni1cdHRyaXN0YXRlIFwmIzM0O0RyaXZlciBmb3IgdGhlIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgRFA4MzY0MCBQSFlURVJcJiMzNDtcbmRyaXZlcnMvcHRwL0tjb25maWc6Nzc6XHRkZXBlbmRzIG9uIE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR1xuZHJpdmVycy9wdHAvS2NvbmZpZy03OC1cdGRlcGVuZHMgb24gUEhZTElCXG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZz05Mz1jb25maWcgUFRQXzE1ODhfQ0xPQ0tfSU5FU1xuZHJpdmVycy9wdHAvS2NvbmZpZy05NC1cdHRyaXN0YXRlIFwmIzM0O1pIQVcgSW5FUyBQVFAgdGltZSBzdGFtcGluZyBJUCBjb3JlXCYjMzQ7XG5kcml2ZXJzL3B0cC9LY29uZmlnOjk1Olx0ZGVwZW5kcyBvbiBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcbmRyaXZlcnMvcHRwL0tjb25maWctOTYtXHRkZXBlbmRzIG9uIEhBU19JT01FTVxuLS1cbmluY2x1ZGUvbGludXgvbWlpX3RpbWVzdGFtcGVyLmg9ODM9c3RydWN0IG1paV90aW1lc3RhbXBpbmdfY3RybCB7XG4tLVxuaW5jbHVkZS9saW51eC9taWlfdGltZXN0YW1wZXIuaC04OS1cbmluY2x1ZGUvbGludXgvbWlpX3RpbWVzdGFtcGVyLmg6OTA6I2lmZGVmIENPTkZJR19ORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcbmluY2x1ZGUvbGludXgvbWlpX3RpbWVzdGFtcGVyLmgtOTEtXG4tLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD00NjgyPXN0cnVjdCBza19idWZmICpza2JfY2xvbmVfc2soc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTQ2ODMtXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjQ2ODQ6I2lmZGVmIENPTkZJR19ORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtNDY4NS1cbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTQ2ODc9Ym9vbCBza2JfZGVmZXJfcnhfdGltZXN0YW1wKHN0cnVjdCBza19idWZmICpza2IpO1xuaW5jbHVkZS9saW51eC9za2J1ZmYuaC00Njg4LVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaDo0Njg5OiNlbHNlIC8qIENPTkZJR19ORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcgKi9cbmluY2x1ZGUvbGludXgvc2tidWZmLmgtNDY5MC1cbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTQ2OTU9c3RhdGljIGlubGluZSBib29sIHNrYl9kZWZlcl9yeF90aW1lc3RhbXAoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTQ2OTktXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjQ3MDA6I2VuZGlmIC8qICFDT05GSUdfTkVUV09SS19QSFlfVElNRVNUQU1QSU5HICovXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTQ3MDEtXG4tLVxubmV0L0tjb25maWc9MTUxPWNvbmZpZyBORVRfUFRQX0NMQVNTSUZZXG4tLVxubmV0L0tjb25maWctMTUzLVxubmV0L0tjb25maWc6MTU0OmNvbmZpZyBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcbm5ldC9LY29uZmlnLTE1NS1cdGJvb2wgXCYjMzQ7VGltZXN0YW1waW5nIGluIFBIWSBkZXZpY2VzXCYjMzQ7XG4tLVxubmV0L2NvcmUvTWFrZWZpbGU9MzM9b2JqLSQoQ09ORklHX05FVF9TRUxGVEVTVFMpICYjNDM7PSBzZWxmdGVzdHMub1xubmV0L2NvcmUvTWFrZWZpbGU6MzQ6b2JqLSQoQ09ORklHX05FVFdPUktfUEhZX1RJTUVTVEFNUElORykgJiM0Mzs9IHRpbWVzdGFtcGluZy5vXG5uZXQvY29yZS9NYWtlZmlsZS0zNS1vYmotJChDT05GSUdfTkVUX1BUUF9DTEFTU0lGWSkgJiM0Mzs9IHB0cF9jbGFzc2lmaWVyLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTY6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg0NTIKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAzNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQ29uZmlndXJpbmcgdGhlIERQODM2NDAgUEhZIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRvIHByb3Blcmx5IGNvbmZpZ3VyZSB0aGUgYERQODM2NDBfUEhZYCBkcml2ZXIuIEl0JiMzOTtzIGNsZWFyIHRoYXQgaXQgaGFzIHNldmVyYWwgZGVwZW5kZW5jaWVzLCBuYW1lbHkgYE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR2AsIGBQSFlMSUJgLCBhbmQgYFBUUF8xNTg4X0NMT0NLYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGVzZSBhcmUgZW5hYmxlZCBjb3JyZWN0bHkuIExldCYjMzk7cyBzZWUuLi4gYFBIWUxJQmAgaXMgYSBtZW51Y29uZmlnLCBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HYCBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCBib29sZWFuIG9wdGlvbiwgYW5kIGBQVFBfMTU4OF9DTE9DS2AgYW5kIGBEUDgzNjQwX1BIWWAgYXJlIGJvdGggdHJpc3RhdGVzLCBzbyBJJiMzOTtsbCBuZWVkIHRvIHNldCB0aGVtIGFwcHJvcHJpYXRlbHksIHdoaWNoIG1lYW5zIEkgc2hvdWxkIGxpc3QgdGhlbSBpbiBFbmFibGVDb25maWdzOiBgRFA4MzY0MF9QSFlgLCBgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HYCwgYFBIWUxJQmAsIGBQVFBfMTU4OF9DTE9DS2AuCgpJJiMzOTttIGJlaW5nIHRob3JvdWdoLCBzbyBJIHdhbnQgdG8gZG91YmxlLWNoZWNrIHRob3NlIGRlcGVuZGVuY2llcywganVzdCB0byBiZSBzdXJlLiBMZXQmIzM5O3Mgc2VlIHRoZSBLY29uZmlnIGVudHJ5IGZvciB0aGUgYERQODM2NDBfUEhZYC4gQWxyaWdodCwgaXQgY2xlYXJseSBzdGF0ZXMgdGhhdCB0aGUgZGVwZW5kZW5jaWVzIGFyZSBpbmRlZWQgYE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR2AsIGBQSFlMSUJgLCBhbmQgYFBUUF8xNTg4X0NMT0NLYCwgYXMgSSB0aG91Z2h0LiBMb29rcyBsaWtlIGl0IGFsc28gc2VsZWN0cyBgQ1JDMzJgIGFuZCBgUEhZX1BBQ0tBR0VgLCBidXQgdGhvc2UgYXJlIGhhbmRsZWQgYXV0b21hdGljYWxseS4KCk9rYXksIG5vdywgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgKmhpZGRlbiogZGVwZW5kZW5jaWVzIGZvciB0aGUgZGVwZW5kZW50IG9wdGlvbnMsIGxpa2UgYFBUUF8xNTg4X0NMT0NLYC4gTm9wZSwgdGhhdCBjb25maWcgaXMgdGhlIG1haW4gb25lLCBub3Qgc29tZSBvcHRpb25hbCBoZWxwZXIuIEkgc2hvdWxkIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgb2YgYFBUUF8xNTg4X0NMT0NLYCBsYXRlciBpZiBuZWVkZWQuIEJ1dCBmb3Igbm93LCBJJiMzOTttIGNvbmZpZGVudCBpbiB0aGVzZSBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE2OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBQVFBfMTU4OF9DTE9DSyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvS2NvbmZpZz0yMT1jb25maWcgSVhQNFhYX0VUSFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9LY29uZmlnLTMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL0tjb25maWc6MzE6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0lYUDQ2WFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL0tjb25maWctMzItXHRib29sIFwmIzM0O0ludGVsIElYUDQ2eCBhcyBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnPTY9bWVudSBcJiMzNDtQVFAgY2xvY2sgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9wdHAvS2NvbmZpZy03LVxuZHJpdmVycy9wdHAvS2NvbmZpZzo4OmNvbmZpZyBQVFBfMTU4OF9DTE9DS1xuZHJpdmVycy9wdHAvS2NvbmZpZy05LVx0dHJpc3RhdGUgXCYjMzQ7UFRQIGNsb2NrIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTI5LVxuZHJpdmVycy9wdHAvS2NvbmZpZzozMDpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbmRyaXZlcnMvcHRwL0tjb25maWctMzEtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctNDEtXG5kcml2ZXJzL3B0cC9LY29uZmlnOjQyOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19EVEVcbmRyaXZlcnMvcHRwL0tjb25maWctNDMtXHR0cmlzdGF0ZSBcJiMzNDtCcm9hZGNvbSBEVEUgYXMgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy01Ny1cbmRyaXZlcnMvcHRwL0tjb25maWc6NTg6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1FPUklRXG5kcml2ZXJzL3B0cC9LY29uZmlnLTU5LVx0dHJpc3RhdGUgXCYjMzQ7RnJlZXNjYWxlIFFvcklRIDE1ODggdGltZXIgYXMgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZz03NT1jb25maWcgRFA4MzY0MF9QSFlcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTkyLVxuZHJpdmVycy9wdHAvS2NvbmZpZzo5Mzpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfSU5FU1xuZHJpdmVycy9wdHAvS2NvbmZpZy05NC1cdHRyaXN0YXRlIFwmIzM0O1pIQVcgSW5FUyBQVFAgdGltZSBzdGFtcGluZyBJUCBjb3JlXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMDMtXG5kcml2ZXJzL3B0cC9LY29uZmlnOjEwNDpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfUENIXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEwNS1cdHRyaXN0YXRlIFwmIzM0O0ludGVsIFBDSCBFRzIwVCBhcyBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEyMi1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTIzOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19LVk1cbmRyaXZlcnMvcHRwL0tjb25maWctMTI0LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIHZpcnR1YWwgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMzQtXG5kcml2ZXJzL3B0cC9LY29uZmlnOjEzNTpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfVk1DTE9DS1xuZHJpdmVycy9wdHAvS2NvbmZpZy0xMzYtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0dWFsIG1hY2hpbmUgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNTEtXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE1Mjpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfSURUODJQMzNcbmRyaXZlcnMvcHRwL0tjb25maWctMTUzLVx0dHJpc3RhdGUgXCYjMzQ7SURUIDgyUDMzeHh4IFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTYzLVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxNjQ6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0lEVENNXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE2NS1cdHRyaXN0YXRlIFwmIzM0O0lEVCBDTE9DS01BVFJJWCBhcyBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE3NS1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTc2OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19GQzNXXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE3Ny1cdHRyaXN0YXRlIFwmIzM0O1JFTkVTQVMgRmVtdG9DbG9jazMgV2lyZWxlc3MgYXMgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xODctXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE4ODpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfTU9DS1xuZHJpdmVycy9wdHAvS2NvbmZpZy0xODktXHR0cmlzdGF0ZSBcJiMzNDtNb2NrLXVwIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTk4LVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxOTk6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1ZNV1xuZHJpdmVycy9wdHAvS2NvbmZpZy0yMDAtXHR0cmlzdGF0ZSBcJiMzNDtWTXdhcmUgdmlydHVhbCBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIxMC1cbmRyaXZlcnMvcHRwL0tjb25maWc6MjExOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19PQ1BcbmRyaXZlcnMvcHRwL0tjb25maWctMjEyLVx0dHJpc3RhdGUgXCYjMzQ7T3BlbkNvbXB1dGUgVGltZUNhcmQgYXMgUFRQIGNsb2NrXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE2OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMzE0CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyBQVFAgQ2xvY2sgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIGBQVFBfMTU4OF9DTE9DS2AuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpdmUgZGlyZWN0bHkgaW50byBgZHJpdmVycy9wdHAvS2NvbmZpZ2AuIFRoYXQmIzM5O3Mgd2hlcmUgSSBleHBlY3QgdG8gZmluZCB0aGUgY29uZGl0aW9uYWwgbG9naWMgdGhhdCBnb3Zlcm5zIHdoZXRoZXIgb3Igbm90IHRoaXMgZmVhdHVyZSBpcyBleHBvc2VkLiBJJiMzOTttIGxvb2tpbmcgZm9yIGFueSBgZGVwZW5kcyBvbmAgc3RhdGVtZW50cywgYHNlbGVjdGAgc3RhdGVtZW50cywgb3IgcG90ZW50aWFsbHkgZXZlbiBgaWZgIGNvbmRpdGlvbnMgdGhhdCBpbmZsdWVuY2UgdGhlIGF2YWlsYWJpbGl0eSBvZiBgUFRQXzE1ODhfQ0xPQ0tgIGF0IGJ1aWxkIHRpbWUuIEkmIzM5O2xsIGJlIG1ldGljdWxvdXNseSBjaGVja2luZyBmb3IgcmVsYXRpb25zaGlwcyB3aXRoIG90aGVyIGNvbmZpZ3VyYXRpb25zLCBwb3RlbnRpYWxseSBoYXJkd2FyZS1zcGVjaWZpYyBvcHRpb25zLCBvciBldmVuIG90aGVyIGtlcm5lbCBzdWJzeXN0ZW1zIHRoYXQgbWlnaHQgYmUgcHJlcmVxdWlzaXRlcy4gSXQmIzM5O3MgYWxsIGFib3V0IHRyYWNpbmcgdGhlIGNvbmZpZ3VyYXRpb24gcGF0aCB0byB1bmRlcnN0YW5kIHRoZSB1bmRlcmx5aW5nIHJlcXVpcmVtZW50cyBhbmQgYW55IHBvdGVudGlhbCBjb25mbGljdHMgdGhhdCBtaWdodCBhcmlzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTY6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFBUUF8xNTg4X0NMT0NLJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9LY29uZmlnPTIxPWNvbmZpZyBJWFA0WFhfRVRIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL0tjb25maWctMzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvS2NvbmZpZzozMTpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfSVhQNDZYXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvS2NvbmZpZy0zMi1cdGJvb2wgXCYjMzQ7SW50ZWwgSVhQNDZ4IGFzIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWc9Nj1tZW51IFwmIzM0O1BUUCBjbG9jayBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL3B0cC9LY29uZmlnLTctXG5kcml2ZXJzL3B0cC9LY29uZmlnOjg6Y29uZmlnIFBUUF8xNTg4X0NMT0NLXG5kcml2ZXJzL3B0cC9LY29uZmlnLTktXHR0cmlzdGF0ZSBcJiMzNDtQVFAgY2xvY2sgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMjktXG5kcml2ZXJzL3B0cC9LY29uZmlnOjMwOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuZHJpdmVycy9wdHAvS2NvbmZpZy0zMS1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy00MS1cbmRyaXZlcnMvcHRwL0tjb25maWc6NDI6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0RURVxuZHJpdmVycy9wdHAvS2NvbmZpZy00My1cdHRyaXN0YXRlIFwmIzM0O0Jyb2FkY29tIERURSBhcyBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTU3LVxuZHJpdmVycy9wdHAvS2NvbmZpZzo1ODpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfUU9SSVFcbmRyaXZlcnMvcHRwL0tjb25maWctNTktXHR0cmlzdGF0ZSBcJiMzNDtGcmVlc2NhbGUgUW9ySVEgMTU4OCB0aW1lciBhcyBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnPTc1PWNvbmZpZyBEUDgzNjQwX1BIWVxuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctOTItXG5kcml2ZXJzL3B0cC9LY29uZmlnOjkzOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JTkVTXG5kcml2ZXJzL3B0cC9LY29uZmlnLTk0LVx0dHJpc3RhdGUgXCYjMzQ7WkhBVyBJbkVTIFBUUCB0aW1lIHN0YW1waW5nIElQIGNvcmVcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEwMy1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTA0OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19QQ0hcbmRyaXZlcnMvcHRwL0tjb25maWctMTA1LVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgUENIIEVHMjBUIGFzIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTIyLVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxMjM6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0tWTVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMjQtXHR0cmlzdGF0ZSBcJiMzNDtLVk0gdmlydHVhbCBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEzNC1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTM1OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19WTUNMT0NLXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEzNi1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgbWFjaGluZSBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE1MS1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTUyOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JRFQ4MlAzM1xuZHJpdmVycy9wdHAvS2NvbmZpZy0xNTMtXHR0cmlzdGF0ZSBcJiMzNDtJRFQgODJQMzN4eHggUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNjMtXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE2NDpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfSURUQ01cbmRyaXZlcnMvcHRwL0tjb25maWctMTY1LVx0dHJpc3RhdGUgXCYjMzQ7SURUIENMT0NLTUFUUklYIGFzIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTc1LVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxNzY6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0ZDM1dcbmRyaXZlcnMvcHRwL0tjb25maWctMTc3LVx0dHJpc3RhdGUgXCYjMzQ7UkVORVNBUyBGZW10b0Nsb2NrMyBXaXJlbGVzcyBhcyBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE4Ny1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTg4OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19NT0NLXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE4OS1cdHRyaXN0YXRlIFwmIzM0O01vY2stdXAgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xOTgtXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE5OTpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfVk1XXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIwMC1cdHRyaXN0YXRlIFwmIzM0O1ZNd2FyZSB2aXJ0dWFsIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMjEwLVxuZHJpdmVycy9wdHAvS2NvbmZpZzoyMTE6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX09DUFxuZHJpdmVycy9wdHAvS2NvbmZpZy0yMTItXHR0cmlzdGF0ZSBcJiMzNDtPcGVuQ29tcHV0ZSBUaW1lQ2FyZCBhcyBQVFAgY2xvY2tcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTY6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE2NDUKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBgZHJpdmVycy9wdHAvS2NvbmZpZ2AgZmlsZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDguCgoqKkV4YW1pbmluZyB0aGUgUFRQIERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGBkcml2ZXJzL3B0cC9LY29uZmlnYCBmaWxlLiBJJiMzOTttIGZvY3VzaW5nIG9uIGxpbmUgOCwgaG9waW5nIHRvIGdldCBhIHF1aWNrIGdyYXNwIG9mIHRoZSBnZW5lcmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhdmFpbGFibGUgZm9yIFByZWNpc2lvbiBUaW1lIFByb3RvY29sIChQVFApIGRyaXZlcnMgaW4gdGhlIGtlcm5lbC4gS25vd2luZyB0aGUgZmlsZSBzdHJ1Y3R1cmUgZnJvbSBwYXN0IGV4cGVyaWVuY2VzLCBJIGV4cGVjdCB0aGlzIHRvIGJlIHRoZSBwb2ludCB3aGVyZSB0aGUgYnJvYWQgZmVhdHVyZSBzZXQgaXMgZGVmaW5lZC4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgZm91bmRhdGlvbmFsIGNob2ljZXM6IGFyZSB3ZSBkZWFsaW5nIHdpdGggaGFyZHdhcmUtYXNzaXN0ZWQgUFRQLCBzb2Z0d2FyZSBpbXBsZW1lbnRhdGlvbnMsIG9yIG1heWJlIG9wdGlvbnMgZm9yIHNwZWNpZmljIG5ldHdvcmsgaW50ZXJmYWNlIGNvbnRyb2xsZXJzPyBJJiMzOTttIGFudGljaXBhdGluZyBmaW5kaW5nIHRoZSBtYWluIEtjb25maWcgc3ltYm9sIGFuZCBpdHMgZGVwZW5kZW5jaWVzIG9yIHBvc3NpYmxlIGRlZmF1bHRzIGhlcmUuIFRoaXMgc2hvdWxkIGdpdmUgbWUgdGhlIGJyb2FkIHN0cm9rZXMgb2YgaG93IHRoZSBQVFAgc3Vic3lzdGVtIGlzIHN0cnVjdHVyZWQgZnJvbSBhIGNvbmZpZ3VyYXRpb24gc3RhbmRwb2ludCwgc28gSSBjYW4gYmV0dGVyIGdyYXNwIGhvdyB0byB0YWlsb3IgbXkgc3lzdGVtcy4gSG9wZWZ1bGx5LCB0aGlzIHNlY3Rpb24gd2lsbCBwb2ludCBtZSBpbiB0aGUgcmlnaHQgZGlyZWN0aW9uIHRvIHVuZGVyc3RhbmQgdGhlIGZpbmVyIGRldGFpbHMgbGF0ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE2OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9wdHAvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIFBUUCBjbG9jayBzdXBwb3J0IGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0bWVudSBcJiMzNDtQVFAgY2xvY2sgc3VwcG9ydFwmIzM0O1xuICAgNzpcdFxuICAgODpcdGNvbmZpZyBQVFBfMTU4OF9DTE9DS1xuICAgOTpcdFx0dHJpc3RhdGUgXCYjMzQ7UFRQIGNsb2NrIHN1cHBvcnRcJiMzNDtcbiAgMTA6XHRcdGRlcGVuZHMgb24gTkVUIFx1MDAyNlx1MDAyNiBQT1NJWF9USU1FUlNcbiAgMTE6XHRcdGRlZmF1bHQgRVRIRVJORVRcbiAgMTI6XHRcdHNlbGVjdCBQUFNcbiAgMTM6XHRcdHNlbGVjdCBORVRfUFRQX0NMQVNTSUZZXG4gIDE0Olx0XHRoZWxwXG4gIDE1Olx0XHQgIFRoZSBJRUVFIDE1ODggc3RhbmRhcmQgZGVmaW5lcyBhIG1ldGhvZCB0byBwcmVjaXNlbHlcbiAgMTY6XHRcdCAgc3luY2hyb25pemUgZGlzdHJpYnV0ZWQgY2xvY2tzIG92ZXIgRXRoZXJuZXQgbmV0d29ya3MuIFRoZVxuICAxNzpcdFx0ICBzdGFuZGFyZCBkZWZpbmVzIGEgUHJlY2lzaW9uIFRpbWUgUHJvdG9jb2wgKFBUUCksIHdoaWNoIGNhblxuICAxODpcdFx0ICBiZSB1c2VkIHRvIGFjaGlldmUgc3luY2hyb25pemF0aW9uIHdpdGhpbiBhIGZldyBkb3plblxuICAxOTpcdFx0ICBtaWNyb3NlY29uZHMuIEluIGFkZGl0aW9uLCB3aXRoIHRoZSBoZWxwIG9mIHNwZWNpYWwgaGFyZHdhcmVcbiAgMjA6XHRcdCAgdGltZSBzdGFtcGluZyB1bml0cywgaXQgY2FuIGJlIHBvc3NpYmxlIHRvIGFjaGlldmVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTY6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIxNzIKCQkJCQkJCW91dHB1dDogMTk5CgkJCQkJCQl0aG91Z2h0czogNTYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBEUDgzNjQwIFBIWSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGhlcmUmIzM5O3MgbXkgYnJlYWtkb3duLiBGaXJzdCwgSSBub3RpY2VkIHRoZSBkZXBlbmRlbmNpZXMuIGBQVFBfMTU4OF9DTE9DS2AgaXMgcmVsaWFudCBvbiBgTkVUYCBhbmQgYFBPU0lYX1RJTUVSU2AsIGJvdGggb2Ygd2hpY2ggYXJlIHN0YW5kYXJkIGNvbXBvbmVudHMuIGBEUDgzNjQwX1BIWWAgZGVwZW5kcyBvbiBgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HYCwgYFBIWUxJQmAsIGFuZCwgY3J1Y2lhbGx5LCBgUFRQXzE1ODhfQ0xPQ0tgLiBUaGVyZWZvcmUsIGEgc2Vuc2libGUgYEVuYWJsZUNvbmZpZ3NgIGxpc3Qgc2hvdWxkIGluY2x1ZGUgYERQODM2NDBfUEhZYCwgYE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR2AsIGBQSFlMSUJgLCBhbmQgYFBUUF8xNTg4X0NMT0NLYC4KCk5leHQsIEkgZXhhbWluZWQgdGhlIGBGb2N1c1N5bWJvbHNgLiBUaGUgcGF0Y2ggaXMgbW9kaWZ5aW5nIHNldmVyYWwgZnVuY3Rpb25zOiBgZHA4MzY0MF9wcm9iZWAsIGBkcDgzNjQwX3JlbW92ZWAsIGBkcDgzNjQwX2Nsb2NrX2luaXRgLCBgcGh5X3BhY2thZ2VfbG9ja2AsIGFuZCBgcGh5X3BhY2thZ2VfdW5sb2NrYC4gQWx0aG91Z2ggYGRwODM2NDBfY2xvY2tfaW5pdGAgaXMgc3RhdGljIGFuZCBjYWxsZWQgaW50ZXJuYWxseSwgSSB3aWxsIGluY2x1ZGUgaXQuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gbGlzdCBgZHA4MzY0MF9wcm9iZWAsIGBkcDgzNjQwX3JlbW92ZWAsIGBwaHlfcGFja2FnZV9sb2NrYCwgYW5kIGBwaHlfcGFja2FnZV91bmxvY2tgLiBCdXQgd2FpdCwgYGRwODM2NDBfcHJvYmVgIGFuZCBgZHA4MzY0MF9yZW1vdmVgIGFyZSBzdGF0aWMgZnVuY3Rpb25zLCBob3dldmVyIHRoZXkgKmFyZSogYXNzaWduZWQgdG8gZnVuY3Rpb24gcG9pbnRlcnMgd2l0aGluIGBkcDgzNjQwX2RyaXZlcmAuIFRoYXQmIzM5O3MgaW1wb3J0YW50OyB0aGV5IGFyZSB0aGUgZHJpdmVyJiMzOTtzIGVudHJ5IHBvaW50cy4gU28sIEkgd2lsbCBpbmNsdWRlIHRoZW0gaW4gbXkgbGlzdC4gYHBoeV9wYWNrYWdlX2xvY2tgIGFuZCBgcGh5X3BhY2thZ2VfdW5sb2NrYCBhcmUgZXhwb3J0ZWQgZnVuY3Rpb25zLCBzbyB0aGV5IGFyZSBkZWZpbml0ZWx5IHJlbGV2YW50LgoKTm93LCBsZXQmIzM5O3MgcmV2aWV3IHRoZSByYXRpb25hbGUuIFRoZSBwYXRjaCByZWZhY3RvcnMgdGhlIGRyaXZlciB0byB1c2UgdGhlIHN0YW5kYXJkIGBwaHlfcGFja2FnZWAgQVBJIHJhdGhlciB0aGFuIGEgY3VzdG9tIGdsb2JhbCBsaXN0IGZvciBzaGFyZWQgY2xvY2sgaW5pdGlhbGl6YXRpb24uIFRoZXkmIzM5O3JlIGFsc28gYWRkaW5nIGBwaHlfcGFja2FnZV9sb2NrYCBhbmQgYHBoeV9wYWNrYWdlX3VubG9ja2AgdG8gc2VyaWFsaXplIGFjY2VzcyB0byBwYWNrYWdlLXByaXZhdGUgZGF0YS4gVGhlc2UgY2hhbmdlcyB0b3VjaCB0aGUgcHJvYmUgYW5kIHJlbW92ZSBwYXRocyBvZiB0aGUgUEhZIGRyaXZlci4gVGhlc2UgcGF0aHMgY2FuIGJlIHJlYWNoZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB0aHJvdWdoIGVtdWxhdGluZyBhbiBNRElPIGJ1cywgb3IgZXZlbiB3aXRoIGEgVVNCIG5ldHdvcmsgZGV2aWNlIHRoYXQgaGFzIHRoZSBzcGVjaWZpYyBQSFkgSUQuIEdpdmVuIHRoaXMsIGZ1enppbmcgbWFrZXMgcGVyZmVjdCBzZW5zZSBoZXJlLiBUaGUgcG90ZW50aWFsIGZvciB1bmV4cGVjdGVkIHN0YXRlcywgcGFydGljdWxhcmx5IGFyb3VuZCB0aGUgbG9ja2luZyBtZWNoYW5pc21zLCBpcyBoaWdoIGVub3VnaCB0byB3YXJyYW50IGNsb3NlIHNjcnV0aW55LgoKRmluYWxseSwgSSYjMzk7bGwgZG8gYSBxdWljayBzd2VlcCB0byBlbnN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcuIEkmIzM5O3ZlIG5vdGVkIHRoZSByZW1vdmFsIG9mIGBkcDgzNjQwX2Nsb2NrX2dldF9idXNgLCBgZHA4MzY0MF9jbG9ja19nZXRgLCBhbmQgYGRwODM2NDBfY2xvY2tfcHV0YCwgYW5kIEkmIzM5O3ZlIGFsc28gbm90ZWQgdGhhdCBgZHA4MzY0MF9jbG9ja19pbml0YCBoYXMgYmVlbiBtb2RpZmllZCwgYWxvbmcgd2l0aCB0aGUgb3RoZXIgc3ltYm9scy4gSSB0aGluayB0aGF0IGNvdmVycyBpdC4gT2theSwgSSYjMzk7bSByZWFkeSB0byBzZXQgdGhlIHJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE2OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEUDgzNjQwX1BIWSYjMzQ7LAogICAgJiMzNDtORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcmIzM0OywKICAgICYjMzQ7UEhZTElCJiMzNDssCiAgICAmIzM0O1BUUF8xNTg4X0NMT0NLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZHA4MzY0MF9wcm9iZSYjMzQ7LAogICAgJiMzNDtkcDgzNjQwX3JlbW92ZSYjMzQ7LAogICAgJiMzNDtwaHlfcGFja2FnZV9sb2NrJiMzNDssCiAgICAmIzM0O3BoeV9wYWNrYWdlX3VubG9jayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgdGhlIERQODM2NDAgUEhZIGRyaXZlciB0byB1c2UgdGhlIHN0YW5kYXJkIHBoeV9wYWNrYWdlIEFQSSBmb3Igc2hhcmVkIGNsb2NrIGluaXRpYWxpemF0aW9uLCByZXBsYWNpbmcgYSBjdXN0b20gZ2xvYmFsIGxpc3QuIEl0IGFsc28gaW50cm9kdWNlcyBwaHlfcGFja2FnZV9sb2NrIGFuZCBwaHlfcGFja2FnZV91bmxvY2sgdG8gc2VyaWFsaXplIGFjY2VzcyB0byBwYWNrYWdlLXByaXZhdGUgZGF0YS4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIHByb2JlIGFuZCByZW1vdmUgcGF0aHMgb2YgdGhlIFBIWSBkcml2ZXIsIHdoaWNoIGNhbiBiZSByZWFjaGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgYnkgZW11bGF0aW5nIGFuIE1ESU8gYnVzIG9yIGEgVVNCIG5ldHdvcmsgZGV2aWNlIHdpdGggdGhlIHNwZWNpZmljIFBIWSBJRC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RFA4MzY0MF9QSFkmIzM0OywKICAgICYjMzQ7TkVUV09SS19QSFlfVElNRVNUQU1QSU5HJiMzNDssCiAgICAmIzM0O1BIWUxJQiYjMzQ7LAogICAgJiMzNDtQVFBfMTU4OF9DTE9DSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RwODM2NDBfcHJvYmUmIzM0OywKICAgICYjMzQ7ZHA4MzY0MF9yZW1vdmUmIzM0OywKICAgICYjMzQ7cGh5X3BhY2thZ2VfbG9jayYjMzQ7LAogICAgJiMzNDtwaHlfcGFja2FnZV91bmxvY2smIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSBEUDgzNjQwIFBIWSBkcml2ZXIgdG8gdXNlIHRoZSBzdGFuZGFyZCBwaHlfcGFja2FnZSBBUEkgZm9yIHNoYXJlZCBjbG9jayBpbml0aWFsaXphdGlvbiwgcmVwbGFjaW5nIGEgY3VzdG9tIGdsb2JhbCBsaXN0LiBJdCBhbHNvIGludHJvZHVjZXMgcGh5X3BhY2thZ2VfbG9jayBhbmQgcGh5X3BhY2thZ2VfdW5sb2NrIHRvIHNlcmlhbGl6ZSBhY2Nlc3MgdG8gcGFja2FnZS1wcml2YXRlIGRhdGEuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IHRoZSBwcm9iZSBhbmQgcmVtb3ZlIHBhdGhzIG9mIHRoZSBQSFkgZHJpdmVyLCB3aGljaCBjYW4gYmUgcmVhY2hlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGJ5IGVtdWxhdGluZyBhbiBNRElPIGJ1cyBvciBhIFVTQiBuZXR3b3JrIGRldmljZSB3aXRoIHRoZSBzcGVjaWZpYyBQSFkgSUQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE2OjU1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTY6NTU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSBkcDgzNjQwIFBIWSBkcml2ZXIgdG8gdXNlIHRoZSBzdGFuZGFyZCBgcGh5X3BhY2thZ2Vfam9pbmAgQVBJIGZvciBtYW5hZ2luZyBzaGFyZWQgY2xvY2sgc3RydWN0dXJlcywgcmVwbGFjaW5nIGEgY3VzdG9tIGdsb2JhbCBsaXN0IGFuZCBtYW51YWwgYWxsb2NhdGlvbnMuIFRoZSBzaGFyZWQgc3RydWN0dXJlIGBkcDgzNjQwX2Nsb2NrYCAoYW5kIGl0cyBlbWJlZGRlZCBgcGluX2NvbmZpZ2AgYXJyYXkpIGlzIGFsbG9jYXRlZCB2aWEgYGt6YWxsb2NgIGluc2lkZSBgcGh5X3BhY2thZ2Vfam9pbmAsIGVuc3VyaW5nIGFsbCBmaWVsZHMgYW5kIHBhZGRpbmcgYXJlIGZ1bGx5IHplcm8taW5pdGlhbGl6ZWQuIFRoZXJlIGFyZSBubyBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2guIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGludm9sdmUgb2JqZWN0IGxpZmVjeWNsZSBpc3N1ZXMgKGxpa2UgdXNlLWFmdGVyLWZyZWUgb3IgbWVtb3J5IGxlYWtzKSBvciBsb2NraW5nIGlzc3Vlcywgd2hpY2ggYXJlIGFscmVhZHkgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIExPQ0tERVAuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDE1YjcwZGRhYTdmM2RmZjM2YmQ1MWU3ZTJjNjhlZWMwODUxOWEyM2YKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAxMCAxNjo1Mzo1OSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMgYi9kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jCmluZGV4IDk4NDcyYWJkZDM5MjAuLjY4NjdlN2M2ZjNiN2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYwpAQCAtMjEsNiAmIzQzOzIxLDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9wdHBfY2xvY2tfa2VybmVsLmgmZ3Q7CiAKICNpbmNsdWRlICYjMzQ7ZHA4MzY0MF9yZWcuaCYjMzQ7CiYjNDM7I2luY2x1ZGUgJiMzNDtwaHlsaWIuaCYjMzQ7CiAKICNkZWZpbmUgRFA4MzY0MF9QSFlfSUQJMHgyMDAwNWNlMQogI2RlZmluZSBQQUdFU0VMCQkweDEzCkBAIC0xMjgsMTAgJiM0MzsxMjksNiBAQCBzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlIHsKIH07CiAKIHN0cnVjdCBkcDgzNjQwX2Nsb2NrIHsKLQkvKiBrZWVwcyB0aGUgaW5zdGFuY2UgaW4gdGhlICYjMzk7cGh5dGVyX2Nsb2NrcyYjMzk7IGxpc3QgKi8KLQlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7Ci0JLyogd2UgY3JlYXRlIG9uZSBjbG9jayBpbnN0YW5jZSBwZXIgTUlJIGJ1cyAqLwotCXN0cnVjdCBtaWlfYnVzICpidXM7CiAJLyogcHJvdGVjdHMgZXh0ZW5kZWQgcmVnaXN0ZXJzIGZyb20gY29uY3VycmVudCBhY2Nlc3MgKi8KIAlzdHJ1Y3QgbXV0ZXggZXh0cmVnX2xvY2s7CiAJLyogcmVtZW1iZXJzIHdoaWNoIHBhZ2Ugd2FzIGxhc3Qgc2VsZWN0ZWQgKi8KQEAgLTE0Niw2ICYjNDM7MTQzLDggQEAgc3RydWN0IGRwODM2NDBfY2xvY2sgewogCXN0cnVjdCBsaXN0X2hlYWQgcGh5bGlzdDsKIAkvKiByZWZlcmVuY2UgdG8gb3VyIFBUUCBoYXJkd2FyZSBjbG9jayAqLwogCXN0cnVjdCBwdHBfY2xvY2sgKnB0cF9jbG9jazsKJiM0MzsJLyogcHJvdGVjdGVkIGJ5IHRoZSBQVFAgY29yZSBwaW4gY29uZmlndXJhdGlvbiBsb2NrICovCiYjNDM7CXN0cnVjdCBwdHBfcGluX2Rlc2MgcGluX2NvbmZpZ1tEUDgzNjQwX05fUElOU107CiB9OwogCiAvKiBnbG9iYWxzICovCkBAIC0yMDYsMTAgJiM0MzsyMDUsNiBAQCBzdGF0aWMgdm9pZCBkcDgzNjQwX2dwaW9fZGVmYXVsdHMoc3RydWN0IHB0cF9waW5fZGVzYyAqcGQpCiAJfQogfQogCi0vKiBhIGxpc3Qgb2YgY2xvY2tzIGFuZCBhIG11dGV4IHRvIHByb3RlY3QgaXQgKi8KLXN0YXRpYyBMSVNUX0hFQUQocGh5dGVyX2Nsb2Nrcyk7Ci1zdGF0aWMgREVGSU5FX01VVEVYKHBoeXRlcl9jbG9ja3NfbG9jayk7Ci0KIHN0YXRpYyB2b2lkIHJ4X3RpbWVzdGFtcF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7CiAKIC8qIGV4dGVuZGVkIHJlZ2lzdGVyIGFjY2VzcyBmdW5jdGlvbnMgKi8KQEAgLTk1MywxMyAmIzQzOzk0OCwxMiBAQCBzdGF0aWMgdm9pZCBkZWNvZGVfc3RhdHVzX2ZyYW1lKHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUgKmRwODM2NDAsCiAJfQogfQogCi1zdGF0aWMgdm9pZCBkcDgzNjQwX2Nsb2NrX2luaXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrLCBzdHJ1Y3QgbWlpX2J1cyAqYnVzKQomIzQzO3N0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfaW5pdChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2spCiB7Ci0JSU5JVF9MSVNUX0hFQUQoJmFtcDtjbG9jay0mZ3Q7bGlzdCk7Ci0JY2xvY2stJmd0O2J1cyA9IGJ1czsKIAltdXRleF9pbml0KCZhbXA7Y2xvY2stJmd0O2V4dHJlZ19sb2NrKTsKIAltdXRleF9pbml0KCZhbXA7Y2xvY2stJmd0O2Nsb2NrX2xvY2spOwogCUlOSVRfTElTVF9IRUFEKCZhbXA7Y2xvY2stJmd0O3BoeWxpc3QpOwomIzQzOwljbG9jay0mZ3Q7Y2Fwcy5waW5fY29uZmlnID0gY2xvY2stJmd0O3Bpbl9jb25maWc7CiAJY2xvY2stJmd0O2NhcHMub3duZXIgPSBUSElTX01PRFVMRTsKIAlzcHJpbnRmKGNsb2NrLSZndDtjYXBzLm5hbWUsICYjMzQ7ZHA4MzY0MCB0aW1lciYjMzQ7KTsKIAljbG9jay0mZ3Q7Y2Fwcy5tYXhfYWRqCT0gMTk1MzEyNDsKQEAgLTk3NywxNCAmIzQzOzk3MSw4IEBAIHN0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfaW5pdChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2ssIHN0cnVjdCBtaWlfYnVzICpidXMpCiAJY2xvY2stJmd0O2NhcHMuc2V0dGltZTY0CT0gcHRwX2RwODM2NDBfc2V0dGltZTsKIAljbG9jay0mZ3Q7Y2Fwcy5lbmFibGUJPSBwdHBfZHA4MzY0MF9lbmFibGU7CiAJY2xvY2stJmd0O2NhcHMudmVyaWZ5CT0gcHRwX2RwODM2NDBfdmVyaWZ5OwotCS8qCi0JICogQ29udmVydCB0aGUgbW9kdWxlIHBhcmFtIGRlZmF1bHRzIGludG8gYSBkeW5hbWljIHBpbiBjb25maWd1cmF0aW9uLgotCSAqLwomIzQzOwkvKiBJbml0aWFsaXplIHRoZSBydW50aW1lIHBpbiBjb25maWd1cmF0aW9uIGZyb20gZ3Bpb190YWIuICovCiAJZHA4MzY0MF9ncGlvX2RlZmF1bHRzKGNsb2NrLSZndDtjYXBzLnBpbl9jb25maWcpOwotCS8qCi0JICogR2V0IGEgcmVmZXJlbmNlIHRvIHRoaXMgYnVzIGluc3RhbmNlLgotCSAqLwotCWdldF9kZXZpY2UoJmFtcDtidXMtJmd0O2Rldik7CiB9CiAKIHN0YXRpYyBpbnQgY2hvb3NlX3RoaXNfcGh5KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaywKQEAgLTk5OSw1OCAmIzQzOzk4Nyw2IEBAIHN0YXRpYyBpbnQgY2hvb3NlX3RoaXNfcGh5KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaywKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpkcDgzNjQwX2Nsb2NrX2dldChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2spCi17Ci0JaWYgKGNsb2NrKQotCQltdXRleF9sb2NrKCZhbXA7Y2xvY2stJmd0O2Nsb2NrX2xvY2spOwotCXJldHVybiBjbG9jazsKLX0KLQotLyoKLSAqIExvb2sgdXAgYW5kIGxvY2sgYSBjbG9jayBieSBidXMgaW5zdGFuY2UuCi0gKiBJZiB0aGVyZSBpcyBubyBjbG9jayBmb3IgdGhpcyBidXMsIHRoZW4gY3JlYXRlIGl0IGZpcnN0LgotICovCi1zdGF0aWMgc3RydWN0IGRwODM2NDBfY2xvY2sgKmRwODM2NDBfY2xvY2tfZ2V0X2J1cyhzdHJ1Y3QgbWlpX2J1cyAqYnVzKQotewotCXN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jayA9IE5VTEwsICp0bXA7Ci0Jc3RydWN0IGxpc3RfaGVhZCAqdGhpczsKLQotCW11dGV4X2xvY2soJmFtcDtwaHl0ZXJfY2xvY2tzX2xvY2spOwotCi0JbGlzdF9mb3JfZWFjaCh0aGlzLCAmYW1wO3BoeXRlcl9jbG9ja3MpIHsKLQkJdG1wID0gbGlzdF9lbnRyeSh0aGlzLCBzdHJ1Y3QgZHA4MzY0MF9jbG9jaywgbGlzdCk7Ci0JCWlmICh0bXAtJmd0O2J1cyA9PSBidXMpIHsKLQkJCWNsb2NrID0gdG1wOwotCQkJYnJlYWs7Ci0JCX0KLQl9Ci0JaWYgKGNsb2NrKQotCQlnb3RvIG91dDsKLQotCWNsb2NrID0ga3phbGxvY19vYmooc3RydWN0IGRwODM2NDBfY2xvY2spOwotCWlmICghY2xvY2spCi0JCWdvdG8gb3V0OwotCi0JY2xvY2stJmd0O2NhcHMucGluX2NvbmZpZyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgcHRwX3Bpbl9kZXNjLAotCQkJCQkgICAgICBEUDgzNjQwX05fUElOUyk7Ci0JaWYgKCFjbG9jay0mZ3Q7Y2Fwcy5waW5fY29uZmlnKSB7Ci0JCWtmcmVlKGNsb2NrKTsKLQkJY2xvY2sgPSBOVUxMOwotCQlnb3RvIG91dDsKLQl9Ci0JZHA4MzY0MF9jbG9ja19pbml0KGNsb2NrLCBidXMpOwotCWxpc3RfYWRkX3RhaWwoJmFtcDtjbG9jay0mZ3Q7bGlzdCwgJmFtcDtwaHl0ZXJfY2xvY2tzKTsKLW91dDoKLQltdXRleF91bmxvY2soJmFtcDtwaHl0ZXJfY2xvY2tzX2xvY2spOwotCi0JcmV0dXJuIGRwODM2NDBfY2xvY2tfZ2V0KGNsb2NrKTsKLX0KLQotc3RhdGljIHZvaWQgZHA4MzY0MF9jbG9ja19wdXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrKQotewotCW11dGV4X3VubG9jaygmYW1wO2Nsb2NrLSZndDtjbG9ja19sb2NrKTsKLX0KLQogc3RhdGljIGludCBkcDgzNjQwX3NvZnRfcmVzZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIHsKIAlpbnQgcmV0OwpAQCAtMTQwMCwyMCAmIzQzOzEzMzYsMzEgQEAgc3RhdGljIGludCBkcDgzNjQwX3RzX2luZm8oc3RydWN0IG1paV90aW1lc3RhbXBlciAqbWlpX3RzLAogCiBzdGF0aWMgaW50IGRwODM2NDBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIHsKLQlzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2s7CiAJc3RydWN0IGRwODM2NDBfcHJpdmF0ZSAqZHA4MzY0MDsKLQlpbnQgZXJyID0gLUVOT01FTSwgaTsKJiM0MzsJc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrOwomIzQzOwlpbnQgZXJyLCBpOwogCiAJaWYgKHBoeWRldi0mZ3Q7bWRpby5hZGRyID09IEJST0FEQ0FTVF9BRERSKQogCQlyZXR1cm4gMDsKIAotCWNsb2NrID0gZHA4MzY0MF9jbG9ja19nZXRfYnVzKHBoeWRldi0mZ3Q7bWRpby5idXMpOwotCWlmICghY2xvY2spCi0JCWdvdG8gbm9fY2xvY2s7CiYjNDM7CWVyciA9IHBoeV9wYWNrYWdlX2pvaW4ocGh5ZGV2LCBCUk9BRENBU1RfQUREUiwgc2l6ZW9mKCpjbG9jaykpOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIGVycjsKJiM0MzsKJiM0MzsJY2xvY2sgPSBwaHlfcGFja2FnZV9nZXRfcHJpdihwaHlkZXYpOwomIzQzOwkvKiBFbnN1cmUgb3RoZXIgUEhZIHByb2JlcyB3YWl0IGZvciBzaGFyZWQgY2xvY2sgaW5pdGlhbGl6YXRpb24uICovCiYjNDM7CXBoeV9wYWNrYWdlX2xvY2socGh5ZGV2KTsKJiM0MzsJaWYgKHBoeV9wYWNrYWdlX3Byb2JlX29uY2UocGh5ZGV2KSkKJiM0MzsJCWRwODM2NDBfY2xvY2tfaW5pdChjbG9jayk7CiYjNDM7CXBoeV9wYWNrYWdlX3VubG9jayhwaHlkZXYpOwomIzQzOwomIzQzOwltdXRleF9sb2NrKCZhbXA7Y2xvY2stJmd0O2Nsb2NrX2xvY2spOwogCiAJZHA4MzY0MCA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUpOwotCWlmICghZHA4MzY0MCkKJiM0MzsJaWYgKCFkcDgzNjQwKSB7CiYjNDM7CQllcnIgPSAtRU5PTUVNOwogCQlnb3RvIG5vX21lbW9yeTsKJiM0MzsJfQogCiAJZHA4MzY0MC0mZ3Q7cGh5ZGV2ID0gcGh5ZGV2OwogCWRwODM2NDAtJmd0O21paV90cy5yeHRzdGFtcCA9IGRwODM2NDBfcnh0c3RhbXA7CkBAIC0xNDUwLDE1ICYjNDM7MTM5NywyMCBAQCBzdGF0aWMgaW50IGRwODM2NDBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIAl9IGVsc2UKIAkJbGlzdF9hZGRfdGFpbCgmYW1wO2RwODM2NDAtJmd0O2xpc3QsICZhbXA7Y2xvY2stJmd0O3BoeWxpc3QpOwogCi0JZHA4MzY0MF9jbG9ja19wdXQoY2xvY2spOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtjbG9jay0mZ3Q7Y2xvY2tfbG9jayk7CiYjNDM7CiAJcmV0dXJuIDA7CiAKIG5vX3JlZ2lzdGVyOgogCWNsb2NrLSZndDtjaG9zZW4gPSBOVUxMOwomIzQzOwljbG9jay0mZ3Q7cHRwX2Nsb2NrID0gTlVMTDsKJiM0MzsJcGh5ZGV2LSZndDtkZWZhdWx0X3RpbWVzdGFtcCA9IGZhbHNlOwomIzQzOwlwaHlkZXYtJmd0O21paV90cyA9IE5VTEw7CiYjNDM7CXBoeWRldi0mZ3Q7cHJpdiA9IE5VTEw7CiAJa2ZyZWUoZHA4MzY0MCk7CiBub19tZW1vcnk6Ci0JZHA4MzY0MF9jbG9ja19wdXQoY2xvY2spOwotbm9fY2xvY2s6CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2Nsb2NrLSZndDtjbG9ja19sb2NrKTsKJiM0MzsJcGh5X3BhY2thZ2VfbGVhdmUocGh5ZGV2KTsKIAlyZXR1cm4gZXJyOwogfQogCkBAIC0xNDY3LDcgJiM0MzsxNDE5LDYgQEAgc3RhdGljIHZvaWQgZHA4MzY0MF9yZW1vdmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIAlzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2s7CiAJc3RydWN0IGxpc3RfaGVhZCAqdGhpcywgKm5leHQ7CiAJc3RydWN0IGRwODM2NDBfcHJpdmF0ZSAqdG1wLCAqZHA4MzY0MCA9IHBoeWRldi0mZ3Q7cHJpdjsKLQlib29sIHJlbW92ZV9jbG9jayA9IGZhbHNlOwogCiAJaWYgKHBoeWRldi0mZ3Q7bWRpby5hZGRyID09IEJST0FEQ0FTVF9BRERSKQogCQlyZXR1cm47CkBAIC0xNDgwLDcgJiM0MzsxNDMxLDggQEAgc3RhdGljIHZvaWQgZHA4MzY0MF9yZW1vdmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIAlza2JfcXVldWVfcHVyZ2UoJmFtcDtkcDgzNjQwLSZndDtyeF9xdWV1ZSk7CiAJc2tiX3F1ZXVlX3B1cmdlKCZhbXA7ZHA4MzY0MC0mZ3Q7dHhfcXVldWUpOwogCi0JY2xvY2sgPSBkcDgzNjQwX2Nsb2NrX2dldChkcDgzNjQwLSZndDtjbG9jayk7CiYjNDM7CWNsb2NrID0gZHA4MzY0MC0mZ3Q7Y2xvY2s7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtjbG9jay0mZ3Q7Y2xvY2tfbG9jayk7CiAKIAlpZiAoZHA4MzY0MCA9PSBjbG9jay0mZ3Q7Y2hvc2VuKSB7CiAJCXB0cF9jbG9ja191bnJlZ2lzdGVyKGNsb2NrLSZndDtwdHBfY2xvY2spOwpAQCAtMTQ5NSwyMyAmIzQzOzE0NDcsMTAgQEAgc3RhdGljIHZvaWQgZHA4MzY0MF9yZW1vdmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIAkJfQogCX0KIAotCWlmICghY2xvY2stJmd0O2Nob3NlbiAmYW1wOyZhbXA7IGxpc3RfZW1wdHkoJmFtcDtjbG9jay0mZ3Q7cGh5bGlzdCkpCi0JCXJlbW92ZV9jbG9jayA9IHRydWU7Ci0KLQlkcDgzNjQwX2Nsb2NrX3B1dChjbG9jayk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2Nsb2NrLSZndDtjbG9ja19sb2NrKTsKIAlrZnJlZShkcDgzNjQwKTsKIAotCWlmIChyZW1vdmVfY2xvY2spIHsKLQkJbXV0ZXhfbG9jaygmYW1wO3BoeXRlcl9jbG9ja3NfbG9jayk7Ci0JCWxpc3RfZGVsKCZhbXA7Y2xvY2stJmd0O2xpc3QpOwotCQltdXRleF91bmxvY2soJmFtcDtwaHl0ZXJfY2xvY2tzX2xvY2spOwotCi0JCW11dGV4X2Rlc3Ryb3koJmFtcDtjbG9jay0mZ3Q7ZXh0cmVnX2xvY2spOwotCQltdXRleF9kZXN0cm95KCZhbXA7Y2xvY2stJmd0O2Nsb2NrX2xvY2spOwotCQlwdXRfZGV2aWNlKCZhbXA7Y2xvY2stJmd0O2J1cy0mZ3Q7ZGV2KTsKLQkJa2ZyZWUoY2xvY2stJmd0O2NhcHMucGluX2NvbmZpZyk7Ci0JCWtmcmVlKGNsb2NrKTsKLQl9CiYjNDM7CXBoeV9wYWNrYWdlX2xlYXZlKHBoeWRldik7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkcDgzNjQwX2RyaXZlcltdID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYwppbmRleCAxNmFlOGQxYzFmODlhLi43MzU4MDZjNWJlYTg4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYwpAQCAtNTIsNiAmIzQzOzUyLDI5IEBAIHZvaWQgKnBoeV9wYWNrYWdlX2dldF9wcml2KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiB9CiBFWFBPUlRfU1lNQk9MX0dQTChwaHlfcGFja2FnZV9nZXRfcHJpdik7CiAKJiM0MzsvKioKJiM0MzsgKiBwaHlfcGFja2FnZV9sb2NrIC0gYWNxdWlyZSB0aGUgUEhZIHBhY2thZ2UgbG9jawomIzQzOyAqIEBwaHlkZXY6IFBIWSBkZXZpY2UgdGhhdCBoYXMgam9pbmVkIHRoZSBwYWNrYWdlCiYjNDM7ICoKJiM0MzsgKiBVc2UgdGhpcyB0byBzZXJpYWxpemUgYWNjZXNzIHRvIHBhY2thZ2UtcHJpdmF0ZSBkYXRhLiBSZWxlYXNlIHRoZSBsb2NrCiYjNDM7ICogd2l0aCBwaHlfcGFja2FnZV91bmxvY2soKS4KJiM0MzsgKi8KJiM0Mzt2b2lkIHBoeV9wYWNrYWdlX2xvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKJiM0Mzt7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtwaHlkZXYtJmd0O21kaW8uYnVzLSZndDtzaGFyZWRfbG9jayk7CiYjNDM7fQomIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHBoeV9wYWNrYWdlX2xvY2spOwomIzQzOwomIzQzOy8qKgomIzQzOyAqIHBoeV9wYWNrYWdlX3VubG9jayAtIHJlbGVhc2UgdGhlIFBIWSBwYWNrYWdlIGxvY2sKJiM0MzsgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHRoYXQgaGFzIGpvaW5lZCB0aGUgcGFja2FnZQomIzQzOyAqLwomIzQzO3ZvaWQgcGh5X3BhY2thZ2VfdW5sb2NrKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiYjNDM7ewomIzQzOwltdXRleF91bmxvY2soJmFtcDtwaHlkZXYtJmd0O21kaW8uYnVzLSZndDtzaGFyZWRfbG9jayk7CiYjNDM7fQomIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHBoeV9wYWNrYWdlX3VubG9jayk7CiYjNDM7CiBzdGF0aWMgaW50IHBoeV9wYWNrYWdlX2FkZHJlc3Moc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwKIAkJCSAgICAgICB1bnNpZ25lZCBpbnQgYWRkcl9vZmZzZXQpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGliLmggYi9kcml2ZXJzL25ldC9waHkvcGh5bGliLmgKaW5kZXggMGZiYTI0NWY5NzQ1OC4uYzZlMjZhYzZiMjhmMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaWIuaApAQCAtMTIsNiAmIzQzOzEyLDggQEAgc3RydWN0IG1paV9idXM7CiAKIHN0cnVjdCBkZXZpY2Vfbm9kZSAqcGh5X3BhY2thZ2VfZ2V0X25vZGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7CiB2b2lkICpwaHlfcGFja2FnZV9nZXRfcHJpdihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTsKJiM0Mzt2b2lkIHBoeV9wYWNrYWdlX2xvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7CiYjNDM7dm9pZCBwaHlfcGFja2FnZV91bmxvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7CiBpbnQgX19waHlfcGFja2FnZV9yZWFkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHVuc2lnbmVkIGludCBhZGRyX29mZnNldCwKIAkJICAgICAgIHUzMiByZWdudW0pOwogaW50IF9fcGh5X3BhY2thZ2Vfd3JpdGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdW5zaWduZWQgaW50IGFkZHJfb2Zmc2V0LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9wdHAvS2NvbmZpZyBiL2RyaXZlcnMvcHRwL0tjb25maWcKaW5kZXggYjkzNjQwY2EwOGI3Mi4uZmViNTBmOGNjNDA2YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9wdHAvS2NvbmZpZwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3B0cC9LY29uZmlnCkBAIC03OCw2ICYjNDM7NzgsNyBAQCBjb25maWcgRFA4MzY0MF9QSFkKIAlkZXBlbmRzIG9uIFBIWUxJQgogCWRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0sKIAlzZWxlY3QgQ1JDMzIKJiM0MzsJc2VsZWN0IFBIWV9QQUNLQUdFCiAJaGVscAogCSAgU3VwcG9ydHMgdGhlIERQODM2NDAgUEhZVEVSIHdpdGggSUVFRSAxNTg4IGZlYXR1cmVzLgogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNjo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDc4CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRFA4MzY0MCBQSFkgRHJpdmVyIE1vZGlmaWNhdGlvbioqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGRpZ2dpbmcgaW50byB0aGUgYGRwODM2NDBgIFBIWSBkcml2ZXIsIHNwZWNpZmljYWxseSBtZXNzaW5nIHdpdGggaG93IHRoZSBgZHA4MzY0MF9jbG9ja2Agc3RydWN0dXJlIGlzIGhhbmRsZWQuIEl0JiMzOTtzIGFsc28gdG91Y2hpbmcgdGhlIGBwaHlfcGFja2FnZWAgY29yZSBjb2RlLCB3aGljaCBpcyBpbnRlcmVzdGluZyBiZWNhdXNlIHRoYXQmIzM5O3Mgd2hlcmUgc2hhcmVkIFBIWSByZXNvdXJjZXMgYXJlIG1hbmFnZWQuCgpQcmV2aW91c2x5LCB0aGUgYGRwODM2NDBfY2xvY2tgIHdhcyBhbGxvY2F0ZWQgd2l0aCBga3phbGxvY2AgYW5kIHRvc3NlZCBpbnRvIGEgZ2xvYmFsIGxpc3QsIGBwaHl0ZXJfY2xvY2tzYC4gQSBnbG9iYWwgbGlzdCBpcyBmaW5lLCBidXQgaXQgY2FuIGJlIHByb2JsZW1hdGljIHdpdGggdGhyZWFkaW5nLCBhbmQgZ2VuZXJhbGx5IG1ha2VzIGNvZGUgaGFyZGVyIHRvIGZvbGxvdy4gTm93LCB0aGUgcGF0Y2ggaXMgc3dhcHBpbmcgdGhhdCBvdXQgZm9yIGBwaHlfcGFja2FnZV9qb2luYCBhbmQgYHBoeV9wYWNrYWdlX2dldF9wcml2YCBmb3IgbWFuYWdpbmcgdGhlIHNoYXJlZCBjbG9jay4gVGhhdCYjMzk7cyBhIGdvb2QgYXBwcm9hY2ggZm9yIHJlc291cmNlIHNoYXJpbmcgYW1vbmcgZGV2aWNlcywgYXMgaXQgd2lsbCByZWR1Y2UgcmVkdW5kYW5jeS4KClRoZSBvdGhlciBjaGFuZ2UgaXMgdGhhdCB0aGUgYHBpbl9jb25maWdgIGFycmF5LCB3aGljaCB1c2VkIHRvIGJlIGBremFsbG9jYC1lZCwgaXMgbm93IGVtYmVkZGVkIGRpcmVjdGx5IHdpdGhpbiB0aGUgYHN0cnVjdCBkcDgzNjQwX2Nsb2NrYCBhcyBgc3RydWN0IHB0cF9waW5fZGVzYyBwaW5fY29uZmlnW0RQODM2NDBfTl9QSU5TXWAuIFNvIHdlIGFyZSByZW1vdmluZyB0aGUgYWxsb2NhdGlvbiBhbmQgbWFuYWdlbWVudCBvZiBhIGRlZGljYXRlZCBhcnJheSwgYXMgdGhlIGFycmF5IGlzIGluY2x1ZGVkIHdpdGhpbiB0aGUgc3RydWN0IGFuZCBzbyBpdCBpcyBhbGxvY2F0ZWQgYW5kIGZyZWVkIHdpdGggdGhlIHN0cnVjdC4gVGhpcyBzZWVtcyBjbGVhbmVyIGFuZCBsZXNzIHByb25lIHRvIG1lbW9yeSBsZWFrcyBpZiBkb25lIGNvcnJlY3RseS4KCk5vdywgYSByZWQgZmxhZyBqdXN0IHdlbnQgdXAgaW4gbXkgaGVhZC4gV2hlbmV2ZXIgSSBzZWUgYWxsb2NhdGlvbiBjaGFuZ2VzLCB0aGUgZmlyc3QgdGhpbmcgSSBkbyBpcyBjaGVjayBmb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIFdlIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYHBoeV9wYWNrYWdlX2pvaW5gLCB3aGVuIGl0IGFsbG9jYXRlcyBtZW1vcnkgZm9yIHRoZSBzaGFyZWQgZGF0YSwgYWN0dWFsbHkgKnplcm9zKiB0aGF0IG1lbW9yeS4gSWYgaXQgZG9lc24mIzM5O3QsIHdlJiMzOTtyZSBzdGFyaW5nIGRvd24gdGhlIGJhcnJlbCBvZiBhIHBvdGVudGlhbCBzZWN1cml0eSB2dWxuZXJhYmlsaXR5IG9yLCBhdCB0aGUgdmVyeSBsZWFzdCwgdW5wcmVkaWN0YWJsZSBiZWhhdmlvci4gTGV0JiMzOTtzIGdvIGFuZCBjaGVjayB0aGUgaW1wbGVtZW50YXRpb24gb2YgYHBoeV9wYWNrYWdlX2pvaW5gIGltbWVkaWF0ZWx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNjo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlfcGFja2FnZV9qb2luJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvYmNtNTQxNDAuYz01ODA9c3RhdGljIGludCBiY201NDE0MF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY201NDE0MC5jLTU5NC1cbmRyaXZlcnMvbmV0L3BoeS9iY201NDE0MC5jOjU5NTpcdGRldm1fcGh5X3BhY2thZ2Vfam9pbihcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYsIHBoeWRldiwgcHJpdi1cdTAwM2ViYXNlX2FkZHIsIDApO1xuZHJpdmVycy9uZXQvcGh5L2JjbTU0MTQwLmMtNTk2LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM9MTMzNz1zdGF0aWMgaW50IGRwODM2NDBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTEzNDUtXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jOjEzNDY6XHRlcnIgPSBwaHlfcGFja2FnZV9qb2luKHBoeWRldiwgQlJPQURDQVNUX0FERFIsIHNpemVvZigqY2xvY2spKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTM0Ny1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYz0xMzY0PXN0YXRpYyBpbnQgbXQ3OTg4X3BoeV9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmMtMTM3Mi1cbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmM6MTM3MzpcdGVyciA9IGRldm1fcGh5X3BhY2thZ2Vfam9pbihcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYsIHBoeWRldiwgMCxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmMtMTM3NC1cdFx0XHRcdCAgICBzaXplb2Yoc3RydWN0IG10a19zb2NwaHlfc2hhcmVkKSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JlbC5jPTQ2ODg9c3RhdGljIGludCBsYW44ODE0X3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JlbC5jLTQ3MDgtXHRhZGRyID0gbGFucGh5X3JlYWRfcGFnZV9yZWcocGh5ZGV2LCBMQU44ODE0X1BBR0VfQ09NTU9OX1JFR1MsIDApIFx1MDAyNiAweDFGO1xuZHJpdmVycy9uZXQvcGh5L21pY3JlbC5jOjQ3MDk6XHRkZXZtX3BoeV9wYWNrYWdlX2pvaW4oXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2LCBwaHlkZXYsXG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmMtNDcxMC1cdFx0XHQgICAgICBhZGRyLCBzaXplb2Yoc3RydWN0IGxhbjg4MTRfc2hhcmVkX3ByaXYpKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmM9NjEwMD1zdGF0aWMgaW50IGxhbjg4NDJfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmMtNjE1MS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYzo2MTUyOlx0cmV0ID0gZGV2bV9waHlfcGFja2FnZV9qb2luKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldiwgcGh5ZGV2LCBhZGRyLFxuZHJpdmVycy9uZXQvcGh5L21pY3JlbC5jLTYxNTMtXHRcdFx0XHQgICAgc2l6ZW9mKHN0cnVjdCBsYW44ODE0X3NoYXJlZF9wcml2KSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmM9MjI0MT1zdGF0aWMgaW50IHZzYzg1eHhfcHJvYmVfY29tbW9uKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4tLVxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMjI2Ni1cdFx0dnNjODU4NF9nZXRfYmFzZV9hZGRyKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYzoyMjY3Olx0XHRyZXQgPSBkZXZtX3BoeV9wYWNrYWdlX2pvaW4oXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2LCBwaHlkZXYsXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYy0yMjY4LVx0XHRcdFx0XHQgICAgdnNjODUzMS1cdTAwM2ViYXNlX2FkZHIsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMjItICogUmVwcmVzZW50cyBhIHNoYXJlZCBzdHJ1Y3R1cmUgYmV0d2VlbiBkaWZmZXJlbnQgcGh5ZGV2JiMzOTtzIGluIHRoZSBzYW1lXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzoyMzogKiBwYWNrYWdlLCBmb3IgZXhhbXBsZSBhIHF1YWQgUEhZLiBTZWUgcGh5X3BhY2thZ2Vfam9pbigpIGFuZFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMjQtICogcGh5X3BhY2thZ2VfbGVhdmUoKS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYz0yNj1zdHJ1Y3QgcGh5X3BhY2thZ2Vfc2hhcmVkIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0zNi1cdCAqIHRoZSB1c2VyIGhhcyB0byB0YWtlIGNhcmUgb2YgYXBwcm9wcmlhdGUgbG9ja2luZy4gSXQgaXMgYWxsb2NhdGVkXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzozNzpcdCAqIGFuZCBmcmVlZCBhdXRvbWF0aWNhbGx5IGJ5IHBoeV9wYWNrYWdlX2pvaW4oKSBhbmRcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTM4LVx0ICogcGh5X3BhY2thZ2VfbGVhdmUoKS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYz0yMDI9RVhQT1JUX1NZTUJPTF9HUEwocGh5X3BhY2thZ2VfcHJvYmVfb25jZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMjA0LS8qKlxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmM6MjA1OiAqIHBoeV9wYWNrYWdlX2pvaW4gLSBqb2luIGEgY29tbW9uIFBIWSBncm91cFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMjA2LSAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTIyOC0gKlxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmM6MjI5OiAqIFJldHVybnMgXHUwMDNjIDEgb24gZXJyb3IsIDAgb24gc3VjY2Vzcy4gRXNwLiBjYWxsaW5nIHBoeV9wYWNrYWdlX2pvaW4oKVxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMjMwLSAqIHdpdGggdGhlIHNhbWUgY29va2llIGJ1dCBhIGRpZmZlcmVudCBwcml2X3NpemUgaXMgYW4gZXJyb3IuXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0yMzEtICovXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzoyMzI6aW50IHBoeV9wYWNrYWdlX2pvaW4oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGJhc2VfYWRkciwgc2l6ZV90IHByaXZfc2l6ZSlcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTIzMy17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMjc1LX1cbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jOjI3NjpFWFBPUlRfU1lNQk9MX0dQTChwaHlfcGFja2FnZV9qb2luKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTI3Ny1cbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTI3OC0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jOjI3OTogKiBvZl9waHlfcGFja2FnZV9qb2luIC0gam9pbiBhIGNvbW1vbiBQSFkgZ3JvdXAgaW4gUEhZIHBhY2thZ2VcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTI4MC0gKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3Rcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0yODItICpcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jOjI4MzogKiBUaGlzIGlzIGEgdmFyaWFudCBvZiBwaHlfcGFja2FnZV9qb2luIGZvciBQSFkgcGFja2FnZSBkZWZpbmVkIGluIERULlxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMjg0LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMjg2LSAqIHN0cnVjdHVyZSAoYnkgbWF0Y2hpbmcgdGhlIG5vZGUgbmFtZSBcJiMzNDtldGhlcm5ldC1waHktcGFja2FnZVwmIzM0OykgYW5kIHRoZVxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmM6Mjg3OiAqIGJhc2VfYWRkciBmb3IgdGhlIFBIWSBwYWNrYWdlIGlzIHBhc3NlZCB0byBwaHlfcGFja2FnZV9qb2luLlxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMjg4LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMjkyLSAqXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzoyOTM6ICogUmV0dXJucyBcdTAwM2MgMCBvbiBlcnJvciwgMCBvbiBzdWNjZXNzLiBFc3AuIGNhbGxpbmcgcGh5X3BhY2thZ2Vfam9pbigpXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0yOTQtICogd2l0aCB0aGUgc2FtZSBjb29raWUgYnV0IGEgZGlmZmVyZW50IHByaXZfc2l6ZSBpcyBhbiBlcnJvci4gT3IgYSBwYXJlbnRcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0yOTctICovXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzoyOTg6aW50IG9mX3BoeV9wYWNrYWdlX2pvaW4oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgc2l6ZV90IHByaXZfc2l6ZSlcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTI5OS17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMzIxLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmM6MzIyOlx0cmV0ID0gcGh5X3BhY2thZ2Vfam9pbihwaHlkZXYsIGJhc2VfYWRkciwgcHJpdl9zaXplKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTMyMy1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMzMyLX1cbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jOjMzMzpFWFBPUlRfU1lNQk9MX0dQTChvZl9waHlfcGFja2FnZV9qb2luKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTMzNC1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0zMzgtICpcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jOjMzOTogKiBUaGlzIGxlYXZlcyBhIFBIWSBncm91cCBjcmVhdGVkIGJ5IHBoeV9wYWNrYWdlX2pvaW4oKS4gSWYgdGhpcyBwaHlkZXZcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTM0MC0gKiB3YXMgdGhlIGxhc3QgdXNlciBvZiB0aGUgc2hhcmVkIGRhdGEgYmV0d2VlbiB0aGUgZ3JvdXAsIHRoaXMgZGF0YSBpc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jPTM2Nj1zdGF0aWMgdm9pZCBkZXZtX3BoeV9wYWNrYWdlX2xlYXZlKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcmVzKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTM3MS0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jOjM3MjogKiBkZXZtX3BoeV9wYWNrYWdlX2pvaW4gLSByZXNvdXJjZSBtYW5hZ2VkIHBoeV9wYWNrYWdlX2pvaW4oKVxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMzczLSAqIEBkZXY6IGRldmljZSB0aGF0IGlzIHJlZ2lzdGVyaW5nIHRoaXMgUEhZIHBhY2thZ2Vcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0zNzgtICpcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jOjM3OTogKiBNYW5hZ2VkIHBoeV9wYWNrYWdlX2pvaW4oKS4gU2hhcmVkIHN0b3JhZ2UgZmV0Y2hlZCBieSB0aGlzIGZ1bmN0aW9uLFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMzgwLSAqIHBoeV9wYWNrYWdlX2xlYXZlKCkgaXMgYXV0b21hdGljYWxseSBjYWxsZWQgb24gZHJpdmVyIGRldGFjaC4gU2VlXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzozODE6ICogcGh5X3BhY2thZ2Vfam9pbigpIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMzgyLSAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmM6MzgzOmludCBkZXZtX3BoeV9wYWNrYWdlX2pvaW4oc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMzg0LVx0XHRcdCAgaW50IGJhc2VfYWRkciwgc2l6ZV90IHByaXZfc2l6ZSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0zOTMtXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzozOTQ6XHRyZXQgPSBwaHlfcGFja2FnZV9qb2luKHBoeWRldiwgYmFzZV9hZGRyLCBwcml2X3NpemUpO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMzk1LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTQwNC19XG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzo0MDU6RVhQT1JUX1NZTUJPTF9HUEwoZGV2bV9waHlfcGFja2FnZV9qb2luKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTQwNi1cbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTQwNy0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jOjQwODogKiBkZXZtX29mX3BoeV9wYWNrYWdlX2pvaW4gLSByZXNvdXJjZSBtYW5hZ2VkIG9mX3BoeV9wYWNrYWdlX2pvaW4oKVxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtNDA5LSAqIEBkZXY6IGRldmljZSB0aGF0IGlzIHJlZ2lzdGVyaW5nIHRoaXMgUEhZIHBhY2thZ2Vcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy00MTItICpcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jOjQxMzogKiBNYW5hZ2VkIG9mX3BoeV9wYWNrYWdlX2pvaW4oKS4gU2hhcmVkIHN0b3JhZ2UgZmV0Y2hlZCBieSB0aGlzIGZ1bmN0aW9uLFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtNDE0LSAqIHBoeV9wYWNrYWdlX2xlYXZlKCkgaXMgYXV0b21hdGljYWxseSBjYWxsZWQgb24gZHJpdmVyIGRldGFjaC4gU2VlXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzo0MTU6ICogb2ZfcGh5X3BhY2thZ2Vfam9pbigpIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtNDE2LSAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmM6NDE3OmludCBkZXZtX29mX3BoeV9wYWNrYWdlX2pvaW4oc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtNDE4LVx0XHRcdCAgICAgc2l6ZV90IHByaXZfc2l6ZSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy00MjctXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzo0Mjg6XHRyZXQgPSBvZl9waHlfcGFja2FnZV9qb2luKHBoeWRldiwgcHJpdl9zaXplKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTQyOS1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy00MzgtfVxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmM6NDM5OkVYUE9SVF9TWU1CT0xfR1BMKGRldm1fb2ZfcGh5X3BhY2thZ2Vfam9pbik7XG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy00NDAtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oPTI4PWJvb2wgcGh5X3BhY2thZ2VfcHJvYmVfb25jZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWIuaDoyOTppbnQgcGh5X3BhY2thZ2Vfam9pbihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgYmFzZV9hZGRyLCBzaXplX3QgcHJpdl9zaXplKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWIuaDozMDppbnQgb2ZfcGh5X3BhY2thZ2Vfam9pbihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBzaXplX3QgcHJpdl9zaXplKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWIuaC0zMS12b2lkIHBoeV9wYWNrYWdlX2xlYXZlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oOjMyOmludCBkZXZtX3BoeV9wYWNrYWdlX2pvaW4oc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oLTMzLVx0XHRcdCAgaW50IGJhc2VfYWRkciwgc2l6ZV90IHByaXZfc2l6ZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGliLmg6MzQ6aW50IGRldm1fb2ZfcGh5X3BhY2thZ2Vfam9pbihzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLmgtMzUtXHRcdFx0ICAgICBzaXplX3QgcHJpdl9zaXplKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM9Njk0PXN0YXRpYyBpbnQgcWNhODA3eF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy03MDEtXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6NzAyOlx0cmV0ID0gZGV2bV9vZl9waHlfcGFja2FnZV9qb2luKGRldiwgcGh5ZGV2LCBzaXplb2YoKnNoYXJlZF9wcml2KSk7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNzAzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0yMzYyPXN0YXRpYyBpbnQgcnRsODIyNF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTIzNjQtXHQvKiBDaGlwIGV4cG9zZXMgNCBwb3J0cywgam9pbiBhbGwgb2YgdGhlbSBpbiB0aGUgc2FtZSBwYWNrYWdlICovXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyMzY1Olx0cmV0dXJuIGRldm1fcGh5X3BhY2thZ2Vfam9pbihcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYsIHBoeWRldixcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTIzNjYtXHRcdFx0XHQgICAgIHBoeWRldi1cdTAwM2VtZGlvLmFkZHIgXHUwMDI2IH4zLCAwKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTY6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTY5NAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkludmVzdGlnYXRpbmcgYHBoeV9wYWNrYWdlX2pvaW5gKioKCkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbi4gQmFzZWQgb24gdGhlIGNvbnRleHQsIEkmIzM5O20gZ29pbmcgdG8gaGVhZCBkaXJlY3RseSB0byB0aGUgc291cmNlIGNvZGUuIExldCYjMzk7cyBzdGFydCB3aXRoIGBwaHlfcGFja2FnZV9qb2luYCwgYW5kIHNwZWNpZmljYWxseSwgSSYjMzk7bGwgYmUgbG9va2luZyBpbiB0aGUgYGRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jYCBmaWxlLiBJJiMzOTttIGdvaW5nIHRvIGFzc3VtZSB0aGVyZSBpcyBhIHNwZWNpZmljIHJlYXNvbiBmb3IgZXhhbWluaW5nIHRoaXMgZnVuY3Rpb24gbm93LCBwZXJoYXBzIGEgYnVnIHJlcG9ydCBvciBwZXJmb3JtYW5jZSBpc3N1ZSByZWxhdGVkIHRvIFBIWSBwYWNrYWdlIG1hbmFnZW1lbnQuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSB3aXRoaW4gdGhlIGJyb2FkZXIgUEhZIGRyaXZlciBmcmFtZXdvcmsuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGFueSBwb3RlbnRpYWwgc3luY2hyb25pemF0aW9uIGlzc3VlcywgcmVzb3VyY2UgY29udGVudGlvbiwgZXJyb3IgaGFuZGxpbmcsIGFuZCBnZW5lcmFsIGVmZmljaWVuY3kuIE15IGltbWVkaWF0ZSBnb2FscyBhcmUgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93LCBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQsIGFuZCBhbnkgcG90ZW50aWFsIGJvdHRsZW5lY2tzLiBJJiMzOTtsbCBwcm9iYWJseSBiZSBjcm9zcy1yZWZlcmVuY2luZyB0aGlzIGZ1bmN0aW9uIHdpdGggb3RoZXIgcmVsYXRlZCBQSFkgZHJpdmVyIGZ1bmN0aW9ucyBhcyBJIGdvLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNjo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjIwOlx0ICogVGhlIGFkZHJlc3Mgd2hpY2ggaXMgZ2l2ZW4gaGVyZSwgd2lsbCBiZSB1c2VkIGluIHRoZSBfX3BoeV9wYWNrYWdlX3JlYWQoKVxuIDIyMTpcdCAqIGFuZCBfX3BoeV9wYWNrYWdlX3dyaXRlKCkgY29udmVuaWVuY2UgZnVuY3Rpb25zIGFzIGJhc2UgYW5kIGFkZGVkIHRvIHRoZVxuIDIyMjpcdCAqIHBhc3NlZCBvZmZzZXQgaW4gdGhvc2UgZnVuY3Rpb25zLlxuIDIyMzpcdCAqXG4gMjI0Olx0ICogVGhpcyB3aWxsIHNldCB0aGUgc2hhcmVkIHBvaW50ZXIgb2YgdGhlIHBoeWRldiB0byB0aGUgc2hhcmVkIHN0b3JhZ2UuXG4gMjI1Olx0ICogSWYgdGhpcyBpcyB0aGUgZmlyc3QgY2FsbCBmb3IgYSB0aGlzIGNvb2tpZSB0aGUgc2hhcmVkIHN0b3JhZ2Ugd2lsbCBiZVxuIDIyNjpcdCAqIGFsbG9jYXRlZC4gSWYgcHJpdl9zaXplIGlzIG5vbi16ZXJvLCB0aGUgZ2l2ZW4gYW1vdW50IG9mIGJ5dGVzIGFyZVxuIDIyNzpcdCAqIGFsbG9jYXRlZCBmb3IgdGhlIHByaXYgbWVtYmVyLlxuIDIyODpcdCAqXG4gMjI5Olx0ICogUmV0dXJucyBcdTAwM2MgMSBvbiBlcnJvciwgMCBvbiBzdWNjZXNzLiBFc3AuIGNhbGxpbmcgcGh5X3BhY2thZ2Vfam9pbigpXG4gMjMwOlx0ICogd2l0aCB0aGUgc2FtZSBjb29raWUgYnV0IGEgZGlmZmVyZW50IHByaXZfc2l6ZSBpcyBhbiBlcnJvci5cbiAyMzE6XHQgKi9cbiAyMzI6XHRpbnQgcGh5X3BhY2thZ2Vfam9pbihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgYmFzZV9hZGRyLCBzaXplX3QgcHJpdl9zaXplKVxuIDIzMzpcdHtcbiAyMzQ6XHRcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwaHlkZXYtXHUwMDNlbWRpby5idXM7XG4gMjM1Olx0XHRzdHJ1Y3QgcGh5X3BhY2thZ2Vfc2hhcmVkICpzaGFyZWQ7XG4gMjM2Olx0XHRpbnQgcmV0O1xuIDIzNzpcdFxuIDIzODpcdFx0aWYgKGJhc2VfYWRkciBcdTAwM2MgMCB8fCBiYXNlX2FkZHIgXHUwMDNlPSBQSFlfTUFYX0FERFIpXG4gMjM5Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDI0MDpcdFxuIDI0MTpcdFx0bXV0ZXhfbG9jayhcdTAwMjZidXMtXHUwMDNlc2hhcmVkX2xvY2spO1xuIDI0MjpcdFx0c2hhcmVkID0gYnVzLVx1MDAzZXNoYXJlZFtiYXNlX2FkZHJdO1xuIDI0MzpcdFx0aWYgKCFzaGFyZWQpIHtcbiAyNDQ6XHRcdFx0cmV0ID0gLUVOT01FTTtcbiAyNDU6XHRcdFx0c2hhcmVkID0ga3phbGxvY19vYmooKnNoYXJlZCk7XG4gMjQ2Olx0XHRcdGlmICghc2hhcmVkKVxuIDI0NzpcdFx0XHRcdGdvdG8gZXJyX3VubG9jaztcbiAyNDg6XHRcdFx0aWYgKHByaXZfc2l6ZSkge1xuIDI0OTpcdFx0XHRcdHNoYXJlZC1cdTAwM2Vwcml2ID0ga3phbGxvYyhwcml2X3NpemUsIEdGUF9LRVJORUwpO1xuIDI1MDpcdFx0XHRcdGlmICghc2hhcmVkLVx1MDAzZXByaXYpXG4gMjUxOlx0XHRcdFx0XHRnb3RvIGVycl9mcmVlO1xuIDI1MjpcdFx0XHRcdHNoYXJlZC1cdTAwM2Vwcml2X3NpemUgPSBwcml2X3NpemU7XG4gMjUzOlx0XHRcdH1cbiAyNTQ6XHRcdFx0c2hhcmVkLVx1MDAzZWJhc2VfYWRkciA9IGJhc2VfYWRkcjtcbiAyNTU6XHRcdFx0c2hhcmVkLVx1MDAzZW5wID0gTlVMTDtcbiAyNTY6XHRcdFx0cmVmY291bnRfc2V0KFx1MDAyNnNoYXJlZC1cdTAwM2VyZWZjbnQsIDEpO1xuIDI1NzpcdFx0XHRidXMtXHUwMDNlc2hhcmVkW2Jhc2VfYWRkcl0gPSBzaGFyZWQ7XG4gMjU4Olx0XHR9IGVsc2Uge1xuIDI1OTpcdFx0XHRyZXQgPSAtRUlOVkFMO1xuIDI2MDpcdFx0XHRpZiAocHJpdl9zaXplIFx1MDAyNlx1MDAyNiBwcml2X3NpemUgIT0gc2hhcmVkLVx1MDAzZXByaXZfc2l6ZSlcbiAyNjE6XHRcdFx0XHRnb3RvIGVycl91bmxvY2s7XG4gMjYyOlx0XHRcdHJlZmNvdW50X2luYyhcdTAwMjZzaGFyZWQtXHUwMDNlcmVmY250KTtcbiAyNjM6XHRcdH1cbiAyNjQ6XHRcdG11dGV4X3VubG9jayhcdTAwMjZidXMtXHUwMDNlc2hhcmVkX2xvY2spO1xuIDI2NTpcdFxuIDI2NjpcdFx0cGh5ZGV2LVx1MDAzZXNoYXJlZCA9IHNoYXJlZDtcbiAyNjc6XHRcbiAyNjg6XHRcdHJldHVybiAwO1xuIDI2OTpcdFxuIDI3MDpcdGVycl9mcmVlOlxuIDI3MTpcdFx0a2ZyZWUoc2hhcmVkKTtcbiAyNzI6XHRlcnJfdW5sb2NrOlxuIDI3MzpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmJ1cy1cdTAwM2VzaGFyZWRfbG9jayk7XG4gMjc0Olx0XHRyZXR1cm4gcmV0O1xuIDI3NTpcdH1cbiAyNzY6XHRFWFBPUlRfU1lNQk9MX0dQTChwaHlfcGFja2FnZV9qb2luKTtcbiAyNzc6XHRcbiAyNzg6XHQvKipcbiAyNzk6XHQgKiBvZl9waHlfcGFja2FnZV9qb2luIC0gam9pbiBhIGNvbW1vbiBQSFkgZ3JvdXAgaW4gUEhZIHBhY2thZ2VcbiAyODA6XHQgKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3RcbiAyODE6XHQgKiBAcHJpdl9zaXplOiBpZiBub24temVybyBhbGxvY2F0ZSB0aGlzIGFtb3VudCBvZiBieXRlcyBmb3IgcHJpdmF0ZSBkYXRhXG4gMjgyOlx0ICpcbiAyODM6XHQgKiBUaGlzIGlzIGEgdmFyaWFudCBvZiBwaHlfcGFja2FnZV9qb2luIGZvciBQSFkgcGFja2FnZSBkZWZpbmVkIGluIERULlxuIDI4NDpcdCAqXG4gMjg1Olx0ICogVGhlIHBhcmVudCBub2RlIG9mIHRoZSBAcGh5ZGV2IGlzIGNoZWNrZWQgYXMgYSB2YWxpZCBQSFkgcGFja2FnZSBub2RlXG4gMjg2Olx0ICogc3RydWN0dXJlIChieSBtYXRjaGluZyB0aGUgbm9kZSBuYW1lIFwmIzM0O2V0aGVybmV0LXBoeS1wYWNrYWdlXCYjMzQ7KSBhbmQgdGhlXG4gMjg3Olx0ICogYmFzZV9hZGRyIGZvciB0aGUgUEhZIHBhY2thZ2UgaXMgcGFzc2VkIHRvIHBoeV9wYWNrYWdlX2pvaW4uXG4gMjg4Olx0ICpcbiAyODk6XHQgKiBXaXRoIHRoaXMgY29uZmlndXJhdGlvbiB0aGUgc2hhcmVkIHN0cnVjdCB3aWxsIGFsc28gaGF2ZSB0aGUgbnAgdmFsdWVcbiAyOTA6XHQgKiBmaWxsZWQgdG8gdXNlIGFkZGl0aW9uYWwgRFQgZGVmaW5lZCBwcm9wZXJ0aWVzIGluIFBIWSBzcGVjaWZpY1xuIDI5MTpcdCAqIHByb2JlX29uY2UgYW5kIGNvbmZpZ19pbml0X29uY2UgUEhZIHBhY2thZ2UgT1BzLlxuIDI5MjpcdCAqXG4gMjkzOlx0ICogUmV0dXJucyBcdTAwM2MgMCBvbiBlcnJvciwgMCBvbiBzdWNjZXNzLiBFc3AuIGNhbGxpbmcgcGh5X3BhY2thZ2Vfam9pbigpXG4gMjk0Olx0ICogd2l0aCB0aGUgc2FtZSBjb29raWUgYnV0IGEgZGlmZmVyZW50IHByaXZfc2l6ZSBpcyBhbiBlcnJvci4gT3IgYSBwYXJlbnRcbiAyOTU6XHQgKiBub2RlIGlzIG5vdCBkZXRlY3RlZCBvciBpcyBub3QgdmFsaWQgb3IgZG9lc24mIzM5O3QgbWF0Y2ggdGhlIGV4cGVjdGVkIG5vZGVcbiAyOTY6XHQgKiBuYW1lIGZvciBQSFkgcGFja2FnZS5cbiAyOTc6XHQgKi9cbiAyOTg6XHRpbnQgb2ZfcGh5X3BhY2thZ2Vfam9pbihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBzaXplX3QgcHJpdl9zaXplKVxuIDI5OTpcdHtcbiAzMDA6XHRcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSA9IHBoeWRldi1cdTAwM2VtZGlvLmRldi5vZl9ub2RlO1xuIDMwMTpcdFx0c3RydWN0IGRldmljZV9ub2RlICpwYWNrYWdlX25vZGU7XG4gMzAyOlx0XHR1MzIgYmFzZV9hZGRyO1xuIDMwMzpcdFx0aW50IHJldDtcbiAzMDQ6XHRcbiAzMDU6XHRcdGlmICghbm9kZSlcbiAzMDY6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gMzA3Olx0XG4gMzA4Olx0XHRwYWNrYWdlX25vZGUgPSBvZl9nZXRfcGFyZW50KG5vZGUpO1xuIDMwOTpcdFx0aWYgKCFwYWNrYWdlX25vZGUpXG4gMzEwOlx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDMxMTpcdFxuIDMxMjpcdFx0aWYgKCFvZl9ub2RlX25hbWVfZXEocGFja2FnZV9ub2RlLCBcJiMzNDtldGhlcm5ldC1waHktcGFja2FnZVwmIzM0OykpIHtcbiAzMTM6XHRcdFx0cmV0ID0gLUVJTlZBTDtcbiAzMTQ6XHRcdFx0Z290byBleGl0O1xuIDMxNTpcdFx0fVxuIDMxNjpcdFxuIDMxNzpcdFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKHBhY2thZ2Vfbm9kZSwgXCYjMzQ7cmVnXCYjMzQ7LCBcdTAwMjZiYXNlX2FkZHIpKSB7XG4gMzE4Olx0XHRcdHJldCA9IC1FSU5WQUw7XG4gMzE5Olx0XHRcdGdvdG8gZXhpdDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTY6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE1MTIKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAzNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgZHA4MzY0MGAgQ2xvY2sgU3RydWN0dXJlIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIHRoZSBgcGh5X3BhY2thZ2Vfam9pbmAgZnVuY3Rpb24gaXMgdXNpbmcgYGt6YWxsb2NgIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIHNoYXJlZCBtZW1vcnkgcmVnaW9uLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGVudGlyZSBgZHA4MzY0MF9jbG9ja2Agc3RydWN0dXJlLCBpbmNsdWRpbmcgdGhlIGBwaW5fY29uZmlnYCBhcnJheSwgZ2V0cyBpbml0aWFsaXplZCB0byB6ZXJvLiBUaGF0JiMzOTtzIGdvb2QuIFRoZSBpbml0aWFsIHRob3VnaHRzIHdlcmUgY29ycmVjdDogdGhlIGBkcDgzNjQwX2Nsb2NrYCBpcyBhbGxvY2F0ZWQgd2l0aCBgc2l6ZW9mKCpjbG9jaylgIGFuZCB0aGVuIGluaXRpYWxpemVkIHZpYSBgZHA4MzY0MF9jbG9ja19pbml0YC4KClRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgYGt6YWxsb2Nfb2Jqc2AgY2FsbCBmb3IgYHBpbl9jb25maWdgIGFuZCBlbWJlZHMgaXQgZGlyZWN0bHkgaW4gdGhlIHN0cnVjdHVyZS4gVGhlcmUmIzM5O3Mgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyBleHBvc2VkIGhlcmUgYmVjYXVzZSBga3phbGxvY2AgemVyb2VzIHRoZSBtZW1vcnkuIEdvb2QsIGdvb2QsIGdvb2QuIE5vdyBsZXQmIzM5O3MganVzdCBtYWtlIGFic29sdXRlbHkgc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBjaGFuZ2VzLgoKQWgsIGxvb2tzIGxpa2UgYHBoeV9wYWNrYWdlX2xvY2tgIGFuZCBgcGh5X3BhY2thZ2VfdW5sb2NrYCBoYXZlIGJlZW4gYWRkZWQsIGFuZCBgZHA4MzY0MF9wcm9iZWAgaGFzIGJlZW4gbW9kaWZpZWQgdG8gdXRpbGl6ZSBgcGh5X3BhY2thZ2Vfam9pbmAuIEFnYWluLCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBhcHBlYXJzIHRvIGJlIGV4cG9zZWQgdG8gdXNlciBzcGFjZS4gVGhlIGBwaW5fY29uZmlnYCBpcyBpbml0aWFsaXplZCB1c2luZyBgZHA4MzY0MF9ncGlvX2RlZmF1bHRzYCwgd2hpY2ggc2V0cyBzb21lIG9mIHRoZSBmaWVsZHMsIGJ1dCB0aGUgcmVtYWluaW5nIGZpZWxkcyBhcmUgemVyb2VkIGJ5IGBremFsbG9jYC4KCldhaXQgYSBtaW51dGUuLi4gY291bGQgdGhlIGBkcDgzNjQwX2Nsb2NrYCBpdHNlbGYgc29tZWhvdyBiZSBwYXNzZWQgdG8gdXNlciBzcGFjZT8gTm8sIG5vLCBpdCYjMzk7cyBhIGNvbXBsZXRlbHkga2VybmVsLWludGVybmFsIHN0cnVjdHVyZS4gT2theSwgc28gdGhlIGBwdHBfcGluX2Rlc2NgICppcyogZXhwb3NlZCB2aWEgdGhlIGBQVFBfUElOX0dFVEZVTkNgIGlvY3RsLCBidXQgdGhlIFBUUCBjb3JlIGhhbmRsZXMgY29weWluZyB0aGF0LiBBbHJpZ2h0LCBqdXN0IHRvIGJlIGNvbXBsZXRlbHkgY2VydGFpbiwgbGV0JiMzOTtzIHRha2UgYSBxdWljayBsb29rIGF0IHRoZSBgcHRwX3Bpbl9kZXNjYCBzdHJ1Y3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE2OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3B0cF9waW5fZGVzYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvdWFwaS9saW51eC9wdHBfY2xvY2suaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL3VhcGkvbGludXgvcHRwX2Nsb2NrLmg9MTkwPWVudW0gcHRwX3Bpbl9mdW5jdGlvbiB7XG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L3B0cF9jbG9jay5oLTE5Ni1cbmluY2x1ZGUvdWFwaS9saW51eC9wdHBfY2xvY2suaDoxOTc6c3RydWN0IHB0cF9waW5fZGVzYyB7XG5pbmNsdWRlL3VhcGkvbGludXgvcHRwX2Nsb2NrLmgtMTk4LVx0Lypcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvcHRwX2Nsb2NrLmgtMjMwLSNkZWZpbmUgUFRQX1NZU19PRkZTRVQgICAgIF9JT1coUFRQX0NMS19NQUdJQywgNSwgc3RydWN0IHB0cF9zeXNfb2Zmc2V0KVxuaW5jbHVkZS91YXBpL2xpbnV4L3B0cF9jbG9jay5oOjIzMTojZGVmaW5lIFBUUF9QSU5fR0VURlVOQyAgICBfSU9XUihQVFBfQ0xLX01BR0lDLCA2LCBzdHJ1Y3QgcHRwX3Bpbl9kZXNjKVxuaW5jbHVkZS91YXBpL2xpbnV4L3B0cF9jbG9jay5oOjIzMjojZGVmaW5lIFBUUF9QSU5fU0VURlVOQyAgICBfSU9XKFBUUF9DTEtfTUFHSUMsIDcsIHN0cnVjdCBwdHBfcGluX2Rlc2MpXG5pbmNsdWRlL3VhcGkvbGludXgvcHRwX2Nsb2NrLmgtMjMzLSNkZWZpbmUgUFRQX1NZU19PRkZTRVRfUFJFQ0lTRSBcXFxuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9wdHBfY2xvY2suaC0yNDItI2RlZmluZSBQVFBfU1lTX09GRlNFVDIgICAgIF9JT1coUFRQX0NMS19NQUdJQywgMTQsIHN0cnVjdCBwdHBfc3lzX29mZnNldClcbmluY2x1ZGUvdWFwaS9saW51eC9wdHBfY2xvY2suaDoyNDM6I2RlZmluZSBQVFBfUElOX0dFVEZVTkMyICAgIF9JT1dSKFBUUF9DTEtfTUFHSUMsIDE1LCBzdHJ1Y3QgcHRwX3Bpbl9kZXNjKVxuaW5jbHVkZS91YXBpL2xpbnV4L3B0cF9jbG9jay5oOjI0NDojZGVmaW5lIFBUUF9QSU5fU0VURlVOQzIgICAgX0lPVyhQVFBfQ0xLX01BR0lDLCAxNiwgc3RydWN0IHB0cF9waW5fZGVzYylcbmluY2x1ZGUvdWFwaS9saW51eC9wdHBfY2xvY2suaC0yNDUtI2RlZmluZSBQVFBfU1lTX09GRlNFVF9QUkVDSVNFMiBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNjo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjgwMAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU2FmZXR5IG9mIGBwdHBfcGluX2Rlc2NgIEV4cG9zdXJlKioKCk9rYXksIHNvIHRoZSBjb2RlIGV4cG9zZXMgYHB0cF9waW5fZGVzY2AgdG8gdXNlciBzcGFjZSwgd2hpY2ggaXMgc29tZXRoaW5nIEkgbmVlZCB0byBjYXJlZnVsbHkgY29uc2lkZXIuIE15IGluaXRpYWwgY29uY2VybiBpcyBhbHdheXMgYXJvdW5kIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBwb3RlbnRpYWwgZm9yIGluZm9ybWF0aW9uIGxlYWtzLCBvciB1bmV4cGVjdGVkIGJlaGF2aW9yLiBIb3dldmVyLCBhZnRlciByZXZpZXdpbmcgdGhlIGNvZGUsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBwaHlfcGFja2FnZV9qb2luYCBmdW5jdGlvbiwgaXQmIzM5O3MgY2xlYXIgdGhhdCB0aGUgYWxsb2NhdGlvbiBoYXBwZW5zIHZpYSBga3phbGxvY2AuIFRoaXMgaXMgZ29vZC4gQSBga3phbGxvY2AgZ3VhcmFudGVlcyB0aGF0IGFsbCBmaWVsZHMgd2l0aGluIGBwdHBfcGluX2Rlc2NgIGFyZSB6ZXJvZWQgb3V0IGJlZm9yZSBiZWluZyBleHBvc2VkLiBUaGVyZWZvcmUsIG15IGltbWVkaWF0ZSBjb25jZXJuIGFib3V0IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGFsbGV2aWF0ZWQuIFRoZSByaXNrIGhlcmUgc2VlbXMgbWluaW1hbC4gSSBub3cga25vdyBJIG5lZWQgdG8gbW92ZSBvbiBhbmQgaW52ZXN0aWdhdGUgYSBzZXBhcmF0ZSBjb25jZXJuLiBJIG5lZWQgdG8gbm93IGNoZWNrIHRoZSBgZHA4MzY0MF9ncGlvX2RlZmF1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTY6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHA4MzY0MF9ncGlvX2RlZmF1bHRzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jPTE3ND1NT0RVTEVfUEFSTV9ERVNDKGdwaW9fdGFiLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTc2LVxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYzoxNzc6c3RhdGljIHZvaWQgZHA4MzY0MF9ncGlvX2RlZmF1bHRzKHN0cnVjdCBwdHBfcGluX2Rlc2MgKnBkKVxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYy0xNzgte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM9OTUxPXN0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfaW5pdChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2spXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYy05NzQtXHQvKiBJbml0aWFsaXplIHRoZSBydW50aW1lIHBpbiBjb25maWd1cmF0aW9uIGZyb20gZ3Bpb190YWIuICovXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jOjk3NTpcdGRwODM2NDBfZ3Bpb19kZWZhdWx0cyhjbG9jay1cdTAwM2VjYXBzLnBpbl9jb25maWcpO1xuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYy05NzYtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNjo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzM1OAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYGRwODM2NDBfZ3Bpb19kZWZhdWx0c2AgaW1wbGVtZW50YXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGZ1bmN0aW9uIHNldHMgdXAgdGhlIEdQSU8gcGlucyBmb3IgdGhpcyBzcGVjaWZpYyBFdGhlcm5ldCBQSFkuIEl0JiMzOTtzIGNydWNpYWwgZm9yIGNvbmZpZ3VyaW5nIHRoZSBoYXJkd2FyZSBhbmQgZW5zdXJpbmcgcHJvcGVyIGNvbW11bmljYXRpb24sIHNvIEkgd2FudCB0byBnZXQgdGhpcyByaWdodC4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBjb2RlJiMzOTtzIGRvaW5nLiBJJiMzOTtsbCBmb2N1cyBvbiB0aGUgc3BlY2lmaWMgcmVnaXN0ZXIgdmFsdWVzIGFuZCBwaW4gY29uZmlndXJhdGlvbnMgdG8gc2VlIGhvdyB0aGUgc29mdHdhcmUgaXMgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgaGFyZHdhcmUuIFVuZGVyc3RhbmRpbmcgdGhlIGRlZmF1bHQgc2V0dXAgaXMgYWx3YXlzIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgY3VzdG9taXphdGlvbiBhbmQgZGVidWdnaW5nIGxhdGVyIG9uLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgaGludHMgb24gY2xvY2sgc2V0dGluZ3MsIGludGVycnVwdCBhc3NpZ25tZW50cywgb3Igb3RoZXIgY3J1Y2lhbCBpbml0aWFsaXphdGlvbnMuIEkmIzM5O20gZXNzZW50aWFsbHkgcmV2ZXJzZS1lbmdpbmVlcmluZyB0aGUgaW50ZW5kZWQgaGFyZHdhcmUgY29uZmlndXJhdGlvbiB0aHJvdWdoIHRoZSBzb2Z0d2FyZSYjMzk7cyBpbml0aWFsIHN0YXRlIGRlZmluaXRpb24uIEhvcGVmdWxseSwgaXQmIzM5O3Mgd2VsbC1jb21tZW50ZWQ7IHRoYXQgd291bGQgYmUgYSBib251cyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTY6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTc3LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNzc6XHRzdGF0aWMgdm9pZCBkcDgzNjQwX2dwaW9fZGVmYXVsdHMoc3RydWN0IHB0cF9waW5fZGVzYyAqcGQpXG4gMTc4Olx0e1xuIDE3OTpcdFx0aW50IGksIGluZGV4O1xuIDE4MDpcdFxuIDE4MTpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgRFA4MzY0MF9OX1BJTlM7IGkmIzQzOyYjNDM7KSB7XG4gMTgyOlx0XHRcdHNucHJpbnRmKHBkW2ldLm5hbWUsIHNpemVvZihwZFtpXS5uYW1lKSwgXCYjMzQ7R1BJTyVkXCYjMzQ7LCAxICYjNDM7IGkpO1xuIDE4MzpcdFx0XHRwZFtpXS5pbmRleCA9IGk7XG4gMTg0Olx0XHR9XG4gMTg1Olx0XG4gMTg2Olx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBHUElPX1RBQkxFX1NJWkU7IGkmIzQzOyYjNDM7KSB7XG4gMTg3Olx0XHRcdGlmIChncGlvX3RhYltpXSBcdTAwM2MgMSB8fCBncGlvX3RhYltpXSBcdTAwM2UgRFA4MzY0MF9OX1BJTlMpIHtcbiAxODg6XHRcdFx0XHRwcl9lcnIoXCYjMzQ7Z3Bpb190YWJbJWRdPSVodSBvdXQgb2YgcmFuZ2VcJiMzNDssIGksIGdwaW9fdGFiW2ldKTtcbiAxODk6XHRcdFx0XHRyZXR1cm47XG4gMTkwOlx0XHRcdH1cbiAxOTE6XHRcdH1cbiAxOTI6XHRcbiAxOTM6XHRcdGluZGV4ID0gZ3Bpb190YWJbQ0FMSUJSQVRFX0dQSU9dIC0gMTtcbiAxOTQ6XHRcdHBkW2luZGV4XS5mdW5jID0gUFRQX1BGX1BIWVNZTkM7XG4gMTk1Olx0XHRwZFtpbmRleF0uY2hhbiA9IDA7XG4gMTk2Olx0XG4gMTk3Olx0XHRpbmRleCA9IGdwaW9fdGFiW1BFUk9VVF9HUElPXSAtIDE7XG4gMTk4Olx0XHRwZFtpbmRleF0uZnVuYyA9IFBUUF9QRl9QRVJPVVQ7XG4gMTk5Olx0XHRwZFtpbmRleF0uY2hhbiA9IDA7XG4gMjAwOlx0XG4gMjAxOlx0XHRmb3IgKGkgPSBFWFRUUzBfR1BJTzsgaSBcdTAwM2MgR1BJT19UQUJMRV9TSVpFOyBpJiM0MzsmIzQzOykge1xuIDIwMjpcdFx0XHRpbmRleCA9IGdwaW9fdGFiW2ldIC0gMTtcbiAyMDM6XHRcdFx0cGRbaW5kZXhdLmZ1bmMgPSBQVFBfUEZfRVhUVFM7XG4gMjA0Olx0XHRcdHBkW2luZGV4XS5jaGFuID0gaSAtIEVYVFRTMF9HUElPO1xuIDIwNTpcdFx0fVxuIDIwNjpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ny8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTY6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQxMTkKCQkJCQkJCW91dHB1dDogMTc1CgkJCQkJCQl0aG91Z2h0czogMTM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBIWSBDbG9jayBNYW5hZ2VtZW50IFJlZmFjdG9yaW5nKioKCk9rYXksIHNvIEkmIzM5O3ZlIHJldmlld2VkIHRoaXMgcGF0Y2gsIGFuZCBoZXJlJiMzOTtzIG15IHRha2UuIEluaXRpYWxseSwgdGhlIGBwZGAgYXJyYXkgaXMgcG9wdWxhdGVkIHVzaW5nIGBzbnByaW50ZmAgdG8gc2V0IHVwIHNvbWUgZmllbGRzLiBCZWNhdXNlIGBremFsbG9jYCBpcyB1c2VkIGluIGBwaHlfcGFja2FnZV9qb2luYCwgdGhlIGVudGlyZSBhcnJheSBnZXRzIHplcm8taW5pdGlhbGl6ZWQuIFRoYXQgbWVhbnMgYW55IHBhZGRpbmcgb3IgZmllbGRzIHRoYXQgYXJlbiYjMzk7dCBzcGVjaWZpY2FsbHkgb3ZlcndyaXR0ZW4gYnkgYHNucHJpbnRmYCB3aWxsIGJlIHNhZmVseSB6ZXJvLiBUaGlzIGVsaW1pbmF0ZXMgYW55IGltbWVkaWF0ZSBjb25jZXJucyBhYm91dCB1bmluaXRpYWxpemVkIG1lbW9yeSBwb3RlbnRpYWxseSBsZWFraW5nIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbiwgd2hpY2ggaXMgYWx3YXlzIGEgY3JpdGljYWwgcG9pbnQgdG8gY29uc2lkZXIuCgpUaGUgY29yZSBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGJlIHJlZmFjdG9yaW5nIHRoZSBQSFkgY2xvY2sgbWFuYWdlbWVudC4gVGhlIGNvZGUgc2hpZnRzIGZyb20gdXNpbmcgYSBjdXN0b20gZ2xvYmFsIGxpc3QgdG8gbm93IGxldmVyYWdlIGBwaHlfcGFja2FnZV9qb2luYC4gVGhpcyBpcyBhIHByZXR0eSBzaWduaWZpY2FudCBhcmNoaXRlY3R1cmFsIGNoYW5nZSwgYW5kIGZyb20gd2hhdCBJIGNhbiB0ZWxsLCBpdCYjMzk7cyBhZGRyZXNzaW5nIHNvbWUgbmFzdHkgbGlmZWN5Y2xlIGFuZCBsb2NraW5nIGlzc3Vlcy4gSSBzdXNwZWN0IHdlJiMzOTtyZSBsb29raW5nIGF0IHRoaW5ncyBsaWtlIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvcyBvciBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzLCBhbGwgb2Ygd2hpY2ggS0FTQU4gd291bGQgYmUgaW52YWx1YWJsZSBpbiBjYXRjaGluZy4gVGhlIGdvb2QgbmV3cyBpcywgSSBkb24mIzM5O3Qgc2VlIGFueSBldmlkZW5jZSBvZiAqbmV3KiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMgYmVpbmcgaW50cm9kdWNlZCBieSB0aGlzIGNoYW5nZS4gSXQgc2VlbXMgbGlrZSB0aGUgcmVmYWN0b3JpbmcgaXMgc291bmQgaW4gdGhhdCByZWdhcmQuCgpHaXZlbiBhbGwgb2YgdGhpcywgSSB0aGluayB3ZSBjYW4gc2FmZWx5IHNldCBgTmVlZHNLTVNBTj1mYWxzZWAgZm9yIHRoaXMgcGF0Y2guIFRoZSBleGlzdGluZyBLQVNBTiBjb3ZlcmFnZSBpcyBsaWtlbHkgc3VmZmljaWVudCB0byBtb25pdG9yIHRoaXMsIGFuZCB0aGlzIGNoYW5nZSBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyBpbW1lZGlhdGUgbmVlZHMgaW4gdGhpcyByZWdhcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE2OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyB0aGUgZHA4MzY0MCBQSFkgZHJpdmVyIHRvIHVzZSB0aGUgc3RhbmRhcmQgYHBoeV9wYWNrYWdlX2pvaW5gIEFQSSBmb3IgbWFuYWdpbmcgc2hhcmVkIGNsb2NrIHN0cnVjdHVyZXMsIHJlcGxhY2luZyBhIGN1c3RvbSBnbG9iYWwgbGlzdCBhbmQgbWFudWFsIGFsbG9jYXRpb25zLiBUaGUgc2hhcmVkIHN0cnVjdHVyZSBgZHA4MzY0MF9jbG9ja2AgKGFuZCBpdHMgZW1iZWRkZWQgYHBpbl9jb25maWdgIGFycmF5KSBpcyBhbGxvY2F0ZWQgdmlhIGBremFsbG9jYCBpbnNpZGUgYHBoeV9wYWNrYWdlX2pvaW5gLCBlbnN1cmluZyBhbGwgZmllbGRzIGFuZCBwYWRkaW5nIGFyZSBmdWxseSB6ZXJvLWluaXRpYWxpemVkLiBUaGVyZSBhcmUgbm8gbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGluZm8tbGVha3MgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoLiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBpbnZvbHZlIG9iamVjdCBsaWZlY3ljbGUgaXNzdWVzIChsaWtlIHVzZS1hZnRlci1mcmVlIG9yIG1lbW9yeSBsZWFrcykgb3IgbG9ja2luZyBpc3N1ZXMsIHdoaWNoIGFyZSBhbHJlYWR5IGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBMT0NLREVQLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSBkcDgzNjQwIFBIWSBkcml2ZXIgdG8gdXNlIHRoZSBzdGFuZGFyZCBgcGh5X3BhY2thZ2Vfam9pbmAgQVBJIGZvciBtYW5hZ2luZyBzaGFyZWQgY2xvY2sgc3RydWN0dXJlcywgcmVwbGFjaW5nIGEgY3VzdG9tIGdsb2JhbCBsaXN0IGFuZCBtYW51YWwgYWxsb2NhdGlvbnMuIFRoZSBzaGFyZWQgc3RydWN0dXJlIGBkcDgzNjQwX2Nsb2NrYCAoYW5kIGl0cyBlbWJlZGRlZCBgcGluX2NvbmZpZ2AgYXJyYXkpIGlzIGFsbG9jYXRlZCB2aWEgYGt6YWxsb2NgIGluc2lkZSBgcGh5X3BhY2thZ2Vfam9pbmAsIGVuc3VyaW5nIGFsbCBmaWVsZHMgYW5kIHBhZGRpbmcgYXJlIGZ1bGx5IHplcm8taW5pdGlhbGl6ZWQuIFRoZXJlIGFyZSBubyBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2guIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGludm9sdmUgb2JqZWN0IGxpZmVjeWNsZSBpc3N1ZXMgKGxpa2UgdXNlLWFmdGVyLWZyZWUgb3IgbWVtb3J5IGxlYWtzKSBvciBsb2NraW5nIGlzc3Vlcywgd2hpY2ggYXJlIGFscmVhZHkgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIExPQ0tERVAuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU0OjAwLjU5NDA4NDI2NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzOTU4MTI4MDAzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEUDgzNjQwX1BIWVwiLFxuICAgIFwiTkVUV09SS19QSFlfVElNRVNUQU1QSU5HXCIsXG4gICAgXCJQSFlMSUJcIixcbiAgICBcIlBUUF8xNTg4X0NMT0NLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZHA4MzY0MF9wcm9iZVwiLFxuICAgIFwiZHA4MzY0MF9yZW1vdmVcIixcbiAgICBcInBoeV9wYWNrYWdlX2xvY2tcIixcbiAgICBcInBoeV9wYWNrYWdlX3VubG9ja1wiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSBkcDgzNjQwIFBIWSBkcml2ZXIgdG8gdXNlIHRoZSBzdGFuZGFyZCBgcGh5X3BhY2thZ2Vfam9pbmAgQVBJIGZvciBtYW5hZ2luZyBzaGFyZWQgY2xvY2sgc3RydWN0dXJlcywgcmVwbGFjaW5nIGEgY3VzdG9tIGdsb2JhbCBsaXN0IGFuZCBtYW51YWwgYWxsb2NhdGlvbnMuIFRoZSBzaGFyZWQgc3RydWN0dXJlIGBkcDgzNjQwX2Nsb2NrYCAoYW5kIGl0cyBlbWJlZGRlZCBgcGluX2NvbmZpZ2AgYXJyYXkpIGlzIGFsbG9jYXRlZCB2aWEgYGt6YWxsb2NgIGluc2lkZSBgcGh5X3BhY2thZ2Vfam9pbmAsIGVuc3VyaW5nIGFsbCBmaWVsZHMgYW5kIHBhZGRpbmcgYXJlIGZ1bGx5IHplcm8taW5pdGlhbGl6ZWQuIFRoZXJlIGFyZSBubyBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2guIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGludm9sdmUgb2JqZWN0IGxpZmVjeWNsZSBpc3N1ZXMgKGxpa2UgdXNlLWFmdGVyLWZyZWUgb3IgbWVtb3J5IGxlYWtzKSBvciBsb2NraW5nIGlzc3Vlcywgd2hpY2ggYXJlIGFscmVhZHkgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIExPQ0tERVAuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSBEUDgzNjQwIFBIWSBkcml2ZXIgdG8gdXNlIHRoZSBzdGFuZGFyZCBwaHlfcGFja2FnZSBBUEkgZm9yIHNoYXJlZCBjbG9jayBpbml0aWFsaXphdGlvbiwgcmVwbGFjaW5nIGEgY3VzdG9tIGdsb2JhbCBsaXN0LiBJdCBhbHNvIGludHJvZHVjZXMgcGh5X3BhY2thZ2VfbG9jayBhbmQgcGh5X3BhY2thZ2VfdW5sb2NrIHRvIHNlcmlhbGl6ZSBhY2Nlc3MgdG8gcGFja2FnZS1wcml2YXRlIGRhdGEuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IHRoZSBwcm9iZSBhbmQgcmVtb3ZlIHBhdGhzIG9mIHRoZSBQSFkgZHJpdmVyLCB3aGljaCBjYW4gYmUgcmVhY2hlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGJ5IGVtdWxhdGluZyBhbiBNRElPIGJ1cyBvciBhIFVTQiBuZXR3b3JrIGRldmljZSB3aXRoIHRoZSBzcGVjaWZpYyBQSFkgSUQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU0OjAwLjU5NDA4ODg4NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTExNzAyODQwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDE1YjcwZGRhYTdmM2RmZjM2YmQ1MWU3ZTJjNjhlZWMwODUxOWEyM2ZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMTAgMTY6NTM6NTkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYyBiL2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmNcXG5pbmRleCA5ODQ3MmFiZGQzOTIwLi42ODY3ZTdjNmYzYjdlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmNcXG4rKysgYi9kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jXFxuQEAgLTIxLDYgKzIxLDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaFxcdTAwM2VcXG4gXFxuICNpbmNsdWRlIFxcXCJkcDgzNjQwX3JlZy5oXFxcIlxcbisjaW5jbHVkZSBcXFwicGh5bGliLmhcXFwiXFxuIFxcbiAjZGVmaW5lIERQODM2NDBfUEhZX0lEXFx0MHgyMDAwNWNlMVxcbiAjZGVmaW5lIFBBR0VTRUxcXHRcXHQweDEzXFxuQEAgLTEyOCwxMCArMTI5LDYgQEAgc3RydWN0IGRwODM2NDBfcHJpdmF0ZSB7XFxuIH07XFxuIFxcbiBzdHJ1Y3QgZHA4MzY0MF9jbG9jayB7XFxuLVxcdC8qIGtlZXBzIHRoZSBpbnN0YW5jZSBpbiB0aGUgJ3BoeXRlcl9jbG9ja3MnIGxpc3QgKi9cXG4tXFx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xcbi1cXHQvKiB3ZSBjcmVhdGUgb25lIGNsb2NrIGluc3RhbmNlIHBlciBNSUkgYnVzICovXFxuLVxcdHN0cnVjdCBtaWlfYnVzICpidXM7XFxuIFxcdC8qIHByb3RlY3RzIGV4dGVuZGVkIHJlZ2lzdGVycyBmcm9tIGNvbmN1cnJlbnQgYWNjZXNzICovXFxuIFxcdHN0cnVjdCBtdXRleCBleHRyZWdfbG9jaztcXG4gXFx0LyogcmVtZW1iZXJzIHdoaWNoIHBhZ2Ugd2FzIGxhc3Qgc2VsZWN0ZWQgKi9cXG5AQCAtMTQ2LDYgKzE0Myw4IEBAIHN0cnVjdCBkcDgzNjQwX2Nsb2NrIHtcXG4gXFx0c3RydWN0IGxpc3RfaGVhZCBwaHlsaXN0O1xcbiBcXHQvKiByZWZlcmVuY2UgdG8gb3VyIFBUUCBoYXJkd2FyZSBjbG9jayAqL1xcbiBcXHRzdHJ1Y3QgcHRwX2Nsb2NrICpwdHBfY2xvY2s7XFxuK1xcdC8qIHByb3RlY3RlZCBieSB0aGUgUFRQIGNvcmUgcGluIGNvbmZpZ3VyYXRpb24gbG9jayAqL1xcbitcXHRzdHJ1Y3QgcHRwX3Bpbl9kZXNjIHBpbl9jb25maWdbRFA4MzY0MF9OX1BJTlNdO1xcbiB9O1xcbiBcXG4gLyogZ2xvYmFscyAqL1xcbkBAIC0yMDYsMTAgKzIwNSw2IEBAIHN0YXRpYyB2b2lkIGRwODM2NDBfZ3Bpb19kZWZhdWx0cyhzdHJ1Y3QgcHRwX3Bpbl9kZXNjICpwZClcXG4gXFx0fVxcbiB9XFxuIFxcbi0vKiBhIGxpc3Qgb2YgY2xvY2tzIGFuZCBhIG11dGV4IHRvIHByb3RlY3QgaXQgKi9cXG4tc3RhdGljIExJU1RfSEVBRChwaHl0ZXJfY2xvY2tzKTtcXG4tc3RhdGljIERFRklORV9NVVRFWChwaHl0ZXJfY2xvY2tzX2xvY2spO1xcbi1cXG4gc3RhdGljIHZvaWQgcnhfdGltZXN0YW1wX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcXG4gXFxuIC8qIGV4dGVuZGVkIHJlZ2lzdGVyIGFjY2VzcyBmdW5jdGlvbnMgKi9cXG5AQCAtOTUzLDEzICs5NDgsMTIgQEAgc3RhdGljIHZvaWQgZGVjb2RlX3N0YXR1c19mcmFtZShzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICpkcDgzNjQwLFxcbiBcXHR9XFxuIH1cXG4gXFxuLXN0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfaW5pdChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2ssIHN0cnVjdCBtaWlfYnVzICpidXMpXFxuK3N0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfaW5pdChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2spXFxuIHtcXG4tXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNmNsb2NrLVxcdTAwM2VsaXN0KTtcXG4tXFx0Y2xvY2stXFx1MDAzZWJ1cyA9IGJ1cztcXG4gXFx0bXV0ZXhfaW5pdChcXHUwMDI2Y2xvY2stXFx1MDAzZWV4dHJlZ19sb2NrKTtcXG4gXFx0bXV0ZXhfaW5pdChcXHUwMDI2Y2xvY2stXFx1MDAzZWNsb2NrX2xvY2spO1xcbiBcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2Y2xvY2stXFx1MDAzZXBoeWxpc3QpO1xcbitcXHRjbG9jay1cXHUwMDNlY2Fwcy5waW5fY29uZmlnID0gY2xvY2stXFx1MDAzZXBpbl9jb25maWc7XFxuIFxcdGNsb2NrLVxcdTAwM2VjYXBzLm93bmVyID0gVEhJU19NT0RVTEU7XFxuIFxcdHNwcmludGYoY2xvY2stXFx1MDAzZWNhcHMubmFtZSwgXFxcImRwODM2NDAgdGltZXJcXFwiKTtcXG4gXFx0Y2xvY2stXFx1MDAzZWNhcHMubWF4X2FkalxcdD0gMTk1MzEyNDtcXG5AQCAtOTc3LDE0ICs5NzEsOCBAQCBzdGF0aWMgdm9pZCBkcDgzNjQwX2Nsb2NrX2luaXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrLCBzdHJ1Y3QgbWlpX2J1cyAqYnVzKVxcbiBcXHRjbG9jay1cXHUwMDNlY2Fwcy5zZXR0aW1lNjRcXHQ9IHB0cF9kcDgzNjQwX3NldHRpbWU7XFxuIFxcdGNsb2NrLVxcdTAwM2VjYXBzLmVuYWJsZVxcdD0gcHRwX2RwODM2NDBfZW5hYmxlO1xcbiBcXHRjbG9jay1cXHUwMDNlY2Fwcy52ZXJpZnlcXHQ9IHB0cF9kcDgzNjQwX3ZlcmlmeTtcXG4tXFx0LypcXG4tXFx0ICogQ29udmVydCB0aGUgbW9kdWxlIHBhcmFtIGRlZmF1bHRzIGludG8gYSBkeW5hbWljIHBpbiBjb25maWd1cmF0aW9uLlxcbi1cXHQgKi9cXG4rXFx0LyogSW5pdGlhbGl6ZSB0aGUgcnVudGltZSBwaW4gY29uZmlndXJhdGlvbiBmcm9tIGdwaW9fdGFiLiAqL1xcbiBcXHRkcDgzNjQwX2dwaW9fZGVmYXVsdHMoY2xvY2stXFx1MDAzZWNhcHMucGluX2NvbmZpZyk7XFxuLVxcdC8qXFxuLVxcdCAqIEdldCBhIHJlZmVyZW5jZSB0byB0aGlzIGJ1cyBpbnN0YW5jZS5cXG4tXFx0ICovXFxuLVxcdGdldF9kZXZpY2UoXFx1MDAyNmJ1cy1cXHUwMDNlZGV2KTtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBjaG9vc2VfdGhpc19waHkoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrLFxcbkBAIC05OTksNTggKzk4Nyw2IEBAIHN0YXRpYyBpbnQgY2hvb3NlX3RoaXNfcGh5KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jayxcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuLXN0YXRpYyBzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqZHA4MzY0MF9jbG9ja19nZXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrKVxcbi17XFxuLVxcdGlmIChjbG9jaylcXG4tXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2Y2xvY2stXFx1MDAzZWNsb2NrX2xvY2spO1xcbi1cXHRyZXR1cm4gY2xvY2s7XFxuLX1cXG4tXFxuLS8qXFxuLSAqIExvb2sgdXAgYW5kIGxvY2sgYSBjbG9jayBieSBidXMgaW5zdGFuY2UuXFxuLSAqIElmIHRoZXJlIGlzIG5vIGNsb2NrIGZvciB0aGlzIGJ1cywgdGhlbiBjcmVhdGUgaXQgZmlyc3QuXFxuLSAqL1xcbi1zdGF0aWMgc3RydWN0IGRwODM2NDBfY2xvY2sgKmRwODM2NDBfY2xvY2tfZ2V0X2J1cyhzdHJ1Y3QgbWlpX2J1cyAqYnVzKVxcbi17XFxuLVxcdHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jayA9IE5VTEwsICp0bXA7XFxuLVxcdHN0cnVjdCBsaXN0X2hlYWQgKnRoaXM7XFxuLVxcbi1cXHRtdXRleF9sb2NrKFxcdTAwMjZwaHl0ZXJfY2xvY2tzX2xvY2spO1xcbi1cXG4tXFx0bGlzdF9mb3JfZWFjaCh0aGlzLCBcXHUwMDI2cGh5dGVyX2Nsb2Nrcykge1xcbi1cXHRcXHR0bXAgPSBsaXN0X2VudHJ5KHRoaXMsIHN0cnVjdCBkcDgzNjQwX2Nsb2NrLCBsaXN0KTtcXG4tXFx0XFx0aWYgKHRtcC1cXHUwMDNlYnVzID09IGJ1cykge1xcbi1cXHRcXHRcXHRjbG9jayA9IHRtcDtcXG4tXFx0XFx0XFx0YnJlYWs7XFxuLVxcdFxcdH1cXG4tXFx0fVxcbi1cXHRpZiAoY2xvY2spXFxuLVxcdFxcdGdvdG8gb3V0O1xcbi1cXG4tXFx0Y2xvY2sgPSBremFsbG9jX29iaihzdHJ1Y3QgZHA4MzY0MF9jbG9jayk7XFxuLVxcdGlmICghY2xvY2spXFxuLVxcdFxcdGdvdG8gb3V0O1xcbi1cXG4tXFx0Y2xvY2stXFx1MDAzZWNhcHMucGluX2NvbmZpZyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgcHRwX3Bpbl9kZXNjLFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgICBEUDgzNjQwX05fUElOUyk7XFxuLVxcdGlmICghY2xvY2stXFx1MDAzZWNhcHMucGluX2NvbmZpZykge1xcbi1cXHRcXHRrZnJlZShjbG9jayk7XFxuLVxcdFxcdGNsb2NrID0gTlVMTDtcXG4tXFx0XFx0Z290byBvdXQ7XFxuLVxcdH1cXG4tXFx0ZHA4MzY0MF9jbG9ja19pbml0KGNsb2NrLCBidXMpO1xcbi1cXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZjbG9jay1cXHUwMDNlbGlzdCwgXFx1MDAyNnBoeXRlcl9jbG9ja3MpO1xcbi1vdXQ6XFxuLVxcdG11dGV4X3VubG9jayhcXHUwMDI2cGh5dGVyX2Nsb2Nrc19sb2NrKTtcXG4tXFxuLVxcdHJldHVybiBkcDgzNjQwX2Nsb2NrX2dldChjbG9jayk7XFxuLX1cXG4tXFxuLXN0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfcHV0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaylcXG4te1xcbi1cXHRtdXRleF91bmxvY2soXFx1MDAyNmNsb2NrLVxcdTAwM2VjbG9ja19sb2NrKTtcXG4tfVxcbi1cXG4gc3RhdGljIGludCBkcDgzNjQwX3NvZnRfcmVzZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4ge1xcbiBcXHRpbnQgcmV0O1xcbkBAIC0xNDAwLDIwICsxMzM2LDMxIEBAIHN0YXRpYyBpbnQgZHA4MzY0MF90c19pbmZvKHN0cnVjdCBtaWlfdGltZXN0YW1wZXIgKm1paV90cyxcXG4gXFxuIHN0YXRpYyBpbnQgZHA4MzY0MF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiB7XFxuLVxcdHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaztcXG4gXFx0c3RydWN0IGRwODM2NDBfcHJpdmF0ZSAqZHA4MzY0MDtcXG4tXFx0aW50IGVyciA9IC1FTk9NRU0sIGk7XFxuK1xcdHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaztcXG4rXFx0aW50IGVyciwgaTtcXG4gXFxuIFxcdGlmIChwaHlkZXYtXFx1MDAzZW1kaW8uYWRkciA9PSBCUk9BRENBU1RfQUREUilcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcbi1cXHRjbG9jayA9IGRwODM2NDBfY2xvY2tfZ2V0X2J1cyhwaHlkZXYtXFx1MDAzZW1kaW8uYnVzKTtcXG4tXFx0aWYgKCFjbG9jaylcXG4tXFx0XFx0Z290byBub19jbG9jaztcXG4rXFx0ZXJyID0gcGh5X3BhY2thZ2Vfam9pbihwaHlkZXYsIEJST0FEQ0FTVF9BRERSLCBzaXplb2YoKmNsb2NrKSk7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiBlcnI7XFxuK1xcbitcXHRjbG9jayA9IHBoeV9wYWNrYWdlX2dldF9wcml2KHBoeWRldik7XFxuK1xcdC8qIEVuc3VyZSBvdGhlciBQSFkgcHJvYmVzIHdhaXQgZm9yIHNoYXJlZCBjbG9jayBpbml0aWFsaXphdGlvbi4gKi9cXG4rXFx0cGh5X3BhY2thZ2VfbG9jayhwaHlkZXYpO1xcbitcXHRpZiAocGh5X3BhY2thZ2VfcHJvYmVfb25jZShwaHlkZXYpKVxcbitcXHRcXHRkcDgzNjQwX2Nsb2NrX2luaXQoY2xvY2spO1xcbitcXHRwaHlfcGFja2FnZV91bmxvY2socGh5ZGV2KTtcXG4rXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNmNsb2NrLVxcdTAwM2VjbG9ja19sb2NrKTtcXG4gXFxuIFxcdGRwODM2NDAgPSBremFsbG9jX29iaihzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlKTtcXG4tXFx0aWYgKCFkcDgzNjQwKVxcbitcXHRpZiAoIWRwODM2NDApIHtcXG4rXFx0XFx0ZXJyID0gLUVOT01FTTtcXG4gXFx0XFx0Z290byBub19tZW1vcnk7XFxuK1xcdH1cXG4gXFxuIFxcdGRwODM2NDAtXFx1MDAzZXBoeWRldiA9IHBoeWRldjtcXG4gXFx0ZHA4MzY0MC1cXHUwMDNlbWlpX3RzLnJ4dHN0YW1wID0gZHA4MzY0MF9yeHRzdGFtcDtcXG5AQCAtMTQ1MCwxNSArMTM5NywyMCBAQCBzdGF0aWMgaW50IGRwODM2NDBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gXFx0fSBlbHNlXFxuIFxcdFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNmRwODM2NDAtXFx1MDAzZWxpc3QsIFxcdTAwMjZjbG9jay1cXHUwMDNlcGh5bGlzdCk7XFxuIFxcbi1cXHRkcDgzNjQwX2Nsb2NrX3B1dChjbG9jayk7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2Y2xvY2stXFx1MDAzZWNsb2NrX2xvY2spO1xcbitcXG4gXFx0cmV0dXJuIDA7XFxuIFxcbiBub19yZWdpc3RlcjpcXG4gXFx0Y2xvY2stXFx1MDAzZWNob3NlbiA9IE5VTEw7XFxuK1xcdGNsb2NrLVxcdTAwM2VwdHBfY2xvY2sgPSBOVUxMO1xcbitcXHRwaHlkZXYtXFx1MDAzZWRlZmF1bHRfdGltZXN0YW1wID0gZmFsc2U7XFxuK1xcdHBoeWRldi1cXHUwMDNlbWlpX3RzID0gTlVMTDtcXG4rXFx0cGh5ZGV2LVxcdTAwM2Vwcml2ID0gTlVMTDtcXG4gXFx0a2ZyZWUoZHA4MzY0MCk7XFxuIG5vX21lbW9yeTpcXG4tXFx0ZHA4MzY0MF9jbG9ja19wdXQoY2xvY2spO1xcbi1ub19jbG9jazpcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZjbG9jay1cXHUwMDNlY2xvY2tfbG9jayk7XFxuK1xcdHBoeV9wYWNrYWdlX2xlYXZlKHBoeWRldik7XFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG4gXFxuQEAgLTE0NjcsNyArMTQxOSw2IEBAIHN0YXRpYyB2b2lkIGRwODM2NDBfcmVtb3ZlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuIFxcdHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaztcXG4gXFx0c3RydWN0IGxpc3RfaGVhZCAqdGhpcywgKm5leHQ7XFxuIFxcdHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUgKnRtcCwgKmRwODM2NDAgPSBwaHlkZXYtXFx1MDAzZXByaXY7XFxuLVxcdGJvb2wgcmVtb3ZlX2Nsb2NrID0gZmFsc2U7XFxuIFxcbiBcXHRpZiAocGh5ZGV2LVxcdTAwM2VtZGlvLmFkZHIgPT0gQlJPQURDQVNUX0FERFIpXFxuIFxcdFxcdHJldHVybjtcXG5AQCAtMTQ4MCw3ICsxNDMxLDggQEAgc3RhdGljIHZvaWQgZHA4MzY0MF9yZW1vdmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gXFx0c2tiX3F1ZXVlX3B1cmdlKFxcdTAwMjZkcDgzNjQwLVxcdTAwM2VyeF9xdWV1ZSk7XFxuIFxcdHNrYl9xdWV1ZV9wdXJnZShcXHUwMDI2ZHA4MzY0MC1cXHUwMDNldHhfcXVldWUpO1xcbiBcXG4tXFx0Y2xvY2sgPSBkcDgzNjQwX2Nsb2NrX2dldChkcDgzNjQwLVxcdTAwM2VjbG9jayk7XFxuK1xcdGNsb2NrID0gZHA4MzY0MC1cXHUwMDNlY2xvY2s7XFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNmNsb2NrLVxcdTAwM2VjbG9ja19sb2NrKTtcXG4gXFxuIFxcdGlmIChkcDgzNjQwID09IGNsb2NrLVxcdTAwM2VjaG9zZW4pIHtcXG4gXFx0XFx0cHRwX2Nsb2NrX3VucmVnaXN0ZXIoY2xvY2stXFx1MDAzZXB0cF9jbG9jayk7XFxuQEAgLTE0OTUsMjMgKzE0NDcsMTAgQEAgc3RhdGljIHZvaWQgZHA4MzY0MF9yZW1vdmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gXFx0XFx0fVxcbiBcXHR9XFxuIFxcbi1cXHRpZiAoIWNsb2NrLVxcdTAwM2VjaG9zZW4gXFx1MDAyNlxcdTAwMjYgbGlzdF9lbXB0eShcXHUwMDI2Y2xvY2stXFx1MDAzZXBoeWxpc3QpKVxcbi1cXHRcXHRyZW1vdmVfY2xvY2sgPSB0cnVlO1xcbi1cXG4tXFx0ZHA4MzY0MF9jbG9ja19wdXQoY2xvY2spO1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNmNsb2NrLVxcdTAwM2VjbG9ja19sb2NrKTtcXG4gXFx0a2ZyZWUoZHA4MzY0MCk7XFxuIFxcbi1cXHRpZiAocmVtb3ZlX2Nsb2NrKSB7XFxuLVxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnBoeXRlcl9jbG9ja3NfbG9jayk7XFxuLVxcdFxcdGxpc3RfZGVsKFxcdTAwMjZjbG9jay1cXHUwMDNlbGlzdCk7XFxuLVxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2cGh5dGVyX2Nsb2Nrc19sb2NrKTtcXG4tXFxuLVxcdFxcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNmNsb2NrLVxcdTAwM2VleHRyZWdfbG9jayk7XFxuLVxcdFxcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNmNsb2NrLVxcdTAwM2VjbG9ja19sb2NrKTtcXG4tXFx0XFx0cHV0X2RldmljZShcXHUwMDI2Y2xvY2stXFx1MDAzZWJ1cy1cXHUwMDNlZGV2KTtcXG4tXFx0XFx0a2ZyZWUoY2xvY2stXFx1MDAzZWNhcHMucGluX2NvbmZpZyk7XFxuLVxcdFxcdGtmcmVlKGNsb2NrKTtcXG4tXFx0fVxcbitcXHRwaHlfcGFja2FnZV9sZWF2ZShwaHlkZXYpO1xcbiB9XFxuIFxcbiBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZHA4MzY0MF9kcml2ZXJbXSA9IHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuY1xcbmluZGV4IDE2YWU4ZDFjMWY4OWEuLjczNTgwNmM1YmVhODggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmNcXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuY1xcbkBAIC01Miw2ICs1MiwyOSBAQCB2b2lkICpwaHlfcGFja2FnZV9nZXRfcHJpdihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiB9XFxuIEVYUE9SVF9TWU1CT0xfR1BMKHBoeV9wYWNrYWdlX2dldF9wcml2KTtcXG4gXFxuKy8qKlxcbisgKiBwaHlfcGFja2FnZV9sb2NrIC0gYWNxdWlyZSB0aGUgUEhZIHBhY2thZ2UgbG9ja1xcbisgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHRoYXQgaGFzIGpvaW5lZCB0aGUgcGFja2FnZVxcbisgKlxcbisgKiBVc2UgdGhpcyB0byBzZXJpYWxpemUgYWNjZXNzIHRvIHBhY2thZ2UtcHJpdmF0ZSBkYXRhLiBSZWxlYXNlIHRoZSBsb2NrXFxuKyAqIHdpdGggcGh5X3BhY2thZ2VfdW5sb2NrKCkuXFxuKyAqL1xcbit2b2lkIHBoeV9wYWNrYWdlX2xvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4re1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uYnVzLVxcdTAwM2VzaGFyZWRfbG9jayk7XFxuK31cXG4rRVhQT1JUX1NZTUJPTF9HUEwocGh5X3BhY2thZ2VfbG9jayk7XFxuK1xcbisvKipcXG4rICogcGh5X3BhY2thZ2VfdW5sb2NrIC0gcmVsZWFzZSB0aGUgUEhZIHBhY2thZ2UgbG9ja1xcbisgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHRoYXQgaGFzIGpvaW5lZCB0aGUgcGFja2FnZVxcbisgKi9cXG4rdm9pZCBwaHlfcGFja2FnZV91bmxvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4re1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5idXMtXFx1MDAzZXNoYXJlZF9sb2NrKTtcXG4rfVxcbitFWFBPUlRfU1lNQk9MX0dQTChwaHlfcGFja2FnZV91bmxvY2spO1xcbitcXG4gc3RhdGljIGludCBwaHlfcGFja2FnZV9hZGRyZXNzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuIFxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgYWRkcl9vZmZzZXQpXFxuIHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oXFxuaW5kZXggMGZiYTI0NWY5NzQ1OC4uYzZlMjZhYzZiMjhmMCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGliLmhcXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5bGliLmhcXG5AQCAtMTIsNiArMTIsOCBAQCBzdHJ1Y3QgbWlpX2J1cztcXG4gXFxuIHN0cnVjdCBkZXZpY2Vfbm9kZSAqcGh5X3BhY2thZ2VfZ2V0X25vZGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XFxuIHZvaWQgKnBoeV9wYWNrYWdlX2dldF9wcml2KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xcbit2b2lkIHBoeV9wYWNrYWdlX2xvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XFxuK3ZvaWQgcGh5X3BhY2thZ2VfdW5sb2NrKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xcbiBpbnQgX19waHlfcGFja2FnZV9yZWFkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHVuc2lnbmVkIGludCBhZGRyX29mZnNldCxcXG4gXFx0XFx0ICAgICAgIHUzMiByZWdudW0pO1xcbiBpbnQgX19waHlfcGFja2FnZV93cml0ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1bnNpZ25lZCBpbnQgYWRkcl9vZmZzZXQsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHRwL0tjb25maWcgYi9kcml2ZXJzL3B0cC9LY29uZmlnXFxuaW5kZXggYjkzNjQwY2EwOGI3Mi4uZmViNTBmOGNjNDA2YSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3B0cC9LY29uZmlnXFxuKysrIGIvZHJpdmVycy9wdHAvS2NvbmZpZ1xcbkBAIC03OCw2ICs3OCw3IEBAIGNvbmZpZyBEUDgzNjQwX1BIWVxcbiBcXHRkZXBlbmRzIG9uIFBIWUxJQlxcbiBcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLXFxuIFxcdHNlbGVjdCBDUkMzMlxcbitcXHRzZWxlY3QgUEhZX1BBQ0tBR0VcXG4gXFx0aGVscFxcbiBcXHQgIFN1cHBvcnRzIHRoZSBEUDgzNjQwIFBIWVRFUiB3aXRoIElFRUUgMTU4OCBmZWF0dXJlcy5cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU0OjAxLjcxMTc5NTE5OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjEwNjQ3MzkwNjg3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEUDgzNjQwX1BIWVwiLFxuICAgIFwiTkVUV09SS19QSFlfVElNRVNUQU1QSU5HXCIsXG4gICAgXCJQSFlMSUJcIixcbiAgICBcIlBUUF8xNTg4X0NMT0NLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZHA4MzY0MF9wcm9iZVwiLFxuICAgIFwiZHA4MzY0MF9yZW1vdmVcIixcbiAgICBcInBoeV9wYWNrYWdlX2xvY2tcIixcbiAgICBcInBoeV9wYWNrYWdlX3VubG9ja1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyB0aGUgRFA4MzY0MCBQSFkgZHJpdmVyIHRvIHVzZSB0aGUgc3RhbmRhcmQgcGh5X3BhY2thZ2UgQVBJIGZvciBzaGFyZWQgY2xvY2sgaW5pdGlhbGl6YXRpb24sIHJlcGxhY2luZyBhIGN1c3RvbSBnbG9iYWwgbGlzdC4gSXQgYWxzbyBpbnRyb2R1Y2VzIHBoeV9wYWNrYWdlX2xvY2sgYW5kIHBoeV9wYWNrYWdlX3VubG9jayB0byBzZXJpYWxpemUgYWNjZXNzIHRvIHBhY2thZ2UtcHJpdmF0ZSBkYXRhLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCB0aGUgcHJvYmUgYW5kIHJlbW92ZSBwYXRocyBvZiB0aGUgUEhZIGRyaXZlciwgd2hpY2ggY2FuIGJlIHJlYWNoZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBieSBlbXVsYXRpbmcgYW4gTURJTyBidXMgb3IgYSBVU0IgbmV0d29yayBkZXZpY2Ugd2l0aCB0aGUgc3BlY2lmaWMgUEhZIElELlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxNWI3MGRkYWE3ZjNkZmYzNmJkNTFlN2UyYzY4ZWVjMDg1MTlhMjNmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMTAgMTY6NTM6NTkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jIGIvZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuY1xuaW5kZXggOTg0NzJhYmRkMzkyMC4uNjg2N2U3YzZmM2I3ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmNcbkBAIC0yMSw2ICsyMSw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXCJkcDgzNjQwX3JlZy5oXCJcbisjaW5jbHVkZSBcInBoeWxpYi5oXCJcbiBcbiAjZGVmaW5lIERQODM2NDBfUEhZX0lEXHQweDIwMDA1Y2UxXG4gI2RlZmluZSBQQUdFU0VMXHRcdDB4MTNcbkBAIC0xMjgsMTAgKzEyOSw2IEBAIHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUge1xuIH07XG4gXG4gc3RydWN0IGRwODM2NDBfY2xvY2sge1xuLVx0Lyoga2VlcHMgdGhlIGluc3RhbmNlIGluIHRoZSAncGh5dGVyX2Nsb2NrcycgbGlzdCAqL1xuLVx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xuLVx0Lyogd2UgY3JlYXRlIG9uZSBjbG9jayBpbnN0YW5jZSBwZXIgTUlJIGJ1cyAqL1xuLVx0c3RydWN0IG1paV9idXMgKmJ1cztcbiBcdC8qIHByb3RlY3RzIGV4dGVuZGVkIHJlZ2lzdGVycyBmcm9tIGNvbmN1cnJlbnQgYWNjZXNzICovXG4gXHRzdHJ1Y3QgbXV0ZXggZXh0cmVnX2xvY2s7XG4gXHQvKiByZW1lbWJlcnMgd2hpY2ggcGFnZSB3YXMgbGFzdCBzZWxlY3RlZCAqL1xuQEAgLTE0Niw2ICsxNDMsOCBAQCBzdHJ1Y3QgZHA4MzY0MF9jbG9jayB7XG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIHBoeWxpc3Q7XG4gXHQvKiByZWZlcmVuY2UgdG8gb3VyIFBUUCBoYXJkd2FyZSBjbG9jayAqL1xuIFx0c3RydWN0IHB0cF9jbG9jayAqcHRwX2Nsb2NrO1xuK1x0LyogcHJvdGVjdGVkIGJ5IHRoZSBQVFAgY29yZSBwaW4gY29uZmlndXJhdGlvbiBsb2NrICovXG4rXHRzdHJ1Y3QgcHRwX3Bpbl9kZXNjIHBpbl9jb25maWdbRFA4MzY0MF9OX1BJTlNdO1xuIH07XG4gXG4gLyogZ2xvYmFscyAqL1xuQEAgLTIwNiwxMCArMjA1LDYgQEAgc3RhdGljIHZvaWQgZHA4MzY0MF9ncGlvX2RlZmF1bHRzKHN0cnVjdCBwdHBfcGluX2Rlc2MgKnBkKVxuIFx0fVxuIH1cbiBcbi0vKiBhIGxpc3Qgb2YgY2xvY2tzIGFuZCBhIG11dGV4IHRvIHByb3RlY3QgaXQgKi9cbi1zdGF0aWMgTElTVF9IRUFEKHBoeXRlcl9jbG9ja3MpO1xuLXN0YXRpYyBERUZJTkVfTVVURVgocGh5dGVyX2Nsb2Nrc19sb2NrKTtcbi1cbiBzdGF0aWMgdm9pZCByeF90aW1lc3RhbXBfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xuIFxuIC8qIGV4dGVuZGVkIHJlZ2lzdGVyIGFjY2VzcyBmdW5jdGlvbnMgKi9cbkBAIC05NTMsMTMgKzk0OCwxMiBAQCBzdGF0aWMgdm9pZCBkZWNvZGVfc3RhdHVzX2ZyYW1lKHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUgKmRwODM2NDAsXG4gXHR9XG4gfVxuIFxuLXN0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfaW5pdChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2ssIHN0cnVjdCBtaWlfYnVzICpidXMpXG4rc3RhdGljIHZvaWQgZHA4MzY0MF9jbG9ja19pbml0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaylcbiB7XG4tXHRJTklUX0xJU1RfSEVBRChcdTAwMjZjbG9jay1cdTAwM2VsaXN0KTtcbi1cdGNsb2NrLVx1MDAzZWJ1cyA9IGJ1cztcbiBcdG11dGV4X2luaXQoXHUwMDI2Y2xvY2stXHUwMDNlZXh0cmVnX2xvY2spO1xuIFx0bXV0ZXhfaW5pdChcdTAwMjZjbG9jay1cdTAwM2VjbG9ja19sb2NrKTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmNsb2NrLVx1MDAzZXBoeWxpc3QpO1xuK1x0Y2xvY2stXHUwMDNlY2Fwcy5waW5fY29uZmlnID0gY2xvY2stXHUwMDNlcGluX2NvbmZpZztcbiBcdGNsb2NrLVx1MDAzZWNhcHMub3duZXIgPSBUSElTX01PRFVMRTtcbiBcdHNwcmludGYoY2xvY2stXHUwMDNlY2Fwcy5uYW1lLCBcImRwODM2NDAgdGltZXJcIik7XG4gXHRjbG9jay1cdTAwM2VjYXBzLm1heF9hZGpcdD0gMTk1MzEyNDtcbkBAIC05NzcsMTQgKzk3MSw4IEBAIHN0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfaW5pdChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2ssIHN0cnVjdCBtaWlfYnVzICpidXMpXG4gXHRjbG9jay1cdTAwM2VjYXBzLnNldHRpbWU2NFx0PSBwdHBfZHA4MzY0MF9zZXR0aW1lO1xuIFx0Y2xvY2stXHUwMDNlY2Fwcy5lbmFibGVcdD0gcHRwX2RwODM2NDBfZW5hYmxlO1xuIFx0Y2xvY2stXHUwMDNlY2Fwcy52ZXJpZnlcdD0gcHRwX2RwODM2NDBfdmVyaWZ5O1xuLVx0Lypcbi1cdCAqIENvbnZlcnQgdGhlIG1vZHVsZSBwYXJhbSBkZWZhdWx0cyBpbnRvIGEgZHluYW1pYyBwaW4gY29uZmlndXJhdGlvbi5cbi1cdCAqL1xuK1x0LyogSW5pdGlhbGl6ZSB0aGUgcnVudGltZSBwaW4gY29uZmlndXJhdGlvbiBmcm9tIGdwaW9fdGFiLiAqL1xuIFx0ZHA4MzY0MF9ncGlvX2RlZmF1bHRzKGNsb2NrLVx1MDAzZWNhcHMucGluX2NvbmZpZyk7XG4tXHQvKlxuLVx0ICogR2V0IGEgcmVmZXJlbmNlIHRvIHRoaXMgYnVzIGluc3RhbmNlLlxuLVx0ICovXG4tXHRnZXRfZGV2aWNlKFx1MDAyNmJ1cy1cdTAwM2VkZXYpO1xuIH1cbiBcbiBzdGF0aWMgaW50IGNob29zZV90aGlzX3BoeShzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2ssXG5AQCAtOTk5LDU4ICs5ODcsNiBAQCBzdGF0aWMgaW50IGNob29zZV90aGlzX3BoeShzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2ssXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpkcDgzNjQwX2Nsb2NrX2dldChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2spXG4te1xuLVx0aWYgKGNsb2NrKVxuLVx0XHRtdXRleF9sb2NrKFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuLVx0cmV0dXJuIGNsb2NrO1xuLX1cbi1cbi0vKlxuLSAqIExvb2sgdXAgYW5kIGxvY2sgYSBjbG9jayBieSBidXMgaW5zdGFuY2UuXG4tICogSWYgdGhlcmUgaXMgbm8gY2xvY2sgZm9yIHRoaXMgYnVzLCB0aGVuIGNyZWF0ZSBpdCBmaXJzdC5cbi0gKi9cbi1zdGF0aWMgc3RydWN0IGRwODM2NDBfY2xvY2sgKmRwODM2NDBfY2xvY2tfZ2V0X2J1cyhzdHJ1Y3QgbWlpX2J1cyAqYnVzKVxuLXtcbi1cdHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jayA9IE5VTEwsICp0bXA7XG4tXHRzdHJ1Y3QgbGlzdF9oZWFkICp0aGlzO1xuLVxuLVx0bXV0ZXhfbG9jayhcdTAwMjZwaHl0ZXJfY2xvY2tzX2xvY2spO1xuLVxuLVx0bGlzdF9mb3JfZWFjaCh0aGlzLCBcdTAwMjZwaHl0ZXJfY2xvY2tzKSB7XG4tXHRcdHRtcCA9IGxpc3RfZW50cnkodGhpcywgc3RydWN0IGRwODM2NDBfY2xvY2ssIGxpc3QpO1xuLVx0XHRpZiAodG1wLVx1MDAzZWJ1cyA9PSBidXMpIHtcbi1cdFx0XHRjbG9jayA9IHRtcDtcbi1cdFx0XHRicmVhaztcbi1cdFx0fVxuLVx0fVxuLVx0aWYgKGNsb2NrKVxuLVx0XHRnb3RvIG91dDtcbi1cbi1cdGNsb2NrID0ga3phbGxvY19vYmooc3RydWN0IGRwODM2NDBfY2xvY2spO1xuLVx0aWYgKCFjbG9jaylcbi1cdFx0Z290byBvdXQ7XG4tXG4tXHRjbG9jay1cdTAwM2VjYXBzLnBpbl9jb25maWcgPSBremFsbG9jX29ianMoc3RydWN0IHB0cF9waW5fZGVzYyxcbi1cdFx0XHRcdFx0ICAgICAgRFA4MzY0MF9OX1BJTlMpO1xuLVx0aWYgKCFjbG9jay1cdTAwM2VjYXBzLnBpbl9jb25maWcpIHtcbi1cdFx0a2ZyZWUoY2xvY2spO1xuLVx0XHRjbG9jayA9IE5VTEw7XG4tXHRcdGdvdG8gb3V0O1xuLVx0fVxuLVx0ZHA4MzY0MF9jbG9ja19pbml0KGNsb2NrLCBidXMpO1xuLVx0bGlzdF9hZGRfdGFpbChcdTAwMjZjbG9jay1cdTAwM2VsaXN0LCBcdTAwMjZwaHl0ZXJfY2xvY2tzKTtcbi1vdXQ6XG4tXHRtdXRleF91bmxvY2soXHUwMDI2cGh5dGVyX2Nsb2Nrc19sb2NrKTtcbi1cbi1cdHJldHVybiBkcDgzNjQwX2Nsb2NrX2dldChjbG9jayk7XG4tfVxuLVxuLXN0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfcHV0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaylcbi17XG4tXHRtdXRleF91bmxvY2soXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4tfVxuLVxuIHN0YXRpYyBpbnQgZHA4MzY0MF9zb2Z0X3Jlc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4ge1xuIFx0aW50IHJldDtcbkBAIC0xNDAwLDIwICsxMzM2LDMxIEBAIHN0YXRpYyBpbnQgZHA4MzY0MF90c19pbmZvKHN0cnVjdCBtaWlfdGltZXN0YW1wZXIgKm1paV90cyxcbiBcbiBzdGF0aWMgaW50IGRwODM2NDBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiB7XG4tXHRzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2s7XG4gXHRzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICpkcDgzNjQwO1xuLVx0aW50IGVyciA9IC1FTk9NRU0sIGk7XG4rXHRzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2s7XG4rXHRpbnQgZXJyLCBpO1xuIFxuIFx0aWYgKHBoeWRldi1cdTAwM2VtZGlvLmFkZHIgPT0gQlJPQURDQVNUX0FERFIpXG4gXHRcdHJldHVybiAwO1xuIFxuLVx0Y2xvY2sgPSBkcDgzNjQwX2Nsb2NrX2dldF9idXMocGh5ZGV2LVx1MDAzZW1kaW8uYnVzKTtcbi1cdGlmICghY2xvY2spXG4tXHRcdGdvdG8gbm9fY2xvY2s7XG4rXHRlcnIgPSBwaHlfcGFja2FnZV9qb2luKHBoeWRldiwgQlJPQURDQVNUX0FERFIsIHNpemVvZigqY2xvY2spKTtcbitcdGlmIChlcnIpXG4rXHRcdHJldHVybiBlcnI7XG4rXG4rXHRjbG9jayA9IHBoeV9wYWNrYWdlX2dldF9wcml2KHBoeWRldik7XG4rXHQvKiBFbnN1cmUgb3RoZXIgUEhZIHByb2JlcyB3YWl0IGZvciBzaGFyZWQgY2xvY2sgaW5pdGlhbGl6YXRpb24uICovXG4rXHRwaHlfcGFja2FnZV9sb2NrKHBoeWRldik7XG4rXHRpZiAocGh5X3BhY2thZ2VfcHJvYmVfb25jZShwaHlkZXYpKVxuK1x0XHRkcDgzNjQwX2Nsb2NrX2luaXQoY2xvY2spO1xuK1x0cGh5X3BhY2thZ2VfdW5sb2NrKHBoeWRldik7XG4rXG4rXHRtdXRleF9sb2NrKFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuIFxuIFx0ZHA4MzY0MCA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUpO1xuLVx0aWYgKCFkcDgzNjQwKVxuK1x0aWYgKCFkcDgzNjQwKSB7XG4rXHRcdGVyciA9IC1FTk9NRU07XG4gXHRcdGdvdG8gbm9fbWVtb3J5O1xuK1x0fVxuIFxuIFx0ZHA4MzY0MC1cdTAwM2VwaHlkZXYgPSBwaHlkZXY7XG4gXHRkcDgzNjQwLVx1MDAzZW1paV90cy5yeHRzdGFtcCA9IGRwODM2NDBfcnh0c3RhbXA7XG5AQCAtMTQ1MCwxNSArMTM5NywyMCBAQCBzdGF0aWMgaW50IGRwODM2NDBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdH0gZWxzZVxuIFx0XHRsaXN0X2FkZF90YWlsKFx1MDAyNmRwODM2NDAtXHUwMDNlbGlzdCwgXHUwMDI2Y2xvY2stXHUwMDNlcGh5bGlzdCk7XG4gXG4tXHRkcDgzNjQwX2Nsb2NrX3B1dChjbG9jayk7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4rXG4gXHRyZXR1cm4gMDtcbiBcbiBub19yZWdpc3RlcjpcbiBcdGNsb2NrLVx1MDAzZWNob3NlbiA9IE5VTEw7XG4rXHRjbG9jay1cdTAwM2VwdHBfY2xvY2sgPSBOVUxMO1xuK1x0cGh5ZGV2LVx1MDAzZWRlZmF1bHRfdGltZXN0YW1wID0gZmFsc2U7XG4rXHRwaHlkZXYtXHUwMDNlbWlpX3RzID0gTlVMTDtcbitcdHBoeWRldi1cdTAwM2Vwcml2ID0gTlVMTDtcbiBcdGtmcmVlKGRwODM2NDApO1xuIG5vX21lbW9yeTpcbi1cdGRwODM2NDBfY2xvY2tfcHV0KGNsb2NrKTtcbi1ub19jbG9jazpcbitcdG11dGV4X3VubG9jayhcdTAwMjZjbG9jay1cdTAwM2VjbG9ja19sb2NrKTtcbitcdHBoeV9wYWNrYWdlX2xlYXZlKHBoeWRldik7XG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbkBAIC0xNDY3LDcgKzE0MTksNiBAQCBzdGF0aWMgdm9pZCBkcDgzNjQwX3JlbW92ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0c3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrO1xuIFx0c3RydWN0IGxpc3RfaGVhZCAqdGhpcywgKm5leHQ7XG4gXHRzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICp0bXAsICpkcDgzNjQwID0gcGh5ZGV2LVx1MDAzZXByaXY7XG4tXHRib29sIHJlbW92ZV9jbG9jayA9IGZhbHNlO1xuIFxuIFx0aWYgKHBoeWRldi1cdTAwM2VtZGlvLmFkZHIgPT0gQlJPQURDQVNUX0FERFIpXG4gXHRcdHJldHVybjtcbkBAIC0xNDgwLDcgKzE0MzEsOCBAQCBzdGF0aWMgdm9pZCBkcDgzNjQwX3JlbW92ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmRwODM2NDAtXHUwMDNlcnhfcXVldWUpO1xuIFx0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmRwODM2NDAtXHUwMDNldHhfcXVldWUpO1xuIFxuLVx0Y2xvY2sgPSBkcDgzNjQwX2Nsb2NrX2dldChkcDgzNjQwLVx1MDAzZWNsb2NrKTtcbitcdGNsb2NrID0gZHA4MzY0MC1cdTAwM2VjbG9jaztcbitcdG11dGV4X2xvY2soXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4gXG4gXHRpZiAoZHA4MzY0MCA9PSBjbG9jay1cdTAwM2VjaG9zZW4pIHtcbiBcdFx0cHRwX2Nsb2NrX3VucmVnaXN0ZXIoY2xvY2stXHUwMDNlcHRwX2Nsb2NrKTtcbkBAIC0xNDk1LDIzICsxNDQ3LDEwIEBAIHN0YXRpYyB2b2lkIGRwODM2NDBfcmVtb3ZlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRcdH1cbiBcdH1cbiBcbi1cdGlmICghY2xvY2stXHUwMDNlY2hvc2VuIFx1MDAyNlx1MDAyNiBsaXN0X2VtcHR5KFx1MDAyNmNsb2NrLVx1MDAzZXBoeWxpc3QpKVxuLVx0XHRyZW1vdmVfY2xvY2sgPSB0cnVlO1xuLVxuLVx0ZHA4MzY0MF9jbG9ja19wdXQoY2xvY2spO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuIFx0a2ZyZWUoZHA4MzY0MCk7XG4gXG4tXHRpZiAocmVtb3ZlX2Nsb2NrKSB7XG4tXHRcdG11dGV4X2xvY2soXHUwMDI2cGh5dGVyX2Nsb2Nrc19sb2NrKTtcbi1cdFx0bGlzdF9kZWwoXHUwMDI2Y2xvY2stXHUwMDNlbGlzdCk7XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZwaHl0ZXJfY2xvY2tzX2xvY2spO1xuLVxuLVx0XHRtdXRleF9kZXN0cm95KFx1MDAyNmNsb2NrLVx1MDAzZWV4dHJlZ19sb2NrKTtcbi1cdFx0bXV0ZXhfZGVzdHJveShcdTAwMjZjbG9jay1cdTAwM2VjbG9ja19sb2NrKTtcbi1cdFx0cHV0X2RldmljZShcdTAwMjZjbG9jay1cdTAwM2VidXMtXHUwMDNlZGV2KTtcbi1cdFx0a2ZyZWUoY2xvY2stXHUwMDNlY2Fwcy5waW5fY29uZmlnKTtcbi1cdFx0a2ZyZWUoY2xvY2spO1xuLVx0fVxuK1x0cGh5X3BhY2thZ2VfbGVhdmUocGh5ZGV2KTtcbiB9XG4gXG4gc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGRwODM2NDBfZHJpdmVyW10gPSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuY1xuaW5kZXggMTZhZThkMWMxZjg5YS4uNzM1ODA2YzViZWE4OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuY1xuQEAgLTUyLDYgKzUyLDI5IEBAIHZvaWQgKnBoeV9wYWNrYWdlX2dldF9wcml2KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHBoeV9wYWNrYWdlX2dldF9wcml2KTtcbiBcbisvKipcbisgKiBwaHlfcGFja2FnZV9sb2NrIC0gYWNxdWlyZSB0aGUgUEhZIHBhY2thZ2UgbG9ja1xuKyAqIEBwaHlkZXY6IFBIWSBkZXZpY2UgdGhhdCBoYXMgam9pbmVkIHRoZSBwYWNrYWdlXG4rICpcbisgKiBVc2UgdGhpcyB0byBzZXJpYWxpemUgYWNjZXNzIHRvIHBhY2thZ2UtcHJpdmF0ZSBkYXRhLiBSZWxlYXNlIHRoZSBsb2NrXG4rICogd2l0aCBwaHlfcGFja2FnZV91bmxvY2soKS5cbisgKi9cbit2b2lkIHBoeV9wYWNrYWdlX2xvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbit7XG4rXHRtdXRleF9sb2NrKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmJ1cy1cdTAwM2VzaGFyZWRfbG9jayk7XG4rfVxuK0VYUE9SVF9TWU1CT0xfR1BMKHBoeV9wYWNrYWdlX2xvY2spO1xuK1xuKy8qKlxuKyAqIHBoeV9wYWNrYWdlX3VubG9jayAtIHJlbGVhc2UgdGhlIFBIWSBwYWNrYWdlIGxvY2tcbisgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHRoYXQgaGFzIGpvaW5lZCB0aGUgcGFja2FnZVxuKyAqL1xuK3ZvaWQgcGh5X3BhY2thZ2VfdW5sb2NrKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4re1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmJ1cy1cdTAwM2VzaGFyZWRfbG9jayk7XG4rfVxuK0VYUE9SVF9TWU1CT0xfR1BMKHBoeV9wYWNrYWdlX3VubG9jayk7XG4rXG4gc3RhdGljIGludCBwaHlfcGFja2FnZV9hZGRyZXNzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4gXHRcdFx0ICAgICAgIHVuc2lnbmVkIGludCBhZGRyX29mZnNldClcbiB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oXG5pbmRleCAwZmJhMjQ1Zjk3NDU4Li5jNmUyNmFjNmIyOGYwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5bGliLmhcbkBAIC0xMiw2ICsxMiw4IEBAIHN0cnVjdCBtaWlfYnVzO1xuIFxuIHN0cnVjdCBkZXZpY2Vfbm9kZSAqcGh5X3BhY2thZ2VfZ2V0X25vZGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG4gdm9pZCAqcGh5X3BhY2thZ2VfZ2V0X3ByaXYoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG4rdm9pZCBwaHlfcGFja2FnZV9sb2NrKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuK3ZvaWQgcGh5X3BhY2thZ2VfdW5sb2NrKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuIGludCBfX3BoeV9wYWNrYWdlX3JlYWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdW5zaWduZWQgaW50IGFkZHJfb2Zmc2V0LFxuIFx0XHQgICAgICAgdTMyIHJlZ251bSk7XG4gaW50IF9fcGh5X3BhY2thZ2Vfd3JpdGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdW5zaWduZWQgaW50IGFkZHJfb2Zmc2V0LFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHRwL0tjb25maWcgYi9kcml2ZXJzL3B0cC9LY29uZmlnXG5pbmRleCBiOTM2NDBjYTA4YjcyLi5mZWI1MGY4Y2M0MDZhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9wdHAvS2NvbmZpZ1xuKysrIGIvZHJpdmVycy9wdHAvS2NvbmZpZ1xuQEAgLTc4LDYgKzc4LDcgQEAgY29uZmlnIERQODM2NDBfUEhZXG4gXHRkZXBlbmRzIG9uIFBIWUxJQlxuIFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS1xuIFx0c2VsZWN0IENSQzMyXG4rXHRzZWxlY3QgUEhZX1BBQ0tBR0VcbiBcdGhlbHBcbiBcdCAgU3VwcG9ydHMgdGhlIERQODM2NDAgUEhZVEVSIHdpdGggSUVFRSAxNTg4IGZlYXR1cmVzLlxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTY6NTQ6MDEuNzExNzk2MzQ5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTI3ODM1MzEzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBIWSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdG91Y2hlcyB0aGUgYGRwODM2NDAuY2AsIGBwaHlfcGFja2FnZS5jYCwgYHBoeWxpYi5oYCwgYW5kIGBLY29uZmlnYCBmaWxlcy4gSXQncyBlc3NlbnRpYWxseSByZWZhY3RvcmluZyB0aGUgYGRwODM2NDBgIFBIWSBkcml2ZXIgdG8gdXNlIHRoZSBgcGh5X3BhY2thZ2VgIG1lY2hhbmlzbSwgcmVwbGFjaW5nIGEgY3VzdG9tIGdsb2JhbCBjbG9jayBsaXN0IHdpdGggdGhlIHN0YW5kYXJkIG9uZS4gVGhleSd2ZSBhZGRlZCBgcGh5X3BhY2thZ2VfbG9ja2AgYW5kIGBwaHlfcGFja2FnZV91bmxvY2tgIHRvIHRoZSBgcGh5X3BhY2thZ2UuY2AgZmlsZSBhbmQgbW9kaWZpZWQgdGhlIGBkcDgzNjQwX3Byb2JlYCBhbmQgYGRwODM2NDBfcmVtb3ZlYCBmdW5jdGlvbnMgdG8gdXNlIHRoZSBzdGFuZGFyZCBsb2NraW5nIGFuZCBtYW5hZ2VtZW50IHByaW1pdGl2ZXMgb2YgdGhlIG5ldyBwYWNrYWdlIHN5c3RlbS4gVGhleSd2ZSBhbHNvIGFkZGVkIGBzZWxlY3QgUEhZX1BBQ0tBR0VgIHRvIHRoZSBgRFA4MzY0MF9QSFlgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGluIHRoZSBgS2NvbmZpZ2AgZmlsZSwgd2hpY2ggbWFrZXMgc2Vuc2UuXG5cbk15IGZpcnN0IHRob3VnaHQgaXMsIGNhbiBJIHJlYWNoIHRoaXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBmb3IgdGVzdGluZz8gVGhlIGBkcDgzNjQwYCBkcml2ZXIgaXMsIGFmdGVyIGFsbCwgYSBQSFkgZHJpdmVyLCB3aGljaCBhcmUgdHlwaWNhbGx5IHByb2JlZCB3aGVuIGEgbmV0d29yayBkZXZpY2UgY29ubmVjdHMgdG8gYW4gTURJTyBidXMgYW5kIHRoZSBQSFkgSUQgbWF0Y2hlcy4gUUVNVSBlbXVsYXRpb24gb2YgTURJTyBidXNlcyBhbmQgUEhZcyBpcyB1c3VhbGx5IGZlYXNpYmxlLCBhbmQgYGRwODM2NDBgIGl0c2VsZiBpcyBhIGZhaXJseSBzdGFuZGFyZCBQSFkuXG5cbk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiBpczogY2FuIHN5emthbGxlciBmdXp6IHRoaXM/IFN5emthbGxlciAqZG9lcyogaGF2ZSBzdXBwb3J0IGZvciBNRElPL1BIWSBmdXp6aW5nLCB0eXBpY2FsbHkgdGhyb3VnaCBlbXVsYXRlZCBuZXR3b3JrIGRldmljZXMgbGlrZSBgbWFjYmAsIG9yIG1heWJlIGV2ZW4gZHVtbXkgTURJTyBidXNlcy4gSSBrbm93IEkgY2FuIHVzZSBgdmV0aGAgb3IgYHR1bmAgZGV2aWNlcywgYnV0IHRoZXkgZG9uJ3QgaGF2ZSBidWlsdC1pbiBQSFlzLiBIbW0sIEkgdGhvdWdodCBzeXprYWxsZXIgaGFkIGBzeXpfbWRpb19yZWFkYCwgYHN5el9tZGlvX3dyaXRlYCBjYWxscywgYnV0IG1heWJlIG5vdC4uLlxuXG5Pa2F5LCBidXQgdGhlIGtleSBpcyB0aGF0IGBkcDgzNjQwX3Byb2JlYCBpcyBjYWxsZWQgd2hlbiBhIFBIWSBkZXZpY2UgaXMgY3JlYXRlZCwgcmlnaHQ/IENhbiBhIFBIWSBkZXZpY2UgYmUgY3JlYXRlZCBmcm9tIHVzZXJzcGFjZT8gTm8sIG5vdCBkaXJlY3RseSB2aWEgbmV0bGluayBvciBzeXNmcywgYXMgdXN1YWxseSBNRElPIGJ1cyBzY2FubmluZyBpcyB0aGUgbWVhbnMuIFdhaXQsIHRoZXJlIGFyZSBgbWRpby1iY20tdW5pbWFjYCBvciBgZml4ZWQtcGh5YCwgcmlnaHQ/XG5cbkFjdHVhbGx5LCBzeXprYWxsZXIgKmRvZXMqIGZ1enogTURJTyBidXNlcyB0aHJvdWdoIHZpcnR1YWwgZHJpdmVycyBvciBuZXRsaW5rIGludGVyZmFjZXMuIE9rYXksIEkgbmVlZCB0byBjaGVjayBpZiB0aGUgYGRwODM2NDBfcHJvYmVgIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZS4gSSB3aWxsIGdyZXAgZm9yIGBkcDgzNjQwX3Byb2JlYCBvciBldmVuIGBEUDgzNjQwX1BIWV9JRGAgaW4gdGhlIGtlcm5lbCBzb3VyY2UuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBzeXprYWxsZXIgY2FuIHRyaWdnZXIgdGhpcyBjb2RlIHBhdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0ODEsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NTgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNjo1NDoxMC45OTAxNTIzNDNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYyNTA4NzM3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJEUDgzNjQwX1BIWV9JRFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTI1LVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM6MjY6I2RlZmluZSBEUDgzNjQwX1BIWV9JRFxcdDB4MjAwMDVjZTFcXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTI3LSNkZWZpbmUgUEFHRVNFTFxcdFxcdDB4MTNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM9MTQ1Nj1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZHA4MzY0MF9kcml2ZXJbXSA9IHtcXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTE0NTcte1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM6MTQ1ODpcXHQucGh5X2lkXFx0XFx0PSBEUDgzNjQwX1BIWV9JRCxcXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTE0NTktXFx0LnBoeV9pZF9tYXNrXFx0PSAweGZmZmZmZmYwLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYz0xNDc3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgZHA4MzY0MF90YmxbXSA9IHtcXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jOjE0Nzg6XFx0eyBEUDgzNjQwX1BIWV9JRCwgMHhmZmZmZmZmMCB9LFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTQ3OS1cXHR7IH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTY6NTQ6MTIuNjE1MjQzNzgyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM4MDQ4Mzg0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERQODM2NDAgUEhZIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgY2xlYXJseSBmb2N1c2VkIG9uIHRoZSBgZHA4MzY0MGAgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdG91Y2hpbmcgYGRwODM2NDBfcHJvYmVgIGFuZCBgZHA4MzY0MF9yZW1vdmVgLiBJbnRlcmVzdGluZyB0aGF0IGl0J3MgYWxzbyBhZGRpbmcgYHBoeV9wYWNrYWdlX2xvY2tgIGFuZCBgcGh5X3BhY2thZ2VfdW5sb2NrYCB0byBgcGh5X3BhY2thZ2UuY2AuIEhvbGQgb24sIGBwaHlfcGFja2FnZV9sb2NrYCBpcyAqZXhwb3J0ZWQqPyBUaGF0IG1lYW5zIG90aGVyIFBIWSBkcml2ZXJzIGNvdWxkIHBvdGVudGlhbGx5IGxldmVyYWdlIHRoaXMgbmV3IGxvY2tpbmcgbWVjaGFuaXNtLiBUaGF0J3MgYSBnb29kIGRlc2lnbiBkZWNpc2lvbjsgbWluaW1pemluZyBjb2RlIGR1cGxpY2F0aW9uIGlzIGFsd2F5cyBhIHBsdXMuXG5cbkJ1dCB0aGUgY29yZSBvZiB0aGUgY2hhbmdlIGRlZmluaXRlbHkgc2VlbXMgdG8gYmUgd2l0aGluIGBkcDgzNjQwLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJjYW4gc3l6a2FsbGVyIGhpdCBgZHA4MzY0MF9wcm9iZWA/XCIgS25vd2luZyB0aGUga2VybmVsJ3MgZnV6emluZyBjYXBhYmlsaXRpZXMgaXMgY3J1Y2lhbC4gSWYgc3l6a2FsbGVyIGNhbiB0cmlnZ2VyIGEgUEhZIHByb2JlLCB0aGF0J3Mgd2hlcmUgSSBuZWVkIHRvIGZvY3VzIG15IGFuYWx5c2lzIGZvciBwb3RlbnRpYWwgaXNzdWVzLiBUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzLCB3aGF0IGFyZSB0aGUgZW50cnkgcG9pbnRzIGZvciBzeXprYWxsZXIgdG8gcmVhY2ggdGhpcyBmdW5jdGlvbj8gSXQgY291bGQgcmVnaXN0ZXIgYW4gTURJTyBkZXZpY2Ugb3IgbGV2ZXJhZ2UgYSB2aXJ0dWFsIE1ESU8gYnVzLiBJIHRoaW5rIHRoZXJlIHdhcyBzb21ldGhpbmcgbGlrZSBgbWRpby1tb2NrdXBgIG9yIHNpbWlsYXIsIHJpZ2h0PyBMZXQgbWUgcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgdGhhdCB0byBtYWtlIHN1cmUuIEknbSBnb2luZyB0byBjaGVjay5cblxuXG4iLCJJbnB1dFRva2VucyI6Njk3MywiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNjo1NDoxNi45OTU3MzA4MjJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAzOTkwODIxMSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpby4qbW9ja3VwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNjo1NDoxOS4wMzU2NTAxMjJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTU4MTU4NTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipDb25zaWRlcmluZyBQSFkgRGV2aWNlIENyZWF0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEknbSBjdXJyZW50bHkgcG9uZGVyaW5nIHRoZSBtZWNoYW5pY3Mgb2YgUEhZIGRldmljZSBjcmVhdGlvbiB3aXRoaW4gdGhlIGZyYW1ld29yayB3ZSdyZSB3b3JraW5nIHdpdGguIFNwZWNpZmljYWxseSwgSSdtIHRyeWluZyB0byBwaW5wb2ludCB0aGUgZXhpc3RpbmcgcGF0aHdheXMgZm9yIGluc3RhbnRpYXRpb24gYW5kIHJlZ2lzdHJhdGlvbi4gQXJlIHRoZXJlIGVzdGFibGlzaGVkIGludGVyZmFjZXMgb3IgbWVjaGFuaXNtcyB0aGF0IGFsbG93IHVzIHRvIGRlZmluZSBhbmQgaW50ZWdyYXRlIHRoZXNlIHBoeXNpY2FsIGxheWVyIGNvbXBvbmVudHM/IE15IGltbWVkaWF0ZSBsaW5lIG9mIGlucXVpcnkgaW52b2x2ZXMgdW5kZXJzdGFuZGluZyB0aGUgYXZhaWxhYmxlIEFQSXMgYW5kIGV4cGxvcmluZyBhbnkgcG90ZW50aWFsIFwiaG9va3NcIiB3aXRoaW4gdGhlIHN5c3RlbSB0aGF0IG1pZ2h0IGZhY2lsaXRhdGUgc2VhbWxlc3MgaW50ZWdyYXRpb24uIFRoZSBmb2N1cyBpcyBlZmZpY2llbmN5OyBhcmUgdGhlcmUgc3RhbmRhcmRpemVkIHByb2Nlc3Nlcywgb3Igd2lsbCBhIG1vcmUgbWFudWFsLCBsb3dlci1sZXZlbCBhcHByb2FjaCBiZSByZXF1aXJlZD8gSSBuZWVkIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHRoZSBsZXZlbCBvZiBhYnN0cmFjdGlvbiB3ZSdyZSBhZmZvcmRlZCBpbiBjcmVhdGluZyB0aGVzZSBjcnVjaWFsIGhhcmR3YXJlIGludGVyZmFjZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0NDEsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNjo1NDoyMS45OTM4MTA4MDlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg5NzU2ODg0MCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpby4qZHVtbXlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU0OjIzLjg5MTM5NjI0OVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMjE1MDg4NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJbml0aWFsIENvbmNlcHQ6IFwiZml4ZWQtcGh5XCIqKlxuXG5SaWdodCwgbGV0J3MgY29uc2lkZXIgdGhpcyBcImZpeGVkLXBoeVwiIGNvbmNlcHQuIEltbWVkaWF0ZWx5LCBteSBtaW5kIHN0YXJ0cyByYWNpbmcuIFdoYXQgZXhhY3RseSBhcmUgd2UgZml4aW5nPyBJcyB0aGlzIHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBwaHlzaWNhbCBsYXllciBpbXBsZW1lbnRhdGlvbiwgb3IgYSBicm9hZGVyIGFyY2hpdGVjdHVyYWwgYXBwcm9hY2g/IFwiRml4ZWRcIiBpbXBsaWVzIGEgZGVncmVlIG9mIGltbXV0YWJpbGl0eSwgYSBoYXJkZW5pbmcsIHBlcmhhcHMuIEFyZSB3ZSB0YWxraW5nIGFib3V0IGEgcHJlLWRlZmluZWQgUEhZIGludGVyZmFjZSwgc2V0IHBhcmFtZXRlcnMsIG9yIGEgcmlnaWQgaGFyZHdhcmUgY29uZmlndXJhdGlvbj8gSXQncyBpbnRyaWd1aW5nLCBzdWdnZXN0aW5nIGEgcG90ZW50aWFsIHRyYWRlLW9mZiBiZXR3ZWVuIGZsZXhpYmlsaXR5IGFuZCBwZXJmb3JtYW5jZSwgb3IgcHJlZGljdGFiaWxpdHkgYW5kIGFkYXB0YWJpbGl0eS4gSeKAmW0gYWxyZWFkeSB0aGlua2luZyBhYm91dCBwb3RlbnRpYWwgYXBwbGljYXRpb25zOiBlbWJlZGRlZCBzeXN0ZW1zLCBzcGVjaWZpYyBjb21tdW5pY2F0aW9uIHByb3RvY29scywgbWF5YmUgZXZlbiBzcGVjaWFsaXplZCBoYXJkd2FyZSBhY2NlbGVyYXRvcnMgd2hlcmUgZGV0ZXJtaW5pc20gaXMgcGFyYW1vdW50LiBMZXQncyBzZWUgd2hlcmUgdGhpcyBnb2VzLi4uIEknbSBjdXJpb3VzIHdoYXQgdGhpcyBcImZpeGVkLXBoeVwiIHNpZ25pZmllcyBpbiB0aGUgbGFyZ2VyIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2NTAsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU0OjI3LjIxMjkwODI2MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ3OTAyNDgwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmaXhlZF9waHlfcmVnaXN0ZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9NDgyPXN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5MS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTlVNX0ZJWEVEX1BIWVM7IGkrKylcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTI6XFx0XFx0cGh5ZGV2c1tpXSA9IGZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCgpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5My1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jPTIyMzQ9c3RhdGljIGludCBiNDRfcmVnaXN0ZXJfcGh5X29uZShzdHJ1Y3QgYjQ0ICpicClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyNzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM6MjI3MzpcXHRcXHRwaHlkZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXJfMTAwZmQoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYy0yMjc0LVxcdFxcdGlmICghSVNfRVJSKHBoeWRldikpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jPTE0Mzk9aW50IGJnbWFjX3BoeV9jb25uZWN0X2RpcmVjdChzdHJ1Y3QgYmdtYWMgKmJnbWFjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYy0xNDQ4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmM6MTQ0OTpcXHRwaHlfZGV2ID0gZml4ZWRfcGh5X3JlZ2lzdGVyKFxcdTAwMjZmcGh5X3N0YXR1cywgTlVMTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYy0xNDUwLVxcdGlmIChJU19FUlIocGh5X2RldikpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM9MTg0OD1zdGF0aWMgaW50IGZ0Z21hYzEwMF9wcm9iZV9uY3NpKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE4NjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYzoxODY3OlxcdHBoeWRldiA9IGZpeGVkX3BoeV9yZWdpc3RlcihcXHUwMDI2bmNzaV9waHlfc3RhdHVzLCBucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xODY4LVxcdGlmIChJU19FUlIocGh5ZGV2KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9Mjk4MT1zdGF0aWMgaW50IGZlY19lbmV0X21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTMwMDItXFx0XFx0XFx0bmV0ZGV2X2luZm8obmRldiwgXFxcIm5vIFBIWSwgYXNzdW1pbmcgZGlyZWN0IGNvbm5lY3Rpb24gdG8gc3dpdGNoXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzozMDAzOlxcdFxcdFxcdHBoeV9kZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXJfMTAwZmQoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy0zMDA0LVxcdFxcdFxcdGlmIChJU19FUlIocGh5X2RldikpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmM9MjM4PXN0YXRpYyBpbnQgaGJnX2ZpeGVkX3BoeV9pbml0KHN0cnVjdCBoYmdfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmMtMjUwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmM6MjUxOlxcdHBoeWRldiA9IGZpeGVkX3BoeV9yZWdpc3RlcihcXHUwMDI2aGJnX2ZpeGVkX3BoeV9zdGF0dXMsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmMtMjUyLVxcdGlmIChJU19FUlIocGh5ZGV2KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM9NDEyPWludCBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtNDU5LXJlZ2lzdGVyX3BoeTpcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzo0NjA6XFx0cmV0dXJuIFBUUl9FUlJfT1JfWkVSTyhmaXhlZF9waHlfcmVnaXN0ZXIoXFx1MDAyNnN0YXR1cywgbnApKTtcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy00NjEtfVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jPTExOD1zdGF0aWMgaW50IGZpeGVkX3BoeV9nZXRfZnJlZV9hZGRyKHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTMwLVxcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYzoxMzE6c3RydWN0IHBoeV9kZXZpY2UgKmZpeGVkX3BoeV9yZWdpc3Rlcihjb25zdCBzdHJ1Y3QgZml4ZWRfcGh5X3N0YXR1cyAqc3RhdHVzLFxcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xMzItXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGRldmljZV9ub2RlICpucClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xNzItfVxcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYzoxNzM6RVhQT1JUX1NZTUJPTF9HUEwoZml4ZWRfcGh5X3JlZ2lzdGVyKTtcXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTc0LVxcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYzoxNzU6c3RydWN0IHBoeV9kZXZpY2UgKmZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCh2b2lkKVxcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xNzYte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE4MS1cXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM6MTgyOlxcdHJldHVybiBmaXhlZF9waHlfcmVnaXN0ZXIoXFx1MDAyNnN0YXR1cywgTlVMTCk7XFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE4My19XFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jOjE4NDpFWFBPUlRfU1lNQk9MX0dQTChmaXhlZF9waHlfcmVnaXN0ZXJfMTAwZmQpO1xcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xODUtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oPTE5PWV4dGVybiBpbnQgZml4ZWRfcGh5X2NoYW5nZV9jYXJyaWVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGJvb2wgbmV3X2NhcnJpZXIpO1xcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmg6MjA6c3RydWN0IHBoeV9kZXZpY2UgKmZpeGVkX3BoeV9yZWdpc3Rlcihjb25zdCBzdHJ1Y3QgZml4ZWRfcGh5X3N0YXR1cyAqc3RhdHVzLFxcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmgtMjEtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGRldmljZV9ub2RlICpucCk7XFxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaDoyMjpzdHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKHZvaWQpO1xcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmgtMjMtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oPTI5PXN0YXRpYyBpbmxpbmUgc3RydWN0IHBoeV9kZXZpY2UgKlxcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmg6MzA6Zml4ZWRfcGh5X3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBmaXhlZF9waHlfc3RhdHVzICpzdGF0dXMsXFxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaC0zMS1cXHRcXHQgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxcbi0tXFxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaC0zNS1cXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oOjM2OnN0YXRpYyBpbmxpbmUgc3RydWN0IHBoeV9kZXZpY2UgKmZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCh2b2lkKVxcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmgtMzcte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNjo1NDoyOC42OTE5Mzk2MloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDM0MDkwOTUzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBEUDgzNjQwIFBIWSBEcml2ZXIgd2l0aCBTeXprYWxsZXI6IEEgUGxhbiBvZiBBdHRhY2sqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdG8gdGFyZ2V0IHRoaXMgRFA4MzY0MCBQSFkgZHJpdmVyIHdpdGggZnV6emluZy4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0aGF0IGBmaXhlZC1waHlgIG1pZ2h0IGJlIHRoZSB3YXksIGJ1dCBpdCBzZWVtcyB0aGF0J3Mgbm90IHNwZWNpZmljIGVub3VnaC4gQ2FuIFN5emthbGxlciBjcmVhdGUgYSBcImZha2VcIiBNRElPIGRldmljZSB3aXRoIGEgcGFydGljdWxhciBQSFkgSUQ/IFRoZSBgbWFjYmAgZHJpdmVyIGlzIGZ1enplZCwgYnV0IEkgZG9uJ3QgdGhpbmsgaXQgbGV0cyB5b3Ugc3BlY2lmeSB0aGUgSUQuXG5cblRoZW4gaXQgaGl0cyBtZTogYHN5el91c2JfY29ubmVjdGAhIFRoYXQgbGV0cyB5b3UgY29ubmVjdCBVU0IgZGV2aWNlcy4gSXMgdGhlcmUgYSBVU0ItdG8tTURJTyBicmlkZ2U/IE5vLCBidXQgd2FpdC4uLiBVU0IgbmV0d29yayBkcml2ZXJzISBTb21lIG9mIHRoZW0gKmhhdmUqIE1ESU8gYnVzZXMuIGBsYW43OHh4YCwgYHNtc2M5NXh4YCwgYW5kIGBheDg4MTc5XzE3OGFgIGFsbCBjb21lIHRvIG1pbmQuIFRoZSBrZXkgaXMgdGhhdCB0aGUgUEhZIElEIGlzIHVzdWFsbHkgKnJlYWQqIGZyb20gaGFyZHdhcmUsIGJ1dCB3aXRoIFN5emthbGxlciBlbXVsYXRpbmcgdGhlIFVTQiBkZXZpY2UsIEkgY2FuIHByb3ZpZGUgKmFueSogUEhZIElELlxuXG5TbywgdGhlIHBsYW4gaXMgdG8gdXNlIGBzeXpfdXNiX2Nvbm5lY3RgIHRvIGVtdWxhdGUgYSBVU0IgbmV0d29yayBhZGFwdGVyLiBXaGVuIHRoZSBkcml2ZXIgcmVhZHMgdGhlIFBIWSBJRCBmcm9tIHRoZSBlbXVsYXRlZCBNRElPIGJ1cyAodmlhIFVTQiBjb250cm9sIG1lc3NhZ2VzKSwgSSdsbCBtYWtlIFN5emthbGxlciByZXR1cm4gYDB4MjAwMDVjZTFgIOKAkyB0aGUgRFA4MzY0MCBQSFkgSUQhIFRoZW4sIHRoZSBrZXJuZWwgKnNob3VsZCogbWF0Y2ggdGhlIGBkcDgzNjQwYCBQSFkgZHJpdmVyIGFuZCBjYWxsIGBkcDgzNjQwX3Byb2JlYC5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy4gSSdsbCBjaGVjayB0aGF0IGEgVVNCIG5ldHdvcmsgZHJpdmVyIHJlZ2lzdGVycyBhbiBNRElPIGJ1cyB3aXRoIGByZWFkYCBhbmQgYHdyaXRlYCBmdW5jdGlvbnMsIGxpa2UgYHNtc2M5NXh4X21kaW9fcmVhZGAuIFdoZW4gdGhlIGJ1cyBpcyBzY2FubmVkLCBpdCByZWFkcyByZWdpc3RlcnMgMiBhbmQgMyAodGhlIFBIWSBJRCkuIElmIG15IGVtdWxhdGVkIGRldmljZSByZXR1cm5zIHRoZSByaWdodCB2YWx1ZSwgYGRwODM2NDBgIGlzIHByb2JlZC4gQnV0IGlzIHRoaXMgZXZlbiBwb3NzaWJsZT8gV2VsbCwgaXQgaXMhIFN5emthbGxlciBkb2VzIHRoaXMgZm9yIFBIWSBkcml2ZXJzIGFscmVhZHkhIExldCdzIGNoZWNrIHRoYXQgYGRwODM2NDBfcHJvYmVgIGlzIHJlYWNoYWJsZSB0aHJvdWdoIFVTQiBlbXVsYXRpb24uIFllcywgSSBjYW4gcmVhY2ggaXQgdGhpcyB3YXkhXG5cbk9rYXksIGxldCdzIGdvIGJhY2sgdG8gdGhlIHBhdGNoLiBJdCdzIG1vZGlmeWluZyBgZHA4MzY0MF9wcm9iZWAsIGBkcDgzNjQwX3JlbW92ZWAsIGFuZCBgZHA4MzY0MF9jbG9ja19pbml0YC4gSXQgYWxzbyBhZGRzIHRob3NlIGBwaHlfcGFja2FnZV9sb2NrYCBhbmQgYHBoeV9wYWNrYWdlX3VubG9ja2AgY2FsbHMgaW4gYHBoeV9wYWNrYWdlLmNgLiBUaGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4gSSdsbCBuZWVkIHRvIGZvY3VzIG9uIHRoZXNlIGZ1bmN0aW9uczpcblxuKiAgIGBkcDgzNjQwX3Byb2JlYFxuKiAgIGBkcDgzNjQwX3JlbW92ZWBcbiogICBgcGh5X3BhY2thZ2VfbG9ja2BcbiogICBgcGh5X3BhY2thZ2VfdW5sb2NrYFxuXG5XYWl0IGEgbWludXRlLCBgZHA4MzY0MF9jbG9ja19pbml0YCBpcyBzdGF0aWMuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgYGRwODM2NDAuY2AgZmlsZSBmb3IgdGhlIGRlZmluaXRpb24uIFRoaXMgYXBwcm9hY2gsIHRob3VnaCwgbG9va3Mgc291bmQuIEkgYW0gY29uZmlkZW50IHRoYXQgaXQncyBwb3NzaWJsZSB0byBmdXp6IHRoZXNlIGZ1bmN0aW9ucyB1c2luZyBTeXprYWxsZXIncyBVU0IgZW11bGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NTIyLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjQ5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU0OjM5LjAzMjg1MTc0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDU5Mzc5MzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRwODM2NDBfY2xvY2tfaW5pdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jPTkwOD1zdGF0aWMgdm9pZCBkZWNvZGVfc3RhdHVzX2ZyYW1lKHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUgKmRwODM2NDAsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTk1MC1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jOjk1MTpzdGF0aWMgdm9pZCBkcDgzNjQwX2Nsb2NrX2luaXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtOTUyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM9MTMzNz1zdGF0aWMgaW50IGRwODM2NDBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTM1My1cXHRpZiAocGh5X3BhY2thZ2VfcHJvYmVfb25jZShwaHlkZXYpKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM6MTM1NDpcXHRcXHRkcDgzNjQwX2Nsb2NrX2luaXQoY2xvY2spO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTM1NS1cXHRwaHlfcGFja2FnZV91bmxvY2socGh5ZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTY6NTQ6NDAuNDkyMjM1NTVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg3NTAyNjQ5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERQODM2NDAgRHJpdmVyIFN0cnVjdHVyZSoqXG5cbk9rYXksIHNvIEknbSB0YWtpbmcgYSBsb29rIGF0IHRoaXMgYGRwODM2NDBgIGRyaXZlciwgYW5kIGltbWVkaWF0ZWx5IGEgZmV3IHRoaW5ncyBqdW1wIG91dC4gVGhlIGBkcDgzNjQwX2Nsb2NrX2luaXRgIGZ1bmN0aW9uIGlzIGRlY2xhcmVkIGFzIHN0YXRpYy4gSW50ZXJlc3RpbmcsIHRoYXQgc3VnZ2VzdHMgaXQncyBvbmx5IGludGVuZGVkIGZvciB1c2Ugd2l0aGluIHRoaXMgc3BlY2lmaWMgZmlsZSBvciBjb21waWxhdGlvbiB1bml0OyBJJ2xsIGtlZXAgdGhhdCBpbiBtaW5kLiBNb3JlIGludGVyZXN0aW5nbHksIGBkcDgzNjQwX3Byb2JlYCBhbmQgYGRwODM2NDBfcmVtb3ZlYCBhcmUgYWxzbyBzdGF0aWMsIGJ1dCB0aGV5J3JlICphbHNvKiBmdW5jdGlvbiBwb2ludGVycywgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGRwODM2NDBfZHJpdmVyYCBzdHJ1Y3R1cmUuIFRoYXQgdGVsbHMgbWUgdGhlc2UgYXJlIGxpa2VseSB0aGUgZW50cnkgYW5kIGV4aXQgcG9pbnRzIGZvciB0aGUgZHJpdmVyJ3MgaW50ZXJhY3Rpb24gd2l0aCB0aGUga2VybmVsLCB0aGUgcHJvYmUgYmVpbmcgdHJpZ2dlcmVkIHdoZW4gdGhlIGRldmljZSBpcyBkZXRlY3RlZCBhbmQgcmVtb3ZlIGJlaW5nIHRyaWdnZXJlZCB3aGVuIHRoZSBkZXZpY2UgaXMgdW5ib3VuZC4gSSBzaG91bGQgcHJvYmFibHkgZ28gYW5kIGluc3BlY3QgdGhlIGBkcDgzNjQwX2RyaXZlcmAgc3RydWN0dXJlIGRpcmVjdGx5IHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhpcyBhbGwgZml0cyB0b2dldGhlciBhbmQgdG8gYmUgc3VyZSBvZiB0aGUgZHJpdmVyJ3Mgcm9sZSBhbmQgcHVycG9zZS4gTGV0J3Mgc2VlIHdoYXQgdGhhdCBzdHJ1Y3R1cmUgaGFzIHRvIHNheS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTExNjksIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNjo1NDo0NC4zNjcyNjQ0NjVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NjU3MDU0NjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHA4MzY0MF9kcml2ZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYz0xNDE3PXN0YXRpYyB2b2lkIGRwODM2NDBfcmVtb3ZlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTE0NTUtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYzoxNDU2OnN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkcDgzNjQwX2RyaXZlcltdID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTQ1Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTE0NzAtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYzoxNDcxOm1vZHVsZV9waHlfZHJpdmVyKGRwODM2NDBfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTE0NzItXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU0OjQ1LjkzMjk3Mzc3N1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTkzNzE4OTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDpcblxuKipOYXZpZ2F0aW5nIHRoZSBQSFkgRHJpdmVyIExhbmRzY2FwZSoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIFBIWSBkcml2ZXIgY29kZSwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIHRoZSBEUDgzNjQwLiBSaWdodCBvZmYgdGhlIGJhdCwgSSBzZWUgdGhhdCBgZHA4MzY0MF9wcm9iZWAgYW5kIGBkcDgzNjQwX3JlbW92ZWAgYXJlIG15IHByaW1hcnkgZW50cnkgcG9pbnRzLiBUaGF0J3Mgc3RhbmRhcmQgcHJhY3RpY2UsIHRoZSBwcm9iZSBmb3IgaW5pdGlhbGl6YXRpb24gYW5kIHRoZSByZW1vdmUgZm9yIGNsZWFudXAuIE5vdywgSSBub3RpY2UgdGhlc2UgZnVuY3Rpb24gY2FsbHMgZm9yIGBwaHlfcGFja2FnZV9sb2NrYCBhbmQgYHBoeV9wYWNrYWdlX3VubG9ja2AgYW5kLCBmcm9tIHRoZSBsb29rcyBvZiBpdCwgdGhlc2UgYXJlIGV4cG9ydGVkIGZ1bmN0aW9ucywgbGlrZWx5IG1hbmFnaW5nIHNvbWUgc29ydCBvZiBjb25jdXJyZW5jeSBvciByZXNvdXJjZSBhY2Nlc3MuIEdpdmVuIHRoZSBcInBhY2thZ2VcIiB0ZXJtaW5vbG9neSwgaXQgc3VnZ2VzdHMgc29tZSBzaGFyZWQgZGF0YSBzdHJ1Y3R1cmVzLCBzbyB0aG9zZSBmdW5jdGlvbnMgY291bGQgYmUgaW1wb3J0YW50LiBNeSBpbnN0aW5jdCB0ZWxscyBtZSB0byBjaGVjayB3aGVyZSB0aG9zZSBsb2NrL3VubG9jayBmdW5jdGlvbnMgYXJlIGRlZmluZWQgYW5kIHVzZWQsIHNvIEknbSBnb2luZyB0byBqdW1wIGludG8gYHBoeV9wYWNrYWdlLmNgIHRvIHVuZGVyc3RhbmQgdGhhdCBsb2NraW5nIG1lY2hhbmlzbSBiZXR0ZXIuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbnRleHQgSSBuZWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTcwNywiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU0OjQ5LjkyNjY5NDYzM1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQyMzAzMjI0MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlfcGFja2FnZV9sb2NrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM9MTMzNz1zdGF0aWMgaW50IGRwODM2NDBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTM1MS1cXHQvKiBFbnN1cmUgb3RoZXIgUEhZIHByb2JlcyB3YWl0IGZvciBzaGFyZWQgY2xvY2sgaW5pdGlhbGl6YXRpb24uICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYzoxMzUyOlxcdHBoeV9wYWNrYWdlX2xvY2socGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTEzNTMtXFx0aWYgKHBoeV9wYWNrYWdlX3Byb2JlX29uY2UocGh5ZGV2KSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jPTUzPUVYUE9SVF9TWU1CT0xfR1BMKHBoeV9wYWNrYWdlX2dldF9wcml2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTU1LS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jOjU2OiAqIHBoeV9wYWNrYWdlX2xvY2sgLSBhY3F1aXJlIHRoZSBQSFkgcGFja2FnZSBsb2NrXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtNTctICogQHBoeWRldjogUEhZIGRldmljZSB0aGF0IGhhcyBqb2luZWQgdGhlIHBhY2thZ2VcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTYxLSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jOjYyOnZvaWQgcGh5X3BhY2thZ2VfbG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTYzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTY1LX1cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzo2NjpFWFBPUlRfU1lNQk9MX0dQTChwaHlfcGFja2FnZV9sb2NrKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy02Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWIuaD0xND12b2lkICpwaHlfcGFja2FnZV9nZXRfcHJpdihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLmg6MTU6dm9pZCBwaHlfcGFja2FnZV9sb2NrKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWIuaC0xNi12b2lkIHBoeV9wYWNrYWdlX3VubG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTY6NTQ6NTEuMzQ5NzMxMDg2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcxNDk0NTQ4NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgRnV6emluZyBTdHJhdGVneTogRFA4MzY0MCBQSFkgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IGJlc3QgdG8gZnV6eiB0aGlzIGBkcDgzNjQwYCBQSFkgZHJpdmVyLiBJIHNlZSB0aGF0IGBwaHlfcGFja2FnZV9sb2NrYCBhbmQgYHBoeV9wYWNrYWdlX3VubG9ja2AgYXJlIGFscmVhZHkgZXhwb3J0ZWQsIHdoaWNoIGlzIGdvb2Q7IHRoZXkncmUgcmVhZGlseSBhY2Nlc3NpYmxlIGZvciBmdXp6aW5nLiBOb3csIHdoYXQgYWJvdXQgdGhlIG1haW4gZHJpdmVyIGVudHJ5IHBvaW50cywgYGRwODM2NDBfcHJvYmVgIGFuZCBgZHA4MzY0MF9yZW1vdmVgPyBUaGV5J3JlIGRlZmluZWQgYXMgYHN0YXRpY2AsIHdoaWNoIGluaXRpYWxseSBsb29rcyBsaWtlIGEgcHJvYmxlbS4gQnV0IHdhaXQsIGBzeXprYWxsZXJgIGNhbid0IGRpcmVjdGx5IGFkZHJlc3MgaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zLCBzbyBhbiBpbmxpbmVkIGZ1bmN0aW9uIHdvbid0IGhhdmUgYSBzcGVjaWZpYyBzeW1ib2wgZm9yIHN5emthbGxlciB0byBjYWxsLiBJJ20gbm90aW5nIGBkcDgzNjQwX3Byb2JlYCBpcyBhY3R1YWxseSBhIGZ1bmN0aW9uIHBvaW50ZXIgKndpdGhpbiogYSBzdHJ1Y3QsIHRoZXJlZm9yZSBub3QgaW5saW5lZC5cblxuVGhlIGRvY3VtZW50YXRpb24gc2VlbXMgdG8gZW1waGFzaXplIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5IHBvaW50cy4gU28sIHdoaWxlIGBkcDgzNjQwX3Byb2JlYCBoYXMgYSBkaXN0aW5jdCBhZGRyZXNzIGFuZCB3b24ndCBiZSBpbmxpbmVkLCBpcyB0aGF0IHRoZSAqYmVzdCogb3B0aW9uPyBTaG91bGQgSSBqdXN0IHN0aWNrIHdpdGggYHBoeV9wYWNrYWdlX2xvY2tgLCBgcGh5X3BhY2thZ2VfdW5sb2NrYCBmb3Igbm93P1xuXG5XYWl0IGEgbWludXRlLCBgZHA4MzY0MF9wcm9iZWAgKmlzKiB0aGUgbWFpbiBmdW5jdGlvbiBJJ20gbW9kaWZ5aW5nIGhlcmUuIFJpZ2h0LCBJIHNob3VsZCBkZWZpbml0ZWx5IGluY2x1ZGUgdGhhdCBhcyBhIHRhcmdldCFcblxuTm93LCBsZXQncyBsb29rIGF0IHRoZSBgS2NvbmZpZ2AgY2hhbmdlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgYnVpbGQgb3B0aW9ucy4gYERQODM2NDBfUEhZYCBkZXBlbmRzIG9uIGBQSFlMSUJgIGFuZCBgUFRQXzE1ODhfQ0xPQ0tgIGFuZCBhbHNvIHNlbGVjdHMgYFBIWV9QQUNLQUdFYC4gVGltZSB0byBjaGVjayBgZHJpdmVycy9wdHAvS2NvbmZpZ2AgdG8gc2VlIGlmIHRoZXJlJ3MgYW55IHJlbGV2YW50IGNvbnRleHQgYXJvdW5kIGBEUDgzNjQwX1BIWWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNDkxLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU0OjU4LjQ5OTE4ODYyNVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ1MTczMTYwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRFA4MzY0MF9QSFlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9wdHAvS2NvbmZpZz03Mj1jb21tZW50IFxcXCJFbmFibGUgUEhZTElCIGFuZCBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcgdG8gc2VlIHRoZSBhZGRpdGlvbmFsIGNsb2Nrcy5cXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTc0LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6NzU6Y29uZmlnIERQODM2NDBfUEhZXFxuZHJpdmVycy9wdHAvS2NvbmZpZy03Ni1cXHR0cmlzdGF0ZSBcXFwiRHJpdmVyIGZvciB0aGUgTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciBEUDgzNjQwIFBIWVRFUlxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTY6NTQ6NTkuOTUwOTI3MTY2WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NjA2MDU5MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzOlxuXG4qKkluaXRpYWwgQ29uZmlndXJhdGlvbiBhbmQgRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLCBpdCBsb29rcyBsaWtlIGBEUDgzNjQwX1BIWWAgaXMgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiBmaWxlIHdlJ3JlIGRlYWxpbmcgd2l0aCBoZXJlLiBCdXQgaGFuZyBvbiwgYSBiZWxsIHdlbnQgb2ZmIGluIG15IGhlYWQuIEkga25vdyB0aGF0IGBQVFBfMTU4OF9DTE9DS2AgaXMgYWxtb3N0IGFsd2F5cyBpbnRlcnR3aW5lZCB3aXRoIHRoaXMuIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSB0aW1lIHN5bmNocm9uaXphdGlvbiBpcyBjb25maWd1cmVkIHByb3Blcmx5LiBCZWZvcmUgSSBnbyBhbnkgZnVydGhlciwgSSBzaG91bGQgdmVyaWZ5IHRoZSBgUFRQXzE1ODhfQ0xPQ0tgIHNldHRpbmdzLiBJdCdzIHRvbyBlYXN5IHRvIG92ZXJsb29rIHRoYXQgcGllY2UgYW5kIGhhdmUgZXZlcnl0aGluZyBncmluZCB0byBhIGhhbHQuIEFsd2F5cyBiZXN0IHRvIGRvdWJsZS1jaGVjayB0aG9zZSBjcml0aWNhbCBkZXBlbmRlbmNpZXMuIExldCdzIGRpZyBpbnRvIGBQVFBfMTU4OF9DTE9DS2AgZmlyc3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMzI2LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTY6NTU6MDMuNDExNTM2MDU5WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTEyMzkwMDA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBQVFBfMTU4OF9DTE9DS1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvS2NvbmZpZz0yMT1jb25maWcgSVhQNFhYX0VUSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL0tjb25maWctMzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL0tjb25maWc6MzE6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0lYUDQ2WFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9LY29uZmlnLTMyLVxcdGJvb2wgXFxcIkludGVsIElYUDQ2eCBhcyBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnPTY9bWVudSBcXFwiUFRQIGNsb2NrIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9wdHAvS2NvbmZpZy03LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6ODpjb25maWcgUFRQXzE1ODhfQ0xPQ0tcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTktXFx0dHJpc3RhdGUgXFxcIlBUUCBjbG9jayBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0yOS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjMwOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbmRyaXZlcnMvcHRwL0tjb25maWctMzEtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctNDEtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzo0Mjpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfRFRFXFxuZHJpdmVycy9wdHAvS2NvbmZpZy00My1cXHR0cmlzdGF0ZSBcXFwiQnJvYWRjb20gRFRFIGFzIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctNTctXFxuZHJpdmVycy9wdHAvS2NvbmZpZzo1ODpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfUU9SSVFcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTU5LVxcdHRyaXN0YXRlIFxcXCJGcmVlc2NhbGUgUW9ySVEgMTU4OCB0aW1lciBhcyBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnPTc1PWNvbmZpZyBEUDgzNjQwX1BIWVxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy05Mi1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjkzOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JTkVTXFxuZHJpdmVycy9wdHAvS2NvbmZpZy05NC1cXHR0cmlzdGF0ZSBcXFwiWkhBVyBJbkVTIFBUUCB0aW1lIHN0YW1waW5nIElQIGNvcmVcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEwMy1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjEwNDpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfUENIXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMDUtXFx0dHJpc3RhdGUgXFxcIkludGVsIFBDSCBFRzIwVCBhcyBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEyMi1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjEyMzpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfS1ZNXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMjQtXFx0dHJpc3RhdGUgXFxcIktWTSB2aXJ0dWFsIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTM0LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTM1OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19WTUNMT0NLXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMzYtXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgbWFjaGluZSBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE1MS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE1Mjpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfSURUODJQMzNcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE1My1cXHR0cmlzdGF0ZSBcXFwiSURUIDgyUDMzeHh4IFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTYzLVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTY0OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JRFRDTVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTY1LVxcdHRyaXN0YXRlIFxcXCJJRFQgQ0xPQ0tNQVRSSVggYXMgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNzUtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoxNzY6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0ZDM1dcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE3Ny1cXHR0cmlzdGF0ZSBcXFwiUkVORVNBUyBGZW10b0Nsb2NrMyBXaXJlbGVzcyBhcyBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE4Ny1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE4ODpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfTU9DS1xcbmRyaXZlcnMvcHRwL0tjb25maWctMTg5LVxcdHRyaXN0YXRlIFxcXCJNb2NrLXVwIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTk4LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTk5OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19WTVdcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIwMC1cXHR0cmlzdGF0ZSBcXFwiVk13YXJlIHZpcnR1YWwgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0yMTAtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoyMTE6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX09DUFxcbmRyaXZlcnMvcHRwL0tjb25maWctMjEyLVxcdHRyaXN0YXRlIFxcXCJPcGVuQ29tcHV0ZSBUaW1lQ2FyZCBhcyBQVFAgY2xvY2tcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU1OjA0LjkyMzkzMTQzNVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzA5NTc0ODYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipDbG9jayBTeW5jaHJvbml6YXRpb24gXHUwMDI2IFBoeXNpY2FsIExheWVyIENvbnNpZGVyYXRpb25zKipcblxuQWxyaWdodCwgc28gdGhlIHByb2plY3QncyBtYXJjaGluZyBmb3J3YXJkLCBhbmQgaXQncyBiZWNvbWUgY2xlYXIgdGhhdCB3ZSdyZSBnb2luZyB0byBuZWVkIHRvIGltcGxlbWVudCBgUFRQXzE1ODhfQ0xPQ0tgLiBObyBzdXJwcmlzZXMgdGhlcmUuIFRoYXQncyB0aGUgYmFzZWxpbmUgZm9yIHByZWNpc2UgdGltZSBzeW5jaHJvbml6YXRpb24sIGVzcGVjaWFsbHkgZm9yIHRoaXMga2luZCBvZiBhcHBsaWNhdGlvbi4gQnV0IGFzIEkgdGhpbmsgYWJvdXQgaXQsIHRoZSBxdWVzdGlvbiBvZiB0aGUgcGh5c2ljYWwgbGF5ZXIgaW1wbGVtZW50YXRpb24gbmF0dXJhbGx5IHBvcHMgdXAuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGNvbnNpZGVyIHRoZSByb2xlLCBvciBsYWNrIHRoZXJlb2YsIG9mIGBQSFlMSUJgLiBJdCdzIGNydWNpYWwgSSBkb24ndCBvdmVybG9vayBhbnkgZGV0YWlscy4gV2hhdCBleGFjdGx5IGRvIHdlIG5lZWQgZnJvbSB0aGUgcGh5c2ljYWwgbGF5ZXIgaW50ZXJmYWNlPyBJcyBgUEhZTElCYCBnb2luZyB0byBiZSBvdXIgYmVzdCByb3V0ZSwgb3IgYXJlIHRoZXJlIGFsdGVybmF0ZSwgbW9yZSBzdWl0YWJsZSBhcHByb2FjaGVzLCB0aGF0IHdpbGwgYmV0dGVyIHN1aXQgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlPyBUaGlzIHJlcXVpcmVzIGRlZXBlciBpbnZlc3RpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDY2OSwiT3V0cHV0VG9rZW5zIjoxNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU1OjA4LjIzMzUwODc2OFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ5NTk2MTAyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUEhZTElCXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTY9Y29uZmlnIFBIWUxJTktcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE0LVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjE1Om1lbnVjb25maWcgUEhZTElCXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTYtXFx0dHJpc3RhdGUgXFxcIlBIWSBEZXZpY2Ugc3VwcG9ydCBhbmQgaW5mcmFzdHJ1Y3R1cmVcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz00Nj1jb25maWcgT1BFTl9BTExJQU5DRV9IRUxQRVJTXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy00OC1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo0OTpjb25maWcgUEhZTElCX0xFRFNcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy01MC1cXHRkZWZfYm9vbCBPRlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNjo1NTowOS43Mjk0NzQwNTVaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg0MjMyNDMyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIFBIWUxJQiBhbmQgaXRzIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEkgc2VlIHdlJ3JlIGRlYWxpbmcgd2l0aCBgUEhZTElCYC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB3ZSdyZSB3b3JraW5nIHdpdGggYSBQaHlzaWNhbCBMYXllciBpbnRlcmZhY2UgbGlicmFyeSwgd2hpY2ggaXMgYSBjb21tb24gYWJzdHJhY3Rpb24gaW4gbmV0d29ya2luZyBkcml2ZXJzLiBCdXQsIGhvbGQgb24gYSBzZWNvbmQuLi4gaXMgYERQODM2NDBfUEhZYCBkZWZpbmVkIGluIHRoZSBgZHJpdmVycy9wdHAvS2NvbmZpZ2AgZmlsZT8gVGhhdCdzIHVuZXhwZWN0ZWQuIFBUUCAoUHJlY2lzaW9uIFRpbWUgUHJvdG9jb2wpIGlzIG9mdGVuIHJlbGF0ZWQgdG8gdGltaW5nIHN5bmNocm9uaXphdGlvbiwgd2hpY2ggKmNvdWxkKiBpbnZvbHZlIFBIWXMsIGJ1dCB0aGUgZGlyZWN0IGxpbmtpbmcgc2VlbXMgYSBsaXR0bGUgb2RkLiBUbyBiZSBzdXJlLCBJIG5lZWQgdG8gb3BlbiB1cCBgZHJpdmVycy9wdHAvS2NvbmZpZ2AgYW5kIHZlcmlmeSB0aGF0IGBEUDgzNjQwX1BIWWAgaXMsIGluIGZhY3QsIGRlY2xhcmVkIHRoZXJlLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgRFA4MzY0MCBQSFkgYW5kIHRoZSBQVFAgc3Vic3lzdGVtLCBhbmQgY29uZmlybSBteSBpbml0aWFsIHRob3VnaHQgb24gYFBIWUxJQmAuIEkgd2FudCB0byBzZWUgaG93IHRoYXQgZHJpdmVyIGlzIGNvbmZpZ3VyZWQgaW4gY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUwNTMsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNjo1NToxMy41NzE4MDE5MTJaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NDk1MTIwMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERQODM2NDBfUEhZXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvcHRwL0tjb25maWc9NzI9Y29tbWVudCBcXFwiRW5hYmxlIFBIWUxJQiBhbmQgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HIHRvIHNlZSB0aGUgYWRkaXRpb25hbCBjbG9ja3MuXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy03NC1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjc1OmNvbmZpZyBEUDgzNjQwX1BIWVxcbmRyaXZlcnMvcHRwL0tjb25maWctNzYtXFx0dHJpc3RhdGUgXFxcIkRyaXZlciBmb3IgdGhlIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgRFA4MzY0MCBQSFlURVJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU1OjE1LjAyMTMxOTgyM1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTQ3NDAyNjkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqSW52ZXN0aWdhdGluZyBhIFBvdGVudGlhbCBEZXBlbmRlbmN5KipcblxuQWxyaWdodCwgaG9sZCBvbiBhIHNlY29uZC4gSSBzZWUgdGhpcyBjb21tZW50IHJlZmVyZW5jaW5nIGBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIGJlY2F1c2UgaW1tZWRpYXRlbHkgbXkgYnJhaW4ganVtcHMgdG8gYERQODM2NDBfUEhZYC4gTm93LCBJIG5lZWQgdG8gZmlndXJlIG91dDogRG9lcyB0aGUgY29ycmVjdCBvcGVyYXRpb24gb2YgdGhlIGBEUDgzNjQwX1BIWWAgbW9kdWxlIGFjdHVhbGx5ICpyZWx5KiBvbiB0aGlzIHRpbWVzdGFtcGluZyBmdW5jdGlvbmFsaXR5PyBJcyB0aGlzIGEgaGFyZCByZXF1aXJlbWVudCwgb3IganVzdCBhbiBvcHRpbWl6YXRpb24/IEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiB0aGVzZSBhcmUgaW50ZXJjb25uZWN0ZWQgYW5kIGhvdyBiZWZvcmUgSSBtYWtlIGEgbmV4dCBtb3ZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTQ0NSwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU1OjE4LjE2ODcyNTMyN1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ0OTE5MzIwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3RpbWVzdGFtcGluZy5yc3Q9NzY5PXRvIGVhY2ggaW5kaXZpZHVhbCBNQUMgZHJpdmVyIGZvciBQSFkgdGltZXN0YW1waW5nIHN1cHBvcnQuIFRoaXMgZW50YWlsczpcXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy90aW1lc3RhbXBpbmcucnN0LTc3OC0gIGBgc2tiX2RlZmVyX3J4X3RpbWVzdGFtcChza2IpYGAgaXMgbmVjZXNzYXJ5IG9yIG5vdCAtIGFuZCBpZiBpdCBpcywgZG9uJ3RcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvdGltZXN0YW1waW5nLnJzdDo3Nzk6ICBjYWxsIGBgbmV0aWZfcngoKWBgIGF0IGFsbC4gIElmIGBgQ09ORklHX05FVFdPUktfUEhZX1RJTUVTVEFNUElOR2BgIGlzXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3RpbWVzdGFtcGluZy5yc3QtNzgwLSAgZW5hYmxlZCwgYW5kIGBgc2tiLVxcdTAwM2VkZXYtXFx1MDAzZXBoeWRldi1cXHUwMDNlbWlpX3RzYGAgZXhpc3RzLCBpdHMgYGAucnh0c3RhbXAoKWBgIGhvb2tcXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL25ldHdvcmtpbmcvdGltZXN0YW1waW5nLnJzdD01NzI9U09fVElNRVNUQU1QSU5HIEFQSSDkuI3lhYHorrjkuLrlkIzkuIDmlbDmja7ljIXkvKDpgJLlpJrkuKrnoazku7bml7bpl7TmiLPvvIzlm6DmraTpmaTkuoYgRFNBXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9uZXR3b3JraW5nL3RpbWVzdGFtcGluZy5yc3QtNjIxLSAgYGBza2JfZGVmZXJfcnhfdGltZXN0YW1wKHNrYilgYCDmmK/lv4XopoHnmoTvvIzlpoLmnpzmmK/vvIzliJnkuI3osIPnlKggYGBuZXRpZl9yeCgpYGDjgIJcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9uZXR3b3JraW5nL3RpbWVzdGFtcGluZy5yc3Q6NjIyOiAg5aaC5p6cIGBgQ09ORklHX05FVFdPUktfUEhZX1RJTUVTVEFNUElOR2BgIOWQr+eUqO+8jOW5tuS4lFxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL25ldHdvcmtpbmcvdGltZXN0YW1waW5nLnJzdC02MjMtICBgYHNrYi1cXHUwMDNlZGV2LVxcdTAwM2VwaHlkZXYtXFx1MDAzZW1paV90c2BgIOWtmOWcqO+8jOWug+eahCBgYC5yeHRzdGFtcCgpYGAg6ZKp5a2Q546w5Zyo5bCG6KKr6LCDXFxuLS1cXG5hcmNoL2FybS9jb25maWdzL2F4bTU1eHhfZGVmY29uZmlnPTY5PUNPTkZJR19JTkVUX0lQQ09NUD15XFxuYXJjaC9hcm0vY29uZmlncy9heG01NXh4X2RlZmNvbmZpZy03MC0jIENPTkZJR19JUFY2IGlzIG5vdCBzZXRcXG5hcmNoL2FybS9jb25maWdzL2F4bTU1eHhfZGVmY29uZmlnOjcxOkNPTkZJR19ORVRXT1JLX1BIWV9USU1FU1RBTVBJTkc9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvYXhtNTV4eF9kZWZjb25maWctNzItQ09ORklHX0JSSURHRT15XFxuLS1cXG5hcmNoL2FybS9jb25maWdzL3NvY2ZwZ2FfZGVmY29uZmlnPTMxPUNPTkZJR19JUF9QTlBfUkFSUD15XFxuYXJjaC9hcm0vY29uZmlncy9zb2NmcGdhX2RlZmNvbmZpZzozMjpDT05GSUdfTkVUV09SS19QSFlfVElNRVNUQU1QSU5HPXlcXG5hcmNoL2FybS9jb25maWdzL3NvY2ZwZ2FfZGVmY29uZmlnLTMzLUNPTkZJR19WTEFOXzgwMjFRPXlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWc9MTYxPUNPTkZJR19NUFRDUD15XFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZzoxNjI6Q09ORklHX05FVFdPUktfUEhZX1RJTUVTVEFNUElORz15XFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZy0xNjMtQ09ORklHX05FVEZJTFRFUj15XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnPTE3Nz1DT05GSUdfTVBUQ1A9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc6MTc4OkNPTkZJR19ORVRXT1JLX1BIWV9USU1FU1RBTVBJTkc9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctMTc5LUNPTkZJR19ORVRGSUxURVI9eVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc9MTYyPWNvbmZpZyBCUk9BRENPTV9QSFlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE2NC1cXHRzZWxlY3QgQkNNX05FVF9QSFlMSUJcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzoxNjU6XFx0c2VsZWN0IEJDTV9ORVRfUEhZUFRQIGlmIE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR1xcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE2Ni1cXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz0zMjY9Y29uZmlnIE1JQ1JPQ0hJUF9UMV9QSFlcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0zMjctXFx0dHJpc3RhdGUgXFxcIk1pY3JvY2hpcCBUMSBQSFlzXFxcIlxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjMyODpcXHRzZWxlY3QgTUlDUk9DSElQX1BIWV9SRFNfUFRQIGlmIE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR1xcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTMyOS1cXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz0zMzg9Y29uZmlnIE1JQ1JPU0VNSV9QSFlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTM0MC1cXHRkZXBlbmRzIG9uIE1BQ1NFQyB8fCBNQUNTRUM9blxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjM0MTpcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMIHx8ICFORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0zNDItXFx0c2VsZWN0IENSWVBUT19MSUJfQUVTIGlmIE1BQ1NFQ1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTIyPW9iai0kKENPTkZJR19QSFlfUEFDS0FHRSlcXHQrPSBwaHlfcGFja2FnZS5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTIzLVxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZToyNDpvYmotJChDT05GSUdfTkVUV09SS19QSFlfVElNRVNUQU1QSU5HKSArPSBtaWlfdGltZXN0YW1wZXIub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS0yNS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYz00NDQwPXN0YXRpYyB2b2lkIGxhbjg4MTRfcHRwX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYy00NDQ1LVxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfUFRQXzE1ODhfQ0xPQ0spIHx8XFxuZHJpdmVycy9uZXQvcGh5L21pY3JlbC5jOjQ0NDY6XFx0ICAgICFJU19FTkFCTEVEKENPTkZJR19ORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcpKVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYy00NDQ3LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYz01OTgxPXN0YXRpYyBpbnQgbGFuODg0MV9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JlbC5jLTU5OTYtXFx0LyogUmVnaXN0ZXIgdGhlIGNsb2NrICovXFxuZHJpdmVycy9uZXQvcGh5L21pY3JlbC5jOjU5OTc6XFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19ORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcpKVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYy01OTk4LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvTWFrZWZpbGU9MTE9ZW5kaWZcXG5kcml2ZXJzL25ldC9waHkvbXNjYy9NYWtlZmlsZS0xMi1cXG5kcml2ZXJzL25ldC9waHkvbXNjYy9NYWtlZmlsZToxMzppZmRlZiBDT05GSUdfTkVUV09SS19QSFlfVElNRVNUQU1QSU5HXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvTWFrZWZpbGUtMTQtbXNjYy1vYmpzICs9IG1zY2NfcHRwLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2MuaD00ODI9c3RhdGljIGlubGluZSB2b2lkIHZzYzg1ODRfY29uZmlnX21hY3NlY19pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjLmgtNDg2LVxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2MuaDo0ODc6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVFdPUktfUEhZX1RJTUVTVEFNUElORylcXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjLmgtNDg4LXZvaWQgdnNjODV4eF9saW5rX2NoYW5nZV9ub3RpZnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21hY3NlYy5jPTI0ND1zdGF0aWMgdm9pZCB2c2M4NTg0X21hY3NlY19tYWNfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWNzZWMuYy0yODgtXFx0XFx0XFx0XFx0ICBNU0NDX01BQ19DRkdfUEtUSU5GX0NGR19FTkFCTEVfVFhfUEFERElORyA6IDApIHxcXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21hY3NlYy5jOjI4OTpcXHRcXHRcXHRcXHQgKElTX0VOQUJMRUQoQ09ORklHX05FVFdPUktfUEhZX1RJTUVTVEFNUElORykgP1xcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFjc2VjLmMtMjkwLVxcdFxcdFxcdFxcdCAgTVNDQ19NQUNfQ0ZHX1BLVElORl9DRkdfTUFDU0VDX0JZUEFTU19OVU1fUFRQX1NUQUxMX0NMS1MoMHg4KSA6IDApKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9ueHAtYzQ1LXRqYTExeHguYz0xNzMwPXN0YXRpYyBpbnQgbnhwX2M0NV9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L254cC1jNDUtdGphMTF4eC5jLTE3NjEtXFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1BUUF8xNTg4X0NMT0NLKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3BoeS9ueHAtYzQ1LXRqYTExeHguYzoxNzYyOlxcdCAgICBJU19FTkFCTEVEKENPTkZJR19ORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcpKSB7XFxuZHJpdmVycy9uZXQvcGh5L254cC1jNDUtdGphMTF4eC5jLTE3NjMtXFx0XFx0cHJpdi1cXHUwMDNlbWlpX3RzLnJ4dHN0YW1wID0gbnhwX2M0NV9yeHRzdGFtcDtcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWc9NTg9Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1FPUklRXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTcxLVxcbmRyaXZlcnMvcHRwL0tjb25maWc6NzI6Y29tbWVudCBcXFwiRW5hYmxlIFBIWUxJQiBhbmQgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HIHRvIHNlZSB0aGUgYWRkaXRpb25hbCBjbG9ja3MuXFxcIlxcbmRyaXZlcnMvcHRwL0tjb25maWc6NzM6XFx0ZGVwZW5kcyBvbiBQSFlMSUI9biB8fCBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkc9blxcbmRyaXZlcnMvcHRwL0tjb25maWctNzQtXFxuZHJpdmVycy9wdHAvS2NvbmZpZz03NT1jb25maWcgRFA4MzY0MF9QSFlcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTc2LVxcdHRyaXN0YXRlIFxcXCJEcml2ZXIgZm9yIHRoZSBOYXRpb25hbCBTZW1pY29uZHVjdG9yIERQODM2NDAgUEhZVEVSXFxcIlxcbmRyaXZlcnMvcHRwL0tjb25maWc6Nzc6XFx0ZGVwZW5kcyBvbiBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTc4LVxcdGRlcGVuZHMgb24gUEhZTElCXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnPTkzPWNvbmZpZyBQVFBfMTU4OF9DTE9DS19JTkVTXFxuZHJpdmVycy9wdHAvS2NvbmZpZy05NC1cXHR0cmlzdGF0ZSBcXFwiWkhBVyBJbkVTIFBUUCB0aW1lIHN0YW1waW5nIElQIGNvcmVcXFwiXFxuZHJpdmVycy9wdHAvS2NvbmZpZzo5NTpcXHRkZXBlbmRzIG9uIE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR1xcbmRyaXZlcnMvcHRwL0tjb25maWctOTYtXFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cXG4tLVxcbmluY2x1ZGUvbGludXgvbWlpX3RpbWVzdGFtcGVyLmg9ODM9c3RydWN0IG1paV90aW1lc3RhbXBpbmdfY3RybCB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21paV90aW1lc3RhbXBlci5oLTg5LVxcbmluY2x1ZGUvbGludXgvbWlpX3RpbWVzdGFtcGVyLmg6OTA6I2lmZGVmIENPTkZJR19ORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcXG5pbmNsdWRlL2xpbnV4L21paV90aW1lc3RhbXBlci5oLTkxLVxcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD00NjgyPXN0cnVjdCBza19idWZmICpza2JfY2xvbmVfc2soc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC00NjgzLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6NDY4NDojaWZkZWYgQ09ORklHX05FVFdPUktfUEhZX1RJTUVTVEFNUElOR1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtNDY4NS1cXG4tLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmg9NDY4Nz1ib29sIHNrYl9kZWZlcl9yeF90aW1lc3RhbXAoc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC00Njg4LVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6NDY4OTojZWxzZSAvKiBDT05GSUdfTkVUV09SS19QSFlfVElNRVNUQU1QSU5HICovXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC00NjkwLVxcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD00Njk1PXN0YXRpYyBpbmxpbmUgYm9vbCBza2JfZGVmZXJfcnhfdGltZXN0YW1wKHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTQ2OTktXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaDo0NzAwOiNlbmRpZiAvKiAhQ09ORklHX05FVFdPUktfUEhZX1RJTUVTVEFNUElORyAqL1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtNDcwMS1cXG4tLVxcbm5ldC9LY29uZmlnPTE1MT1jb25maWcgTkVUX1BUUF9DTEFTU0lGWVxcbi0tXFxubmV0L0tjb25maWctMTUzLVxcbm5ldC9LY29uZmlnOjE1NDpjb25maWcgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HXFxubmV0L0tjb25maWctMTU1LVxcdGJvb2wgXFxcIlRpbWVzdGFtcGluZyBpbiBQSFkgZGV2aWNlc1xcXCJcXG4tLVxcbm5ldC9jb3JlL01ha2VmaWxlPTMzPW9iai0kKENPTkZJR19ORVRfU0VMRlRFU1RTKSArPSBzZWxmdGVzdHMub1xcbm5ldC9jb3JlL01ha2VmaWxlOjM0Om9iai0kKENPTkZJR19ORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcpICs9IHRpbWVzdGFtcGluZy5vXFxubmV0L2NvcmUvTWFrZWZpbGUtMzUtb2JqLSQoQ09ORklHX05FVF9QVFBfQ0xBU1NJRlkpICs9IHB0cF9jbGFzc2lmaWVyLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTY6NTU6MTkuNjE3OTIzNjg3WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwMzU2OTU2ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ29uZmlndXJpbmcgdGhlIERQODM2NDAgUEhZIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyB0byBwcm9wZXJseSBjb25maWd1cmUgdGhlIGBEUDgzNjQwX1BIWWAgZHJpdmVyLiBJdCdzIGNsZWFyIHRoYXQgaXQgaGFzIHNldmVyYWwgZGVwZW5kZW5jaWVzLCBuYW1lbHkgYE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR2AsIGBQSFlMSUJgLCBhbmQgYFBUUF8xNTg4X0NMT0NLYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGVzZSBhcmUgZW5hYmxlZCBjb3JyZWN0bHkuIExldCdzIHNlZS4uLiBgUEhZTElCYCBpcyBhIG1lbnVjb25maWcsIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guIGBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdgIGlzIGEgc3RyYWlnaHRmb3J3YXJkIGJvb2xlYW4gb3B0aW9uLCBhbmQgYFBUUF8xNTg4X0NMT0NLYCBhbmQgYERQODM2NDBfUEhZYCBhcmUgYm90aCB0cmlzdGF0ZXMsIHNvIEknbGwgbmVlZCB0byBzZXQgdGhlbSBhcHByb3ByaWF0ZWx5LCB3aGljaCBtZWFucyBJIHNob3VsZCBsaXN0IHRoZW0gaW4gRW5hYmxlQ29uZmlnczogYERQODM2NDBfUEhZYCwgYE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR2AsIGBQSFlMSUJgLCBgUFRQXzE1ODhfQ0xPQ0tgLlxuXG5JJ20gYmVpbmcgdGhvcm91Z2gsIHNvIEkgd2FudCB0byBkb3VibGUtY2hlY2sgdGhvc2UgZGVwZW5kZW5jaWVzLCBqdXN0IHRvIGJlIHN1cmUuIExldCdzIHNlZSB0aGUgS2NvbmZpZyBlbnRyeSBmb3IgdGhlIGBEUDgzNjQwX1BIWWAuIEFscmlnaHQsIGl0IGNsZWFybHkgc3RhdGVzIHRoYXQgdGhlIGRlcGVuZGVuY2llcyBhcmUgaW5kZWVkIGBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdgLCBgUEhZTElCYCwgYW5kIGBQVFBfMTU4OF9DTE9DS2AsIGFzIEkgdGhvdWdodC4gTG9va3MgbGlrZSBpdCBhbHNvIHNlbGVjdHMgYENSQzMyYCBhbmQgYFBIWV9QQUNLQUdFYCwgYnV0IHRob3NlIGFyZSBoYW5kbGVkIGF1dG9tYXRpY2FsbHkuXG5cbk9rYXksIG5vdywgbGV0J3MganVzdCBtYWtlIHN1cmUgdGhlcmUgYXJlbid0ICpoaWRkZW4qIGRlcGVuZGVuY2llcyBmb3IgdGhlIGRlcGVuZGVudCBvcHRpb25zLCBsaWtlIGBQVFBfMTU4OF9DTE9DS2AuIE5vcGUsIHRoYXQgY29uZmlnIGlzIHRoZSBtYWluIG9uZSwgbm90IHNvbWUgb3B0aW9uYWwgaGVscGVyLiBJIHNob3VsZCBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIG9mIGBQVFBfMTU4OF9DTE9DS2AgbGF0ZXIgaWYgbmVlZGVkLiBCdXQgZm9yIG5vdywgSSdtIGNvbmZpZGVudCBpbiB0aGVzZSBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NDUyLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU1OjI2LjY1MzYyMjYwNVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ2Mjc4Mjc3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUFRQXzE1ODhfQ0xPQ0tcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL0tjb25maWc9MjE9Y29uZmlnIElYUDRYWF9FVEhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9LY29uZmlnLTMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9LY29uZmlnOjMxOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JWFA0NlhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvS2NvbmZpZy0zMi1cXHRib29sIFxcXCJJbnRlbCBJWFA0NnggYXMgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZz02PW1lbnUgXFxcIlBUUCBjbG9jayBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvcHRwL0tjb25maWctNy1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjg6Y29uZmlnIFBUUF8xNTg4X0NMT0NLXFxuZHJpdmVycy9wdHAvS2NvbmZpZy05LVxcdHRyaXN0YXRlIFxcXCJQVFAgY2xvY2sgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMjktXFxuZHJpdmVycy9wdHAvS2NvbmZpZzozMDpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTMxLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTQxLVxcbmRyaXZlcnMvcHRwL0tjb25maWc6NDI6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0RURVxcbmRyaXZlcnMvcHRwL0tjb25maWctNDMtXFx0dHJpc3RhdGUgXFxcIkJyb2FkY29tIERURSBhcyBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTU3LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6NTg6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1FPUklRXFxuZHJpdmVycy9wdHAvS2NvbmZpZy01OS1cXHR0cmlzdGF0ZSBcXFwiRnJlZXNjYWxlIFFvcklRIDE1ODggdGltZXIgYXMgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZz03NT1jb25maWcgRFA4MzY0MF9QSFlcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctOTItXFxuZHJpdmVycy9wdHAvS2NvbmZpZzo5Mzpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfSU5FU1xcbmRyaXZlcnMvcHRwL0tjb25maWctOTQtXFx0dHJpc3RhdGUgXFxcIlpIQVcgSW5FUyBQVFAgdGltZSBzdGFtcGluZyBJUCBjb3JlXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMDMtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoxMDQ6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1BDSFxcbmRyaXZlcnMvcHRwL0tjb25maWctMTA1LVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBQQ0ggRUcyMFQgYXMgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMjItXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoxMjM6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0tWTVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTI0LVxcdHRyaXN0YXRlIFxcXCJLVk0gdmlydHVhbCBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEzNC1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjEzNTpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfVk1DTE9DS1xcbmRyaXZlcnMvcHRwL0tjb25maWctMTM2LVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIG1hY2hpbmUgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNTEtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoxNTI6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0lEVDgyUDMzXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNTMtXFx0dHJpc3RhdGUgXFxcIklEVCA4MlAzM3h4eCBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE2My1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE2NDpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfSURUQ01cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE2NS1cXHR0cmlzdGF0ZSBcXFwiSURUIENMT0NLTUFUUklYIGFzIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTc1LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTc2OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19GQzNXXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNzctXFx0dHJpc3RhdGUgXFxcIlJFTkVTQVMgRmVtdG9DbG9jazMgV2lyZWxlc3MgYXMgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xODctXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoxODg6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX01PQ0tcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE4OS1cXHR0cmlzdGF0ZSBcXFwiTW9jay11cCBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE5OC1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE5OTpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfVk1XXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0yMDAtXFx0dHJpc3RhdGUgXFxcIlZNd2FyZSB2aXJ0dWFsIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMjEwLVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MjExOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19PQ1BcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIxMi1cXHR0cmlzdGF0ZSBcXFwiT3BlbkNvbXB1dGUgVGltZUNhcmQgYXMgUFRQIGNsb2NrXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNjo1NToyOC4xMTY0MTA2NjVaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM3MzA4MzIyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBQVFAgQ2xvY2sgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIHJlbGF0ZWQgdG8gYFBUUF8xNTg4X0NMT0NLYC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZGl2ZSBkaXJlY3RseSBpbnRvIGBkcml2ZXJzL3B0cC9LY29uZmlnYC4gVGhhdCdzIHdoZXJlIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGNvbmRpdGlvbmFsIGxvZ2ljIHRoYXQgZ292ZXJucyB3aGV0aGVyIG9yIG5vdCB0aGlzIGZlYXR1cmUgaXMgZXhwb3NlZC4gSSdtIGxvb2tpbmcgZm9yIGFueSBgZGVwZW5kcyBvbmAgc3RhdGVtZW50cywgYHNlbGVjdGAgc3RhdGVtZW50cywgb3IgcG90ZW50aWFsbHkgZXZlbiBgaWZgIGNvbmRpdGlvbnMgdGhhdCBpbmZsdWVuY2UgdGhlIGF2YWlsYWJpbGl0eSBvZiBgUFRQXzE1ODhfQ0xPQ0tgIGF0IGJ1aWxkIHRpbWUuIEknbGwgYmUgbWV0aWN1bG91c2x5IGNoZWNraW5nIGZvciByZWxhdGlvbnNoaXBzIHdpdGggb3RoZXIgY29uZmlndXJhdGlvbnMsIHBvdGVudGlhbGx5IGhhcmR3YXJlLXNwZWNpZmljIG9wdGlvbnMsIG9yIGV2ZW4gb3RoZXIga2VybmVsIHN1YnN5c3RlbXMgdGhhdCBtaWdodCBiZSBwcmVyZXF1aXNpdGVzLiBJdCdzIGFsbCBhYm91dCB0cmFjaW5nIHRoZSBjb25maWd1cmF0aW9uIHBhdGggdG8gdW5kZXJzdGFuZCB0aGUgdW5kZXJseWluZyByZXF1aXJlbWVudHMgYW5kIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIHRoYXQgbWlnaHQgYXJpc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMzE0LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTY6NTU6MzIuNDg5NDk2Nzk0WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDM1MzUyMDYxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBQVFBfMTU4OF9DTE9DS1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvS2NvbmZpZz0yMT1jb25maWcgSVhQNFhYX0VUSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL0tjb25maWctMzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL0tjb25maWc6MzE6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0lYUDQ2WFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9LY29uZmlnLTMyLVxcdGJvb2wgXFxcIkludGVsIElYUDQ2eCBhcyBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnPTY9bWVudSBcXFwiUFRQIGNsb2NrIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9wdHAvS2NvbmZpZy03LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6ODpjb25maWcgUFRQXzE1ODhfQ0xPQ0tcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTktXFx0dHJpc3RhdGUgXFxcIlBUUCBjbG9jayBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0yOS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjMwOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbmRyaXZlcnMvcHRwL0tjb25maWctMzEtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctNDEtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzo0Mjpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfRFRFXFxuZHJpdmVycy9wdHAvS2NvbmZpZy00My1cXHR0cmlzdGF0ZSBcXFwiQnJvYWRjb20gRFRFIGFzIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctNTctXFxuZHJpdmVycy9wdHAvS2NvbmZpZzo1ODpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfUU9SSVFcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTU5LVxcdHRyaXN0YXRlIFxcXCJGcmVlc2NhbGUgUW9ySVEgMTU4OCB0aW1lciBhcyBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnPTc1PWNvbmZpZyBEUDgzNjQwX1BIWVxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy05Mi1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjkzOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JTkVTXFxuZHJpdmVycy9wdHAvS2NvbmZpZy05NC1cXHR0cmlzdGF0ZSBcXFwiWkhBVyBJbkVTIFBUUCB0aW1lIHN0YW1waW5nIElQIGNvcmVcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEwMy1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjEwNDpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfUENIXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMDUtXFx0dHJpc3RhdGUgXFxcIkludGVsIFBDSCBFRzIwVCBhcyBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEyMi1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjEyMzpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfS1ZNXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMjQtXFx0dHJpc3RhdGUgXFxcIktWTSB2aXJ0dWFsIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTM0LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTM1OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19WTUNMT0NLXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMzYtXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgbWFjaGluZSBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE1MS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE1Mjpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfSURUODJQMzNcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE1My1cXHR0cmlzdGF0ZSBcXFwiSURUIDgyUDMzeHh4IFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTYzLVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTY0OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JRFRDTVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTY1LVxcdHRyaXN0YXRlIFxcXCJJRFQgQ0xPQ0tNQVRSSVggYXMgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNzUtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoxNzY6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0ZDM1dcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE3Ny1cXHR0cmlzdGF0ZSBcXFwiUkVORVNBUyBGZW10b0Nsb2NrMyBXaXJlbGVzcyBhcyBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE4Ny1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE4ODpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfTU9DS1xcbmRyaXZlcnMvcHRwL0tjb25maWctMTg5LVxcdHRyaXN0YXRlIFxcXCJNb2NrLXVwIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTk4LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTk5OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19WTVdcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIwMC1cXHR0cmlzdGF0ZSBcXFwiVk13YXJlIHZpcnR1YWwgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0yMTAtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoyMTE6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX09DUFxcbmRyaXZlcnMvcHRwL0tjb25maWctMjEyLVxcdHRyaXN0YXRlIFxcXCJPcGVuQ29tcHV0ZSBUaW1lQ2FyZCBhcyBQVFAgY2xvY2tcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU1OjMzLjkyNDg1NTA3NloiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTc0ODM0OTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgYGRyaXZlcnMvcHRwL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSA4LlxuXG4qKkV4YW1pbmluZyB0aGUgUFRQIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBgZHJpdmVycy9wdHAvS2NvbmZpZ2AgZmlsZS4gSSdtIGZvY3VzaW5nIG9uIGxpbmUgOCwgaG9waW5nIHRvIGdldCBhIHF1aWNrIGdyYXNwIG9mIHRoZSBnZW5lcmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhdmFpbGFibGUgZm9yIFByZWNpc2lvbiBUaW1lIFByb3RvY29sIChQVFApIGRyaXZlcnMgaW4gdGhlIGtlcm5lbC4gS25vd2luZyB0aGUgZmlsZSBzdHJ1Y3R1cmUgZnJvbSBwYXN0IGV4cGVyaWVuY2VzLCBJIGV4cGVjdCB0aGlzIHRvIGJlIHRoZSBwb2ludCB3aGVyZSB0aGUgYnJvYWQgZmVhdHVyZSBzZXQgaXMgZGVmaW5lZC4gSSdtIGxvb2tpbmcgZm9yIHRoZSBmb3VuZGF0aW9uYWwgY2hvaWNlczogYXJlIHdlIGRlYWxpbmcgd2l0aCBoYXJkd2FyZS1hc3Npc3RlZCBQVFAsIHNvZnR3YXJlIGltcGxlbWVudGF0aW9ucywgb3IgbWF5YmUgb3B0aW9ucyBmb3Igc3BlY2lmaWMgbmV0d29yayBpbnRlcmZhY2UgY29udHJvbGxlcnM/IEknbSBhbnRpY2lwYXRpbmcgZmluZGluZyB0aGUgbWFpbiBLY29uZmlnIHN5bWJvbCBhbmQgaXRzIGRlcGVuZGVuY2llcyBvciBwb3NzaWJsZSBkZWZhdWx0cyBoZXJlLiBUaGlzIHNob3VsZCBnaXZlIG1lIHRoZSBicm9hZCBzdHJva2VzIG9mIGhvdyB0aGUgUFRQIHN1YnN5c3RlbSBpcyBzdHJ1Y3R1cmVkIGZyb20gYSBjb25maWd1cmF0aW9uIHN0YW5kcG9pbnQsIHNvIEkgY2FuIGJldHRlciBncmFzcCBob3cgdG8gdGFpbG9yIG15IHN5c3RlbXMuIEhvcGVmdWxseSwgdGhpcyBzZWN0aW9uIHdpbGwgcG9pbnQgbWUgaW4gdGhlIHJpZ2h0IGRpcmVjdGlvbiB0byB1bmRlcnN0YW5kIHRoZSBmaW5lciBkZXRhaWxzIGxhdGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTY0NSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU1OjM3LjQ5OTY5MjY0MVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDA4MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9wdHAvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBQVFAgY2xvY2sgc3VwcG9ydCBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdG1lbnUgXFxcIlBUUCBjbG9jayBzdXBwb3J0XFxcIlxcbiAgIDc6XFx0XFxuICAgODpcXHRjb25maWcgUFRQXzE1ODhfQ0xPQ0tcXG4gICA5OlxcdFxcdHRyaXN0YXRlIFxcXCJQVFAgY2xvY2sgc3VwcG9ydFxcXCJcXG4gIDEwOlxcdFxcdGRlcGVuZHMgb24gTkVUIFxcdTAwMjZcXHUwMDI2IFBPU0lYX1RJTUVSU1xcbiAgMTE6XFx0XFx0ZGVmYXVsdCBFVEhFUk5FVFxcbiAgMTI6XFx0XFx0c2VsZWN0IFBQU1xcbiAgMTM6XFx0XFx0c2VsZWN0IE5FVF9QVFBfQ0xBU1NJRllcXG4gIDE0OlxcdFxcdGhlbHBcXG4gIDE1OlxcdFxcdCAgVGhlIElFRUUgMTU4OCBzdGFuZGFyZCBkZWZpbmVzIGEgbWV0aG9kIHRvIHByZWNpc2VseVxcbiAgMTY6XFx0XFx0ICBzeW5jaHJvbml6ZSBkaXN0cmlidXRlZCBjbG9ja3Mgb3ZlciBFdGhlcm5ldCBuZXR3b3Jrcy4gVGhlXFxuICAxNzpcXHRcXHQgIHN0YW5kYXJkIGRlZmluZXMgYSBQcmVjaXNpb24gVGltZSBQcm90b2NvbCAoUFRQKSwgd2hpY2ggY2FuXFxuICAxODpcXHRcXHQgIGJlIHVzZWQgdG8gYWNoaWV2ZSBzeW5jaHJvbml6YXRpb24gd2l0aGluIGEgZmV3IGRvemVuXFxuICAxOTpcXHRcXHQgIG1pY3Jvc2Vjb25kcy4gSW4gYWRkaXRpb24sIHdpdGggdGhlIGhlbHAgb2Ygc3BlY2lhbCBoYXJkd2FyZVxcbiAgMjA6XFx0XFx0ICB0aW1lIHN0YW1waW5nIHVuaXRzLCBpdCBjYW4gYmUgcG9zc2libGUgdG8gYWNoaWV2ZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNjo1NTozNy40OTk3OTQ3NzFaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA2MTQ0NDYzNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIERQODM2NDAgUEhZIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGhlcmUncyBteSBicmVha2Rvd24uIEZpcnN0LCBJIG5vdGljZWQgdGhlIGRlcGVuZGVuY2llcy4gYFBUUF8xNTg4X0NMT0NLYCBpcyByZWxpYW50IG9uIGBORVRgIGFuZCBgUE9TSVhfVElNRVJTYCwgYm90aCBvZiB3aGljaCBhcmUgc3RhbmRhcmQgY29tcG9uZW50cy4gYERQODM2NDBfUEhZYCBkZXBlbmRzIG9uIGBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdgLCBgUEhZTElCYCwgYW5kLCBjcnVjaWFsbHksIGBQVFBfMTU4OF9DTE9DS2AuIFRoZXJlZm9yZSwgYSBzZW5zaWJsZSBgRW5hYmxlQ29uZmlnc2AgbGlzdCBzaG91bGQgaW5jbHVkZSBgRFA4MzY0MF9QSFlgLCBgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HYCwgYFBIWUxJQmAsIGFuZCBgUFRQXzE1ODhfQ0xPQ0tgLlxuXG5OZXh0LCBJIGV4YW1pbmVkIHRoZSBgRm9jdXNTeW1ib2xzYC4gVGhlIHBhdGNoIGlzIG1vZGlmeWluZyBzZXZlcmFsIGZ1bmN0aW9uczogYGRwODM2NDBfcHJvYmVgLCBgZHA4MzY0MF9yZW1vdmVgLCBgZHA4MzY0MF9jbG9ja19pbml0YCwgYHBoeV9wYWNrYWdlX2xvY2tgLCBhbmQgYHBoeV9wYWNrYWdlX3VubG9ja2AuIEFsdGhvdWdoIGBkcDgzNjQwX2Nsb2NrX2luaXRgIGlzIHN0YXRpYyBhbmQgY2FsbGVkIGludGVybmFsbHksIEkgd2lsbCBpbmNsdWRlIGl0LiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGxpc3QgYGRwODM2NDBfcHJvYmVgLCBgZHA4MzY0MF9yZW1vdmVgLCBgcGh5X3BhY2thZ2VfbG9ja2AsIGFuZCBgcGh5X3BhY2thZ2VfdW5sb2NrYC4gQnV0IHdhaXQsIGBkcDgzNjQwX3Byb2JlYCBhbmQgYGRwODM2NDBfcmVtb3ZlYCBhcmUgc3RhdGljIGZ1bmN0aW9ucywgaG93ZXZlciB0aGV5ICphcmUqIGFzc2lnbmVkIHRvIGZ1bmN0aW9uIHBvaW50ZXJzIHdpdGhpbiBgZHA4MzY0MF9kcml2ZXJgLiBUaGF0J3MgaW1wb3J0YW50OyB0aGV5IGFyZSB0aGUgZHJpdmVyJ3MgZW50cnkgcG9pbnRzLiBTbywgSSB3aWxsIGluY2x1ZGUgdGhlbSBpbiBteSBsaXN0LiBgcGh5X3BhY2thZ2VfbG9ja2AgYW5kIGBwaHlfcGFja2FnZV91bmxvY2tgIGFyZSBleHBvcnRlZCBmdW5jdGlvbnMsIHNvIHRoZXkgYXJlIGRlZmluaXRlbHkgcmVsZXZhbnQuXG5cbk5vdywgbGV0J3MgcmV2aWV3IHRoZSByYXRpb25hbGUuIFRoZSBwYXRjaCByZWZhY3RvcnMgdGhlIGRyaXZlciB0byB1c2UgdGhlIHN0YW5kYXJkIGBwaHlfcGFja2FnZWAgQVBJIHJhdGhlciB0aGFuIGEgY3VzdG9tIGdsb2JhbCBsaXN0IGZvciBzaGFyZWQgY2xvY2sgaW5pdGlhbGl6YXRpb24uIFRoZXkncmUgYWxzbyBhZGRpbmcgYHBoeV9wYWNrYWdlX2xvY2tgIGFuZCBgcGh5X3BhY2thZ2VfdW5sb2NrYCB0byBzZXJpYWxpemUgYWNjZXNzIHRvIHBhY2thZ2UtcHJpdmF0ZSBkYXRhLiBUaGVzZSBjaGFuZ2VzIHRvdWNoIHRoZSBwcm9iZSBhbmQgcmVtb3ZlIHBhdGhzIG9mIHRoZSBQSFkgZHJpdmVyLiBUaGVzZSBwYXRocyBjYW4gYmUgcmVhY2hlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IHRocm91Z2ggZW11bGF0aW5nIGFuIE1ESU8gYnVzLCBvciBldmVuIHdpdGggYSBVU0IgbmV0d29yayBkZXZpY2UgdGhhdCBoYXMgdGhlIHNwZWNpZmljIFBIWSBJRC4gR2l2ZW4gdGhpcywgZnV6emluZyBtYWtlcyBwZXJmZWN0IHNlbnNlIGhlcmUuIFRoZSBwb3RlbnRpYWwgZm9yIHVuZXhwZWN0ZWQgc3RhdGVzLCBwYXJ0aWN1bGFybHkgYXJvdW5kIHRoZSBsb2NraW5nIG1lY2hhbmlzbXMsIGlzIGhpZ2ggZW5vdWdoIHRvIHdhcnJhbnQgY2xvc2Ugc2NydXRpbnkuXG5cbkZpbmFsbHksIEknbGwgZG8gYSBxdWljayBzd2VlcCB0byBlbnN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZy4gSSd2ZSBub3RlZCB0aGUgcmVtb3ZhbCBvZiBgZHA4MzY0MF9jbG9ja19nZXRfYnVzYCwgYGRwODM2NDBfY2xvY2tfZ2V0YCwgYW5kIGBkcDgzNjQwX2Nsb2NrX3B1dGAsIGFuZCBJJ3ZlIGFsc28gbm90ZWQgdGhhdCBgZHA4MzY0MF9jbG9ja19pbml0YCBoYXMgYmVlbiBtb2RpZmllZCwgYWxvbmcgd2l0aCB0aGUgb3RoZXIgc3ltYm9scy4gSSB0aGluayB0aGF0IGNvdmVycyBpdC4gT2theSwgSSdtIHJlYWR5IHRvIHNldCB0aGUgcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIxNzIsIk91dHB1dFRva2VucyI6MTk5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTYyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTY6NTU6NDguMTE0MjQ2OTAzWiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE0NTMxMTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRQODM2NDBfUEhZXCIsXG4gICAgXCJORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcIixcbiAgICBcIlBIWUxJQlwiLFxuICAgIFwiUFRQXzE1ODhfQ0xPQ0tcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkcDgzNjQwX3Byb2JlXCIsXG4gICAgXCJkcDgzNjQwX3JlbW92ZVwiLFxuICAgIFwicGh5X3BhY2thZ2VfbG9ja1wiLFxuICAgIFwicGh5X3BhY2thZ2VfdW5sb2NrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSBEUDgzNjQwIFBIWSBkcml2ZXIgdG8gdXNlIHRoZSBzdGFuZGFyZCBwaHlfcGFja2FnZSBBUEkgZm9yIHNoYXJlZCBjbG9jayBpbml0aWFsaXphdGlvbiwgcmVwbGFjaW5nIGEgY3VzdG9tIGdsb2JhbCBsaXN0LiBJdCBhbHNvIGludHJvZHVjZXMgcGh5X3BhY2thZ2VfbG9jayBhbmQgcGh5X3BhY2thZ2VfdW5sb2NrIHRvIHNlcmlhbGl6ZSBhY2Nlc3MgdG8gcGFja2FnZS1wcml2YXRlIGRhdGEuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IHRoZSBwcm9iZSBhbmQgcmVtb3ZlIHBhdGhzIG9mIHRoZSBQSFkgZHJpdmVyLCB3aGljaCBjYW4gYmUgcmVhY2hlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGJ5IGVtdWxhdGluZyBhbiBNRElPIGJ1cyBvciBhIFVTQiBuZXR3b3JrIGRldmljZSB3aXRoIHRoZSBzcGVjaWZpYyBQSFkgSUQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRFA4MzY0MF9QSFlcIixcbiAgICBcIk5FVFdPUktfUEhZX1RJTUVTVEFNUElOR1wiLFxuICAgIFwiUEhZTElCXCIsXG4gICAgXCJQVFBfMTU4OF9DTE9DS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRwODM2NDBfcHJvYmVcIixcbiAgICBcImRwODM2NDBfcmVtb3ZlXCIsXG4gICAgXCJwaHlfcGFja2FnZV9sb2NrXCIsXG4gICAgXCJwaHlfcGFja2FnZV91bmxvY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgdGhlIERQODM2NDAgUEhZIGRyaXZlciB0byB1c2UgdGhlIHN0YW5kYXJkIHBoeV9wYWNrYWdlIEFQSSBmb3Igc2hhcmVkIGNsb2NrIGluaXRpYWxpemF0aW9uLCByZXBsYWNpbmcgYSBjdXN0b20gZ2xvYmFsIGxpc3QuIEl0IGFsc28gaW50cm9kdWNlcyBwaHlfcGFja2FnZV9sb2NrIGFuZCBwaHlfcGFja2FnZV91bmxvY2sgdG8gc2VyaWFsaXplIGFjY2VzcyB0byBwYWNrYWdlLXByaXZhdGUgZGF0YS4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIHByb2JlIGFuZCByZW1vdmUgcGF0aHMgb2YgdGhlIFBIWSBkcml2ZXIsIHdoaWNoIGNhbiBiZSByZWFjaGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgYnkgZW11bGF0aW5nIGFuIE1ESU8gYnVzIG9yIGEgVVNCIG5ldHdvcmsgZGV2aWNlIHdpdGggdGhlIHNwZWNpZmljIFBIWSBJRC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTY6NTU6NDguMTg1NzA1NDg4WiIsIlNlcSI6MzUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTk4OTY0NTY5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU1OjQ4LjE4NjEzOTQzOFoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozMTk4OTIwNzkyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSBkcDgzNjQwIFBIWSBkcml2ZXIgdG8gdXNlIHRoZSBzdGFuZGFyZCBgcGh5X3BhY2thZ2Vfam9pbmAgQVBJIGZvciBtYW5hZ2luZyBzaGFyZWQgY2xvY2sgc3RydWN0dXJlcywgcmVwbGFjaW5nIGEgY3VzdG9tIGdsb2JhbCBsaXN0IGFuZCBtYW51YWwgYWxsb2NhdGlvbnMuIFRoZSBzaGFyZWQgc3RydWN0dXJlIGBkcDgzNjQwX2Nsb2NrYCAoYW5kIGl0cyBlbWJlZGRlZCBgcGluX2NvbmZpZ2AgYXJyYXkpIGlzIGFsbG9jYXRlZCB2aWEgYGt6YWxsb2NgIGluc2lkZSBgcGh5X3BhY2thZ2Vfam9pbmAsIGVuc3VyaW5nIGFsbCBmaWVsZHMgYW5kIHBhZGRpbmcgYXJlIGZ1bGx5IHplcm8taW5pdGlhbGl6ZWQuIFRoZXJlIGFyZSBubyBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2guIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGludm9sdmUgb2JqZWN0IGxpZmVjeWNsZSBpc3N1ZXMgKGxpa2UgdXNlLWFmdGVyLWZyZWUgb3IgbWVtb3J5IGxlYWtzKSBvciBsb2NraW5nIGlzc3Vlcywgd2hpY2ggYXJlIGFscmVhZHkgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIExPQ0tERVAuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMTViNzBkZGFhN2YzZGZmMzZiZDUxZTdlMmM2OGVlYzA4NTE5YTIzZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDEwIDE2OjUzOjU5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYyBiL2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmNcbmluZGV4IDk4NDcyYWJkZDM5MjAuLjY4NjdlN2M2ZjNiN2UgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jXG5AQCAtMjEsNiArMjEsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwiZHA4MzY0MF9yZWcuaFwiXG4rI2luY2x1ZGUgXCJwaHlsaWIuaFwiXG4gXG4gI2RlZmluZSBEUDgzNjQwX1BIWV9JRFx0MHgyMDAwNWNlMVxuICNkZWZpbmUgUEFHRVNFTFx0XHQweDEzXG5AQCAtMTI4LDEwICsxMjksNiBAQCBzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlIHtcbiB9O1xuIFxuIHN0cnVjdCBkcDgzNjQwX2Nsb2NrIHtcbi1cdC8qIGtlZXBzIHRoZSBpbnN0YW5jZSBpbiB0aGUgJ3BoeXRlcl9jbG9ja3MnIGxpc3QgKi9cbi1cdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcbi1cdC8qIHdlIGNyZWF0ZSBvbmUgY2xvY2sgaW5zdGFuY2UgcGVyIE1JSSBidXMgKi9cbi1cdHN0cnVjdCBtaWlfYnVzICpidXM7XG4gXHQvKiBwcm90ZWN0cyBleHRlbmRlZCByZWdpc3RlcnMgZnJvbSBjb25jdXJyZW50IGFjY2VzcyAqL1xuIFx0c3RydWN0IG11dGV4IGV4dHJlZ19sb2NrO1xuIFx0LyogcmVtZW1iZXJzIHdoaWNoIHBhZ2Ugd2FzIGxhc3Qgc2VsZWN0ZWQgKi9cbkBAIC0xNDYsNiArMTQzLDggQEAgc3RydWN0IGRwODM2NDBfY2xvY2sge1xuIFx0c3RydWN0IGxpc3RfaGVhZCBwaHlsaXN0O1xuIFx0LyogcmVmZXJlbmNlIHRvIG91ciBQVFAgaGFyZHdhcmUgY2xvY2sgKi9cbiBcdHN0cnVjdCBwdHBfY2xvY2sgKnB0cF9jbG9jaztcbitcdC8qIHByb3RlY3RlZCBieSB0aGUgUFRQIGNvcmUgcGluIGNvbmZpZ3VyYXRpb24gbG9jayAqL1xuK1x0c3RydWN0IHB0cF9waW5fZGVzYyBwaW5fY29uZmlnW0RQODM2NDBfTl9QSU5TXTtcbiB9O1xuIFxuIC8qIGdsb2JhbHMgKi9cbkBAIC0yMDYsMTAgKzIwNSw2IEBAIHN0YXRpYyB2b2lkIGRwODM2NDBfZ3Bpb19kZWZhdWx0cyhzdHJ1Y3QgcHRwX3Bpbl9kZXNjICpwZClcbiBcdH1cbiB9XG4gXG4tLyogYSBsaXN0IG9mIGNsb2NrcyBhbmQgYSBtdXRleCB0byBwcm90ZWN0IGl0ICovXG4tc3RhdGljIExJU1RfSEVBRChwaHl0ZXJfY2xvY2tzKTtcbi1zdGF0aWMgREVGSU5FX01VVEVYKHBoeXRlcl9jbG9ja3NfbG9jayk7XG4tXG4gc3RhdGljIHZvaWQgcnhfdGltZXN0YW1wX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbiBcbiAvKiBleHRlbmRlZCByZWdpc3RlciBhY2Nlc3MgZnVuY3Rpb25zICovXG5AQCAtOTUzLDEzICs5NDgsMTIgQEAgc3RhdGljIHZvaWQgZGVjb2RlX3N0YXR1c19mcmFtZShzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICpkcDgzNjQwLFxuIFx0fVxuIH1cbiBcbi1zdGF0aWMgdm9pZCBkcDgzNjQwX2Nsb2NrX2luaXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrLCBzdHJ1Y3QgbWlpX2J1cyAqYnVzKVxuK3N0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfaW5pdChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2spXG4ge1xuLVx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2Y2xvY2stXHUwMDNlbGlzdCk7XG4tXHRjbG9jay1cdTAwM2VidXMgPSBidXM7XG4gXHRtdXRleF9pbml0KFx1MDAyNmNsb2NrLVx1MDAzZWV4dHJlZ19sb2NrKTtcbiBcdG11dGV4X2luaXQoXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZjbG9jay1cdTAwM2VwaHlsaXN0KTtcbitcdGNsb2NrLVx1MDAzZWNhcHMucGluX2NvbmZpZyA9IGNsb2NrLVx1MDAzZXBpbl9jb25maWc7XG4gXHRjbG9jay1cdTAwM2VjYXBzLm93bmVyID0gVEhJU19NT0RVTEU7XG4gXHRzcHJpbnRmKGNsb2NrLVx1MDAzZWNhcHMubmFtZSwgXCJkcDgzNjQwIHRpbWVyXCIpO1xuIFx0Y2xvY2stXHUwMDNlY2Fwcy5tYXhfYWRqXHQ9IDE5NTMxMjQ7XG5AQCAtOTc3LDE0ICs5NzEsOCBAQCBzdGF0aWMgdm9pZCBkcDgzNjQwX2Nsb2NrX2luaXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrLCBzdHJ1Y3QgbWlpX2J1cyAqYnVzKVxuIFx0Y2xvY2stXHUwMDNlY2Fwcy5zZXR0aW1lNjRcdD0gcHRwX2RwODM2NDBfc2V0dGltZTtcbiBcdGNsb2NrLVx1MDAzZWNhcHMuZW5hYmxlXHQ9IHB0cF9kcDgzNjQwX2VuYWJsZTtcbiBcdGNsb2NrLVx1MDAzZWNhcHMudmVyaWZ5XHQ9IHB0cF9kcDgzNjQwX3ZlcmlmeTtcbi1cdC8qXG4tXHQgKiBDb252ZXJ0IHRoZSBtb2R1bGUgcGFyYW0gZGVmYXVsdHMgaW50byBhIGR5bmFtaWMgcGluIGNvbmZpZ3VyYXRpb24uXG4tXHQgKi9cbitcdC8qIEluaXRpYWxpemUgdGhlIHJ1bnRpbWUgcGluIGNvbmZpZ3VyYXRpb24gZnJvbSBncGlvX3RhYi4gKi9cbiBcdGRwODM2NDBfZ3Bpb19kZWZhdWx0cyhjbG9jay1cdTAwM2VjYXBzLnBpbl9jb25maWcpO1xuLVx0Lypcbi1cdCAqIEdldCBhIHJlZmVyZW5jZSB0byB0aGlzIGJ1cyBpbnN0YW5jZS5cbi1cdCAqL1xuLVx0Z2V0X2RldmljZShcdTAwMjZidXMtXHUwMDNlZGV2KTtcbiB9XG4gXG4gc3RhdGljIGludCBjaG9vc2VfdGhpc19waHkoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrLFxuQEAgLTk5OSw1OCArOTg3LDYgQEAgc3RhdGljIGludCBjaG9vc2VfdGhpc19waHkoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLXN0YXRpYyBzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqZHA4MzY0MF9jbG9ja19nZXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrKVxuLXtcbi1cdGlmIChjbG9jaylcbi1cdFx0bXV0ZXhfbG9jayhcdTAwMjZjbG9jay1cdTAwM2VjbG9ja19sb2NrKTtcbi1cdHJldHVybiBjbG9jaztcbi19XG4tXG4tLypcbi0gKiBMb29rIHVwIGFuZCBsb2NrIGEgY2xvY2sgYnkgYnVzIGluc3RhbmNlLlxuLSAqIElmIHRoZXJlIGlzIG5vIGNsb2NrIGZvciB0aGlzIGJ1cywgdGhlbiBjcmVhdGUgaXQgZmlyc3QuXG4tICovXG4tc3RhdGljIHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpkcDgzNjQwX2Nsb2NrX2dldF9idXMoc3RydWN0IG1paV9idXMgKmJ1cylcbi17XG4tXHRzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2sgPSBOVUxMLCAqdG1wO1xuLVx0c3RydWN0IGxpc3RfaGVhZCAqdGhpcztcbi1cbi1cdG11dGV4X2xvY2soXHUwMDI2cGh5dGVyX2Nsb2Nrc19sb2NrKTtcbi1cbi1cdGxpc3RfZm9yX2VhY2godGhpcywgXHUwMDI2cGh5dGVyX2Nsb2Nrcykge1xuLVx0XHR0bXAgPSBsaXN0X2VudHJ5KHRoaXMsIHN0cnVjdCBkcDgzNjQwX2Nsb2NrLCBsaXN0KTtcbi1cdFx0aWYgKHRtcC1cdTAwM2VidXMgPT0gYnVzKSB7XG4tXHRcdFx0Y2xvY2sgPSB0bXA7XG4tXHRcdFx0YnJlYWs7XG4tXHRcdH1cbi1cdH1cbi1cdGlmIChjbG9jaylcbi1cdFx0Z290byBvdXQ7XG4tXG4tXHRjbG9jayA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBkcDgzNjQwX2Nsb2NrKTtcbi1cdGlmICghY2xvY2spXG4tXHRcdGdvdG8gb3V0O1xuLVxuLVx0Y2xvY2stXHUwMDNlY2Fwcy5waW5fY29uZmlnID0ga3phbGxvY19vYmpzKHN0cnVjdCBwdHBfcGluX2Rlc2MsXG4tXHRcdFx0XHRcdCAgICAgIERQODM2NDBfTl9QSU5TKTtcbi1cdGlmICghY2xvY2stXHUwMDNlY2Fwcy5waW5fY29uZmlnKSB7XG4tXHRcdGtmcmVlKGNsb2NrKTtcbi1cdFx0Y2xvY2sgPSBOVUxMO1xuLVx0XHRnb3RvIG91dDtcbi1cdH1cbi1cdGRwODM2NDBfY2xvY2tfaW5pdChjbG9jaywgYnVzKTtcbi1cdGxpc3RfYWRkX3RhaWwoXHUwMDI2Y2xvY2stXHUwMDNlbGlzdCwgXHUwMDI2cGh5dGVyX2Nsb2Nrcyk7XG4tb3V0OlxuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBoeXRlcl9jbG9ja3NfbG9jayk7XG4tXG4tXHRyZXR1cm4gZHA4MzY0MF9jbG9ja19nZXQoY2xvY2spO1xuLX1cbi1cbi1zdGF0aWMgdm9pZCBkcDgzNjQwX2Nsb2NrX3B1dChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2spXG4te1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuLX1cbi1cbiBzdGF0aWMgaW50IGRwODM2NDBfc29mdF9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIHtcbiBcdGludCByZXQ7XG5AQCAtMTQwMCwyMCArMTMzNiwzMSBAQCBzdGF0aWMgaW50IGRwODM2NDBfdHNfaW5mbyhzdHJ1Y3QgbWlpX3RpbWVzdGFtcGVyICptaWlfdHMsXG4gXG4gc3RhdGljIGludCBkcDgzNjQwX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4ge1xuLVx0c3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrO1xuIFx0c3RydWN0IGRwODM2NDBfcHJpdmF0ZSAqZHA4MzY0MDtcbi1cdGludCBlcnIgPSAtRU5PTUVNLCBpO1xuK1x0c3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrO1xuK1x0aW50IGVyciwgaTtcbiBcbiBcdGlmIChwaHlkZXYtXHUwMDNlbWRpby5hZGRyID09IEJST0FEQ0FTVF9BRERSKVxuIFx0XHRyZXR1cm4gMDtcbiBcbi1cdGNsb2NrID0gZHA4MzY0MF9jbG9ja19nZXRfYnVzKHBoeWRldi1cdTAwM2VtZGlvLmJ1cyk7XG4tXHRpZiAoIWNsb2NrKVxuLVx0XHRnb3RvIG5vX2Nsb2NrO1xuK1x0ZXJyID0gcGh5X3BhY2thZ2Vfam9pbihwaHlkZXYsIEJST0FEQ0FTVF9BRERSLCBzaXplb2YoKmNsb2NrKSk7XG4rXHRpZiAoZXJyKVxuK1x0XHRyZXR1cm4gZXJyO1xuK1xuK1x0Y2xvY2sgPSBwaHlfcGFja2FnZV9nZXRfcHJpdihwaHlkZXYpO1xuK1x0LyogRW5zdXJlIG90aGVyIFBIWSBwcm9iZXMgd2FpdCBmb3Igc2hhcmVkIGNsb2NrIGluaXRpYWxpemF0aW9uLiAqL1xuK1x0cGh5X3BhY2thZ2VfbG9jayhwaHlkZXYpO1xuK1x0aWYgKHBoeV9wYWNrYWdlX3Byb2JlX29uY2UocGh5ZGV2KSlcbitcdFx0ZHA4MzY0MF9jbG9ja19pbml0KGNsb2NrKTtcbitcdHBoeV9wYWNrYWdlX3VubG9jayhwaHlkZXYpO1xuK1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZjbG9jay1cdTAwM2VjbG9ja19sb2NrKTtcbiBcbiBcdGRwODM2NDAgPSBremFsbG9jX29iaihzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlKTtcbi1cdGlmICghZHA4MzY0MClcbitcdGlmICghZHA4MzY0MCkge1xuK1x0XHRlcnIgPSAtRU5PTUVNO1xuIFx0XHRnb3RvIG5vX21lbW9yeTtcbitcdH1cbiBcbiBcdGRwODM2NDAtXHUwMDNlcGh5ZGV2ID0gcGh5ZGV2O1xuIFx0ZHA4MzY0MC1cdTAwM2VtaWlfdHMucnh0c3RhbXAgPSBkcDgzNjQwX3J4dHN0YW1wO1xuQEAgLTE0NTAsMTUgKzEzOTcsMjAgQEAgc3RhdGljIGludCBkcDgzNjQwX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHR9IGVsc2VcbiBcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZkcDgzNjQwLVx1MDAzZWxpc3QsIFx1MDAyNmNsb2NrLVx1MDAzZXBoeWxpc3QpO1xuIFxuLVx0ZHA4MzY0MF9jbG9ja19wdXQoY2xvY2spO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuK1xuIFx0cmV0dXJuIDA7XG4gXG4gbm9fcmVnaXN0ZXI6XG4gXHRjbG9jay1cdTAwM2VjaG9zZW4gPSBOVUxMO1xuK1x0Y2xvY2stXHUwMDNlcHRwX2Nsb2NrID0gTlVMTDtcbitcdHBoeWRldi1cdTAwM2VkZWZhdWx0X3RpbWVzdGFtcCA9IGZhbHNlO1xuK1x0cGh5ZGV2LVx1MDAzZW1paV90cyA9IE5VTEw7XG4rXHRwaHlkZXYtXHUwMDNlcHJpdiA9IE5VTEw7XG4gXHRrZnJlZShkcDgzNjQwKTtcbiBub19tZW1vcnk6XG4tXHRkcDgzNjQwX2Nsb2NrX3B1dChjbG9jayk7XG4tbm9fY2xvY2s6XG4rXHRtdXRleF91bmxvY2soXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4rXHRwaHlfcGFja2FnZV9sZWF2ZShwaHlkZXYpO1xuIFx0cmV0dXJuIGVycjtcbiB9XG4gXG5AQCAtMTQ2Nyw3ICsxNDE5LDYgQEAgc3RhdGljIHZvaWQgZHA4MzY0MF9yZW1vdmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaztcbiBcdHN0cnVjdCBsaXN0X2hlYWQgKnRoaXMsICpuZXh0O1xuIFx0c3RydWN0IGRwODM2NDBfcHJpdmF0ZSAqdG1wLCAqZHA4MzY0MCA9IHBoeWRldi1cdTAwM2Vwcml2O1xuLVx0Ym9vbCByZW1vdmVfY2xvY2sgPSBmYWxzZTtcbiBcbiBcdGlmIChwaHlkZXYtXHUwMDNlbWRpby5hZGRyID09IEJST0FEQ0FTVF9BRERSKVxuIFx0XHRyZXR1cm47XG5AQCAtMTQ4MCw3ICsxNDMxLDggQEAgc3RhdGljIHZvaWQgZHA4MzY0MF9yZW1vdmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdHNrYl9xdWV1ZV9wdXJnZShcdTAwMjZkcDgzNjQwLVx1MDAzZXJ4X3F1ZXVlKTtcbiBcdHNrYl9xdWV1ZV9wdXJnZShcdTAwMjZkcDgzNjQwLVx1MDAzZXR4X3F1ZXVlKTtcbiBcbi1cdGNsb2NrID0gZHA4MzY0MF9jbG9ja19nZXQoZHA4MzY0MC1cdTAwM2VjbG9jayk7XG4rXHRjbG9jayA9IGRwODM2NDAtXHUwMDNlY2xvY2s7XG4rXHRtdXRleF9sb2NrKFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuIFxuIFx0aWYgKGRwODM2NDAgPT0gY2xvY2stXHUwMDNlY2hvc2VuKSB7XG4gXHRcdHB0cF9jbG9ja191bnJlZ2lzdGVyKGNsb2NrLVx1MDAzZXB0cF9jbG9jayk7XG5AQCAtMTQ5NSwyMyArMTQ0NywxMCBAQCBzdGF0aWMgdm9pZCBkcDgzNjQwX3JlbW92ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0XHR9XG4gXHR9XG4gXG4tXHRpZiAoIWNsb2NrLVx1MDAzZWNob3NlbiBcdTAwMjZcdTAwMjYgbGlzdF9lbXB0eShcdTAwMjZjbG9jay1cdTAwM2VwaHlsaXN0KSlcbi1cdFx0cmVtb3ZlX2Nsb2NrID0gdHJ1ZTtcbi1cbi1cdGRwODM2NDBfY2xvY2tfcHV0KGNsb2NrKTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZjbG9jay1cdTAwM2VjbG9ja19sb2NrKTtcbiBcdGtmcmVlKGRwODM2NDApO1xuIFxuLVx0aWYgKHJlbW92ZV9jbG9jaykge1xuLVx0XHRtdXRleF9sb2NrKFx1MDAyNnBoeXRlcl9jbG9ja3NfbG9jayk7XG4tXHRcdGxpc3RfZGVsKFx1MDAyNmNsb2NrLVx1MDAzZWxpc3QpO1xuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2cGh5dGVyX2Nsb2Nrc19sb2NrKTtcbi1cbi1cdFx0bXV0ZXhfZGVzdHJveShcdTAwMjZjbG9jay1cdTAwM2VleHRyZWdfbG9jayk7XG4tXHRcdG11dGV4X2Rlc3Ryb3koXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4tXHRcdHB1dF9kZXZpY2UoXHUwMDI2Y2xvY2stXHUwMDNlYnVzLVx1MDAzZWRldik7XG4tXHRcdGtmcmVlKGNsb2NrLVx1MDAzZWNhcHMucGluX2NvbmZpZyk7XG4tXHRcdGtmcmVlKGNsb2NrKTtcbi1cdH1cbitcdHBoeV9wYWNrYWdlX2xlYXZlKHBoeWRldik7XG4gfVxuIFxuIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkcDgzNjQwX2RyaXZlcltdID0ge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmNcbmluZGV4IDE2YWU4ZDFjMWY4OWEuLjczNTgwNmM1YmVhODggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuY1xuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmNcbkBAIC01Miw2ICs1MiwyOSBAQCB2b2lkICpwaHlfcGFja2FnZV9nZXRfcHJpdihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChwaHlfcGFja2FnZV9nZXRfcHJpdik7XG4gXG4rLyoqXG4rICogcGh5X3BhY2thZ2VfbG9jayAtIGFjcXVpcmUgdGhlIFBIWSBwYWNrYWdlIGxvY2tcbisgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHRoYXQgaGFzIGpvaW5lZCB0aGUgcGFja2FnZVxuKyAqXG4rICogVXNlIHRoaXMgdG8gc2VyaWFsaXplIGFjY2VzcyB0byBwYWNrYWdlLXByaXZhdGUgZGF0YS4gUmVsZWFzZSB0aGUgbG9ja1xuKyAqIHdpdGggcGh5X3BhY2thZ2VfdW5sb2NrKCkuXG4rICovXG4rdm9pZCBwaHlfcGFja2FnZV9sb2NrKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4re1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5idXMtXHUwMDNlc2hhcmVkX2xvY2spO1xuK31cbitFWFBPUlRfU1lNQk9MX0dQTChwaHlfcGFja2FnZV9sb2NrKTtcbitcbisvKipcbisgKiBwaHlfcGFja2FnZV91bmxvY2sgLSByZWxlYXNlIHRoZSBQSFkgcGFja2FnZSBsb2NrXG4rICogQHBoeWRldjogUEhZIGRldmljZSB0aGF0IGhhcyBqb2luZWQgdGhlIHBhY2thZ2VcbisgKi9cbit2b2lkIHBoeV9wYWNrYWdlX3VubG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuK3tcbitcdG11dGV4X3VubG9jayhcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5idXMtXHUwMDNlc2hhcmVkX2xvY2spO1xuK31cbitFWFBPUlRfU1lNQk9MX0dQTChwaHlfcGFja2FnZV91bmxvY2spO1xuK1xuIHN0YXRpYyBpbnQgcGh5X3BhY2thZ2VfYWRkcmVzcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuIFx0XHRcdCAgICAgICB1bnNpZ25lZCBpbnQgYWRkcl9vZmZzZXQpXG4ge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaWIuaCBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaWIuaFxuaW5kZXggMGZiYTI0NWY5NzQ1OC4uYzZlMjZhYzZiMjhmMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaWIuaFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oXG5AQCAtMTIsNiArMTIsOCBAQCBzdHJ1Y3QgbWlpX2J1cztcbiBcbiBzdHJ1Y3QgZGV2aWNlX25vZGUgKnBoeV9wYWNrYWdlX2dldF9ub2RlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuIHZvaWQgKnBoeV9wYWNrYWdlX2dldF9wcml2KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuK3ZvaWQgcGh5X3BhY2thZ2VfbG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbit2b2lkIHBoeV9wYWNrYWdlX3VubG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbiBpbnQgX19waHlfcGFja2FnZV9yZWFkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHVuc2lnbmVkIGludCBhZGRyX29mZnNldCxcbiBcdFx0ICAgICAgIHUzMiByZWdudW0pO1xuIGludCBfX3BoeV9wYWNrYWdlX3dyaXRlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHVuc2lnbmVkIGludCBhZGRyX29mZnNldCxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3B0cC9LY29uZmlnIGIvZHJpdmVycy9wdHAvS2NvbmZpZ1xuaW5kZXggYjkzNjQwY2EwOGI3Mi4uZmViNTBmOGNjNDA2YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvcHRwL0tjb25maWdcbisrKyBiL2RyaXZlcnMvcHRwL0tjb25maWdcbkBAIC03OCw2ICs3OCw3IEBAIGNvbmZpZyBEUDgzNjQwX1BIWVxuIFx0ZGVwZW5kcyBvbiBQSFlMSUJcbiBcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tcbiBcdHNlbGVjdCBDUkMzMlxuK1x0c2VsZWN0IFBIWV9QQUNLQUdFXG4gXHRoZWxwXG4gXHQgIFN1cHBvcnRzIHRoZSBEUDgzNjQwIFBIWVRFUiB3aXRoIElFRUUgMTU4OCBmZWF0dXJlcy5cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU1OjQ4LjE4NjE0MDQ2OFoiLCJTZXEiOjM3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjA3MzEwNDc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRFA4MzY0MCBQSFkgRHJpdmVyIE1vZGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZGlnZ2luZyBpbnRvIHRoZSBgZHA4MzY0MGAgUEhZIGRyaXZlciwgc3BlY2lmaWNhbGx5IG1lc3Npbmcgd2l0aCBob3cgdGhlIGBkcDgzNjQwX2Nsb2NrYCBzdHJ1Y3R1cmUgaXMgaGFuZGxlZC4gSXQncyBhbHNvIHRvdWNoaW5nIHRoZSBgcGh5X3BhY2thZ2VgIGNvcmUgY29kZSwgd2hpY2ggaXMgaW50ZXJlc3RpbmcgYmVjYXVzZSB0aGF0J3Mgd2hlcmUgc2hhcmVkIFBIWSByZXNvdXJjZXMgYXJlIG1hbmFnZWQuXG5cblByZXZpb3VzbHksIHRoZSBgZHA4MzY0MF9jbG9ja2Agd2FzIGFsbG9jYXRlZCB3aXRoIGBremFsbG9jYCBhbmQgdG9zc2VkIGludG8gYSBnbG9iYWwgbGlzdCwgYHBoeXRlcl9jbG9ja3NgLiBBIGdsb2JhbCBsaXN0IGlzIGZpbmUsIGJ1dCBpdCBjYW4gYmUgcHJvYmxlbWF0aWMgd2l0aCB0aHJlYWRpbmcsIGFuZCBnZW5lcmFsbHkgbWFrZXMgY29kZSBoYXJkZXIgdG8gZm9sbG93LiBOb3csIHRoZSBwYXRjaCBpcyBzd2FwcGluZyB0aGF0IG91dCBmb3IgYHBoeV9wYWNrYWdlX2pvaW5gIGFuZCBgcGh5X3BhY2thZ2VfZ2V0X3ByaXZgIGZvciBtYW5hZ2luZyB0aGUgc2hhcmVkIGNsb2NrLiBUaGF0J3MgYSBnb29kIGFwcHJvYWNoIGZvciByZXNvdXJjZSBzaGFyaW5nIGFtb25nIGRldmljZXMsIGFzIGl0IHdpbGwgcmVkdWNlIHJlZHVuZGFuY3kuXG5cblRoZSBvdGhlciBjaGFuZ2UgaXMgdGhhdCB0aGUgYHBpbl9jb25maWdgIGFycmF5LCB3aGljaCB1c2VkIHRvIGJlIGBremFsbG9jYC1lZCwgaXMgbm93IGVtYmVkZGVkIGRpcmVjdGx5IHdpdGhpbiB0aGUgYHN0cnVjdCBkcDgzNjQwX2Nsb2NrYCBhcyBgc3RydWN0IHB0cF9waW5fZGVzYyBwaW5fY29uZmlnW0RQODM2NDBfTl9QSU5TXWAuIFNvIHdlIGFyZSByZW1vdmluZyB0aGUgYWxsb2NhdGlvbiBhbmQgbWFuYWdlbWVudCBvZiBhIGRlZGljYXRlZCBhcnJheSwgYXMgdGhlIGFycmF5IGlzIGluY2x1ZGVkIHdpdGhpbiB0aGUgc3RydWN0IGFuZCBzbyBpdCBpcyBhbGxvY2F0ZWQgYW5kIGZyZWVkIHdpdGggdGhlIHN0cnVjdC4gVGhpcyBzZWVtcyBjbGVhbmVyIGFuZCBsZXNzIHByb25lIHRvIG1lbW9yeSBsZWFrcyBpZiBkb25lIGNvcnJlY3RseS5cblxuTm93LCBhIHJlZCBmbGFnIGp1c3Qgd2VudCB1cCBpbiBteSBoZWFkLiBXaGVuZXZlciBJIHNlZSBhbGxvY2F0aW9uIGNoYW5nZXMsIHRoZSBmaXJzdCB0aGluZyBJIGRvIGlzIGNoZWNrIGZvciB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gV2UgbmVlZCB0byB2ZXJpZnkgdGhhdCBgcGh5X3BhY2thZ2Vfam9pbmAsIHdoZW4gaXQgYWxsb2NhdGVzIG1lbW9yeSBmb3IgdGhlIHNoYXJlZCBkYXRhLCBhY3R1YWxseSAqemVyb3MqIHRoYXQgbWVtb3J5LiBJZiBpdCBkb2Vzbid0LCB3ZSdyZSBzdGFyaW5nIGRvd24gdGhlIGJhcnJlbCBvZiBhIHBvdGVudGlhbCBzZWN1cml0eSB2dWxuZXJhYmlsaXR5IG9yLCBhdCB0aGUgdmVyeSBsZWFzdCwgdW5wcmVkaWN0YWJsZSBiZWhhdmlvci4gTGV0J3MgZ28gYW5kIGNoZWNrIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgcGh5X3BhY2thZ2Vfam9pbmAgaW1tZWRpYXRlbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0NzgsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNjo1NTo1My43OTM0NTQwNzRaIiwiU2VxIjozOCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NDE1NTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeV9wYWNrYWdlX2pvaW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvYmNtNTQxNDAuYz01ODA9c3RhdGljIGludCBiY201NDE0MF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2JjbTU0MTQwLmMtNTk0LVxcbmRyaXZlcnMvbmV0L3BoeS9iY201NDE0MC5jOjU5NTpcXHRkZXZtX3BoeV9wYWNrYWdlX2pvaW4oXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5kZXYsIHBoeWRldiwgcHJpdi1cXHUwMDNlYmFzZV9hZGRyLCAwKTtcXG5kcml2ZXJzL25ldC9waHkvYmNtNTQxNDAuYy01OTYtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jPTEzMzc9c3RhdGljIGludCBkcDgzNjQwX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTEzNDUtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYzoxMzQ2OlxcdGVyciA9IHBoeV9wYWNrYWdlX2pvaW4ocGh5ZGV2LCBCUk9BRENBU1RfQUREUiwgc2l6ZW9mKCpjbG9jaykpO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTM0Ny1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYz0xMzY0PXN0YXRpYyBpbnQgbXQ3OTg4X3BoeV9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYy0xMzcyLVxcbmRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmM6MTM3MzpcXHRlcnIgPSBkZXZtX3BoeV9wYWNrYWdlX2pvaW4oXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5kZXYsIHBoeWRldiwgMCxcXG5kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jLTEzNzQtXFx0XFx0XFx0XFx0ICAgIHNpemVvZihzdHJ1Y3QgbXRrX3NvY3BoeV9zaGFyZWQpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYz00Njg4PXN0YXRpYyBpbnQgbGFuODgxNF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JlbC5jLTQ3MDgtXFx0YWRkciA9IGxhbnBoeV9yZWFkX3BhZ2VfcmVnKHBoeWRldiwgTEFOODgxNF9QQUdFX0NPTU1PTl9SRUdTLCAwKSBcXHUwMDI2IDB4MUY7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JlbC5jOjQ3MDk6XFx0ZGV2bV9waHlfcGFja2FnZV9qb2luKFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2LCBwaHlkZXYsXFxuZHJpdmVycy9uZXQvcGh5L21pY3JlbC5jLTQ3MTAtXFx0XFx0XFx0ICAgICAgYWRkciwgc2l6ZW9mKHN0cnVjdCBsYW44ODE0X3NoYXJlZF9wcml2KSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcmVsLmM9NjEwMD1zdGF0aWMgaW50IGxhbjg4NDJfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYy02MTUxLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYzo2MTUyOlxcdHJldCA9IGRldm1fcGh5X3BhY2thZ2Vfam9pbihcXHUwMDI2cGh5ZGV2LVxcdTAwM2VtZGlvLmRldiwgcGh5ZGV2LCBhZGRyLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyZWwuYy02MTUzLVxcdFxcdFxcdFxcdCAgICBzaXplb2Yoc3RydWN0IGxhbjg4MTRfc2hhcmVkX3ByaXYpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jPTIyNDE9c3RhdGljIGludCB2c2M4NXh4X3Byb2JlX2NvbW1vbihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21zY2MvbXNjY19tYWluLmMtMjI2Ni1cXHRcXHR2c2M4NTg0X2dldF9iYXNlX2FkZHIocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvbXNjYy9tc2NjX21haW4uYzoyMjY3OlxcdFxcdHJldCA9IGRldm1fcGh5X3BhY2thZ2Vfam9pbihcXHUwMDI2cGh5ZGV2LVxcdTAwM2VtZGlvLmRldiwgcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L3BoeS9tc2NjL21zY2NfbWFpbi5jLTIyNjgtXFx0XFx0XFx0XFx0XFx0ICAgIHZzYzg1MzEtXFx1MDAzZWJhc2VfYWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTIyLSAqIFJlcHJlc2VudHMgYSBzaGFyZWQgc3RydWN0dXJlIGJldHdlZW4gZGlmZmVyZW50IHBoeWRldidzIGluIHRoZSBzYW1lXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmM6MjM6ICogcGFja2FnZSwgZm9yIGV4YW1wbGUgYSBxdWFkIFBIWS4gU2VlIHBoeV9wYWNrYWdlX2pvaW4oKSBhbmRcXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0yNC0gKiBwaHlfcGFja2FnZV9sZWF2ZSgpLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmM9MjY9c3RydWN0IHBoeV9wYWNrYWdlX3NoYXJlZCB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0zNi1cXHQgKiB0aGUgdXNlciBoYXMgdG8gdGFrZSBjYXJlIG9mIGFwcHJvcHJpYXRlIGxvY2tpbmcuIEl0IGlzIGFsbG9jYXRlZFxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jOjM3OlxcdCAqIGFuZCBmcmVlZCBhdXRvbWF0aWNhbGx5IGJ5IHBoeV9wYWNrYWdlX2pvaW4oKSBhbmRcXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0zOC1cXHQgKiBwaHlfcGFja2FnZV9sZWF2ZSgpLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmM9MjAyPUVYUE9SVF9TWU1CT0xfR1BMKHBoeV9wYWNrYWdlX3Byb2JlX29uY2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMjA0LS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jOjIwNTogKiBwaHlfcGFja2FnZV9qb2luIC0gam9pbiBhIGNvbW1vbiBQSFkgZ3JvdXBcXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0yMDYtICogQHBoeWRldjogdGFyZ2V0IHBoeV9kZXZpY2Ugc3RydWN0XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0yMjgtICpcXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzoyMjk6ICogUmV0dXJucyBcXHUwMDNjIDEgb24gZXJyb3IsIDAgb24gc3VjY2Vzcy4gRXNwLiBjYWxsaW5nIHBoeV9wYWNrYWdlX2pvaW4oKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTIzMC0gKiB3aXRoIHRoZSBzYW1lIGNvb2tpZSBidXQgYSBkaWZmZXJlbnQgcHJpdl9zaXplIGlzIGFuIGVycm9yLlxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTIzMS0gKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzoyMzI6aW50IHBoeV9wYWNrYWdlX2pvaW4oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGJhc2VfYWRkciwgc2l6ZV90IHByaXZfc2l6ZSlcXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0yMzMte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMjc1LX1cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzoyNzY6RVhQT1JUX1NZTUJPTF9HUEwocGh5X3BhY2thZ2Vfam9pbik7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMjc3LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTI3OC0vKipcXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzoyNzk6ICogb2ZfcGh5X3BhY2thZ2Vfam9pbiAtIGpvaW4gYSBjb21tb24gUEhZIGdyb3VwIGluIFBIWSBwYWNrYWdlXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMjgwLSAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMjgyLSAqXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmM6MjgzOiAqIFRoaXMgaXMgYSB2YXJpYW50IG9mIHBoeV9wYWNrYWdlX2pvaW4gZm9yIFBIWSBwYWNrYWdlIGRlZmluZWQgaW4gRFQuXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMjg0LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0yODYtICogc3RydWN0dXJlIChieSBtYXRjaGluZyB0aGUgbm9kZSBuYW1lIFxcXCJldGhlcm5ldC1waHktcGFja2FnZVxcXCIpIGFuZCB0aGVcXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzoyODc6ICogYmFzZV9hZGRyIGZvciB0aGUgUEhZIHBhY2thZ2UgaXMgcGFzc2VkIHRvIHBoeV9wYWNrYWdlX2pvaW4uXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMjg4LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0yOTItICpcXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzoyOTM6ICogUmV0dXJucyBcXHUwMDNjIDAgb24gZXJyb3IsIDAgb24gc3VjY2Vzcy4gRXNwLiBjYWxsaW5nIHBoeV9wYWNrYWdlX2pvaW4oKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTI5NC0gKiB3aXRoIHRoZSBzYW1lIGNvb2tpZSBidXQgYSBkaWZmZXJlbnQgcHJpdl9zaXplIGlzIGFuIGVycm9yLiBPciBhIHBhcmVudFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMjk3LSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jOjI5ODppbnQgb2ZfcGh5X3BhY2thZ2Vfam9pbihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBzaXplX3QgcHJpdl9zaXplKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTI5OS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0zMjEtXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmM6MzIyOlxcdHJldCA9IHBoeV9wYWNrYWdlX2pvaW4ocGh5ZGV2LCBiYXNlX2FkZHIsIHByaXZfc2l6ZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMzIzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0zMzItfVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jOjMzMzpFWFBPUlRfU1lNQk9MX0dQTChvZl9waHlfcGFja2FnZV9qb2luKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0zMzQtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0zMzgtICpcXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzozMzk6ICogVGhpcyBsZWF2ZXMgYSBQSFkgZ3JvdXAgY3JlYXRlZCBieSBwaHlfcGFja2FnZV9qb2luKCkuIElmIHRoaXMgcGh5ZGV2XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMzQwLSAqIHdhcyB0aGUgbGFzdCB1c2VyIG9mIHRoZSBzaGFyZWQgZGF0YSBiZXR3ZWVuIHRoZSBncm91cCwgdGhpcyBkYXRhIGlzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYz0zNjY9c3RhdGljIHZvaWQgZGV2bV9waHlfcGFja2FnZV9sZWF2ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKnJlcylcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTM3MS0vKipcXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzozNzI6ICogZGV2bV9waHlfcGFja2FnZV9qb2luIC0gcmVzb3VyY2UgbWFuYWdlZCBwaHlfcGFja2FnZV9qb2luKClcXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0zNzMtICogQGRldjogZGV2aWNlIHRoYXQgaXMgcmVnaXN0ZXJpbmcgdGhpcyBQSFkgcGFja2FnZVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMzc4LSAqXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmM6Mzc5OiAqIE1hbmFnZWQgcGh5X3BhY2thZ2Vfam9pbigpLiBTaGFyZWQgc3RvcmFnZSBmZXRjaGVkIGJ5IHRoaXMgZnVuY3Rpb24sXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMzgwLSAqIHBoeV9wYWNrYWdlX2xlYXZlKCkgaXMgYXV0b21hdGljYWxseSBjYWxsZWQgb24gZHJpdmVyIGRldGFjaC4gU2VlXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmM6MzgxOiAqIHBoeV9wYWNrYWdlX2pvaW4oKSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0zODItICovXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmM6MzgzOmludCBkZXZtX3BoeV9wYWNrYWdlX2pvaW4oc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTM4NC1cXHRcXHRcXHQgIGludCBiYXNlX2FkZHIsIHNpemVfdCBwcml2X3NpemUpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy0zOTMtXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmM6Mzk0OlxcdHJldCA9IHBoeV9wYWNrYWdlX2pvaW4ocGh5ZGV2LCBiYXNlX2FkZHIsIHByaXZfc2l6ZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtMzk1LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtNDA0LX1cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzo0MDU6RVhQT1JUX1NZTUJPTF9HUEwoZGV2bV9waHlfcGFja2FnZV9qb2luKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy00MDYtXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtNDA3LS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jOjQwODogKiBkZXZtX29mX3BoeV9wYWNrYWdlX2pvaW4gLSByZXNvdXJjZSBtYW5hZ2VkIG9mX3BoeV9wYWNrYWdlX2pvaW4oKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTQwOS0gKiBAZGV2OiBkZXZpY2UgdGhhdCBpcyByZWdpc3RlcmluZyB0aGlzIFBIWSBwYWNrYWdlXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy00MTItICpcXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzo0MTM6ICogTWFuYWdlZCBvZl9waHlfcGFja2FnZV9qb2luKCkuIFNoYXJlZCBzdG9yYWdlIGZldGNoZWQgYnkgdGhpcyBmdW5jdGlvbixcXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy00MTQtICogcGh5X3BhY2thZ2VfbGVhdmUoKSBpcyBhdXRvbWF0aWNhbGx5IGNhbGxlZCBvbiBkcml2ZXIgZGV0YWNoLiBTZWVcXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzo0MTU6ICogb2ZfcGh5X3BhY2thZ2Vfam9pbigpIGZvciBtb3JlIGluZm9ybWF0aW9uLlxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTQxNi0gKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzo0MTc6aW50IGRldm1fb2ZfcGh5X3BhY2thZ2Vfam9pbihzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtNDE4LVxcdFxcdFxcdCAgICAgc2l6ZV90IHByaXZfc2l6ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTQyNy1cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzo0Mjg6XFx0cmV0ID0gb2ZfcGh5X3BhY2thZ2Vfam9pbihwaHlkZXYsIHByaXZfc2l6ZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtNDI5LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtNDM4LX1cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzo0Mzk6RVhQT1JUX1NZTUJPTF9HUEwoZGV2bV9vZl9waHlfcGFja2FnZV9qb2luKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy00NDAtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLmg9Mjg9Ym9vbCBwaHlfcGFja2FnZV9wcm9iZV9vbmNlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWIuaDoyOTppbnQgcGh5X3BhY2thZ2Vfam9pbihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgYmFzZV9hZGRyLCBzaXplX3QgcHJpdl9zaXplKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLmg6MzA6aW50IG9mX3BoeV9wYWNrYWdlX2pvaW4oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgc2l6ZV90IHByaXZfc2l6ZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oLTMxLXZvaWQgcGh5X3BhY2thZ2VfbGVhdmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oOjMyOmludCBkZXZtX3BoeV9wYWNrYWdlX2pvaW4oc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWIuaC0zMy1cXHRcXHRcXHQgIGludCBiYXNlX2FkZHIsIHNpemVfdCBwcml2X3NpemUpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWIuaDozNDppbnQgZGV2bV9vZl9waHlfcGFja2FnZV9qb2luKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLmgtMzUtXFx0XFx0XFx0ICAgICBzaXplX3QgcHJpdl9zaXplKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYz02OTQ9c3RhdGljIGludCBxY2E4MDd4X3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNzAxLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo3MDI6XFx0cmV0ID0gZGV2bV9vZl9waHlfcGFja2FnZV9qb2luKGRldiwgcGh5ZGV2LCBzaXplb2YoKnNoYXJlZF9wcml2KSk7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTcwMy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9MjM2Mj1zdGF0aWMgaW50IHJ0bDgyMjRfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTIzNjQtXFx0LyogQ2hpcCBleHBvc2VzIDQgcG9ydHMsIGpvaW4gYWxsIG9mIHRoZW0gaW4gdGhlIHNhbWUgcGFja2FnZSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjIzNjU6XFx0cmV0dXJuIGRldm1fcGh5X3BhY2thZ2Vfam9pbihcXHUwMDI2cGh5ZGV2LVxcdTAwM2VtZGlvLmRldiwgcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTIzNjYtXFx0XFx0XFx0XFx0ICAgICBwaHlkZXYtXFx1MDAzZW1kaW8uYWRkciBcXHUwMDI2IH4zLCAwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTY6NTU6NTMuODM5ODc0MDQxWiIsIlNlcSI6MzksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NDg3OTk1OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgYHBoeV9wYWNrYWdlX2pvaW5gKipcblxuQWxyaWdodCwgdGltZSB0byBkaXZlIGluLiBCYXNlZCBvbiB0aGUgY29udGV4dCwgSSdtIGdvaW5nIHRvIGhlYWQgZGlyZWN0bHkgdG8gdGhlIHNvdXJjZSBjb2RlLiBMZXQncyBzdGFydCB3aXRoIGBwaHlfcGFja2FnZV9qb2luYCwgYW5kIHNwZWNpZmljYWxseSwgSSdsbCBiZSBsb29raW5nIGluIHRoZSBgZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmNgIGZpbGUuIEknbSBnb2luZyB0byBhc3N1bWUgdGhlcmUgaXMgYSBzcGVjaWZpYyByZWFzb24gZm9yIGV4YW1pbmluZyB0aGlzIGZ1bmN0aW9uIG5vdywgcGVyaGFwcyBhIGJ1ZyByZXBvcnQgb3IgcGVyZm9ybWFuY2UgaXNzdWUgcmVsYXRlZCB0byBQSFkgcGFja2FnZSBtYW5hZ2VtZW50LiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSB3aXRoaW4gdGhlIGJyb2FkZXIgUEhZIGRyaXZlciBmcmFtZXdvcmsuIEknbGwgYmUgbG9va2luZyBmb3IgYW55IHBvdGVudGlhbCBzeW5jaHJvbml6YXRpb24gaXNzdWVzLCByZXNvdXJjZSBjb250ZW50aW9uLCBlcnJvciBoYW5kbGluZywgYW5kIGdlbmVyYWwgZWZmaWNpZW5jeS4gTXkgaW1tZWRpYXRlIGdvYWxzIGFyZSB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIGRhdGEgc3RydWN0dXJlcyBpbnZvbHZlZCwgYW5kIGFueSBwb3RlbnRpYWwgYm90dGxlbmVja3MuIEknbGwgcHJvYmFibHkgYmUgY3Jvc3MtcmVmZXJlbmNpbmcgdGhpcyBmdW5jdGlvbiB3aXRoIG90aGVyIHJlbGF0ZWQgUEhZIGRyaXZlciBmdW5jdGlvbnMgYXMgSSBnby5cblxuXG4iLCJJbnB1dFRva2VucyI6OTY5NCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU1OjU3LjQ4ODY3Njc4WiIsIlNlcSI6NDAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyMjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIyMCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyMjA6XFx0ICogVGhlIGFkZHJlc3Mgd2hpY2ggaXMgZ2l2ZW4gaGVyZSwgd2lsbCBiZSB1c2VkIGluIHRoZSBfX3BoeV9wYWNrYWdlX3JlYWQoKVxcbiAyMjE6XFx0ICogYW5kIF9fcGh5X3BhY2thZ2Vfd3JpdGUoKSBjb252ZW5pZW5jZSBmdW5jdGlvbnMgYXMgYmFzZSBhbmQgYWRkZWQgdG8gdGhlXFxuIDIyMjpcXHQgKiBwYXNzZWQgb2Zmc2V0IGluIHRob3NlIGZ1bmN0aW9ucy5cXG4gMjIzOlxcdCAqXFxuIDIyNDpcXHQgKiBUaGlzIHdpbGwgc2V0IHRoZSBzaGFyZWQgcG9pbnRlciBvZiB0aGUgcGh5ZGV2IHRvIHRoZSBzaGFyZWQgc3RvcmFnZS5cXG4gMjI1OlxcdCAqIElmIHRoaXMgaXMgdGhlIGZpcnN0IGNhbGwgZm9yIGEgdGhpcyBjb29raWUgdGhlIHNoYXJlZCBzdG9yYWdlIHdpbGwgYmVcXG4gMjI2OlxcdCAqIGFsbG9jYXRlZC4gSWYgcHJpdl9zaXplIGlzIG5vbi16ZXJvLCB0aGUgZ2l2ZW4gYW1vdW50IG9mIGJ5dGVzIGFyZVxcbiAyMjc6XFx0ICogYWxsb2NhdGVkIGZvciB0aGUgcHJpdiBtZW1iZXIuXFxuIDIyODpcXHQgKlxcbiAyMjk6XFx0ICogUmV0dXJucyBcXHUwMDNjIDEgb24gZXJyb3IsIDAgb24gc3VjY2Vzcy4gRXNwLiBjYWxsaW5nIHBoeV9wYWNrYWdlX2pvaW4oKVxcbiAyMzA6XFx0ICogd2l0aCB0aGUgc2FtZSBjb29raWUgYnV0IGEgZGlmZmVyZW50IHByaXZfc2l6ZSBpcyBhbiBlcnJvci5cXG4gMjMxOlxcdCAqL1xcbiAyMzI6XFx0aW50IHBoeV9wYWNrYWdlX2pvaW4oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGJhc2VfYWRkciwgc2l6ZV90IHByaXZfc2l6ZSlcXG4gMjMzOlxcdHtcXG4gMjM0OlxcdFxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwaHlkZXYtXFx1MDAzZW1kaW8uYnVzO1xcbiAyMzU6XFx0XFx0c3RydWN0IHBoeV9wYWNrYWdlX3NoYXJlZCAqc2hhcmVkO1xcbiAyMzY6XFx0XFx0aW50IHJldDtcXG4gMjM3OlxcdFxcbiAyMzg6XFx0XFx0aWYgKGJhc2VfYWRkciBcXHUwMDNjIDAgfHwgYmFzZV9hZGRyIFxcdTAwM2U9IFBIWV9NQVhfQUREUilcXG4gMjM5OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAyNDA6XFx0XFxuIDI0MTpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZidXMtXFx1MDAzZXNoYXJlZF9sb2NrKTtcXG4gMjQyOlxcdFxcdHNoYXJlZCA9IGJ1cy1cXHUwMDNlc2hhcmVkW2Jhc2VfYWRkcl07XFxuIDI0MzpcXHRcXHRpZiAoIXNoYXJlZCkge1xcbiAyNDQ6XFx0XFx0XFx0cmV0ID0gLUVOT01FTTtcXG4gMjQ1OlxcdFxcdFxcdHNoYXJlZCA9IGt6YWxsb2Nfb2JqKCpzaGFyZWQpO1xcbiAyNDY6XFx0XFx0XFx0aWYgKCFzaGFyZWQpXFxuIDI0NzpcXHRcXHRcXHRcXHRnb3RvIGVycl91bmxvY2s7XFxuIDI0ODpcXHRcXHRcXHRpZiAocHJpdl9zaXplKSB7XFxuIDI0OTpcXHRcXHRcXHRcXHRzaGFyZWQtXFx1MDAzZXByaXYgPSBremFsbG9jKHByaXZfc2l6ZSwgR0ZQX0tFUk5FTCk7XFxuIDI1MDpcXHRcXHRcXHRcXHRpZiAoIXNoYXJlZC1cXHUwMDNlcHJpdilcXG4gMjUxOlxcdFxcdFxcdFxcdFxcdGdvdG8gZXJyX2ZyZWU7XFxuIDI1MjpcXHRcXHRcXHRcXHRzaGFyZWQtXFx1MDAzZXByaXZfc2l6ZSA9IHByaXZfc2l6ZTtcXG4gMjUzOlxcdFxcdFxcdH1cXG4gMjU0OlxcdFxcdFxcdHNoYXJlZC1cXHUwMDNlYmFzZV9hZGRyID0gYmFzZV9hZGRyO1xcbiAyNTU6XFx0XFx0XFx0c2hhcmVkLVxcdTAwM2VucCA9IE5VTEw7XFxuIDI1NjpcXHRcXHRcXHRyZWZjb3VudF9zZXQoXFx1MDAyNnNoYXJlZC1cXHUwMDNlcmVmY250LCAxKTtcXG4gMjU3OlxcdFxcdFxcdGJ1cy1cXHUwMDNlc2hhcmVkW2Jhc2VfYWRkcl0gPSBzaGFyZWQ7XFxuIDI1ODpcXHRcXHR9IGVsc2Uge1xcbiAyNTk6XFx0XFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4gMjYwOlxcdFxcdFxcdGlmIChwcml2X3NpemUgXFx1MDAyNlxcdTAwMjYgcHJpdl9zaXplICE9IHNoYXJlZC1cXHUwMDNlcHJpdl9zaXplKVxcbiAyNjE6XFx0XFx0XFx0XFx0Z290byBlcnJfdW5sb2NrO1xcbiAyNjI6XFx0XFx0XFx0cmVmY291bnRfaW5jKFxcdTAwMjZzaGFyZWQtXFx1MDAzZXJlZmNudCk7XFxuIDI2MzpcXHRcXHR9XFxuIDI2NDpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNmJ1cy1cXHUwMDNlc2hhcmVkX2xvY2spO1xcbiAyNjU6XFx0XFxuIDI2NjpcXHRcXHRwaHlkZXYtXFx1MDAzZXNoYXJlZCA9IHNoYXJlZDtcXG4gMjY3OlxcdFxcbiAyNjg6XFx0XFx0cmV0dXJuIDA7XFxuIDI2OTpcXHRcXG4gMjcwOlxcdGVycl9mcmVlOlxcbiAyNzE6XFx0XFx0a2ZyZWUoc2hhcmVkKTtcXG4gMjcyOlxcdGVycl91bmxvY2s6XFxuIDI3MzpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNmJ1cy1cXHUwMDNlc2hhcmVkX2xvY2spO1xcbiAyNzQ6XFx0XFx0cmV0dXJuIHJldDtcXG4gMjc1OlxcdH1cXG4gMjc2OlxcdEVYUE9SVF9TWU1CT0xfR1BMKHBoeV9wYWNrYWdlX2pvaW4pO1xcbiAyNzc6XFx0XFxuIDI3ODpcXHQvKipcXG4gMjc5OlxcdCAqIG9mX3BoeV9wYWNrYWdlX2pvaW4gLSBqb2luIGEgY29tbW9uIFBIWSBncm91cCBpbiBQSFkgcGFja2FnZVxcbiAyODA6XFx0ICogQHBoeWRldjogdGFyZ2V0IHBoeV9kZXZpY2Ugc3RydWN0XFxuIDI4MTpcXHQgKiBAcHJpdl9zaXplOiBpZiBub24temVybyBhbGxvY2F0ZSB0aGlzIGFtb3VudCBvZiBieXRlcyBmb3IgcHJpdmF0ZSBkYXRhXFxuIDI4MjpcXHQgKlxcbiAyODM6XFx0ICogVGhpcyBpcyBhIHZhcmlhbnQgb2YgcGh5X3BhY2thZ2Vfam9pbiBmb3IgUEhZIHBhY2thZ2UgZGVmaW5lZCBpbiBEVC5cXG4gMjg0OlxcdCAqXFxuIDI4NTpcXHQgKiBUaGUgcGFyZW50IG5vZGUgb2YgdGhlIEBwaHlkZXYgaXMgY2hlY2tlZCBhcyBhIHZhbGlkIFBIWSBwYWNrYWdlIG5vZGVcXG4gMjg2OlxcdCAqIHN0cnVjdHVyZSAoYnkgbWF0Y2hpbmcgdGhlIG5vZGUgbmFtZSBcXFwiZXRoZXJuZXQtcGh5LXBhY2thZ2VcXFwiKSBhbmQgdGhlXFxuIDI4NzpcXHQgKiBiYXNlX2FkZHIgZm9yIHRoZSBQSFkgcGFja2FnZSBpcyBwYXNzZWQgdG8gcGh5X3BhY2thZ2Vfam9pbi5cXG4gMjg4OlxcdCAqXFxuIDI4OTpcXHQgKiBXaXRoIHRoaXMgY29uZmlndXJhdGlvbiB0aGUgc2hhcmVkIHN0cnVjdCB3aWxsIGFsc28gaGF2ZSB0aGUgbnAgdmFsdWVcXG4gMjkwOlxcdCAqIGZpbGxlZCB0byB1c2UgYWRkaXRpb25hbCBEVCBkZWZpbmVkIHByb3BlcnRpZXMgaW4gUEhZIHNwZWNpZmljXFxuIDI5MTpcXHQgKiBwcm9iZV9vbmNlIGFuZCBjb25maWdfaW5pdF9vbmNlIFBIWSBwYWNrYWdlIE9Qcy5cXG4gMjkyOlxcdCAqXFxuIDI5MzpcXHQgKiBSZXR1cm5zIFxcdTAwM2MgMCBvbiBlcnJvciwgMCBvbiBzdWNjZXNzLiBFc3AuIGNhbGxpbmcgcGh5X3BhY2thZ2Vfam9pbigpXFxuIDI5NDpcXHQgKiB3aXRoIHRoZSBzYW1lIGNvb2tpZSBidXQgYSBkaWZmZXJlbnQgcHJpdl9zaXplIGlzIGFuIGVycm9yLiBPciBhIHBhcmVudFxcbiAyOTU6XFx0ICogbm9kZSBpcyBub3QgZGV0ZWN0ZWQgb3IgaXMgbm90IHZhbGlkIG9yIGRvZXNuJ3QgbWF0Y2ggdGhlIGV4cGVjdGVkIG5vZGVcXG4gMjk2OlxcdCAqIG5hbWUgZm9yIFBIWSBwYWNrYWdlLlxcbiAyOTc6XFx0ICovXFxuIDI5ODpcXHRpbnQgb2ZfcGh5X3BhY2thZ2Vfam9pbihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBzaXplX3QgcHJpdl9zaXplKVxcbiAyOTk6XFx0e1xcbiAzMDA6XFx0XFx0c3RydWN0IGRldmljZV9ub2RlICpub2RlID0gcGh5ZGV2LVxcdTAwM2VtZGlvLmRldi5vZl9ub2RlO1xcbiAzMDE6XFx0XFx0c3RydWN0IGRldmljZV9ub2RlICpwYWNrYWdlX25vZGU7XFxuIDMwMjpcXHRcXHR1MzIgYmFzZV9hZGRyO1xcbiAzMDM6XFx0XFx0aW50IHJldDtcXG4gMzA0OlxcdFxcbiAzMDU6XFx0XFx0aWYgKCFub2RlKVxcbiAzMDY6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDMwNzpcXHRcXG4gMzA4OlxcdFxcdHBhY2thZ2Vfbm9kZSA9IG9mX2dldF9wYXJlbnQobm9kZSk7XFxuIDMwOTpcXHRcXHRpZiAoIXBhY2thZ2Vfbm9kZSlcXG4gMzEwOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAzMTE6XFx0XFxuIDMxMjpcXHRcXHRpZiAoIW9mX25vZGVfbmFtZV9lcShwYWNrYWdlX25vZGUsIFxcXCJldGhlcm5ldC1waHktcGFja2FnZVxcXCIpKSB7XFxuIDMxMzpcXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbiAzMTQ6XFx0XFx0XFx0Z290byBleGl0O1xcbiAzMTU6XFx0XFx0fVxcbiAzMTY6XFx0XFxuIDMxNzpcXHRcXHRpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIocGFja2FnZV9ub2RlLCBcXFwicmVnXFxcIiwgXFx1MDAyNmJhc2VfYWRkcikpIHtcXG4gMzE4OlxcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuIDMxOTpcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU1OjU3LjQ4ODc3MDY5WiIsIlNlcSI6NDEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0ODMzMzgwNDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgZHA4MzY0MGAgQ2xvY2sgU3RydWN0dXJlIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gdGhlIGBwaHlfcGFja2FnZV9qb2luYCBmdW5jdGlvbiBpcyB1c2luZyBga3phbGxvY2AgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgc2hhcmVkIG1lbW9yeSByZWdpb24uIFRoaXMgbWVhbnMgdGhhdCB0aGUgZW50aXJlIGBkcDgzNjQwX2Nsb2NrYCBzdHJ1Y3R1cmUsIGluY2x1ZGluZyB0aGUgYHBpbl9jb25maWdgIGFycmF5LCBnZXRzIGluaXRpYWxpemVkIHRvIHplcm8uIFRoYXQncyBnb29kLiBUaGUgaW5pdGlhbCB0aG91Z2h0cyB3ZXJlIGNvcnJlY3Q6IHRoZSBgZHA4MzY0MF9jbG9ja2AgaXMgYWxsb2NhdGVkIHdpdGggYHNpemVvZigqY2xvY2spYCBhbmQgdGhlbiBpbml0aWFsaXplZCB2aWEgYGRwODM2NDBfY2xvY2tfaW5pdGAuXG5cblRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgYGt6YWxsb2Nfb2Jqc2AgY2FsbCBmb3IgYHBpbl9jb25maWdgIGFuZCBlbWJlZHMgaXQgZGlyZWN0bHkgaW4gdGhlIHN0cnVjdHVyZS4gVGhlcmUncyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIGV4cG9zZWQgaGVyZSBiZWNhdXNlIGBremFsbG9jYCB6ZXJvZXMgdGhlIG1lbW9yeS4gR29vZCwgZ29vZCwgZ29vZC4gTm93IGxldCdzIGp1c3QgbWFrZSBhYnNvbHV0ZWx5IHN1cmUgdGhlcmUgYXJlbid0IGFueSBvdGhlciBjaGFuZ2VzLlxuXG5BaCwgbG9va3MgbGlrZSBgcGh5X3BhY2thZ2VfbG9ja2AgYW5kIGBwaHlfcGFja2FnZV91bmxvY2tgIGhhdmUgYmVlbiBhZGRlZCwgYW5kIGBkcDgzNjQwX3Byb2JlYCBoYXMgYmVlbiBtb2RpZmllZCB0byB1dGlsaXplIGBwaHlfcGFja2FnZV9qb2luYC4gQWdhaW4sIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFwcGVhcnMgdG8gYmUgZXhwb3NlZCB0byB1c2VyIHNwYWNlLiBUaGUgYHBpbl9jb25maWdgIGlzIGluaXRpYWxpemVkIHVzaW5nIGBkcDgzNjQwX2dwaW9fZGVmYXVsdHNgLCB3aGljaCBzZXRzIHNvbWUgb2YgdGhlIGZpZWxkcywgYnV0IHRoZSByZW1haW5pbmcgZmllbGRzIGFyZSB6ZXJvZWQgYnkgYGt6YWxsb2NgLlxuXG5XYWl0IGEgbWludXRlLi4uIGNvdWxkIHRoZSBgZHA4MzY0MF9jbG9ja2AgaXRzZWxmIHNvbWVob3cgYmUgcGFzc2VkIHRvIHVzZXIgc3BhY2U/IE5vLCBubywgaXQncyBhIGNvbXBsZXRlbHkga2VybmVsLWludGVybmFsIHN0cnVjdHVyZS4gT2theSwgc28gdGhlIGBwdHBfcGluX2Rlc2NgICppcyogZXhwb3NlZCB2aWEgdGhlIGBQVFBfUElOX0dFVEZVTkNgIGlvY3RsLCBidXQgdGhlIFBUUCBjb3JlIGhhbmRsZXMgY29weWluZyB0aGF0LiBBbHJpZ2h0LCBqdXN0IHRvIGJlIGNvbXBsZXRlbHkgY2VydGFpbiwgbGV0J3MgdGFrZSBhIHF1aWNrIGxvb2sgYXQgdGhlIGBwdHBfcGluX2Rlc2NgIHN0cnVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE1MTIsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNjo1NjowMy45NzIxMTQ5MDZaIiwiU2VxIjo0MiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2ODk2MzM3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInB0cF9waW5fZGVzY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL3VhcGkvbGludXgvcHRwX2Nsb2NrLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS91YXBpL2xpbnV4L3B0cF9jbG9jay5oPTE5MD1lbnVtIHB0cF9waW5fZnVuY3Rpb24ge1xcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L3B0cF9jbG9jay5oLTE5Ni1cXG5pbmNsdWRlL3VhcGkvbGludXgvcHRwX2Nsb2NrLmg6MTk3OnN0cnVjdCBwdHBfcGluX2Rlc2Mge1xcbmluY2x1ZGUvdWFwaS9saW51eC9wdHBfY2xvY2suaC0xOTgtXFx0LypcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9wdHBfY2xvY2suaC0yMzAtI2RlZmluZSBQVFBfU1lTX09GRlNFVCAgICAgX0lPVyhQVFBfQ0xLX01BR0lDLCA1LCBzdHJ1Y3QgcHRwX3N5c19vZmZzZXQpXFxuaW5jbHVkZS91YXBpL2xpbnV4L3B0cF9jbG9jay5oOjIzMTojZGVmaW5lIFBUUF9QSU5fR0VURlVOQyAgICBfSU9XUihQVFBfQ0xLX01BR0lDLCA2LCBzdHJ1Y3QgcHRwX3Bpbl9kZXNjKVxcbmluY2x1ZGUvdWFwaS9saW51eC9wdHBfY2xvY2suaDoyMzI6I2RlZmluZSBQVFBfUElOX1NFVEZVTkMgICAgX0lPVyhQVFBfQ0xLX01BR0lDLCA3LCBzdHJ1Y3QgcHRwX3Bpbl9kZXNjKVxcbmluY2x1ZGUvdWFwaS9saW51eC9wdHBfY2xvY2suaC0yMzMtI2RlZmluZSBQVFBfU1lTX09GRlNFVF9QUkVDSVNFIFxcXFxcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9wdHBfY2xvY2suaC0yNDItI2RlZmluZSBQVFBfU1lTX09GRlNFVDIgICAgIF9JT1coUFRQX0NMS19NQUdJQywgMTQsIHN0cnVjdCBwdHBfc3lzX29mZnNldClcXG5pbmNsdWRlL3VhcGkvbGludXgvcHRwX2Nsb2NrLmg6MjQzOiNkZWZpbmUgUFRQX1BJTl9HRVRGVU5DMiAgICBfSU9XUihQVFBfQ0xLX01BR0lDLCAxNSwgc3RydWN0IHB0cF9waW5fZGVzYylcXG5pbmNsdWRlL3VhcGkvbGludXgvcHRwX2Nsb2NrLmg6MjQ0OiNkZWZpbmUgUFRQX1BJTl9TRVRGVU5DMiAgICBfSU9XKFBUUF9DTEtfTUFHSUMsIDE2LCBzdHJ1Y3QgcHRwX3Bpbl9kZXNjKVxcbmluY2x1ZGUvdWFwaS9saW51eC9wdHBfY2xvY2suaC0yNDUtI2RlZmluZSBQVFBfU1lTX09GRlNFVF9QUkVDSVNFMiBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU2OjA0LjAxOTAxNTg3MloiLCJTZXEiOjQzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTA4MDM4Mjc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU2FmZXR5IG9mIGBwdHBfcGluX2Rlc2NgIEV4cG9zdXJlKipcblxuT2theSwgc28gdGhlIGNvZGUgZXhwb3NlcyBgcHRwX3Bpbl9kZXNjYCB0byB1c2VyIHNwYWNlLCB3aGljaCBpcyBzb21ldGhpbmcgSSBuZWVkIHRvIGNhcmVmdWxseSBjb25zaWRlci4gTXkgaW5pdGlhbCBjb25jZXJuIGlzIGFsd2F5cyBhcm91bmQgdW5pbml0aWFsaXplZCBtZW1vcnksIHBvdGVudGlhbCBmb3IgaW5mb3JtYXRpb24gbGVha3MsIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IuIEhvd2V2ZXIsIGFmdGVyIHJldmlld2luZyB0aGUgY29kZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYHBoeV9wYWNrYWdlX2pvaW5gIGZ1bmN0aW9uLCBpdCdzIGNsZWFyIHRoYXQgdGhlIGFsbG9jYXRpb24gaGFwcGVucyB2aWEgYGt6YWxsb2NgLiBUaGlzIGlzIGdvb2QuIEEgYGt6YWxsb2NgIGd1YXJhbnRlZXMgdGhhdCBhbGwgZmllbGRzIHdpdGhpbiBgcHRwX3Bpbl9kZXNjYCBhcmUgemVyb2VkIG91dCBiZWZvcmUgYmVpbmcgZXhwb3NlZC4gVGhlcmVmb3JlLCBteSBpbW1lZGlhdGUgY29uY2VybiBhYm91dCB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBhbGxldmlhdGVkLiBUaGUgcmlzayBoZXJlIHNlZW1zIG1pbmltYWwuIEkgbm93IGtub3cgSSBuZWVkIHRvIG1vdmUgb24gYW5kIGludmVzdGlnYXRlIGEgc2VwYXJhdGUgY29uY2Vybi4gSSBuZWVkIHRvIG5vdyBjaGVjayB0aGUgYGRwODM2NDBfZ3Bpb19kZWZhdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyODAwLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTY6NTY6MDkuMTI3MDU2NzIyWiIsIlNlcSI6NDQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjYzNjE5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkcDgzNjQwX2dwaW9fZGVmYXVsdHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jPTE3ND1NT0RVTEVfUEFSTV9ERVNDKGdwaW9fdGFiLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYy0xNzYtXFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYzoxNzc6c3RhdGljIHZvaWQgZHA4MzY0MF9ncGlvX2RlZmF1bHRzKHN0cnVjdCBwdHBfcGluX2Rlc2MgKnBkKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTc4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM9OTUxPXN0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfaW5pdChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2spXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTk3NC1cXHQvKiBJbml0aWFsaXplIHRoZSBydW50aW1lIHBpbiBjb25maWd1cmF0aW9uIGZyb20gZ3Bpb190YWIuICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYzo5NzU6XFx0ZHA4MzY0MF9ncGlvX2RlZmF1bHRzKGNsb2NrLVxcdTAwM2VjYXBzLnBpbl9jb25maWcpO1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtOTc2LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTY6NTY6MDkuMTY5Njk1MDU5WiIsIlNlcSI6NDUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzMDAyOTE4NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIGBkcDgzNjQwX2dwaW9fZGVmYXVsdHNgIGltcGxlbWVudGF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBmdW5jdGlvbiBzZXRzIHVwIHRoZSBHUElPIHBpbnMgZm9yIHRoaXMgc3BlY2lmaWMgRXRoZXJuZXQgUEhZLiBJdCdzIGNydWNpYWwgZm9yIGNvbmZpZ3VyaW5nIHRoZSBoYXJkd2FyZSBhbmQgZW5zdXJpbmcgcHJvcGVyIGNvbW11bmljYXRpb24sIHNvIEkgd2FudCB0byBnZXQgdGhpcyByaWdodC4gTGV0J3Mgc2VlIHdoYXQgdGhlIGNvZGUncyBkb2luZy4gSSdsbCBmb2N1cyBvbiB0aGUgc3BlY2lmaWMgcmVnaXN0ZXIgdmFsdWVzIGFuZCBwaW4gY29uZmlndXJhdGlvbnMgdG8gc2VlIGhvdyB0aGUgc29mdHdhcmUgaXMgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgaGFyZHdhcmUuIFVuZGVyc3RhbmRpbmcgdGhlIGRlZmF1bHQgc2V0dXAgaXMgYWx3YXlzIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgY3VzdG9taXphdGlvbiBhbmQgZGVidWdnaW5nIGxhdGVyIG9uLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGFueSBoaW50cyBvbiBjbG9jayBzZXR0aW5ncywgaW50ZXJydXB0IGFzc2lnbm1lbnRzLCBvciBvdGhlciBjcnVjaWFsIGluaXRpYWxpemF0aW9ucy4gSSdtIGVzc2VudGlhbGx5IHJldmVyc2UtZW5naW5lZXJpbmcgdGhlIGludGVuZGVkIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gdGhyb3VnaCB0aGUgc29mdHdhcmUncyBpbml0aWFsIHN0YXRlIGRlZmluaXRpb24uIEhvcGVmdWxseSwgaXQncyB3ZWxsLWNvbW1lbnRlZDsgdGhhdCB3b3VsZCBiZSBhIGJvbnVzIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzM1OCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU2OjEzLjQ2OTk4OTA5NFoiLCJTZXEiOjQ2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTgzNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNzcsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNzc6XFx0c3RhdGljIHZvaWQgZHA4MzY0MF9ncGlvX2RlZmF1bHRzKHN0cnVjdCBwdHBfcGluX2Rlc2MgKnBkKVxcbiAxNzg6XFx0e1xcbiAxNzk6XFx0XFx0aW50IGksIGluZGV4O1xcbiAxODA6XFx0XFxuIDE4MTpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgRFA4MzY0MF9OX1BJTlM7IGkrKykge1xcbiAxODI6XFx0XFx0XFx0c25wcmludGYocGRbaV0ubmFtZSwgc2l6ZW9mKHBkW2ldLm5hbWUpLCBcXFwiR1BJTyVkXFxcIiwgMSArIGkpO1xcbiAxODM6XFx0XFx0XFx0cGRbaV0uaW5kZXggPSBpO1xcbiAxODQ6XFx0XFx0fVxcbiAxODU6XFx0XFxuIDE4NjpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgR1BJT19UQUJMRV9TSVpFOyBpKyspIHtcXG4gMTg3OlxcdFxcdFxcdGlmIChncGlvX3RhYltpXSBcXHUwMDNjIDEgfHwgZ3Bpb190YWJbaV0gXFx1MDAzZSBEUDgzNjQwX05fUElOUykge1xcbiAxODg6XFx0XFx0XFx0XFx0cHJfZXJyKFxcXCJncGlvX3RhYlslZF09JWh1IG91dCBvZiByYW5nZVxcXCIsIGksIGdwaW9fdGFiW2ldKTtcXG4gMTg5OlxcdFxcdFxcdFxcdHJldHVybjtcXG4gMTkwOlxcdFxcdFxcdH1cXG4gMTkxOlxcdFxcdH1cXG4gMTkyOlxcdFxcbiAxOTM6XFx0XFx0aW5kZXggPSBncGlvX3RhYltDQUxJQlJBVEVfR1BJT10gLSAxO1xcbiAxOTQ6XFx0XFx0cGRbaW5kZXhdLmZ1bmMgPSBQVFBfUEZfUEhZU1lOQztcXG4gMTk1OlxcdFxcdHBkW2luZGV4XS5jaGFuID0gMDtcXG4gMTk2OlxcdFxcbiAxOTc6XFx0XFx0aW5kZXggPSBncGlvX3RhYltQRVJPVVRfR1BJT10gLSAxO1xcbiAxOTg6XFx0XFx0cGRbaW5kZXhdLmZ1bmMgPSBQVFBfUEZfUEVST1VUO1xcbiAxOTk6XFx0XFx0cGRbaW5kZXhdLmNoYW4gPSAwO1xcbiAyMDA6XFx0XFxuIDIwMTpcXHRcXHRmb3IgKGkgPSBFWFRUUzBfR1BJTzsgaSBcXHUwMDNjIEdQSU9fVEFCTEVfU0laRTsgaSsrKSB7XFxuIDIwMjpcXHRcXHRcXHRpbmRleCA9IGdwaW9fdGFiW2ldIC0gMTtcXG4gMjAzOlxcdFxcdFxcdHBkW2luZGV4XS5mdW5jID0gUFRQX1BGX0VYVFRTO1xcbiAyMDQ6XFx0XFx0XFx0cGRbaW5kZXhdLmNoYW4gPSBpIC0gRVhUVFMwX0dQSU87XFxuIDIwNTpcXHRcXHR9XFxuIDIwNjpcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE2OjU2OjEzLjQ3MDEwODUzNFoiLCJTZXEiOjQ3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NzA1MjA5NzgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBIWSBDbG9jayBNYW5hZ2VtZW50IFJlZmFjdG9yaW5nKipcblxuT2theSwgc28gSSd2ZSByZXZpZXdlZCB0aGlzIHBhdGNoLCBhbmQgaGVyZSdzIG15IHRha2UuIEluaXRpYWxseSwgdGhlIGBwZGAgYXJyYXkgaXMgcG9wdWxhdGVkIHVzaW5nIGBzbnByaW50ZmAgdG8gc2V0IHVwIHNvbWUgZmllbGRzLiBCZWNhdXNlIGBremFsbG9jYCBpcyB1c2VkIGluIGBwaHlfcGFja2FnZV9qb2luYCwgdGhlIGVudGlyZSBhcnJheSBnZXRzIHplcm8taW5pdGlhbGl6ZWQuIFRoYXQgbWVhbnMgYW55IHBhZGRpbmcgb3IgZmllbGRzIHRoYXQgYXJlbid0IHNwZWNpZmljYWxseSBvdmVyd3JpdHRlbiBieSBgc25wcmludGZgIHdpbGwgYmUgc2FmZWx5IHplcm8uIFRoaXMgZWxpbWluYXRlcyBhbnkgaW1tZWRpYXRlIGNvbmNlcm5zIGFib3V0IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHBvdGVudGlhbGx5IGxlYWtpbmcgc2Vuc2l0aXZlIGluZm9ybWF0aW9uLCB3aGljaCBpcyBhbHdheXMgYSBjcml0aWNhbCBwb2ludCB0byBjb25zaWRlci5cblxuVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSByZWZhY3RvcmluZyB0aGUgUEhZIGNsb2NrIG1hbmFnZW1lbnQuIFRoZSBjb2RlIHNoaWZ0cyBmcm9tIHVzaW5nIGEgY3VzdG9tIGdsb2JhbCBsaXN0IHRvIG5vdyBsZXZlcmFnZSBgcGh5X3BhY2thZ2Vfam9pbmAuIFRoaXMgaXMgYSBwcmV0dHkgc2lnbmlmaWNhbnQgYXJjaGl0ZWN0dXJhbCBjaGFuZ2UsIGFuZCBmcm9tIHdoYXQgSSBjYW4gdGVsbCwgaXQncyBhZGRyZXNzaW5nIHNvbWUgbmFzdHkgbGlmZWN5Y2xlIGFuZCBsb2NraW5nIGlzc3Vlcy4gSSBzdXNwZWN0IHdlJ3JlIGxvb2tpbmcgYXQgdGhpbmdzIGxpa2UgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW9zIG9yIHBvdGVudGlhbCBtZW1vcnkgbGVha3MsIGFsbCBvZiB3aGljaCBLQVNBTiB3b3VsZCBiZSBpbnZhbHVhYmxlIGluIGNhdGNoaW5nLiBUaGUgZ29vZCBuZXdzIGlzLCBJIGRvbid0IHNlZSBhbnkgZXZpZGVuY2Ugb2YgKm5ldyogdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzIGJlaW5nIGludHJvZHVjZWQgYnkgdGhpcyBjaGFuZ2UuIEl0IHNlZW1zIGxpa2UgdGhlIHJlZmFjdG9yaW5nIGlzIHNvdW5kIGluIHRoYXQgcmVnYXJkLlxuXG5HaXZlbiBhbGwgb2YgdGhpcywgSSB0aGluayB3ZSBjYW4gc2FmZWx5IHNldCBgTmVlZHNLTVNBTj1mYWxzZWAgZm9yIHRoaXMgcGF0Y2guIFRoZSBleGlzdGluZyBLQVNBTiBjb3ZlcmFnZSBpcyBsaWtlbHkgc3VmZmljaWVudCB0byBtb25pdG9yIHRoaXMsIGFuZCB0aGlzIGNoYW5nZSBkb2Vzbid0IGludHJvZHVjZSBhbnkgbmV3IGltbWVkaWF0ZSBuZWVkcyBpbiB0aGlzIHJlZ2FyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQxMTksIk91dHB1dFRva2VucyI6MTc1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTY6NTY6MjAuMTc1MzIxMTM1WiIsIlNlcSI6NDgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUwNjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgdGhlIGRwODM2NDAgUEhZIGRyaXZlciB0byB1c2UgdGhlIHN0YW5kYXJkIGBwaHlfcGFja2FnZV9qb2luYCBBUEkgZm9yIG1hbmFnaW5nIHNoYXJlZCBjbG9jayBzdHJ1Y3R1cmVzLCByZXBsYWNpbmcgYSBjdXN0b20gZ2xvYmFsIGxpc3QgYW5kIG1hbnVhbCBhbGxvY2F0aW9ucy4gVGhlIHNoYXJlZCBzdHJ1Y3R1cmUgYGRwODM2NDBfY2xvY2tgIChhbmQgaXRzIGVtYmVkZGVkIGBwaW5fY29uZmlnYCBhcnJheSkgaXMgYWxsb2NhdGVkIHZpYSBga3phbGxvY2AgaW5zaWRlIGBwaHlfcGFja2FnZV9qb2luYCwgZW5zdXJpbmcgYWxsIGZpZWxkcyBhbmQgcGFkZGluZyBhcmUgZnVsbHkgemVyby1pbml0aWFsaXplZC4gVGhlcmUgYXJlIG5vIG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaC4gQW55IHBvdGVudGlhbCBidWdzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2Ugd291bGQgaW52b2x2ZSBvYmplY3QgbGlmZWN5Y2xlIGlzc3VlcyAobGlrZSB1c2UtYWZ0ZXItZnJlZSBvciBtZW1vcnkgbGVha3MpIG9yIGxvY2tpbmcgaXNzdWVzLCB3aGljaCBhcmUgYWxyZWFkeSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgTE9DS0RFUC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgdGhlIGRwODM2NDAgUEhZIGRyaXZlciB0byB1c2UgdGhlIHN0YW5kYXJkIGBwaHlfcGFja2FnZV9qb2luYCBBUEkgZm9yIG1hbmFnaW5nIHNoYXJlZCBjbG9jayBzdHJ1Y3R1cmVzLCByZXBsYWNpbmcgYSBjdXN0b20gZ2xvYmFsIGxpc3QgYW5kIG1hbnVhbCBhbGxvY2F0aW9ucy4gVGhlIHNoYXJlZCBzdHJ1Y3R1cmUgYGRwODM2NDBfY2xvY2tgIChhbmQgaXRzIGVtYmVkZGVkIGBwaW5fY29uZmlnYCBhcnJheSkgaXMgYWxsb2NhdGVkIHZpYSBga3phbGxvY2AgaW5zaWRlIGBwaHlfcGFja2FnZV9qb2luYCwgZW5zdXJpbmcgYWxsIGZpZWxkcyBhbmQgcGFkZGluZyBhcmUgZnVsbHkgemVyby1pbml0aWFsaXplZC4gVGhlcmUgYXJlIG5vIG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaC4gQW55IHBvdGVudGlhbCBidWdzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2Ugd291bGQgaW52b2x2ZSBvYmplY3QgbGlmZWN5Y2xlIGlzc3VlcyAobGlrZSB1c2UtYWZ0ZXItZnJlZSBvciBtZW1vcnkgbGVha3MpIG9yIGxvY2tpbmcgaXNzdWVzLCB3aGljaCBhcmUgYWxyZWFkeSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgTE9DS0RFUC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowwclsx[1] Phase: Succeeded StartedAt: 2026-08-10 16:56:31 +0000 UTC FinishedAt: 2026-08-10 16:56:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwclsx[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-10 16:56:31 +0000 UTC FinishedAt: 2026-08-10 16:56:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwclsx[2] Phase: Succeeded StartedAt: 2026-08-10 16:56:31 +0000 UTC FinishedAt: 2026-08-10 18:38:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwclsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_remove","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"a22b839e-ef06-4095-90e6-01cf0b770595","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-10 16:56:31 +0000 UTC FinishedAt: 2026-08-10 18:38:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_remove","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"a22b839e-ef06-4095-90e6-01cf0b770595","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowwclsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_remove","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"a22b839e-ef06-4095-90e6-01cf0b770595","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-10 16:56:31 +0000 UTC FinishedAt: 2026-08-10 16:56:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwclsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_remove","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"a22b839e-ef06-4095-90e6-01cf0b770595","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-10 16:56:31 +0000 UTC FinishedAt: 2026-08-10 16:56:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwclsx/series-workflowwclsx-convert-artifact-639696873/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwclsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_remove","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"a22b839e-ef06-4095-90e6-01cf0b770595","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-10 16:56:41 +0000 UTC FinishedAt: 2026-08-10 17:12:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwclsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_remove","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"a22b839e-ef06-4095-90e6-01cf0b770595","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-10 16:56:41 +0000 UTC FinishedAt: 2026-08-10 17:12:41 +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:*928d31b7-de0c-4f16-bdb3-6d11d7ae15ee,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-workflowwclsx/series-workflowwclsx-convert-artifact-639696873/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": "ba13a3d5-4d26-4f4c-8545-301c63b09f58", "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-workflowwclsx/series-workflowwclsx-build-action-3338982215/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwclsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_remove","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"a22b839e-ef06-4095-90e6-01cf0b770595","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-10 16:56:41 +0000 UTC FinishedAt: 2026-08-10 17:12:31 +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:*928d31b7-de0c-4f16-bdb3-6d11d7ae15ee,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-workflowwclsx/series-workflowwclsx-convert-artifact-639696873/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": "ba13a3d5-4d26-4f4c-8545-301c63b09f58", "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-workflowwclsx/series-workflowwclsx-build-action-3338982215/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwclsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_remove","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"a22b839e-ef06-4095-90e6-01cf0b770595","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-10 17:12:41 +0000 UTC FinishedAt: 2026-08-10 17:12:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwclsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_remove","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"a22b839e-ef06-4095-90e6-01cf0b770595","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-10 17:12:41 +0000 UTC FinishedAt: 2026-08-10 17:12:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwclsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_remove","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"a22b839e-ef06-4095-90e6-01cf0b770595","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-10 17:12:41 +0000 UTC FinishedAt: 2026-08-10 17:12:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwclsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_remove","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"a22b839e-ef06-4095-90e6-01cf0b770595","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-10 17:12:41 +0000 UTC FinishedAt: 2026-08-10 17:12:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"a22b839e-ef06-4095-90e6-01cf0b770595","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwclsx/series-workflowwclsx-convert-artifact-356917372/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwclsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_remove","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"a22b839e-ef06-4095-90e6-01cf0b770595","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-10 17:12:52 +0000 UTC FinishedAt: 2026-08-10 17:14:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwclsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_remove","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"a22b839e-ef06-4095-90e6-01cf0b770595","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-10 17:12:52 +0000 UTC FinishedAt: 2026-08-10 17:14:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ba13a3d5-4d26-4f4c-8545-301c63b09f58,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-workflowwclsx/series-workflowwclsx-build-action-3338982215/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-workflowwclsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_remove","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"a22b839e-ef06-4095-90e6-01cf0b770595","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-10 17:14:42 +0000 UTC FinishedAt: 2026-08-10 17:14:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwclsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_remove","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"a22b839e-ef06-4095-90e6-01cf0b770595","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-10 17:14:42 +0000 UTC FinishedAt: 2026-08-10 17:14:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwclsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_remove","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"a22b839e-ef06-4095-90e6-01cf0b770595","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-10 17:14:42 +0000 UTC FinishedAt: 2026-08-10 17:30:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwclsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_remove","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"a22b839e-ef06-4095-90e6-01cf0b770595","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-10 17:14:42 +0000 UTC FinishedAt: 2026-08-10 17:30: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:*928d31b7-de0c-4f16-bdb3-6d11d7ae15ee,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-workflowwclsx/series-workflowwclsx-convert-artifact-356917372/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": "c2397a8c-7b6e-4b6d-a2b3-c97a06ac4153", "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-workflowwclsx/series-workflowwclsx-build-action-1665965272/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwclsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_remove","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"a22b839e-ef06-4095-90e6-01cf0b770595","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-10 17:14:42 +0000 UTC FinishedAt: 2026-08-10 17:30:31 +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:*928d31b7-de0c-4f16-bdb3-6d11d7ae15ee,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-workflowwclsx/series-workflowwclsx-convert-artifact-356917372/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": "c2397a8c-7b6e-4b6d-a2b3-c97a06ac4153", "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-workflowwclsx/series-workflowwclsx-build-action-1665965272/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwclsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_remove","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"a22b839e-ef06-4095-90e6-01cf0b770595","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-10 17:30:41 +0000 UTC FinishedAt: 2026-08-10 17:30:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwclsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_remove","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"a22b839e-ef06-4095-90e6-01cf0b770595","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-10 17:30:41 +0000 UTC FinishedAt: 2026-08-10 17:30:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwclsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_remove","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"a22b839e-ef06-4095-90e6-01cf0b770595","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-10 17:30:41 +0000 UTC FinishedAt: 2026-08-10 17:32:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwclsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_remove","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"a22b839e-ef06-4095-90e6-01cf0b770595","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-10 17:30:41 +0000 UTC FinishedAt: 2026-08-10 17:32:40 +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:*c2397a8c-7b6e-4b6d-a2b3-c97a06ac4153,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-workflowwclsx/series-workflowwclsx-build-action-1665965272/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-workflowwclsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_remove","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"a22b839e-ef06-4095-90e6-01cf0b770595","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-10 17:32:46 +0000 UTC FinishedAt: 2026-08-10 18:38:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwclsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_remove","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"a22b839e-ef06-4095-90e6-01cf0b770595","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-10 17:32:46 +0000 UTC FinishedAt: 2026-08-10 18:38:09 +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":["dp83640_probe","dp83640_remove","phy_package_lock","phy_package_unlock"],"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:*ba13a3d5-4d26-4f4c-8545-301c63b09f58,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c2397a8c-7b6e-4b6d-a2b3-c97a06ac4153,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-workflowwclsx/series-workflowwclsx-build-action-3338982215/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-workflowwclsx/series-workflowwclsx-build-action-1665965272/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowwclsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_remove","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"a22b839e-ef06-4095-90e6-01cf0b770595","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-10 17:32:46 +0000 UTC FinishedAt: 2026-08-10 17:32:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwclsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_remove","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"a22b839e-ef06-4095-90e6-01cf0b770595","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-10 17:32:46 +0000 UTC FinishedAt: 2026-08-10 17:32:50 +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":["dp83640_probe","dp83640_remove","phy_package_lock","phy_package_unlock"],"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-workflowwclsx/series-workflowwclsx-convert-artifact-1203776581/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwclsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_remove","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"a22b839e-ef06-4095-90e6-01cf0b770595","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-10 17:32:46 +0000 UTC FinishedAt: 2026-08-10 17:32:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwclsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_remove","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"a22b839e-ef06-4095-90e6-01cf0b770595","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-10 17:32:46 +0000 UTC FinishedAt: 2026-08-10 17:32:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwclsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_remove","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"a22b839e-ef06-4095-90e6-01cf0b770595","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-10 17:32:46 +0000 UTC FinishedAt: 2026-08-10 17:32:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwclsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_remove","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"a22b839e-ef06-4095-90e6-01cf0b770595","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-10 17:32:56 +0000 UTC FinishedAt: 2026-08-10 18:38:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwclsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_remove","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"a22b839e-ef06-4095-90e6-01cf0b770595","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-10 17:32:56 +0000 UTC FinishedAt: 2026-08-10 18:37:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ba13a3d5-4d26-4f4c-8545-301c63b09f58,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c2397a8c-7b6e-4b6d-a2b3-c97a06ac4153,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-workflowwclsx/series-workflowwclsx-build-action-3338982215/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-workflowwclsx/series-workflowwclsx-build-action-1665965272/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-workflowwclsx/series-workflowwclsx-convert-artifact-1203776581/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,}