Name: series-workflowlpcb7 Phase: Failed StartedAt: 2026-09-13 20:05:42 +0000 UTC FinishedAt: 2026-09-13 20:22:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlpcb7[0] Phase: Succeeded StartedAt: 2026-09-13 20:05:42 +0000 UTC FinishedAt: 2026-09-13 20:22:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlpcb7[0].run-triage Phase: Succeeded StartedAt: 2026-09-13 20:05:42 +0000 UTC FinishedAt: 2026-09-13 20:22:14 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjIwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZXh0cmFjdHMgUEhZIGZpeHVwIHJlZ2lzdHJhdGlvbiBpbnRvIGRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYyBhbmQgbWFya3MgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucyBhcyBfX2luaXQuIFRoZSBvbmx5IGNhbGxlcnMgb2YgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQoKSBhbmQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZCgpIGluIHRoZSBrZXJuZWwgYXJlIHBsYXRmb3JtLXNwZWNpZmljIGVhcmx5LWJvb3QgY29kZSBvbiBBUk0gKGFyY2gvYXJtL21hY2gtKikgYW5kIFBvd2VyUEMgKGFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvKiksIHdpdGggbm8gY2FsbGVycyBvbiBhbWQ2NC4gTmVpdGhlciBmdW5jdGlvbiBpcyBleHBvcnRlZCB0byBtb2R1bGVzLiBDb25zZXF1ZW50bHksIG9uIGFtZDY0LCBwaHlfZml4dXBfbGlzdCBpcyBwZXJtYW5lbnRseSBlbXB0eSwgcmVuZGVyaW5nIHRoZSBtYXRjaGluZyBsb2dpYyAocGh5X25lZWRzX2ZpeHVwKSBhbmQgZml4dXAgZXhlY3V0aW9uIHBhdGggaW5zaWRlIHBoeV9zY2FuX2ZpeHVwcygpIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4gRnV6emluZyBvbiBhbWQ2NCBjYW5ub3QgZXhlcmNpc2UgdGhlIG1vZGlmaWVkIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDoyMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDMzNTk2MzkwMjJjOThiNGE0Yzg5NTMwMzI1NGIxZjY2YjExY2ExOTdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIFNlcCAxMyAyMDoyMDo1MiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGVcbmluZGV4IGUyM2RmNWU4MzZlOWUuLjQ2NzRlYWYyNDNlYmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGVcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZVxuQEAgLTgsNyAmIzQzOzgsNyBAQCBsaWJwaHkteVx0XHRcdDo9IHBoeS5vIHBoeS1jNDUubyBwaHktY29yZS5vIHBoeV9kZXZpY2UubyBcXFxuIFxuIGlmZGVmIENPTkZJR19QSFlMSUJcbiAjIGJ1aWx0LWluIHdoZW5ldmVyIFBIWUxJQiBpcyBidWlsdC1pbiBvciBtb2R1bGVcbi1vYmoteVx0XHRcdFx0JiM0Mzs9IHN0dWJzLm9cbiYjNDM7b2JqLXlcdFx0XHRcdCYjNDM7PSBzdHVicy5vIHBoeV9maXh1cC5vXG4gZW5kaWZcbiBcbiBsaWJwaHktJChDT05GSUdfU1dQSFkpXHRcdCYjNDM7PSBzd3BoeS5vXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbmluZGV4IDk0YjJlODVlMDBhMzcuLjI3YzBjYjEzODYwYjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG5AQCAtNDksMTQgJiM0Mzs0OSw2IEBAIE1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtQSFkgbGlicmFyeVwmIzM0Oyk7XG4gTU9EVUxFX0FVVEhPUihcJiMzNDtBbmR5IEZsZW1pbmdcJiMzNDspO1xuIE1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG4gXG4tc3RydWN0IHBoeV9maXh1cCB7XG4tXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7XG4tXHRjaGFyIGJ1c19pZFtNSUlfQlVTX0lEX1NJWkUgJiM0MzsgM107XG4tXHR1MzIgcGh5X3VpZDtcbi1cdHUzMiBwaHlfdWlkX21hc2s7XG4tXHRpbnQgKCpydW4pKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuLX07XG4tXG4gc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGdlbnBoeV9jNDVfZHJpdmVyID0ge1xuIFx0LnBoeV9pZCAgICAgICAgID0gMHhmZmZmZmZmZixcbiBcdC5waHlfaWRfbWFzayAgICA9IDB4ZmZmZmZmZmYsXG5AQCAtMjM3LDkgJiM0MzsyMjksNiBAQCBzdGF0aWMgdm9pZCBwaHlfbWRpb19kZXZpY2VfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbiBcbiBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZ2VucGh5X2RyaXZlcjtcbiBcbi1zdGF0aWMgTElTVF9IRUFEKHBoeV9maXh1cF9saXN0KTtcbi1zdGF0aWMgREVGSU5FX01VVEVYKHBoeV9maXh1cF9sb2NrKTtcbi1cbiBzdGF0aWMgYm9vbCBwaHlfZHJ2X3dvbF9lbmFibGVkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4ge1xuIFx0c3RydWN0IGV0aHRvb2xfd29saW5mbyB3b2wgPSB7IC5jbWQgPSBFVEhUT09MX0dXT0wgfTtcbkBAIC00MjcsODUgJiM0Mzs0MTYsNiBAQCBzdGF0aWMgX19tYXliZV91bnVzZWQgaW50IG1kaW9fYnVzX3BoeV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxuIHN0YXRpYyBTSU1QTEVfREVWX1BNX09QUyhtZGlvX2J1c19waHlfcG1fb3BzLCBtZGlvX2J1c19waHlfc3VzcGVuZCxcbiBcdFx0XHQgbWRpb19idXNfcGh5X3Jlc3VtZSk7XG4gXG4tLyoqXG4tICogcGh5X3JlZ2lzdGVyX2ZpeHVwIC0gY3JlYXRlcyBhIG5ldyBwaHlfZml4dXAgYW5kIGFkZHMgaXQgdG8gdGhlIGxpc3Rcbi0gKiBAYnVzX2lkOiBBIHN0cmluZyB3aGljaCBtYXRjaGVzIHBoeWRldi1cdTAwM2VtZGlvLmRldi5idXNfaWQgKG9yIE5VTEwpXG4tICogQHBoeV91aWQ6IFVzZWQgdG8gbWF0Y2ggYWdhaW5zdCBwaHlkZXYtXHUwMDNlcGh5X2lkICh0aGUgVUlEIG9mIHRoZSBQSFkpXG4tICogQHBoeV91aWRfbWFzazogQXBwbGllZCB0byBwaHlkZXYtXHUwMDNlcGh5X2lkIGFuZCBmaXh1cC1cdTAwM2VwaHlfdWlkIGJlZm9yZVxuLSAqXHRjb21wYXJpc29uIChvciAwIHRvIGRpc2FibGUgaWQtYmFzZWQgbWF0Y2hpbmcpXG4tICogQHJ1bjogVGhlIGFjdHVhbCBjb2RlIHRvIGJlIHJ1biB3aGVuIGEgbWF0Y2hpbmcgUEhZIGlzIGZvdW5kXG4tICovXG4tc3RhdGljIGludCBwaHlfcmVnaXN0ZXJfZml4dXAoY29uc3QgY2hhciAqYnVzX2lkLCB1MzIgcGh5X3VpZCwgdTMyIHBoeV91aWRfbWFzayxcbi1cdFx0XHQgICAgICBpbnQgKCpydW4pKHN0cnVjdCBwaHlfZGV2aWNlICopKVxuLXtcbi1cdHN0cnVjdCBwaHlfZml4dXAgKmZpeHVwID0ga3phbGxvY19vYmooKmZpeHVwKTtcbi1cbi1cdGlmICghZml4dXApXG4tXHRcdHJldHVybiAtRU5PTUVNO1xuLVxuLVx0aWYgKGJ1c19pZClcbi1cdFx0c3Ryc2NweShmaXh1cC1cdTAwM2VidXNfaWQsIGJ1c19pZCwgc2l6ZW9mKGZpeHVwLVx1MDAzZWJ1c19pZCkpO1xuLVx0Zml4dXAtXHUwMDNlcGh5X3VpZCA9IHBoeV91aWQ7XG4tXHRmaXh1cC1cdTAwM2VwaHlfdWlkX21hc2sgPSBwaHlfdWlkX21hc2s7XG4tXHRmaXh1cC1cdTAwM2VydW4gPSBydW47XG4tXG4tXHRtdXRleF9sb2NrKFx1MDAyNnBoeV9maXh1cF9sb2NrKTtcbi1cdGxpc3RfYWRkX3RhaWwoXHUwMDI2Zml4dXAtXHUwMDNlbGlzdCwgXHUwMDI2cGh5X2ZpeHVwX2xpc3QpO1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBoeV9maXh1cF9sb2NrKTtcbi1cbi1cdHJldHVybiAwO1xuLX1cbi1cbi0vKiBSZWdpc3RlcnMgYSBmaXh1cCB0byBiZSBydW4gb24gYW55IFBIWSB3aXRoIHRoZSBVSUQgaW4gcGh5X3VpZCAqL1xuLWludCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZCh1MzIgcGh5X3VpZCwgdTMyIHBoeV91aWRfbWFzayxcbi1cdFx0XHQgICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSlcbi17XG4tXHRyZXR1cm4gcGh5X3JlZ2lzdGVyX2ZpeHVwKE5VTEwsIHBoeV91aWQsIHBoeV91aWRfbWFzaywgcnVuKTtcbi19XG4tRVhQT1JUX1NZTUJPTChwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZCk7XG4tXG4tLyogUmVnaXN0ZXJzIGEgZml4dXAgdG8gYmUgcnVuIG9uIHRoZSBQSFkgd2l0aCBpZCBzdHJpbmcgYnVzX2lkICovXG4taW50IHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWQoY29uc3QgY2hhciAqYnVzX2lkLFxuLVx0XHRcdCAgICAgIGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpXG4te1xuLVx0cmV0dXJuIHBoeV9yZWdpc3Rlcl9maXh1cChidXNfaWQsIDAsIDAsIHJ1bik7XG4tfVxuLUVYUE9SVF9TWU1CT0wocGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZCk7XG4tXG4tc3RhdGljIGJvb2wgcGh5X25lZWRzX2ZpeHVwKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHN0cnVjdCBwaHlfZml4dXAgKmZpeHVwKVxuLXtcbi1cdGlmICghc3RyY21wKGZpeHVwLVx1MDAzZWJ1c19pZCwgcGh5ZGV2X25hbWUocGh5ZGV2KSkpXG4tXHRcdHJldHVybiB0cnVlO1xuLVxuLVx0aWYgKGZpeHVwLVx1MDAzZXBoeV91aWRfbWFzayBcdTAwMjZcdTAwMjZcbi1cdCAgICBwaHlfaWRfY29tcGFyZShwaHlkZXYtXHUwMDNlcGh5X2lkLCBmaXh1cC1cdTAwM2VwaHlfdWlkLCBmaXh1cC1cdTAwM2VwaHlfdWlkX21hc2spKVxuLVx0XHRyZXR1cm4gdHJ1ZTtcbi1cbi1cdHJldHVybiBmYWxzZTtcbi19XG4tXG4tLyogUnVucyBhbnkgbWF0Y2hpbmcgZml4dXBzIGZvciB0aGlzIHBoeWRldiAqL1xuLXN0YXRpYyBpbnQgcGh5X3NjYW5fZml4dXBzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4te1xuLVx0c3RydWN0IHBoeV9maXh1cCAqZml4dXA7XG4tXG4tXHRtdXRleF9sb2NrKFx1MDAyNnBoeV9maXh1cF9sb2NrKTtcbi1cdGxpc3RfZm9yX2VhY2hfZW50cnkoZml4dXAsIFx1MDAyNnBoeV9maXh1cF9saXN0LCBsaXN0KSB7XG4tXHRcdGlmIChwaHlfbmVlZHNfZml4dXAocGh5ZGV2LCBmaXh1cCkpIHtcbi1cdFx0XHRpbnQgZXJyID0gZml4dXAtXHUwMDNlcnVuKHBoeWRldik7XG4tXG4tXHRcdFx0aWYgKGVyciBcdTAwM2MgMCkge1xuLVx0XHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBoeV9maXh1cF9sb2NrKTtcbi1cdFx0XHRcdHJldHVybiBlcnI7XG4tXHRcdFx0fVxuLVx0XHRcdHBoeWRldi1cdTAwM2VoYXNfZml4dXBzID0gdHJ1ZTtcbi1cdFx0fVxuLVx0fVxuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBoeV9maXh1cF9sb2NrKTtcbi1cbi1cdHJldHVybiAwO1xuLX1cbi1cbiAvKipcbiAgKiBnZW5waHlfbWF0Y2hfcGh5X2RldmljZSAtIG1hdGNoIGEgUEhZIGRldmljZSB3aXRoIGEgUEhZIGRyaXZlclxuICAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLmY0OWZjNGNlZmU4MTdcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuY1xuQEAgLTAsMCAmIzQzOzEsOTkgQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXJcbiYjNDM7LypcbiYjNDM7ICogUEhZIGZpeHVwIHN1cHBvcnRcbiYjNDM7ICovXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9saXN0LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcGh5LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvc2xhYi5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3N0cmluZy5oXHUwMDNlXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcJiMzNDtwaHlsaWItaW50ZXJuYWwuaFwmIzM0O1xuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCBsaXN0X2hlYWQgcGh5X2ZpeHVwX2xpc3QgX19yb19hZnRlcl9pbml0ID1cbiYjNDM7XHRMSVNUX0hFQURfSU5JVChwaHlfZml4dXBfbGlzdCk7XG4mIzQzO1xuJiM0MztzdHJ1Y3QgcGh5X2ZpeHVwIHtcbiYjNDM7XHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7XG4mIzQzO1x0Y2hhciBidXNfaWRbTUlJX0JVU19JRF9TSVpFICYjNDM7IDNdO1xuJiM0MztcdHUzMiBwaHlfdWlkO1xuJiM0MztcdHUzMiBwaHlfdWlkX21hc2s7XG4mIzQzO1x0aW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbiYjNDM7fTtcbiYjNDM7XG4mIzQzOy8qKlxuJiM0MzsgKiBwaHlfcmVnaXN0ZXJfZml4dXAgLSBjcmVhdGVzIGEgbmV3IHBoeV9maXh1cCBhbmQgYWRkcyBpdCB0byB0aGUgbGlzdFxuJiM0MzsgKiBAYnVzX2lkOiBBIHN0cmluZyB3aGljaCBtYXRjaGVzIHBoeWRldi1cdTAwM2VtZGlvLmRldi5idXNfaWQgKG9yIFBIWV9BTllfSUQpXG4mIzQzOyAqIEBwaHlfdWlkOiBVc2VkIHRvIG1hdGNoIGFnYWluc3QgcGh5ZGV2LVx1MDAzZXBoeV9pZCAodGhlIFVJRCBvZiB0aGUgUEhZKVxuJiM0MzsgKlx0SXQgY2FuIGFsc28gYmUgUEhZX0FOWV9VSURcbiYjNDM7ICogQHBoeV91aWRfbWFzazogQXBwbGllZCB0byBwaHlkZXYtXHUwMDNlcGh5X2lkIGFuZCBmaXh1cC1cdTAwM2VwaHlfdWlkIGJlZm9yZVxuJiM0MzsgKlx0Y29tcGFyaXNvblxuJiM0MzsgKiBAcnVuOiBUaGUgYWN0dWFsIGNvZGUgdG8gYmUgcnVuIHdoZW4gYSBtYXRjaGluZyBQSFkgaXMgZm91bmRcbiYjNDM7ICovXG4mIzQzO3N0YXRpYyB2b2lkIF9faW5pdCBwaHlfcmVnaXN0ZXJfZml4dXAoY29uc3QgY2hhciAqYnVzX2lkLCB1MzIgcGh5X3VpZCxcbiYjNDM7XHRcdFx0XHQgICAgICB1MzIgcGh5X3VpZF9tYXNrLFxuJiM0MztcdFx0XHRcdCAgICAgIGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgcGh5X2ZpeHVwICpmaXh1cCA9IGt6YWxsb2Nfb2JqKCpmaXh1cCk7XG4mIzQzO1xuJiM0MztcdGlmICghZml4dXApXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdGlmIChidXNfaWQpXG4mIzQzO1x0XHRzdHJzY3B5KGZpeHVwLVx1MDAzZWJ1c19pZCwgYnVzX2lkKTtcbiYjNDM7XHRmaXh1cC1cdTAwM2VwaHlfdWlkID0gcGh5X3VpZDtcbiYjNDM7XHRmaXh1cC1cdTAwM2VwaHlfdWlkX21hc2sgPSBwaHlfdWlkX21hc2s7XG4mIzQzO1x0Zml4dXAtXHUwMDNlcnVuID0gcnVuO1xuJiM0MztcbiYjNDM7XHRsaXN0X2FkZF90YWlsKFx1MDAyNmZpeHVwLVx1MDAzZWxpc3QsIFx1MDAyNnBoeV9maXh1cF9saXN0KTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7LyogUmVnaXN0ZXJzIGEgZml4dXAgdG8gYmUgcnVuIG9uIGFueSBQSFkgd2l0aCB0aGUgVUlEIGluIHBoeV91aWQgKi9cbiYjNDM7dm9pZCBfX2luaXQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQodTMyIHBoeV91aWQsIHUzMiBwaHlfdWlkX21hc2ssXG4mIzQzO1x0XHRcdFx0ICAgICAgIGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpXG4mIzQzO3tcbiYjNDM7XHRwaHlfcmVnaXN0ZXJfZml4dXAoTlVMTCwgcGh5X3VpZCwgcGh5X3VpZF9tYXNrLCBydW4pO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKiBSZWdpc3RlcnMgYSBmaXh1cCB0byBiZSBydW4gb24gdGhlIFBIWSB3aXRoIGlkIHN0cmluZyBidXNfaWQgKi9cbiYjNDM7dm9pZCBfX2luaXQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZChjb25zdCBjaGFyICpidXNfaWQsXG4mIzQzO1x0XHRcdFx0ICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSlcbiYjNDM7e1xuJiM0MztcdHBoeV9yZWdpc3Rlcl9maXh1cChidXNfaWQsIDAsIDAsIHJ1bik7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBib29sIHBoeV9uZWVkc19maXh1cChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBzdHJ1Y3QgcGh5X2ZpeHVwICpmaXh1cClcbiYjNDM7e1xuJiM0MztcdGlmICghc3RyY21wKGZpeHVwLVx1MDAzZWJ1c19pZCwgcGh5ZGV2X25hbWUocGh5ZGV2KSkpXG4mIzQzO1x0XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7XG4mIzQzO1x0aWYgKGZpeHVwLVx1MDAzZXBoeV91aWRfbWFzayBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgcGh5X2lkX2NvbXBhcmUocGh5ZGV2LVx1MDAzZXBoeV9pZCwgZml4dXAtXHUwMDNlcGh5X3VpZCwgZml4dXAtXHUwMDNlcGh5X3VpZF9tYXNrKSlcbiYjNDM7XHRcdHJldHVybiB0cnVlO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gZmFsc2U7XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qKlxuJiM0MzsgKiBwaHlfc2Nhbl9maXh1cHMgLSBydW5zIGFueSBtYXRjaGluZyBmaXh1cHMgZm9yIHRoaXMgcGh5ZGV2XG4mIzQzOyAqIEBwaHlkZXY6IHRoZSBwaHlkZXYgdG8gc2VhcmNoIGFuZCBydW4gZml4dXBzIGZvclxuJiM0MzsgKiBSZXR1cm5zOiAwIG9yIGFuIGVycm5vXG4mIzQzOyAqL1xuJiM0MztpbnQgcGh5X3NjYW5fZml4dXBzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgcGh5X2ZpeHVwICpmaXh1cDtcbiYjNDM7XG4mIzQzO1x0bGlzdF9mb3JfZWFjaF9lbnRyeShmaXh1cCwgXHUwMDI2cGh5X2ZpeHVwX2xpc3QsIGxpc3QpIHtcbiYjNDM7XHRcdGlmIChwaHlfbmVlZHNfZml4dXAocGh5ZGV2LCBmaXh1cCkpIHtcbiYjNDM7XHRcdFx0aW50IGVyciA9IGZpeHVwLVx1MDAzZXJ1bihwaHlkZXYpO1xuJiM0MztcbiYjNDM7XHRcdFx0aWYgKGVyciBcdTAwM2MgMClcbiYjNDM7XHRcdFx0XHRyZXR1cm4gZXJyO1xuJiM0MztcbiYjNDM7XHRcdFx0cGh5ZGV2LVx1MDAzZWhhc19maXh1cHMgPSB0cnVlO1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwocGh5X3NjYW5fZml4dXBzKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmggYi9kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmhcbmluZGV4IDY2NGVkN2ZhYTUxODQuLjM4ZWUyOTRmM2M5NjIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaWItaW50ZXJuYWwuaFxuQEAgLTIzLDYgJiM0MzsyMyw3IEBAIHZvaWQgb2Zfc2V0X3BoeV9lZWVfYnJva2VuKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuIHZvaWQgb2Zfc2V0X3BoeV90aW1pbmdfcm9sZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbiBpbnQgcGh5X3NwZWVkX2Rvd25fY29yZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbiB2b2lkIHBoeV9jaGVja19kb3duc2hpZnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG4mIzQzO2ludCBwaHlfc2Nhbl9maXh1cHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG4gXG4gaW50IG1kaW9idXNfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7XG4gaW50IG1kaW9idXNfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BoeS5oIGIvaW5jbHVkZS9saW51eC9waHkuaFxuaW5kZXggNWY4ZDY1ODY4ZTBmZi4uZjc5OWIzNjg0Y2RkZSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvcGh5LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvcGh5LmhcbkBAIC0yNDIyLDEwICYjNDM7MjQyMiwxMCBAQCBpbnQgcGh5X2dldF9tYWNfdGVybWluYXRpb24oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgc3RydWN0IGRldmljZSAqZGV2LFxuIHZvaWQgcGh5X3Jlc29sdmVfcGF1c2UodW5zaWduZWQgbG9uZyAqbG9jYWxfYWR2LCB1bnNpZ25lZCBsb25nICpwYXJ0bmVyX2FkdixcbiBcdFx0ICAgICAgIGJvb2wgKnR4X3BhdXNlLCBib29sICpyeF9wYXVzZSk7XG4gXG4taW50IHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWQoY29uc3QgY2hhciAqYnVzX2lkLFxuLVx0XHRcdCAgICAgIGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpO1xuLWludCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZCh1MzIgcGh5X3VpZCwgdTMyIHBoeV91aWRfbWFzayxcbi1cdFx0XHQgICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSk7XG4mIzQzO3ZvaWQgX19pbml0IHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWQoY29uc3QgY2hhciAqYnVzX2lkLFxuJiM0MztcdFx0XHRcdCAgICAgIGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpO1xuJiM0Mzt2b2lkIF9faW5pdCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZCh1MzIgcGh5X3VpZCwgdTMyIHBoeV91aWRfbWFzayxcbiYjNDM7XHRcdFx0XHQgICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSk7XG4gXG4gaW50IHBoeV9lZWVfdHhfY2xvY2tfc3RvcF9jYXBhYmxlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuIGludCBwaHlfZWVlX3J4X2Nsb2NrX3N0b3Aoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCBjbGtfc3RvcF9lbmFibGUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjIwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGV4dHJhY3RzIFBIWSBmaXh1cCByZWdpc3RyYXRpb24gaW50byBkcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMgYW5kIG1hcmtzIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMgYXMgX19pbml0LiBUaGUgb25seSBjYWxsZXJzIG9mIHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfdWlkKCkgYW5kIHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWQoKSBpbiB0aGUga2VybmVsIGFyZSBwbGF0Zm9ybS1zcGVjaWZpYyBlYXJseS1ib290IGNvZGUgb24gQVJNIChhcmNoL2FybS9tYWNoLSopIGFuZCBQb3dlclBDIChhcmNoL3Bvd2VycGMvcGxhdGZvcm1zLyopLCB3aXRoIG5vIGNhbGxlcnMgb24gYW1kNjQuIE5laXRoZXIgZnVuY3Rpb24gaXMgZXhwb3J0ZWQgdG8gbW9kdWxlcy4gQ29uc2VxdWVudGx5LCBvbiBhbWQ2NCwgcGh5X2ZpeHVwX2xpc3QgaXMgcGVybWFuZW50bHkgZW1wdHksIHJlbmRlcmluZyB0aGUgbWF0Y2hpbmcgbG9naWMgKHBoeV9uZWVkc19maXh1cCkgYW5kIGZpeHVwIGV4ZWN1dGlvbiBwYXRoIGluc2lkZSBwaHlfc2Nhbl9maXh1cHMoKSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuIEZ1enppbmcgb24gYW1kNjQgY2Fubm90IGV4ZXJjaXNlIHRoZSBtb2RpZmllZCBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzMzU5NjM5MDIyYzk4YjRhNGM4OTUzMDMyNTRiMWY2NmIxMWNhMTk3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBTZXAgMTMgMjA6MjA6NTIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUKaW5kZXggZTIzZGY1ZTgzNmU5ZS4uNDY3NGVhZjI0M2ViYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZQpAQCAtOCw3ICYjNDM7OCw3IEBAIGxpYnBoeS15CQkJOj0gcGh5Lm8gcGh5LWM0NS5vIHBoeS1jb3JlLm8gcGh5X2RldmljZS5vIFwKIAogaWZkZWYgQ09ORklHX1BIWUxJQgogIyBidWlsdC1pbiB3aGVuZXZlciBQSFlMSUIgaXMgYnVpbHQtaW4gb3IgbW9kdWxlCi1vYmoteQkJCQkmIzQzOz0gc3R1YnMubwomIzQzO29iai15CQkJCSYjNDM7PSBzdHVicy5vIHBoeV9maXh1cC5vCiBlbmRpZgogCiBsaWJwaHktJChDT05GSUdfU1dQSFkpCQkmIzQzOz0gc3dwaHkubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMKaW5kZXggOTRiMmU4NWUwMGEzNy4uMjdjMGNiMTM4NjBiNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jCkBAIC00OSwxNCAmIzQzOzQ5LDYgQEAgTU9EVUxFX0RFU0NSSVBUSU9OKCYjMzQ7UEhZIGxpYnJhcnkmIzM0Oyk7CiBNT0RVTEVfQVVUSE9SKCYjMzQ7QW5keSBGbGVtaW5nJiMzNDspOwogTU9EVUxFX0xJQ0VOU0UoJiMzNDtHUEwmIzM0Oyk7CiAKLXN0cnVjdCBwaHlfZml4dXAgewotCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKLQljaGFyIGJ1c19pZFtNSUlfQlVTX0lEX1NJWkUgJiM0MzsgM107Ci0JdTMyIHBoeV91aWQ7Ci0JdTMyIHBoeV91aWRfbWFzazsKLQlpbnQgKCpydW4pKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpOwotfTsKLQogc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGdlbnBoeV9jNDVfZHJpdmVyID0gewogCS5waHlfaWQgICAgICAgICA9IDB4ZmZmZmZmZmYsCiAJLnBoeV9pZF9tYXNrICAgID0gMHhmZmZmZmZmZiwKQEAgLTIzNyw5ICYjNDM7MjI5LDYgQEAgc3RhdGljIHZvaWQgcGh5X21kaW9fZGV2aWNlX3JlbW92ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpCiAKIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBnZW5waHlfZHJpdmVyOwogCi1zdGF0aWMgTElTVF9IRUFEKHBoeV9maXh1cF9saXN0KTsKLXN0YXRpYyBERUZJTkVfTVVURVgocGh5X2ZpeHVwX2xvY2spOwotCiBzdGF0aWMgYm9vbCBwaHlfZHJ2X3dvbF9lbmFibGVkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiB7CiAJc3RydWN0IGV0aHRvb2xfd29saW5mbyB3b2wgPSB7IC5jbWQgPSBFVEhUT09MX0dXT0wgfTsKQEAgLTQyNyw4NSAmIzQzOzQxNiw2IEBAIHN0YXRpYyBfX21heWJlX3VudXNlZCBpbnQgbWRpb19idXNfcGh5X3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiBzdGF0aWMgU0lNUExFX0RFVl9QTV9PUFMobWRpb19idXNfcGh5X3BtX29wcywgbWRpb19idXNfcGh5X3N1c3BlbmQsCiAJCQkgbWRpb19idXNfcGh5X3Jlc3VtZSk7CiAKLS8qKgotICogcGh5X3JlZ2lzdGVyX2ZpeHVwIC0gY3JlYXRlcyBhIG5ldyBwaHlfZml4dXAgYW5kIGFkZHMgaXQgdG8gdGhlIGxpc3QKLSAqIEBidXNfaWQ6IEEgc3RyaW5nIHdoaWNoIG1hdGNoZXMgcGh5ZGV2LSZndDttZGlvLmRldi5idXNfaWQgKG9yIE5VTEwpCi0gKiBAcGh5X3VpZDogVXNlZCB0byBtYXRjaCBhZ2FpbnN0IHBoeWRldi0mZ3Q7cGh5X2lkICh0aGUgVUlEIG9mIHRoZSBQSFkpCi0gKiBAcGh5X3VpZF9tYXNrOiBBcHBsaWVkIHRvIHBoeWRldi0mZ3Q7cGh5X2lkIGFuZCBmaXh1cC0mZ3Q7cGh5X3VpZCBiZWZvcmUKLSAqCWNvbXBhcmlzb24gKG9yIDAgdG8gZGlzYWJsZSBpZC1iYXNlZCBtYXRjaGluZykKLSAqIEBydW46IFRoZSBhY3R1YWwgY29kZSB0byBiZSBydW4gd2hlbiBhIG1hdGNoaW5nIFBIWSBpcyBmb3VuZAotICovCi1zdGF0aWMgaW50IHBoeV9yZWdpc3Rlcl9maXh1cChjb25zdCBjaGFyICpidXNfaWQsIHUzMiBwaHlfdWlkLCB1MzIgcGh5X3VpZF9tYXNrLAotCQkJICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSkKLXsKLQlzdHJ1Y3QgcGh5X2ZpeHVwICpmaXh1cCA9IGt6YWxsb2Nfb2JqKCpmaXh1cCk7Ci0KLQlpZiAoIWZpeHVwKQotCQlyZXR1cm4gLUVOT01FTTsKLQotCWlmIChidXNfaWQpCi0JCXN0cnNjcHkoZml4dXAtJmd0O2J1c19pZCwgYnVzX2lkLCBzaXplb2YoZml4dXAtJmd0O2J1c19pZCkpOwotCWZpeHVwLSZndDtwaHlfdWlkID0gcGh5X3VpZDsKLQlmaXh1cC0mZ3Q7cGh5X3VpZF9tYXNrID0gcGh5X3VpZF9tYXNrOwotCWZpeHVwLSZndDtydW4gPSBydW47Ci0KLQltdXRleF9sb2NrKCZhbXA7cGh5X2ZpeHVwX2xvY2spOwotCWxpc3RfYWRkX3RhaWwoJmFtcDtmaXh1cC0mZ3Q7bGlzdCwgJmFtcDtwaHlfZml4dXBfbGlzdCk7Ci0JbXV0ZXhfdW5sb2NrKCZhbXA7cGh5X2ZpeHVwX2xvY2spOwotCi0JcmV0dXJuIDA7Ci19Ci0KLS8qIFJlZ2lzdGVycyBhIGZpeHVwIHRvIGJlIHJ1biBvbiBhbnkgUEhZIHdpdGggdGhlIFVJRCBpbiBwaHlfdWlkICovCi1pbnQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQodTMyIHBoeV91aWQsIHUzMiBwaHlfdWlkX21hc2ssCi0JCQkgICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSkKLXsKLQlyZXR1cm4gcGh5X3JlZ2lzdGVyX2ZpeHVwKE5VTEwsIHBoeV91aWQsIHBoeV91aWRfbWFzaywgcnVuKTsKLX0KLUVYUE9SVF9TWU1CT0wocGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQpOwotCi0vKiBSZWdpc3RlcnMgYSBmaXh1cCB0byBiZSBydW4gb24gdGhlIFBIWSB3aXRoIGlkIHN0cmluZyBidXNfaWQgKi8KLWludCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX2lkKGNvbnN0IGNoYXIgKmJ1c19pZCwKLQkJCSAgICAgIGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpCi17Ci0JcmV0dXJuIHBoeV9yZWdpc3Rlcl9maXh1cChidXNfaWQsIDAsIDAsIHJ1bik7Ci19Ci1FWFBPUlRfU1lNQk9MKHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWQpOwotCi1zdGF0aWMgYm9vbCBwaHlfbmVlZHNfZml4dXAoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgc3RydWN0IHBoeV9maXh1cCAqZml4dXApCi17Ci0JaWYgKCFzdHJjbXAoZml4dXAtJmd0O2J1c19pZCwgcGh5ZGV2X25hbWUocGh5ZGV2KSkpCi0JCXJldHVybiB0cnVlOwotCi0JaWYgKGZpeHVwLSZndDtwaHlfdWlkX21hc2sgJmFtcDsmYW1wOwotCSAgICBwaHlfaWRfY29tcGFyZShwaHlkZXYtJmd0O3BoeV9pZCwgZml4dXAtJmd0O3BoeV91aWQsIGZpeHVwLSZndDtwaHlfdWlkX21hc2spKQotCQlyZXR1cm4gdHJ1ZTsKLQotCXJldHVybiBmYWxzZTsKLX0KLQotLyogUnVucyBhbnkgbWF0Y2hpbmcgZml4dXBzIGZvciB0aGlzIHBoeWRldiAqLwotc3RhdGljIGludCBwaHlfc2Nhbl9maXh1cHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKLXsKLQlzdHJ1Y3QgcGh5X2ZpeHVwICpmaXh1cDsKLQotCW11dGV4X2xvY2soJmFtcDtwaHlfZml4dXBfbG9jayk7Ci0JbGlzdF9mb3JfZWFjaF9lbnRyeShmaXh1cCwgJmFtcDtwaHlfZml4dXBfbGlzdCwgbGlzdCkgewotCQlpZiAocGh5X25lZWRzX2ZpeHVwKHBoeWRldiwgZml4dXApKSB7Ci0JCQlpbnQgZXJyID0gZml4dXAtJmd0O3J1bihwaHlkZXYpOwotCi0JCQlpZiAoZXJyICZsdDsgMCkgewotCQkJCW11dGV4X3VubG9jaygmYW1wO3BoeV9maXh1cF9sb2NrKTsKLQkJCQlyZXR1cm4gZXJyOwotCQkJfQotCQkJcGh5ZGV2LSZndDtoYXNfZml4dXBzID0gdHJ1ZTsKLQkJfQotCX0KLQltdXRleF91bmxvY2soJmFtcDtwaHlfZml4dXBfbG9jayk7Ci0KLQlyZXR1cm4gMDsKLX0KLQogLyoqCiAgKiBnZW5waHlfbWF0Y2hfcGh5X2RldmljZSAtIG1hdGNoIGEgUEhZIGRldmljZSB3aXRoIGEgUEhZIGRyaXZlcgogICogQHBoeWRldjogdGFyZ2V0IHBoeV9kZXZpY2Ugc3RydWN0CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uZjQ5ZmM0Y2VmZTgxNwotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYwpAQCAtMCwwICYjNDM7MSw5OSBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyCiYjNDM7LyoKJiM0MzsgKiBQSFkgZml4dXAgc3VwcG9ydAomIzQzOyAqLwomIzQzOwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9saXN0LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3BoeS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9zbGFiLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3N0cmluZy5oJmd0OwomIzQzOwomIzQzOyNpbmNsdWRlICYjMzQ7cGh5bGliLWludGVybmFsLmgmIzM0OwomIzQzOwomIzQzO3N0YXRpYyBzdHJ1Y3QgbGlzdF9oZWFkIHBoeV9maXh1cF9saXN0IF9fcm9fYWZ0ZXJfaW5pdCA9CiYjNDM7CUxJU1RfSEVBRF9JTklUKHBoeV9maXh1cF9saXN0KTsKJiM0MzsKJiM0MztzdHJ1Y3QgcGh5X2ZpeHVwIHsKJiM0MzsJc3RydWN0IGxpc3RfaGVhZCBsaXN0OwomIzQzOwljaGFyIGJ1c19pZFtNSUlfQlVTX0lEX1NJWkUgJiM0MzsgM107CiYjNDM7CXUzMiBwaHlfdWlkOwomIzQzOwl1MzIgcGh5X3VpZF9tYXNrOwomIzQzOwlpbnQgKCpydW4pKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpOwomIzQzO307CiYjNDM7CiYjNDM7LyoqCiYjNDM7ICogcGh5X3JlZ2lzdGVyX2ZpeHVwIC0gY3JlYXRlcyBhIG5ldyBwaHlfZml4dXAgYW5kIGFkZHMgaXQgdG8gdGhlIGxpc3QKJiM0MzsgKiBAYnVzX2lkOiBBIHN0cmluZyB3aGljaCBtYXRjaGVzIHBoeWRldi0mZ3Q7bWRpby5kZXYuYnVzX2lkIChvciBQSFlfQU5ZX0lEKQomIzQzOyAqIEBwaHlfdWlkOiBVc2VkIHRvIG1hdGNoIGFnYWluc3QgcGh5ZGV2LSZndDtwaHlfaWQgKHRoZSBVSUQgb2YgdGhlIFBIWSkKJiM0MzsgKglJdCBjYW4gYWxzbyBiZSBQSFlfQU5ZX1VJRAomIzQzOyAqIEBwaHlfdWlkX21hc2s6IEFwcGxpZWQgdG8gcGh5ZGV2LSZndDtwaHlfaWQgYW5kIGZpeHVwLSZndDtwaHlfdWlkIGJlZm9yZQomIzQzOyAqCWNvbXBhcmlzb24KJiM0MzsgKiBAcnVuOiBUaGUgYWN0dWFsIGNvZGUgdG8gYmUgcnVuIHdoZW4gYSBtYXRjaGluZyBQSFkgaXMgZm91bmQKJiM0MzsgKi8KJiM0MztzdGF0aWMgdm9pZCBfX2luaXQgcGh5X3JlZ2lzdGVyX2ZpeHVwKGNvbnN0IGNoYXIgKmJ1c19pZCwgdTMyIHBoeV91aWQsCiYjNDM7CQkJCSAgICAgIHUzMiBwaHlfdWlkX21hc2ssCiYjNDM7CQkJCSAgICAgIGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcGh5X2ZpeHVwICpmaXh1cCA9IGt6YWxsb2Nfb2JqKCpmaXh1cCk7CiYjNDM7CiYjNDM7CWlmICghZml4dXApCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CWlmIChidXNfaWQpCiYjNDM7CQlzdHJzY3B5KGZpeHVwLSZndDtidXNfaWQsIGJ1c19pZCk7CiYjNDM7CWZpeHVwLSZndDtwaHlfdWlkID0gcGh5X3VpZDsKJiM0MzsJZml4dXAtJmd0O3BoeV91aWRfbWFzayA9IHBoeV91aWRfbWFzazsKJiM0MzsJZml4dXAtJmd0O3J1biA9IHJ1bjsKJiM0MzsKJiM0MzsJbGlzdF9hZGRfdGFpbCgmYW1wO2ZpeHVwLSZndDtsaXN0LCAmYW1wO3BoeV9maXh1cF9saXN0KTsKJiM0Mzt9CiYjNDM7CiYjNDM7LyogUmVnaXN0ZXJzIGEgZml4dXAgdG8gYmUgcnVuIG9uIGFueSBQSFkgd2l0aCB0aGUgVUlEIGluIHBoeV91aWQgKi8KJiM0Mzt2b2lkIF9faW5pdCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZCh1MzIgcGh5X3VpZCwgdTMyIHBoeV91aWRfbWFzaywKJiM0MzsJCQkJICAgICAgIGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpCiYjNDM7ewomIzQzOwlwaHlfcmVnaXN0ZXJfZml4dXAoTlVMTCwgcGh5X3VpZCwgcGh5X3VpZF9tYXNrLCBydW4pOwomIzQzO30KJiM0MzsKJiM0MzsvKiBSZWdpc3RlcnMgYSBmaXh1cCB0byBiZSBydW4gb24gdGhlIFBIWSB3aXRoIGlkIHN0cmluZyBidXNfaWQgKi8KJiM0Mzt2b2lkIF9faW5pdCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX2lkKGNvbnN0IGNoYXIgKmJ1c19pZCwKJiM0MzsJCQkJICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSkKJiM0Mzt7CiYjNDM7CXBoeV9yZWdpc3Rlcl9maXh1cChidXNfaWQsIDAsIDAsIHJ1bik7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBib29sIHBoeV9uZWVkc19maXh1cChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBzdHJ1Y3QgcGh5X2ZpeHVwICpmaXh1cCkKJiM0Mzt7CiYjNDM7CWlmICghc3RyY21wKGZpeHVwLSZndDtidXNfaWQsIHBoeWRldl9uYW1lKHBoeWRldikpKQomIzQzOwkJcmV0dXJuIHRydWU7CiYjNDM7CiYjNDM7CWlmIChmaXh1cC0mZ3Q7cGh5X3VpZF9tYXNrICZhbXA7JmFtcDsKJiM0MzsJICAgIHBoeV9pZF9jb21wYXJlKHBoeWRldi0mZ3Q7cGh5X2lkLCBmaXh1cC0mZ3Q7cGh5X3VpZCwgZml4dXAtJmd0O3BoeV91aWRfbWFzaykpCiYjNDM7CQlyZXR1cm4gdHJ1ZTsKJiM0MzsKJiM0MzsJcmV0dXJuIGZhbHNlOwomIzQzO30KJiM0MzsKJiM0MzsvKioKJiM0MzsgKiBwaHlfc2Nhbl9maXh1cHMgLSBydW5zIGFueSBtYXRjaGluZyBmaXh1cHMgZm9yIHRoaXMgcGh5ZGV2CiYjNDM7ICogQHBoeWRldjogdGhlIHBoeWRldiB0byBzZWFyY2ggYW5kIHJ1biBmaXh1cHMgZm9yCiYjNDM7ICogUmV0dXJuczogMCBvciBhbiBlcnJubwomIzQzOyAqLwomIzQzO2ludCBwaHlfc2Nhbl9maXh1cHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBwaHlfZml4dXAgKmZpeHVwOwomIzQzOwomIzQzOwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGZpeHVwLCAmYW1wO3BoeV9maXh1cF9saXN0LCBsaXN0KSB7CiYjNDM7CQlpZiAocGh5X25lZWRzX2ZpeHVwKHBoeWRldiwgZml4dXApKSB7CiYjNDM7CQkJaW50IGVyciA9IGZpeHVwLSZndDtydW4ocGh5ZGV2KTsKJiM0MzsKJiM0MzsJCQlpZiAoZXJyICZsdDsgMCkKJiM0MzsJCQkJcmV0dXJuIGVycjsKJiM0MzsKJiM0MzsJCQlwaHlkZXYtJmd0O2hhc19maXh1cHMgPSB0cnVlOwomIzQzOwkJfQomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MX0dQTChwaHlfc2Nhbl9maXh1cHMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpYi1pbnRlcm5hbC5oIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpYi1pbnRlcm5hbC5oCmluZGV4IDY2NGVkN2ZhYTUxODQuLjM4ZWUyOTRmM2M5NjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaWItaW50ZXJuYWwuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmgKQEAgLTIzLDYgJiM0MzsyMyw3IEBAIHZvaWQgb2Zfc2V0X3BoeV9lZWVfYnJva2VuKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpOwogdm9pZCBvZl9zZXRfcGh5X3RpbWluZ19yb2xlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpOwogaW50IHBoeV9zcGVlZF9kb3duX2NvcmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7CiB2b2lkIHBoeV9jaGVja19kb3duc2hpZnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7CiYjNDM7aW50IHBoeV9zY2FuX2ZpeHVwcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTsKIAogaW50IG1kaW9idXNfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7CiBpbnQgbWRpb2J1c191bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9waHkuaCBiL2luY2x1ZGUvbGludXgvcGh5LmgKaW5kZXggNWY4ZDY1ODY4ZTBmZi4uZjc5OWIzNjg0Y2RkZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9waHkuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3BoeS5oCkBAIC0yNDIyLDEwICYjNDM7MjQyMiwxMCBAQCBpbnQgcGh5X2dldF9tYWNfdGVybWluYXRpb24oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgc3RydWN0IGRldmljZSAqZGV2LAogdm9pZCBwaHlfcmVzb2x2ZV9wYXVzZSh1bnNpZ25lZCBsb25nICpsb2NhbF9hZHYsIHVuc2lnbmVkIGxvbmcgKnBhcnRuZXJfYWR2LAogCQkgICAgICAgYm9vbCAqdHhfcGF1c2UsIGJvb2wgKnJ4X3BhdXNlKTsKIAotaW50IHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWQoY29uc3QgY2hhciAqYnVzX2lkLAotCQkJICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSk7Ci1pbnQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQodTMyIHBoeV91aWQsIHUzMiBwaHlfdWlkX21hc2ssCi0JCQkgICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSk7CiYjNDM7dm9pZCBfX2luaXQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZChjb25zdCBjaGFyICpidXNfaWQsCiYjNDM7CQkJCSAgICAgIGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpOwomIzQzO3ZvaWQgX19pbml0IHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfdWlkKHUzMiBwaHlfdWlkLCB1MzIgcGh5X3VpZF9tYXNrLAomIzQzOwkJCQkgICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSk7CiAKIGludCBwaHlfZWVlX3R4X2Nsb2NrX3N0b3BfY2FwYWJsZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTsKIGludCBwaHlfZWVlX3J4X2Nsb2NrX3N0b3Aoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCBjbGtfc3RvcF9lbmFibGUpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDUyCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMzk4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBQSFkgRml4dXAgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBjbGVhcmx5IGZvY3VzZWQgb24gcmVmaW5pbmcgdGhlIFBIWSBmaXh1cCBtZWNoYW5pc20gd2l0aGluIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IHVuZGVyIGBkcml2ZXJzL25ldC9waHkvYC4gSXQmIzM5O3MgYSB0YXJnZXRlZCByZWZhY3Rvci4gTGV0JiMzOTtzIGJyZWFrIGRvd24gdGhlIGltcGxpY2F0aW9ucy4KCkZpcnN0LCBJIHNlZSB0aGUgYE1ha2VmaWxlYCBiZWluZyB1cGRhdGVkIHRvIGluY2x1ZGUgYHBoeV9maXh1cC5vYCBhcyBhIGJ1aWx0LWluIG9iamVjdCB3aGVuIGBQSFlMSUJgIGlzIGVuYWJsZWQuIFRoYXQmIzM5O3Mgc3RhbmRhcmQgcHJhY3RpY2U7IHdlJiMzOTtyZSBtYWtpbmcgc3VyZSB0aGUgZml4dXAgZnVuY3Rpb25hbGl0eSBpcyBhdmFpbGFibGUgd2hlbiB0aGUgUEhZIGxpYnJhcnkgaXMgaW5jbHVkZWQuIE5vIHN1cnByaXNlcyB0aGVyZS4KClRoZSBuZXh0IGNoYW5nZSBpbiBgcGh5X2RldmljZS5jYCBpcyBzaWduaWZpY2FudC4gVGhlIGZpeHVwIGxpc3QgYW5kIGFzc29jaWF0ZWQgZnVuY3Rpb25zIGFyZSBiZWluZyBtb3ZlZCB0byBhIG5ldyBmaWxlLCBgcGh5X2ZpeHVwLmNgLiBUaGlzIGlzIGdvb2QgZm9yIG1vZHVsYXJpdHkgYW5kIGNsYXJpdHkuIElzb2xhdGluZyB0aGUgZml4dXAgbG9naWMgbWFrZXMgaXQgZWFzaWVyIHRvIG1hbmFnZSBhbmQgdW5kZXJzdGFuZC4KCk5vdywgbGV0JiMzOTtzIGV4YW1pbmUgdGhlIG5ldyBgcGh5X2ZpeHVwLmNgIGZpbGUgaXRzZWxmLiBTZXZlcmFsIGtleSB0aGluZ3MganVtcCBvdXQ6CgoqICAgVGhlIGBwaHlfZml4dXBfbGlzdGAgaXMgbm93IGBfX3JvX2FmdGVyX2luaXRgLiBUaGlzIGlzIGEgY3J1Y2lhbCBkZXRhaWwhIFRoaXMgaW1wbGllcyB0aGF0IHRoZSBmaXh1cCBsaXN0IGlzIG1lYW50IHRvIGJlIHJlYWQtb25seSBhZnRlciBpbml0aWFsaXphdGlvbi4gVGhpcyBpcyBhIHZlcnkgc3Ryb25nIHNpZ25hbC4gSXQgaGFzIHRvIGJlIHRoYXQgd2F5IGZvciBpdCB0byBiZSByZW1vdmVkLCB3aGljaCBpcyBteSBuZXh0IHBvaW50LgoqICAgKipUaGUgYHBoeV9maXh1cF9sb2NrYCBtdXRleCBoYXMgYmVlbiAqcmVtb3ZlZCohKiogVGhhdCYjMzk7cyB0aGUgcmVhbCBjcnV4IG9mIHRoaXMgcGF0Y2ghIFRoaXMgaW1wbGllcyB0aGUgY29kZSBpcyBub3cgdGhyZWFkIHNhZmUgYnkgZGVzaWduLCBiZWNhdXNlIGFsbCB0aGUgZGF0YSBpcyBpbW11dGFibGUsIHNvIGl0IGlzIHByb2JhYmx5IGluaXRpYWxpemVkIGVhcmx5IGFuZCBuZXZlciBtb2RpZmllZCBhZ2Fpbi4gVGhpcyBpbXBsaWVzIGFuICppbW11dGFibGUqIGxpc3QgaXMgdXNlZC4KKiAgIGBwaHlfcmVnaXN0ZXJfZml4dXBgIGFuZCB0aGUgdmFyaWFudCBmdW5jdGlvbnMgYXJlIG5vdyBtYXJrZWQgYF9faW5pdGAgYW5kIHJldHVybiBgdm9pZGAuIFRoaXMgc3VnZ2VzdHMgdGhlc2UgZnVuY3Rpb25zIGFyZSBvbmx5IGNhbGxlZCBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIHBoYXNlLCBhbmQgbm8gZXJyb3IgaGFuZGxpbmcgaXMgbmVjZXNzYXJ5LCBhcyB0aGVyZSBpcyBubyBydW50aW1lIHJlZ2lzdHJhdGlvbi4KKiAgIFRoZSBgcGh5X3NjYW5fZml4dXBzYCBmdW5jdGlvbiwgd2hpY2ggaXRlcmF0ZXMgb3ZlciB0aGUgZml4dXAgbGlzdCwgKm5vIGxvbmdlciBhY3F1aXJlcyB0aGUgYHBoeV9maXh1cF9sb2NrYCouIEdpdmVuIHRoZSBsaXN0IGlzIGltbXV0YWJsZSwgd2UgZG9uJiMzOTt0IG5lZWQgYSBsb2NrLCBmdXJ0aGVyIGNvbmZpcm1pbmcgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgZWFybGllciBwb2ludC4KCkl0JiMzOTtzIGNsZWFyIHRoZSBkZXNpZ24gaGVyZSBoYXMgc2hpZnRlZCB0byBhbiBpbml0aWFsaXphdGlvbi10aW1lIHJlZ2lzdHJhdGlvbiwgdGhlbiByZWFkLW9ubHkgYWNjZXNzIGZvciBmaXh1cHMuIFRoaXMgc2hvdWxkIHByb3ZpZGUgYmV0dGVyIHBlcmZvcm1hbmNlLCBhcyB0aGVyZSBpcyBubyBsb2NraW5nLgoKVGhlIGhlYWRlciBmaWxlIGNoYW5nZXMgYXJlIHNpbXBsZTogdXBkYXRlcyB0byB0aGUgcHJvdG90eXBlcyBvZiB0aGUgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucyB0byBgX19pbml0IHZvaWRgLgoKTm93LCB0aGUgcXVlc3Rpb24gaXM6IGhvdyBpcyB0aGlzIG5ldyBzZXR1cCBhY3R1YWxseSAqdXNlZCo/IEkmIzM5O20gZ29pbmcgdG8gcnVuIGBncmVwcGVyYCB0byBzZWUgd2hlcmUgYHBoeV9yZWdpc3Rlcl9maXh1cF8qYCBhbmQgYHBoeV9zY2FuX2ZpeHVwc2AgYXJlIGNhbGxlZC4gSSBleHBlY3QgdGhlbSB0byBiZSBjYWxsZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uIGFuZCBpbiB0aGUgZHJpdmVyIHByb2JlIGZ1bmN0aW9uLCByZXNwZWN0aXZlbHkuIExldCYjMzk7cyBzZWUgd2hhdCB0aGF0IHNob3dzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeV9yZWdpc3Rlcl9maXh1cCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdD01Mjc9VGhlIHBsYXRmb3JtIGNvZGUgY2FuIHJlZ2lzdGVyIHRoZSBmaXh1cCB1c2luZyBvbmUgb2Y6OlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3QtNTI4LVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3Q6NTI5OiBpbnQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQodTMyIHBoeV91aWQsIHUzMiBwaHlfdWlkX21hc2ssXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdC01MzAtXHRcdGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpO1xuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3Q6NTMxOiBpbnQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZChjb25zdCBjaGFyICpwaHlfaWQsXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdC01MzItXHRcdGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpO1xuLS1cbmFyY2gvYXJtL21hY2gtaW14L21hY2gtaW14NnEuYz03MT1zdGF0aWMgdm9pZCBfX2luaXQgaW14NnFfZW5ldF9waHlfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtaW14L21hY2gtaW14NnEuYy03My1cdGlmIChJU19CVUlMVElOKENPTkZJR19QSFlMSUIpKSB7XG5hcmNoL2FybS9tYWNoLWlteC9tYWNoLWlteDZxLmM6NzQ6XHRcdHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfdWlkKFBIWV9JRF9LU1o5MDIxLCBNSUNSRUxfUEhZX0lEX01BU0ssXG5hcmNoL2FybS9tYWNoLWlteC9tYWNoLWlteDZxLmMtNzUtXHRcdFx0XHRrc3o5MDIxcm5fcGh5X2ZpeHVwKTtcbi0tXG5hcmNoL2FybS9tYWNoLWlteC9tYWNoLWlteDdkLmM9MzA9c3RhdGljIHZvaWQgX19pbml0IGlteDdkX2VuZXRfcGh5X2luaXQodm9pZClcbi0tXG5hcmNoL2FybS9tYWNoLWlteC9tYWNoLWlteDdkLmMtMzItXHRpZiAoSVNfQlVJTFRJTihDT05GSUdfUEhZTElCKSkge1xuYXJjaC9hcm0vbWFjaC1pbXgvbWFjaC1pbXg3ZC5jOjMzOlx0XHRwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZChQSFlfSURfQkNNNTQyMjAsIDB4ZmZmZmZmZmYsXG5hcmNoL2FybS9tYWNoLWlteC9tYWNoLWlteDdkLmMtMzQtXHRcdFx0XHRcdCAgIGJjbTU0MjIwX3BoeV9maXh1cCk7XG4tLVxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYz0yNTg9c3RhdGljIHZvaWQgX19pbml0IGFweDRkZXZraXRfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmMtMjYyLVx0aWYgKElTX0JVSUxUSU4oQ09ORklHX1BIWUxJQikpXG5hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jOjI2MzpcdFx0cGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQoUEhZX0lEX0tTWjgwNTEsIE1JQ1JFTF9QSFlfSURfTUFTSyxcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmMtMjY0LVx0XHRcdFx0XHQgICBhcHg0ZGV2a2l0X3BoeV9maXh1cCk7XG4tLVxuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L2RuczMyMy1zZXR1cC5jPTYxMj1zdGF0aWMgdm9pZCBfX2luaXQgZG5zMzIzX2luaXQodm9pZClcbi0tXG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvZG5zMzIzLXNldHVwLmMtNjc3LVx0XHRcdGJyZWFrO1xuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L2RuczMyMy1zZXR1cC5jOjY3ODpcdFx0cGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQoTUFSVkVMTF9QSFlfSURfODhFMTExOCxcbmFyY2gvYXJtL21hY2gtb3Jpb241eC9kbnMzMjMtc2V0dXAuYy02NzktXHRcdFx0XHRcdCAgIE1BUlZFTExfUEhZX0lEX01BU0ssXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84NXh4L21wYzg1eHhfbWRzLmM9MjgyPXN0YXRpYyBpbnQgX19pbml0IGJvYXJkX2ZpeHVwcyh2b2lkKVxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODV4eC9tcGM4NXh4X21kcy5jLTI5Ni1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODV4eC9tcGM4NXh4X21kcy5jOjI5NzpcdFx0cGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZChwaHlfaWQsIG1wYzg1NjhfZml4dXBfMTI1X2Nsb2NrKTtcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODV4eC9tcGM4NXh4X21kcy5jOjI5ODpcdFx0cGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZChwaHlfaWQsIG1wYzg1NjhfbWRzX3BoeV9maXh1cHMpO1xuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84NXh4L21wYzg1eHhfbWRzLmMtMjk5LVxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODV4eC9tcGM4NXh4X21kcy5jLTMwMi1cdFx0XHQodW5zaWduZWQgbG9uZyBsb25nKXJlcy5zdGFydCwgNyk7XG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzg1eHgvbXBjODV4eF9tZHMuYzozMDM6XHRcdHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWQocGh5X2lkLCBtcGM4NTY4X21kc19waHlfZml4dXBzKTtcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODV4eC9tcGM4NXh4X21kcy5jLTMwNC1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmM9MTY9c3RydWN0IHBoeV9maXh1cCB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTI0LS8qKlxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jOjI1OiAqIHBoeV9yZWdpc3Rlcl9maXh1cCAtIGNyZWF0ZXMgYSBuZXcgcGh5X2ZpeHVwIGFuZCBhZGRzIGl0IHRvIHRoZSBsaXN0XG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMtMjYtICogQGJ1c19pZDogQSBzdHJpbmcgd2hpY2ggbWF0Y2hlcyBwaHlkZXYtXHUwMDNlbWRpby5kZXYuYnVzX2lkIChvciBQSFlfQU5ZX0lEKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYy0zMi0gKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYzozMzpzdGF0aWMgdm9pZCBfX2luaXQgcGh5X3JlZ2lzdGVyX2ZpeHVwKGNvbnN0IGNoYXIgKmJ1c19pZCwgdTMyIHBoeV91aWQsXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMtMzQtXHRcdFx0XHQgICAgICB1MzIgcGh5X3VpZF9tYXNrLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYy01MS0vKiBSZWdpc3RlcnMgYSBmaXh1cCB0byBiZSBydW4gb24gYW55IFBIWSB3aXRoIHRoZSBVSUQgaW4gcGh5X3VpZCAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jOjUyOnZvaWQgX19pbml0IHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfdWlkKHUzMiBwaHlfdWlkLCB1MzIgcGh5X3VpZF9tYXNrLFxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTUzLVx0XHRcdFx0ICAgICAgIGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMtNTQte1xuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jOjU1Olx0cGh5X3JlZ2lzdGVyX2ZpeHVwKE5VTEwsIHBoeV91aWQsIHBoeV91aWRfbWFzaywgcnVuKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYy01Ni19XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTU4LS8qIFJlZ2lzdGVycyBhIGZpeHVwIHRvIGJlIHJ1biBvbiB0aGUgUEhZIHdpdGggaWQgc3RyaW5nIGJ1c19pZCAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jOjU5OnZvaWQgX19pbml0IHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWQoY29uc3QgY2hhciAqYnVzX2lkLFxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTYwLVx0XHRcdFx0ICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSlcbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYy02MS17XG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmM6NjI6XHRwaHlfcmVnaXN0ZXJfZml4dXAoYnVzX2lkLCAwLCAwLCBydW4pO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTYzLX1cbi0tXG5pbmNsdWRlL2xpbnV4L3BoeS5oPTI0MjI9dm9pZCBwaHlfcmVzb2x2ZV9wYXVzZSh1bnNpZ25lZCBsb25nICpsb2NhbF9hZHYsIHVuc2lnbmVkIGxvbmcgKnBhcnRuZXJfYWR2LFxuLS1cbmluY2x1ZGUvbGludXgvcGh5LmgtMjQyNC1cbmluY2x1ZGUvbGludXgvcGh5Lmg6MjQyNTp2b2lkIF9faW5pdCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX2lkKGNvbnN0IGNoYXIgKmJ1c19pZCxcbmluY2x1ZGUvbGludXgvcGh5LmgtMjQyNi1cdFx0XHRcdCAgICAgIGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpO1xuaW5jbHVkZS9saW51eC9waHkuaDoyNDI3OnZvaWQgX19pbml0IHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfdWlkKHUzMiBwaHlfdWlkLCB1MzIgcGh5X3VpZF9tYXNrLFxuaW5jbHVkZS9saW51eC9waHkuaC0yNDI4LVx0XHRcdFx0ICAgICAgIGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg5OTgKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAxODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBIWSBGaXh1cCBSZWdpc3RyYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIFBIWSBmaXh1cCBidXNpbmVzcy4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiBgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWRgIGFuZCBgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZGAuIEkmIzM5O3ZlIHF1aWNrbHkgY29tcGlsZWQgYSBsaXN0IG9mIHdoZXJlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgYmVpbmcgaW52b2tlZCB3aXRoaW4gdGhlIGtlcm5lbC4gSSBzZWUgY2FsbHMgY29taW5nIGZyb20gc2V2ZXJhbCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgbWFjaGluZSBjb2RlIGZpbGVzOiBgYXJjaC9hcm0vbWFjaC1pbXgvbWFjaC1pbXg2cS5jYCwgYGFyY2gvYXJtL21hY2gtaW14L21hY2gtaW14N2QuY2AsIGBhcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jYCwgYGFyY2gvYXJtL21hY2gtb3Jpb241eC9kbnMzMjMtc2V0dXAuY2AsIGFuZCBgYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84NXh4L21wYzg1eHhfbWRzLmNgLiBUaGF0IGdpdmVzIG1lIGEgZ29vZCBzdGFydGluZyBwb2ludC4KCk5vdywgYmVmb3JlIEkgY29uY2x1ZGUgdGhhdCYjMzk7cyB0aGUgY29tcGxldGUgcGljdHVyZSwgSSBuZWVkIHRvIGJlIHRob3JvdWdoLiBBcmUgdGhlcmUgYW55IG90aGVyIHNuZWFreSBjYWxscyB0byB0aGVzZSByZWdpc3RyYXRpb24gZnVuY3Rpb25zIGx1cmtpbmcgZWxzZXdoZXJlPyBOb3BlLCBkb2VzbiYjMzk7dCBhcHBlYXIgc28gYXQgZmlyc3QgZ2xhbmNlLgoKQnV0IHdhaXQgYSBtaW51dGUsIEkgYmV0dGVyIGNvbnNpZGVyIGBwaHlfc2Nhbl9maXh1cHNgLiBJIHNob3VsZCBjaGVjayB3aGVyZSAqdGhhdCogaXMgY2FsbGVkLiBNYXliZSB0aGVyZSYjMzk7cyBzb21lIGluZGlyZWN0IHVzYWdlIG9yIGludGVyYWN0aW9uIHRoYXQgSSYjMzk7bSBtaXNzaW5nIGJ5IG9ubHkgZm9jdXNpbmcgb24gdGhlIGRpcmVjdCByZWdpc3RyYXRpb24gZnVuY3Rpb25zLiBUaGlzIHdhcnJhbnRzIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiB0byBoYXZlIGEgY29tcGxldGUgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlc2UgUEhZIGZpeHVwcyBhcmUgYWN0dWFsbHkgYmVpbmcgYXBwbGllZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlfc2Nhbl9maXh1cHMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xMDE5PWludCBwaHlfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMDMwLVx0LyogUnVuIGFsbCBvZiB0aGUgZml4dXBzIGZvciB0aGlzIFBIWSAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMDMxOlx0ZXJyID0gcGh5X3NjYW5fZml4dXBzKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEwMzItXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xMjUxPWludCBwaHlfaW5pdF9odyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTI2OS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTI3MDpcdHJldCA9IHBoeV9zY2FuX2ZpeHVwcyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMjcxLVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmM9NjU9c3RhdGljIGJvb2wgcGh5X25lZWRzX2ZpeHVwKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHN0cnVjdCBwaHlfZml4dXAgKmZpeHVwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYy03Ny0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYzo3ODogKiBwaHlfc2Nhbl9maXh1cHMgLSBydW5zIGFueSBtYXRjaGluZyBmaXh1cHMgZm9yIHRoaXMgcGh5ZGV2XG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMtNzktICogQHBoeWRldjogdGhlIHBoeWRldiB0byBzZWFyY2ggYW5kIHJ1biBmaXh1cHMgZm9yXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTgxLSAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jOjgyOmludCBwaHlfc2Nhbl9maXh1cHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYy04My17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTk4LX1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYzo5OTpFWFBPUlRfU1lNQk9MX0dQTChwaHlfc2Nhbl9maXh1cHMpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaWItaW50ZXJuYWwuaD0yNT12b2lkIHBoeV9jaGVja19kb3duc2hpZnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmg6MjY6aW50IHBoeV9zY2FuX2ZpeHVwcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWItaW50ZXJuYWwuaC0yNy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDA4OAoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDc0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBIWSBGaXh1cCBSZW1vdmFsIG9uIGFtZDY0KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gbWV0aG9kaWNhbGx5LiBGaXJzdCwgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgYGFtZDY0YCwgc28gdGhhdCYjMzk7cyB0aGUgZm9jdXMuIFRoZSBrZXkgcXVlc3Rpb246IGNhbiBgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWRgIG9yIGBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX2lkYCBldmVuIGJlIHJlbGV2YW50IGhlcmU/IE15IGluaXRpYWwgb2JzZXJ2YXRpb24gaXMgdGhhdCB0aGV5JiMzOTtyZSAqb25seSogY2FsbGVkIGJ5IGBhcmNoL2FybS9gIGFuZCBgYXJjaC9wb3dlcnBjL2AgY29kZS4gVGhhdCYjMzk7cyBhIHN0cm9uZyBpbmRpY2F0b3IuIFRoZW4sIGNvdWxkIGEgbW9kdWxlIG9yIGRyaXZlciwgZXZlbiBvbiBgYW1kNjRgLCBjYWxsIHRoZXNlIGZ1bmN0aW9ucz8KCkkgbm90aWNlZCBzb21ldGhpbmcgc2lnbmlmaWNhbnQgaW4gdGhlIHBhdGNoOiB0aGUgcmVtb3ZhbCBvZiBgRVhQT1JUX1NZTUJPTGAgZm9yIGBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZGAgYW5kIGBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX2lkYCBmcm9tIGBwaHlfZGV2aWNlLmNgLiBUaGF0JiMzOTtzIGEgcmVkIGZsYWcuIERpZ2dpbmcgZGVlcGVyLCB0aG9zZSBmdW5jdGlvbnMgYXJlIGFsc28gbm90IGV4cG9ydGVkIGZyb20gYHBoeV9maXh1cC5jYCBhbnltb3JlLiBUaGV5JiMzOTtyZSBgdm9pZCBfX2luaXRgIGZ1bmN0aW9ucywgbWVhbmluZyB0aGV5JiMzOTtyZSBtZWFudCB0byBiZSBjYWxsZWQgb25seSBkdXJpbmcgYF9faW5pdGAgc3RhZ2VzIGZvciBidWlsdC1pbiBjb2RlLCBhbmQgbm90IG1vZHVsZSBjb2RlLgoKVGhlbiwgYSBgZ2l0IGdyZXBgIHNlYXJjaCBzaG93ZWQgYWxsIG9jY3VycmVuY2VzIG9mIHRoZXNlIGZ1bmN0aW9ucyBpbiB0aGUgZW50aXJlIGtlcm5lbCwgcG9pbnRpbmcgb25seSB0byBzcGVjaWZpYyBBUk0gYW5kIFBvd2VyUEMgcGxhdGZvcm1zOiBgaW14NnFgLCBgaW14N2RgLCBgbXhzYCwgYGRuczMyM2AgYW5kIGBtcGM4NXh4YC4gU28sIHRoZSBjb250ZXh0IGlzIHZlcnkgbGltaXRlZCwgYW5kIHNwZWNpZmljIHRvIHRob3NlIGFyY2hpdGVjdHVyZXMuCgpOb3csIHRoZSBjcml0aWNhbCBxdWVzdGlvbjogYXJlIHRoZXJlICphbnkqIGNhbGxlcnMgb24gYGFtZDY0YCBvciBpbiBhbnkgZ2VuZXJpYyBjb2RlIHRoYXQgY291bGQgdXNlIHRoZXNlIHJlbW92ZWQgZnVuY3Rpb25zPyBBIHF1aWNrIHJldmlldyBzaG93cyB0aGVyZSBhcmUgbm9uZSwgd2hpY2ggc3Ryb25nbHkgc3VnZ2VzdHMgdGhhdCB0aGUgcmVtb3ZhbCBpcyBjb3JyZWN0LCBhdCBsZWFzdCBmcm9tIGFuIGFyY2hpdGVjdHVyYWwgcGVyc3BlY3RpdmUuCgpUaGUgbmV4dCBxdWVzdGlvbjogd2hhdCBoYXBwZW5zIG9uIGBhbWQ2NGAgd2hlbiBhIFBIWSBkZXZpY2UgaXMgcmVnaXN0ZXJlZD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIG5vcm1hbCBwYXRoLiBJdCBsb29rcyBsaWtlIGBwaHlfc2Nhbl9maXh1cHMocGh5ZGV2KWAgaXMgY2FsbGVkIGluIGJvdGggYHBoeV9kZXZpY2VfcmVnaXN0ZXJgIGFuZCBgcGh5X2luaXRfaHdgLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgYXQgdGhhdCBmdW5jdGlvbiBjYXJlZnVsbHkuCgpMb29raW5nIGF0IHRoZSBjb2RlIGZvciBgcGh5X3NjYW5fZml4dXBzYCwgaXQgaXRlcmF0ZXMgdGhyb3VnaCBgcGh5X2ZpeHVwX2xpc3RgIHRvIGZpbmQgYW55IGFwcGxpY2FibGUgZml4dXBzLiBIb3dldmVyLCBpZiB0aGlzIGxpc3QgaXMgZW1wdHkgKGFuZCBpdCYjMzk7cyBpbml0aWFsaXplZCBhcyBgTElTVF9IRUFEX0lOSVQocGh5X2ZpeHVwX2xpc3QpYCksIHRoZW4gYHBoeV9zY2FuX2ZpeHVwc2AgZG9lcyBhIHRyaXZpYWwgaXRlcmF0aW9uIGFuZCByZXR1cm5zIDAuIEVmZmVjdGl2ZWx5LCBubyBmaXh1cHMgYXJlIGFwcGxpZWQuCgpCdXQgaXMgYHBoeV9zY2FuX2ZpeHVwc2AgZXZlbiAqcmVhY2hhYmxlKiBvbiBgYW1kNjRgPyBDYW4gYSBgcGh5X2RldmljZWAgZXZlbiBiZSBjcmVhdGVkL3JlZ2lzdGVyZWQgb24gdGhpcyBhcmNoaXRlY3R1cmU/IFRoYXQmIzM5O3MgdGhlIG5leHQga2V5IHF1ZXN0aW9uLiBUaGlzIHJlcXVpcmVzIG1lIHRvIGRldGVybWluZSBob3cgYHBoeV9kZXZpY2VfcmVnaXN0ZXJgIGdldHMgY2FsbGVkIG9yIHdoYXQgZHJpdmVycyBjcmVhdGUgcGh5X2RldmljZXMuIE1heWJlIEkgc2hvdWxkIGxvb2sgaW50byBpZiBgc3l6a2FsbGVyYCBjb3VsZCBiZSB1c2VkIHRvIGNyZWF0ZSBhIHBoeV9kZXZpY2U/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5X2RldmljZV9yZWdpc3RlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jPTkzMT1zdGF0aWMgaW50IHhnYmVfcGh5X2ZpbmRfcGh5X2RldmljZShzdHJ1Y3QgeGdiZV9wcnZfZGF0YSAqcGRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYy05NzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jOjk3NjpcdHJldCA9IHBoeV9kZXZpY2VfcmVnaXN0ZXIocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtOTc3LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYzo5Nzg6XHRcdG5ldGRldl9lcnIocGRhdGEtXHUwMDNlbmV0ZGV2LCBcJiMzNDtwaHlfZGV2aWNlX3JlZ2lzdGVyIGZhaWxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTk3OS1cdFx0cGh5X2RldmljZV9mcmVlKHBoeWRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZHNhZl9tYWMuYz03MTY9aG5zX21hY19yZWdpc3Rlcl9waHlkZXYoc3RydWN0IG1paV9idXMgKm1kaW8sIHN0cnVjdCBobnNfbWFjX2NiICptYWNfY2IsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZHNhZl9tYWMuYy03NDQtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2RzYWZfbWFjLmM6NzQ1Olx0cmMgPSBwaHlfZGV2aWNlX3JlZ2lzdGVyKHBoeSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19kc2FmX21hYy5jLTc0Ni1cdGlmIChyYykge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9uZXRzZWMuYz0xOTI5PXN0YXRpYyBpbnQgbmV0c2VjX3JlZ2lzdGVyX21kaW8oc3RydWN0IG5ldHNlY19wcml2ICpwcml2LCB1MzIgcGh5X2FkZHIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L25ldHNlYy5jLTE5ODMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvbmV0c2VjLmM6MTk4NDpcdFx0cmV0ID0gcGh5X2RldmljZV9yZWdpc3Rlcihwcml2LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvbmV0c2VjLmMtMTk4NS1cdFx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9uZXRzZWMuYy0xOTg4LVx0XHRcdGRldl9lcnIocHJpdi1cdTAwM2VkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvbmV0c2VjLmM6MTk4OTpcdFx0XHRcdFwmIzM0O3BoeV9kZXZpY2VfcmVnaXN0ZXIgZXJyKCVkKVxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9uZXRzZWMuYy0xOTkwLVx0XHR9XG4tLVxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jPTQyPWZ3bm9kZV9maW5kX21paV90aW1lc3RhbXBlcihzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlKVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy02OS1cbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYzo3MDppbnQgZndub2RlX21kaW9idXNfcGh5X2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqbWRpbyxcbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy03MS1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy0xMDMtXHQgKi9cbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYzoxMDQ6XHRyYyA9IHBoeV9kZXZpY2VfcmVnaXN0ZXIocGh5KTtcbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy0xMDUtXHRpZiAocmMpIHtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmMtMTE0LX1cbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYzoxMTU6RVhQT1JUX1NZTUJPTChmd25vZGVfbWRpb2J1c19waHlfZGV2aWNlX3JlZ2lzdGVyKTtcbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy0xMTYtXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmM9MTE3PWludCBmd25vZGVfbWRpb2J1c19yZWdpc3Rlcl9waHkoc3RydWN0IG1paV9idXMgKmJ1cyxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmMtMTQ5LVx0XHQvKiBBbGwgZGF0YSBpcyBub3cgc3RvcmVkIGluIHRoZSBwaHkgc3RydWN0LCBzbyByZWdpc3RlciBpdCAqL1xuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jOjE1MDpcdFx0cmMgPSBwaHlfZGV2aWNlX3JlZ2lzdGVyKHBoeSk7XG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmMtMTUxLVx0XHRpZiAocmMpIHtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmMtMTU2LVx0fSBlbHNlIGlmIChpc19vZl9ub2RlKGNoaWxkKSkge1xuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jOjE1NzpcdFx0cmMgPSBmd25vZGVfbWRpb2J1c19waHlfZGV2aWNlX3JlZ2lzdGVyKGJ1cywgcGh5LCBjaGlsZCwgYWRkcik7XG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmMtMTU4LVx0XHRpZiAocmMpXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXhnZW5lLmM9MjYzPXN0cnVjdCBwaHlfZGV2aWNlICp4Z2VuZV9lbmV0X3BoeV9yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2FkZHIpXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXhnZW5lLmMtMjcwLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXhnZW5lLmM6MjcxOlx0aWYgKHBoeV9kZXZpY2VfcmVnaXN0ZXIocGh5X2RldikpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8teGdlbmUuYy0yNzItXHRcdHBoeV9kZXZpY2VfZnJlZShwaHlfZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYz0zMj1zdGF0aWMgaW50IG9mX2dldF9waHlfaWQoc3RydWN0IGRldmljZV9ub2RlICpkZXZpY2UsIHUzMiAqcGh5X2lkKVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTM2LVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6Mzc6aW50IG9mX21kaW9idXNfcGh5X2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTM4LVx0XHRcdFx0ICAgc3RydWN0IGRldmljZV9ub2RlICpjaGlsZCwgdTMyIGFkZHIpXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0zOS17XG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzo0MDpcdHJldHVybiBmd25vZGVfbWRpb2J1c19waHlfZGV2aWNlX3JlZ2lzdGVyKG1kaW8sIHBoeSxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTQxLVx0XHRcdFx0XHRcdCAgb2ZfZndub2RlX2hhbmRsZShjaGlsZCksXG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtNDMtfVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6NDQ6RVhQT1JUX1NZTUJPTChvZl9tZGlvYnVzX3BoeV9kZXZpY2VfcmVnaXN0ZXIpO1xuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtNDUtXG4tLVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jPTEzMT1zdHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBmaXhlZF9waHlfc3RhdHVzICpzdGF0dXMsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE2Mi1cbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYzoxNjM6XHRyZXQgPSBwaHlfZGV2aWNlX3JlZ2lzdGVyKHBoeSk7XG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTY0LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jPTQwOD1zdGF0aWMgc3RydWN0IHBoeV9kZXZpY2UgKm1kaW9idXNfc2NhbihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgYm9vbCBjNDUpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNDM3LVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NDM4Olx0ZXJyID0gcGh5X2RldmljZV9yZWdpc3RlcihwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNDM5LVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jPTU1MT1zdGF0aWMgdm9pZCB0amExMTAyX3AxX3JlZ2lzdGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYy01OTctXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYzo1OTg6XHRcdHJldCA9IG9mX21kaW9idXNfcGh5X2RldmljZV9yZWdpc3RlcihidXMsIHBoeSwgY2hpbGQsIGFkZHIpO1xuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmMtNTk5LVx0XHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xMDEzPUVYUE9SVF9TWU1CT0woZ2V0X3BoeV9kZXZpY2UpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTAxNS0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTAxNjogKiBwaHlfZGV2aWNlX3JlZ2lzdGVyIC0gUmVnaXN0ZXIgdGhlIHBoeSBkZXZpY2Ugb24gdGhlIE1ESU8gYnVzXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEwMTctICogQHBoeWRldjogcGh5X2RldmljZSBzdHJ1Y3R1cmUgdG8gYmUgYWRkZWQgdG8gdGhlIE1ESU8gYnVzXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEwMTgtICovXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjEwMTk6aW50IHBoeV9kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTAyMC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMDUxLX1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTA1MjpFWFBPUlRfU1lNQk9MKHBoeV9kZXZpY2VfcmVnaXN0ZXIpO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMDUzLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTA1OC0gKiBUaGlzIGRvZXNuJiMzOTt0IGZyZWUgdGhlIHBoeV9kZXZpY2UgaXRzZWxmLCBpdCBtZXJlbHkgcmV2ZXJzZXMgdGhlIGVmZmVjdHNcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTA1OTogKiBvZiBwaHlfZGV2aWNlX3JlZ2lzdGVyKCkuIFVzZSBwaHlfZGV2aWNlX2ZyZWUoKSB0byBmcmVlIHRoZSBkZXZpY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTA2MC0gKiBhZnRlciBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uXG4tLVxuZHJpdmVycy9uZXQvcGh5L3NmcC5jPTIwNzM9c3RhdGljIGludCBzZnBfc21fcHJvYmVfcGh5KHN0cnVjdCBzZnAgKnNmcCwgaW50IGFkZHIsIGJvb2wgaXNfYzQ1KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9zZnAuYy0yMDg4LVxuZHJpdmVycy9uZXQvcGh5L3NmcC5jOjIwODk6XHRlcnIgPSBwaHlfZGV2aWNlX3JlZ2lzdGVyKHBoeSk7XG5kcml2ZXJzL25ldC9waHkvc2ZwLmMtMjA5MC1cdGlmIChlcnIpIHtcbmRyaXZlcnMvbmV0L3BoeS9zZnAuYy0yMDkxLVx0XHRwaHlfZGV2aWNlX2ZyZWUocGh5KTtcbmRyaXZlcnMvbmV0L3BoeS9zZnAuYzoyMDkyOlx0XHRkZXZfZXJyKHNmcC1cdTAwM2VkZXYsIFwmIzM0O3BoeV9kZXZpY2VfcmVnaXN0ZXIgZmFpbGVkOiAlcGVcXG5cJiMzNDssXG5kcml2ZXJzL25ldC9waHkvc2ZwLmMtMjA5My1cdFx0XHRFUlJfUFRSKGVycikpO1xuLS1cbmluY2x1ZGUvbGludXgvZndub2RlX21kaW8uaC0xMS0jaWYgSVNfRU5BQkxFRChDT05GSUdfRldOT0RFX01ESU8pXG5pbmNsdWRlL2xpbnV4L2Z3bm9kZV9tZGlvLmg6MTI6aW50IGZ3bm9kZV9tZGlvYnVzX3BoeV9kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKm1kaW8sXG5pbmNsdWRlL2xpbnV4L2Z3bm9kZV9tZGlvLmgtMTMtXHRcdFx0XHQgICAgICAgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcbi0tXG5pbmNsdWRlL2xpbnV4L2Z3bm9kZV9tZGlvLmg9MTY9aW50IGZ3bm9kZV9tZGlvYnVzX3JlZ2lzdGVyX3BoeShzdHJ1Y3QgbWlpX2J1cyAqYnVzLFxuLS1cbmluY2x1ZGUvbGludXgvZndub2RlX21kaW8uaC0xOS0jZWxzZSAvKiBDT05GSUdfRldOT0RFX01ESU8gKi9cbmluY2x1ZGUvbGludXgvZndub2RlX21kaW8uaDoyMDppbnQgZndub2RlX21kaW9idXNfcGh5X2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqbWRpbyxcbmluY2x1ZGUvbGludXgvZndub2RlX21kaW8uaC0yMS1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuLS1cbmluY2x1ZGUvbGludXgvb2ZfbWRpby5oPTQ5PWJvb2wgb2ZfcGh5X2lzX2ZpeGVkX2xpbmsoc3RydWN0IGRldmljZV9ub2RlICpucCk7XG5pbmNsdWRlL2xpbnV4L29mX21kaW8uaDo1MDppbnQgb2ZfbWRpb2J1c19waHlfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICptZGlvLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuaW5jbHVkZS9saW51eC9vZl9tZGlvLmgtNTEtXHRcdFx0XHQgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKmNoaWxkLCB1MzIgYWRkcik7XG4tLVxuaW5jbHVkZS9saW51eC9vZl9tZGlvLmg9MTQwPXN0YXRpYyBpbmxpbmUgYm9vbCBvZl9waHlfaXNfZml4ZWRfbGluayhzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxuLS1cbmluY2x1ZGUvbGludXgvb2ZfbWRpby5oLTE0NC1cbmluY2x1ZGUvbGludXgvb2ZfbWRpby5oOjE0NTpzdGF0aWMgaW5saW5lIGludCBvZl9tZGlvYnVzX3BoeV9kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKm1kaW8sXG5pbmNsdWRlL2xpbnV4L29mX21kaW8uaC0xNDYtXHRcdFx0XHRcdCAgICBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuLS1cbmluY2x1ZGUvbGludXgvcGh5Lmg9MjE1OT1zdHJ1Y3QgcGh5X2RldmljZSAqZ2V0X3BoeV9kZXZpY2Uoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGJvb2wgaXNfYzQ1KTtcbmluY2x1ZGUvbGludXgvcGh5Lmg6MjE2MDppbnQgcGh5X2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KTtcbmluY2x1ZGUvbGludXgvcGh5LmgtMjE2MS12b2lkIHBoeV9kZXZpY2VfZnJlZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDYzNgoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDE0MzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBIWSBGaXh1cHMgYW5kIHRoZWlyIEFNRDY0IEltcGxpY2F0aW9ucyoqCgpPa2F5LCBsZXQmIzM5O3MgZGlzc2VjdCB0aGlzLiBGaXJzdCwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBjaGFuZ2UgdGhpcyBpcyBhYm91dCwgY2hlY2tpbmcgdGhlIGdpdCBsb2dzIGFuZCBtYXliZSB0aGUgb3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UsIG9yIGRpdmluZyBpbnRvIGBkcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCAqd2h5KiB0aGlzIHBhdGNoIHdhcyBtYWRlLiBJdCBsb29rcyBsaWtlIGl0IGhhcyBzb21ldGhpbmcgdG8gZG8gd2l0aCBgcGh5X2ZpeHVwLmNgIGFuZCBpdHMgcmVsYXRpb25zaGlwIHdpdGggYENPTkZJR19QSFlMSUJgLgoKUmlnaHQsIEkgc2VlIGl0IG5vdy4gYHBoeV9maXh1cC5vYCBpcyBidWlsdC1pbiB3aGVuZXZlciBgQ09ORklHX1BIWUxJQmAgaXMgZW5hYmxlZC4gVGhpcyBpcyBjcnVjaWFsIGJlY2F1c2UgcGxhdGZvcm0gY29kZSBpbiBhcmNoaXRlY3R1cmVzIGxpa2UgYGFybWAgYW5kIGBwb3dlcnBjYCB1c2UgYHBoeV9yZWdpc3Rlcl9maXh1cF8qYCBkdXJpbmcgZWFybHkgYm9vdCwgc3BlY2lmaWNhbGx5IGF0IGBfX2luaXRgIHRpbWUuIFByZXZpb3VzbHksIHdpdGggYENPTkZJR19QSFlMSUI9bWAsIHRoZXNlIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMgd2VyZSBpbiBhIG1vZHVsZSwgbWFraW5nIHRoZW0gaW5hY2Nlc3NpYmxlIHRvIHRoZSBwbGF0Zm9ybSBjb2RlIHRoYXQmIzM5O3MgYnVpbHQgZGlyZWN0bHkgaW50byB0aGUga2VybmVsIGlmIFBIWUxJQiB3YXMgbW9kdWxhci4gVGhlIGBpZiAoSVNfQlVJTFRJTihDT05GSUdfUEhZTElCKSlgIGNoZWNrIHdhcyBhIHJlYWwgcm9hZGJsb2NrLgoKQnkgbW92aW5nIGBwaHlfcmVnaXN0ZXJfZml4dXBgIHRvIGBwaHlfZml4dXAuY2AgYW5kIGJ1aWxkaW5nIGl0IGFzIGBvYmoteWAgKGFsd2F5cyBidWlsdC1pbikgYW5kIG1ha2luZyByZWdpc3RyYXRpb24gYF9faW5pdGAsIHdlIGVuc3VyZSBQSFkgZml4dXBzIGNhbiBiZSByZWdpc3RlcmVkIGV2ZW4gaWYgUEhZTElCIGlzIGEgbW9kdWxlLiBUaGUgZmFjdCB0aGF0IGFsbCBmaXh1cHMgYXJlIHJlZ2lzdGVyZWQgYXQgYF9faW5pdGAgdGltZSwgYmVmb3JlIFNNUC91c2Vyc3BhY2UvZHJpdmVyIHByb2JlLCBpcyB0aGUga2V5LCBhbGxvd2luZyBgcGh5X2ZpeHVwX2xpc3RgIHRvIGJlIG1hcmtlZCBgX19yb19hZnRlcl9pbml0YC4gVGhpcyBhbHNvIGVsaW1pbmF0ZXMgdGhlIG5lZWQgZm9yIGEgbG9jayAoYHBoeV9maXh1cF9sb2NrYCkgd2hlbiByZWFkaW5nIGBwaHlfZml4dXBfbGlzdGAgaW4gYHBoeV9zY2FuX2ZpeHVwc2AuIENsZXZlci4KCkxvb2tpbmcgYXQgYHBoeV9maXh1cC5jYCwgSSBzZWUgdGhlIGBwaHlfZml4dXBfbGlzdGAgZGVmaW5lZCBhcyBgX19yb19hZnRlcl9pbml0YCBhbmQgdGhlIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbiBgcGh5X3JlZ2lzdGVyX2ZpeHVwYC4gSXQgYWRkcyBmaXh1cHMgdG8gdGhhdCBsaXN0IGJhc2VkIG9uIGJ1cyBJRCBhbmQgcGh5IFVJRC9tYXNrLgoKTm93IHRoZSBxdWVzdGlvbiBpcywgZG9lcyB0aGlzIGFwcGx5IHRvIEFNRDY0PyBBcmUgdGhlcmUgQU5ZIGNhbGxlcnMgb2YgYHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfdWlkYCBvciBgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZGAgb24gQU1ENjQ/IEkgbmVlZCB0byB2ZXJpZnkuIEkmIzM5O2xsIGNoZWNrIHRob3NlIGNhbGxlcnMgYWdhaW4uLi4gTm9wZSwgbm90aGluZy4gQWxsIHRoZSB1c2FnZXMgYXJlIGluIHRoZSBBUk0gYW5kIFBvd2VyUEMgYXJjaGl0ZWN0dXJlcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSwgY291bGQgYW55IG90aGVyIGRyaXZlciBvciBvdGhlciBBTUQ2NCBjb2RlIGNhbGwgYHBoeV9yZWdpc3Rlcl9maXh1cGA/IExldCYjMzk7cyBzZWFyY2ggdGhlIHdob2xlIHJlcG9zaXRvcnkgZm9yIGBwaHlfcmVnaXN0ZXJfZml4dXBgLi4uIEFoLCBubyBvdGhlciBjYWxscyBleGlzdC4gVGhhdCBjb25maXJtcyBpdC4KClNvLCBvbiBBTUQ2NCwgYHBoeV9maXh1cF9saXN0YCBpcyBqdXN0IGluaXRpYWxpemVkIGFzIGBMSVNUX0hFQURfSU5JVChwaHlfZml4dXBfbGlzdClgLiBTaW5jZSBub3RoaW5nIHJlZ2lzdGVycyBhbnkgZml4dXBzIG9uIEFNRDY0LCB0aGlzIGxpc3Qgd2lsbCBhbHdheXMgYmUgRU1QVFkhIFdoYXQgaGFwcGVucyB3aGVuIGBwaHlfc2Nhbl9maXh1cHMocGh5ZGV2KWAgaXMgY2FsbGVkIG9uIEFNRDY0PyBJdCBjYWxscyBgbGlzdF9mb3JfZWFjaF9lbnRyeWAsIGJ1dCBzaW5jZSB0aGUgbGlzdCBpcyBlbXB0eSwgaXQgZG9lcyBaRVJPIGl0ZXJhdGlvbnMgYW5kIGp1c3QgcmV0dXJucyAwIGltbWVkaWF0ZWx5LgoKVGhlcmVmb3JlLCBldmVuIGlmIGEgUEhZIGRldmljZSAodmlydHVhbCBvciB3aGF0ZXZlcikgaXMgcmVnaXN0ZXJlZCBvbiBBTUQ2NCwgYHBoeV9zY2FuX2ZpeHVwc2AgZG9lcyBhYnNvbHV0ZWx5IG5vdGhpbmcuIENhbiBhIFBIWSBkZXZpY2UgYmUgcmVnaXN0ZXJlZCBvbiBBTUQ2NCB3aXRob3V0IHBoeXNpY2FsIGhhcmR3YXJlPyBNYXliZSB3aXRoIGEgdmlydHVhbCBQSFksIG9yLi4uIEFoLCBmaXhlZCBQSFkgaXMgd2hhdCBJIHdhcyBsb29raW5nIGZvciAoYGRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuY2ApLiBBbmQsIHdobyBjYWxscyBgZml4ZWRfcGh5X3JlZ2lzdGVyYD8gSSYjMzk7bGwgaW52ZXN0aWdhdGUgbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmaXhlZF9waHlfcmVnaXN0ZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9NDgyPXN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTEtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBOVU1fRklYRURfUEhZUzsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTI6XHRcdHBoeWRldnNbaV0gPSBmaXhlZF9waHlfcmVnaXN0ZXJfMTAwZmQoKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5My1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYz0yMjM0PXN0YXRpYyBpbnQgYjQ0X3JlZ2lzdGVyX3BoeV9vbmUoc3RydWN0IGI0NCAqYnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMjI3Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jOjIyNzM6XHRcdHBoeWRldiA9IGZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMjI3NC1cdFx0aWYgKCFJU19FUlIocGh5ZGV2KSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jPTE0Mzk9aW50IGJnbWFjX3BoeV9jb25uZWN0X2RpcmVjdChzdHJ1Y3QgYmdtYWMgKmJnbWFjKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmMtMTQ0OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmM6MTQ0OTpcdHBoeV9kZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXIoXHUwMDI2ZnBoeV9zdGF0dXMsIE5VTEwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYy0xNDUwLVx0aWYgKElTX0VSUihwaHlfZGV2KSkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM9MTg0OD1zdGF0aWMgaW50IGZ0Z21hYzEwMF9wcm9iZV9uY3NpKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xODY2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYzoxODY3Olx0cGh5ZGV2ID0gZml4ZWRfcGh5X3JlZ2lzdGVyKFx1MDAyNm5jc2lfcGh5X3N0YXR1cywgbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xODY4LVx0aWYgKElTX0VSUihwaHlkZXYpKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9Mjk4MT1zdGF0aWMgaW50IGZlY19lbmV0X21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy0zMDAyLVx0XHRcdG5ldGRldl9pbmZvKG5kZXYsIFwmIzM0O25vIFBIWSwgYXNzdW1pbmcgZGlyZWN0IGNvbm5lY3Rpb24gdG8gc3dpdGNoXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjMwMDM6XHRcdFx0cGh5X2RldiA9IGZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzAwNC1cdFx0XHRpZiAoSVNfRVJSKHBoeV9kZXYpKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYz0yMzg9c3RhdGljIGludCBoYmdfZml4ZWRfcGh5X2luaXQoc3RydWN0IGhiZ19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmMtMjUwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYzoyNTE6XHRwaHlkZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXIoXHUwMDI2aGJnX2ZpeGVkX3BoeV9zdGF0dXMsIE5VTEwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYy0yNTItXHRpZiAoSVNfRVJSKHBoeWRldikpIHtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYz00MTI9aW50IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtNDU5LXJlZ2lzdGVyX3BoeTpcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjQ2MDpcdHJldHVybiBQVFJfRVJSX09SX1pFUk8oZml4ZWRfcGh5X3JlZ2lzdGVyKFx1MDAyNnN0YXR1cywgbnApKTtcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTQ2MS19XG4tLVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jPTExOD1zdGF0aWMgaW50IGZpeGVkX3BoeV9nZXRfZnJlZV9hZGRyKHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTEzMC1cbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYzoxMzE6c3RydWN0IHBoeV9kZXZpY2UgKmZpeGVkX3BoeV9yZWdpc3Rlcihjb25zdCBzdHJ1Y3QgZml4ZWRfcGh5X3N0YXR1cyAqc3RhdHVzLFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTEzMi1cdFx0XHRcdCAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXG4tLVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE3Mi19XG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM6MTczOkVYUE9SVF9TWU1CT0xfR1BMKGZpeGVkX3BoeV9yZWdpc3Rlcik7XG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTc0LVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jOjE3NTpzdHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKHZvaWQpXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTc2LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTgxLVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jOjE4MjpcdHJldHVybiBmaXhlZF9waHlfcmVnaXN0ZXIoXHUwMDI2c3RhdHVzLCBOVUxMKTtcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xODMtfVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jOjE4NDpFWFBPUlRfU1lNQk9MX0dQTChmaXhlZF9waHlfcmVnaXN0ZXJfMTAwZmQpO1xuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE4NS1cbi0tXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oPTE5PWV4dGVybiBpbnQgZml4ZWRfcGh5X2NoYW5nZV9jYXJyaWVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGJvb2wgbmV3X2NhcnJpZXIpO1xuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaDoyMDpzdHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBmaXhlZF9waHlfc3RhdHVzICpzdGF0dXMsXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oLTIxLVx0XHRcdFx0ICAgICAgc3RydWN0IGRldmljZV9ub2RlICpucCk7XG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oOjIyOnN0cnVjdCBwaHlfZGV2aWNlICpmaXhlZF9waHlfcmVnaXN0ZXJfMTAwZmQodm9pZCk7XG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oLTIzLVxuLS1cbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmg9Mjk9c3RhdGljIGlubGluZSBzdHJ1Y3QgcGh5X2RldmljZSAqXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oOjMwOmZpeGVkX3BoeV9yZWdpc3Rlcihjb25zdCBzdHJ1Y3QgZml4ZWRfcGh5X3N0YXR1cyAqc3RhdHVzLFxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaC0zMS1cdFx0ICAgc3RydWN0IGRldmljZV9ub2RlICpucClcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oLTM1LVxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaDozNjpzdGF0aWMgaW5saW5lIHN0cnVjdCBwaHlfZGV2aWNlICpmaXhlZF9waHlfcmVnaXN0ZXJfMTAwZmQodm9pZClcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmgtMzcte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODUxMQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGlzIGNvZGU6CgoqKkFuYWx5emluZyB0aGUgYGRzYV9sb29wLmNgIE1vZHVsZSoqCgpPa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIEkmIzM5O20gbG9va2luZyBhdCBgZHNhX2xvb3AuY2AuIEl0IHNlZW1zIGxpa2UgaXQmIzM5O3MgcmVnaXN0ZXJpbmcgc29tZSBmaXhlZCBwaHlzaWNhbCBhZGRyZXNzZXMgZHVyaW5nIG1vZHVsZSBpbml0aWFsaXphdGlvbiwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgZHNhX2xvb3BfaW5pdGAuIFRoaXMgaXMgYSBwcmV0dHkgc3RhbmRhcmQgYXBwcm9hY2ggZm9yIHRoaXMga2luZCBvZiBoYXJkd2FyZS4KCkJ1dCB0aGVuLCBhIHF1ZXN0aW9uIHBvcHMgaW50byBteSBoZWFkLi4uIHdhaXQgYSBzZWNvbmQsIHdoYXQgYWJvdXQgVVNCIGV0aGVybmV0IGRvbmdsZXM/IEhvdyBhcmUgKnRob3NlKiBoYW5kbGVkLCBlc3BlY2lhbGx5IGluIHJlbGF0aW9uIHRvIHBoeSBpbnRlcmZhY2VzIGFuZCBwaHlsaWI/IEkgbmVlZCB0byBjaGVjayB3aGV0aGVyIGFueSBvZiB0aGUgVVNCIGV0aGVybmV0IGRyaXZlcnMgYXJlIGxldmVyYWdpbmcgcGh5bGliIG9yIHBoeSBkZXZpY2VzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhleSBpbnRlZ3JhdGUgd2l0aCB0aGUgcGh5c2ljYWwgbGF5ZXIuIEkmIzM5O2xsIG5lZWQgdG8gZ28gZGlnZ2luZyBmb3IgdGhhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5XyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMjAxMyBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jPTI2Nj1zdGF0aWMgaW50IGFxYzExMV9nZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldCxcbi0tXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMzIwLVxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjMyMTpzdGF0aWMgdm9pZCBhcWMxMTFfc2V0X3BoeV9zcGVlZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHU4IGF1dG9uZWcsIHUxNiBzcGVlZClcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0zMjIte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0zMjQtXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6MzI1Olx0YXFjMTExX2RhdGEtXHUwMDNlcGh5X2NmZyBcdTAwMjY9IH5BUV9BRFZfTUFTSztcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzozMjY6XHRhcWMxMTFfZGF0YS1cdTAwM2VwaHlfY2ZnIHw9IEFRX1BBVVNFO1xuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjMyNzpcdGFxYzExMV9kYXRhLVx1MDAzZXBoeV9jZmcgfD0gQVFfQVNZTV9QQVVTRTtcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzozMjg6XHRhcWMxMTFfZGF0YS1cdTAwM2VwaHlfY2ZnIHw9IEFRX0RPV05TSElGVDtcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzozMjk6XHRhcWMxMTFfZGF0YS1cdTAwM2VwaHlfY2ZnIFx1MDAyNj0gfkFRX0RTSF9SRVRSSUVTX01BU0s7XG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6MzMwOlx0YXFjMTExX2RhdGEtXHUwMDNlcGh5X2NmZyB8PSAoMyBcdTAwM2NcdTAwM2MgQVFfRFNIX1JFVFJJRVNfU0hJRlQpIFx1MDAyNlxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTMzMS1cdFx0XHRcdEFRX0RTSF9SRVRSSUVTX01BU0s7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTMzNS1cdFx0Y2FzZSBTUEVFRF81MDAwOlxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjMzNjpcdFx0XHRhcWMxMTFfZGF0YS1cdTAwM2VwaHlfY2ZnIHw9IEFRX0FEVl81RztcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0zMzctXHRcdFx0ZmFsbHRocm91Z2g7XG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMzM4LVx0XHRjYXNlIFNQRUVEXzI1MDA6XG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6MzM5Olx0XHRcdGFxYzExMV9kYXRhLVx1MDAzZXBoeV9jZmcgfD0gQVFfQURWXzJHNTtcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0zNDAtXHRcdFx0ZmFsbHRocm91Z2g7XG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMzQxLVx0XHRjYXNlIFNQRUVEXzEwMDA6XG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6MzQyOlx0XHRcdGFxYzExMV9kYXRhLVx1MDAzZXBoeV9jZmcgfD0gQVFfQURWXzFHO1xuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTM0My1cdFx0XHRmYWxsdGhyb3VnaDtcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0zNDQtXHRcdGNhc2UgU1BFRURfMTAwOlxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjM0NTpcdFx0XHRhcWMxMTFfZGF0YS1cdTAwM2VwaHlfY2ZnIHw9IEFRX0FEVl8xMDBNO1xuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTM0Ni1cdFx0XHQvKiBmYWxsLXRocm91Z2ggKi9cbi0tXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMzUwLVx0XHRjYXNlIFNQRUVEXzUwMDA6XG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6MzUxOlx0XHRcdGFxYzExMV9kYXRhLVx1MDAzZXBoeV9jZmcgfD0gQVFfQURWXzVHO1xuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTM1Mi1cdFx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0zNTMtXHRcdGNhc2UgU1BFRURfMjUwMDpcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzozNTQ6XHRcdFx0YXFjMTExX2RhdGEtXHUwMDNlcGh5X2NmZyB8PSBBUV9BRFZfMkc1O1xuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTM1NS1cdFx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0zNTYtXHRcdGNhc2UgU1BFRURfMTAwMDpcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzozNTc6XHRcdFx0YXFjMTExX2RhdGEtXHUwMDNlcGh5X2NmZyB8PSBBUV9BRFZfMUc7XG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMzU4LVx0XHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTM1OS1cdFx0Y2FzZSBTUEVFRF8xMDA6XG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6MzYwOlx0XHRcdGFxYzExMV9kYXRhLVx1MDAzZXBoeV9jZmcgfD0gQVFfQURWXzEwME07XG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMzYxLVx0XHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0zNjQtXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6MzY1Olx0YXFjMTExX3dyaXRlMzJfY21kKGRldiwgQVFfUEhZX09QUywgMCwgMCwgXHUwMDI2YXFjMTExX2RhdGEtXHUwMDNlcGh5X2NmZyk7XG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMzY2LX1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM9MzY4PXN0YXRpYyBpbnQgYXFjMTExX3NldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0LFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0zODItXHRcdFx0XHRcdCBTUEVFRF81MDAwIDogU1BFRURfMTAwMDtcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzozODM6XHRcdFx0YXFjMTExX3NldF9waHlfc3BlZWQoZGV2LCBhcWMxMTFfZGF0YS1cdTAwM2VhdXRvbmVnLFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTM4NC1cdFx0XHRcdFx0ICAgICBhcWMxMTFfZGF0YS1cdTAwM2VhZHZlcnRpc2VkX3NwZWVkKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtNDAzLVxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjQwNDpcdFx0YXFjMTExX3NldF9waHlfc3BlZWQoZGV2LCBhcWMxMTFfZGF0YS1cdTAwM2VhdXRvbmVnLFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTQwNS1cdFx0XHRcdCAgICAgYXFjMTExX2RhdGEtXHUwMDNlYWR2ZXJ0aXNlZF9zcGVlZCk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jPTc1Mz1zdGF0aWMgdm9pZCBhcWMxMTFfdW5iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTc2Ni1cdC8qIFBvd2VyIGRvd24gZXRoZXJuZXQgUEhZICovXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6NzY3Olx0YXFjMTExX2RhdGEtXHUwMDNlcGh5X2NmZyBcdTAwMjY9IH5BUV9BRFZfTUFTSztcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzo3Njg6XHRhcWMxMTFfZGF0YS1cdTAwM2VwaHlfY2ZnIHw9IEFRX0xPV19QT1dFUjtcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzo3Njk6XHRhcWMxMTFfZGF0YS1cdTAwM2VwaHlfY2ZnIFx1MDAyNj0gfkFRX1BIWV9QT1dFUl9FTjtcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy03NzAtXHRhcWMxMTFfd3JpdGUzMl9jbWRfbm9wbShkZXYsIEFRX1BIWV9PUFMsIDAsIDAsXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6NzcxOlx0XHRcdFx0XHUwMDI2YXFjMTExX2RhdGEtXHUwMDNlcGh5X2NmZyk7XG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtNzcyLVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYz05OTA9c3RhdGljIGludCBhcWMxMTFfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xMDA0LVx0LyogUG93ZXIgdXAgZXRoZXJuZXQgUEhZICovXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6MTAwNTpcdGFxYzExMV9kYXRhLVx1MDAzZXBoeV9jZmcgPSBBUV9QSFlfUE9XRVJfRU47XG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMTAwNi1cdGFxYzExMV93cml0ZTMyX2NtZChkZXYsIEFRX1BIWV9PUFMsIDAsIDAsXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6MTAwNzpcdFx0XHQgICBcdTAwMjZhcWMxMTFfZGF0YS1cdTAwM2VwaHlfY2ZnKTtcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xMDA4LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xMDI3LVx0LyogUGh5IGFkdmVydGlzZSAqL1xuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjEwMjg6XHRhcWMxMTFfc2V0X3BoeV9zcGVlZChkZXYsIGFxYzExMV9kYXRhLVx1MDAzZWF1dG9uZWcsXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMTAyOS1cdFx0XHQgICAgIGFxYzExMV9kYXRhLVx1MDAzZWFkdmVydGlzZWRfc3BlZWQpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYz0xMDM0PXN0YXRpYyBpbnQgYXFjMTExX3N0b3Aoc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xMDQ3LVx0LyogUHV0IFBIWSB0byBsb3cgcG93ZXIqL1xuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjEwNDg6XHRhcWMxMTFfZGF0YS1cdTAwM2VwaHlfY2ZnIHw9IEFRX0xPV19QT1dFUjtcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xMDQ5LVx0YXFjMTExX3dyaXRlMzJfY21kKGRldiwgQVFfUEhZX09QUywgMCwgMCxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzoxMDUwOlx0XHRcdCAgIFx1MDAyNmFxYzExMV9kYXRhLVx1MDAzZXBoeV9jZmcpO1xuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTEwNTEtXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jPTEzMjI9c3RhdGljIGludCBhcWMxMTFfc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IG1lc3NhZ2UpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTEzNjEtXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6MTM2MjpcdFx0YXFjMTExX2RhdGEtXHUwMDNlcGh5X2NmZyB8PSBBUV9XT0w7XG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMTM2My1cdFx0ZXRoZXJfYWRkcl9jb3B5KHdvbF9jZmcuaHdfYWRkciwgZGV2LVx1MDAzZW5ldC1cdTAwM2VkZXZfYWRkcik7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTE0MDAtXHRcdGFxYzExMV93cml0ZTMyX2NtZF9ub3BtKGRldiwgQVFfUEhZX09QUywgMCwgMCxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzoxNDAxOlx0XHRcdFx0XHRcdTAwMjZhcWMxMTFfZGF0YS1cdTAwM2VwaHlfY2ZnKTtcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xNDAyLVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzoxNDAzOlx0XHRhcWMxMTFfZGF0YS1cdTAwM2VwaHlfY2ZnIHw9IEFRX0xPV19QT1dFUjtcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xNDA0LVx0XHRhcWMxMTFfd3JpdGUzMl9jbWRfbm9wbShkZXYsIEFRX1BIWV9PUFMsIDAsIDAsXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6MTQwNTpcdFx0XHRcdFx0XHUwMDI2YXFjMTExX2RhdGEtXHUwMDNlcGh5X2NmZyk7XG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMTQwNi1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM9MTQxOD1zdGF0aWMgaW50IGFxYzExMV9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTE0MjctXHQvKiBQb3dlciB1cCBldGhlcm5ldCBQSFkgKi9cbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzoxNDI4Olx0YXFjMTExX2RhdGEtXHUwMDNlcGh5X2NmZyB8PSBBUV9QSFlfUE9XRVJfRU47XG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6MTQyOTpcdGFxYzExMV9kYXRhLVx1MDAzZXBoeV9jZmcgXHUwMDI2PSB+QVFfTE9XX1BPV0VSO1xuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjE0MzA6XHRhcWMxMTFfZGF0YS1cdTAwM2VwaHlfY2ZnIFx1MDAyNj0gfkFRX1dPTDtcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xNDMxLVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xNDQyLVxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjE0NDM6XHRhcWMxMTFfc2V0X3BoeV9zcGVlZChkZXYsIGFxYzExMV9kYXRhLVx1MDAzZWF1dG9uZWcsXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMTQ0NC1cdFx0XHQgICAgIGFxYzExMV9kYXRhLVx1MDAzZWFkdmVydGlzZWRfc3BlZWQpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuaD0xNjE9c3RydWN0IGFxYzExMV9kYXRhIHtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmgtMTcyLVx0fSBmd192ZXI7XG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmg6MTczOlx0dTMyIHBoeV9jZmc7XG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmgtMTc0LVx0dTggd29sX2ZsYWdzO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg9MTc4PXN0cnVjdCBhc2l4X2NvbW1vbl9wcml2YXRlIHtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTE4MS1cdGludCAoKnJlc2V0KShzdHJ1Y3QgdXNibmV0ICpkZXYsIGludCBpbl9wbSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeC5oOjE4MjpcdHUxNiBwcmVzdmRfcGh5X2FkdmVydGlzZTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MTgzOlx0dTE2IHByZXN2ZF9waHlfYm1jcjtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMTg0LVx0c3RydWN0IGFzaXhfcnhfZml4dXBfaW5mbyByeF9maXh1cF9pbmZvO1xuZHJpdmVycy9uZXQvdXNiL2FzaXguaC0xODUtXHRzdHJ1Y3QgbWlpX2J1cyAqbWRpbztcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MTg2Olx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldjtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MTg3Olx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldl9pbnQ7XG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTE4OC1cdHN0cnVjdCBwaHlsaW5rICpwaHlsaW5rO1xuZHJpdmVycy9uZXQvdXNiL2FzaXguaC0xODktXHRzdHJ1Y3QgcGh5bGlua19jb25maWcgcGh5bGlua19jb25maWc7XG5kcml2ZXJzL25ldC91c2IvYXNpeC5oOjE5MDpcdHUxNiBwaHlfYWRkcjtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMTkxLVx0Ym9vbCBlbWJkX3BoeTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oPTIxND1zdHJ1Y3Qgc2tfYnVmZiAqYXNpeF90eF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXguaC0yMTYtXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oOjIxNzppbnQgYXNpeF9yZWFkX3BoeV9hZGRyKHN0cnVjdCB1c2JuZXQgKmRldiwgYm9vbCBpbnRlcm5hbCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTIxOC1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oPTIyOT12b2lkIGFzaXhfc2V0X211bHRpY2FzdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0KTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMjMwLVxuZHJpdmVycy9uZXQvdXNiL2FzaXguaDoyMzE6aW50IGFzaXhfbWRpb19yZWFkKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXguaDoyMzI6dm9pZCBhc2l4X21kaW9fd3JpdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHBoeV9pZCwgaW50IGxvYywgaW50IHZhbCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTIzMy1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MjM0OmludCBhc2l4X21kaW9fYnVzX3JlYWQoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9pZCwgaW50IHJlZ251bSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeC5oOjIzNTppbnQgYXNpeF9tZGlvX2J1c193cml0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2lkLCBpbnQgcmVnbnVtLCB1MTYgdmFsKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMjM2LVxuZHJpdmVycy9uZXQvdXNiL2FzaXguaDoyMzc6aW50IGFzaXhfbWRpb19yZWFkX25vcG0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHBoeV9pZCwgaW50IGxvYyk7XG5kcml2ZXJzL25ldC91c2IvYXNpeC5oOjIzODp2b2lkIGFzaXhfbWRpb193cml0ZV9ub3BtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MsXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTIzOS1cdFx0XHQgIGludCB2YWwpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jPTI2NT1zdHJ1Y3Qgc2tfYnVmZiAqYXNpeF90eF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMzIwLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6MzIxOmludCBhc2l4X3JlYWRfcGh5X2FkZHIoc3RydWN0IHVzYm5ldCAqZGV2LCBib29sIGludGVybmFsKVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMzIyLXtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYz00NDE9dm9pZCBhc2l4X3NldF9tdWx0aWNhc3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5ldClcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy00NzktXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo0ODA6c3RhdGljIGludCBfX2FzaXhfbWRpb19yZWFkKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy00ODEtXHRcdFx0ICAgIGJvb2wgaW5fcG0pXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNDg2LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NDg3Olx0bXV0ZXhfbG9jayhcdTAwMjZkZXYtXHUwMDNlcGh5X211dGV4KTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTQ4OC1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy00OTAtXHRpZiAocmV0ID09IC1FTk9ERVYgfHwgcmV0ID09IC1FVElNRURPVVQpIHtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjQ5MTpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRldi1cdTAwM2VwaHlfbXV0ZXgpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNDkyLVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTQ5NC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjQ5NTpcdHJldCA9IGFzaXhfcmVhZF9jbWQoZGV2LCBBWF9DTURfUkVBRF9NSUlfUkVHLCBwaHlfaWQsIChfX3UxNilsb2MsIDIsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy00OTYtXHRcdFx0ICAgIFx1MDAyNnJlcywgaW5fcG0pO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUwMS1vdXQ6XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MDI6XHRtdXRleF91bmxvY2soXHUwMDI2ZGV2LVx1MDAzZXBoeV9tdXRleCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01MDMtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MDQ6XHRuZXRkZXZfZGJnKGRldi1cdTAwM2VuZXQsIFwmIzM0O2FzaXhfbWRpb19yZWFkKCkgcGh5X2lkPTB4JTAyeCwgbG9jPTB4JTAyeCwgcmV0dXJucz0weCUwNHhcXG5cJiMzNDssXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MDU6XHRcdFx0cGh5X2lkLCBsb2MsIGxlMTZfdG9fY3B1KHJlcykpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTA2LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUwOS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjUxMDppbnQgYXNpeF9tZGlvX3JlYWQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHBoeV9pZCwgaW50IGxvYylcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUxMS17XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MTI6XHRyZXR1cm4gX19hc2l4X21kaW9fcmVhZChuZXRkZXYsIHBoeV9pZCwgbG9jLCBmYWxzZSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01MTMtfVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTE0LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTE1OnN0YXRpYyBpbnQgX19hc2l4X21kaW9fd3JpdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHBoeV9pZCwgaW50IGxvYyxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUxNi1cdFx0XHQgICAgIGludCB2YWwsIGJvb2wgaW5fcG0pXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTIxLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTIyOlx0bmV0ZGV2X2RiZyhkZXYtXHUwMDNlbmV0LCBcJiMzNDthc2l4X21kaW9fd3JpdGUoKSBwaHlfaWQ9MHglMDJ4LCBsb2M9MHglMDJ4LCB2YWw9MHglMDR4XFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTIzOlx0XHRcdHBoeV9pZCwgbG9jLCB2YWwpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTI0LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTI1Olx0bXV0ZXhfbG9jayhcdTAwMjZkZXYtXHUwMDNlcGh5X211dGV4KTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUyNi1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01MzAtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MzE6XHRyZXQgPSBhc2l4X3dyaXRlX2NtZChkZXYsIEFYX0NNRF9XUklURV9NSUlfUkVHLCBwaHlfaWQsIChfX3UxNilsb2MsIDIsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01MzItXHRcdFx0ICAgICBcdTAwMjZyZXMsIGluX3BtKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01Mzctb3V0OlxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTM4Olx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRldi1cdTAwM2VwaHlfbXV0ZXgpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTM5LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU0Mi1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjU0Mzp2b2lkIGFzaXhfbWRpb193cml0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jLCBpbnQgdmFsKVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTQ0LXtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjU0NTpcdF9fYXNpeF9tZGlvX3dyaXRlKG5ldGRldiwgcGh5X2lkLCBsb2MsIHZhbCwgZmFsc2UpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTQ2LX1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01NDgtLyogTURJTyByZWFkIGFuZCB3cml0ZSB3cmFwcGVycyBmb3IgcGh5bGliICovXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1NDk6aW50IGFzaXhfbWRpb19idXNfcmVhZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2lkLCBpbnQgcmVnbnVtKVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTUwLXtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01NTItXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1NTM6XHRyZXR1cm4gX19hc2l4X21kaW9fcmVhZChwcml2LVx1MDAzZW5ldCwgcGh5X2lkLCByZWdudW0sIGZhbHNlKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU1NC19XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01NTUtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1NTY6aW50IGFzaXhfbWRpb19idXNfd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9pZCwgaW50IHJlZ251bSwgdTE2IHZhbClcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU1Ny17XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTU5LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTYwOlx0cmV0dXJuIF9fYXNpeF9tZGlvX3dyaXRlKHByaXYtXHUwMDNlbmV0LCBwaHlfaWQsIHJlZ251bSwgdmFsLCBmYWxzZSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01NjEtfVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTYyLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTYzOmludCBhc2l4X21kaW9fcmVhZF9ub3BtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01NjQte1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTY1Olx0cmV0dXJuIF9fYXNpeF9tZGlvX3JlYWQobmV0ZGV2LCBwaHlfaWQsIGxvYywgdHJ1ZSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01NjYtfVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jPTU2OD12b2lkXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1Njk6YXNpeF9tZGlvX3dyaXRlX25vcG0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHBoeV9pZCwgaW50IGxvYywgaW50IHZhbClcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU3MC17XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1NzE6XHRfX2FzaXhfbWRpb193cml0ZShuZXRkZXYsIHBoeV9pZCwgbG9jLCB2YWwsIHRydWUpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTcyLX1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NzA9c3RhdGljIHUzMiBhc2l4X2dldF9waHlpZChzdHJ1Y3QgdXNibmV0ICpkZXYpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzEte1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjcyOlx0aW50IHBoeV9yZWc7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzM6XHR1MzIgcGh5X2lkO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc0LVx0aW50IGk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc3LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgMTAwOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjc4Olx0XHRwaHlfcmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIE1JSV9QSFlTSUQxKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3OTpcdFx0aWYgKHBoeV9yZWcgXHUwMDNjIDApXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODAtXHRcdFx0cmV0dXJuIDA7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODE6XHRcdGlmIChwaHlfcmVnICE9IDAgXHUwMDI2XHUwMDI2IHBoeV9yZWcgIT0gMHhGRkZGKVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgyLVx0XHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04NS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4NjpcdGlmIChwaHlfcmVnIFx1MDAzYz0gMCB8fCBwaHlfcmVnID09IDB4RkZGRilcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04Ny1cdFx0cmV0dXJuIDA7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODgtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODk6XHRwaHlfaWQgPSAocGh5X3JlZyBcdTAwMjYgMHhmZmZmKSBcdTAwM2NcdTAwM2MgMTY7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTAtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTE6XHRwaHlfcmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIE1JSV9QSFlTSUQyKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5MjpcdGlmIChwaHlfcmVnIFx1MDAzYyAwKVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkzLVx0XHRyZXR1cm4gMDtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05NC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5NTpcdHBoeV9pZCB8PSAocGh5X3JlZyBcdTAwMjYgMHhmZmZmKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05Ni1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5NzpcdHJldHVybiBwaHlfaWQ7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTgtfVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xNzc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBheDg4MTcyX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTE4OS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxOTA6c3RhdGljIHZvaWQgYXNpeF9waHlfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2LCB1bnNpZ25lZCBpbnQgcmVzZXRfYml0cylcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xOTEte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xOTMtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTk0Olx0YXNpeF9tZGlvX3dyaXRlKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCBNSUlfQk1DUiwgcmVzZXRfYml0cyk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTk1LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjE5NjpcdC8qIGdpdmUgcGh5X2lkIGEgY2hhbmNlIHRvIHByb2Nlc3MgcmVzZXQgKi9cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xOTctXHR1ZGVsYXkoNTAwKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMjAwLVx0d2hpbGUgKHRpbWVvdXQtLSkge1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjIwMTpcdFx0aWYgKGFzaXhfbWRpb19yZWFkKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCBNSUlfQk1DUilcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yMDItXHRcdFx0XHRcdFx0XHRcdTAwMjYgQk1DUl9SRVNFVClcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMjA3LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjIwODpcdG5ldGRldl9lcnIoZGV2LVx1MDAzZW5ldCwgXCYjMzQ7Qk1DUl9SRVNFVCB0aW1lb3V0IG9uIHBoeV9pZCAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoyMDk6XHRcdCAgIGRldi1cdTAwM2VtaWkucGh5X2lkKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yMTAtfVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0yMTI9c3RhdGljIGludCBheDg4MTcyX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMjUwLVx0ZGV2LVx1MDAzZW1paS5tZGlvX3dyaXRlID0gYXNpeF9tZGlvX3dyaXRlO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjI1MTpcdGRldi1cdTAwM2VtaWkucGh5X2lkX21hc2sgPSAweDNmO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTI1Mi1cdGRldi1cdTAwM2VtaWkucmVnX251bV9tYXNrID0gMHgxZjtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yNTMtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MjU0Olx0ZGV2LVx1MDAzZW1paS5waHlfaWQgPSBhc2l4X3JlYWRfcGh5X2FkZHIoZGV2LCB0cnVlKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoyNTU6XHRpZiAoZGV2LVx1MDAzZW1paS5waHlfaWQgXHUwMDNjIDApXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MjU2Olx0XHRyZXR1cm4gZGV2LVx1MDAzZW1paS5waHlfaWQ7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMjU3LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yNjItXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MjYzOlx0YXNpeF9waHlfcmVzZXQoZGV2LCBCTUNSX1JFU0VUKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoyNjQ6XHRhc2l4X21kaW9fd3JpdGUoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIE1JSV9BRFZFUlRJU0UsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMjY1LVx0XHRBRFZFUlRJU0VfQUxMIHwgQURWRVJUSVNFX0NTTUEgfCBBRFZFUlRJU0VfUEFVU0VfQ0FQKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MzEyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgYXg4ODc3Ml9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMzIxLVx0LnNldF9lZXByb21cdFx0PSBhc2l4X3NldF9lZXByb20sXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MzIyOlx0Lm53YXlfcmVzZXRcdFx0PSBwaHlfZXRodG9vbF9ud2F5X3Jlc2V0LFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjMyMzpcdC5nZXRfbGlua19rc2V0dGluZ3NcdD0gcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjMyNDpcdC5zZXRfbGlua19rc2V0dGluZ3NcdD0gcGh5X2V0aHRvb2xfc2V0X2xpbmtfa3NldHRpbmdzLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTMyNS1cdC5zZWxmX3Rlc3RcdFx0PSBuZXRfc2VsZnRlc3QsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTM2Mj1zdGF0aWMgaW50IGF4ODg3NzJfaHdfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2LCBpbnQgaW5fcG0pXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQwNi1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo0MDc6XHRpZiAoaW5fcG0gXHUwMDI2XHUwMDI2ICghYXNpeF9tZGlvX3JlYWRfbm9wbShkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy00MDgtXHRcdFx0XHRcdCAgIE1JSV9QSFlTSUQxKSkpe1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz00NTY9c3RhdGljIGludCBheDg4NzcyYV9od19yZXNldChzdHJ1Y3QgdXNibmV0ICpkZXYsIGludCBpbl9wbSlcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNDk2LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjQ5NzpcdGlmIChpbl9wbSBcdTAwMjZcdTAwMjYgKCFhc2l4X21kaW9fcmVhZF9ub3BtKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQ5OC1cdFx0XHRcdFx0ICAgTUlJX1BIWVNJRDEpKSkge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MTItXHRcdC8qIENoZWNrIGlmIHRoZSBQSFkgcmVnaXN0ZXJzIGhhdmUgZGVmYXVsdCBzZXR0aW5ncyAqL1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUxMzpcdFx0cGh5MTRoID0gYXNpeF9tZGlvX3JlYWRfbm9wbShkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MTQtXHRcdFx0XHRcdCAgICAgQVg4ODc3MkFfUEhZMTRIKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo1MTU6XHRcdHBoeTE1aCA9IGFzaXhfbWRpb19yZWFkX25vcG0oZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTE2LVx0XHRcdFx0XHQgICAgIEFYODg3NzJBX1BIWTE1SCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NTE3Olx0XHRwaHkxNmggPSBhc2l4X21kaW9fcmVhZF9ub3BtKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUxOC1cdFx0XHRcdFx0ICAgICBBWDg4NzcyQV9QSFkxNkgpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MjUtXHRcdGlmIChwaHkxNGggIT0gQVg4ODc3MkFfUEhZMTRIX0RFRkFVTFQpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NTI2Olx0XHRcdGFzaXhfbWRpb193cml0ZV9ub3BtKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUyNy1cdFx0XHRcdFx0ICAgICBBWDg4NzcyQV9QSFkxNEgsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUyOS1cdFx0aWYgKHBoeTE1aCAhPSBBWDg4NzcyQV9QSFkxNUhfREVGQVVMVClcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo1MzA6XHRcdFx0YXNpeF9tZGlvX3dyaXRlX25vcG0oZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTMxLVx0XHRcdFx0XHQgICAgIEFYODg3NzJBX1BIWTE1SCxcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTMzLVx0XHRpZiAocGh5MTZoICE9IEFYODg3NzJBX1BIWTE2SF9ERUZBVUxUKVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUzNDpcdFx0XHRhc2l4X21kaW9fd3JpdGVfbm9wbShkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MzUtXHRcdFx0XHRcdCAgICAgQVg4ODc3MkFfUEhZMTZILFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz01ODM9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBheDg4NzcyX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTU5MS1cdC5uZG9fdmFsaWRhdGVfYWRkclx0PSBldGhfdmFsaWRhdGVfYWRkcixcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo1OTI6XHQubmRvX2V0aF9pb2N0bFx0XHQ9IHBoeV9kb19pb2N0bF9ydW5uaW5nLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTU5My1cdC5uZG9fc2V0X3J4X21vZGUgICAgICAgID0gYXNpeF9zZXRfbXVsdGljYXN0LFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz02Njk9c3RhdGljIGludCBheDg4NzcyX2luaXRfbWRpbyhzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY4MS1cdHByaXYtXHUwMDNlbWRpby1cdTAwM2VuYW1lID0gXCYjMzQ7QXNpeCBNRElPIEJ1c1wmIzM0OztcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2ODI6XHRwcml2LVx1MDAzZW1kaW8tXHUwMDNlcGh5X21hc2sgPSB+KEJJVChwcml2LVx1MDAzZXBoeV9hZGRyIFx1MDAyNiAweDFmKSB8IEJJVChBWF9FTUJEX1BIWV9BRERSKSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjgzLVx0LyogbWlpIGJ1cyBuYW1lIGlzIHVzYi1cdTAwM2N1c2IgYnVzIG51bWJlclx1MDAzZS1cdTAwM2N1c2IgZGV2aWNlIG51bWJlclx1MDAzZSAqL1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz03MDM9c3RhdGljIGludCBheDg4NzcyX2luaXRfcGh5KHN0cnVjdCB1c2JuZXQgKmRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzA3LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjcwODpcdHByaXYtXHUwMDNlcGh5ZGV2ID0gbWRpb2J1c19nZXRfcGh5KHByaXYtXHUwMDNlbWRpbywgcHJpdi1cdTAwM2VwaHlfYWRkcik7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzA5LVx0aWYgKCFwcml2LVx1MDAzZXBoeWRldikge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MTktXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzIwOlx0cGh5X3N1c3BlbmQocHJpdi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTcyMS1cdHByaXYtXHUwMDNlcGh5ZGV2LVx1MDAzZW1hY19tYW5hZ2VkX3BtID0gdHJ1ZTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MjItXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzIzOlx0cGh5X2F0dGFjaGVkX2luZm8ocHJpdi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTcyNC1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzQxLVx0cHJpdi1cdTAwM2VwaHlkZXZfaW50LVx1MDAzZW1hY19tYW5hZ2VkX3BtID0gdHJ1ZTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3NDI6XHRwaHlfc3VzcGVuZChwcml2LVx1MDAzZXBoeWRldl9pbnQpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc0My1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NzUzPXN0YXRpYyB2b2lkIGF4ODg3NzJfbWFjX2xpbmtfZG93bihzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3NTQ6XHRcdFx0XHQgdW5zaWduZWQgaW50IG1vZGUsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzU1LXtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NzYyPXN0YXRpYyB2b2lkIGF4ODg3NzJfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzYzOlx0XHRcdCAgICAgICBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjc2NDpcdFx0XHQgICAgICAgdW5zaWduZWQgaW50IG1vZGUsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzY1LVx0XHRcdCAgICAgICBpbnQgc3BlZWQsIGludCBkdXBsZXgsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTc5OT1zdGF0aWMgaW50IGF4ODg3NzJfcGh5bGlua19zZXR1cChzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgwMS1cdHN0cnVjdCBhc2l4X2NvbW1vbl9wcml2YXRlICpwcml2ID0gZGV2LVx1MDAzZWRyaXZlcl9wcml2O1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgwMjpcdHBoeV9pbnRlcmZhY2VfdCBwaHlfaWZfbW9kZTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MDMtXHRzdHJ1Y3QgcGh5bGluayAqcGh5bGluaztcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODE1LVx0aWYgKHByaXYtXHUwMDNlZW1iZF9waHkpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODE2Olx0XHRwaHlfaWZfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTDtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MTctXHRlbHNlXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODE4Olx0XHRwaHlfaWZfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9STUlJO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgxOS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MjAtXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cHJpdi1cdTAwM2VwaHlsaW5rX2NvbmZpZywgZGV2LVx1MDAzZW5ldC1cdTAwM2VkZXYuZndub2RlLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgyMTpcdFx0XHRcdCBwaHlfaWZfbW9kZSwgXHUwMDI2YXg4ODc3Ml9waHlsaW5rX21hY19vcHMpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgyMi1cdGlmIChJU19FUlIocGh5bGluaykpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTgyOT1zdGF0aWMgaW50IGF4ODg3NzJfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04NzctXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODc4Olx0cmV0ID0gYXNpeF9yZWFkX3BoeV9hZGRyKGRldiwgdHJ1ZSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODc5LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODgxLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjg4MjpcdHByaXYtXHUwMDNlcGh5X2FkZHIgPSByZXQ7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODgzOlx0cHJpdi1cdTAwM2VlbWJkX3BoeSA9ICgocHJpdi1cdTAwM2VwaHlfYWRkciBcdTAwMjYgMHgxZikgPT0gQVhfRU1CRF9QSFlfQUREUik7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODg0LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05MTMtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTE0Olx0cHJpdi1cdTAwM2VwcmVzdmRfcGh5X2JtY3IgPSAwO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjkxNTpcdHByaXYtXHUwMDNlcHJlc3ZkX3BoeV9hZHZlcnRpc2UgPSAwO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkxNi1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTI2LVx0aWYgKHJldClcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5Mjc6XHRcdGdvdG8gaW5pdHBoeV9lcnI7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTI4LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05MzctXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTM4OmluaXRwaHlfZXJyOlxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkzOS1cdHBoeWxpbmtfZGVzdHJveShwcml2LVx1MDAzZXBoeWxpbmspO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz05NzU9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBheDg4MTc4X2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05ODktXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTkwOnN0YXRpYyBpbnQgbWFydmVsbF9waHlfaW5pdChzdHJ1Y3QgdXNibmV0ICpkZXYpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTkxLXtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTk0LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjk5NTpcdG5ldGRldl9kYmcoZGV2LVx1MDAzZW5ldCwgXCYjMzQ7bWFydmVsbF9waHlfaW5pdCgpXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05OTYtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTk3Olx0cmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIE1JSV9NQVJWRUxMX1NUQVRVUyk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTk4LVx0bmV0ZGV2X2RiZyhkZXYtXHUwMDNlbmV0LCBcJiMzNDtNSUlfTUFSVkVMTF9TVEFUVVMgPSAweCUwNHhcXG5cJiMzNDssIHJlZyk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTk5LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMDA6XHRhc2l4X21kaW9fd3JpdGUoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIE1JSV9NQVJWRUxMX0NUUkwsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAwMS1cdFx0XHRNQVJWRUxMX0NUUkxfUlhERUxBWSB8IE1BUlZFTExfQ1RSTF9UWERFTEFZKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAwMy1cdGlmIChkYXRhLVx1MDAzZWxlZG1vZGUpIHtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDA0Olx0XHRyZWcgPSBhc2l4X21kaW9fcmVhZChkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDA1LVx0XHRcdE1JSV9NQVJWRUxMX0xFRF9DVFJMKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAwOS1cdFx0cmVnIHw9ICgxICYjNDM7IDB4MDEwMCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAxMDpcdFx0YXNpeF9tZGlvX3dyaXRlKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMTEtXHRcdFx0TUlJX01BUlZFTExfTEVEX0NUUkwsIHJlZyk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAxMi1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDEzOlx0XHRyZWcgPSBhc2l4X21kaW9fcmVhZChkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDE0LVx0XHRcdE1JSV9NQVJWRUxMX0xFRF9DVFJMKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAyMC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDIxOnN0YXRpYyBpbnQgcnRsODIxMWNsX3BoeV9pbml0KHN0cnVjdCB1c2JuZXQgKmRldilcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDIyLXtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAyNC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDI1Olx0bmV0ZGV2X2RiZyhkZXYtXHUwMDNlbmV0LCBcJiMzNDtydGw4MjExY2xfcGh5X2luaXQoKVxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAyNi1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDI3Olx0YXNpeF9tZGlvX3dyaXRlIChkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCwgMHgxZiwgMHgwMDA1KTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDI4Olx0YXNpeF9tZGlvX3dyaXRlIChkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCwgMHgwYywgMCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAyOTpcdGFzaXhfbWRpb193cml0ZSAoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIDB4MDEsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAzMDpcdFx0YXNpeF9tZGlvX3JlYWQgKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCAweDAxKSB8IDB4MDA4MCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAzMTpcdGFzaXhfbWRpb193cml0ZSAoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIDB4MWYsIDApO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMzItXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAzMy1cdGlmIChkYXRhLVx1MDAzZWxlZG1vZGUgPT0gMTIpIHtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDM0Olx0XHRhc2l4X21kaW9fd3JpdGUgKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCAweDFmLCAweDAwMDIpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMzU6XHRcdGFzaXhfbWRpb193cml0ZSAoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIDB4MWEsIDB4MDBjYik7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAzNjpcdFx0YXNpeF9tZGlvX3dyaXRlIChkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCwgMHgxZiwgMCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAzNy1cdH1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MTA0Mj1zdGF0aWMgaW50IG1hcnZlbGxfbGVkX3N0YXR1cyhzdHJ1Y3QgdXNibmV0ICpkZXYsIHUxNiBzcGVlZClcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDQzLXtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDQ0Olx0dTE2IHJlZyA9IGFzaXhfbWRpb19yZWFkKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCBNQVJWRUxMX0xFRF9NQU5VQUwpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwNDUtXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwNjItXHRuZXRkZXZfZGJnKGRldi1cdTAwM2VuZXQsIFwmIzM0O21hcnZlbGxfbGVkX3N0YXR1cygpIHdyaXRpbmcgMHglMDR4XFxuXCYjMzQ7LCByZWcpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwNjM6XHRhc2l4X21kaW9fd3JpdGUoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIE1BUlZFTExfTEVEX01BTlVBTCwgcmVnKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDY0LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xMDY4PXN0YXRpYyBpbnQgYXg4ODE3OF9yZXNldChzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTExMzUtXHRpZiAoZGF0YS1cdTAwM2VwaHltb2RlID09IFBIWV9NT0RFX01BUlZFTEwpIHtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMTM2Olx0XHRtYXJ2ZWxsX3BoeV9pbml0KGRldik7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTEzNy1cdFx0bXNsZWVwKDYwKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMTM4LVx0fSBlbHNlIGlmIChkYXRhLVx1MDAzZXBoeW1vZGUgPT0gUEhZX01PREVfUlRMODIxMUNMKVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjExMzk6XHRcdHJ0bDgyMTFjbF9waHlfaW5pdChkZXYpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTExNDAtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTE0MTpcdGFzaXhfcGh5X3Jlc2V0KGRldiwgQk1DUl9SRVNFVCB8IEJNQ1JfQU5FTkFCTEUpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjExNDI6XHRhc2l4X21kaW9fd3JpdGUoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIE1JSV9BRFZFUlRJU0UsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTE0My1cdFx0XHRBRFZFUlRJU0VfQUxMIHwgQURWRVJUSVNFX0NTTUEgfCBBRFZFUlRJU0VfUEFVU0VfQ0FQKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMTQ0Olx0YXNpeF9tZGlvX3dyaXRlKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCBNSUlfQ1RSTDEwMDAsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTE0NS1cdFx0XHRBRFZFUlRJU0VfMTAwMEZVTEwpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xMjcxPXN0YXRpYyBpbnQgYXg4ODE3OF9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEyOTItXHRkZXYtXHUwMDNlbWlpLm1kaW9fd3JpdGUgPSBhc2l4X21kaW9fd3JpdGU7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTI5MzpcdGRldi1cdTAwM2VtaWkucGh5X2lkX21hc2sgPSAweDFmO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEyOTQtXHRkZXYtXHUwMDNlbWlpLnJlZ19udW1fbWFzayA9IDB4ZmY7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEyOTYtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTI5NzpcdGRldi1cdTAwM2VtaWkucGh5X2lkID0gYXNpeF9yZWFkX3BoeV9hZGRyKGRldiwgdHJ1ZSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTI5ODpcdGlmIChkZXYtXHUwMDNlbWlpLnBoeV9pZCBcdTAwM2MgMClcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMjk5Olx0XHRyZXR1cm4gZGV2LVx1MDAzZW1paS5waHlfaWQ7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTMwMC1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYz0xOD1zdHJ1Y3QgYXg4ODE3MmFfcHJpdmF0ZSB7XG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy0xOS1cdHN0cnVjdCBtaWlfYnVzICptZGlvO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxNjM3CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBBWDg4MTcyIERyaXZlciBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIEFYODgxNzIgZHJpdmVyLCBhbmQgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoZSBjaG9pY2UgYmV0d2VlbiBgYXg4ODE3Ml9iaW5kYCBhbmQgYGF4ODg3NzJfaW5pdF9tZGlvYC4gIE15IGd1dCB0ZWxscyBtZSBgYXg4ODc3Ml9pbml0X21kaW9gIGlzIHByb2JhYmx5IHdoZXJlIHRoZSBNRElPIGJ1cyBpbml0aWFsaXphdGlvbiBoYXBwZW5zLiBTbywgSSYjMzk7bSBoZWFkaW5nIHRoZXJlIGZpcnN0LiBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIE1ESU8gYnVzIGlzIGJlaW5nIHJlZ2lzdGVyZWQgYW5kIHNjYW5uZWQg4oCTIHVuZGVyc3RhbmRpbmcgdGhhdCBwYXJ0IGlzIGtleSB0byBmaWd1cmluZyBvdXQgdGhlIHdob2xlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGFuZCBob3cgdGhlIFBIWSBpcyBiZWluZyBoYW5kbGVkLiBUaGlzIGlzIGxpa2VseSB0aGUgY3J1Y2lhbCBzdGVwLiBMZXQgbWUgZ28gdGFrZSBhIGxvb2sgYXQgaXQuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWRpb2J1c19yZWdpc3RlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NjY5PXN0YXRpYyBpbnQgYXg4ODc3Ml9pbml0X21kaW8oc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy02ODYtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6Njg3Olx0cmV0ID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVx1MDAzZW1kaW8pO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY4OC1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYz02MT1zdGF0aWMgaW50IGF4ODgxNzJhX2luaXRfbWRpbyhzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtNzktXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzo4MDpcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIocHJpdi1cdTAwM2VtZGlvKTtcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTgxLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9MjA5MT1zdGF0aWMgaW50IGxhbjc4eHhfbWRpb19pbml0KHN0cnVjdCBsYW43OHh4X25ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjEyMS1cdG5vZGUgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShkZXYtXHUwMDNldWRldi1cdTAwM2VkZXYub2Zfbm9kZSwgXCYjMzQ7bWRpb1wmIzM0Oyk7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjIxMjI6XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGRldi1cdTAwM2VtZGlvYnVzLCBub2RlKTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjEyMy1cdG9mX25vZGVfcHV0KG5vZGUpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jPTExNDc9c3RhdGljIGludCBzbXNjOTV4eF9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMTI0MS1cbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jOjEyNDI6XHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKHBkYXRhLVx1MDAzZW1kaW9idXMpO1xuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMTI0My1cdGlmIChyZXQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI0MjYKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAxMDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50KioKCk9rYXksIHNvIEkmIzM5O20gc2VlaW5nIGBtZGlvYnVzX3JlZ2lzdGVyYCBiZWluZyB1c2VkIGluIHNldmVyYWwgVVNCIGV0aGVybmV0IGRyaXZlciBjb250ZXh0cyDigJMgYHNtc2M5NXh4YCwgYGFzaXhfZGV2aWNlc2AsIGBheDg4MTcyYWAsIHRoYXQgc29ydCBvZiB0aGluZy4gSW50ZXJlc3RpbmcuIEFuZCB0aGVuIHRoZXJlJiMzOTtzIGEgY29ubmVjdGlvbiB0byBzeXprYWxsZXIgYW5kIGl0cyBVU0IgZW11bGF0aW9uIGNhcGFiaWxpdGllcywgc3BlY2lmaWNhbGx5IHRoZSByYXctZ2FkZ2V0LCB1c2JpcCwgYW5kIGR1bW15X2hjZCBzZXR1cHMuIFRoaXMgaXMgbWFraW5nIG1lIHRoaW5rIGFib3V0IGhvdyB0aGUgcGh5c2ljYWwgbGF5ZXIgaXMgZXhwb3NlZCBmb3IgdGhlc2UgZGV2aWNlcy4KCk15IGltbWVkaWF0ZSBuZXh0IHRob3VnaHQgaXMgdG8gZHJpbGwgZG93biBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgbWRpb2J1c19yZWdpc3RlcmAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgTURJTyBidXMgaXMgYWN0dWFsbHkgcmVnaXN0ZXJlZCwgaG93IGl0JiMzOTtzIGhhbmRsZWQgYXQgdGhlIGRyaXZlciBsZXZlbCwgdGhlIGNvbm5lY3Rpb24gdGhhdCYjMzk7cyBiZWluZyBtYWRlLiBTcGVjaWZpY2FsbHksIEkgc2hvdWxkIGxvb2sgaW4gdGhlIGBkcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuY2AgZmlsZSDigJMgb3Igd2hlcmV2ZXIgdGhlIE1ESU8gYnVzIHJlZ2lzdHJhdGlvbiBsb2dpYyBhY3R1YWxseSBsaXZlcyBpbiB0aGUga2VybmVsIHNvdXJjZSwgaXQgbWF5IGhhdmUgbW92ZWQuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHVuZGVyIHRoZSBob29kLiBUaGlzIG1pZ2h0IHJldmVhbCBzb21lIHZ1bG5lcmFiaWxpdGllcyBvciBwb3RlbnRpYWwgYXJlYXMgZm9yIGZ1enppbmcsIGdpdmVuIHRoZSBzeXprYWxsZXIgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19tZGlvYnVzX3JlZ2lzdGVyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21kaW8vYWNwaV9tZGlvLmM9MzI9aW50IF9fYWNwaV9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICptZGlvLCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vYWNwaV9tZGlvLmMtNDAtXHRtZGlvLVx1MDAzZXBoeV9tYXNrID0gR0VOTUFTSygzMSwgMCk7XG5kcml2ZXJzL25ldC9tZGlvL2FjcGlfbWRpby5jOjQxOlx0cmV0ID0gX19tZGlvYnVzX3JlZ2lzdGVyKG1kaW8sIG93bmVyKTtcbmRyaXZlcnMvbmV0L21kaW8vYWNwaV9tZGlvLmMtNDItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jPTE5NT1pbnQgX19vZl9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICptZGlvLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTIwMi1cdGlmICghbnApXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzoyMDM6XHRcdHJldHVybiBfX21kaW9idXNfcmVnaXN0ZXIobWRpbywgb3duZXIpO1xuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMjA0LVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTIyMS1cdC8qIFJlZ2lzdGVyIHRoZSBNRElPIGJ1cyAqL1xuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6MjIyOlx0cmMgPSBfX21kaW9idXNfcmVnaXN0ZXIobWRpbywgb3duZXIpO1xuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMjIzLVx0aWYgKHJjKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jPTUyNT1zdGF0aWMgYm9vbCBtZGlvYnVzX3ByZXZlbnRfYzQ1X3NjYW4oc3RydWN0IG1paV9idXMgKmJ1cylcbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy01MzktLyoqXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo1NDA6ICogX19tZGlvYnVzX3JlZ2lzdGVyIC0gYnJpbmcgdXAgYWxsIHRoZSBQSFlzIG9uIGEgZ2l2ZW4gYnVzIGFuZCBhdHRhY2ggdGhlbSB0byBidXNcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTU0MS0gKiBAYnVzOiB0YXJnZXQgbWlpX2J1c1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTU0NS0gKiAgIG9uIGEgZ2l2ZW4gYnVzLCBhbmQgYXR0YWNoIHRoZW0gdG8gdGhlIGJ1cy4gRHJpdmVycyBzaG91bGQgdXNlXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo1NDY6ICogICBtZGlvYnVzX3JlZ2lzdGVyKCkgcmF0aGVyIHRoYW4gX19tZGlvYnVzX3JlZ2lzdGVyKCkgdW5sZXNzIHRoZXlcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTU0Ny0gKiAgIG5lZWQgdG8gcGFzcyBhIHNwZWNpZmljIG93bmVyIG1vZHVsZS4gTURJTyBkZXZpY2VzIHdoaWNoIGFyZSBub3Rcbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy01NTItICovXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo1NTM6aW50IF9fbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBzdHJ1Y3QgbW9kdWxlICpvd25lcilcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTU1NC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNjY2LX1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjY2NzpFWFBPUlRfU1lNQk9MKF9fbWRpb2J1c19yZWdpc3Rlcik7XG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy02NjgtXG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2cmVzLmM9NzM9aW50IF9fZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG1paV9idXMgKmJ1cyxcbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZyZXMuYy04Ni1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldnJlcy5jOjg3Olx0cmV0ID0gX19tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgb3duZXIpO1xuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2cmVzLmMtODgtXHRpZiAocmV0KSB7XG4tLVxuaW5jbHVkZS9saW51eC9waHkuaD00NDI9c3RhdGljIGlubGluZSBzdHJ1Y3QgbWlpX2J1cyAqbWRpb2J1c19hbGxvYyh2b2lkKVxuLS1cbmluY2x1ZGUvbGludXgvcGh5LmgtNDQ2LVxuaW5jbHVkZS9saW51eC9waHkuaDo0NDc6aW50IF9fbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBzdHJ1Y3QgbW9kdWxlICpvd25lcik7XG5pbmNsdWRlL2xpbnV4L3BoeS5oLTQ0OC1pbnQgX19kZXZtX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgbWlpX2J1cyAqYnVzLFxuaW5jbHVkZS9saW51eC9waHkuaC00NDktXHRcdFx0ICAgIHN0cnVjdCBtb2R1bGUgKm93bmVyKTtcbmluY2x1ZGUvbGludXgvcGh5Lmg6NDUwOiNkZWZpbmUgbWRpb2J1c19yZWdpc3RlcihidXMpIF9fbWRpb2J1c19yZWdpc3RlcihidXMsIFRISVNfTU9EVUxFKVxuaW5jbHVkZS9saW51eC9waHkuaC00NTEtI2RlZmluZSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMpIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzODg2CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMzg0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgUEhZIEZpeHVwIFBhdGNoKioKCk9rYXksIGhlcmUmIzM5O3MgdGhlIGJyZWFrZG93bi4gVGhpcyBwYXRjaCBwcmltYXJpbHkgY29uY2VybnMgdGhlIFBIWSAoUGh5c2ljYWwgTGF5ZXIpIGZpeHVwIG1lY2hhbmlzbSB3aXRoaW4gdGhlIG5ldHdvcmtpbmcgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgdGhlIFBIWSBsaWJyYXJ5LiBJdCYjMzk7cyBhYm91dCBob3cgdGhlIGtlcm5lbCBoYW5kbGVzIHNwZWNpZmljIGhhcmR3YXJlIHF1aXJrcyBhbmQgd29ya2Fyb3VuZHMgZm9yIHZhcmlvdXMgUEhZIGRldmljZXMuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIHdlbnQgbGlrZSB0aGlzOiBgX19tZGlvYnVzX3JlZ2lzdGVyYCBpcyB0aGUgZW50cnkgcG9pbnQsIGFuZCBpdCBsZWFkcyB0byBQSFkgcHJvYmluZyBhbmQgcmVnaXN0cmF0aW9uLCB3aGljaCBpbiB0dXJuIGludm9sdmVzIGBwaHlfc2Nhbl9maXh1cHNgLiBUaGUgZml4dXAgaXMgY2FsbGVkIGZyb20gYHBoeV9kZXZpY2VfcmVnaXN0ZXJgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHRoaXMgc3BlY2lmaWMgcGF0Y2ggaXMgYWN0dWFsbHkgY2hhbmdpbmcuIEkgcmUtZXhhbWluZWQgdGhlIHBhdGNoIHRvIHVuZGVyc3RhbmQgdGhlIG1vZGlmaWNhdGlvbnMuCgpUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmaWxlLCBgcGh5X2ZpeHVwLmNgLCBhbmQgbW9kaWZpZXMgYGRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZWAgYW5kIGBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jYC4gTG9va2luZyBjYXJlZnVsbHksIGl0IGFwcGVhcnMgdGhlIHBhdGNoIGlzIHJlbW92aW5nIHRoZSBvbGQgaW4tcGxhY2UgaW1wbGVtZW50YXRpb24gb2YgYHBoeV9yZWdpc3Rlcl9maXh1cGAgZXRjLiBhbmQgbW92aW5nIHRoZSBpbXBsZW1lbnRhdGlvbiBpbnRvIGEgc2VwYXJhdGUgZmlsZSAoYHBoeV9maXh1cC5jYCkuIFRoZSBjb2RlIHRvIHJlZ2lzdGVyIGZpeHVwcyBpcyBub3cgYF9faW5pdGAsIG1lYW5pbmcgaXQgaGFwcGVucyBvbmx5IGR1cmluZyBib290LCBub3QgZHluYW1pY2FsbHkgYXQgcnVudGltZS4gVGhlIHByZXZpb3VzIGNhbGxzIHRvIGBwaHlfcmVnaXN0ZXJfZml4dXBfKmAgd2VyZSBkb25lIHZpYSBgRVhQT1JUX1NZTUJPTGAsIHdoaWNoIGhhcyBiZWVuIHJlbW92ZWQuCgpIZXJlJiMzOTtzIHRoZSBjcml0aWNhbCBiaXQ6IHRoZSBmdW5jdGlvbnMgYHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfdWlkYCBhbmQgYHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWRgIGFuZCBgcGh5X3JlZ2lzdGVyX2ZpeHVwYCBhcmUgTkVWRVIgdXNlZCBvbiB0aGUgYW1kNjQgYXJjaGl0ZWN0dXJlLiBJIHZlcmlmaWVkIHRoaXMgYnkgY2hlY2tpbmcgdGhlIGNhbGxlcnMgb2YgdGhvc2UgZnVuY3Rpb25zIHdoaWNoIGFyZSBmb3VuZCBvbmx5IG9uIEFSTSBhbmQgUG93ZXJQQyBwbGF0Zm9ybXMuIFRoZSBgcGh5X2ZpeHVwX2xpc3RgIGlzIGFsd2F5cyBlbXB0eSBvbiBhbWQ2NCBkdXJpbmcgcnVudGltZS4gU2luY2UgaXQmIzM5O3MgZW1wdHksIGFuZCB0aGUgbGlzdCBpcyByZWFkLW9ubHkgYWZ0ZXIgaW5pdCwgYHBoeV9zY2FuX2ZpeHVwc2AgZG9lcyBub3RoaW5nIG1vcmUgdGhhbiByZXR1cm4gMC4gVGhlIHJlbW92YWwgb2YgdGhlIG11dGV4IGlzIG5vdCBhbiBpc3N1ZSBiZWNhdXNlIHRoZXJlIGlzIG5vIHJlZ2lzdHJhdGlvbiBoYXBwZW5pbmcgYWZ0ZXIgaW5pdGlhbGl6YXRpb24uCgpFZmZlY3RpdmVseSwgb24gYW1kNjQsIHRoZSBmdW5jdGlvbmFsaXR5IGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGlzIGEgbm8tb3A7IHRoZSBjb2RlIHBhdGhzIHJlbGF0ZWQgdG8gZml4dXBzIGFyZSBub3QgZXhlY3V0ZWQuIFRoZSBjaGFuZ2UgaXMgc2FmZSBmb3IgYW1kNjQsIGFzIHRoZXJlIGFyZSBubyBjYWxscyBhbmQgbm8gZGVwZW5kZW5jaWVzIG9uIGFtZDY0LiBUaGVyZWZvcmUsIHRoZSBwYXRjaCBhcHBlYXJzIHRvIGJlIGEgY2xlYW4tdXAgYW5kIHJlZmFjdG9yaW5nLCByZWxldmFudCBvbmx5IHRvIHNwZWNpZmljLCBub24tYW1kNjQgYXJjaGl0ZWN0dXJlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5X3JlZ2lzdGVyX2ZpeHVwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0PTUyNz1UaGUgcGxhdGZvcm0gY29kZSBjYW4gcmVnaXN0ZXIgdGhlIGZpeHVwIHVzaW5nIG9uZSBvZjo6XG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdC01MjgtXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdDo1Mjk6IGludCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZCh1MzIgcGh5X3VpZCwgdTMyIHBoeV91aWRfbWFzayxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0LTUzMC1cdFx0aW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSk7XG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdDo1MzE6IGludCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX2lkKGNvbnN0IGNoYXIgKnBoeV9pZCxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0LTUzMi1cdFx0aW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSk7XG4tLVxuYXJjaC9hcm0vbWFjaC1pbXgvbWFjaC1pbXg2cS5jPTcxPXN0YXRpYyB2b2lkIF9faW5pdCBpbXg2cV9lbmV0X3BoeV9pbml0KHZvaWQpXG4tLVxuYXJjaC9hcm0vbWFjaC1pbXgvbWFjaC1pbXg2cS5jLTczLVx0aWYgKElTX0JVSUxUSU4oQ09ORklHX1BIWUxJQikpIHtcbmFyY2gvYXJtL21hY2gtaW14L21hY2gtaW14NnEuYzo3NDpcdFx0cGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQoUEhZX0lEX0tTWjkwMjEsIE1JQ1JFTF9QSFlfSURfTUFTSyxcbmFyY2gvYXJtL21hY2gtaW14L21hY2gtaW14NnEuYy03NS1cdFx0XHRcdGtzejkwMjFybl9waHlfZml4dXApO1xuLS1cbmFyY2gvYXJtL21hY2gtaW14L21hY2gtaW14N2QuYz0zMD1zdGF0aWMgdm9pZCBfX2luaXQgaW14N2RfZW5ldF9waHlfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtaW14L21hY2gtaW14N2QuYy0zMi1cdGlmIChJU19CVUlMVElOKENPTkZJR19QSFlMSUIpKSB7XG5hcmNoL2FybS9tYWNoLWlteC9tYWNoLWlteDdkLmM6MzM6XHRcdHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfdWlkKFBIWV9JRF9CQ001NDIyMCwgMHhmZmZmZmZmZixcbmFyY2gvYXJtL21hY2gtaW14L21hY2gtaW14N2QuYy0zNC1cdFx0XHRcdFx0ICAgYmNtNTQyMjBfcGh5X2ZpeHVwKTtcbi0tXG5hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jPTI1OD1zdGF0aWMgdm9pZCBfX2luaXQgYXB4NGRldmtpdF9pbml0KHZvaWQpXG4tLVxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYy0yNjItXHRpZiAoSVNfQlVJTFRJTihDT05GSUdfUEhZTElCKSlcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmM6MjYzOlx0XHRwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZChQSFlfSURfS1NaODA1MSwgTUlDUkVMX1BIWV9JRF9NQVNLLFxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYy0yNjQtXHRcdFx0XHRcdCAgIGFweDRkZXZraXRfcGh5X2ZpeHVwKTtcbi0tXG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvZG5zMzIzLXNldHVwLmM9NjEyPXN0YXRpYyB2b2lkIF9faW5pdCBkbnMzMjNfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtb3Jpb241eC9kbnMzMjMtc2V0dXAuYy02NzctXHRcdFx0YnJlYWs7XG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvZG5zMzIzLXNldHVwLmM6Njc4Olx0XHRwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZChNQVJWRUxMX1BIWV9JRF84OEUxMTE4LFxuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L2RuczMyMy1zZXR1cC5jLTY3OS1cdFx0XHRcdFx0ICAgTUFSVkVMTF9QSFlfSURfTUFTSyxcbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzg1eHgvbXBjODV4eF9tZHMuYz0yODI9c3RhdGljIGludCBfX2luaXQgYm9hcmRfZml4dXBzKHZvaWQpXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84NXh4L21wYzg1eHhfbWRzLmMtMjk2LVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84NXh4L21wYzg1eHhfbWRzLmM6Mjk3Olx0XHRwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX2lkKHBoeV9pZCwgbXBjODU2OF9maXh1cF8xMjVfY2xvY2spO1xuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84NXh4L21wYzg1eHhfbWRzLmM6Mjk4Olx0XHRwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX2lkKHBoeV9pZCwgbXBjODU2OF9tZHNfcGh5X2ZpeHVwcyk7XG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzg1eHgvbXBjODV4eF9tZHMuYy0yOTktXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84NXh4L21wYzg1eHhfbWRzLmMtMzAyLVx0XHRcdCh1bnNpZ25lZCBsb25nIGxvbmcpcmVzLnN0YXJ0LCA3KTtcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODV4eC9tcGM4NXh4X21kcy5jOjMwMzpcdFx0cGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZChwaHlfaWQsIG1wYzg1NjhfbWRzX3BoeV9maXh1cHMpO1xuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84NXh4L21wYzg1eHhfbWRzLmMtMzA0LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYz0xNj1zdHJ1Y3QgcGh5X2ZpeHVwIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMtMjQtLyoqXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmM6MjU6ICogcGh5X3JlZ2lzdGVyX2ZpeHVwIC0gY3JlYXRlcyBhIG5ldyBwaHlfZml4dXAgYW5kIGFkZHMgaXQgdG8gdGhlIGxpc3RcbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYy0yNi0gKiBAYnVzX2lkOiBBIHN0cmluZyB3aGljaCBtYXRjaGVzIHBoeWRldi1cdTAwM2VtZGlvLmRldi5idXNfaWQgKG9yIFBIWV9BTllfSUQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTMyLSAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jOjMzOnN0YXRpYyB2b2lkIF9faW5pdCBwaHlfcmVnaXN0ZXJfZml4dXAoY29uc3QgY2hhciAqYnVzX2lkLCB1MzIgcGh5X3VpZCxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYy0zNC1cdFx0XHRcdCAgICAgIHUzMiBwaHlfdWlkX21hc2ssXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTUxLS8qIFJlZ2lzdGVycyBhIGZpeHVwIHRvIGJlIHJ1biBvbiBhbnkgUEhZIHdpdGggdGhlIFVJRCBpbiBwaHlfdWlkICovXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmM6NTI6dm9pZCBfX2luaXQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQodTMyIHBoeV91aWQsIHUzMiBwaHlfdWlkX21hc2ssXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMtNTMtXHRcdFx0XHQgICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSlcbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYy01NC17XG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmM6NTU6XHRwaHlfcmVnaXN0ZXJfZml4dXAoTlVMTCwgcGh5X3VpZCwgcGh5X3VpZF9tYXNrLCBydW4pO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTU2LX1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMtNTgtLyogUmVnaXN0ZXJzIGEgZml4dXAgdG8gYmUgcnVuIG9uIHRoZSBQSFkgd2l0aCBpZCBzdHJpbmcgYnVzX2lkICovXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmM6NTk6dm9pZCBfX2luaXQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZChjb25zdCBjaGFyICpidXNfaWQsXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMtNjAtXHRcdFx0XHQgICAgICBpbnQgKCpydW4pKHN0cnVjdCBwaHlfZGV2aWNlICopKVxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTYxLXtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYzo2MjpcdHBoeV9yZWdpc3Rlcl9maXh1cChidXNfaWQsIDAsIDAsIHJ1bik7XG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMtNjMtfVxuLS1cbmluY2x1ZGUvbGludXgvcGh5Lmg9MjQyMj12b2lkIHBoeV9yZXNvbHZlX3BhdXNlKHVuc2lnbmVkIGxvbmcgKmxvY2FsX2FkdiwgdW5zaWduZWQgbG9uZyAqcGFydG5lcl9hZHYsXG4tLVxuaW5jbHVkZS9saW51eC9waHkuaC0yNDI0LVxuaW5jbHVkZS9saW51eC9waHkuaDoyNDI1OnZvaWQgX19pbml0IHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWQoY29uc3QgY2hhciAqYnVzX2lkLFxuaW5jbHVkZS9saW51eC9waHkuaC0yNDI2LVx0XHRcdFx0ICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSk7XG5pbmNsdWRlL2xpbnV4L3BoeS5oOjI0Mjc6dm9pZCBfX2luaXQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQodTMyIHBoeV91aWQsIHUzMiBwaHlfdWlkX21hc2ssXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTI0MjgtXHRcdFx0XHQgICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwMTg0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIFBIWSBGaXh1cHMqKgoKT2theSwgc28gSSBuZWVkIGEgcmVmcmVzaGVyIG9uIFBIWSBmaXh1cHMuIExldCYjMzk7cyBzZWUuLi4gdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyB0aGUgZG9jdW1lbnRhdGlvbi4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBoZWFkIG92ZXIgdG8gYERvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0YC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgY29yZSBuZXR3b3JraW5nIGRvY3VtZW50YXRpb24gbGl2ZXMsIHNvIGl0JiMzOTtzIGEgc2FmZSBiZXQgdGhhdCBQSFktcmVsYXRlZCBpbmZvcm1hdGlvbiB3aWxsIGJlIHRoZXJlLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGEgc29saWQgb3ZlcnZpZXcgb2Ygd2hhdCB0aGVzZSBmaXh1cHMgYWN0dWFsbHkgKmRvKiwgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhlbSwgYW5kIGhvcGVmdWxseSwgc29tZSBleGFtcGxlcyBvZiBjb21tb24gc2NlbmFyaW9zIHdoZXJlIHRoZXkmIzM5O3JlIG5lY2Vzc2FyeS4gSSYjMzk7bSBhbHNvIGhvcGluZyBmb3IgbGlua3MgdG8gcmVsZXZhbnQgY29kZSwgbWF5YmUgc29tZSBkaXNjdXNzaW9ucyBvbiBiZXN0IHByYWN0aWNlcywgYW5kIHBvdGVudGlhbGx5IHNvbWUgcG9pbnRlcnMgdG8gdGhlIGtlcm5lbCBpbmZyYXN0cnVjdHVyZSBpbnZvbHZlZC4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gZmlndXJpbmcgb3V0IHRoZSBkZXNpZ24gcHJpbmNpcGxlcyBiZWhpbmQgdGhlIGZpeHVwcy4uLiB0aGUgZ2VuZXJhbCBtZXRob2RvbG9neSBmb3IgYWRkcmVzc2luZyBpc3N1ZXMgd2l0aCBkaWZmZXJlbnQgUEhZIGltcGxlbWVudGF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDUxNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNTE1Olx0Zml4dXBzIHRvIGJlIHJ1biB3aGVuIHRoZSBQSFkgaXMgYnJvdWdodCB1cCAob3Igc3Vic2VxdWVudGx5IHJlc2V0KS5cbiA1MTY6XHRcbiA1MTc6XHRXaGVuIHRoZSBQSFkgTGF5ZXIgYnJpbmdzIHVwIGEgUEhZIGl0IGNoZWNrcyB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBmaXh1cHNcbiA1MTg6XHRyZWdpc3RlcmVkIGZvciBpdCwgbWF0Y2hpbmcgYmFzZWQgb24gVUlEIChjb250YWluZWQgaW4gdGhlIFBIWSBkZXZpY2UmIzM5O3MgcGh5X2lkXG4gNTE5Olx0ZmllbGQpIGFuZCB0aGUgYnVzIGlkZW50aWZpZXIgKGNvbnRhaW5lZCBpbiBwaHlkZXYtXHUwMDNlZGV2LmJ1c19pZCkuICBCb3RoIG11c3RcbiA1MjA6XHRtYXRjaCwgaG93ZXZlciB0d28gY29uc3RhbnRzLCBQSFlfQU5ZX0lEIGFuZCBQSFlfQU5ZX1VJRCwgYXJlIHByb3ZpZGVkIGFzXG4gNTIxOlx0d2lsZGNhcmRzIGZvciB0aGUgYnVzIElEIGFuZCBVSUQsIHJlc3BlY3RpdmVseS5cbiA1MjI6XHRcbiA1MjM6XHRXaGVuIGEgbWF0Y2ggaXMgZm91bmQsIHRoZSBQSFkgbGF5ZXIgd2lsbCBpbnZva2UgdGhlIHJ1biBmdW5jdGlvbiBhc3NvY2lhdGVkXG4gNTI0Olx0d2l0aCB0aGUgZml4dXAuICBUaGlzIGZ1bmN0aW9uIGlzIHBhc3NlZCBhIHBvaW50ZXIgdG8gdGhlIHBoeV9kZXZpY2Ugb2ZcbiA1MjU6XHRpbnRlcmVzdC4gIEl0IHNob3VsZCB0aGVyZWZvcmUgb25seSBvcGVyYXRlIG9uIHRoYXQgUEhZLlxuIDUyNjpcdFxuIDUyNzpcdFRoZSBwbGF0Zm9ybSBjb2RlIGNhbiByZWdpc3RlciB0aGUgZml4dXAgdXNpbmcgb25lIG9mOjpcbiA1Mjg6XHRcbiA1Mjk6XHQgaW50IHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfdWlkKHUzMiBwaHlfdWlkLCB1MzIgcGh5X3VpZF9tYXNrLFxuIDUzMDpcdFx0XHRpbnQgKCpydW4pKHN0cnVjdCBwaHlfZGV2aWNlICopKTtcbiA1MzE6XHQgaW50IHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWQoY29uc3QgY2hhciAqcGh5X2lkLFxuIDUzMjpcdFx0XHRpbnQgKCpydW4pKHN0cnVjdCBwaHlfZGV2aWNlICopKTtcbiA1MzM6XHRcbiA1MzQ6XHRTdGFuZGFyZHNcbiA1MzU6XHQ9PT09PT09PT1cbiA1MzY6XHRcbiA1Mzc6XHRJRUVFIFN0YW5kYXJkIDgwMi4zOiBDU01BL0NEIEFjY2VzcyBNZXRob2QgYW5kIFBoeXNpY2FsIExheWVyIFNwZWNpZmljYXRpb25zLCBTZWN0aW9uIFR3bzpcbiA1Mzg6XHRodHRwOi8vc3RhbmRhcmRzLmllZWUub3JnL2dldGllZWU4MDIvZG93bmxvYWQvODAyLjMtMjAwOF9zZWN0aW9uMi5wZGZcbiA1Mzk6XHRcbiA1NDA6XHRSR01JSSB2MS4zOlxuIDU0MTpcdGh0dHA6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTYwMzAzMjEyNjI5L2h0dHA6Ly93d3cuaHAuY29tL3JuZC9wZGZzL1JHTUlJdjFfMy5wZGZcbiA1NDI6XHRcbiA1NDM6XHRSR01JSSB2Mi4wOlxuIDU0NDpcdGh0dHA6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTYwMzAzMTcxMzI4L2h0dHA6Ly93d3cuaHAuY29tL3JuZC9wZGZzL1JHTUlJdjJfMF9maW5hbF9ocC5wZGZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDEwNTIKCQkJCQkJCW91dHB1dDogMTkyCgkJCQkJCQl0aG91Z2h0czogMjc0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiBQSFkgRml4dXAgUGF0Y2ggZm9yIEZ1enppbmcgU3VpdGFiaWxpdHkqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhpcyBjb21taXQuIEl0IGFwcGVhcnMgdG8gaW52b2x2ZSBjaGFuZ2VzIHRvIFBIWSAoUGh5c2ljYWwgTGF5ZXIpIGRldmljZSBmaXh1cHMgd2l0aGluIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gdGhlIHJlZ2lzdHJhdGlvbiBhbmQgZXhlY3V0aW9uIG9mIHRoZXNlIGZpeHVwcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gZmxvdyBhbmQgaWRlbnRpZnkgaWYgYW55IGNvZGUgbW9kaWZpY2F0aW9ucyBpbnRyb2R1Y2UgbmV3IHZ1bG5lcmFiaWxpdGllcyBvciByZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzIGZvciB0aGUgYW1kNjQgYXJjaGl0ZWN0dXJlLCB3aGljaCBpcyBvdXIgdGFyZ2V0LgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGNoYW5nZXM6IFdlIGhhdmUgYWx0ZXJhdGlvbnMgaW4gYGRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZWAsIGBwaHlfZGV2aWNlLmNgLCBhbmQgYSAqbmV3KiBgcGh5X2ZpeHVwLmNgIGZpbGUsIGFsb25nIHdpdGggYWRqdXN0bWVudHMgdG8gYHBoeWxpYi1pbnRlcm5hbC5oYCBhbmQgYGxpbnV4L3BoeS5oYC4gVGhpcyBzdWdnZXN0cyBhIHJlZmFjdG9yaW5nIG9mIGZpeHVwIHJlZ2lzdHJhdGlvbiBhbmQgaGFuZGxpbmcuIEkgbm90ZSB0aGUgcmVtb3ZhbCBvZiBhIG11dGV4IGluIGBwaHlfc2Nhbl9maXh1cHNgLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyB3aGV0aGVyIHRoaXMgY3JlYXRlcyBhbnkgcmFjZSBjb25kaXRpb25zIG9yIG5ldyBleGVjdXRpb24gZmxvd3Mgb24gYGFtZDY0YC4KClRoZSBjb3JlIHRyaWFnZSBwaGlsb3NvcGh5IHN0YXRlcyByZWFjaGFiaWxpdHkgaXMgdGhlIHByaW1hcnkgZ2F0ZS4gSSYjMzk7dmUgZ290IHRvIGVuc3VyZSB0aGUgbW9kaWZpZWQgY29kZSBjYW4gKmFjdHVhbGx5KiBleGVjdXRlIGluIG91ciBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFVucmVhY2hhYmxlIGNvZGUgKm11c3Qgbm90KiBiZSBmdXp6ZWQuCgpNeSBwcmltYXJ5IGZvY3VzIGlzIG9uIGBwaHlfcmVnaXN0ZXJfZml4dXBgLCBgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWRgLCBgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZGAsIGFuZCBgcGh5X25lZWRzX2ZpeHVwYC4gQXJlIHRoZXNlIGZ1bmN0aW9ucyBjYWxsZWQgb24gYGFtZDY0YD8gTGV0JiMzOTtzIGNoZWNrLiBBaCwgaXQgbG9va3MgbGlrZSBgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWRgIGFuZCBgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZGAgYXJlIG9ubHkgY2FsbGVkIGZyb20gd2l0aGluIEFSTSBhbmQgUG93ZXJQQy1zcGVjaWZpYyBib2FyZCBpbml0aWFsaXphdGlvbiBjb2RlLiBUaGVzZSBhcmNoaXRlY3R1cmVzIGFyZSBub3QgcmVsZXZhbnQgdG8gb3VyIHRhcmdldCBvZiBhbWQ2NC4gQWRkaXRpb25hbGx5LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGRlZmluaXRpb24uIFRoZXkmIzM5O3JlIG1hcmtlZCBhcyBgX19pbml0YCBmdW5jdGlvbnMgYW5kIG5vdCBleHBvcnRlZCB3aGljaCBjb25maXJtcyBteSBpbml0aWFsIHRob3VnaHRzLiBUaGVyZWZvcmUsIHRoZXNlIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMgYXJlICpuZXZlciogY2FsbGVkLCBub3IgYXZhaWxhYmxlIHRvIGxvYWQgb24gYGFtZDY0YC4KCklmIHRoZSByZWdpc3RyYXRpb24gZnVuY3Rpb25zIGFyZSBuZXZlciBjYWxsZWQgb24gYGFtZDY0YCwgdGhlbiB0aGUgYHBoeV9maXh1cF9saXN0YCAqbXVzdCogYWx3YXlzIGJlIGVtcHR5IG9uIGBhbWQ2NGAuIFRoaXMgaXMgY3JpdGljYWwuCgpOb3csIGxldCYjMzk7cyBleGFtaW5lIGBwaHlfc2Nhbl9maXh1cHNgLiBJdCYjMzk7cyBjcnVjaWFsIHRvIGV2YWx1YXRlIGlmIHRoZSByZW1vdmFsIG9mIHRoZSBtdXRleCBpbiB0aGlzIGZ1bmN0aW9uIG9wZW5zIGFueSBzZWN1cml0eSBpbXBsaWNhdGlvbnMgb24gYGFtZDY0YC4gSXQgd2lsbCBiZSBjYWxsZWQgKmlmKiBhbnkgUEhZIGlzIHJlZ2lzdGVyZWQgb3Igc2Nhbm5lZC4gU2luY2UgYHBoeV9maXh1cF9saXN0YCBpcyBhbHdheXMgZW1wdHkgb24gYGFtZDY0YCwgdGhlIGxvb3AgYm9keSB3aXRoaW4gYHBoeV9zY2FuX2ZpeHVwc2AgaXMgbmV2ZXIgZXhlY3V0ZWQuIEl0JiMzOTtzIGVmZmVjdGl2ZWx5IGp1c3QgYSBjaGVjayBmb3IgYW4gZW1wdHkgbGlzdCBhbmQgYSByZXR1cm4gMC4gVGhlIHBhdGNoIHJlbW92ZWQgYSBtdXRleCBpbiB0aGlzIGZ1bmN0aW9uLCBidXQgaXQgaXMgZW50aXJlbHkgaXJyZWxldmFudCBzaW5jZSBgcGh5X3NjYW5fZml4dXBzYCBkb2VzIHZpcnR1YWxseSBub3RoaW5nLgoKU28sIG9uIGBhbWQ2NGAsIHdoYXQgaXMgcmVhY2hhYmxlOgoqICBgcGh5X3NjYW5fZml4dXBzKClgIGlzIGNhbGxlZCwgY2hlY2tzIHRoZSBlbXB0eSBgcGh5X2ZpeHVwX2xpc3RgLCBhbmQgcmV0dXJucyAwLgoKQmFzZWQgb24gdGhlIGluc3RydWN0aW9ucywgc2luY2UgYWxsIHRoZSBtb2RpZmllZCBjb2RlIHN0cmljdGx5IGZhbGxzIGludG8gdGhlIG5lZ2F0aXZlIGNyaXRlcmlhIGRlc2NyaWJlZCAoc3BlY2lmaWNhbGx5ICYjMzQ7Y29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlJiMzNDsgYW5kIHRodXMgJiMzNDt1bnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHMmIzM0OykgQU5EIGdpdmVuIHRoZSBzcGVjaWZpYyByZWFjaGFiaWxpdHkgY3JpdGVyaWEsIGZ1enppbmcgdGhpcyBwYXRjaCB3b3VsZCBiZSBhIHdhc3RlIG9mIHRpbWUgYW5kIGNvbXB1dGF0aW9uYWwgcmVzb3VyY2VzLiBgV29ydGhGdXp6aW5nYCBtdXN0IGJlIHNldCB0byBgZmFsc2VgLgoKRnVydGhlcm1vcmUsIEkgaGF2ZSB2ZXJpZmllZCB0aGlzIGNvbmNsdXNpb24gbWVldHMgYWxsIHJlcXVpcmVtZW50cyB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZXh0cmFjdHMgUEhZIGZpeHVwIHJlZ2lzdHJhdGlvbiBpbnRvIGRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYyBhbmQgbWFya3MgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucyBhcyBfX2luaXQuIFRoZSBvbmx5IGNhbGxlcnMgb2YgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQoKSBhbmQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZCgpIGluIHRoZSBrZXJuZWwgYXJlIHBsYXRmb3JtLXNwZWNpZmljIGVhcmx5LWJvb3QgY29kZSBvbiBBUk0gKGFyY2gvYXJtL21hY2gtKikgYW5kIFBvd2VyUEMgKGFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvKiksIHdpdGggbm8gY2FsbGVycyBvbiBhbWQ2NC4gTmVpdGhlciBmdW5jdGlvbiBpcyBleHBvcnRlZCB0byBtb2R1bGVzLiBDb25zZXF1ZW50bHksIG9uIGFtZDY0LCBwaHlfZml4dXBfbGlzdCBpcyBwZXJtYW5lbnRseSBlbXB0eSwgcmVuZGVyaW5nIHRoZSBtYXRjaGluZyBsb2dpYyAocGh5X25lZWRzX2ZpeHVwKSBhbmQgZml4dXAgZXhlY3V0aW9uIHBhdGggaW5zaWRlIHBoeV9zY2FuX2ZpeHVwcygpIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4gRnV6emluZyBvbiBhbWQ2NCBjYW5ub3QgZXhlcmNpc2UgdGhlIG1vZGlmaWVkIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZXh0cmFjdHMgUEhZIGZpeHVwIHJlZ2lzdHJhdGlvbiBpbnRvIGRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYyBhbmQgbWFya3MgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucyBhcyBfX2luaXQuIFRoZSBvbmx5IGNhbGxlcnMgb2YgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQoKSBhbmQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZCgpIGluIHRoZSBrZXJuZWwgYXJlIHBsYXRmb3JtLXNwZWNpZmljIGVhcmx5LWJvb3QgY29kZSBvbiBBUk0gKGFyY2gvYXJtL21hY2gtKikgYW5kIFBvd2VyUEMgKGFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvKiksIHdpdGggbm8gY2FsbGVycyBvbiBhbWQ2NC4gTmVpdGhlciBmdW5jdGlvbiBpcyBleHBvcnRlZCB0byBtb2R1bGVzLiBDb25zZXF1ZW50bHksIG9uIGFtZDY0LCBwaHlfZml4dXBfbGlzdCBpcyBwZXJtYW5lbnRseSBlbXB0eSwgcmVuZGVyaW5nIHRoZSBtYXRjaGluZyBsb2dpYyAocGh5X25lZWRzX2ZpeHVwKSBhbmQgZml4dXAgZXhlY3V0aW9uIHBhdGggaW5zaWRlIHBoeV9zY2FuX2ZpeHVwcygpIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4gRnV6emluZyBvbiBhbWQ2NCBjYW5ub3QgZXhlcmNpc2UgdGhlIG1vZGlmaWVkIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6MjI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDIwOjIwOjUzLjA2MzYwMjAyN1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5OTcyMTYyMjM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZXh0cmFjdHMgUEhZIGZpeHVwIHJlZ2lzdHJhdGlvbiBpbnRvIGRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYyBhbmQgbWFya3MgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucyBhcyBfX2luaXQuIFRoZSBvbmx5IGNhbGxlcnMgb2YgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQoKSBhbmQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZCgpIGluIHRoZSBrZXJuZWwgYXJlIHBsYXRmb3JtLXNwZWNpZmljIGVhcmx5LWJvb3QgY29kZSBvbiBBUk0gKGFyY2gvYXJtL21hY2gtKikgYW5kIFBvd2VyUEMgKGFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvKiksIHdpdGggbm8gY2FsbGVycyBvbiBhbWQ2NC4gTmVpdGhlciBmdW5jdGlvbiBpcyBleHBvcnRlZCB0byBtb2R1bGVzLiBDb25zZXF1ZW50bHksIG9uIGFtZDY0LCBwaHlfZml4dXBfbGlzdCBpcyBwZXJtYW5lbnRseSBlbXB0eSwgcmVuZGVyaW5nIHRoZSBtYXRjaGluZyBsb2dpYyAocGh5X25lZWRzX2ZpeHVwKSBhbmQgZml4dXAgZXhlY3V0aW9uIHBhdGggaW5zaWRlIHBoeV9zY2FuX2ZpeHVwcygpIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4gRnV6emluZyBvbiBhbWQ2NCBjYW5ub3QgZXhlcmNpc2UgdGhlIG1vZGlmaWVkIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6MjA6NTMuMDYzNjA2NjU3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODg4ODA3NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAzMzU5NjM5MDIyYzk4YjRhNGM4OTUzMDMyNTRiMWY2NmIxMWNhMTk3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gU2VwIDEzIDIwOjIwOjUyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZSBiL2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZVxcbmluZGV4IGUyM2RmNWU4MzZlOWUuLjQ2NzRlYWYyNDNlYmEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlXFxuQEAgLTgsNyArOCw3IEBAIGxpYnBoeS15XFx0XFx0XFx0Oj0gcGh5Lm8gcGh5LWM0NS5vIHBoeS1jb3JlLm8gcGh5X2RldmljZS5vIFxcXFxcXG4gXFxuIGlmZGVmIENPTkZJR19QSFlMSUJcXG4gIyBidWlsdC1pbiB3aGVuZXZlciBQSFlMSUIgaXMgYnVpbHQtaW4gb3IgbW9kdWxlXFxuLW9iai15XFx0XFx0XFx0XFx0Kz0gc3R1YnMub1xcbitvYmoteVxcdFxcdFxcdFxcdCs9IHN0dWJzLm8gcGh5X2ZpeHVwLm9cXG4gZW5kaWZcXG4gXFxuIGxpYnBoeS0kKENPTkZJR19TV1BIWSlcXHRcXHQrPSBzd3BoeS5vXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXFxuaW5kZXggOTRiMmU4NWUwMGEzNy4uMjdjMGNiMTM4NjBiNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xcbkBAIC00OSwxNCArNDksNiBAQCBNT0RVTEVfREVTQ1JJUFRJT04oXFxcIlBIWSBsaWJyYXJ5XFxcIik7XFxuIE1PRFVMRV9BVVRIT1IoXFxcIkFuZHkgRmxlbWluZ1xcXCIpO1xcbiBNT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuIFxcbi1zdHJ1Y3QgcGh5X2ZpeHVwIHtcXG4tXFx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xcbi1cXHRjaGFyIGJ1c19pZFtNSUlfQlVTX0lEX1NJWkUgKyAzXTtcXG4tXFx0dTMyIHBoeV91aWQ7XFxuLVxcdHUzMiBwaHlfdWlkX21hc2s7XFxuLVxcdGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XFxuLX07XFxuLVxcbiBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZ2VucGh5X2M0NV9kcml2ZXIgPSB7XFxuIFxcdC5waHlfaWQgICAgICAgICA9IDB4ZmZmZmZmZmYsXFxuIFxcdC5waHlfaWRfbWFzayAgICA9IDB4ZmZmZmZmZmYsXFxuQEAgLTIzNyw5ICsyMjksNiBAQCBzdGF0aWMgdm9pZCBwaHlfbWRpb19kZXZpY2VfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG4gXFxuIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBnZW5waHlfZHJpdmVyO1xcbiBcXG4tc3RhdGljIExJU1RfSEVBRChwaHlfZml4dXBfbGlzdCk7XFxuLXN0YXRpYyBERUZJTkVfTVVURVgocGh5X2ZpeHVwX2xvY2spO1xcbi1cXG4gc3RhdGljIGJvb2wgcGh5X2Rydl93b2xfZW5hYmxlZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiB7XFxuIFxcdHN0cnVjdCBldGh0b29sX3dvbGluZm8gd29sID0geyAuY21kID0gRVRIVE9PTF9HV09MIH07XFxuQEAgLTQyNyw4NSArNDE2LDYgQEAgc3RhdGljIF9fbWF5YmVfdW51c2VkIGludCBtZGlvX2J1c19waHlfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gc3RhdGljIFNJTVBMRV9ERVZfUE1fT1BTKG1kaW9fYnVzX3BoeV9wbV9vcHMsIG1kaW9fYnVzX3BoeV9zdXNwZW5kLFxcbiBcXHRcXHRcXHQgbWRpb19idXNfcGh5X3Jlc3VtZSk7XFxuIFxcbi0vKipcXG4tICogcGh5X3JlZ2lzdGVyX2ZpeHVwIC0gY3JlYXRlcyBhIG5ldyBwaHlfZml4dXAgYW5kIGFkZHMgaXQgdG8gdGhlIGxpc3RcXG4tICogQGJ1c19pZDogQSBzdHJpbmcgd2hpY2ggbWF0Y2hlcyBwaHlkZXYtXFx1MDAzZW1kaW8uZGV2LmJ1c19pZCAob3IgTlVMTClcXG4tICogQHBoeV91aWQ6IFVzZWQgdG8gbWF0Y2ggYWdhaW5zdCBwaHlkZXYtXFx1MDAzZXBoeV9pZCAodGhlIFVJRCBvZiB0aGUgUEhZKVxcbi0gKiBAcGh5X3VpZF9tYXNrOiBBcHBsaWVkIHRvIHBoeWRldi1cXHUwMDNlcGh5X2lkIGFuZCBmaXh1cC1cXHUwMDNlcGh5X3VpZCBiZWZvcmVcXG4tICpcXHRjb21wYXJpc29uIChvciAwIHRvIGRpc2FibGUgaWQtYmFzZWQgbWF0Y2hpbmcpXFxuLSAqIEBydW46IFRoZSBhY3R1YWwgY29kZSB0byBiZSBydW4gd2hlbiBhIG1hdGNoaW5nIFBIWSBpcyBmb3VuZFxcbi0gKi9cXG4tc3RhdGljIGludCBwaHlfcmVnaXN0ZXJfZml4dXAoY29uc3QgY2hhciAqYnVzX2lkLCB1MzIgcGh5X3VpZCwgdTMyIHBoeV91aWRfbWFzayxcXG4tXFx0XFx0XFx0ICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSlcXG4te1xcbi1cXHRzdHJ1Y3QgcGh5X2ZpeHVwICpmaXh1cCA9IGt6YWxsb2Nfb2JqKCpmaXh1cCk7XFxuLVxcbi1cXHRpZiAoIWZpeHVwKVxcbi1cXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4tXFxuLVxcdGlmIChidXNfaWQpXFxuLVxcdFxcdHN0cnNjcHkoZml4dXAtXFx1MDAzZWJ1c19pZCwgYnVzX2lkLCBzaXplb2YoZml4dXAtXFx1MDAzZWJ1c19pZCkpO1xcbi1cXHRmaXh1cC1cXHUwMDNlcGh5X3VpZCA9IHBoeV91aWQ7XFxuLVxcdGZpeHVwLVxcdTAwM2VwaHlfdWlkX21hc2sgPSBwaHlfdWlkX21hc2s7XFxuLVxcdGZpeHVwLVxcdTAwM2VydW4gPSBydW47XFxuLVxcbi1cXHRtdXRleF9sb2NrKFxcdTAwMjZwaHlfZml4dXBfbG9jayk7XFxuLVxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNmZpeHVwLVxcdTAwM2VsaXN0LCBcXHUwMDI2cGh5X2ZpeHVwX2xpc3QpO1xcbi1cXHRtdXRleF91bmxvY2soXFx1MDAyNnBoeV9maXh1cF9sb2NrKTtcXG4tXFxuLVxcdHJldHVybiAwO1xcbi19XFxuLVxcbi0vKiBSZWdpc3RlcnMgYSBmaXh1cCB0byBiZSBydW4gb24gYW55IFBIWSB3aXRoIHRoZSBVSUQgaW4gcGh5X3VpZCAqL1xcbi1pbnQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQodTMyIHBoeV91aWQsIHUzMiBwaHlfdWlkX21hc2ssXFxuLVxcdFxcdFxcdCAgICAgICBpbnQgKCpydW4pKHN0cnVjdCBwaHlfZGV2aWNlICopKVxcbi17XFxuLVxcdHJldHVybiBwaHlfcmVnaXN0ZXJfZml4dXAoTlVMTCwgcGh5X3VpZCwgcGh5X3VpZF9tYXNrLCBydW4pO1xcbi19XFxuLUVYUE9SVF9TWU1CT0wocGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQpO1xcbi1cXG4tLyogUmVnaXN0ZXJzIGEgZml4dXAgdG8gYmUgcnVuIG9uIHRoZSBQSFkgd2l0aCBpZCBzdHJpbmcgYnVzX2lkICovXFxuLWludCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX2lkKGNvbnN0IGNoYXIgKmJ1c19pZCxcXG4tXFx0XFx0XFx0ICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSlcXG4te1xcbi1cXHRyZXR1cm4gcGh5X3JlZ2lzdGVyX2ZpeHVwKGJ1c19pZCwgMCwgMCwgcnVuKTtcXG4tfVxcbi1FWFBPUlRfU1lNQk9MKHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWQpO1xcbi1cXG4tc3RhdGljIGJvb2wgcGh5X25lZWRzX2ZpeHVwKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHN0cnVjdCBwaHlfZml4dXAgKmZpeHVwKVxcbi17XFxuLVxcdGlmICghc3RyY21wKGZpeHVwLVxcdTAwM2VidXNfaWQsIHBoeWRldl9uYW1lKHBoeWRldikpKVxcbi1cXHRcXHRyZXR1cm4gdHJ1ZTtcXG4tXFxuLVxcdGlmIChmaXh1cC1cXHUwMDNlcGh5X3VpZF9tYXNrIFxcdTAwMjZcXHUwMDI2XFxuLVxcdCAgICBwaHlfaWRfY29tcGFyZShwaHlkZXYtXFx1MDAzZXBoeV9pZCwgZml4dXAtXFx1MDAzZXBoeV91aWQsIGZpeHVwLVxcdTAwM2VwaHlfdWlkX21hc2spKVxcbi1cXHRcXHRyZXR1cm4gdHJ1ZTtcXG4tXFxuLVxcdHJldHVybiBmYWxzZTtcXG4tfVxcbi1cXG4tLyogUnVucyBhbnkgbWF0Y2hpbmcgZml4dXBzIGZvciB0aGlzIHBoeWRldiAqL1xcbi1zdGF0aWMgaW50IHBoeV9zY2FuX2ZpeHVwcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi17XFxuLVxcdHN0cnVjdCBwaHlfZml4dXAgKmZpeHVwO1xcbi1cXG4tXFx0bXV0ZXhfbG9jayhcXHUwMDI2cGh5X2ZpeHVwX2xvY2spO1xcbi1cXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGZpeHVwLCBcXHUwMDI2cGh5X2ZpeHVwX2xpc3QsIGxpc3QpIHtcXG4tXFx0XFx0aWYgKHBoeV9uZWVkc19maXh1cChwaHlkZXYsIGZpeHVwKSkge1xcbi1cXHRcXHRcXHRpbnQgZXJyID0gZml4dXAtXFx1MDAzZXJ1bihwaHlkZXYpO1xcbi1cXG4tXFx0XFx0XFx0aWYgKGVyciBcXHUwMDNjIDApIHtcXG4tXFx0XFx0XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwaHlfZml4dXBfbG9jayk7XFxuLVxcdFxcdFxcdFxcdHJldHVybiBlcnI7XFxuLVxcdFxcdFxcdH1cXG4tXFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2VoYXNfZml4dXBzID0gdHJ1ZTtcXG4tXFx0XFx0fVxcbi1cXHR9XFxuLVxcdG11dGV4X3VubG9jayhcXHUwMDI2cGh5X2ZpeHVwX2xvY2spO1xcbi1cXG4tXFx0cmV0dXJuIDA7XFxuLX1cXG4tXFxuIC8qKlxcbiAgKiBnZW5waHlfbWF0Y2hfcGh5X2RldmljZSAtIG1hdGNoIGEgUEhZIGRldmljZSB3aXRoIGEgUEhZIGRyaXZlclxcbiAgKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3RcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwLi5mNDlmYzRjZWZlODE3XFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuY1xcbkBAIC0wLDAgKzEsOTkgQEBcXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXJcXG4rLypcXG4rICogUEhZIGZpeHVwIHN1cHBvcnRcXG4rICovXFxuK1xcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvbGlzdC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcGh5LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9zbGFiLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9zdHJpbmcuaFxcdTAwM2VcXG4rXFxuKyNpbmNsdWRlIFxcXCJwaHlsaWItaW50ZXJuYWwuaFxcXCJcXG4rXFxuK3N0YXRpYyBzdHJ1Y3QgbGlzdF9oZWFkIHBoeV9maXh1cF9saXN0IF9fcm9fYWZ0ZXJfaW5pdCA9XFxuK1xcdExJU1RfSEVBRF9JTklUKHBoeV9maXh1cF9saXN0KTtcXG4rXFxuK3N0cnVjdCBwaHlfZml4dXAge1xcbitcXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7XFxuK1xcdGNoYXIgYnVzX2lkW01JSV9CVVNfSURfU0laRSArIDNdO1xcbitcXHR1MzIgcGh5X3VpZDtcXG4rXFx0dTMyIHBoeV91aWRfbWFzaztcXG4rXFx0aW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcXG4rfTtcXG4rXFxuKy8qKlxcbisgKiBwaHlfcmVnaXN0ZXJfZml4dXAgLSBjcmVhdGVzIGEgbmV3IHBoeV9maXh1cCBhbmQgYWRkcyBpdCB0byB0aGUgbGlzdFxcbisgKiBAYnVzX2lkOiBBIHN0cmluZyB3aGljaCBtYXRjaGVzIHBoeWRldi1cXHUwMDNlbWRpby5kZXYuYnVzX2lkIChvciBQSFlfQU5ZX0lEKVxcbisgKiBAcGh5X3VpZDogVXNlZCB0byBtYXRjaCBhZ2FpbnN0IHBoeWRldi1cXHUwMDNlcGh5X2lkICh0aGUgVUlEIG9mIHRoZSBQSFkpXFxuKyAqXFx0SXQgY2FuIGFsc28gYmUgUEhZX0FOWV9VSURcXG4rICogQHBoeV91aWRfbWFzazogQXBwbGllZCB0byBwaHlkZXYtXFx1MDAzZXBoeV9pZCBhbmQgZml4dXAtXFx1MDAzZXBoeV91aWQgYmVmb3JlXFxuKyAqXFx0Y29tcGFyaXNvblxcbisgKiBAcnVuOiBUaGUgYWN0dWFsIGNvZGUgdG8gYmUgcnVuIHdoZW4gYSBtYXRjaGluZyBQSFkgaXMgZm91bmRcXG4rICovXFxuK3N0YXRpYyB2b2lkIF9faW5pdCBwaHlfcmVnaXN0ZXJfZml4dXAoY29uc3QgY2hhciAqYnVzX2lkLCB1MzIgcGh5X3VpZCxcXG4rXFx0XFx0XFx0XFx0ICAgICAgdTMyIHBoeV91aWRfbWFzayxcXG4rXFx0XFx0XFx0XFx0ICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSlcXG4re1xcbitcXHRzdHJ1Y3QgcGh5X2ZpeHVwICpmaXh1cCA9IGt6YWxsb2Nfb2JqKCpmaXh1cCk7XFxuK1xcbitcXHRpZiAoIWZpeHVwKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRpZiAoYnVzX2lkKVxcbitcXHRcXHRzdHJzY3B5KGZpeHVwLVxcdTAwM2VidXNfaWQsIGJ1c19pZCk7XFxuK1xcdGZpeHVwLVxcdTAwM2VwaHlfdWlkID0gcGh5X3VpZDtcXG4rXFx0Zml4dXAtXFx1MDAzZXBoeV91aWRfbWFzayA9IHBoeV91aWRfbWFzaztcXG4rXFx0Zml4dXAtXFx1MDAzZXJ1biA9IHJ1bjtcXG4rXFxuK1xcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNmZpeHVwLVxcdTAwM2VsaXN0LCBcXHUwMDI2cGh5X2ZpeHVwX2xpc3QpO1xcbit9XFxuK1xcbisvKiBSZWdpc3RlcnMgYSBmaXh1cCB0byBiZSBydW4gb24gYW55IFBIWSB3aXRoIHRoZSBVSUQgaW4gcGh5X3VpZCAqL1xcbit2b2lkIF9faW5pdCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZCh1MzIgcGh5X3VpZCwgdTMyIHBoeV91aWRfbWFzayxcXG4rXFx0XFx0XFx0XFx0ICAgICAgIGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpXFxuK3tcXG4rXFx0cGh5X3JlZ2lzdGVyX2ZpeHVwKE5VTEwsIHBoeV91aWQsIHBoeV91aWRfbWFzaywgcnVuKTtcXG4rfVxcbitcXG4rLyogUmVnaXN0ZXJzIGEgZml4dXAgdG8gYmUgcnVuIG9uIHRoZSBQSFkgd2l0aCBpZCBzdHJpbmcgYnVzX2lkICovXFxuK3ZvaWQgX19pbml0IHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWQoY29uc3QgY2hhciAqYnVzX2lkLFxcbitcXHRcXHRcXHRcXHQgICAgICBpbnQgKCpydW4pKHN0cnVjdCBwaHlfZGV2aWNlICopKVxcbit7XFxuK1xcdHBoeV9yZWdpc3Rlcl9maXh1cChidXNfaWQsIDAsIDAsIHJ1bik7XFxuK31cXG4rXFxuK3N0YXRpYyBib29sIHBoeV9uZWVkc19maXh1cChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBzdHJ1Y3QgcGh5X2ZpeHVwICpmaXh1cClcXG4re1xcbitcXHRpZiAoIXN0cmNtcChmaXh1cC1cXHUwMDNlYnVzX2lkLCBwaHlkZXZfbmFtZShwaHlkZXYpKSlcXG4rXFx0XFx0cmV0dXJuIHRydWU7XFxuK1xcbitcXHRpZiAoZml4dXAtXFx1MDAzZXBoeV91aWRfbWFzayBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgcGh5X2lkX2NvbXBhcmUocGh5ZGV2LVxcdTAwM2VwaHlfaWQsIGZpeHVwLVxcdTAwM2VwaHlfdWlkLCBmaXh1cC1cXHUwMDNlcGh5X3VpZF9tYXNrKSlcXG4rXFx0XFx0cmV0dXJuIHRydWU7XFxuK1xcbitcXHRyZXR1cm4gZmFsc2U7XFxuK31cXG4rXFxuKy8qKlxcbisgKiBwaHlfc2Nhbl9maXh1cHMgLSBydW5zIGFueSBtYXRjaGluZyBmaXh1cHMgZm9yIHRoaXMgcGh5ZGV2XFxuKyAqIEBwaHlkZXY6IHRoZSBwaHlkZXYgdG8gc2VhcmNoIGFuZCBydW4gZml4dXBzIGZvclxcbisgKiBSZXR1cm5zOiAwIG9yIGFuIGVycm5vXFxuKyAqL1xcbitpbnQgcGh5X3NjYW5fZml4dXBzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuK3tcXG4rXFx0c3RydWN0IHBoeV9maXh1cCAqZml4dXA7XFxuK1xcbitcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGZpeHVwLCBcXHUwMDI2cGh5X2ZpeHVwX2xpc3QsIGxpc3QpIHtcXG4rXFx0XFx0aWYgKHBoeV9uZWVkc19maXh1cChwaHlkZXYsIGZpeHVwKSkge1xcbitcXHRcXHRcXHRpbnQgZXJyID0gZml4dXAtXFx1MDAzZXJ1bihwaHlkZXYpO1xcbitcXG4rXFx0XFx0XFx0aWYgKGVyciBcXHUwMDNjIDApXFxuK1xcdFxcdFxcdFxcdHJldHVybiBlcnI7XFxuK1xcbitcXHRcXHRcXHRwaHlkZXYtXFx1MDAzZWhhc19maXh1cHMgPSB0cnVlO1xcbitcXHRcXHR9XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK0VYUE9SVF9TWU1CT0xfR1BMKHBoeV9zY2FuX2ZpeHVwcyk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaWItaW50ZXJuYWwuaCBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaWItaW50ZXJuYWwuaFxcbmluZGV4IDY2NGVkN2ZhYTUxODQuLjM4ZWUyOTRmM2M5NjIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpYi1pbnRlcm5hbC5oXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpYi1pbnRlcm5hbC5oXFxuQEAgLTIzLDYgKzIzLDcgQEAgdm9pZCBvZl9zZXRfcGh5X2VlZV9icm9rZW4oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XFxuIHZvaWQgb2Zfc2V0X3BoeV90aW1pbmdfcm9sZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcXG4gaW50IHBoeV9zcGVlZF9kb3duX2NvcmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XFxuIHZvaWQgcGh5X2NoZWNrX2Rvd25zaGlmdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcXG4raW50IHBoeV9zY2FuX2ZpeHVwcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcXG4gXFxuIGludCBtZGlvYnVzX3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpO1xcbiBpbnQgbWRpb2J1c191bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpO1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BoeS5oIGIvaW5jbHVkZS9saW51eC9waHkuaFxcbmluZGV4IDVmOGQ2NTg2OGUwZmYuLmY3OTliMzY4NGNkZGUgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9waHkuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvcGh5LmhcXG5AQCAtMjQyMiwxMCArMjQyMiwxMCBAQCBpbnQgcGh5X2dldF9tYWNfdGVybWluYXRpb24oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgc3RydWN0IGRldmljZSAqZGV2LFxcbiB2b2lkIHBoeV9yZXNvbHZlX3BhdXNlKHVuc2lnbmVkIGxvbmcgKmxvY2FsX2FkdiwgdW5zaWduZWQgbG9uZyAqcGFydG5lcl9hZHYsXFxuIFxcdFxcdCAgICAgICBib29sICp0eF9wYXVzZSwgYm9vbCAqcnhfcGF1c2UpO1xcbiBcXG4taW50IHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWQoY29uc3QgY2hhciAqYnVzX2lkLFxcbi1cXHRcXHRcXHQgICAgICBpbnQgKCpydW4pKHN0cnVjdCBwaHlfZGV2aWNlICopKTtcXG4taW50IHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfdWlkKHUzMiBwaHlfdWlkLCB1MzIgcGh5X3VpZF9tYXNrLFxcbi1cXHRcXHRcXHQgICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSk7XFxuK3ZvaWQgX19pbml0IHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWQoY29uc3QgY2hhciAqYnVzX2lkLFxcbitcXHRcXHRcXHRcXHQgICAgICBpbnQgKCpydW4pKHN0cnVjdCBwaHlfZGV2aWNlICopKTtcXG4rdm9pZCBfX2luaXQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQodTMyIHBoeV91aWQsIHUzMiBwaHlfdWlkX21hc2ssXFxuK1xcdFxcdFxcdFxcdCAgICAgICBpbnQgKCpydW4pKHN0cnVjdCBwaHlfZGV2aWNlICopKTtcXG4gXFxuIGludCBwaHlfZWVlX3R4X2Nsb2NrX3N0b3BfY2FwYWJsZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcXG4gaW50IHBoeV9lZWVfcnhfY2xvY2tfc3RvcChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sIGNsa19zdG9wX2VuYWJsZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDIwOjIwOjUzLjQ1MzMwOTgwOVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6Njk1ODI0Mzk1NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGV4dHJhY3RzIFBIWSBmaXh1cCByZWdpc3RyYXRpb24gaW50byBkcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMgYW5kIG1hcmtzIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMgYXMgX19pbml0LiBUaGUgb25seSBjYWxsZXJzIG9mIHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfdWlkKCkgYW5kIHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWQoKSBpbiB0aGUga2VybmVsIGFyZSBwbGF0Zm9ybS1zcGVjaWZpYyBlYXJseS1ib290IGNvZGUgb24gQVJNIChhcmNoL2FybS9tYWNoLSopIGFuZCBQb3dlclBDIChhcmNoL3Bvd2VycGMvcGxhdGZvcm1zLyopLCB3aXRoIG5vIGNhbGxlcnMgb24gYW1kNjQuIE5laXRoZXIgZnVuY3Rpb24gaXMgZXhwb3J0ZWQgdG8gbW9kdWxlcy4gQ29uc2VxdWVudGx5LCBvbiBhbWQ2NCwgcGh5X2ZpeHVwX2xpc3QgaXMgcGVybWFuZW50bHkgZW1wdHksIHJlbmRlcmluZyB0aGUgbWF0Y2hpbmcgbG9naWMgKHBoeV9uZWVkc19maXh1cCkgYW5kIGZpeHVwIGV4ZWN1dGlvbiBwYXRoIGluc2lkZSBwaHlfc2Nhbl9maXh1cHMoKSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuIEZ1enppbmcgb24gYW1kNjQgY2Fubm90IGV4ZXJjaXNlIHRoZSBtb2RpZmllZCBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMzM1OTYzOTAyMmM5OGI0YTRjODk1MzAzMjU0YjFmNjZiMTFjYTE5N1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gU2VwIDEzIDIwOjIwOjUyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlIGIvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlXG5pbmRleCBlMjNkZjVlODM2ZTllLi40Njc0ZWFmMjQzZWJhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlXG4rKysgYi9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGVcbkBAIC04LDcgKzgsNyBAQCBsaWJwaHkteVx0XHRcdDo9IHBoeS5vIHBoeS1jNDUubyBwaHktY29yZS5vIHBoeV9kZXZpY2UubyBcXFxuIFxuIGlmZGVmIENPTkZJR19QSFlMSUJcbiAjIGJ1aWx0LWluIHdoZW5ldmVyIFBIWUxJQiBpcyBidWlsdC1pbiBvciBtb2R1bGVcbi1vYmoteVx0XHRcdFx0Kz0gc3R1YnMub1xuK29iai15XHRcdFx0XHQrPSBzdHVicy5vIHBoeV9maXh1cC5vXG4gZW5kaWZcbiBcbiBsaWJwaHktJChDT05GSUdfU1dQSFkpXHRcdCs9IHN3cGh5Lm9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuaW5kZXggOTRiMmU4NWUwMGEzNy4uMjdjMGNiMTM4NjBiNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbkBAIC00OSwxNCArNDksNiBAQCBNT0RVTEVfREVTQ1JJUFRJT04oXCJQSFkgbGlicmFyeVwiKTtcbiBNT0RVTEVfQVVUSE9SKFwiQW5keSBGbGVtaW5nXCIpO1xuIE1PRFVMRV9MSUNFTlNFKFwiR1BMXCIpO1xuIFxuLXN0cnVjdCBwaHlfZml4dXAge1xuLVx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xuLVx0Y2hhciBidXNfaWRbTUlJX0JVU19JRF9TSVpFICsgM107XG4tXHR1MzIgcGh5X3VpZDtcbi1cdHUzMiBwaHlfdWlkX21hc2s7XG4tXHRpbnQgKCpydW4pKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuLX07XG4tXG4gc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGdlbnBoeV9jNDVfZHJpdmVyID0ge1xuIFx0LnBoeV9pZCAgICAgICAgID0gMHhmZmZmZmZmZixcbiBcdC5waHlfaWRfbWFzayAgICA9IDB4ZmZmZmZmZmYsXG5AQCAtMjM3LDkgKzIyOSw2IEBAIHN0YXRpYyB2b2lkIHBoeV9tZGlvX2RldmljZV9yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuIFxuIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBnZW5waHlfZHJpdmVyO1xuIFxuLXN0YXRpYyBMSVNUX0hFQUQocGh5X2ZpeHVwX2xpc3QpO1xuLXN0YXRpYyBERUZJTkVfTVVURVgocGh5X2ZpeHVwX2xvY2spO1xuLVxuIHN0YXRpYyBib29sIHBoeV9kcnZfd29sX2VuYWJsZWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiB7XG4gXHRzdHJ1Y3QgZXRodG9vbF93b2xpbmZvIHdvbCA9IHsgLmNtZCA9IEVUSFRPT0xfR1dPTCB9O1xuQEAgLTQyNyw4NSArNDE2LDYgQEAgc3RhdGljIF9fbWF5YmVfdW51c2VkIGludCBtZGlvX2J1c19waHlfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcbiBzdGF0aWMgU0lNUExFX0RFVl9QTV9PUFMobWRpb19idXNfcGh5X3BtX29wcywgbWRpb19idXNfcGh5X3N1c3BlbmQsXG4gXHRcdFx0IG1kaW9fYnVzX3BoeV9yZXN1bWUpO1xuIFxuLS8qKlxuLSAqIHBoeV9yZWdpc3Rlcl9maXh1cCAtIGNyZWF0ZXMgYSBuZXcgcGh5X2ZpeHVwIGFuZCBhZGRzIGl0IHRvIHRoZSBsaXN0XG4tICogQGJ1c19pZDogQSBzdHJpbmcgd2hpY2ggbWF0Y2hlcyBwaHlkZXYtXHUwMDNlbWRpby5kZXYuYnVzX2lkIChvciBOVUxMKVxuLSAqIEBwaHlfdWlkOiBVc2VkIHRvIG1hdGNoIGFnYWluc3QgcGh5ZGV2LVx1MDAzZXBoeV9pZCAodGhlIFVJRCBvZiB0aGUgUEhZKVxuLSAqIEBwaHlfdWlkX21hc2s6IEFwcGxpZWQgdG8gcGh5ZGV2LVx1MDAzZXBoeV9pZCBhbmQgZml4dXAtXHUwMDNlcGh5X3VpZCBiZWZvcmVcbi0gKlx0Y29tcGFyaXNvbiAob3IgMCB0byBkaXNhYmxlIGlkLWJhc2VkIG1hdGNoaW5nKVxuLSAqIEBydW46IFRoZSBhY3R1YWwgY29kZSB0byBiZSBydW4gd2hlbiBhIG1hdGNoaW5nIFBIWSBpcyBmb3VuZFxuLSAqL1xuLXN0YXRpYyBpbnQgcGh5X3JlZ2lzdGVyX2ZpeHVwKGNvbnN0IGNoYXIgKmJ1c19pZCwgdTMyIHBoeV91aWQsIHUzMiBwaHlfdWlkX21hc2ssXG4tXHRcdFx0ICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSlcbi17XG4tXHRzdHJ1Y3QgcGh5X2ZpeHVwICpmaXh1cCA9IGt6YWxsb2Nfb2JqKCpmaXh1cCk7XG4tXG4tXHRpZiAoIWZpeHVwKVxuLVx0XHRyZXR1cm4gLUVOT01FTTtcbi1cbi1cdGlmIChidXNfaWQpXG4tXHRcdHN0cnNjcHkoZml4dXAtXHUwMDNlYnVzX2lkLCBidXNfaWQsIHNpemVvZihmaXh1cC1cdTAwM2VidXNfaWQpKTtcbi1cdGZpeHVwLVx1MDAzZXBoeV91aWQgPSBwaHlfdWlkO1xuLVx0Zml4dXAtXHUwMDNlcGh5X3VpZF9tYXNrID0gcGh5X3VpZF9tYXNrO1xuLVx0Zml4dXAtXHUwMDNlcnVuID0gcnVuO1xuLVxuLVx0bXV0ZXhfbG9jayhcdTAwMjZwaHlfZml4dXBfbG9jayk7XG4tXHRsaXN0X2FkZF90YWlsKFx1MDAyNmZpeHVwLVx1MDAzZWxpc3QsIFx1MDAyNnBoeV9maXh1cF9saXN0KTtcbi1cdG11dGV4X3VubG9jayhcdTAwMjZwaHlfZml4dXBfbG9jayk7XG4tXG4tXHRyZXR1cm4gMDtcbi19XG4tXG4tLyogUmVnaXN0ZXJzIGEgZml4dXAgdG8gYmUgcnVuIG9uIGFueSBQSFkgd2l0aCB0aGUgVUlEIGluIHBoeV91aWQgKi9cbi1pbnQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQodTMyIHBoeV91aWQsIHUzMiBwaHlfdWlkX21hc2ssXG4tXHRcdFx0ICAgICAgIGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpXG4te1xuLVx0cmV0dXJuIHBoeV9yZWdpc3Rlcl9maXh1cChOVUxMLCBwaHlfdWlkLCBwaHlfdWlkX21hc2ssIHJ1bik7XG4tfVxuLUVYUE9SVF9TWU1CT0wocGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQpO1xuLVxuLS8qIFJlZ2lzdGVycyBhIGZpeHVwIHRvIGJlIHJ1biBvbiB0aGUgUEhZIHdpdGggaWQgc3RyaW5nIGJ1c19pZCAqL1xuLWludCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX2lkKGNvbnN0IGNoYXIgKmJ1c19pZCxcbi1cdFx0XHQgICAgICBpbnQgKCpydW4pKHN0cnVjdCBwaHlfZGV2aWNlICopKVxuLXtcbi1cdHJldHVybiBwaHlfcmVnaXN0ZXJfZml4dXAoYnVzX2lkLCAwLCAwLCBydW4pO1xuLX1cbi1FWFBPUlRfU1lNQk9MKHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWQpO1xuLVxuLXN0YXRpYyBib29sIHBoeV9uZWVkc19maXh1cChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBzdHJ1Y3QgcGh5X2ZpeHVwICpmaXh1cClcbi17XG4tXHRpZiAoIXN0cmNtcChmaXh1cC1cdTAwM2VidXNfaWQsIHBoeWRldl9uYW1lKHBoeWRldikpKVxuLVx0XHRyZXR1cm4gdHJ1ZTtcbi1cbi1cdGlmIChmaXh1cC1cdTAwM2VwaHlfdWlkX21hc2sgXHUwMDI2XHUwMDI2XG4tXHQgICAgcGh5X2lkX2NvbXBhcmUocGh5ZGV2LVx1MDAzZXBoeV9pZCwgZml4dXAtXHUwMDNlcGh5X3VpZCwgZml4dXAtXHUwMDNlcGh5X3VpZF9tYXNrKSlcbi1cdFx0cmV0dXJuIHRydWU7XG4tXG4tXHRyZXR1cm4gZmFsc2U7XG4tfVxuLVxuLS8qIFJ1bnMgYW55IG1hdGNoaW5nIGZpeHVwcyBmb3IgdGhpcyBwaHlkZXYgKi9cbi1zdGF0aWMgaW50IHBoeV9zY2FuX2ZpeHVwcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLXtcbi1cdHN0cnVjdCBwaHlfZml4dXAgKmZpeHVwO1xuLVxuLVx0bXV0ZXhfbG9jayhcdTAwMjZwaHlfZml4dXBfbG9jayk7XG4tXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGZpeHVwLCBcdTAwMjZwaHlfZml4dXBfbGlzdCwgbGlzdCkge1xuLVx0XHRpZiAocGh5X25lZWRzX2ZpeHVwKHBoeWRldiwgZml4dXApKSB7XG4tXHRcdFx0aW50IGVyciA9IGZpeHVwLVx1MDAzZXJ1bihwaHlkZXYpO1xuLVxuLVx0XHRcdGlmIChlcnIgXHUwMDNjIDApIHtcbi1cdFx0XHRcdG11dGV4X3VubG9jayhcdTAwMjZwaHlfZml4dXBfbG9jayk7XG4tXHRcdFx0XHRyZXR1cm4gZXJyO1xuLVx0XHRcdH1cbi1cdFx0XHRwaHlkZXYtXHUwMDNlaGFzX2ZpeHVwcyA9IHRydWU7XG4tXHRcdH1cbi1cdH1cbi1cdG11dGV4X3VubG9jayhcdTAwMjZwaHlfZml4dXBfbG9jayk7XG4tXG4tXHRyZXR1cm4gMDtcbi19XG4tXG4gLyoqXG4gICogZ2VucGh5X21hdGNoX3BoeV9kZXZpY2UgLSBtYXRjaCBhIFBIWSBkZXZpY2Ugd2l0aCBhIFBIWSBkcml2ZXJcbiAgKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3RcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi5mNDlmYzRjZWZlODE3XG4tLS0gL2Rldi9udWxsXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmNcbkBAIC0wLDAgKzEsOTkgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlclxuKy8qXG4rICogUEhZIGZpeHVwIHN1cHBvcnRcbisgKi9cbitcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9saXN0LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9waHkuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3NsYWIuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3N0cmluZy5oXHUwMDNlXG4rXG4rI2luY2x1ZGUgXCJwaHlsaWItaW50ZXJuYWwuaFwiXG4rXG4rc3RhdGljIHN0cnVjdCBsaXN0X2hlYWQgcGh5X2ZpeHVwX2xpc3QgX19yb19hZnRlcl9pbml0ID1cbitcdExJU1RfSEVBRF9JTklUKHBoeV9maXh1cF9saXN0KTtcbitcbitzdHJ1Y3QgcGh5X2ZpeHVwIHtcbitcdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcbitcdGNoYXIgYnVzX2lkW01JSV9CVVNfSURfU0laRSArIDNdO1xuK1x0dTMyIHBoeV91aWQ7XG4rXHR1MzIgcGh5X3VpZF9tYXNrO1xuK1x0aW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbit9O1xuK1xuKy8qKlxuKyAqIHBoeV9yZWdpc3Rlcl9maXh1cCAtIGNyZWF0ZXMgYSBuZXcgcGh5X2ZpeHVwIGFuZCBhZGRzIGl0IHRvIHRoZSBsaXN0XG4rICogQGJ1c19pZDogQSBzdHJpbmcgd2hpY2ggbWF0Y2hlcyBwaHlkZXYtXHUwMDNlbWRpby5kZXYuYnVzX2lkIChvciBQSFlfQU5ZX0lEKVxuKyAqIEBwaHlfdWlkOiBVc2VkIHRvIG1hdGNoIGFnYWluc3QgcGh5ZGV2LVx1MDAzZXBoeV9pZCAodGhlIFVJRCBvZiB0aGUgUEhZKVxuKyAqXHRJdCBjYW4gYWxzbyBiZSBQSFlfQU5ZX1VJRFxuKyAqIEBwaHlfdWlkX21hc2s6IEFwcGxpZWQgdG8gcGh5ZGV2LVx1MDAzZXBoeV9pZCBhbmQgZml4dXAtXHUwMDNlcGh5X3VpZCBiZWZvcmVcbisgKlx0Y29tcGFyaXNvblxuKyAqIEBydW46IFRoZSBhY3R1YWwgY29kZSB0byBiZSBydW4gd2hlbiBhIG1hdGNoaW5nIFBIWSBpcyBmb3VuZFxuKyAqL1xuK3N0YXRpYyB2b2lkIF9faW5pdCBwaHlfcmVnaXN0ZXJfZml4dXAoY29uc3QgY2hhciAqYnVzX2lkLCB1MzIgcGh5X3VpZCxcbitcdFx0XHRcdCAgICAgIHUzMiBwaHlfdWlkX21hc2ssXG4rXHRcdFx0XHQgICAgICBpbnQgKCpydW4pKHN0cnVjdCBwaHlfZGV2aWNlICopKVxuK3tcbitcdHN0cnVjdCBwaHlfZml4dXAgKmZpeHVwID0ga3phbGxvY19vYmooKmZpeHVwKTtcbitcbitcdGlmICghZml4dXApXG4rXHRcdHJldHVybjtcbitcbitcdGlmIChidXNfaWQpXG4rXHRcdHN0cnNjcHkoZml4dXAtXHUwMDNlYnVzX2lkLCBidXNfaWQpO1xuK1x0Zml4dXAtXHUwMDNlcGh5X3VpZCA9IHBoeV91aWQ7XG4rXHRmaXh1cC1cdTAwM2VwaHlfdWlkX21hc2sgPSBwaHlfdWlkX21hc2s7XG4rXHRmaXh1cC1cdTAwM2VydW4gPSBydW47XG4rXG4rXHRsaXN0X2FkZF90YWlsKFx1MDAyNmZpeHVwLVx1MDAzZWxpc3QsIFx1MDAyNnBoeV9maXh1cF9saXN0KTtcbit9XG4rXG4rLyogUmVnaXN0ZXJzIGEgZml4dXAgdG8gYmUgcnVuIG9uIGFueSBQSFkgd2l0aCB0aGUgVUlEIGluIHBoeV91aWQgKi9cbit2b2lkIF9faW5pdCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZCh1MzIgcGh5X3VpZCwgdTMyIHBoeV91aWRfbWFzayxcbitcdFx0XHRcdCAgICAgICBpbnQgKCpydW4pKHN0cnVjdCBwaHlfZGV2aWNlICopKVxuK3tcbitcdHBoeV9yZWdpc3Rlcl9maXh1cChOVUxMLCBwaHlfdWlkLCBwaHlfdWlkX21hc2ssIHJ1bik7XG4rfVxuK1xuKy8qIFJlZ2lzdGVycyBhIGZpeHVwIHRvIGJlIHJ1biBvbiB0aGUgUEhZIHdpdGggaWQgc3RyaW5nIGJ1c19pZCAqL1xuK3ZvaWQgX19pbml0IHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWQoY29uc3QgY2hhciAqYnVzX2lkLFxuK1x0XHRcdFx0ICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSlcbit7XG4rXHRwaHlfcmVnaXN0ZXJfZml4dXAoYnVzX2lkLCAwLCAwLCBydW4pO1xuK31cbitcbitzdGF0aWMgYm9vbCBwaHlfbmVlZHNfZml4dXAoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgc3RydWN0IHBoeV9maXh1cCAqZml4dXApXG4re1xuK1x0aWYgKCFzdHJjbXAoZml4dXAtXHUwMDNlYnVzX2lkLCBwaHlkZXZfbmFtZShwaHlkZXYpKSlcbitcdFx0cmV0dXJuIHRydWU7XG4rXG4rXHRpZiAoZml4dXAtXHUwMDNlcGh5X3VpZF9tYXNrIFx1MDAyNlx1MDAyNlxuK1x0ICAgIHBoeV9pZF9jb21wYXJlKHBoeWRldi1cdTAwM2VwaHlfaWQsIGZpeHVwLVx1MDAzZXBoeV91aWQsIGZpeHVwLVx1MDAzZXBoeV91aWRfbWFzaykpXG4rXHRcdHJldHVybiB0cnVlO1xuK1xuK1x0cmV0dXJuIGZhbHNlO1xuK31cbitcbisvKipcbisgKiBwaHlfc2Nhbl9maXh1cHMgLSBydW5zIGFueSBtYXRjaGluZyBmaXh1cHMgZm9yIHRoaXMgcGh5ZGV2XG4rICogQHBoeWRldjogdGhlIHBoeWRldiB0byBzZWFyY2ggYW5kIHJ1biBmaXh1cHMgZm9yXG4rICogUmV0dXJuczogMCBvciBhbiBlcnJub1xuKyAqL1xuK2ludCBwaHlfc2Nhbl9maXh1cHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbit7XG4rXHRzdHJ1Y3QgcGh5X2ZpeHVwICpmaXh1cDtcbitcbitcdGxpc3RfZm9yX2VhY2hfZW50cnkoZml4dXAsIFx1MDAyNnBoeV9maXh1cF9saXN0LCBsaXN0KSB7XG4rXHRcdGlmIChwaHlfbmVlZHNfZml4dXAocGh5ZGV2LCBmaXh1cCkpIHtcbitcdFx0XHRpbnQgZXJyID0gZml4dXAtXHUwMDNlcnVuKHBoeWRldik7XG4rXG4rXHRcdFx0aWYgKGVyciBcdTAwM2MgMClcbitcdFx0XHRcdHJldHVybiBlcnI7XG4rXG4rXHRcdFx0cGh5ZGV2LVx1MDAzZWhhc19maXh1cHMgPSB0cnVlO1xuK1x0XHR9XG4rXHR9XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rRVhQT1JUX1NZTUJPTF9HUEwocGh5X3NjYW5fZml4dXBzKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmggYi9kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmhcbmluZGV4IDY2NGVkN2ZhYTUxODQuLjM4ZWUyOTRmM2M5NjIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmhcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaWItaW50ZXJuYWwuaFxuQEAgLTIzLDYgKzIzLDcgQEAgdm9pZCBvZl9zZXRfcGh5X2VlZV9icm9rZW4oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG4gdm9pZCBvZl9zZXRfcGh5X3RpbWluZ19yb2xlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuIGludCBwaHlfc3BlZWRfZG93bl9jb3JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuIHZvaWQgcGh5X2NoZWNrX2Rvd25zaGlmdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbitpbnQgcGh5X3NjYW5fZml4dXBzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuIFxuIGludCBtZGlvYnVzX3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpO1xuIGludCBtZGlvYnVzX3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9waHkuaCBiL2luY2x1ZGUvbGludXgvcGh5LmhcbmluZGV4IDVmOGQ2NTg2OGUwZmYuLmY3OTliMzY4NGNkZGUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BoeS5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L3BoeS5oXG5AQCAtMjQyMiwxMCArMjQyMiwxMCBAQCBpbnQgcGh5X2dldF9tYWNfdGVybWluYXRpb24oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgc3RydWN0IGRldmljZSAqZGV2LFxuIHZvaWQgcGh5X3Jlc29sdmVfcGF1c2UodW5zaWduZWQgbG9uZyAqbG9jYWxfYWR2LCB1bnNpZ25lZCBsb25nICpwYXJ0bmVyX2FkdixcbiBcdFx0ICAgICAgIGJvb2wgKnR4X3BhdXNlLCBib29sICpyeF9wYXVzZSk7XG4gXG4taW50IHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWQoY29uc3QgY2hhciAqYnVzX2lkLFxuLVx0XHRcdCAgICAgIGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpO1xuLWludCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZCh1MzIgcGh5X3VpZCwgdTMyIHBoeV91aWRfbWFzayxcbi1cdFx0XHQgICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSk7XG4rdm9pZCBfX2luaXQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZChjb25zdCBjaGFyICpidXNfaWQsXG4rXHRcdFx0XHQgICAgICBpbnQgKCpydW4pKHN0cnVjdCBwaHlfZGV2aWNlICopKTtcbit2b2lkIF9faW5pdCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZCh1MzIgcGh5X3VpZCwgdTMyIHBoeV91aWRfbWFzayxcbitcdFx0XHRcdCAgICAgICBpbnQgKCpydW4pKHN0cnVjdCBwaHlfZGV2aWNlICopKTtcbiBcbiBpbnQgcGh5X2VlZV90eF9jbG9ja19zdG9wX2NhcGFibGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG4gaW50IHBoeV9lZWVfcnhfY2xvY2tfc3RvcChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sIGNsa19zdG9wX2VuYWJsZSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDoyMDo1My40NTMzMTE0MTlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo0NDc5NzY3ODEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBQSFkgRml4dXAgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGNsZWFybHkgZm9jdXNlZCBvbiByZWZpbmluZyB0aGUgUEhZIGZpeHVwIG1lY2hhbmlzbSB3aXRoaW4gdGhlIG5ldHdvcmtpbmcgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgdW5kZXIgYGRyaXZlcnMvbmV0L3BoeS9gLiBJdCdzIGEgdGFyZ2V0ZWQgcmVmYWN0b3IuIExldCdzIGJyZWFrIGRvd24gdGhlIGltcGxpY2F0aW9ucy5cblxuRmlyc3QsIEkgc2VlIHRoZSBgTWFrZWZpbGVgIGJlaW5nIHVwZGF0ZWQgdG8gaW5jbHVkZSBgcGh5X2ZpeHVwLm9gIGFzIGEgYnVpbHQtaW4gb2JqZWN0IHdoZW4gYFBIWUxJQmAgaXMgZW5hYmxlZC4gVGhhdCdzIHN0YW5kYXJkIHByYWN0aWNlOyB3ZSdyZSBtYWtpbmcgc3VyZSB0aGUgZml4dXAgZnVuY3Rpb25hbGl0eSBpcyBhdmFpbGFibGUgd2hlbiB0aGUgUEhZIGxpYnJhcnkgaXMgaW5jbHVkZWQuIE5vIHN1cnByaXNlcyB0aGVyZS5cblxuVGhlIG5leHQgY2hhbmdlIGluIGBwaHlfZGV2aWNlLmNgIGlzIHNpZ25pZmljYW50LiBUaGUgZml4dXAgbGlzdCBhbmQgYXNzb2NpYXRlZCBmdW5jdGlvbnMgYXJlIGJlaW5nIG1vdmVkIHRvIGEgbmV3IGZpbGUsIGBwaHlfZml4dXAuY2AuIFRoaXMgaXMgZ29vZCBmb3IgbW9kdWxhcml0eSBhbmQgY2xhcml0eS4gSXNvbGF0aW5nIHRoZSBmaXh1cCBsb2dpYyBtYWtlcyBpdCBlYXNpZXIgdG8gbWFuYWdlIGFuZCB1bmRlcnN0YW5kLlxuXG5Ob3csIGxldCdzIGV4YW1pbmUgdGhlIG5ldyBgcGh5X2ZpeHVwLmNgIGZpbGUgaXRzZWxmLiBTZXZlcmFsIGtleSB0aGluZ3MganVtcCBvdXQ6XG5cbiogICBUaGUgYHBoeV9maXh1cF9saXN0YCBpcyBub3cgYF9fcm9fYWZ0ZXJfaW5pdGAuIFRoaXMgaXMgYSBjcnVjaWFsIGRldGFpbCEgVGhpcyBpbXBsaWVzIHRoYXQgdGhlIGZpeHVwIGxpc3QgaXMgbWVhbnQgdG8gYmUgcmVhZC1vbmx5IGFmdGVyIGluaXRpYWxpemF0aW9uLiBUaGlzIGlzIGEgdmVyeSBzdHJvbmcgc2lnbmFsLiBJdCBoYXMgdG8gYmUgdGhhdCB3YXkgZm9yIGl0IHRvIGJlIHJlbW92ZWQsIHdoaWNoIGlzIG15IG5leHQgcG9pbnQuXG4qICAgKipUaGUgYHBoeV9maXh1cF9sb2NrYCBtdXRleCBoYXMgYmVlbiAqcmVtb3ZlZCohKiogVGhhdCdzIHRoZSByZWFsIGNydXggb2YgdGhpcyBwYXRjaCEgVGhpcyBpbXBsaWVzIHRoZSBjb2RlIGlzIG5vdyB0aHJlYWQgc2FmZSBieSBkZXNpZ24sIGJlY2F1c2UgYWxsIHRoZSBkYXRhIGlzIGltbXV0YWJsZSwgc28gaXQgaXMgcHJvYmFibHkgaW5pdGlhbGl6ZWQgZWFybHkgYW5kIG5ldmVyIG1vZGlmaWVkIGFnYWluLiBUaGlzIGltcGxpZXMgYW4gKmltbXV0YWJsZSogbGlzdCBpcyB1c2VkLlxuKiAgIGBwaHlfcmVnaXN0ZXJfZml4dXBgIGFuZCB0aGUgdmFyaWFudCBmdW5jdGlvbnMgYXJlIG5vdyBtYXJrZWQgYF9faW5pdGAgYW5kIHJldHVybiBgdm9pZGAuIFRoaXMgc3VnZ2VzdHMgdGhlc2UgZnVuY3Rpb25zIGFyZSBvbmx5IGNhbGxlZCBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIHBoYXNlLCBhbmQgbm8gZXJyb3IgaGFuZGxpbmcgaXMgbmVjZXNzYXJ5LCBhcyB0aGVyZSBpcyBubyBydW50aW1lIHJlZ2lzdHJhdGlvbi5cbiogICBUaGUgYHBoeV9zY2FuX2ZpeHVwc2AgZnVuY3Rpb24sIHdoaWNoIGl0ZXJhdGVzIG92ZXIgdGhlIGZpeHVwIGxpc3QsICpubyBsb25nZXIgYWNxdWlyZXMgdGhlIGBwaHlfZml4dXBfbG9ja2AqLiBHaXZlbiB0aGUgbGlzdCBpcyBpbW11dGFibGUsIHdlIGRvbid0IG5lZWQgYSBsb2NrLCBmdXJ0aGVyIGNvbmZpcm1pbmcgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgZWFybGllciBwb2ludC5cblxuSXQncyBjbGVhciB0aGUgZGVzaWduIGhlcmUgaGFzIHNoaWZ0ZWQgdG8gYW4gaW5pdGlhbGl6YXRpb24tdGltZSByZWdpc3RyYXRpb24sIHRoZW4gcmVhZC1vbmx5IGFjY2VzcyBmb3IgZml4dXBzLiBUaGlzIHNob3VsZCBwcm92aWRlIGJldHRlciBwZXJmb3JtYW5jZSwgYXMgdGhlcmUgaXMgbm8gbG9ja2luZy5cblxuVGhlIGhlYWRlciBmaWxlIGNoYW5nZXMgYXJlIHNpbXBsZTogdXBkYXRlcyB0byB0aGUgcHJvdG90eXBlcyBvZiB0aGUgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucyB0byBgX19pbml0IHZvaWRgLlxuXG5Ob3csIHRoZSBxdWVzdGlvbiBpczogaG93IGlzIHRoaXMgbmV3IHNldHVwIGFjdHVhbGx5ICp1c2VkKj8gSSdtIGdvaW5nIHRvIHJ1biBgZ3JlcHBlcmAgdG8gc2VlIHdoZXJlIGBwaHlfcmVnaXN0ZXJfZml4dXBfKmAgYW5kIGBwaHlfc2Nhbl9maXh1cHNgIGFyZSBjYWxsZWQuIEkgZXhwZWN0IHRoZW0gdG8gYmUgY2FsbGVkIGR1cmluZyBpbml0aWFsaXphdGlvbiBhbmQgaW4gdGhlIGRyaXZlciBwcm9iZSBmdW5jdGlvbiwgcmVzcGVjdGl2ZWx5LiBMZXQncyBzZWUgd2hhdCB0aGF0IHNob3dzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDUyLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzk4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6MjA6NTcuOTMzMDgyMzU5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MzQ2MjI3NTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5X3JlZ2lzdGVyX2ZpeHVwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0PTUyNz1UaGUgcGxhdGZvcm0gY29kZSBjYW4gcmVnaXN0ZXIgdGhlIGZpeHVwIHVzaW5nIG9uZSBvZjo6XFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3QtNTI4LVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0OjUyOTogaW50IHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfdWlkKHUzMiBwaHlfdWlkLCB1MzIgcGh5X3VpZF9tYXNrLFxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0LTUzMC1cXHRcXHRpbnQgKCpydW4pKHN0cnVjdCBwaHlfZGV2aWNlICopKTtcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdDo1MzE6IGludCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX2lkKGNvbnN0IGNoYXIgKnBoeV9pZCxcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdC01MzItXFx0XFx0aW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSk7XFxuLS1cXG5hcmNoL2FybS9tYWNoLWlteC9tYWNoLWlteDZxLmM9NzE9c3RhdGljIHZvaWQgX19pbml0IGlteDZxX2VuZXRfcGh5X2luaXQodm9pZClcXG4tLVxcbmFyY2gvYXJtL21hY2gtaW14L21hY2gtaW14NnEuYy03My1cXHRpZiAoSVNfQlVJTFRJTihDT05GSUdfUEhZTElCKSkge1xcbmFyY2gvYXJtL21hY2gtaW14L21hY2gtaW14NnEuYzo3NDpcXHRcXHRwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZChQSFlfSURfS1NaOTAyMSwgTUlDUkVMX1BIWV9JRF9NQVNLLFxcbmFyY2gvYXJtL21hY2gtaW14L21hY2gtaW14NnEuYy03NS1cXHRcXHRcXHRcXHRrc3o5MDIxcm5fcGh5X2ZpeHVwKTtcXG4tLVxcbmFyY2gvYXJtL21hY2gtaW14L21hY2gtaW14N2QuYz0zMD1zdGF0aWMgdm9pZCBfX2luaXQgaW14N2RfZW5ldF9waHlfaW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1pbXgvbWFjaC1pbXg3ZC5jLTMyLVxcdGlmIChJU19CVUlMVElOKENPTkZJR19QSFlMSUIpKSB7XFxuYXJjaC9hcm0vbWFjaC1pbXgvbWFjaC1pbXg3ZC5jOjMzOlxcdFxcdHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfdWlkKFBIWV9JRF9CQ001NDIyMCwgMHhmZmZmZmZmZixcXG5hcmNoL2FybS9tYWNoLWlteC9tYWNoLWlteDdkLmMtMzQtXFx0XFx0XFx0XFx0XFx0ICAgYmNtNTQyMjBfcGh5X2ZpeHVwKTtcXG4tLVxcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmM9MjU4PXN0YXRpYyB2b2lkIF9faW5pdCBhcHg0ZGV2a2l0X2luaXQodm9pZClcXG4tLVxcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmMtMjYyLVxcdGlmIChJU19CVUlMVElOKENPTkZJR19QSFlMSUIpKVxcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmM6MjYzOlxcdFxcdHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfdWlkKFBIWV9JRF9LU1o4MDUxLCBNSUNSRUxfUEhZX0lEX01BU0ssXFxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYy0yNjQtXFx0XFx0XFx0XFx0XFx0ICAgYXB4NGRldmtpdF9waHlfZml4dXApO1xcbi0tXFxuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L2RuczMyMy1zZXR1cC5jPTYxMj1zdGF0aWMgdm9pZCBfX2luaXQgZG5zMzIzX2luaXQodm9pZClcXG4tLVxcbmFyY2gvYXJtL21hY2gtb3Jpb241eC9kbnMzMjMtc2V0dXAuYy02NzctXFx0XFx0XFx0YnJlYWs7XFxuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L2RuczMyMy1zZXR1cC5jOjY3ODpcXHRcXHRwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZChNQVJWRUxMX1BIWV9JRF84OEUxMTE4LFxcbmFyY2gvYXJtL21hY2gtb3Jpb241eC9kbnMzMjMtc2V0dXAuYy02NzktXFx0XFx0XFx0XFx0XFx0ICAgTUFSVkVMTF9QSFlfSURfTUFTSyxcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODV4eC9tcGM4NXh4X21kcy5jPTI4Mj1zdGF0aWMgaW50IF9faW5pdCBib2FyZF9maXh1cHModm9pZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODV4eC9tcGM4NXh4X21kcy5jLTI5Ni1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzg1eHgvbXBjODV4eF9tZHMuYzoyOTc6XFx0XFx0cGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZChwaHlfaWQsIG1wYzg1NjhfZml4dXBfMTI1X2Nsb2NrKTtcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzg1eHgvbXBjODV4eF9tZHMuYzoyOTg6XFx0XFx0cGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZChwaHlfaWQsIG1wYzg1NjhfbWRzX3BoeV9maXh1cHMpO1xcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODV4eC9tcGM4NXh4X21kcy5jLTI5OS1cXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODV4eC9tcGM4NXh4X21kcy5jLTMwMi1cXHRcXHRcXHQodW5zaWduZWQgbG9uZyBsb25nKXJlcy5zdGFydCwgNyk7XFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84NXh4L21wYzg1eHhfbWRzLmM6MzAzOlxcdFxcdHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWQocGh5X2lkLCBtcGM4NTY4X21kc19waHlfZml4dXBzKTtcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzg1eHgvbXBjODV4eF9tZHMuYy0zMDQtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmM9MTY9c3RydWN0IHBoeV9maXh1cCB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMtMjQtLyoqXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jOjI1OiAqIHBoeV9yZWdpc3Rlcl9maXh1cCAtIGNyZWF0ZXMgYSBuZXcgcGh5X2ZpeHVwIGFuZCBhZGRzIGl0IHRvIHRoZSBsaXN0XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTI2LSAqIEBidXNfaWQ6IEEgc3RyaW5nIHdoaWNoIG1hdGNoZXMgcGh5ZGV2LVxcdTAwM2VtZGlvLmRldi5idXNfaWQgKG9yIFBIWV9BTllfSUQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMtMzItICovXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jOjMzOnN0YXRpYyB2b2lkIF9faW5pdCBwaHlfcmVnaXN0ZXJfZml4dXAoY29uc3QgY2hhciAqYnVzX2lkLCB1MzIgcGh5X3VpZCxcXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMtMzQtXFx0XFx0XFx0XFx0ICAgICAgdTMyIHBoeV91aWRfbWFzayxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYy01MS0vKiBSZWdpc3RlcnMgYSBmaXh1cCB0byBiZSBydW4gb24gYW55IFBIWSB3aXRoIHRoZSBVSUQgaW4gcGh5X3VpZCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYzo1Mjp2b2lkIF9faW5pdCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZCh1MzIgcGh5X3VpZCwgdTMyIHBoeV91aWRfbWFzayxcXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMtNTMtXFx0XFx0XFx0XFx0ICAgICAgIGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTU0LXtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmM6NTU6XFx0cGh5X3JlZ2lzdGVyX2ZpeHVwKE5VTEwsIHBoeV91aWQsIHBoeV91aWRfbWFzaywgcnVuKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMtNTYtfVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTU4LS8qIFJlZ2lzdGVycyBhIGZpeHVwIHRvIGJlIHJ1biBvbiB0aGUgUEhZIHdpdGggaWQgc3RyaW5nIGJ1c19pZCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYzo1OTp2b2lkIF9faW5pdCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX2lkKGNvbnN0IGNoYXIgKmJ1c19pZCxcXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMtNjAtXFx0XFx0XFx0XFx0ICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSlcXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMtNjEte1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYzo2MjpcXHRwaHlfcmVnaXN0ZXJfZml4dXAoYnVzX2lkLCAwLCAwLCBydW4pO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYy02My19XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeS5oPTI0MjI9dm9pZCBwaHlfcmVzb2x2ZV9wYXVzZSh1bnNpZ25lZCBsb25nICpsb2NhbF9hZHYsIHVuc2lnbmVkIGxvbmcgKnBhcnRuZXJfYWR2LFxcbi0tXFxuaW5jbHVkZS9saW51eC9waHkuaC0yNDI0LVxcbmluY2x1ZGUvbGludXgvcGh5Lmg6MjQyNTp2b2lkIF9faW5pdCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX2lkKGNvbnN0IGNoYXIgKmJ1c19pZCxcXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTI0MjYtXFx0XFx0XFx0XFx0ICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSk7XFxuaW5jbHVkZS9saW51eC9waHkuaDoyNDI3OnZvaWQgX19pbml0IHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfdWlkKHUzMiBwaHlfdWlkLCB1MzIgcGh5X3VpZF9tYXNrLFxcbmluY2x1ZGUvbGludXgvcGh5LmgtMjQyOC1cXHRcXHRcXHRcXHQgICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDIwOjIwOjU5Ljg2NzcxMjI0NFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjI3NzM4MzMxMjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFBIWSBGaXh1cCBSZWdpc3RyYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBQSFkgZml4dXAgYnVzaW5lc3MuIE15IGluaXRpYWwgZm9jdXMgaXMgb24gYHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfdWlkYCBhbmQgYHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWRgLiBJJ3ZlIHF1aWNrbHkgY29tcGlsZWQgYSBsaXN0IG9mIHdoZXJlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgYmVpbmcgaW52b2tlZCB3aXRoaW4gdGhlIGtlcm5lbC4gSSBzZWUgY2FsbHMgY29taW5nIGZyb20gc2V2ZXJhbCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgbWFjaGluZSBjb2RlIGZpbGVzOiBgYXJjaC9hcm0vbWFjaC1pbXgvbWFjaC1pbXg2cS5jYCwgYGFyY2gvYXJtL21hY2gtaW14L21hY2gtaW14N2QuY2AsIGBhcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jYCwgYGFyY2gvYXJtL21hY2gtb3Jpb241eC9kbnMzMjMtc2V0dXAuY2AsIGFuZCBgYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84NXh4L21wYzg1eHhfbWRzLmNgLiBUaGF0IGdpdmVzIG1lIGEgZ29vZCBzdGFydGluZyBwb2ludC5cblxuTm93LCBiZWZvcmUgSSBjb25jbHVkZSB0aGF0J3MgdGhlIGNvbXBsZXRlIHBpY3R1cmUsIEkgbmVlZCB0byBiZSB0aG9yb3VnaC4gQXJlIHRoZXJlIGFueSBvdGhlciBzbmVha3kgY2FsbHMgdG8gdGhlc2UgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucyBsdXJraW5nIGVsc2V3aGVyZT8gTm9wZSwgZG9lc24ndCBhcHBlYXIgc28gYXQgZmlyc3QgZ2xhbmNlLlxuXG5CdXQgd2FpdCBhIG1pbnV0ZSwgSSBiZXR0ZXIgY29uc2lkZXIgYHBoeV9zY2FuX2ZpeHVwc2AuIEkgc2hvdWxkIGNoZWNrIHdoZXJlICp0aGF0KiBpcyBjYWxsZWQuIE1heWJlIHRoZXJlJ3Mgc29tZSBpbmRpcmVjdCB1c2FnZSBvciBpbnRlcmFjdGlvbiB0aGF0IEknbSBtaXNzaW5nIGJ5IG9ubHkgZm9jdXNpbmcgb24gdGhlIGRpcmVjdCByZWdpc3RyYXRpb24gZnVuY3Rpb25zLiBUaGlzIHdhcnJhbnRzIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiB0byBoYXZlIGEgY29tcGxldGUgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlc2UgUEhZIGZpeHVwcyBhcmUgYWN0dWFsbHkgYmVpbmcgYXBwbGllZC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODk5OCwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDoyMTowMi42NDE1NDc5ODhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgwOTQxNTQzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlfc2Nhbl9maXh1cHNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xMDE5PWludCBwaHlfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEwMzAtXFx0LyogUnVuIGFsbCBvZiB0aGUgZml4dXBzIGZvciB0aGlzIFBIWSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTAzMTpcXHRlcnIgPSBwaHlfc2Nhbl9maXh1cHMocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEwMzItXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xMjUxPWludCBwaHlfaW5pdF9odyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMjY5LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTI3MDpcXHRyZXQgPSBwaHlfc2Nhbl9maXh1cHMocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEyNzEtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmM9NjU9c3RhdGljIGJvb2wgcGh5X25lZWRzX2ZpeHVwKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHN0cnVjdCBwaHlfZml4dXAgKmZpeHVwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTc3LS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYzo3ODogKiBwaHlfc2Nhbl9maXh1cHMgLSBydW5zIGFueSBtYXRjaGluZyBmaXh1cHMgZm9yIHRoaXMgcGh5ZGV2XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTc5LSAqIEBwaHlkZXY6IHRoZSBwaHlkZXYgdG8gc2VhcmNoIGFuZCBydW4gZml4dXBzIGZvclxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTgxLSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYzo4MjppbnQgcGh5X3NjYW5fZml4dXBzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTgzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYy05OC19XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jOjk5OkVYUE9SVF9TWU1CT0xfR1BMKHBoeV9zY2FuX2ZpeHVwcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmg9MjU9dm9pZCBwaHlfY2hlY2tfZG93bnNoaWZ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWItaW50ZXJuYWwuaDoyNjppbnQgcGh5X3NjYW5fZml4dXBzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWItaW50ZXJuYWwuaC0yNy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6MjE6MDQuNDUwOTY4MjMzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NTI5MTkzODE2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBIWSBGaXh1cCBSZW1vdmFsIG9uIGFtZDY0KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duIG1ldGhvZGljYWxseS4gRmlyc3QsIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGBhbWQ2NGAsIHNvIHRoYXQncyB0aGUgZm9jdXMuIFRoZSBrZXkgcXVlc3Rpb246IGNhbiBgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWRgIG9yIGBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX2lkYCBldmVuIGJlIHJlbGV2YW50IGhlcmU/IE15IGluaXRpYWwgb2JzZXJ2YXRpb24gaXMgdGhhdCB0aGV5J3JlICpvbmx5KiBjYWxsZWQgYnkgYGFyY2gvYXJtL2AgYW5kIGBhcmNoL3Bvd2VycGMvYCBjb2RlLiBUaGF0J3MgYSBzdHJvbmcgaW5kaWNhdG9yLiBUaGVuLCBjb3VsZCBhIG1vZHVsZSBvciBkcml2ZXIsIGV2ZW4gb24gYGFtZDY0YCwgY2FsbCB0aGVzZSBmdW5jdGlvbnM/XG5cbkkgbm90aWNlZCBzb21ldGhpbmcgc2lnbmlmaWNhbnQgaW4gdGhlIHBhdGNoOiB0aGUgcmVtb3ZhbCBvZiBgRVhQT1JUX1NZTUJPTGAgZm9yIGBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZGAgYW5kIGBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX2lkYCBmcm9tIGBwaHlfZGV2aWNlLmNgLiBUaGF0J3MgYSByZWQgZmxhZy4gRGlnZ2luZyBkZWVwZXIsIHRob3NlIGZ1bmN0aW9ucyBhcmUgYWxzbyBub3QgZXhwb3J0ZWQgZnJvbSBgcGh5X2ZpeHVwLmNgIGFueW1vcmUuIFRoZXkncmUgYHZvaWQgX19pbml0YCBmdW5jdGlvbnMsIG1lYW5pbmcgdGhleSdyZSBtZWFudCB0byBiZSBjYWxsZWQgb25seSBkdXJpbmcgYF9faW5pdGAgc3RhZ2VzIGZvciBidWlsdC1pbiBjb2RlLCBhbmQgbm90IG1vZHVsZSBjb2RlLlxuXG5UaGVuLCBhIGBnaXQgZ3JlcGAgc2VhcmNoIHNob3dlZCBhbGwgb2NjdXJyZW5jZXMgb2YgdGhlc2UgZnVuY3Rpb25zIGluIHRoZSBlbnRpcmUga2VybmVsLCBwb2ludGluZyBvbmx5IHRvIHNwZWNpZmljIEFSTSBhbmQgUG93ZXJQQyBwbGF0Zm9ybXM6IGBpbXg2cWAsIGBpbXg3ZGAsIGBteHNgLCBgZG5zMzIzYCBhbmQgYG1wYzg1eHhgLiBTbywgdGhlIGNvbnRleHQgaXMgdmVyeSBsaW1pdGVkLCBhbmQgc3BlY2lmaWMgdG8gdGhvc2UgYXJjaGl0ZWN0dXJlcy5cblxuTm93LCB0aGUgY3JpdGljYWwgcXVlc3Rpb246IGFyZSB0aGVyZSAqYW55KiBjYWxsZXJzIG9uIGBhbWQ2NGAgb3IgaW4gYW55IGdlbmVyaWMgY29kZSB0aGF0IGNvdWxkIHVzZSB0aGVzZSByZW1vdmVkIGZ1bmN0aW9ucz8gQSBxdWljayByZXZpZXcgc2hvd3MgdGhlcmUgYXJlIG5vbmUsIHdoaWNoIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoYXQgdGhlIHJlbW92YWwgaXMgY29ycmVjdCwgYXQgbGVhc3QgZnJvbSBhbiBhcmNoaXRlY3R1cmFsIHBlcnNwZWN0aXZlLlxuXG5UaGUgbmV4dCBxdWVzdGlvbjogd2hhdCBoYXBwZW5zIG9uIGBhbWQ2NGAgd2hlbiBhIFBIWSBkZXZpY2UgaXMgcmVnaXN0ZXJlZD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIG5vcm1hbCBwYXRoLiBJdCBsb29rcyBsaWtlIGBwaHlfc2Nhbl9maXh1cHMocGh5ZGV2KWAgaXMgY2FsbGVkIGluIGJvdGggYHBoeV9kZXZpY2VfcmVnaXN0ZXJgIGFuZCBgcGh5X2luaXRfaHdgLiBJJ20gZ29pbmcgdG8gbG9vayBhdCB0aGF0IGZ1bmN0aW9uIGNhcmVmdWxseS5cblxuTG9va2luZyBhdCB0aGUgY29kZSBmb3IgYHBoeV9zY2FuX2ZpeHVwc2AsIGl0IGl0ZXJhdGVzIHRocm91Z2ggYHBoeV9maXh1cF9saXN0YCB0byBmaW5kIGFueSBhcHBsaWNhYmxlIGZpeHVwcy4gSG93ZXZlciwgaWYgdGhpcyBsaXN0IGlzIGVtcHR5IChhbmQgaXQncyBpbml0aWFsaXplZCBhcyBgTElTVF9IRUFEX0lOSVQocGh5X2ZpeHVwX2xpc3QpYCksIHRoZW4gYHBoeV9zY2FuX2ZpeHVwc2AgZG9lcyBhIHRyaXZpYWwgaXRlcmF0aW9uIGFuZCByZXR1cm5zIDAuIEVmZmVjdGl2ZWx5LCBubyBmaXh1cHMgYXJlIGFwcGxpZWQuXG5cbkJ1dCBpcyBgcGh5X3NjYW5fZml4dXBzYCBldmVuICpyZWFjaGFibGUqIG9uIGBhbWQ2NGA/IENhbiBhIGBwaHlfZGV2aWNlYCBldmVuIGJlIGNyZWF0ZWQvcmVnaXN0ZXJlZCBvbiB0aGlzIGFyY2hpdGVjdHVyZT8gVGhhdCdzIHRoZSBuZXh0IGtleSBxdWVzdGlvbi4gVGhpcyByZXF1aXJlcyBtZSB0byBkZXRlcm1pbmUgaG93IGBwaHlfZGV2aWNlX3JlZ2lzdGVyYCBnZXRzIGNhbGxlZCBvciB3aGF0IGRyaXZlcnMgY3JlYXRlIHBoeV9kZXZpY2VzLiBNYXliZSBJIHNob3VsZCBsb29rIGludG8gaWYgYHN5emthbGxlcmAgY291bGQgYmUgdXNlZCB0byBjcmVhdGUgYSBwaHlfZGV2aWNlP1xuXG5cbiIsIklucHV0VG9rZW5zIjoxMDA4OCwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDoyMTowOS43NDI5MDg2NzdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYzMTU1NDA3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlfZGV2aWNlX3JlZ2lzdGVyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmM9OTMxPXN0YXRpYyBpbnQgeGdiZV9waHlfZmluZF9waHlfZGV2aWNlKHN0cnVjdCB4Z2JlX3Bydl9kYXRhICpwZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtOTc1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmM6OTc2OlxcdHJldCA9IHBoeV9kZXZpY2VfcmVnaXN0ZXIocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTk3Ny1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYzo5Nzg6XFx0XFx0bmV0ZGV2X2VycihwZGF0YS1cXHUwMDNlbmV0ZGV2LCBcXFwicGh5X2RldmljZV9yZWdpc3RlciBmYWlsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtOTc5LVxcdFxcdHBoeV9kZXZpY2VfZnJlZShwaHlkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZHNhZl9tYWMuYz03MTY9aG5zX21hY19yZWdpc3Rlcl9waHlkZXYoc3RydWN0IG1paV9idXMgKm1kaW8sIHN0cnVjdCBobnNfbWFjX2NiICptYWNfY2IsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19kc2FmX21hYy5jLTc0NC1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19kc2FmX21hYy5jOjc0NTpcXHRyYyA9IHBoeV9kZXZpY2VfcmVnaXN0ZXIocGh5KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19kc2FmX21hYy5jLTc0Ni1cXHRpZiAocmMpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9uZXRzZWMuYz0xOTI5PXN0YXRpYyBpbnQgbmV0c2VjX3JlZ2lzdGVyX21kaW8oc3RydWN0IG5ldHNlY19wcml2ICpwcml2LCB1MzIgcGh5X2FkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvbmV0c2VjLmMtMTk4My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvbmV0c2VjLmM6MTk4NDpcXHRcXHRyZXQgPSBwaHlfZGV2aWNlX3JlZ2lzdGVyKHByaXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L25ldHNlYy5jLTE5ODUtXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L25ldHNlYy5jLTE5ODgtXFx0XFx0XFx0ZGV2X2Vycihwcml2LVxcdTAwM2VkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L25ldHNlYy5jOjE5ODk6XFx0XFx0XFx0XFx0XFxcInBoeV9kZXZpY2VfcmVnaXN0ZXIgZXJyKCVkKVxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvbmV0c2VjLmMtMTk5MC1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmM9NDI9Zndub2RlX2ZpbmRfbWlpX3RpbWVzdGFtcGVyKHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmMtNjktXFxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jOjcwOmludCBmd25vZGVfbWRpb2J1c19waHlfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICptZGlvLFxcbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy03MS1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy0xMDMtXFx0ICovXFxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jOjEwNDpcXHRyYyA9IHBoeV9kZXZpY2VfcmVnaXN0ZXIocGh5KTtcXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmMtMTA1LVxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jLTExNC19XFxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jOjExNTpFWFBPUlRfU1lNQk9MKGZ3bm9kZV9tZGlvYnVzX3BoeV9kZXZpY2VfcmVnaXN0ZXIpO1xcbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy0xMTYtXFxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jPTExNz1pbnQgZndub2RlX21kaW9idXNfcmVnaXN0ZXJfcGh5KHN0cnVjdCBtaWlfYnVzICpidXMsXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmMtMTQ5LVxcdFxcdC8qIEFsbCBkYXRhIGlzIG5vdyBzdG9yZWQgaW4gdGhlIHBoeSBzdHJ1Y3QsIHNvIHJlZ2lzdGVyIGl0ICovXFxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jOjE1MDpcXHRcXHRyYyA9IHBoeV9kZXZpY2VfcmVnaXN0ZXIocGh5KTtcXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmMtMTUxLVxcdFxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jLTE1Ni1cXHR9IGVsc2UgaWYgKGlzX29mX25vZGUoY2hpbGQpKSB7XFxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jOjE1NzpcXHRcXHRyYyA9IGZ3bm9kZV9tZGlvYnVzX3BoeV9kZXZpY2VfcmVnaXN0ZXIoYnVzLCBwaHksIGNoaWxkLCBhZGRyKTtcXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmMtMTU4LVxcdFxcdGlmIChyYylcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby14Z2VuZS5jPTI2Mz1zdHJ1Y3QgcGh5X2RldmljZSAqeGdlbmVfZW5ldF9waHlfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9hZGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXhnZW5lLmMtMjcwLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby14Z2VuZS5jOjI3MTpcXHRpZiAocGh5X2RldmljZV9yZWdpc3RlcihwaHlfZGV2KSlcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8teGdlbmUuYy0yNzItXFx0XFx0cGh5X2RldmljZV9mcmVlKHBoeV9kZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM9MzI9c3RhdGljIGludCBvZl9nZXRfcGh5X2lkKHN0cnVjdCBkZXZpY2Vfbm9kZSAqZGV2aWNlLCB1MzIgKnBoeV9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTM2LVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjM3OmludCBvZl9tZGlvYnVzX3BoeV9kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKm1kaW8sIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMzgtXFx0XFx0XFx0XFx0ICAgc3RydWN0IGRldmljZV9ub2RlICpjaGlsZCwgdTMyIGFkZHIpXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMzkte1xcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjQwOlxcdHJldHVybiBmd25vZGVfbWRpb2J1c19waHlfZGV2aWNlX3JlZ2lzdGVyKG1kaW8sIHBoeSxcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy00MS1cXHRcXHRcXHRcXHRcXHRcXHQgIG9mX2Z3bm9kZV9oYW5kbGUoY2hpbGQpLFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtNDMtfVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjQ0OkVYUE9SVF9TWU1CT0wob2ZfbWRpb2J1c19waHlfZGV2aWNlX3JlZ2lzdGVyKTtcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy00NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYz0xMzE9c3RydWN0IHBoeV9kZXZpY2UgKmZpeGVkX3BoeV9yZWdpc3Rlcihjb25zdCBzdHJ1Y3QgZml4ZWRfcGh5X3N0YXR1cyAqc3RhdHVzLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE2Mi1cXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM6MTYzOlxcdHJldCA9IHBoeV9kZXZpY2VfcmVnaXN0ZXIocGh5KTtcXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTY0LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jPTQwOD1zdGF0aWMgc3RydWN0IHBoeV9kZXZpY2UgKm1kaW9idXNfc2NhbihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgYm9vbCBjNDUpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy00MzctXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NDM4OlxcdGVyciA9IHBoeV9kZXZpY2VfcmVnaXN0ZXIocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy00MzktXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmM9NTUxPXN0YXRpYyB2b2lkIHRqYTExMDJfcDFfcmVnaXN0ZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmMtNTk3LVxcbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jOjU5ODpcXHRcXHRyZXQgPSBvZl9tZGlvYnVzX3BoeV9kZXZpY2VfcmVnaXN0ZXIoYnVzLCBwaHksIGNoaWxkLCBhZGRyKTtcXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYy01OTktXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xMDEzPUVYUE9SVF9TWU1CT0woZ2V0X3BoeV9kZXZpY2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMDE1LS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTAxNjogKiBwaHlfZGV2aWNlX3JlZ2lzdGVyIC0gUmVnaXN0ZXIgdGhlIHBoeSBkZXZpY2Ugb24gdGhlIE1ESU8gYnVzXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMDE3LSAqIEBwaHlkZXY6IHBoeV9kZXZpY2Ugc3RydWN0dXJlIHRvIGJlIGFkZGVkIHRvIHRoZSBNRElPIGJ1c1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTAxOC0gKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjEwMTk6aW50IHBoeV9kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEwMjAte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMDUxLX1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjEwNTI6RVhQT1JUX1NZTUJPTChwaHlfZGV2aWNlX3JlZ2lzdGVyKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEwNTMtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEwNTgtICogVGhpcyBkb2Vzbid0IGZyZWUgdGhlIHBoeV9kZXZpY2UgaXRzZWxmLCBpdCBtZXJlbHkgcmV2ZXJzZXMgdGhlIGVmZmVjdHNcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjEwNTk6ICogb2YgcGh5X2RldmljZV9yZWdpc3RlcigpLiBVc2UgcGh5X2RldmljZV9mcmVlKCkgdG8gZnJlZSB0aGUgZGV2aWNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMDYwLSAqIGFmdGVyIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9zZnAuYz0yMDczPXN0YXRpYyBpbnQgc2ZwX3NtX3Byb2JlX3BoeShzdHJ1Y3Qgc2ZwICpzZnAsIGludCBhZGRyLCBib29sIGlzX2M0NSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9zZnAuYy0yMDg4LVxcbmRyaXZlcnMvbmV0L3BoeS9zZnAuYzoyMDg5OlxcdGVyciA9IHBoeV9kZXZpY2VfcmVnaXN0ZXIocGh5KTtcXG5kcml2ZXJzL25ldC9waHkvc2ZwLmMtMjA5MC1cXHRpZiAoZXJyKSB7XFxuZHJpdmVycy9uZXQvcGh5L3NmcC5jLTIwOTEtXFx0XFx0cGh5X2RldmljZV9mcmVlKHBoeSk7XFxuZHJpdmVycy9uZXQvcGh5L3NmcC5jOjIwOTI6XFx0XFx0ZGV2X2VycihzZnAtXFx1MDAzZWRldiwgXFxcInBoeV9kZXZpY2VfcmVnaXN0ZXIgZmFpbGVkOiAlcGVcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvcGh5L3NmcC5jLTIwOTMtXFx0XFx0XFx0RVJSX1BUUihlcnIpKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvZndub2RlX21kaW8uaC0xMS0jaWYgSVNfRU5BQkxFRChDT05GSUdfRldOT0RFX01ESU8pXFxuaW5jbHVkZS9saW51eC9md25vZGVfbWRpby5oOjEyOmludCBmd25vZGVfbWRpb2J1c19waHlfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICptZGlvLFxcbmluY2x1ZGUvbGludXgvZndub2RlX21kaW8uaC0xMy1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcXG4tLVxcbmluY2x1ZGUvbGludXgvZndub2RlX21kaW8uaD0xNj1pbnQgZndub2RlX21kaW9idXNfcmVnaXN0ZXJfcGh5KHN0cnVjdCBtaWlfYnVzICpidXMsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2Z3bm9kZV9tZGlvLmgtMTktI2Vsc2UgLyogQ09ORklHX0ZXTk9ERV9NRElPICovXFxuaW5jbHVkZS9saW51eC9md25vZGVfbWRpby5oOjIwOmludCBmd25vZGVfbWRpb2J1c19waHlfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICptZGlvLFxcbmluY2x1ZGUvbGludXgvZndub2RlX21kaW8uaC0yMS1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcXG4tLVxcbmluY2x1ZGUvbGludXgvb2ZfbWRpby5oPTQ5PWJvb2wgb2ZfcGh5X2lzX2ZpeGVkX2xpbmsoc3RydWN0IGRldmljZV9ub2RlICpucCk7XFxuaW5jbHVkZS9saW51eC9vZl9tZGlvLmg6NTA6aW50IG9mX21kaW9idXNfcGh5X2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcXG5pbmNsdWRlL2xpbnV4L29mX21kaW8uaC01MS1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKmNoaWxkLCB1MzIgYWRkcik7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L29mX21kaW8uaD0xNDA9c3RhdGljIGlubGluZSBib29sIG9mX3BoeV9pc19maXhlZF9saW5rKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXFxuLS1cXG5pbmNsdWRlL2xpbnV4L29mX21kaW8uaC0xNDQtXFxuaW5jbHVkZS9saW51eC9vZl9tZGlvLmg6MTQ1OnN0YXRpYyBpbmxpbmUgaW50IG9mX21kaW9idXNfcGh5X2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqbWRpbyxcXG5pbmNsdWRlL2xpbnV4L29mX21kaW8uaC0xNDYtXFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeS5oPTIxNTk9c3RydWN0IHBoeV9kZXZpY2UgKmdldF9waHlfZGV2aWNlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBib29sIGlzX2M0NSk7XFxuaW5jbHVkZS9saW51eC9waHkuaDoyMTYwOmludCBwaHlfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpO1xcbmluY2x1ZGUvbGludXgvcGh5LmgtMjE2MS12b2lkIHBoeV9kZXZpY2VfZnJlZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6MjE6MTEuMzc0NDY4NDgzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTEwMzE1OTYzNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFBIWSBGaXh1cHMgYW5kIHRoZWlyIEFNRDY0IEltcGxpY2F0aW9ucyoqXG5cbk9rYXksIGxldCdzIGRpc3NlY3QgdGhpcy4gRmlyc3QsIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgY2hhbmdlIHRoaXMgaXMgYWJvdXQsIGNoZWNraW5nIHRoZSBnaXQgbG9ncyBhbmQgbWF5YmUgdGhlIG9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlLCBvciBkaXZpbmcgaW50byBgZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgKndoeSogdGhpcyBwYXRjaCB3YXMgbWFkZS4gSXQgbG9va3MgbGlrZSBpdCBoYXMgc29tZXRoaW5nIHRvIGRvIHdpdGggYHBoeV9maXh1cC5jYCBhbmQgaXRzIHJlbGF0aW9uc2hpcCB3aXRoIGBDT05GSUdfUEhZTElCYC5cblxuUmlnaHQsIEkgc2VlIGl0IG5vdy4gYHBoeV9maXh1cC5vYCBpcyBidWlsdC1pbiB3aGVuZXZlciBgQ09ORklHX1BIWUxJQmAgaXMgZW5hYmxlZC4gVGhpcyBpcyBjcnVjaWFsIGJlY2F1c2UgcGxhdGZvcm0gY29kZSBpbiBhcmNoaXRlY3R1cmVzIGxpa2UgYGFybWAgYW5kIGBwb3dlcnBjYCB1c2UgYHBoeV9yZWdpc3Rlcl9maXh1cF8qYCBkdXJpbmcgZWFybHkgYm9vdCwgc3BlY2lmaWNhbGx5IGF0IGBfX2luaXRgIHRpbWUuIFByZXZpb3VzbHksIHdpdGggYENPTkZJR19QSFlMSUI9bWAsIHRoZXNlIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMgd2VyZSBpbiBhIG1vZHVsZSwgbWFraW5nIHRoZW0gaW5hY2Nlc3NpYmxlIHRvIHRoZSBwbGF0Zm9ybSBjb2RlIHRoYXQncyBidWlsdCBkaXJlY3RseSBpbnRvIHRoZSBrZXJuZWwgaWYgUEhZTElCIHdhcyBtb2R1bGFyLiBUaGUgYGlmIChJU19CVUlMVElOKENPTkZJR19QSFlMSUIpKWAgY2hlY2sgd2FzIGEgcmVhbCByb2FkYmxvY2suXG5cbkJ5IG1vdmluZyBgcGh5X3JlZ2lzdGVyX2ZpeHVwYCB0byBgcGh5X2ZpeHVwLmNgIGFuZCBidWlsZGluZyBpdCBhcyBgb2JqLXlgIChhbHdheXMgYnVpbHQtaW4pIGFuZCBtYWtpbmcgcmVnaXN0cmF0aW9uIGBfX2luaXRgLCB3ZSBlbnN1cmUgUEhZIGZpeHVwcyBjYW4gYmUgcmVnaXN0ZXJlZCBldmVuIGlmIFBIWUxJQiBpcyBhIG1vZHVsZS4gVGhlIGZhY3QgdGhhdCBhbGwgZml4dXBzIGFyZSByZWdpc3RlcmVkIGF0IGBfX2luaXRgIHRpbWUsIGJlZm9yZSBTTVAvdXNlcnNwYWNlL2RyaXZlciBwcm9iZSwgaXMgdGhlIGtleSwgYWxsb3dpbmcgYHBoeV9maXh1cF9saXN0YCB0byBiZSBtYXJrZWQgYF9fcm9fYWZ0ZXJfaW5pdGAuIFRoaXMgYWxzbyBlbGltaW5hdGVzIHRoZSBuZWVkIGZvciBhIGxvY2sgKGBwaHlfZml4dXBfbG9ja2ApIHdoZW4gcmVhZGluZyBgcGh5X2ZpeHVwX2xpc3RgIGluIGBwaHlfc2Nhbl9maXh1cHNgLiBDbGV2ZXIuXG5cbkxvb2tpbmcgYXQgYHBoeV9maXh1cC5jYCwgSSBzZWUgdGhlIGBwaHlfZml4dXBfbGlzdGAgZGVmaW5lZCBhcyBgX19yb19hZnRlcl9pbml0YCBhbmQgdGhlIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbiBgcGh5X3JlZ2lzdGVyX2ZpeHVwYC4gSXQgYWRkcyBmaXh1cHMgdG8gdGhhdCBsaXN0IGJhc2VkIG9uIGJ1cyBJRCBhbmQgcGh5IFVJRC9tYXNrLlxuXG5Ob3cgdGhlIHF1ZXN0aW9uIGlzLCBkb2VzIHRoaXMgYXBwbHkgdG8gQU1ENjQ/IEFyZSB0aGVyZSBBTlkgY2FsbGVycyBvZiBgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWRgIG9yIGBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX2lkYCBvbiBBTUQ2ND8gSSBuZWVkIHRvIHZlcmlmeS4gSSdsbCBjaGVjayB0aG9zZSBjYWxsZXJzIGFnYWluLi4uIE5vcGUsIG5vdGhpbmcuIEFsbCB0aGUgdXNhZ2VzIGFyZSBpbiB0aGUgQVJNIGFuZCBQb3dlclBDIGFyY2hpdGVjdHVyZXMuIEkgbmVlZCB0byBtYWtlIHN1cmUsIGNvdWxkIGFueSBvdGhlciBkcml2ZXIgb3Igb3RoZXIgQU1ENjQgY29kZSBjYWxsIGBwaHlfcmVnaXN0ZXJfZml4dXBgPyBMZXQncyBzZWFyY2ggdGhlIHdob2xlIHJlcG9zaXRvcnkgZm9yIGBwaHlfcmVnaXN0ZXJfZml4dXBgLi4uIEFoLCBubyBvdGhlciBjYWxscyBleGlzdC4gVGhhdCBjb25maXJtcyBpdC5cblxuU28sIG9uIEFNRDY0LCBgcGh5X2ZpeHVwX2xpc3RgIGlzIGp1c3QgaW5pdGlhbGl6ZWQgYXMgYExJU1RfSEVBRF9JTklUKHBoeV9maXh1cF9saXN0KWAuIFNpbmNlIG5vdGhpbmcgcmVnaXN0ZXJzIGFueSBmaXh1cHMgb24gQU1ENjQsIHRoaXMgbGlzdCB3aWxsIGFsd2F5cyBiZSBFTVBUWSEgV2hhdCBoYXBwZW5zIHdoZW4gYHBoeV9zY2FuX2ZpeHVwcyhwaHlkZXYpYCBpcyBjYWxsZWQgb24gQU1ENjQ/IEl0IGNhbGxzIGBsaXN0X2Zvcl9lYWNoX2VudHJ5YCwgYnV0IHNpbmNlIHRoZSBsaXN0IGlzIGVtcHR5LCBpdCBkb2VzIFpFUk8gaXRlcmF0aW9ucyBhbmQganVzdCByZXR1cm5zIDAgaW1tZWRpYXRlbHkuXG5cblRoZXJlZm9yZSwgZXZlbiBpZiBhIFBIWSBkZXZpY2UgKHZpcnR1YWwgb3Igd2hhdGV2ZXIpIGlzIHJlZ2lzdGVyZWQgb24gQU1ENjQsIGBwaHlfc2Nhbl9maXh1cHNgIGRvZXMgYWJzb2x1dGVseSBub3RoaW5nLiBDYW4gYSBQSFkgZGV2aWNlIGJlIHJlZ2lzdGVyZWQgb24gQU1ENjQgd2l0aG91dCBwaHlzaWNhbCBoYXJkd2FyZT8gTWF5YmUgd2l0aCBhIHZpcnR1YWwgUEhZLCBvci4uLiBBaCwgZml4ZWQgUEhZIGlzIHdoYXQgSSB3YXMgbG9va2luZyBmb3IgKGBkcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmNgKS4gQW5kLCB3aG8gY2FsbHMgYGZpeGVkX3BoeV9yZWdpc3RlcmA/IEknbGwgaW52ZXN0aWdhdGUgbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDYzNiwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6MjE6MjIuNDA2MDY4NDE4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzU3MzIxMzk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZpeGVkX3BoeV9yZWdpc3RlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz00ODI9c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDkxLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBOVU1fRklYRURfUEhZUzsgaSsrKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5MjpcXHRcXHRwaHlkZXZzW2ldID0gZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKCk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDkzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM9MjIzND1zdGF0aWMgaW50IGI0NF9yZWdpc3Rlcl9waHlfb25lKHN0cnVjdCBiNDQgKmJwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMjI3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYzoyMjczOlxcdFxcdHBoeWRldiA9IGZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyNzQtXFx0XFx0aWYgKCFJU19FUlIocGh5ZGV2KSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmM9MTQzOT1pbnQgYmdtYWNfcGh5X2Nvbm5lY3RfZGlyZWN0KHN0cnVjdCBiZ21hYyAqYmdtYWMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jLTE0NDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYzoxNDQ5OlxcdHBoeV9kZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXIoXFx1MDAyNmZwaHlfc3RhdHVzLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jLTE0NTAtXFx0aWYgKElTX0VSUihwaHlfZGV2KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYz0xODQ4PXN0YXRpYyBpbnQgZnRnbWFjMTAwX3Byb2JlX25jc2koc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTg2Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jOjE4Njc6XFx0cGh5ZGV2ID0gZml4ZWRfcGh5X3JlZ2lzdGVyKFxcdTAwMjZuY3NpX3BoeV9zdGF0dXMsIG5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE4NjgtXFx0aWYgKElTX0VSUihwaHlkZXYpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz0yOTgxPXN0YXRpYyBpbnQgZmVjX2VuZXRfbWlpX3Byb2JlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzAwMi1cXHRcXHRcXHRuZXRkZXZfaW5mbyhuZGV2LCBcXFwibm8gUEhZLCBhc3N1bWluZyBkaXJlY3QgY29ubmVjdGlvbiB0byBzd2l0Y2hcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjMwMDM6XFx0XFx0XFx0cGh5X2RldiA9IGZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTMwMDQtXFx0XFx0XFx0aWYgKElTX0VSUihwaHlfZGV2KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYz0yMzg9c3RhdGljIGludCBoYmdfZml4ZWRfcGh5X2luaXQoc3RydWN0IGhiZ19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYy0yNTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYzoyNTE6XFx0cGh5ZGV2ID0gZml4ZWRfcGh5X3JlZ2lzdGVyKFxcdTAwMjZoYmdfZml4ZWRfcGh5X3N0YXR1cywgTlVMTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYy0yNTItXFx0aWYgKElTX0VSUihwaHlkZXYpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYz00MTI9aW50IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy00NTktcmVnaXN0ZXJfcGh5OlxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjQ2MDpcXHRyZXR1cm4gUFRSX0VSUl9PUl9aRVJPKGZpeGVkX3BoeV9yZWdpc3RlcihcXHUwMDI2c3RhdHVzLCBucCkpO1xcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTQ2MS19XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM9MTE4PXN0YXRpYyBpbnQgZml4ZWRfcGh5X2dldF9mcmVlX2FkZHIodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xMzAtXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jOjEzMTpzdHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBmaXhlZF9waHlfc3RhdHVzICpzdGF0dXMsXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTEzMi1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE3Mi19XFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jOjE3MzpFWFBPUlRfU1lNQk9MX0dQTChmaXhlZF9waHlfcmVnaXN0ZXIpO1xcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xNzQtXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jOjE3NTpzdHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKHZvaWQpXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE3Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTgxLVxcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYzoxODI6XFx0cmV0dXJuIGZpeGVkX3BoeV9yZWdpc3RlcihcXHUwMDI2c3RhdHVzLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTgzLX1cXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM6MTg0OkVYUE9SVF9TWU1CT0xfR1BMKGZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCk7XFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE4NS1cXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmg9MTk9ZXh0ZXJuIGludCBmaXhlZF9waHlfY2hhbmdlX2NhcnJpZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCBuZXdfY2Fycmllcik7XFxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaDoyMDpzdHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBmaXhlZF9waHlfc3RhdHVzICpzdGF0dXMsXFxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaC0yMS1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKTtcXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oOjIyOnN0cnVjdCBwaHlfZGV2aWNlICpmaXhlZF9waHlfcmVnaXN0ZXJfMTAwZmQodm9pZCk7XFxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaC0yMy1cXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmg9Mjk9c3RhdGljIGlubGluZSBzdHJ1Y3QgcGh5X2RldmljZSAqXFxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaDozMDpmaXhlZF9waHlfcmVnaXN0ZXIoY29uc3Qgc3RydWN0IGZpeGVkX3BoeV9zdGF0dXMgKnN0YXR1cyxcXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oLTMxLVxcdFxcdCAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oLTM1LVxcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmg6MzY6c3RhdGljIGlubGluZSBzdHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKHZvaWQpXFxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaC0zNy17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDIwOjIxOjI0LjE2MzM5Nzc4NFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoxOTY3MTcyNTI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoaXMgY29kZTpcblxuKipBbmFseXppbmcgdGhlIGBkc2FfbG9vcC5jYCBNb2R1bGUqKlxuXG5Pa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIEknbSBsb29raW5nIGF0IGBkc2FfbG9vcC5jYC4gSXQgc2VlbXMgbGlrZSBpdCdzIHJlZ2lzdGVyaW5nIHNvbWUgZml4ZWQgcGh5c2ljYWwgYWRkcmVzc2VzIGR1cmluZyBtb2R1bGUgaW5pdGlhbGl6YXRpb24sIHNwZWNpZmljYWxseSB3aXRoaW4gYGRzYV9sb29wX2luaXRgLiBUaGlzIGlzIGEgcHJldHR5IHN0YW5kYXJkIGFwcHJvYWNoIGZvciB0aGlzIGtpbmQgb2YgaGFyZHdhcmUuXG5cbkJ1dCB0aGVuLCBhIHF1ZXN0aW9uIHBvcHMgaW50byBteSBoZWFkLi4uIHdhaXQgYSBzZWNvbmQsIHdoYXQgYWJvdXQgVVNCIGV0aGVybmV0IGRvbmdsZXM/IEhvdyBhcmUgKnRob3NlKiBoYW5kbGVkLCBlc3BlY2lhbGx5IGluIHJlbGF0aW9uIHRvIHBoeSBpbnRlcmZhY2VzIGFuZCBwaHlsaWI/IEkgbmVlZCB0byBjaGVjayB3aGV0aGVyIGFueSBvZiB0aGUgVVNCIGV0aGVybmV0IGRyaXZlcnMgYXJlIGxldmVyYWdpbmcgcGh5bGliIG9yIHBoeSBkZXZpY2VzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhleSBpbnRlZ3JhdGUgd2l0aCB0aGUgcGh5c2ljYWwgbGF5ZXIuIEknbGwgbmVlZCB0byBnbyBkaWdnaW5nIGZvciB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODUxMSwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDIwOjIxOjI2LjEzMDU3MzM4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDkzNzQyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDIwMTMgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYz0yNjY9c3RhdGljIGludCBhcWMxMTFfZ2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXQsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMzIwLVxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzozMjE6c3RhdGljIHZvaWQgYXFjMTExX3NldF9waHlfc3BlZWQoc3RydWN0IHVzYm5ldCAqZGV2LCB1OCBhdXRvbmVnLCB1MTYgc3BlZWQpXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTMyMi17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMzI0LVxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzozMjU6XFx0YXFjMTExX2RhdGEtXFx1MDAzZXBoeV9jZmcgXFx1MDAyNj0gfkFRX0FEVl9NQVNLO1xcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzozMjY6XFx0YXFjMTExX2RhdGEtXFx1MDAzZXBoeV9jZmcgfD0gQVFfUEFVU0U7XFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjMyNzpcXHRhcWMxMTFfZGF0YS1cXHUwMDNlcGh5X2NmZyB8PSBBUV9BU1lNX1BBVVNFO1xcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzozMjg6XFx0YXFjMTExX2RhdGEtXFx1MDAzZXBoeV9jZmcgfD0gQVFfRE9XTlNISUZUO1xcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzozMjk6XFx0YXFjMTExX2RhdGEtXFx1MDAzZXBoeV9jZmcgXFx1MDAyNj0gfkFRX0RTSF9SRVRSSUVTX01BU0s7XFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjMzMDpcXHRhcWMxMTFfZGF0YS1cXHUwMDNlcGh5X2NmZyB8PSAoMyBcXHUwMDNjXFx1MDAzYyBBUV9EU0hfUkVUUklFU19TSElGVCkgXFx1MDAyNlxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0zMzEtXFx0XFx0XFx0XFx0QVFfRFNIX1JFVFJJRVNfTUFTSztcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0zMzUtXFx0XFx0Y2FzZSBTUEVFRF81MDAwOlxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzozMzY6XFx0XFx0XFx0YXFjMTExX2RhdGEtXFx1MDAzZXBoeV9jZmcgfD0gQVFfQURWXzVHO1xcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0zMzctXFx0XFx0XFx0ZmFsbHRocm91Z2g7XFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTMzOC1cXHRcXHRjYXNlIFNQRUVEXzI1MDA6XFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjMzOTpcXHRcXHRcXHRhcWMxMTFfZGF0YS1cXHUwMDNlcGh5X2NmZyB8PSBBUV9BRFZfMkc1O1xcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0zNDAtXFx0XFx0XFx0ZmFsbHRocm91Z2g7XFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTM0MS1cXHRcXHRjYXNlIFNQRUVEXzEwMDA6XFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjM0MjpcXHRcXHRcXHRhcWMxMTFfZGF0YS1cXHUwMDNlcGh5X2NmZyB8PSBBUV9BRFZfMUc7XFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTM0My1cXHRcXHRcXHRmYWxsdGhyb3VnaDtcXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMzQ0LVxcdFxcdGNhc2UgU1BFRURfMTAwOlxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzozNDU6XFx0XFx0XFx0YXFjMTExX2RhdGEtXFx1MDAzZXBoeV9jZmcgfD0gQVFfQURWXzEwME07XFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTM0Ni1cXHRcXHRcXHQvKiBmYWxsLXRocm91Z2ggKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0zNTAtXFx0XFx0Y2FzZSBTUEVFRF81MDAwOlxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzozNTE6XFx0XFx0XFx0YXFjMTExX2RhdGEtXFx1MDAzZXBoeV9jZmcgfD0gQVFfQURWXzVHO1xcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0zNTItXFx0XFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTM1My1cXHRcXHRjYXNlIFNQRUVEXzI1MDA6XFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjM1NDpcXHRcXHRcXHRhcWMxMTFfZGF0YS1cXHUwMDNlcGh5X2NmZyB8PSBBUV9BRFZfMkc1O1xcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0zNTUtXFx0XFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTM1Ni1cXHRcXHRjYXNlIFNQRUVEXzEwMDA6XFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjM1NzpcXHRcXHRcXHRhcWMxMTFfZGF0YS1cXHUwMDNlcGh5X2NmZyB8PSBBUV9BRFZfMUc7XFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTM1OC1cXHRcXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMzU5LVxcdFxcdGNhc2UgU1BFRURfMTAwOlxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzozNjA6XFx0XFx0XFx0YXFjMTExX2RhdGEtXFx1MDAzZXBoeV9jZmcgfD0gQVFfQURWXzEwME07XFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTM2MS1cXHRcXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0zNjQtXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjM2NTpcXHRhcWMxMTFfd3JpdGUzMl9jbWQoZGV2LCBBUV9QSFlfT1BTLCAwLCAwLCBcXHUwMDI2YXFjMTExX2RhdGEtXFx1MDAzZXBoeV9jZmcpO1xcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0zNjYtfVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jPTM2OD1zdGF0aWMgaW50IGFxYzExMV9zZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0zODItXFx0XFx0XFx0XFx0XFx0IFNQRUVEXzUwMDAgOiBTUEVFRF8xMDAwO1xcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzozODM6XFx0XFx0XFx0YXFjMTExX3NldF9waHlfc3BlZWQoZGV2LCBhcWMxMTFfZGF0YS1cXHUwMDNlYXV0b25lZyxcXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMzg0LVxcdFxcdFxcdFxcdFxcdCAgICAgYXFjMTExX2RhdGEtXFx1MDAzZWFkdmVydGlzZWRfc3BlZWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTQwMy1cXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6NDA0OlxcdFxcdGFxYzExMV9zZXRfcGh5X3NwZWVkKGRldiwgYXFjMTExX2RhdGEtXFx1MDAzZWF1dG9uZWcsXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTQwNS1cXHRcXHRcXHRcXHQgICAgIGFxYzExMV9kYXRhLVxcdTAwM2VhZHZlcnRpc2VkX3NwZWVkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYz03NTM9c3RhdGljIHZvaWQgYXFjMTExX3VuYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTc2Ni1cXHQvKiBQb3dlciBkb3duIGV0aGVybmV0IFBIWSAqL1xcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzo3Njc6XFx0YXFjMTExX2RhdGEtXFx1MDAzZXBoeV9jZmcgXFx1MDAyNj0gfkFRX0FEVl9NQVNLO1xcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzo3Njg6XFx0YXFjMTExX2RhdGEtXFx1MDAzZXBoeV9jZmcgfD0gQVFfTE9XX1BPV0VSO1xcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzo3Njk6XFx0YXFjMTExX2RhdGEtXFx1MDAzZXBoeV9jZmcgXFx1MDAyNj0gfkFRX1BIWV9QT1dFUl9FTjtcXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtNzcwLVxcdGFxYzExMV93cml0ZTMyX2NtZF9ub3BtKGRldiwgQVFfUEhZX09QUywgMCwgMCxcXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6NzcxOlxcdFxcdFxcdFxcdFxcdTAwMjZhcWMxMTFfZGF0YS1cXHUwMDNlcGh5X2NmZyk7XFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTc3Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYz05OTA9c3RhdGljIGludCBhcWMxMTFfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTEwMDQtXFx0LyogUG93ZXIgdXAgZXRoZXJuZXQgUEhZICovXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjEwMDU6XFx0YXFjMTExX2RhdGEtXFx1MDAzZXBoeV9jZmcgPSBBUV9QSFlfUE9XRVJfRU47XFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTEwMDYtXFx0YXFjMTExX3dyaXRlMzJfY21kKGRldiwgQVFfUEhZX09QUywgMCwgMCxcXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6MTAwNzpcXHRcXHRcXHQgICBcXHUwMDI2YXFjMTExX2RhdGEtXFx1MDAzZXBoeV9jZmcpO1xcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xMDA4LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTEwMjctXFx0LyogUGh5IGFkdmVydGlzZSAqL1xcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzoxMDI4OlxcdGFxYzExMV9zZXRfcGh5X3NwZWVkKGRldiwgYXFjMTExX2RhdGEtXFx1MDAzZWF1dG9uZWcsXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTEwMjktXFx0XFx0XFx0ICAgICBhcWMxMTFfZGF0YS1cXHUwMDNlYWR2ZXJ0aXNlZF9zcGVlZCk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM9MTAzND1zdGF0aWMgaW50IGFxYzExMV9zdG9wKHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xMDQ3LVxcdC8qIFB1dCBQSFkgdG8gbG93IHBvd2VyKi9cXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6MTA0ODpcXHRhcWMxMTFfZGF0YS1cXHUwMDNlcGh5X2NmZyB8PSBBUV9MT1dfUE9XRVI7XFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTEwNDktXFx0YXFjMTExX3dyaXRlMzJfY21kKGRldiwgQVFfUEhZX09QUywgMCwgMCxcXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6MTA1MDpcXHRcXHRcXHQgICBcXHUwMDI2YXFjMTExX2RhdGEtXFx1MDAzZXBoeV9jZmcpO1xcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xMDUxLVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jPTEzMjI9c3RhdGljIGludCBhcWMxMTFfc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IG1lc3NhZ2UpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMTM2MS1cXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6MTM2MjpcXHRcXHRhcWMxMTFfZGF0YS1cXHUwMDNlcGh5X2NmZyB8PSBBUV9XT0w7XFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTEzNjMtXFx0XFx0ZXRoZXJfYWRkcl9jb3B5KHdvbF9jZmcuaHdfYWRkciwgZGV2LVxcdTAwM2VuZXQtXFx1MDAzZWRldl9hZGRyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xNDAwLVxcdFxcdGFxYzExMV93cml0ZTMyX2NtZF9ub3BtKGRldiwgQVFfUEhZX09QUywgMCwgMCxcXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6MTQwMTpcXHRcXHRcXHRcXHRcXHRcXHUwMDI2YXFjMTExX2RhdGEtXFx1MDAzZXBoeV9jZmcpO1xcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xNDAyLVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjE0MDM6XFx0XFx0YXFjMTExX2RhdGEtXFx1MDAzZXBoeV9jZmcgfD0gQVFfTE9XX1BPV0VSO1xcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xNDA0LVxcdFxcdGFxYzExMV93cml0ZTMyX2NtZF9ub3BtKGRldiwgQVFfUEhZX09QUywgMCwgMCxcXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6MTQwNTpcXHRcXHRcXHRcXHRcXHRcXHUwMDI2YXFjMTExX2RhdGEtXFx1MDAzZXBoeV9jZmcpO1xcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xNDA2LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jPTE0MTg9c3RhdGljIGludCBhcWMxMTFfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTE0MjctXFx0LyogUG93ZXIgdXAgZXRoZXJuZXQgUEhZICovXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjE0Mjg6XFx0YXFjMTExX2RhdGEtXFx1MDAzZXBoeV9jZmcgfD0gQVFfUEhZX1BPV0VSX0VOO1xcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzoxNDI5OlxcdGFxYzExMV9kYXRhLVxcdTAwM2VwaHlfY2ZnIFxcdTAwMjY9IH5BUV9MT1dfUE9XRVI7XFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjE0MzA6XFx0YXFjMTExX2RhdGEtXFx1MDAzZXBoeV9jZmcgXFx1MDAyNj0gfkFRX1dPTDtcXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMTQzMS1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xNDQyLVxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzoxNDQzOlxcdGFxYzExMV9zZXRfcGh5X3NwZWVkKGRldiwgYXFjMTExX2RhdGEtXFx1MDAzZWF1dG9uZWcsXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTE0NDQtXFx0XFx0XFx0ICAgICBhcWMxMTFfZGF0YS1cXHUwMDNlYWR2ZXJ0aXNlZF9zcGVlZCk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmg9MTYxPXN0cnVjdCBhcWMxMTFfZGF0YSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmgtMTcyLVxcdH0gZndfdmVyO1xcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuaDoxNzM6XFx0dTMyIHBoeV9jZmc7XFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5oLTE3NC1cXHR1OCB3b2xfZmxhZ3M7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oPTE3OD1zdHJ1Y3QgYXNpeF9jb21tb25fcHJpdmF0ZSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTE4MS1cXHRpbnQgKCpyZXNldCkoc3RydWN0IHVzYm5ldCAqZGV2LCBpbnQgaW5fcG0pO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MTgyOlxcdHUxNiBwcmVzdmRfcGh5X2FkdmVydGlzZTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oOjE4MzpcXHR1MTYgcHJlc3ZkX3BoeV9ibWNyO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMTg0LVxcdHN0cnVjdCBhc2l4X3J4X2ZpeHVwX2luZm8gcnhfZml4dXBfaW5mbztcXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTE4NS1cXHRzdHJ1Y3QgbWlpX2J1cyAqbWRpbztcXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oOjE4NjpcXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2O1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MTg3OlxcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXZfaW50O1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMTg4LVxcdHN0cnVjdCBwaHlsaW5rICpwaHlsaW5rO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMTg5LVxcdHN0cnVjdCBwaHlsaW5rX2NvbmZpZyBwaHlsaW5rX2NvbmZpZztcXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oOjE5MDpcXHR1MTYgcGh5X2FkZHI7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXguaC0xOTEtXFx0Ym9vbCBlbWJkX3BoeTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg9MjE0PXN0cnVjdCBza19idWZmICphc2l4X3R4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMjE2LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MjE3OmludCBhc2l4X3JlYWRfcGh5X2FkZHIoc3RydWN0IHVzYm5ldCAqZGV2LCBib29sIGludGVybmFsKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTIxOC1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg9MjI5PXZvaWQgYXNpeF9zZXRfbXVsdGljYXN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXQpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMjMwLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MjMxOmludCBhc2l4X21kaW9fcmVhZChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oOjIzMjp2b2lkIGFzaXhfbWRpb193cml0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jLCBpbnQgdmFsKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTIzMy1cXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oOjIzNDppbnQgYXNpeF9tZGlvX2J1c19yZWFkKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfaWQsIGludCByZWdudW0pO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MjM1OmludCBhc2l4X21kaW9fYnVzX3dyaXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfaWQsIGludCByZWdudW0sIHUxNiB2YWwpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMjM2LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MjM3OmludCBhc2l4X21kaW9fcmVhZF9ub3BtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MjM4OnZvaWQgYXNpeF9tZGlvX3dyaXRlX25vcG0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHBoeV9pZCwgaW50IGxvYyxcXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTIzOS1cXHRcXHRcXHQgIGludCB2YWwpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM9MjY1PXN0cnVjdCBza19idWZmICphc2l4X3R4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTMyMC1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzozMjE6aW50IGFzaXhfcmVhZF9waHlfYWRkcihzdHJ1Y3QgdXNibmV0ICpkZXYsIGJvb2wgaW50ZXJuYWwpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMzIyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jPTQ0MT12b2lkIGFzaXhfc2V0X211bHRpY2FzdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNDc5LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjQ4MDpzdGF0aWMgaW50IF9fYXNpeF9tZGlvX3JlYWQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHBoeV9pZCwgaW50IGxvYyxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy00ODEtXFx0XFx0XFx0ICAgIGJvb2wgaW5fcG0pXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy00ODYtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NDg3OlxcdG11dGV4X2xvY2soXFx1MDAyNmRldi1cXHUwMDNlcGh5X211dGV4KTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy00ODgtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy00OTAtXFx0aWYgKHJldCA9PSAtRU5PREVWIHx8IHJldCA9PSAtRVRJTUVET1VUKSB7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NDkxOlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VwaHlfbXV0ZXgpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTQ5Mi1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNDk0LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjQ5NTpcXHRyZXQgPSBhc2l4X3JlYWRfY21kKGRldiwgQVhfQ01EX1JFQURfTUlJX1JFRywgcGh5X2lkLCAoX191MTYpbG9jLCAyLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTQ5Ni1cXHRcXHRcXHQgICAgXFx1MDAyNnJlcywgaW5fcG0pO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTAxLW91dDpcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MDI6XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZXBoeV9tdXRleCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTAzLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjUwNDpcXHRuZXRkZXZfZGJnKGRldi1cXHUwMDNlbmV0LCBcXFwiYXNpeF9tZGlvX3JlYWQoKSBwaHlfaWQ9MHglMDJ4LCBsb2M9MHglMDJ4LCByZXR1cm5zPTB4JTA0eFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MDU6XFx0XFx0XFx0cGh5X2lkLCBsb2MsIGxlMTZfdG9fY3B1KHJlcykpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUwNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUwOS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MTA6aW50IGFzaXhfbWRpb19yZWFkKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTExLXtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MTI6XFx0cmV0dXJuIF9fYXNpeF9tZGlvX3JlYWQobmV0ZGV2LCBwaHlfaWQsIGxvYywgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUxMy19XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTE0LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjUxNTpzdGF0aWMgaW50IF9fYXNpeF9tZGlvX3dyaXRlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTE2LVxcdFxcdFxcdCAgICAgaW50IHZhbCwgYm9vbCBpbl9wbSlcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUyMS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MjI6XFx0bmV0ZGV2X2RiZyhkZXYtXFx1MDAzZW5ldCwgXFxcImFzaXhfbWRpb193cml0ZSgpIHBoeV9pZD0weCUwMngsIGxvYz0weCUwMngsIHZhbD0weCUwNHhcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTIzOlxcdFxcdFxcdHBoeV9pZCwgbG9jLCB2YWwpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUyNC1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MjU6XFx0bXV0ZXhfbG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VwaHlfbXV0ZXgpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUyNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUzMC1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MzE6XFx0cmV0ID0gYXNpeF93cml0ZV9jbWQoZGV2LCBBWF9DTURfV1JJVEVfTUlJX1JFRywgcGh5X2lkLCAoX191MTYpbG9jLCAyLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUzMi1cXHRcXHRcXHQgICAgIFxcdTAwMjZyZXMsIGluX3BtKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUzNy1vdXQ6XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTM4OlxcdG11dGV4X3VubG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VwaHlfbXV0ZXgpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUzOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU0Mi1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1NDM6dm9pZCBhc2l4X21kaW9fd3JpdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHBoeV9pZCwgaW50IGxvYywgaW50IHZhbClcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01NDQte1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjU0NTpcXHRfX2FzaXhfbWRpb193cml0ZShuZXRkZXYsIHBoeV9pZCwgbG9jLCB2YWwsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01NDYtfVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTQ4LS8qIE1ESU8gcmVhZCBhbmQgd3JpdGUgd3JhcHBlcnMgZm9yIHBoeWxpYiAqL1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjU0OTppbnQgYXNpeF9tZGlvX2J1c19yZWFkKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfaWQsIGludCByZWdudW0pXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTUwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU1Mi1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1NTM6XFx0cmV0dXJuIF9fYXNpeF9tZGlvX3JlYWQocHJpdi1cXHUwMDNlbmV0LCBwaHlfaWQsIHJlZ251bSwgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU1NC19XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTU1LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjU1NjppbnQgYXNpeF9tZGlvX2J1c193cml0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2lkLCBpbnQgcmVnbnVtLCB1MTYgdmFsKVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU1Ny17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01NTktXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTYwOlxcdHJldHVybiBfX2FzaXhfbWRpb193cml0ZShwcml2LVxcdTAwM2VuZXQsIHBoeV9pZCwgcmVnbnVtLCB2YWwsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01NjEtfVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU2Mi1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1NjM6aW50IGFzaXhfbWRpb19yZWFkX25vcG0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHBoeV9pZCwgaW50IGxvYylcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01NjQte1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjU2NTpcXHRyZXR1cm4gX19hc2l4X21kaW9fcmVhZChuZXRkZXYsIHBoeV9pZCwgbG9jLCB0cnVlKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01NjYtfVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM9NTY4PXZvaWRcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1Njk6YXNpeF9tZGlvX3dyaXRlX25vcG0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHBoeV9pZCwgaW50IGxvYywgaW50IHZhbClcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01NzAte1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjU3MTpcXHRfX2FzaXhfbWRpb193cml0ZShuZXRkZXYsIHBoeV9pZCwgbG9jLCB2YWwsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU3Mi19XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NzA9c3RhdGljIHUzMiBhc2l4X2dldF9waHlpZChzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTcxLXtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzI6XFx0aW50IHBoeV9yZWc7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjczOlxcdHUzMiBwaHlfaWQ7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc0LVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc3LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyAxMDA7IGkrKykge1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3ODpcXHRcXHRwaHlfcmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgTUlJX1BIWVNJRDEpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3OTpcXHRcXHRpZiAocGh5X3JlZyBcXHUwMDNjIDApXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgwLVxcdFxcdFxcdHJldHVybiAwO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MTpcXHRcXHRpZiAocGh5X3JlZyAhPSAwIFxcdTAwMjZcXHUwMDI2IHBoeV9yZWcgIT0gMHhGRkZGKVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04Mi1cXHRcXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04NS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODY6XFx0aWYgKHBoeV9yZWcgXFx1MDAzYz0gMCB8fCBwaHlfcmVnID09IDB4RkZGRilcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODctXFx0XFx0cmV0dXJuIDA7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTg4LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4OTpcXHRwaHlfaWQgPSAocGh5X3JlZyBcXHUwMDI2IDB4ZmZmZikgXFx1MDAzY1xcdTAwM2MgMTY7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkwLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5MTpcXHRwaHlfcmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgTUlJX1BIWVNJRDIpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5MjpcXHRpZiAocGh5X3JlZyBcXHUwMDNjIDApXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkzLVxcdFxcdHJldHVybiAwO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05NC1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTU6XFx0cGh5X2lkIHw9IChwaHlfcmVnIFxcdTAwMjYgMHhmZmZmKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTYtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjk3OlxcdHJldHVybiBwaHlfaWQ7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xNzc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBheDg4MTcyX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTg5LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxOTA6c3RhdGljIHZvaWQgYXNpeF9waHlfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2LCB1bnNpZ25lZCBpbnQgcmVzZXRfYml0cylcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTkxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xOTMtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjE5NDpcXHRhc2l4X21kaW9fd3JpdGUoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgTUlJX0JNQ1IsIHJlc2V0X2JpdHMpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xOTUtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjE5NjpcXHQvKiBnaXZlIHBoeV9pZCBhIGNoYW5jZSB0byBwcm9jZXNzIHJlc2V0ICovXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTE5Ny1cXHR1ZGVsYXkoNTAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yMDAtXFx0d2hpbGUgKHRpbWVvdXQtLSkge1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoyMDE6XFx0XFx0aWYgKGFzaXhfbWRpb19yZWFkKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIE1JSV9CTUNSKVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yMDItXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx1MDAyNiBCTUNSX1JFU0VUKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTIwNy1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MjA4OlxcdG5ldGRldl9lcnIoZGV2LVxcdTAwM2VuZXQsIFxcXCJCTUNSX1JFU0VUIHRpbWVvdXQgb24gcGh5X2lkICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoyMDk6XFx0XFx0ICAgZGV2LVxcdTAwM2VtaWkucGh5X2lkKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMjEwLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0yMTI9c3RhdGljIGludCBheDg4MTcyX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yNTAtXFx0ZGV2LVxcdTAwM2VtaWkubWRpb193cml0ZSA9IGFzaXhfbWRpb193cml0ZTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MjUxOlxcdGRldi1cXHUwMDNlbWlpLnBoeV9pZF9tYXNrID0gMHgzZjtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMjUyLVxcdGRldi1cXHUwMDNlbWlpLnJlZ19udW1fbWFzayA9IDB4MWY7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTI1My1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MjU0OlxcdGRldi1cXHUwMDNlbWlpLnBoeV9pZCA9IGFzaXhfcmVhZF9waHlfYWRkcihkZXYsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoyNTU6XFx0aWYgKGRldi1cXHUwMDNlbWlpLnBoeV9pZCBcXHUwMDNjIDApXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjI1NjpcXHRcXHRyZXR1cm4gZGV2LVxcdTAwM2VtaWkucGh5X2lkO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yNTctXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMjYyLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoyNjM6XFx0YXNpeF9waHlfcmVzZXQoZGV2LCBCTUNSX1JFU0VUKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MjY0OlxcdGFzaXhfbWRpb193cml0ZShkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCBNSUlfQURWRVJUSVNFLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yNjUtXFx0XFx0QURWRVJUSVNFX0FMTCB8IEFEVkVSVElTRV9DU01BIHwgQURWRVJUSVNFX1BBVVNFX0NBUCk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MzEyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgYXg4ODc3Ml9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0zMjEtXFx0LnNldF9lZXByb21cXHRcXHQ9IGFzaXhfc2V0X2VlcHJvbSxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MzIyOlxcdC5ud2F5X3Jlc2V0XFx0XFx0PSBwaHlfZXRodG9vbF9ud2F5X3Jlc2V0LFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzozMjM6XFx0LmdldF9saW5rX2tzZXR0aW5nc1xcdD0gcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzozMjQ6XFx0LnNldF9saW5rX2tzZXR0aW5nc1xcdD0gcGh5X2V0aHRvb2xfc2V0X2xpbmtfa3NldHRpbmdzLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0zMjUtXFx0LnNlbGZfdGVzdFxcdFxcdD0gbmV0X3NlbGZ0ZXN0LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTM2Mj1zdGF0aWMgaW50IGF4ODg3NzJfaHdfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2LCBpbnQgaW5fcG0pXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNDA2LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo0MDc6XFx0aWYgKGluX3BtIFxcdTAwMjZcXHUwMDI2ICghYXNpeF9tZGlvX3JlYWRfbm9wbShkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy00MDgtXFx0XFx0XFx0XFx0XFx0ICAgTUlJX1BIWVNJRDEpKSl7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NDU2PXN0YXRpYyBpbnQgYXg4ODc3MmFfaHdfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2LCBpbnQgaW5fcG0pXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNDk2LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo0OTc6XFx0aWYgKGluX3BtIFxcdTAwMjZcXHUwMDI2ICghYXNpeF9tZGlvX3JlYWRfbm9wbShkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy00OTgtXFx0XFx0XFx0XFx0XFx0ICAgTUlJX1BIWVNJRDEpKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUxMi1cXHRcXHQvKiBDaGVjayBpZiB0aGUgUEhZIHJlZ2lzdGVycyBoYXZlIGRlZmF1bHQgc2V0dGluZ3MgKi9cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NTEzOlxcdFxcdHBoeTE0aCA9IGFzaXhfbWRpb19yZWFkX25vcG0oZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTE0LVxcdFxcdFxcdFxcdFxcdCAgICAgQVg4ODc3MkFfUEhZMTRIKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NTE1OlxcdFxcdHBoeTE1aCA9IGFzaXhfbWRpb19yZWFkX25vcG0oZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTE2LVxcdFxcdFxcdFxcdFxcdCAgICAgQVg4ODc3MkFfUEhZMTVIKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NTE3OlxcdFxcdHBoeTE2aCA9IGFzaXhfbWRpb19yZWFkX25vcG0oZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTE4LVxcdFxcdFxcdFxcdFxcdCAgICAgQVg4ODc3MkFfUEhZMTZIKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MjUtXFx0XFx0aWYgKHBoeTE0aCAhPSBBWDg4NzcyQV9QSFkxNEhfREVGQVVMVClcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NTI2OlxcdFxcdFxcdGFzaXhfbWRpb193cml0ZV9ub3BtKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUyNy1cXHRcXHRcXHRcXHRcXHQgICAgIEFYODg3NzJBX1BIWTE0SCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MjktXFx0XFx0aWYgKHBoeTE1aCAhPSBBWDg4NzcyQV9QSFkxNUhfREVGQVVMVClcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NTMwOlxcdFxcdFxcdGFzaXhfbWRpb193cml0ZV9ub3BtKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUzMS1cXHRcXHRcXHRcXHRcXHQgICAgIEFYODg3NzJBX1BIWTE1SCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MzMtXFx0XFx0aWYgKHBoeTE2aCAhPSBBWDg4NzcyQV9QSFkxNkhfREVGQVVMVClcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NTM0OlxcdFxcdFxcdGFzaXhfbWRpb193cml0ZV9ub3BtKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUzNS1cXHRcXHRcXHRcXHRcXHQgICAgIEFYODg3NzJBX1BIWTE2SCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz01ODM9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBheDg4NzcyX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTkxLVxcdC5uZG9fdmFsaWRhdGVfYWRkclxcdD0gZXRoX3ZhbGlkYXRlX2FkZHIsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjU5MjpcXHQubmRvX2V0aF9pb2N0bFxcdFxcdD0gcGh5X2RvX2lvY3RsX3J1bm5pbmcsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTU5My1cXHQubmRvX3NldF9yeF9tb2RlICAgICAgICA9IGFzaXhfc2V0X211bHRpY2FzdCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz02Njk9c3RhdGljIGludCBheDg4NzcyX2luaXRfbWRpbyhzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjgxLVxcdHByaXYtXFx1MDAzZW1kaW8tXFx1MDAzZW5hbWUgPSBcXFwiQXNpeCBNRElPIEJ1c1xcXCI7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjY4MjpcXHRwcml2LVxcdTAwM2VtZGlvLVxcdTAwM2VwaHlfbWFzayA9IH4oQklUKHByaXYtXFx1MDAzZXBoeV9hZGRyIFxcdTAwMjYgMHgxZikgfCBCSVQoQVhfRU1CRF9QSFlfQUREUikpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy02ODMtXFx0LyogbWlpIGJ1cyBuYW1lIGlzIHVzYi1cXHUwMDNjdXNiIGJ1cyBudW1iZXJcXHUwMDNlLVxcdTAwM2N1c2IgZGV2aWNlIG51bWJlclxcdTAwM2UgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz03MDM9c3RhdGljIGludCBheDg4NzcyX2luaXRfcGh5KHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MDctXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjcwODpcXHRwcml2LVxcdTAwM2VwaHlkZXYgPSBtZGlvYnVzX2dldF9waHkocHJpdi1cXHUwMDNlbWRpbywgcHJpdi1cXHUwMDNlcGh5X2FkZHIpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MDktXFx0aWYgKCFwcml2LVxcdTAwM2VwaHlkZXYpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MTktXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjcyMDpcXHRwaHlfc3VzcGVuZChwcml2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MjEtXFx0cHJpdi1cXHUwMDNlcGh5ZGV2LVxcdTAwM2VtYWNfbWFuYWdlZF9wbSA9IHRydWU7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTcyMi1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzIzOlxcdHBoeV9hdHRhY2hlZF9pbmZvKHByaXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTcyNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03NDEtXFx0cHJpdi1cXHUwMDNlcGh5ZGV2X2ludC1cXHUwMDNlbWFjX21hbmFnZWRfcG0gPSB0cnVlO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3NDI6XFx0cGh5X3N1c3BlbmQocHJpdi1cXHUwMDNlcGh5ZGV2X2ludCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc0My1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz03NTM9c3RhdGljIHZvaWQgYXg4ODc3Ml9tYWNfbGlua19kb3duKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3NTQ6XFx0XFx0XFx0XFx0IHVuc2lnbmVkIGludCBtb2RlLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03NTUte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTc2Mj1zdGF0aWMgdm9pZCBheDg4NzcyX21hY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3NjM6XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjc2NDpcXHRcXHRcXHQgICAgICAgdW5zaWduZWQgaW50IG1vZGUsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc2NS1cXHRcXHRcXHQgICAgICAgaW50IHNwZWVkLCBpbnQgZHVwbGV4LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTc5OT1zdGF0aWMgaW50IGF4ODg3NzJfcGh5bGlua19zZXR1cChzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODAxLVxcdHN0cnVjdCBhc2l4X2NvbW1vbl9wcml2YXRlICpwcml2ID0gZGV2LVxcdTAwM2Vkcml2ZXJfcHJpdjtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODAyOlxcdHBoeV9pbnRlcmZhY2VfdCBwaHlfaWZfbW9kZTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODAzLVxcdHN0cnVjdCBwaHlsaW5rICpwaHlsaW5rO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgxNS1cXHRpZiAocHJpdi1cXHUwMDNlZW1iZF9waHkpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgxNjpcXHRcXHRwaHlfaWZfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTDtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODE3LVxcdGVsc2VcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODE4OlxcdFxcdHBoeV9pZl9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX1JNSUk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgxOS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODIwLVxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2cHJpdi1cXHUwMDNlcGh5bGlua19jb25maWcsIGRldi1cXHUwMDNlbmV0LVxcdTAwM2VkZXYuZndub2RlLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MjE6XFx0XFx0XFx0XFx0IHBoeV9pZl9tb2RlLCBcXHUwMDI2YXg4ODc3Ml9waHlsaW5rX21hY19vcHMpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MjItXFx0aWYgKElTX0VSUihwaHlsaW5rKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz04Mjk9c3RhdGljIGludCBheDg4NzcyX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04NzctXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjg3ODpcXHRyZXQgPSBhc2l4X3JlYWRfcGh5X2FkZHIoZGV2LCB0cnVlKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODc5LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTg4MS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODgyOlxcdHByaXYtXFx1MDAzZXBoeV9hZGRyID0gcmV0O1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4ODM6XFx0cHJpdi1cXHUwMDNlZW1iZF9waHkgPSAoKHByaXYtXFx1MDAzZXBoeV9hZGRyIFxcdTAwMjYgMHgxZikgPT0gQVhfRU1CRF9QSFlfQUREUik7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTg4NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05MTMtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjkxNDpcXHRwcml2LVxcdTAwM2VwcmVzdmRfcGh5X2JtY3IgPSAwO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5MTU6XFx0cHJpdi1cXHUwMDNlcHJlc3ZkX3BoeV9hZHZlcnRpc2UgPSAwO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05MTYtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTI2LVxcdGlmIChyZXQpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjkyNzpcXHRcXHRnb3RvIGluaXRwaHlfZXJyO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05MjgtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTM3LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5Mzg6aW5pdHBoeV9lcnI6XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkzOS1cXHRwaHlsaW5rX2Rlc3Ryb3kocHJpdi1cXHUwMDNlcGh5bGluayk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9OTc1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgYXg4ODE3OF9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05ODktXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjk5MDpzdGF0aWMgaW50IG1hcnZlbGxfcGh5X2luaXQoc3RydWN0IHVzYm5ldCAqZGV2KVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05OTEte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk5NC1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTk1OlxcdG5ldGRldl9kYmcoZGV2LVxcdTAwM2VuZXQsIFxcXCJtYXJ2ZWxsX3BoeV9pbml0KClcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05OTYtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjk5NzpcXHRyZWcgPSBhc2l4X21kaW9fcmVhZChkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCBNSUlfTUFSVkVMTF9TVEFUVVMpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05OTgtXFx0bmV0ZGV2X2RiZyhkZXYtXFx1MDAzZW5ldCwgXFxcIk1JSV9NQVJWRUxMX1NUQVRVUyA9IDB4JTA0eFxcXFxuXFxcIiwgcmVnKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTk5LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDAwOlxcdGFzaXhfbWRpb193cml0ZShkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCBNSUlfTUFSVkVMTF9DVFJMLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDAxLVxcdFxcdFxcdE1BUlZFTExfQ1RSTF9SWERFTEFZIHwgTUFSVkVMTF9DVFJMX1RYREVMQVkpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMDMtXFx0aWYgKGRhdGEtXFx1MDAzZWxlZG1vZGUpIHtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAwNDpcXHRcXHRyZWcgPSBhc2l4X21kaW9fcmVhZChkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDA1LVxcdFxcdFxcdE1JSV9NQVJWRUxMX0xFRF9DVFJMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDA5LVxcdFxcdHJlZyB8PSAoMSArIDB4MDEwMCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMTA6XFx0XFx0YXNpeF9tZGlvX3dyaXRlKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMTEtXFx0XFx0XFx0TUlJX01BUlZFTExfTEVEX0NUUkwsIHJlZyk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMTItXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMTM6XFx0XFx0cmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAxNC1cXHRcXHRcXHRNSUlfTUFSVkVMTF9MRURfQ1RSTCk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAyMC1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAyMTpzdGF0aWMgaW50IHJ0bDgyMTFjbF9waHlfaW5pdChzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMjIte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMjQtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMjU6XFx0bmV0ZGV2X2RiZyhkZXYtXFx1MDAzZW5ldCwgXFxcInJ0bDgyMTFjbF9waHlfaW5pdCgpXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAyNi1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAyNzpcXHRhc2l4X21kaW9fd3JpdGUgKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIDB4MWYsIDB4MDAwNSk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMjg6XFx0YXNpeF9tZGlvX3dyaXRlIChkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCAweDBjLCAwKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAyOTpcXHRhc2l4X21kaW9fd3JpdGUgKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIDB4MDEsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMzA6XFx0XFx0YXNpeF9tZGlvX3JlYWQgKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIDB4MDEpIHwgMHgwMDgwKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAzMTpcXHRhc2l4X21kaW9fd3JpdGUgKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIDB4MWYsIDApO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDMyLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDMzLVxcdGlmIChkYXRhLVxcdTAwM2VsZWRtb2RlID09IDEyKSB7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMzQ6XFx0XFx0YXNpeF9tZGlvX3dyaXRlIChkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCAweDFmLCAweDAwMDIpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDM1OlxcdFxcdGFzaXhfbWRpb193cml0ZSAoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgMHgxYSwgMHgwMGNiKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAzNjpcXHRcXHRhc2l4X21kaW9fd3JpdGUgKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIDB4MWYsIDApO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDM3LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xMDQyPXN0YXRpYyBpbnQgbWFydmVsbF9sZWRfc3RhdHVzKHN0cnVjdCB1c2JuZXQgKmRldiwgdTE2IHNwZWVkKVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDQzLXtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTA0NDpcXHR1MTYgcmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgTUFSVkVMTF9MRURfTUFOVUFMKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTA0NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDYyLVxcdG5ldGRldl9kYmcoZGV2LVxcdTAwM2VuZXQsIFxcXCJtYXJ2ZWxsX2xlZF9zdGF0dXMoKSB3cml0aW5nIDB4JTA0eFxcXFxuXFxcIiwgcmVnKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTA2MzpcXHRhc2l4X21kaW9fd3JpdGUoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgTUFSVkVMTF9MRURfTUFOVUFMLCByZWcpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDY0LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTEwNjg9c3RhdGljIGludCBheDg4MTc4X3Jlc2V0KHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMTM1LVxcdGlmIChkYXRhLVxcdTAwM2VwaHltb2RlID09IFBIWV9NT0RFX01BUlZFTEwpIHtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTEzNjpcXHRcXHRtYXJ2ZWxsX3BoeV9pbml0KGRldik7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTExMzctXFx0XFx0bXNsZWVwKDYwKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTEzOC1cXHR9IGVsc2UgaWYgKGRhdGEtXFx1MDAzZXBoeW1vZGUgPT0gUEhZX01PREVfUlRMODIxMUNMKVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMTM5OlxcdFxcdHJ0bDgyMTFjbF9waHlfaW5pdChkZXYpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMTQwLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMTQxOlxcdGFzaXhfcGh5X3Jlc2V0KGRldiwgQk1DUl9SRVNFVCB8IEJNQ1JfQU5FTkFCTEUpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMTQyOlxcdGFzaXhfbWRpb193cml0ZShkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCBNSUlfQURWRVJUSVNFLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMTQzLVxcdFxcdFxcdEFEVkVSVElTRV9BTEwgfCBBRFZFUlRJU0VfQ1NNQSB8IEFEVkVSVElTRV9QQVVTRV9DQVApO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMTQ0OlxcdGFzaXhfbWRpb193cml0ZShkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCBNSUlfQ1RSTDEwMDAsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTExNDUtXFx0XFx0XFx0QURWRVJUSVNFXzEwMDBGVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xMjcxPXN0YXRpYyBpbnQgYXg4ODE3OF9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTI5Mi1cXHRkZXYtXFx1MDAzZW1paS5tZGlvX3dyaXRlID0gYXNpeF9tZGlvX3dyaXRlO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMjkzOlxcdGRldi1cXHUwMDNlbWlpLnBoeV9pZF9tYXNrID0gMHgxZjtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTI5NC1cXHRkZXYtXFx1MDAzZW1paS5yZWdfbnVtX21hc2sgPSAweGZmO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEyOTYtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEyOTc6XFx0ZGV2LVxcdTAwM2VtaWkucGh5X2lkID0gYXNpeF9yZWFkX3BoeV9hZGRyKGRldiwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEyOTg6XFx0aWYgKGRldi1cXHUwMDNlbWlpLnBoeV9pZCBcXHUwMDNjIDApXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEyOTk6XFx0XFx0cmV0dXJuIGRldi1cXHUwMDNlbWlpLnBoeV9pZDtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTMwMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jPTE4PXN0cnVjdCBheDg4MTcyYV9wcml2YXRlIHtcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy0xOS1cXHRzdHJ1Y3QgbWlpX2J1cyAqbWRpbztcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6MjE6MjYuMTgxNTE2Mjk4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjE4NzYyMzY4MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgQVg4ODE3MiBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgQVg4ODE3MiBkcml2ZXIsIGFuZCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhlIGNob2ljZSBiZXR3ZWVuIGBheDg4MTcyX2JpbmRgIGFuZCBgYXg4ODc3Ml9pbml0X21kaW9gLiAgTXkgZ3V0IHRlbGxzIG1lIGBheDg4NzcyX2luaXRfbWRpb2AgaXMgcHJvYmFibHkgd2hlcmUgdGhlIE1ESU8gYnVzIGluaXRpYWxpemF0aW9uIGhhcHBlbnMuIFNvLCBJJ20gaGVhZGluZyB0aGVyZSBmaXJzdC4gSSB3YW50IHRvIHNlZSBob3cgdGhpcyBNRElPIGJ1cyBpcyBiZWluZyByZWdpc3RlcmVkIGFuZCBzY2FubmVkIOKAkyB1bmRlcnN0YW5kaW5nIHRoYXQgcGFydCBpcyBrZXkgdG8gZmlndXJpbmcgb3V0IHRoZSB3aG9sZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBhbmQgaG93IHRoZSBQSFkgaXMgYmVpbmcgaGFuZGxlZC4gVGhpcyBpcyBsaWtlbHkgdGhlIGNydWNpYWwgc3RlcC4gTGV0IG1lIGdvIHRha2UgYSBsb29rIGF0IGl0Li4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxNjM3LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6MjE6MjguMDU3NzU3NDU4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTE0NDE0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZGlvYnVzX3JlZ2lzdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NjY5PXN0YXRpYyBpbnQgYXg4ODc3Ml9pbml0X21kaW8oc3RydWN0IHVzYm5ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY4Ni1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6Njg3OlxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIocHJpdi1cXHUwMDNlbWRpbyk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY4OC1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYz02MT1zdGF0aWMgaW50IGF4ODgxNzJhX2luaXRfbWRpbyhzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy03OS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzo4MDpcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKHByaXYtXFx1MDAzZW1kaW8pO1xcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTgxLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9MjA5MT1zdGF0aWMgaW50IGxhbjc4eHhfbWRpb19pbml0KHN0cnVjdCBsYW43OHh4X25ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMTIxLVxcdG5vZGUgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShkZXYtXFx1MDAzZXVkZXYtXFx1MDAzZWRldi5vZl9ub2RlLCBcXFwibWRpb1xcXCIpO1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjEyMjpcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGRldi1cXHUwMDNlbWRpb2J1cywgbm9kZSk7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMTIzLVxcdG9mX25vZGVfcHV0KG5vZGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmM9MTE0Nz1zdGF0aWMgaW50IHNtc2M5NXh4X2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jLTEyNDEtXFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmM6MTI0MjpcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKHBkYXRhLVxcdTAwM2VtZGlvYnVzKTtcXG5kcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYy0xMjQzLVxcdGlmIChyZXQpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6MjE6MjguMTA2OTA5OTQ1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjMzODM0NjEwOTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50KipcblxuT2theSwgc28gSSdtIHNlZWluZyBgbWRpb2J1c19yZWdpc3RlcmAgYmVpbmcgdXNlZCBpbiBzZXZlcmFsIFVTQiBldGhlcm5ldCBkcml2ZXIgY29udGV4dHMg4oCTIGBzbXNjOTV4eGAsIGBhc2l4X2RldmljZXNgLCBgYXg4ODE3MmFgLCB0aGF0IHNvcnQgb2YgdGhpbmcuIEludGVyZXN0aW5nLiBBbmQgdGhlbiB0aGVyZSdzIGEgY29ubmVjdGlvbiB0byBzeXprYWxsZXIgYW5kIGl0cyBVU0IgZW11bGF0aW9uIGNhcGFiaWxpdGllcywgc3BlY2lmaWNhbGx5IHRoZSByYXctZ2FkZ2V0LCB1c2JpcCwgYW5kIGR1bW15X2hjZCBzZXR1cHMuIFRoaXMgaXMgbWFraW5nIG1lIHRoaW5rIGFib3V0IGhvdyB0aGUgcGh5c2ljYWwgbGF5ZXIgaXMgZXhwb3NlZCBmb3IgdGhlc2UgZGV2aWNlcy5cblxuTXkgaW1tZWRpYXRlIG5leHQgdGhvdWdodCBpcyB0byBkcmlsbCBkb3duIGludG8gdGhlIGltcGxlbWVudGF0aW9uIG9mIGBtZGlvYnVzX3JlZ2lzdGVyYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBNRElPIGJ1cyBpcyBhY3R1YWxseSByZWdpc3RlcmVkLCBob3cgaXQncyBoYW5kbGVkIGF0IHRoZSBkcml2ZXIgbGV2ZWwsIHRoZSBjb25uZWN0aW9uIHRoYXQncyBiZWluZyBtYWRlLiBTcGVjaWZpY2FsbHksIEkgc2hvdWxkIGxvb2sgaW4gdGhlIGBkcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuY2AgZmlsZSDigJMgb3Igd2hlcmV2ZXIgdGhlIE1ESU8gYnVzIHJlZ2lzdHJhdGlvbiBsb2dpYyBhY3R1YWxseSBsaXZlcyBpbiB0aGUga2VybmVsIHNvdXJjZSwgaXQgbWF5IGhhdmUgbW92ZWQuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQncyBoYXBwZW5pbmcgdW5kZXIgdGhlIGhvb2QuIFRoaXMgbWlnaHQgcmV2ZWFsIHNvbWUgdnVsbmVyYWJpbGl0aWVzIG9yIHBvdGVudGlhbCBhcmVhcyBmb3IgZnV6emluZywgZ2l2ZW4gdGhlIHN5emthbGxlciBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjQyNiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDoyMTozMS40OTAzNzMxODlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MDM5MTQwNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19tZGlvYnVzX3JlZ2lzdGVyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L21kaW8vYWNwaV9tZGlvLmM9MzI9aW50IF9fYWNwaV9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICptZGlvLCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9hY3BpX21kaW8uYy00MC1cXHRtZGlvLVxcdTAwM2VwaHlfbWFzayA9IEdFTk1BU0soMzEsIDApO1xcbmRyaXZlcnMvbmV0L21kaW8vYWNwaV9tZGlvLmM6NDE6XFx0cmV0ID0gX19tZGlvYnVzX3JlZ2lzdGVyKG1kaW8sIG93bmVyKTtcXG5kcml2ZXJzL25ldC9tZGlvL2FjcGlfbWRpby5jLTQyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYz0xOTU9aW50IF9fb2ZfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgc3RydWN0IGRldmljZV9ub2RlICpucCxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTIwMi1cXHRpZiAoIW5wKVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjIwMzpcXHRcXHRyZXR1cm4gX19tZGlvYnVzX3JlZ2lzdGVyKG1kaW8sIG93bmVyKTtcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0yMDQtXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0yMjEtXFx0LyogUmVnaXN0ZXIgdGhlIE1ESU8gYnVzICovXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6MjIyOlxcdHJjID0gX19tZGlvYnVzX3JlZ2lzdGVyKG1kaW8sIG93bmVyKTtcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0yMjMtXFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM9NTI1PXN0YXRpYyBib29sIG1kaW9idXNfcHJldmVudF9jNDVfc2NhbihzdHJ1Y3QgbWlpX2J1cyAqYnVzKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNTM5LS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjU0MDogKiBfX21kaW9idXNfcmVnaXN0ZXIgLSBicmluZyB1cCBhbGwgdGhlIFBIWXMgb24gYSBnaXZlbiBidXMgYW5kIGF0dGFjaCB0aGVtIHRvIGJ1c1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTU0MS0gKiBAYnVzOiB0YXJnZXQgbWlpX2J1c1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNTQ1LSAqICAgb24gYSBnaXZlbiBidXMsIGFuZCBhdHRhY2ggdGhlbSB0byB0aGUgYnVzLiBEcml2ZXJzIHNob3VsZCB1c2VcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo1NDY6ICogICBtZGlvYnVzX3JlZ2lzdGVyKCkgcmF0aGVyIHRoYW4gX19tZGlvYnVzX3JlZ2lzdGVyKCkgdW5sZXNzIHRoZXlcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy01NDctICogICBuZWVkIHRvIHBhc3MgYSBzcGVjaWZpYyBvd25lciBtb2R1bGUuIE1ESU8gZGV2aWNlcyB3aGljaCBhcmUgbm90XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy01NTItICovXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NTUzOmludCBfX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKmJ1cywgc3RydWN0IG1vZHVsZSAqb3duZXIpXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNTU0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTY2Ni19XFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NjY3OkVYUE9SVF9TWU1CT0woX19tZGlvYnVzX3JlZ2lzdGVyKTtcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy02NjgtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZyZXMuYz03Mz1pbnQgX19kZXZtX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgbWlpX2J1cyAqYnVzLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2cmVzLmMtODYtXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2cmVzLmM6ODc6XFx0cmV0ID0gX19tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgb3duZXIpO1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldnJlcy5jLTg4LVxcdGlmIChyZXQpIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5Lmg9NDQyPXN0YXRpYyBpbmxpbmUgc3RydWN0IG1paV9idXMgKm1kaW9idXNfYWxsb2Modm9pZClcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5LmgtNDQ2LVxcbmluY2x1ZGUvbGludXgvcGh5Lmg6NDQ3OmludCBfX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKmJ1cywgc3RydWN0IG1vZHVsZSAqb3duZXIpO1xcbmluY2x1ZGUvbGludXgvcGh5LmgtNDQ4LWludCBfX2Rldm1fbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBtaWlfYnVzICpidXMsXFxuaW5jbHVkZS9saW51eC9waHkuaC00NDktXFx0XFx0XFx0ICAgIHN0cnVjdCBtb2R1bGUgKm93bmVyKTtcXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjQ1MDojZGVmaW5lIG1kaW9idXNfcmVnaXN0ZXIoYnVzKSBfX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBUSElTX01PRFVMRSlcXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTQ1MS0jZGVmaW5lIGRldm1fbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cykgXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDoyMTozMy4wOTQyOTIzNTlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTE5OTQ4NzUxOTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIFBIWSBGaXh1cCBQYXRjaCoqXG5cbk9rYXksIGhlcmUncyB0aGUgYnJlYWtkb3duLiBUaGlzIHBhdGNoIHByaW1hcmlseSBjb25jZXJucyB0aGUgUEhZIChQaHlzaWNhbCBMYXllcikgZml4dXAgbWVjaGFuaXNtIHdpdGhpbiB0aGUgbmV0d29ya2luZyBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSB0aGUgUEhZIGxpYnJhcnkuIEl0J3MgYWJvdXQgaG93IHRoZSBrZXJuZWwgaGFuZGxlcyBzcGVjaWZpYyBoYXJkd2FyZSBxdWlya3MgYW5kIHdvcmthcm91bmRzIGZvciB2YXJpb3VzIFBIWSBkZXZpY2VzLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyB3ZW50IGxpa2UgdGhpczogYF9fbWRpb2J1c19yZWdpc3RlcmAgaXMgdGhlIGVudHJ5IHBvaW50LCBhbmQgaXQgbGVhZHMgdG8gUEhZIHByb2JpbmcgYW5kIHJlZ2lzdHJhdGlvbiwgd2hpY2ggaW4gdHVybiBpbnZvbHZlcyBgcGh5X3NjYW5fZml4dXBzYC4gVGhlIGZpeHVwIGlzIGNhbGxlZCBmcm9tIGBwaHlfZGV2aWNlX3JlZ2lzdGVyYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCB0aGlzIHNwZWNpZmljIHBhdGNoIGlzIGFjdHVhbGx5IGNoYW5naW5nLiBJIHJlLWV4YW1pbmVkIHRoZSBwYXRjaCB0byB1bmRlcnN0YW5kIHRoZSBtb2RpZmljYXRpb25zLlxuXG5UaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmaWxlLCBgcGh5X2ZpeHVwLmNgLCBhbmQgbW9kaWZpZXMgYGRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZWAgYW5kIGBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jYC4gTG9va2luZyBjYXJlZnVsbHksIGl0IGFwcGVhcnMgdGhlIHBhdGNoIGlzIHJlbW92aW5nIHRoZSBvbGQgaW4tcGxhY2UgaW1wbGVtZW50YXRpb24gb2YgYHBoeV9yZWdpc3Rlcl9maXh1cGAgZXRjLiBhbmQgbW92aW5nIHRoZSBpbXBsZW1lbnRhdGlvbiBpbnRvIGEgc2VwYXJhdGUgZmlsZSAoYHBoeV9maXh1cC5jYCkuIFRoZSBjb2RlIHRvIHJlZ2lzdGVyIGZpeHVwcyBpcyBub3cgYF9faW5pdGAsIG1lYW5pbmcgaXQgaGFwcGVucyBvbmx5IGR1cmluZyBib290LCBub3QgZHluYW1pY2FsbHkgYXQgcnVudGltZS4gVGhlIHByZXZpb3VzIGNhbGxzIHRvIGBwaHlfcmVnaXN0ZXJfZml4dXBfKmAgd2VyZSBkb25lIHZpYSBgRVhQT1JUX1NZTUJPTGAsIHdoaWNoIGhhcyBiZWVuIHJlbW92ZWQuXG5cbkhlcmUncyB0aGUgY3JpdGljYWwgYml0OiB0aGUgZnVuY3Rpb25zIGBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZGAgYW5kIGBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX2lkYCBhbmQgYHBoeV9yZWdpc3Rlcl9maXh1cGAgYXJlIE5FVkVSIHVzZWQgb24gdGhlIGFtZDY0IGFyY2hpdGVjdHVyZS4gSSB2ZXJpZmllZCB0aGlzIGJ5IGNoZWNraW5nIHRoZSBjYWxsZXJzIG9mIHRob3NlIGZ1bmN0aW9ucyB3aGljaCBhcmUgZm91bmQgb25seSBvbiBBUk0gYW5kIFBvd2VyUEMgcGxhdGZvcm1zLiBUaGUgYHBoeV9maXh1cF9saXN0YCBpcyBhbHdheXMgZW1wdHkgb24gYW1kNjQgZHVyaW5nIHJ1bnRpbWUuIFNpbmNlIGl0J3MgZW1wdHksIGFuZCB0aGUgbGlzdCBpcyByZWFkLW9ubHkgYWZ0ZXIgaW5pdCwgYHBoeV9zY2FuX2ZpeHVwc2AgZG9lcyBub3RoaW5nIG1vcmUgdGhhbiByZXR1cm4gMC4gVGhlIHJlbW92YWwgb2YgdGhlIG11dGV4IGlzIG5vdCBhbiBpc3N1ZSBiZWNhdXNlIHRoZXJlIGlzIG5vIHJlZ2lzdHJhdGlvbiBoYXBwZW5pbmcgYWZ0ZXIgaW5pdGlhbGl6YXRpb24uXG5cbkVmZmVjdGl2ZWx5LCBvbiBhbWQ2NCwgdGhlIGZ1bmN0aW9uYWxpdHkgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggaXMgYSBuby1vcDsgdGhlIGNvZGUgcGF0aHMgcmVsYXRlZCB0byBmaXh1cHMgYXJlIG5vdCBleGVjdXRlZC4gVGhlIGNoYW5nZSBpcyBzYWZlIGZvciBhbWQ2NCwgYXMgdGhlcmUgYXJlIG5vIGNhbGxzIGFuZCBubyBkZXBlbmRlbmNpZXMgb24gYW1kNjQuIFRoZXJlZm9yZSwgdGhlIHBhdGNoIGFwcGVhcnMgdG8gYmUgYSBjbGVhbi11cCBhbmQgcmVmYWN0b3JpbmcsIHJlbGV2YW50IG9ubHkgdG8gc3BlY2lmaWMsIG5vbi1hbWQ2NCBhcmNoaXRlY3R1cmVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzg4NiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4NDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6MjE6NDUuMDg5MTcwMDQ0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjA1Mzg4NjIxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeV9yZWdpc3Rlcl9maXh1cFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdD01Mjc9VGhlIHBsYXRmb3JtIGNvZGUgY2FuIHJlZ2lzdGVyIHRoZSBmaXh1cCB1c2luZyBvbmUgb2Y6OlxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0LTUyOC1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdDo1Mjk6IGludCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZCh1MzIgcGh5X3VpZCwgdTMyIHBoeV91aWRfbWFzayxcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdC01MzAtXFx0XFx0aW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSk7XFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3Q6NTMxOiBpbnQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZChjb25zdCBjaGFyICpwaHlfaWQsXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3QtNTMyLVxcdFxcdGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpO1xcbi0tXFxuYXJjaC9hcm0vbWFjaC1pbXgvbWFjaC1pbXg2cS5jPTcxPXN0YXRpYyB2b2lkIF9faW5pdCBpbXg2cV9lbmV0X3BoeV9pbml0KHZvaWQpXFxuLS1cXG5hcmNoL2FybS9tYWNoLWlteC9tYWNoLWlteDZxLmMtNzMtXFx0aWYgKElTX0JVSUxUSU4oQ09ORklHX1BIWUxJQikpIHtcXG5hcmNoL2FybS9tYWNoLWlteC9tYWNoLWlteDZxLmM6NzQ6XFx0XFx0cGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQoUEhZX0lEX0tTWjkwMjEsIE1JQ1JFTF9QSFlfSURfTUFTSyxcXG5hcmNoL2FybS9tYWNoLWlteC9tYWNoLWlteDZxLmMtNzUtXFx0XFx0XFx0XFx0a3N6OTAyMXJuX3BoeV9maXh1cCk7XFxuLS1cXG5hcmNoL2FybS9tYWNoLWlteC9tYWNoLWlteDdkLmM9MzA9c3RhdGljIHZvaWQgX19pbml0IGlteDdkX2VuZXRfcGh5X2luaXQodm9pZClcXG4tLVxcbmFyY2gvYXJtL21hY2gtaW14L21hY2gtaW14N2QuYy0zMi1cXHRpZiAoSVNfQlVJTFRJTihDT05GSUdfUEhZTElCKSkge1xcbmFyY2gvYXJtL21hY2gtaW14L21hY2gtaW14N2QuYzozMzpcXHRcXHRwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZChQSFlfSURfQkNNNTQyMjAsIDB4ZmZmZmZmZmYsXFxuYXJjaC9hcm0vbWFjaC1pbXgvbWFjaC1pbXg3ZC5jLTM0LVxcdFxcdFxcdFxcdFxcdCAgIGJjbTU0MjIwX3BoeV9maXh1cCk7XFxuLS1cXG5hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jPTI1OD1zdGF0aWMgdm9pZCBfX2luaXQgYXB4NGRldmtpdF9pbml0KHZvaWQpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jLTI2Mi1cXHRpZiAoSVNfQlVJTFRJTihDT05GSUdfUEhZTElCKSlcXG5hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jOjI2MzpcXHRcXHRwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZChQSFlfSURfS1NaODA1MSwgTUlDUkVMX1BIWV9JRF9NQVNLLFxcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmMtMjY0LVxcdFxcdFxcdFxcdFxcdCAgIGFweDRkZXZraXRfcGh5X2ZpeHVwKTtcXG4tLVxcbmFyY2gvYXJtL21hY2gtb3Jpb241eC9kbnMzMjMtc2V0dXAuYz02MTI9c3RhdGljIHZvaWQgX19pbml0IGRuczMyM19pbml0KHZvaWQpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvZG5zMzIzLXNldHVwLmMtNjc3LVxcdFxcdFxcdGJyZWFrO1xcbmFyY2gvYXJtL21hY2gtb3Jpb241eC9kbnMzMjMtc2V0dXAuYzo2Nzg6XFx0XFx0cGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQoTUFSVkVMTF9QSFlfSURfODhFMTExOCxcXG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvZG5zMzIzLXNldHVwLmMtNjc5LVxcdFxcdFxcdFxcdFxcdCAgIE1BUlZFTExfUEhZX0lEX01BU0ssXFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzg1eHgvbXBjODV4eF9tZHMuYz0yODI9c3RhdGljIGludCBfX2luaXQgYm9hcmRfZml4dXBzKHZvaWQpXFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzg1eHgvbXBjODV4eF9tZHMuYy0yOTYtXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84NXh4L21wYzg1eHhfbWRzLmM6Mjk3OlxcdFxcdHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWQocGh5X2lkLCBtcGM4NTY4X2ZpeHVwXzEyNV9jbG9jayk7XFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84NXh4L21wYzg1eHhfbWRzLmM6Mjk4OlxcdFxcdHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWQocGh5X2lkLCBtcGM4NTY4X21kc19waHlfZml4dXBzKTtcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzg1eHgvbXBjODV4eF9tZHMuYy0yOTktXFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzg1eHgvbXBjODV4eF9tZHMuYy0zMDItXFx0XFx0XFx0KHVuc2lnbmVkIGxvbmcgbG9uZylyZXMuc3RhcnQsIDcpO1xcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODV4eC9tcGM4NXh4X21kcy5jOjMwMzpcXHRcXHRwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX2lkKHBoeV9pZCwgbXBjODU2OF9tZHNfcGh5X2ZpeHVwcyk7XFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84NXh4L21wYzg1eHhfbWRzLmMtMzA0LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jPTE2PXN0cnVjdCBwaHlfZml4dXAge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTI0LS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYzoyNTogKiBwaHlfcmVnaXN0ZXJfZml4dXAgLSBjcmVhdGVzIGEgbmV3IHBoeV9maXh1cCBhbmQgYWRkcyBpdCB0byB0aGUgbGlzdFxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYy0yNi0gKiBAYnVzX2lkOiBBIHN0cmluZyB3aGljaCBtYXRjaGVzIHBoeWRldi1cXHUwMDNlbWRpby5kZXYuYnVzX2lkIChvciBQSFlfQU5ZX0lEKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTMyLSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYzozMzpzdGF0aWMgdm9pZCBfX2luaXQgcGh5X3JlZ2lzdGVyX2ZpeHVwKGNvbnN0IGNoYXIgKmJ1c19pZCwgdTMyIHBoeV91aWQsXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTM0LVxcdFxcdFxcdFxcdCAgICAgIHUzMiBwaHlfdWlkX21hc2ssXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMtNTEtLyogUmVnaXN0ZXJzIGEgZml4dXAgdG8gYmUgcnVuIG9uIGFueSBQSFkgd2l0aCB0aGUgVUlEIGluIHBoeV91aWQgKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmM6NTI6dm9pZCBfX2luaXQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQodTMyIHBoeV91aWQsIHUzMiBwaHlfdWlkX21hc2ssXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTUzLVxcdFxcdFxcdFxcdCAgICAgICBpbnQgKCpydW4pKHN0cnVjdCBwaHlfZGV2aWNlICopKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYy01NC17XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jOjU1OlxcdHBoeV9yZWdpc3Rlcl9maXh1cChOVUxMLCBwaHlfdWlkLCBwaHlfdWlkX21hc2ssIHJ1bik7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTU2LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYy01OC0vKiBSZWdpc3RlcnMgYSBmaXh1cCB0byBiZSBydW4gb24gdGhlIFBIWSB3aXRoIGlkIHN0cmluZyBidXNfaWQgKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmM6NTk6dm9pZCBfX2luaXQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZChjb25zdCBjaGFyICpidXNfaWQsXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTYwLVxcdFxcdFxcdFxcdCAgICAgIGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTYxLXtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmM6NjI6XFx0cGh5X3JlZ2lzdGVyX2ZpeHVwKGJ1c19pZCwgMCwgMCwgcnVuKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMtNjMtfVxcbi0tXFxuaW5jbHVkZS9saW51eC9waHkuaD0yNDIyPXZvaWQgcGh5X3Jlc29sdmVfcGF1c2UodW5zaWduZWQgbG9uZyAqbG9jYWxfYWR2LCB1bnNpZ25lZCBsb25nICpwYXJ0bmVyX2FkdixcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5LmgtMjQyNC1cXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjI0MjU6dm9pZCBfX2luaXQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZChjb25zdCBjaGFyICpidXNfaWQsXFxuaW5jbHVkZS9saW51eC9waHkuaC0yNDI2LVxcdFxcdFxcdFxcdCAgICAgIGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpO1xcbmluY2x1ZGUvbGludXgvcGh5Lmg6MjQyNzp2b2lkIF9faW5pdCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZCh1MzIgcGh5X3VpZCwgdTMyIHBoeV91aWRfbWFzayxcXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTI0MjgtXFx0XFx0XFx0XFx0ICAgICAgIGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDoyMTo0Ni42OTQ1NzE5OTVaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NDYxNjM0MzQ1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gUEhZIEZpeHVwcyoqXG5cbk9rYXksIHNvIEkgbmVlZCBhIHJlZnJlc2hlciBvbiBQSFkgZml4dXBzLiBMZXQncyBzZWUuLi4gdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyB0aGUgZG9jdW1lbnRhdGlvbi4gU3BlY2lmaWNhbGx5LCBJJ2xsIGhlYWQgb3ZlciB0byBgRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3RgLiBUaGF0J3Mgd2hlcmUgdGhlIGNvcmUgbmV0d29ya2luZyBkb2N1bWVudGF0aW9uIGxpdmVzLCBzbyBpdCdzIGEgc2FmZSBiZXQgdGhhdCBQSFktcmVsYXRlZCBpbmZvcm1hdGlvbiB3aWxsIGJlIHRoZXJlLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgYSBzb2xpZCBvdmVydmlldyBvZiB3aGF0IHRoZXNlIGZpeHVwcyBhY3R1YWxseSAqZG8qLCB0aGUgcmF0aW9uYWxlIGJlaGluZCB0aGVtLCBhbmQgaG9wZWZ1bGx5LCBzb21lIGV4YW1wbGVzIG9mIGNvbW1vbiBzY2VuYXJpb3Mgd2hlcmUgdGhleSdyZSBuZWNlc3NhcnkuIEknbSBhbHNvIGhvcGluZyBmb3IgbGlua3MgdG8gcmVsZXZhbnQgY29kZSwgbWF5YmUgc29tZSBkaXNjdXNzaW9ucyBvbiBiZXN0IHByYWN0aWNlcywgYW5kIHBvdGVudGlhbGx5IHNvbWUgcG9pbnRlcnMgdG8gdGhlIGtlcm5lbCBpbmZyYXN0cnVjdHVyZSBpbnZvbHZlZC4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBmaWd1cmluZyBvdXQgdGhlIGRlc2lnbiBwcmluY2lwbGVzIGJlaGluZCB0aGUgZml4dXBzLi4uIHRoZSBnZW5lcmFsIG1ldGhvZG9sb2d5IGZvciBhZGRyZXNzaW5nIGlzc3VlcyB3aXRoIGRpZmZlcmVudCBQSFkgaW1wbGVtZW50YXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDE4NCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDIwOjIxOjUxLjMxMDkxODI5NVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDU5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdFwiLFxuICBcIkZpcnN0TGluZVwiOiA1MTUsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1MTU6XFx0Zml4dXBzIHRvIGJlIHJ1biB3aGVuIHRoZSBQSFkgaXMgYnJvdWdodCB1cCAob3Igc3Vic2VxdWVudGx5IHJlc2V0KS5cXG4gNTE2OlxcdFxcbiA1MTc6XFx0V2hlbiB0aGUgUEhZIExheWVyIGJyaW5ncyB1cCBhIFBIWSBpdCBjaGVja3MgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgZml4dXBzXFxuIDUxODpcXHRyZWdpc3RlcmVkIGZvciBpdCwgbWF0Y2hpbmcgYmFzZWQgb24gVUlEIChjb250YWluZWQgaW4gdGhlIFBIWSBkZXZpY2UncyBwaHlfaWRcXG4gNTE5OlxcdGZpZWxkKSBhbmQgdGhlIGJ1cyBpZGVudGlmaWVyIChjb250YWluZWQgaW4gcGh5ZGV2LVxcdTAwM2VkZXYuYnVzX2lkKS4gIEJvdGggbXVzdFxcbiA1MjA6XFx0bWF0Y2gsIGhvd2V2ZXIgdHdvIGNvbnN0YW50cywgUEhZX0FOWV9JRCBhbmQgUEhZX0FOWV9VSUQsIGFyZSBwcm92aWRlZCBhc1xcbiA1MjE6XFx0d2lsZGNhcmRzIGZvciB0aGUgYnVzIElEIGFuZCBVSUQsIHJlc3BlY3RpdmVseS5cXG4gNTIyOlxcdFxcbiA1MjM6XFx0V2hlbiBhIG1hdGNoIGlzIGZvdW5kLCB0aGUgUEhZIGxheWVyIHdpbGwgaW52b2tlIHRoZSBydW4gZnVuY3Rpb24gYXNzb2NpYXRlZFxcbiA1MjQ6XFx0d2l0aCB0aGUgZml4dXAuICBUaGlzIGZ1bmN0aW9uIGlzIHBhc3NlZCBhIHBvaW50ZXIgdG8gdGhlIHBoeV9kZXZpY2Ugb2ZcXG4gNTI1OlxcdGludGVyZXN0LiAgSXQgc2hvdWxkIHRoZXJlZm9yZSBvbmx5IG9wZXJhdGUgb24gdGhhdCBQSFkuXFxuIDUyNjpcXHRcXG4gNTI3OlxcdFRoZSBwbGF0Zm9ybSBjb2RlIGNhbiByZWdpc3RlciB0aGUgZml4dXAgdXNpbmcgb25lIG9mOjpcXG4gNTI4OlxcdFxcbiA1Mjk6XFx0IGludCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZCh1MzIgcGh5X3VpZCwgdTMyIHBoeV91aWRfbWFzayxcXG4gNTMwOlxcdFxcdFxcdGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpO1xcbiA1MzE6XFx0IGludCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX2lkKGNvbnN0IGNoYXIgKnBoeV9pZCxcXG4gNTMyOlxcdFxcdFxcdGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpO1xcbiA1MzM6XFx0XFxuIDUzNDpcXHRTdGFuZGFyZHNcXG4gNTM1OlxcdD09PT09PT09PVxcbiA1MzY6XFx0XFxuIDUzNzpcXHRJRUVFIFN0YW5kYXJkIDgwMi4zOiBDU01BL0NEIEFjY2VzcyBNZXRob2QgYW5kIFBoeXNpY2FsIExheWVyIFNwZWNpZmljYXRpb25zLCBTZWN0aW9uIFR3bzpcXG4gNTM4OlxcdGh0dHA6Ly9zdGFuZGFyZHMuaWVlZS5vcmcvZ2V0aWVlZTgwMi9kb3dubG9hZC84MDIuMy0yMDA4X3NlY3Rpb24yLnBkZlxcbiA1Mzk6XFx0XFxuIDU0MDpcXHRSR01JSSB2MS4zOlxcbiA1NDE6XFx0aHR0cDovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxNjAzMDMyMTI2MjkvaHR0cDovL3d3dy5ocC5jb20vcm5kL3BkZnMvUkdNSUl2MV8zLnBkZlxcbiA1NDI6XFx0XFxuIDU0MzpcXHRSR01JSSB2Mi4wOlxcbiA1NDQ6XFx0aHR0cDovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxNjAzMDMxNzEzMjgvaHR0cDovL3d3dy5ocC5jb20vcm5kL3BkZnMvUkdNSUl2Ml8wX2ZpbmFsX2hwLnBkZlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDoyMTo1MS4zMTEwMDE1MTVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTE3MjQ3MTY1OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgUEhZIEZpeHVwIFBhdGNoIGZvciBGdXp6aW5nIFN1aXRhYmlsaXR5KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiB0aGlzIGNvbW1pdC4gSXQgYXBwZWFycyB0byBpbnZvbHZlIGNoYW5nZXMgdG8gUEhZIChQaHlzaWNhbCBMYXllcikgZGV2aWNlIGZpeHVwcyB3aXRoaW4gdGhlIG5ldHdvcmtpbmcgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byB0aGUgcmVnaXN0cmF0aW9uIGFuZCBleGVjdXRpb24gb2YgdGhlc2UgZml4dXBzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBmbG93IGFuZCBpZGVudGlmeSBpZiBhbnkgY29kZSBtb2RpZmljYXRpb25zIGludHJvZHVjZSBuZXcgdnVsbmVyYWJpbGl0aWVzIG9yIHJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHMgZm9yIHRoZSBhbWQ2NCBhcmNoaXRlY3R1cmUsIHdoaWNoIGlzIG91ciB0YXJnZXQuXG5cbkkgbmVlZCB0byBjb25maXJtIHRoZSBjaGFuZ2VzOiBXZSBoYXZlIGFsdGVyYXRpb25zIGluIGBkcml2ZXJzL25ldC9waHkvTWFrZWZpbGVgLCBgcGh5X2RldmljZS5jYCwgYW5kIGEgKm5ldyogYHBoeV9maXh1cC5jYCBmaWxlLCBhbG9uZyB3aXRoIGFkanVzdG1lbnRzIHRvIGBwaHlsaWItaW50ZXJuYWwuaGAgYW5kIGBsaW51eC9waHkuaGAuIFRoaXMgc3VnZ2VzdHMgYSByZWZhY3RvcmluZyBvZiBmaXh1cCByZWdpc3RyYXRpb24gYW5kIGhhbmRsaW5nLiBJIG5vdGUgdGhlIHJlbW92YWwgb2YgYSBtdXRleCBpbiBgcGh5X3NjYW5fZml4dXBzYC4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgd2hldGhlciB0aGlzIGNyZWF0ZXMgYW55IHJhY2UgY29uZGl0aW9ucyBvciBuZXcgZXhlY3V0aW9uIGZsb3dzIG9uIGBhbWQ2NGAuXG5cblRoZSBjb3JlIHRyaWFnZSBwaGlsb3NvcGh5IHN0YXRlcyByZWFjaGFiaWxpdHkgaXMgdGhlIHByaW1hcnkgZ2F0ZS4gSSd2ZSBnb3QgdG8gZW5zdXJlIHRoZSBtb2RpZmllZCBjb2RlIGNhbiAqYWN0dWFsbHkqIGV4ZWN1dGUgaW4gb3VyIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVW5yZWFjaGFibGUgY29kZSAqbXVzdCBub3QqIGJlIGZ1enplZC5cblxuTXkgcHJpbWFyeSBmb2N1cyBpcyBvbiBgcGh5X3JlZ2lzdGVyX2ZpeHVwYCwgYHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfdWlkYCwgYHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWRgLCBhbmQgYHBoeV9uZWVkc19maXh1cGAuIEFyZSB0aGVzZSBmdW5jdGlvbnMgY2FsbGVkIG9uIGBhbWQ2NGA/IExldCdzIGNoZWNrLiBBaCwgaXQgbG9va3MgbGlrZSBgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWRgIGFuZCBgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZGAgYXJlIG9ubHkgY2FsbGVkIGZyb20gd2l0aGluIEFSTSBhbmQgUG93ZXJQQy1zcGVjaWZpYyBib2FyZCBpbml0aWFsaXphdGlvbiBjb2RlLiBUaGVzZSBhcmNoaXRlY3R1cmVzIGFyZSBub3QgcmVsZXZhbnQgdG8gb3VyIHRhcmdldCBvZiBhbWQ2NC4gQWRkaXRpb25hbGx5LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGRlZmluaXRpb24uIFRoZXkncmUgbWFya2VkIGFzIGBfX2luaXRgIGZ1bmN0aW9ucyBhbmQgbm90IGV4cG9ydGVkIHdoaWNoIGNvbmZpcm1zIG15IGluaXRpYWwgdGhvdWdodHMuIFRoZXJlZm9yZSwgdGhlc2UgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucyBhcmUgKm5ldmVyKiBjYWxsZWQsIG5vciBhdmFpbGFibGUgdG8gbG9hZCBvbiBgYW1kNjRgLlxuXG5JZiB0aGUgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucyBhcmUgbmV2ZXIgY2FsbGVkIG9uIGBhbWQ2NGAsIHRoZW4gdGhlIGBwaHlfZml4dXBfbGlzdGAgKm11c3QqIGFsd2F5cyBiZSBlbXB0eSBvbiBgYW1kNjRgLiBUaGlzIGlzIGNyaXRpY2FsLlxuXG5Ob3csIGxldCdzIGV4YW1pbmUgYHBoeV9zY2FuX2ZpeHVwc2AuIEl0J3MgY3J1Y2lhbCB0byBldmFsdWF0ZSBpZiB0aGUgcmVtb3ZhbCBvZiB0aGUgbXV0ZXggaW4gdGhpcyBmdW5jdGlvbiBvcGVucyBhbnkgc2VjdXJpdHkgaW1wbGljYXRpb25zIG9uIGBhbWQ2NGAuIEl0IHdpbGwgYmUgY2FsbGVkICppZiogYW55IFBIWSBpcyByZWdpc3RlcmVkIG9yIHNjYW5uZWQuIFNpbmNlIGBwaHlfZml4dXBfbGlzdGAgaXMgYWx3YXlzIGVtcHR5IG9uIGBhbWQ2NGAsIHRoZSBsb29wIGJvZHkgd2l0aGluIGBwaHlfc2Nhbl9maXh1cHNgIGlzIG5ldmVyIGV4ZWN1dGVkLiBJdCdzIGVmZmVjdGl2ZWx5IGp1c3QgYSBjaGVjayBmb3IgYW4gZW1wdHkgbGlzdCBhbmQgYSByZXR1cm4gMC4gVGhlIHBhdGNoIHJlbW92ZWQgYSBtdXRleCBpbiB0aGlzIGZ1bmN0aW9uLCBidXQgaXQgaXMgZW50aXJlbHkgaXJyZWxldmFudCBzaW5jZSBgcGh5X3NjYW5fZml4dXBzYCBkb2VzIHZpcnR1YWxseSBub3RoaW5nLlxuXG5Tbywgb24gYGFtZDY0YCwgd2hhdCBpcyByZWFjaGFibGU6XG4qICBgcGh5X3NjYW5fZml4dXBzKClgIGlzIGNhbGxlZCwgY2hlY2tzIHRoZSBlbXB0eSBgcGh5X2ZpeHVwX2xpc3RgLCBhbmQgcmV0dXJucyAwLlxuXG5CYXNlZCBvbiB0aGUgaW5zdHJ1Y3Rpb25zLCBzaW5jZSBhbGwgdGhlIG1vZGlmaWVkIGNvZGUgc3RyaWN0bHkgZmFsbHMgaW50byB0aGUgbmVnYXRpdmUgY3JpdGVyaWEgZGVzY3JpYmVkIChzcGVjaWZpY2FsbHkgXCJjb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmVcIiBhbmQgdGh1cyBcInVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoc1wiKSBBTkQgZ2l2ZW4gdGhlIHNwZWNpZmljIHJlYWNoYWJpbGl0eSBjcml0ZXJpYSwgZnV6emluZyB0aGlzIHBhdGNoIHdvdWxkIGJlIGEgd2FzdGUgb2YgdGltZSBhbmQgY29tcHV0YXRpb25hbCByZXNvdXJjZXMuIGBXb3J0aEZ1enppbmdgIG11c3QgYmUgc2V0IHRvIGBmYWxzZWAuXG5cbkZ1cnRoZXJtb3JlLCBJIGhhdmUgdmVyaWZpZWQgdGhpcyBjb25jbHVzaW9uIG1lZXRzIGFsbCByZXF1aXJlbWVudHMgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTA1MiwiT3V0cHV0VG9rZW5zIjoxOTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzQxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6MjI6MDMuMDM1NzIwODkxWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY3OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZXh0cmFjdHMgUEhZIGZpeHVwIHJlZ2lzdHJhdGlvbiBpbnRvIGRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYyBhbmQgbWFya3MgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucyBhcyBfX2luaXQuIFRoZSBvbmx5IGNhbGxlcnMgb2YgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQoKSBhbmQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZCgpIGluIHRoZSBrZXJuZWwgYXJlIHBsYXRmb3JtLXNwZWNpZmljIGVhcmx5LWJvb3QgY29kZSBvbiBBUk0gKGFyY2gvYXJtL21hY2gtKikgYW5kIFBvd2VyUEMgKGFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvKiksIHdpdGggbm8gY2FsbGVycyBvbiBhbWQ2NC4gTmVpdGhlciBmdW5jdGlvbiBpcyBleHBvcnRlZCB0byBtb2R1bGVzLiBDb25zZXF1ZW50bHksIG9uIGFtZDY0LCBwaHlfZml4dXBfbGlzdCBpcyBwZXJtYW5lbnRseSBlbXB0eSwgcmVuZGVyaW5nIHRoZSBtYXRjaGluZyBsb2dpYyAocGh5X25lZWRzX2ZpeHVwKSBhbmQgZml4dXAgZXhlY3V0aW9uIHBhdGggaW5zaWRlIHBoeV9zY2FuX2ZpeHVwcygpIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4gRnV6emluZyBvbiBhbWQ2NCBjYW5ub3QgZXhlcmNpc2UgdGhlIG1vZGlmaWVkIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZXh0cmFjdHMgUEhZIGZpeHVwIHJlZ2lzdHJhdGlvbiBpbnRvIGRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYyBhbmQgbWFya3MgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucyBhcyBfX2luaXQuIFRoZSBvbmx5IGNhbGxlcnMgb2YgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQoKSBhbmQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZCgpIGluIHRoZSBrZXJuZWwgYXJlIHBsYXRmb3JtLXNwZWNpZmljIGVhcmx5LWJvb3QgY29kZSBvbiBBUk0gKGFyY2gvYXJtL21hY2gtKikgYW5kIFBvd2VyUEMgKGFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvKiksIHdpdGggbm8gY2FsbGVycyBvbiBhbWQ2NC4gTmVpdGhlciBmdW5jdGlvbiBpcyBleHBvcnRlZCB0byBtb2R1bGVzLiBDb25zZXF1ZW50bHksIG9uIGFtZDY0LCBwaHlfZml4dXBfbGlzdCBpcyBwZXJtYW5lbnRseSBlbXB0eSwgcmVuZGVyaW5nIHRoZSBtYXRjaGluZyBsb2dpYyAocGh5X25lZWRzX2ZpeHVwKSBhbmQgZml4dXAgZXhlY3V0aW9uIHBhdGggaW5zaWRlIHBoeV9zY2FuX2ZpeHVwcygpIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4gRnV6emluZyBvbiBhbWQ2NCBjYW5ub3QgZXhlcmNpc2UgdGhlIG1vZGlmaWVkIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6MjI6MDMuMDM1NzUxNzQxWiIsIlNlcSI6MjMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowlpcb7[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-13 20:05:42 +0000 UTC FinishedAt: 2026-09-13 20:22:04 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjIwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZXh0cmFjdHMgUEhZIGZpeHVwIHJlZ2lzdHJhdGlvbiBpbnRvIGRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYyBhbmQgbWFya3MgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucyBhcyBfX2luaXQuIFRoZSBvbmx5IGNhbGxlcnMgb2YgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQoKSBhbmQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZCgpIGluIHRoZSBrZXJuZWwgYXJlIHBsYXRmb3JtLXNwZWNpZmljIGVhcmx5LWJvb3QgY29kZSBvbiBBUk0gKGFyY2gvYXJtL21hY2gtKikgYW5kIFBvd2VyUEMgKGFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvKiksIHdpdGggbm8gY2FsbGVycyBvbiBhbWQ2NC4gTmVpdGhlciBmdW5jdGlvbiBpcyBleHBvcnRlZCB0byBtb2R1bGVzLiBDb25zZXF1ZW50bHksIG9uIGFtZDY0LCBwaHlfZml4dXBfbGlzdCBpcyBwZXJtYW5lbnRseSBlbXB0eSwgcmVuZGVyaW5nIHRoZSBtYXRjaGluZyBsb2dpYyAocGh5X25lZWRzX2ZpeHVwKSBhbmQgZml4dXAgZXhlY3V0aW9uIHBhdGggaW5zaWRlIHBoeV9zY2FuX2ZpeHVwcygpIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4gRnV6emluZyBvbiBhbWQ2NCBjYW5ub3QgZXhlcmNpc2UgdGhlIG1vZGlmaWVkIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDoyMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDMzNTk2MzkwMjJjOThiNGE0Yzg5NTMwMzI1NGIxZjY2YjExY2ExOTdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIFNlcCAxMyAyMDoyMDo1MiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGVcbmluZGV4IGUyM2RmNWU4MzZlOWUuLjQ2NzRlYWYyNDNlYmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGVcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZVxuQEAgLTgsNyAmIzQzOzgsNyBAQCBsaWJwaHkteVx0XHRcdDo9IHBoeS5vIHBoeS1jNDUubyBwaHktY29yZS5vIHBoeV9kZXZpY2UubyBcXFxuIFxuIGlmZGVmIENPTkZJR19QSFlMSUJcbiAjIGJ1aWx0LWluIHdoZW5ldmVyIFBIWUxJQiBpcyBidWlsdC1pbiBvciBtb2R1bGVcbi1vYmoteVx0XHRcdFx0JiM0Mzs9IHN0dWJzLm9cbiYjNDM7b2JqLXlcdFx0XHRcdCYjNDM7PSBzdHVicy5vIHBoeV9maXh1cC5vXG4gZW5kaWZcbiBcbiBsaWJwaHktJChDT05GSUdfU1dQSFkpXHRcdCYjNDM7PSBzd3BoeS5vXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbmluZGV4IDk0YjJlODVlMDBhMzcuLjI3YzBjYjEzODYwYjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG5AQCAtNDksMTQgJiM0Mzs0OSw2IEBAIE1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtQSFkgbGlicmFyeVwmIzM0Oyk7XG4gTU9EVUxFX0FVVEhPUihcJiMzNDtBbmR5IEZsZW1pbmdcJiMzNDspO1xuIE1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG4gXG4tc3RydWN0IHBoeV9maXh1cCB7XG4tXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7XG4tXHRjaGFyIGJ1c19pZFtNSUlfQlVTX0lEX1NJWkUgJiM0MzsgM107XG4tXHR1MzIgcGh5X3VpZDtcbi1cdHUzMiBwaHlfdWlkX21hc2s7XG4tXHRpbnQgKCpydW4pKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuLX07XG4tXG4gc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGdlbnBoeV9jNDVfZHJpdmVyID0ge1xuIFx0LnBoeV9pZCAgICAgICAgID0gMHhmZmZmZmZmZixcbiBcdC5waHlfaWRfbWFzayAgICA9IDB4ZmZmZmZmZmYsXG5AQCAtMjM3LDkgJiM0MzsyMjksNiBAQCBzdGF0aWMgdm9pZCBwaHlfbWRpb19kZXZpY2VfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbiBcbiBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZ2VucGh5X2RyaXZlcjtcbiBcbi1zdGF0aWMgTElTVF9IRUFEKHBoeV9maXh1cF9saXN0KTtcbi1zdGF0aWMgREVGSU5FX01VVEVYKHBoeV9maXh1cF9sb2NrKTtcbi1cbiBzdGF0aWMgYm9vbCBwaHlfZHJ2X3dvbF9lbmFibGVkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4ge1xuIFx0c3RydWN0IGV0aHRvb2xfd29saW5mbyB3b2wgPSB7IC5jbWQgPSBFVEhUT09MX0dXT0wgfTtcbkBAIC00MjcsODUgJiM0Mzs0MTYsNiBAQCBzdGF0aWMgX19tYXliZV91bnVzZWQgaW50IG1kaW9fYnVzX3BoeV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxuIHN0YXRpYyBTSU1QTEVfREVWX1BNX09QUyhtZGlvX2J1c19waHlfcG1fb3BzLCBtZGlvX2J1c19waHlfc3VzcGVuZCxcbiBcdFx0XHQgbWRpb19idXNfcGh5X3Jlc3VtZSk7XG4gXG4tLyoqXG4tICogcGh5X3JlZ2lzdGVyX2ZpeHVwIC0gY3JlYXRlcyBhIG5ldyBwaHlfZml4dXAgYW5kIGFkZHMgaXQgdG8gdGhlIGxpc3Rcbi0gKiBAYnVzX2lkOiBBIHN0cmluZyB3aGljaCBtYXRjaGVzIHBoeWRldi1cdTAwM2VtZGlvLmRldi5idXNfaWQgKG9yIE5VTEwpXG4tICogQHBoeV91aWQ6IFVzZWQgdG8gbWF0Y2ggYWdhaW5zdCBwaHlkZXYtXHUwMDNlcGh5X2lkICh0aGUgVUlEIG9mIHRoZSBQSFkpXG4tICogQHBoeV91aWRfbWFzazogQXBwbGllZCB0byBwaHlkZXYtXHUwMDNlcGh5X2lkIGFuZCBmaXh1cC1cdTAwM2VwaHlfdWlkIGJlZm9yZVxuLSAqXHRjb21wYXJpc29uIChvciAwIHRvIGRpc2FibGUgaWQtYmFzZWQgbWF0Y2hpbmcpXG4tICogQHJ1bjogVGhlIGFjdHVhbCBjb2RlIHRvIGJlIHJ1biB3aGVuIGEgbWF0Y2hpbmcgUEhZIGlzIGZvdW5kXG4tICovXG4tc3RhdGljIGludCBwaHlfcmVnaXN0ZXJfZml4dXAoY29uc3QgY2hhciAqYnVzX2lkLCB1MzIgcGh5X3VpZCwgdTMyIHBoeV91aWRfbWFzayxcbi1cdFx0XHQgICAgICBpbnQgKCpydW4pKHN0cnVjdCBwaHlfZGV2aWNlICopKVxuLXtcbi1cdHN0cnVjdCBwaHlfZml4dXAgKmZpeHVwID0ga3phbGxvY19vYmooKmZpeHVwKTtcbi1cbi1cdGlmICghZml4dXApXG4tXHRcdHJldHVybiAtRU5PTUVNO1xuLVxuLVx0aWYgKGJ1c19pZClcbi1cdFx0c3Ryc2NweShmaXh1cC1cdTAwM2VidXNfaWQsIGJ1c19pZCwgc2l6ZW9mKGZpeHVwLVx1MDAzZWJ1c19pZCkpO1xuLVx0Zml4dXAtXHUwMDNlcGh5X3VpZCA9IHBoeV91aWQ7XG4tXHRmaXh1cC1cdTAwM2VwaHlfdWlkX21hc2sgPSBwaHlfdWlkX21hc2s7XG4tXHRmaXh1cC1cdTAwM2VydW4gPSBydW47XG4tXG4tXHRtdXRleF9sb2NrKFx1MDAyNnBoeV9maXh1cF9sb2NrKTtcbi1cdGxpc3RfYWRkX3RhaWwoXHUwMDI2Zml4dXAtXHUwMDNlbGlzdCwgXHUwMDI2cGh5X2ZpeHVwX2xpc3QpO1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBoeV9maXh1cF9sb2NrKTtcbi1cbi1cdHJldHVybiAwO1xuLX1cbi1cbi0vKiBSZWdpc3RlcnMgYSBmaXh1cCB0byBiZSBydW4gb24gYW55IFBIWSB3aXRoIHRoZSBVSUQgaW4gcGh5X3VpZCAqL1xuLWludCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZCh1MzIgcGh5X3VpZCwgdTMyIHBoeV91aWRfbWFzayxcbi1cdFx0XHQgICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSlcbi17XG4tXHRyZXR1cm4gcGh5X3JlZ2lzdGVyX2ZpeHVwKE5VTEwsIHBoeV91aWQsIHBoeV91aWRfbWFzaywgcnVuKTtcbi19XG4tRVhQT1JUX1NZTUJPTChwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZCk7XG4tXG4tLyogUmVnaXN0ZXJzIGEgZml4dXAgdG8gYmUgcnVuIG9uIHRoZSBQSFkgd2l0aCBpZCBzdHJpbmcgYnVzX2lkICovXG4taW50IHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWQoY29uc3QgY2hhciAqYnVzX2lkLFxuLVx0XHRcdCAgICAgIGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpXG4te1xuLVx0cmV0dXJuIHBoeV9yZWdpc3Rlcl9maXh1cChidXNfaWQsIDAsIDAsIHJ1bik7XG4tfVxuLUVYUE9SVF9TWU1CT0wocGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZCk7XG4tXG4tc3RhdGljIGJvb2wgcGh5X25lZWRzX2ZpeHVwKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHN0cnVjdCBwaHlfZml4dXAgKmZpeHVwKVxuLXtcbi1cdGlmICghc3RyY21wKGZpeHVwLVx1MDAzZWJ1c19pZCwgcGh5ZGV2X25hbWUocGh5ZGV2KSkpXG4tXHRcdHJldHVybiB0cnVlO1xuLVxuLVx0aWYgKGZpeHVwLVx1MDAzZXBoeV91aWRfbWFzayBcdTAwMjZcdTAwMjZcbi1cdCAgICBwaHlfaWRfY29tcGFyZShwaHlkZXYtXHUwMDNlcGh5X2lkLCBmaXh1cC1cdTAwM2VwaHlfdWlkLCBmaXh1cC1cdTAwM2VwaHlfdWlkX21hc2spKVxuLVx0XHRyZXR1cm4gdHJ1ZTtcbi1cbi1cdHJldHVybiBmYWxzZTtcbi19XG4tXG4tLyogUnVucyBhbnkgbWF0Y2hpbmcgZml4dXBzIGZvciB0aGlzIHBoeWRldiAqL1xuLXN0YXRpYyBpbnQgcGh5X3NjYW5fZml4dXBzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4te1xuLVx0c3RydWN0IHBoeV9maXh1cCAqZml4dXA7XG4tXG4tXHRtdXRleF9sb2NrKFx1MDAyNnBoeV9maXh1cF9sb2NrKTtcbi1cdGxpc3RfZm9yX2VhY2hfZW50cnkoZml4dXAsIFx1MDAyNnBoeV9maXh1cF9saXN0LCBsaXN0KSB7XG4tXHRcdGlmIChwaHlfbmVlZHNfZml4dXAocGh5ZGV2LCBmaXh1cCkpIHtcbi1cdFx0XHRpbnQgZXJyID0gZml4dXAtXHUwMDNlcnVuKHBoeWRldik7XG4tXG4tXHRcdFx0aWYgKGVyciBcdTAwM2MgMCkge1xuLVx0XHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBoeV9maXh1cF9sb2NrKTtcbi1cdFx0XHRcdHJldHVybiBlcnI7XG4tXHRcdFx0fVxuLVx0XHRcdHBoeWRldi1cdTAwM2VoYXNfZml4dXBzID0gdHJ1ZTtcbi1cdFx0fVxuLVx0fVxuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBoeV9maXh1cF9sb2NrKTtcbi1cbi1cdHJldHVybiAwO1xuLX1cbi1cbiAvKipcbiAgKiBnZW5waHlfbWF0Y2hfcGh5X2RldmljZSAtIG1hdGNoIGEgUEhZIGRldmljZSB3aXRoIGEgUEhZIGRyaXZlclxuICAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLmY0OWZjNGNlZmU4MTdcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuY1xuQEAgLTAsMCAmIzQzOzEsOTkgQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXJcbiYjNDM7LypcbiYjNDM7ICogUEhZIGZpeHVwIHN1cHBvcnRcbiYjNDM7ICovXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9saXN0LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcGh5LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvc2xhYi5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3N0cmluZy5oXHUwMDNlXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcJiMzNDtwaHlsaWItaW50ZXJuYWwuaFwmIzM0O1xuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCBsaXN0X2hlYWQgcGh5X2ZpeHVwX2xpc3QgX19yb19hZnRlcl9pbml0ID1cbiYjNDM7XHRMSVNUX0hFQURfSU5JVChwaHlfZml4dXBfbGlzdCk7XG4mIzQzO1xuJiM0MztzdHJ1Y3QgcGh5X2ZpeHVwIHtcbiYjNDM7XHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7XG4mIzQzO1x0Y2hhciBidXNfaWRbTUlJX0JVU19JRF9TSVpFICYjNDM7IDNdO1xuJiM0MztcdHUzMiBwaHlfdWlkO1xuJiM0MztcdHUzMiBwaHlfdWlkX21hc2s7XG4mIzQzO1x0aW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbiYjNDM7fTtcbiYjNDM7XG4mIzQzOy8qKlxuJiM0MzsgKiBwaHlfcmVnaXN0ZXJfZml4dXAgLSBjcmVhdGVzIGEgbmV3IHBoeV9maXh1cCBhbmQgYWRkcyBpdCB0byB0aGUgbGlzdFxuJiM0MzsgKiBAYnVzX2lkOiBBIHN0cmluZyB3aGljaCBtYXRjaGVzIHBoeWRldi1cdTAwM2VtZGlvLmRldi5idXNfaWQgKG9yIFBIWV9BTllfSUQpXG4mIzQzOyAqIEBwaHlfdWlkOiBVc2VkIHRvIG1hdGNoIGFnYWluc3QgcGh5ZGV2LVx1MDAzZXBoeV9pZCAodGhlIFVJRCBvZiB0aGUgUEhZKVxuJiM0MzsgKlx0SXQgY2FuIGFsc28gYmUgUEhZX0FOWV9VSURcbiYjNDM7ICogQHBoeV91aWRfbWFzazogQXBwbGllZCB0byBwaHlkZXYtXHUwMDNlcGh5X2lkIGFuZCBmaXh1cC1cdTAwM2VwaHlfdWlkIGJlZm9yZVxuJiM0MzsgKlx0Y29tcGFyaXNvblxuJiM0MzsgKiBAcnVuOiBUaGUgYWN0dWFsIGNvZGUgdG8gYmUgcnVuIHdoZW4gYSBtYXRjaGluZyBQSFkgaXMgZm91bmRcbiYjNDM7ICovXG4mIzQzO3N0YXRpYyB2b2lkIF9faW5pdCBwaHlfcmVnaXN0ZXJfZml4dXAoY29uc3QgY2hhciAqYnVzX2lkLCB1MzIgcGh5X3VpZCxcbiYjNDM7XHRcdFx0XHQgICAgICB1MzIgcGh5X3VpZF9tYXNrLFxuJiM0MztcdFx0XHRcdCAgICAgIGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgcGh5X2ZpeHVwICpmaXh1cCA9IGt6YWxsb2Nfb2JqKCpmaXh1cCk7XG4mIzQzO1xuJiM0MztcdGlmICghZml4dXApXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdGlmIChidXNfaWQpXG4mIzQzO1x0XHRzdHJzY3B5KGZpeHVwLVx1MDAzZWJ1c19pZCwgYnVzX2lkKTtcbiYjNDM7XHRmaXh1cC1cdTAwM2VwaHlfdWlkID0gcGh5X3VpZDtcbiYjNDM7XHRmaXh1cC1cdTAwM2VwaHlfdWlkX21hc2sgPSBwaHlfdWlkX21hc2s7XG4mIzQzO1x0Zml4dXAtXHUwMDNlcnVuID0gcnVuO1xuJiM0MztcbiYjNDM7XHRsaXN0X2FkZF90YWlsKFx1MDAyNmZpeHVwLVx1MDAzZWxpc3QsIFx1MDAyNnBoeV9maXh1cF9saXN0KTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7LyogUmVnaXN0ZXJzIGEgZml4dXAgdG8gYmUgcnVuIG9uIGFueSBQSFkgd2l0aCB0aGUgVUlEIGluIHBoeV91aWQgKi9cbiYjNDM7dm9pZCBfX2luaXQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQodTMyIHBoeV91aWQsIHUzMiBwaHlfdWlkX21hc2ssXG4mIzQzO1x0XHRcdFx0ICAgICAgIGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpXG4mIzQzO3tcbiYjNDM7XHRwaHlfcmVnaXN0ZXJfZml4dXAoTlVMTCwgcGh5X3VpZCwgcGh5X3VpZF9tYXNrLCBydW4pO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKiBSZWdpc3RlcnMgYSBmaXh1cCB0byBiZSBydW4gb24gdGhlIFBIWSB3aXRoIGlkIHN0cmluZyBidXNfaWQgKi9cbiYjNDM7dm9pZCBfX2luaXQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZChjb25zdCBjaGFyICpidXNfaWQsXG4mIzQzO1x0XHRcdFx0ICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSlcbiYjNDM7e1xuJiM0MztcdHBoeV9yZWdpc3Rlcl9maXh1cChidXNfaWQsIDAsIDAsIHJ1bik7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBib29sIHBoeV9uZWVkc19maXh1cChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBzdHJ1Y3QgcGh5X2ZpeHVwICpmaXh1cClcbiYjNDM7e1xuJiM0MztcdGlmICghc3RyY21wKGZpeHVwLVx1MDAzZWJ1c19pZCwgcGh5ZGV2X25hbWUocGh5ZGV2KSkpXG4mIzQzO1x0XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7XG4mIzQzO1x0aWYgKGZpeHVwLVx1MDAzZXBoeV91aWRfbWFzayBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgcGh5X2lkX2NvbXBhcmUocGh5ZGV2LVx1MDAzZXBoeV9pZCwgZml4dXAtXHUwMDNlcGh5X3VpZCwgZml4dXAtXHUwMDNlcGh5X3VpZF9tYXNrKSlcbiYjNDM7XHRcdHJldHVybiB0cnVlO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gZmFsc2U7XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qKlxuJiM0MzsgKiBwaHlfc2Nhbl9maXh1cHMgLSBydW5zIGFueSBtYXRjaGluZyBmaXh1cHMgZm9yIHRoaXMgcGh5ZGV2XG4mIzQzOyAqIEBwaHlkZXY6IHRoZSBwaHlkZXYgdG8gc2VhcmNoIGFuZCBydW4gZml4dXBzIGZvclxuJiM0MzsgKiBSZXR1cm5zOiAwIG9yIGFuIGVycm5vXG4mIzQzOyAqL1xuJiM0MztpbnQgcGh5X3NjYW5fZml4dXBzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgcGh5X2ZpeHVwICpmaXh1cDtcbiYjNDM7XG4mIzQzO1x0bGlzdF9mb3JfZWFjaF9lbnRyeShmaXh1cCwgXHUwMDI2cGh5X2ZpeHVwX2xpc3QsIGxpc3QpIHtcbiYjNDM7XHRcdGlmIChwaHlfbmVlZHNfZml4dXAocGh5ZGV2LCBmaXh1cCkpIHtcbiYjNDM7XHRcdFx0aW50IGVyciA9IGZpeHVwLVx1MDAzZXJ1bihwaHlkZXYpO1xuJiM0MztcbiYjNDM7XHRcdFx0aWYgKGVyciBcdTAwM2MgMClcbiYjNDM7XHRcdFx0XHRyZXR1cm4gZXJyO1xuJiM0MztcbiYjNDM7XHRcdFx0cGh5ZGV2LVx1MDAzZWhhc19maXh1cHMgPSB0cnVlO1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwocGh5X3NjYW5fZml4dXBzKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmggYi9kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmhcbmluZGV4IDY2NGVkN2ZhYTUxODQuLjM4ZWUyOTRmM2M5NjIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaWItaW50ZXJuYWwuaFxuQEAgLTIzLDYgJiM0MzsyMyw3IEBAIHZvaWQgb2Zfc2V0X3BoeV9lZWVfYnJva2VuKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuIHZvaWQgb2Zfc2V0X3BoeV90aW1pbmdfcm9sZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbiBpbnQgcGh5X3NwZWVkX2Rvd25fY29yZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbiB2b2lkIHBoeV9jaGVja19kb3duc2hpZnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG4mIzQzO2ludCBwaHlfc2Nhbl9maXh1cHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG4gXG4gaW50IG1kaW9idXNfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7XG4gaW50IG1kaW9idXNfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BoeS5oIGIvaW5jbHVkZS9saW51eC9waHkuaFxuaW5kZXggNWY4ZDY1ODY4ZTBmZi4uZjc5OWIzNjg0Y2RkZSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvcGh5LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvcGh5LmhcbkBAIC0yNDIyLDEwICYjNDM7MjQyMiwxMCBAQCBpbnQgcGh5X2dldF9tYWNfdGVybWluYXRpb24oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgc3RydWN0IGRldmljZSAqZGV2LFxuIHZvaWQgcGh5X3Jlc29sdmVfcGF1c2UodW5zaWduZWQgbG9uZyAqbG9jYWxfYWR2LCB1bnNpZ25lZCBsb25nICpwYXJ0bmVyX2FkdixcbiBcdFx0ICAgICAgIGJvb2wgKnR4X3BhdXNlLCBib29sICpyeF9wYXVzZSk7XG4gXG4taW50IHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWQoY29uc3QgY2hhciAqYnVzX2lkLFxuLVx0XHRcdCAgICAgIGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpO1xuLWludCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZCh1MzIgcGh5X3VpZCwgdTMyIHBoeV91aWRfbWFzayxcbi1cdFx0XHQgICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSk7XG4mIzQzO3ZvaWQgX19pbml0IHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWQoY29uc3QgY2hhciAqYnVzX2lkLFxuJiM0MztcdFx0XHRcdCAgICAgIGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpO1xuJiM0Mzt2b2lkIF9faW5pdCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZCh1MzIgcGh5X3VpZCwgdTMyIHBoeV91aWRfbWFzayxcbiYjNDM7XHRcdFx0XHQgICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSk7XG4gXG4gaW50IHBoeV9lZWVfdHhfY2xvY2tfc3RvcF9jYXBhYmxlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuIGludCBwaHlfZWVlX3J4X2Nsb2NrX3N0b3Aoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCBjbGtfc3RvcF9lbmFibGUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjIwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGV4dHJhY3RzIFBIWSBmaXh1cCByZWdpc3RyYXRpb24gaW50byBkcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMgYW5kIG1hcmtzIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMgYXMgX19pbml0LiBUaGUgb25seSBjYWxsZXJzIG9mIHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfdWlkKCkgYW5kIHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWQoKSBpbiB0aGUga2VybmVsIGFyZSBwbGF0Zm9ybS1zcGVjaWZpYyBlYXJseS1ib290IGNvZGUgb24gQVJNIChhcmNoL2FybS9tYWNoLSopIGFuZCBQb3dlclBDIChhcmNoL3Bvd2VycGMvcGxhdGZvcm1zLyopLCB3aXRoIG5vIGNhbGxlcnMgb24gYW1kNjQuIE5laXRoZXIgZnVuY3Rpb24gaXMgZXhwb3J0ZWQgdG8gbW9kdWxlcy4gQ29uc2VxdWVudGx5LCBvbiBhbWQ2NCwgcGh5X2ZpeHVwX2xpc3QgaXMgcGVybWFuZW50bHkgZW1wdHksIHJlbmRlcmluZyB0aGUgbWF0Y2hpbmcgbG9naWMgKHBoeV9uZWVkc19maXh1cCkgYW5kIGZpeHVwIGV4ZWN1dGlvbiBwYXRoIGluc2lkZSBwaHlfc2Nhbl9maXh1cHMoKSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuIEZ1enppbmcgb24gYW1kNjQgY2Fubm90IGV4ZXJjaXNlIHRoZSBtb2RpZmllZCBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzMzU5NjM5MDIyYzk4YjRhNGM4OTUzMDMyNTRiMWY2NmIxMWNhMTk3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBTZXAgMTMgMjA6MjA6NTIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUKaW5kZXggZTIzZGY1ZTgzNmU5ZS4uNDY3NGVhZjI0M2ViYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZQpAQCAtOCw3ICYjNDM7OCw3IEBAIGxpYnBoeS15CQkJOj0gcGh5Lm8gcGh5LWM0NS5vIHBoeS1jb3JlLm8gcGh5X2RldmljZS5vIFwKIAogaWZkZWYgQ09ORklHX1BIWUxJQgogIyBidWlsdC1pbiB3aGVuZXZlciBQSFlMSUIgaXMgYnVpbHQtaW4gb3IgbW9kdWxlCi1vYmoteQkJCQkmIzQzOz0gc3R1YnMubwomIzQzO29iai15CQkJCSYjNDM7PSBzdHVicy5vIHBoeV9maXh1cC5vCiBlbmRpZgogCiBsaWJwaHktJChDT05GSUdfU1dQSFkpCQkmIzQzOz0gc3dwaHkubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMKaW5kZXggOTRiMmU4NWUwMGEzNy4uMjdjMGNiMTM4NjBiNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jCkBAIC00OSwxNCAmIzQzOzQ5LDYgQEAgTU9EVUxFX0RFU0NSSVBUSU9OKCYjMzQ7UEhZIGxpYnJhcnkmIzM0Oyk7CiBNT0RVTEVfQVVUSE9SKCYjMzQ7QW5keSBGbGVtaW5nJiMzNDspOwogTU9EVUxFX0xJQ0VOU0UoJiMzNDtHUEwmIzM0Oyk7CiAKLXN0cnVjdCBwaHlfZml4dXAgewotCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKLQljaGFyIGJ1c19pZFtNSUlfQlVTX0lEX1NJWkUgJiM0MzsgM107Ci0JdTMyIHBoeV91aWQ7Ci0JdTMyIHBoeV91aWRfbWFzazsKLQlpbnQgKCpydW4pKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpOwotfTsKLQogc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGdlbnBoeV9jNDVfZHJpdmVyID0gewogCS5waHlfaWQgICAgICAgICA9IDB4ZmZmZmZmZmYsCiAJLnBoeV9pZF9tYXNrICAgID0gMHhmZmZmZmZmZiwKQEAgLTIzNyw5ICYjNDM7MjI5LDYgQEAgc3RhdGljIHZvaWQgcGh5X21kaW9fZGV2aWNlX3JlbW92ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpCiAKIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBnZW5waHlfZHJpdmVyOwogCi1zdGF0aWMgTElTVF9IRUFEKHBoeV9maXh1cF9saXN0KTsKLXN0YXRpYyBERUZJTkVfTVVURVgocGh5X2ZpeHVwX2xvY2spOwotCiBzdGF0aWMgYm9vbCBwaHlfZHJ2X3dvbF9lbmFibGVkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiB7CiAJc3RydWN0IGV0aHRvb2xfd29saW5mbyB3b2wgPSB7IC5jbWQgPSBFVEhUT09MX0dXT0wgfTsKQEAgLTQyNyw4NSAmIzQzOzQxNiw2IEBAIHN0YXRpYyBfX21heWJlX3VudXNlZCBpbnQgbWRpb19idXNfcGh5X3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiBzdGF0aWMgU0lNUExFX0RFVl9QTV9PUFMobWRpb19idXNfcGh5X3BtX29wcywgbWRpb19idXNfcGh5X3N1c3BlbmQsCiAJCQkgbWRpb19idXNfcGh5X3Jlc3VtZSk7CiAKLS8qKgotICogcGh5X3JlZ2lzdGVyX2ZpeHVwIC0gY3JlYXRlcyBhIG5ldyBwaHlfZml4dXAgYW5kIGFkZHMgaXQgdG8gdGhlIGxpc3QKLSAqIEBidXNfaWQ6IEEgc3RyaW5nIHdoaWNoIG1hdGNoZXMgcGh5ZGV2LSZndDttZGlvLmRldi5idXNfaWQgKG9yIE5VTEwpCi0gKiBAcGh5X3VpZDogVXNlZCB0byBtYXRjaCBhZ2FpbnN0IHBoeWRldi0mZ3Q7cGh5X2lkICh0aGUgVUlEIG9mIHRoZSBQSFkpCi0gKiBAcGh5X3VpZF9tYXNrOiBBcHBsaWVkIHRvIHBoeWRldi0mZ3Q7cGh5X2lkIGFuZCBmaXh1cC0mZ3Q7cGh5X3VpZCBiZWZvcmUKLSAqCWNvbXBhcmlzb24gKG9yIDAgdG8gZGlzYWJsZSBpZC1iYXNlZCBtYXRjaGluZykKLSAqIEBydW46IFRoZSBhY3R1YWwgY29kZSB0byBiZSBydW4gd2hlbiBhIG1hdGNoaW5nIFBIWSBpcyBmb3VuZAotICovCi1zdGF0aWMgaW50IHBoeV9yZWdpc3Rlcl9maXh1cChjb25zdCBjaGFyICpidXNfaWQsIHUzMiBwaHlfdWlkLCB1MzIgcGh5X3VpZF9tYXNrLAotCQkJICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSkKLXsKLQlzdHJ1Y3QgcGh5X2ZpeHVwICpmaXh1cCA9IGt6YWxsb2Nfb2JqKCpmaXh1cCk7Ci0KLQlpZiAoIWZpeHVwKQotCQlyZXR1cm4gLUVOT01FTTsKLQotCWlmIChidXNfaWQpCi0JCXN0cnNjcHkoZml4dXAtJmd0O2J1c19pZCwgYnVzX2lkLCBzaXplb2YoZml4dXAtJmd0O2J1c19pZCkpOwotCWZpeHVwLSZndDtwaHlfdWlkID0gcGh5X3VpZDsKLQlmaXh1cC0mZ3Q7cGh5X3VpZF9tYXNrID0gcGh5X3VpZF9tYXNrOwotCWZpeHVwLSZndDtydW4gPSBydW47Ci0KLQltdXRleF9sb2NrKCZhbXA7cGh5X2ZpeHVwX2xvY2spOwotCWxpc3RfYWRkX3RhaWwoJmFtcDtmaXh1cC0mZ3Q7bGlzdCwgJmFtcDtwaHlfZml4dXBfbGlzdCk7Ci0JbXV0ZXhfdW5sb2NrKCZhbXA7cGh5X2ZpeHVwX2xvY2spOwotCi0JcmV0dXJuIDA7Ci19Ci0KLS8qIFJlZ2lzdGVycyBhIGZpeHVwIHRvIGJlIHJ1biBvbiBhbnkgUEhZIHdpdGggdGhlIFVJRCBpbiBwaHlfdWlkICovCi1pbnQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQodTMyIHBoeV91aWQsIHUzMiBwaHlfdWlkX21hc2ssCi0JCQkgICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSkKLXsKLQlyZXR1cm4gcGh5X3JlZ2lzdGVyX2ZpeHVwKE5VTEwsIHBoeV91aWQsIHBoeV91aWRfbWFzaywgcnVuKTsKLX0KLUVYUE9SVF9TWU1CT0wocGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQpOwotCi0vKiBSZWdpc3RlcnMgYSBmaXh1cCB0byBiZSBydW4gb24gdGhlIFBIWSB3aXRoIGlkIHN0cmluZyBidXNfaWQgKi8KLWludCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX2lkKGNvbnN0IGNoYXIgKmJ1c19pZCwKLQkJCSAgICAgIGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpCi17Ci0JcmV0dXJuIHBoeV9yZWdpc3Rlcl9maXh1cChidXNfaWQsIDAsIDAsIHJ1bik7Ci19Ci1FWFBPUlRfU1lNQk9MKHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWQpOwotCi1zdGF0aWMgYm9vbCBwaHlfbmVlZHNfZml4dXAoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgc3RydWN0IHBoeV9maXh1cCAqZml4dXApCi17Ci0JaWYgKCFzdHJjbXAoZml4dXAtJmd0O2J1c19pZCwgcGh5ZGV2X25hbWUocGh5ZGV2KSkpCi0JCXJldHVybiB0cnVlOwotCi0JaWYgKGZpeHVwLSZndDtwaHlfdWlkX21hc2sgJmFtcDsmYW1wOwotCSAgICBwaHlfaWRfY29tcGFyZShwaHlkZXYtJmd0O3BoeV9pZCwgZml4dXAtJmd0O3BoeV91aWQsIGZpeHVwLSZndDtwaHlfdWlkX21hc2spKQotCQlyZXR1cm4gdHJ1ZTsKLQotCXJldHVybiBmYWxzZTsKLX0KLQotLyogUnVucyBhbnkgbWF0Y2hpbmcgZml4dXBzIGZvciB0aGlzIHBoeWRldiAqLwotc3RhdGljIGludCBwaHlfc2Nhbl9maXh1cHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKLXsKLQlzdHJ1Y3QgcGh5X2ZpeHVwICpmaXh1cDsKLQotCW11dGV4X2xvY2soJmFtcDtwaHlfZml4dXBfbG9jayk7Ci0JbGlzdF9mb3JfZWFjaF9lbnRyeShmaXh1cCwgJmFtcDtwaHlfZml4dXBfbGlzdCwgbGlzdCkgewotCQlpZiAocGh5X25lZWRzX2ZpeHVwKHBoeWRldiwgZml4dXApKSB7Ci0JCQlpbnQgZXJyID0gZml4dXAtJmd0O3J1bihwaHlkZXYpOwotCi0JCQlpZiAoZXJyICZsdDsgMCkgewotCQkJCW11dGV4X3VubG9jaygmYW1wO3BoeV9maXh1cF9sb2NrKTsKLQkJCQlyZXR1cm4gZXJyOwotCQkJfQotCQkJcGh5ZGV2LSZndDtoYXNfZml4dXBzID0gdHJ1ZTsKLQkJfQotCX0KLQltdXRleF91bmxvY2soJmFtcDtwaHlfZml4dXBfbG9jayk7Ci0KLQlyZXR1cm4gMDsKLX0KLQogLyoqCiAgKiBnZW5waHlfbWF0Y2hfcGh5X2RldmljZSAtIG1hdGNoIGEgUEhZIGRldmljZSB3aXRoIGEgUEhZIGRyaXZlcgogICogQHBoeWRldjogdGFyZ2V0IHBoeV9kZXZpY2Ugc3RydWN0CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uZjQ5ZmM0Y2VmZTgxNwotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYwpAQCAtMCwwICYjNDM7MSw5OSBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyCiYjNDM7LyoKJiM0MzsgKiBQSFkgZml4dXAgc3VwcG9ydAomIzQzOyAqLwomIzQzOwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9saXN0LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3BoeS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9zbGFiLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3N0cmluZy5oJmd0OwomIzQzOwomIzQzOyNpbmNsdWRlICYjMzQ7cGh5bGliLWludGVybmFsLmgmIzM0OwomIzQzOwomIzQzO3N0YXRpYyBzdHJ1Y3QgbGlzdF9oZWFkIHBoeV9maXh1cF9saXN0IF9fcm9fYWZ0ZXJfaW5pdCA9CiYjNDM7CUxJU1RfSEVBRF9JTklUKHBoeV9maXh1cF9saXN0KTsKJiM0MzsKJiM0MztzdHJ1Y3QgcGh5X2ZpeHVwIHsKJiM0MzsJc3RydWN0IGxpc3RfaGVhZCBsaXN0OwomIzQzOwljaGFyIGJ1c19pZFtNSUlfQlVTX0lEX1NJWkUgJiM0MzsgM107CiYjNDM7CXUzMiBwaHlfdWlkOwomIzQzOwl1MzIgcGh5X3VpZF9tYXNrOwomIzQzOwlpbnQgKCpydW4pKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpOwomIzQzO307CiYjNDM7CiYjNDM7LyoqCiYjNDM7ICogcGh5X3JlZ2lzdGVyX2ZpeHVwIC0gY3JlYXRlcyBhIG5ldyBwaHlfZml4dXAgYW5kIGFkZHMgaXQgdG8gdGhlIGxpc3QKJiM0MzsgKiBAYnVzX2lkOiBBIHN0cmluZyB3aGljaCBtYXRjaGVzIHBoeWRldi0mZ3Q7bWRpby5kZXYuYnVzX2lkIChvciBQSFlfQU5ZX0lEKQomIzQzOyAqIEBwaHlfdWlkOiBVc2VkIHRvIG1hdGNoIGFnYWluc3QgcGh5ZGV2LSZndDtwaHlfaWQgKHRoZSBVSUQgb2YgdGhlIFBIWSkKJiM0MzsgKglJdCBjYW4gYWxzbyBiZSBQSFlfQU5ZX1VJRAomIzQzOyAqIEBwaHlfdWlkX21hc2s6IEFwcGxpZWQgdG8gcGh5ZGV2LSZndDtwaHlfaWQgYW5kIGZpeHVwLSZndDtwaHlfdWlkIGJlZm9yZQomIzQzOyAqCWNvbXBhcmlzb24KJiM0MzsgKiBAcnVuOiBUaGUgYWN0dWFsIGNvZGUgdG8gYmUgcnVuIHdoZW4gYSBtYXRjaGluZyBQSFkgaXMgZm91bmQKJiM0MzsgKi8KJiM0MztzdGF0aWMgdm9pZCBfX2luaXQgcGh5X3JlZ2lzdGVyX2ZpeHVwKGNvbnN0IGNoYXIgKmJ1c19pZCwgdTMyIHBoeV91aWQsCiYjNDM7CQkJCSAgICAgIHUzMiBwaHlfdWlkX21hc2ssCiYjNDM7CQkJCSAgICAgIGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcGh5X2ZpeHVwICpmaXh1cCA9IGt6YWxsb2Nfb2JqKCpmaXh1cCk7CiYjNDM7CiYjNDM7CWlmICghZml4dXApCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CWlmIChidXNfaWQpCiYjNDM7CQlzdHJzY3B5KGZpeHVwLSZndDtidXNfaWQsIGJ1c19pZCk7CiYjNDM7CWZpeHVwLSZndDtwaHlfdWlkID0gcGh5X3VpZDsKJiM0MzsJZml4dXAtJmd0O3BoeV91aWRfbWFzayA9IHBoeV91aWRfbWFzazsKJiM0MzsJZml4dXAtJmd0O3J1biA9IHJ1bjsKJiM0MzsKJiM0MzsJbGlzdF9hZGRfdGFpbCgmYW1wO2ZpeHVwLSZndDtsaXN0LCAmYW1wO3BoeV9maXh1cF9saXN0KTsKJiM0Mzt9CiYjNDM7CiYjNDM7LyogUmVnaXN0ZXJzIGEgZml4dXAgdG8gYmUgcnVuIG9uIGFueSBQSFkgd2l0aCB0aGUgVUlEIGluIHBoeV91aWQgKi8KJiM0Mzt2b2lkIF9faW5pdCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZCh1MzIgcGh5X3VpZCwgdTMyIHBoeV91aWRfbWFzaywKJiM0MzsJCQkJICAgICAgIGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpCiYjNDM7ewomIzQzOwlwaHlfcmVnaXN0ZXJfZml4dXAoTlVMTCwgcGh5X3VpZCwgcGh5X3VpZF9tYXNrLCBydW4pOwomIzQzO30KJiM0MzsKJiM0MzsvKiBSZWdpc3RlcnMgYSBmaXh1cCB0byBiZSBydW4gb24gdGhlIFBIWSB3aXRoIGlkIHN0cmluZyBidXNfaWQgKi8KJiM0Mzt2b2lkIF9faW5pdCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX2lkKGNvbnN0IGNoYXIgKmJ1c19pZCwKJiM0MzsJCQkJICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSkKJiM0Mzt7CiYjNDM7CXBoeV9yZWdpc3Rlcl9maXh1cChidXNfaWQsIDAsIDAsIHJ1bik7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBib29sIHBoeV9uZWVkc19maXh1cChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBzdHJ1Y3QgcGh5X2ZpeHVwICpmaXh1cCkKJiM0Mzt7CiYjNDM7CWlmICghc3RyY21wKGZpeHVwLSZndDtidXNfaWQsIHBoeWRldl9uYW1lKHBoeWRldikpKQomIzQzOwkJcmV0dXJuIHRydWU7CiYjNDM7CiYjNDM7CWlmIChmaXh1cC0mZ3Q7cGh5X3VpZF9tYXNrICZhbXA7JmFtcDsKJiM0MzsJICAgIHBoeV9pZF9jb21wYXJlKHBoeWRldi0mZ3Q7cGh5X2lkLCBmaXh1cC0mZ3Q7cGh5X3VpZCwgZml4dXAtJmd0O3BoeV91aWRfbWFzaykpCiYjNDM7CQlyZXR1cm4gdHJ1ZTsKJiM0MzsKJiM0MzsJcmV0dXJuIGZhbHNlOwomIzQzO30KJiM0MzsKJiM0MzsvKioKJiM0MzsgKiBwaHlfc2Nhbl9maXh1cHMgLSBydW5zIGFueSBtYXRjaGluZyBmaXh1cHMgZm9yIHRoaXMgcGh5ZGV2CiYjNDM7ICogQHBoeWRldjogdGhlIHBoeWRldiB0byBzZWFyY2ggYW5kIHJ1biBmaXh1cHMgZm9yCiYjNDM7ICogUmV0dXJuczogMCBvciBhbiBlcnJubwomIzQzOyAqLwomIzQzO2ludCBwaHlfc2Nhbl9maXh1cHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBwaHlfZml4dXAgKmZpeHVwOwomIzQzOwomIzQzOwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGZpeHVwLCAmYW1wO3BoeV9maXh1cF9saXN0LCBsaXN0KSB7CiYjNDM7CQlpZiAocGh5X25lZWRzX2ZpeHVwKHBoeWRldiwgZml4dXApKSB7CiYjNDM7CQkJaW50IGVyciA9IGZpeHVwLSZndDtydW4ocGh5ZGV2KTsKJiM0MzsKJiM0MzsJCQlpZiAoZXJyICZsdDsgMCkKJiM0MzsJCQkJcmV0dXJuIGVycjsKJiM0MzsKJiM0MzsJCQlwaHlkZXYtJmd0O2hhc19maXh1cHMgPSB0cnVlOwomIzQzOwkJfQomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MX0dQTChwaHlfc2Nhbl9maXh1cHMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpYi1pbnRlcm5hbC5oIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpYi1pbnRlcm5hbC5oCmluZGV4IDY2NGVkN2ZhYTUxODQuLjM4ZWUyOTRmM2M5NjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaWItaW50ZXJuYWwuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmgKQEAgLTIzLDYgJiM0MzsyMyw3IEBAIHZvaWQgb2Zfc2V0X3BoeV9lZWVfYnJva2VuKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpOwogdm9pZCBvZl9zZXRfcGh5X3RpbWluZ19yb2xlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpOwogaW50IHBoeV9zcGVlZF9kb3duX2NvcmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7CiB2b2lkIHBoeV9jaGVja19kb3duc2hpZnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7CiYjNDM7aW50IHBoeV9zY2FuX2ZpeHVwcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTsKIAogaW50IG1kaW9idXNfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7CiBpbnQgbWRpb2J1c191bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9waHkuaCBiL2luY2x1ZGUvbGludXgvcGh5LmgKaW5kZXggNWY4ZDY1ODY4ZTBmZi4uZjc5OWIzNjg0Y2RkZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9waHkuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3BoeS5oCkBAIC0yNDIyLDEwICYjNDM7MjQyMiwxMCBAQCBpbnQgcGh5X2dldF9tYWNfdGVybWluYXRpb24oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgc3RydWN0IGRldmljZSAqZGV2LAogdm9pZCBwaHlfcmVzb2x2ZV9wYXVzZSh1bnNpZ25lZCBsb25nICpsb2NhbF9hZHYsIHVuc2lnbmVkIGxvbmcgKnBhcnRuZXJfYWR2LAogCQkgICAgICAgYm9vbCAqdHhfcGF1c2UsIGJvb2wgKnJ4X3BhdXNlKTsKIAotaW50IHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWQoY29uc3QgY2hhciAqYnVzX2lkLAotCQkJICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSk7Ci1pbnQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQodTMyIHBoeV91aWQsIHUzMiBwaHlfdWlkX21hc2ssCi0JCQkgICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSk7CiYjNDM7dm9pZCBfX2luaXQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZChjb25zdCBjaGFyICpidXNfaWQsCiYjNDM7CQkJCSAgICAgIGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpOwomIzQzO3ZvaWQgX19pbml0IHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfdWlkKHUzMiBwaHlfdWlkLCB1MzIgcGh5X3VpZF9tYXNrLAomIzQzOwkJCQkgICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSk7CiAKIGludCBwaHlfZWVlX3R4X2Nsb2NrX3N0b3BfY2FwYWJsZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTsKIGludCBwaHlfZWVlX3J4X2Nsb2NrX3N0b3Aoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCBjbGtfc3RvcF9lbmFibGUpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDUyCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMzk4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBQSFkgRml4dXAgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBjbGVhcmx5IGZvY3VzZWQgb24gcmVmaW5pbmcgdGhlIFBIWSBmaXh1cCBtZWNoYW5pc20gd2l0aGluIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IHVuZGVyIGBkcml2ZXJzL25ldC9waHkvYC4gSXQmIzM5O3MgYSB0YXJnZXRlZCByZWZhY3Rvci4gTGV0JiMzOTtzIGJyZWFrIGRvd24gdGhlIGltcGxpY2F0aW9ucy4KCkZpcnN0LCBJIHNlZSB0aGUgYE1ha2VmaWxlYCBiZWluZyB1cGRhdGVkIHRvIGluY2x1ZGUgYHBoeV9maXh1cC5vYCBhcyBhIGJ1aWx0LWluIG9iamVjdCB3aGVuIGBQSFlMSUJgIGlzIGVuYWJsZWQuIFRoYXQmIzM5O3Mgc3RhbmRhcmQgcHJhY3RpY2U7IHdlJiMzOTtyZSBtYWtpbmcgc3VyZSB0aGUgZml4dXAgZnVuY3Rpb25hbGl0eSBpcyBhdmFpbGFibGUgd2hlbiB0aGUgUEhZIGxpYnJhcnkgaXMgaW5jbHVkZWQuIE5vIHN1cnByaXNlcyB0aGVyZS4KClRoZSBuZXh0IGNoYW5nZSBpbiBgcGh5X2RldmljZS5jYCBpcyBzaWduaWZpY2FudC4gVGhlIGZpeHVwIGxpc3QgYW5kIGFzc29jaWF0ZWQgZnVuY3Rpb25zIGFyZSBiZWluZyBtb3ZlZCB0byBhIG5ldyBmaWxlLCBgcGh5X2ZpeHVwLmNgLiBUaGlzIGlzIGdvb2QgZm9yIG1vZHVsYXJpdHkgYW5kIGNsYXJpdHkuIElzb2xhdGluZyB0aGUgZml4dXAgbG9naWMgbWFrZXMgaXQgZWFzaWVyIHRvIG1hbmFnZSBhbmQgdW5kZXJzdGFuZC4KCk5vdywgbGV0JiMzOTtzIGV4YW1pbmUgdGhlIG5ldyBgcGh5X2ZpeHVwLmNgIGZpbGUgaXRzZWxmLiBTZXZlcmFsIGtleSB0aGluZ3MganVtcCBvdXQ6CgoqICAgVGhlIGBwaHlfZml4dXBfbGlzdGAgaXMgbm93IGBfX3JvX2FmdGVyX2luaXRgLiBUaGlzIGlzIGEgY3J1Y2lhbCBkZXRhaWwhIFRoaXMgaW1wbGllcyB0aGF0IHRoZSBmaXh1cCBsaXN0IGlzIG1lYW50IHRvIGJlIHJlYWQtb25seSBhZnRlciBpbml0aWFsaXphdGlvbi4gVGhpcyBpcyBhIHZlcnkgc3Ryb25nIHNpZ25hbC4gSXQgaGFzIHRvIGJlIHRoYXQgd2F5IGZvciBpdCB0byBiZSByZW1vdmVkLCB3aGljaCBpcyBteSBuZXh0IHBvaW50LgoqICAgKipUaGUgYHBoeV9maXh1cF9sb2NrYCBtdXRleCBoYXMgYmVlbiAqcmVtb3ZlZCohKiogVGhhdCYjMzk7cyB0aGUgcmVhbCBjcnV4IG9mIHRoaXMgcGF0Y2ghIFRoaXMgaW1wbGllcyB0aGUgY29kZSBpcyBub3cgdGhyZWFkIHNhZmUgYnkgZGVzaWduLCBiZWNhdXNlIGFsbCB0aGUgZGF0YSBpcyBpbW11dGFibGUsIHNvIGl0IGlzIHByb2JhYmx5IGluaXRpYWxpemVkIGVhcmx5IGFuZCBuZXZlciBtb2RpZmllZCBhZ2Fpbi4gVGhpcyBpbXBsaWVzIGFuICppbW11dGFibGUqIGxpc3QgaXMgdXNlZC4KKiAgIGBwaHlfcmVnaXN0ZXJfZml4dXBgIGFuZCB0aGUgdmFyaWFudCBmdW5jdGlvbnMgYXJlIG5vdyBtYXJrZWQgYF9faW5pdGAgYW5kIHJldHVybiBgdm9pZGAuIFRoaXMgc3VnZ2VzdHMgdGhlc2UgZnVuY3Rpb25zIGFyZSBvbmx5IGNhbGxlZCBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIHBoYXNlLCBhbmQgbm8gZXJyb3IgaGFuZGxpbmcgaXMgbmVjZXNzYXJ5LCBhcyB0aGVyZSBpcyBubyBydW50aW1lIHJlZ2lzdHJhdGlvbi4KKiAgIFRoZSBgcGh5X3NjYW5fZml4dXBzYCBmdW5jdGlvbiwgd2hpY2ggaXRlcmF0ZXMgb3ZlciB0aGUgZml4dXAgbGlzdCwgKm5vIGxvbmdlciBhY3F1aXJlcyB0aGUgYHBoeV9maXh1cF9sb2NrYCouIEdpdmVuIHRoZSBsaXN0IGlzIGltbXV0YWJsZSwgd2UgZG9uJiMzOTt0IG5lZWQgYSBsb2NrLCBmdXJ0aGVyIGNvbmZpcm1pbmcgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgZWFybGllciBwb2ludC4KCkl0JiMzOTtzIGNsZWFyIHRoZSBkZXNpZ24gaGVyZSBoYXMgc2hpZnRlZCB0byBhbiBpbml0aWFsaXphdGlvbi10aW1lIHJlZ2lzdHJhdGlvbiwgdGhlbiByZWFkLW9ubHkgYWNjZXNzIGZvciBmaXh1cHMuIFRoaXMgc2hvdWxkIHByb3ZpZGUgYmV0dGVyIHBlcmZvcm1hbmNlLCBhcyB0aGVyZSBpcyBubyBsb2NraW5nLgoKVGhlIGhlYWRlciBmaWxlIGNoYW5nZXMgYXJlIHNpbXBsZTogdXBkYXRlcyB0byB0aGUgcHJvdG90eXBlcyBvZiB0aGUgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucyB0byBgX19pbml0IHZvaWRgLgoKTm93LCB0aGUgcXVlc3Rpb24gaXM6IGhvdyBpcyB0aGlzIG5ldyBzZXR1cCBhY3R1YWxseSAqdXNlZCo/IEkmIzM5O20gZ29pbmcgdG8gcnVuIGBncmVwcGVyYCB0byBzZWUgd2hlcmUgYHBoeV9yZWdpc3Rlcl9maXh1cF8qYCBhbmQgYHBoeV9zY2FuX2ZpeHVwc2AgYXJlIGNhbGxlZC4gSSBleHBlY3QgdGhlbSB0byBiZSBjYWxsZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uIGFuZCBpbiB0aGUgZHJpdmVyIHByb2JlIGZ1bmN0aW9uLCByZXNwZWN0aXZlbHkuIExldCYjMzk7cyBzZWUgd2hhdCB0aGF0IHNob3dzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeV9yZWdpc3Rlcl9maXh1cCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdD01Mjc9VGhlIHBsYXRmb3JtIGNvZGUgY2FuIHJlZ2lzdGVyIHRoZSBmaXh1cCB1c2luZyBvbmUgb2Y6OlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3QtNTI4LVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3Q6NTI5OiBpbnQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQodTMyIHBoeV91aWQsIHUzMiBwaHlfdWlkX21hc2ssXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdC01MzAtXHRcdGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpO1xuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3Q6NTMxOiBpbnQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZChjb25zdCBjaGFyICpwaHlfaWQsXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdC01MzItXHRcdGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpO1xuLS1cbmFyY2gvYXJtL21hY2gtaW14L21hY2gtaW14NnEuYz03MT1zdGF0aWMgdm9pZCBfX2luaXQgaW14NnFfZW5ldF9waHlfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtaW14L21hY2gtaW14NnEuYy03My1cdGlmIChJU19CVUlMVElOKENPTkZJR19QSFlMSUIpKSB7XG5hcmNoL2FybS9tYWNoLWlteC9tYWNoLWlteDZxLmM6NzQ6XHRcdHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfdWlkKFBIWV9JRF9LU1o5MDIxLCBNSUNSRUxfUEhZX0lEX01BU0ssXG5hcmNoL2FybS9tYWNoLWlteC9tYWNoLWlteDZxLmMtNzUtXHRcdFx0XHRrc3o5MDIxcm5fcGh5X2ZpeHVwKTtcbi0tXG5hcmNoL2FybS9tYWNoLWlteC9tYWNoLWlteDdkLmM9MzA9c3RhdGljIHZvaWQgX19pbml0IGlteDdkX2VuZXRfcGh5X2luaXQodm9pZClcbi0tXG5hcmNoL2FybS9tYWNoLWlteC9tYWNoLWlteDdkLmMtMzItXHRpZiAoSVNfQlVJTFRJTihDT05GSUdfUEhZTElCKSkge1xuYXJjaC9hcm0vbWFjaC1pbXgvbWFjaC1pbXg3ZC5jOjMzOlx0XHRwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZChQSFlfSURfQkNNNTQyMjAsIDB4ZmZmZmZmZmYsXG5hcmNoL2FybS9tYWNoLWlteC9tYWNoLWlteDdkLmMtMzQtXHRcdFx0XHRcdCAgIGJjbTU0MjIwX3BoeV9maXh1cCk7XG4tLVxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYz0yNTg9c3RhdGljIHZvaWQgX19pbml0IGFweDRkZXZraXRfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmMtMjYyLVx0aWYgKElTX0JVSUxUSU4oQ09ORklHX1BIWUxJQikpXG5hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jOjI2MzpcdFx0cGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQoUEhZX0lEX0tTWjgwNTEsIE1JQ1JFTF9QSFlfSURfTUFTSyxcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmMtMjY0LVx0XHRcdFx0XHQgICBhcHg0ZGV2a2l0X3BoeV9maXh1cCk7XG4tLVxuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L2RuczMyMy1zZXR1cC5jPTYxMj1zdGF0aWMgdm9pZCBfX2luaXQgZG5zMzIzX2luaXQodm9pZClcbi0tXG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvZG5zMzIzLXNldHVwLmMtNjc3LVx0XHRcdGJyZWFrO1xuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L2RuczMyMy1zZXR1cC5jOjY3ODpcdFx0cGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQoTUFSVkVMTF9QSFlfSURfODhFMTExOCxcbmFyY2gvYXJtL21hY2gtb3Jpb241eC9kbnMzMjMtc2V0dXAuYy02NzktXHRcdFx0XHRcdCAgIE1BUlZFTExfUEhZX0lEX01BU0ssXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84NXh4L21wYzg1eHhfbWRzLmM9MjgyPXN0YXRpYyBpbnQgX19pbml0IGJvYXJkX2ZpeHVwcyh2b2lkKVxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODV4eC9tcGM4NXh4X21kcy5jLTI5Ni1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODV4eC9tcGM4NXh4X21kcy5jOjI5NzpcdFx0cGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZChwaHlfaWQsIG1wYzg1NjhfZml4dXBfMTI1X2Nsb2NrKTtcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODV4eC9tcGM4NXh4X21kcy5jOjI5ODpcdFx0cGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZChwaHlfaWQsIG1wYzg1NjhfbWRzX3BoeV9maXh1cHMpO1xuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84NXh4L21wYzg1eHhfbWRzLmMtMjk5LVxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODV4eC9tcGM4NXh4X21kcy5jLTMwMi1cdFx0XHQodW5zaWduZWQgbG9uZyBsb25nKXJlcy5zdGFydCwgNyk7XG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzg1eHgvbXBjODV4eF9tZHMuYzozMDM6XHRcdHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWQocGh5X2lkLCBtcGM4NTY4X21kc19waHlfZml4dXBzKTtcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODV4eC9tcGM4NXh4X21kcy5jLTMwNC1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmM9MTY9c3RydWN0IHBoeV9maXh1cCB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTI0LS8qKlxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jOjI1OiAqIHBoeV9yZWdpc3Rlcl9maXh1cCAtIGNyZWF0ZXMgYSBuZXcgcGh5X2ZpeHVwIGFuZCBhZGRzIGl0IHRvIHRoZSBsaXN0XG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMtMjYtICogQGJ1c19pZDogQSBzdHJpbmcgd2hpY2ggbWF0Y2hlcyBwaHlkZXYtXHUwMDNlbWRpby5kZXYuYnVzX2lkIChvciBQSFlfQU5ZX0lEKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYy0zMi0gKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYzozMzpzdGF0aWMgdm9pZCBfX2luaXQgcGh5X3JlZ2lzdGVyX2ZpeHVwKGNvbnN0IGNoYXIgKmJ1c19pZCwgdTMyIHBoeV91aWQsXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMtMzQtXHRcdFx0XHQgICAgICB1MzIgcGh5X3VpZF9tYXNrLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYy01MS0vKiBSZWdpc3RlcnMgYSBmaXh1cCB0byBiZSBydW4gb24gYW55IFBIWSB3aXRoIHRoZSBVSUQgaW4gcGh5X3VpZCAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jOjUyOnZvaWQgX19pbml0IHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfdWlkKHUzMiBwaHlfdWlkLCB1MzIgcGh5X3VpZF9tYXNrLFxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTUzLVx0XHRcdFx0ICAgICAgIGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMtNTQte1xuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jOjU1Olx0cGh5X3JlZ2lzdGVyX2ZpeHVwKE5VTEwsIHBoeV91aWQsIHBoeV91aWRfbWFzaywgcnVuKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYy01Ni19XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTU4LS8qIFJlZ2lzdGVycyBhIGZpeHVwIHRvIGJlIHJ1biBvbiB0aGUgUEhZIHdpdGggaWQgc3RyaW5nIGJ1c19pZCAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jOjU5OnZvaWQgX19pbml0IHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWQoY29uc3QgY2hhciAqYnVzX2lkLFxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTYwLVx0XHRcdFx0ICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSlcbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYy02MS17XG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmM6NjI6XHRwaHlfcmVnaXN0ZXJfZml4dXAoYnVzX2lkLCAwLCAwLCBydW4pO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTYzLX1cbi0tXG5pbmNsdWRlL2xpbnV4L3BoeS5oPTI0MjI9dm9pZCBwaHlfcmVzb2x2ZV9wYXVzZSh1bnNpZ25lZCBsb25nICpsb2NhbF9hZHYsIHVuc2lnbmVkIGxvbmcgKnBhcnRuZXJfYWR2LFxuLS1cbmluY2x1ZGUvbGludXgvcGh5LmgtMjQyNC1cbmluY2x1ZGUvbGludXgvcGh5Lmg6MjQyNTp2b2lkIF9faW5pdCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX2lkKGNvbnN0IGNoYXIgKmJ1c19pZCxcbmluY2x1ZGUvbGludXgvcGh5LmgtMjQyNi1cdFx0XHRcdCAgICAgIGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpO1xuaW5jbHVkZS9saW51eC9waHkuaDoyNDI3OnZvaWQgX19pbml0IHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfdWlkKHUzMiBwaHlfdWlkLCB1MzIgcGh5X3VpZF9tYXNrLFxuaW5jbHVkZS9saW51eC9waHkuaC0yNDI4LVx0XHRcdFx0ICAgICAgIGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg5OTgKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAxODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBIWSBGaXh1cCBSZWdpc3RyYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIFBIWSBmaXh1cCBidXNpbmVzcy4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiBgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWRgIGFuZCBgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZGAuIEkmIzM5O3ZlIHF1aWNrbHkgY29tcGlsZWQgYSBsaXN0IG9mIHdoZXJlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgYmVpbmcgaW52b2tlZCB3aXRoaW4gdGhlIGtlcm5lbC4gSSBzZWUgY2FsbHMgY29taW5nIGZyb20gc2V2ZXJhbCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgbWFjaGluZSBjb2RlIGZpbGVzOiBgYXJjaC9hcm0vbWFjaC1pbXgvbWFjaC1pbXg2cS5jYCwgYGFyY2gvYXJtL21hY2gtaW14L21hY2gtaW14N2QuY2AsIGBhcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jYCwgYGFyY2gvYXJtL21hY2gtb3Jpb241eC9kbnMzMjMtc2V0dXAuY2AsIGFuZCBgYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84NXh4L21wYzg1eHhfbWRzLmNgLiBUaGF0IGdpdmVzIG1lIGEgZ29vZCBzdGFydGluZyBwb2ludC4KCk5vdywgYmVmb3JlIEkgY29uY2x1ZGUgdGhhdCYjMzk7cyB0aGUgY29tcGxldGUgcGljdHVyZSwgSSBuZWVkIHRvIGJlIHRob3JvdWdoLiBBcmUgdGhlcmUgYW55IG90aGVyIHNuZWFreSBjYWxscyB0byB0aGVzZSByZWdpc3RyYXRpb24gZnVuY3Rpb25zIGx1cmtpbmcgZWxzZXdoZXJlPyBOb3BlLCBkb2VzbiYjMzk7dCBhcHBlYXIgc28gYXQgZmlyc3QgZ2xhbmNlLgoKQnV0IHdhaXQgYSBtaW51dGUsIEkgYmV0dGVyIGNvbnNpZGVyIGBwaHlfc2Nhbl9maXh1cHNgLiBJIHNob3VsZCBjaGVjayB3aGVyZSAqdGhhdCogaXMgY2FsbGVkLiBNYXliZSB0aGVyZSYjMzk7cyBzb21lIGluZGlyZWN0IHVzYWdlIG9yIGludGVyYWN0aW9uIHRoYXQgSSYjMzk7bSBtaXNzaW5nIGJ5IG9ubHkgZm9jdXNpbmcgb24gdGhlIGRpcmVjdCByZWdpc3RyYXRpb24gZnVuY3Rpb25zLiBUaGlzIHdhcnJhbnRzIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiB0byBoYXZlIGEgY29tcGxldGUgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlc2UgUEhZIGZpeHVwcyBhcmUgYWN0dWFsbHkgYmVpbmcgYXBwbGllZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlfc2Nhbl9maXh1cHMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xMDE5PWludCBwaHlfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMDMwLVx0LyogUnVuIGFsbCBvZiB0aGUgZml4dXBzIGZvciB0aGlzIFBIWSAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMDMxOlx0ZXJyID0gcGh5X3NjYW5fZml4dXBzKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEwMzItXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xMjUxPWludCBwaHlfaW5pdF9odyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTI2OS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTI3MDpcdHJldCA9IHBoeV9zY2FuX2ZpeHVwcyhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMjcxLVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmM9NjU9c3RhdGljIGJvb2wgcGh5X25lZWRzX2ZpeHVwKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHN0cnVjdCBwaHlfZml4dXAgKmZpeHVwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYy03Ny0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYzo3ODogKiBwaHlfc2Nhbl9maXh1cHMgLSBydW5zIGFueSBtYXRjaGluZyBmaXh1cHMgZm9yIHRoaXMgcGh5ZGV2XG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMtNzktICogQHBoeWRldjogdGhlIHBoeWRldiB0byBzZWFyY2ggYW5kIHJ1biBmaXh1cHMgZm9yXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTgxLSAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jOjgyOmludCBwaHlfc2Nhbl9maXh1cHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYy04My17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTk4LX1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYzo5OTpFWFBPUlRfU1lNQk9MX0dQTChwaHlfc2Nhbl9maXh1cHMpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaWItaW50ZXJuYWwuaD0yNT12b2lkIHBoeV9jaGVja19kb3duc2hpZnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmg6MjY6aW50IHBoeV9zY2FuX2ZpeHVwcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWItaW50ZXJuYWwuaC0yNy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDA4OAoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDc0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBIWSBGaXh1cCBSZW1vdmFsIG9uIGFtZDY0KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gbWV0aG9kaWNhbGx5LiBGaXJzdCwgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgYGFtZDY0YCwgc28gdGhhdCYjMzk7cyB0aGUgZm9jdXMuIFRoZSBrZXkgcXVlc3Rpb246IGNhbiBgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWRgIG9yIGBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX2lkYCBldmVuIGJlIHJlbGV2YW50IGhlcmU/IE15IGluaXRpYWwgb2JzZXJ2YXRpb24gaXMgdGhhdCB0aGV5JiMzOTtyZSAqb25seSogY2FsbGVkIGJ5IGBhcmNoL2FybS9gIGFuZCBgYXJjaC9wb3dlcnBjL2AgY29kZS4gVGhhdCYjMzk7cyBhIHN0cm9uZyBpbmRpY2F0b3IuIFRoZW4sIGNvdWxkIGEgbW9kdWxlIG9yIGRyaXZlciwgZXZlbiBvbiBgYW1kNjRgLCBjYWxsIHRoZXNlIGZ1bmN0aW9ucz8KCkkgbm90aWNlZCBzb21ldGhpbmcgc2lnbmlmaWNhbnQgaW4gdGhlIHBhdGNoOiB0aGUgcmVtb3ZhbCBvZiBgRVhQT1JUX1NZTUJPTGAgZm9yIGBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZGAgYW5kIGBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX2lkYCBmcm9tIGBwaHlfZGV2aWNlLmNgLiBUaGF0JiMzOTtzIGEgcmVkIGZsYWcuIERpZ2dpbmcgZGVlcGVyLCB0aG9zZSBmdW5jdGlvbnMgYXJlIGFsc28gbm90IGV4cG9ydGVkIGZyb20gYHBoeV9maXh1cC5jYCBhbnltb3JlLiBUaGV5JiMzOTtyZSBgdm9pZCBfX2luaXRgIGZ1bmN0aW9ucywgbWVhbmluZyB0aGV5JiMzOTtyZSBtZWFudCB0byBiZSBjYWxsZWQgb25seSBkdXJpbmcgYF9faW5pdGAgc3RhZ2VzIGZvciBidWlsdC1pbiBjb2RlLCBhbmQgbm90IG1vZHVsZSBjb2RlLgoKVGhlbiwgYSBgZ2l0IGdyZXBgIHNlYXJjaCBzaG93ZWQgYWxsIG9jY3VycmVuY2VzIG9mIHRoZXNlIGZ1bmN0aW9ucyBpbiB0aGUgZW50aXJlIGtlcm5lbCwgcG9pbnRpbmcgb25seSB0byBzcGVjaWZpYyBBUk0gYW5kIFBvd2VyUEMgcGxhdGZvcm1zOiBgaW14NnFgLCBgaW14N2RgLCBgbXhzYCwgYGRuczMyM2AgYW5kIGBtcGM4NXh4YC4gU28sIHRoZSBjb250ZXh0IGlzIHZlcnkgbGltaXRlZCwgYW5kIHNwZWNpZmljIHRvIHRob3NlIGFyY2hpdGVjdHVyZXMuCgpOb3csIHRoZSBjcml0aWNhbCBxdWVzdGlvbjogYXJlIHRoZXJlICphbnkqIGNhbGxlcnMgb24gYGFtZDY0YCBvciBpbiBhbnkgZ2VuZXJpYyBjb2RlIHRoYXQgY291bGQgdXNlIHRoZXNlIHJlbW92ZWQgZnVuY3Rpb25zPyBBIHF1aWNrIHJldmlldyBzaG93cyB0aGVyZSBhcmUgbm9uZSwgd2hpY2ggc3Ryb25nbHkgc3VnZ2VzdHMgdGhhdCB0aGUgcmVtb3ZhbCBpcyBjb3JyZWN0LCBhdCBsZWFzdCBmcm9tIGFuIGFyY2hpdGVjdHVyYWwgcGVyc3BlY3RpdmUuCgpUaGUgbmV4dCBxdWVzdGlvbjogd2hhdCBoYXBwZW5zIG9uIGBhbWQ2NGAgd2hlbiBhIFBIWSBkZXZpY2UgaXMgcmVnaXN0ZXJlZD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIG5vcm1hbCBwYXRoLiBJdCBsb29rcyBsaWtlIGBwaHlfc2Nhbl9maXh1cHMocGh5ZGV2KWAgaXMgY2FsbGVkIGluIGJvdGggYHBoeV9kZXZpY2VfcmVnaXN0ZXJgIGFuZCBgcGh5X2luaXRfaHdgLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgYXQgdGhhdCBmdW5jdGlvbiBjYXJlZnVsbHkuCgpMb29raW5nIGF0IHRoZSBjb2RlIGZvciBgcGh5X3NjYW5fZml4dXBzYCwgaXQgaXRlcmF0ZXMgdGhyb3VnaCBgcGh5X2ZpeHVwX2xpc3RgIHRvIGZpbmQgYW55IGFwcGxpY2FibGUgZml4dXBzLiBIb3dldmVyLCBpZiB0aGlzIGxpc3QgaXMgZW1wdHkgKGFuZCBpdCYjMzk7cyBpbml0aWFsaXplZCBhcyBgTElTVF9IRUFEX0lOSVQocGh5X2ZpeHVwX2xpc3QpYCksIHRoZW4gYHBoeV9zY2FuX2ZpeHVwc2AgZG9lcyBhIHRyaXZpYWwgaXRlcmF0aW9uIGFuZCByZXR1cm5zIDAuIEVmZmVjdGl2ZWx5LCBubyBmaXh1cHMgYXJlIGFwcGxpZWQuCgpCdXQgaXMgYHBoeV9zY2FuX2ZpeHVwc2AgZXZlbiAqcmVhY2hhYmxlKiBvbiBgYW1kNjRgPyBDYW4gYSBgcGh5X2RldmljZWAgZXZlbiBiZSBjcmVhdGVkL3JlZ2lzdGVyZWQgb24gdGhpcyBhcmNoaXRlY3R1cmU/IFRoYXQmIzM5O3MgdGhlIG5leHQga2V5IHF1ZXN0aW9uLiBUaGlzIHJlcXVpcmVzIG1lIHRvIGRldGVybWluZSBob3cgYHBoeV9kZXZpY2VfcmVnaXN0ZXJgIGdldHMgY2FsbGVkIG9yIHdoYXQgZHJpdmVycyBjcmVhdGUgcGh5X2RldmljZXMuIE1heWJlIEkgc2hvdWxkIGxvb2sgaW50byBpZiBgc3l6a2FsbGVyYCBjb3VsZCBiZSB1c2VkIHRvIGNyZWF0ZSBhIHBoeV9kZXZpY2U/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5X2RldmljZV9yZWdpc3RlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jPTkzMT1zdGF0aWMgaW50IHhnYmVfcGh5X2ZpbmRfcGh5X2RldmljZShzdHJ1Y3QgeGdiZV9wcnZfZGF0YSAqcGRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYy05NzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jOjk3NjpcdHJldCA9IHBoeV9kZXZpY2VfcmVnaXN0ZXIocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtOTc3LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYzo5Nzg6XHRcdG5ldGRldl9lcnIocGRhdGEtXHUwMDNlbmV0ZGV2LCBcJiMzNDtwaHlfZGV2aWNlX3JlZ2lzdGVyIGZhaWxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTk3OS1cdFx0cGh5X2RldmljZV9mcmVlKHBoeWRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZHNhZl9tYWMuYz03MTY9aG5zX21hY19yZWdpc3Rlcl9waHlkZXYoc3RydWN0IG1paV9idXMgKm1kaW8sIHN0cnVjdCBobnNfbWFjX2NiICptYWNfY2IsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZHNhZl9tYWMuYy03NDQtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2RzYWZfbWFjLmM6NzQ1Olx0cmMgPSBwaHlfZGV2aWNlX3JlZ2lzdGVyKHBoeSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19kc2FmX21hYy5jLTc0Ni1cdGlmIChyYykge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9uZXRzZWMuYz0xOTI5PXN0YXRpYyBpbnQgbmV0c2VjX3JlZ2lzdGVyX21kaW8oc3RydWN0IG5ldHNlY19wcml2ICpwcml2LCB1MzIgcGh5X2FkZHIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L25ldHNlYy5jLTE5ODMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvbmV0c2VjLmM6MTk4NDpcdFx0cmV0ID0gcGh5X2RldmljZV9yZWdpc3Rlcihwcml2LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvbmV0c2VjLmMtMTk4NS1cdFx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9uZXRzZWMuYy0xOTg4LVx0XHRcdGRldl9lcnIocHJpdi1cdTAwM2VkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvbmV0c2VjLmM6MTk4OTpcdFx0XHRcdFwmIzM0O3BoeV9kZXZpY2VfcmVnaXN0ZXIgZXJyKCVkKVxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9uZXRzZWMuYy0xOTkwLVx0XHR9XG4tLVxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jPTQyPWZ3bm9kZV9maW5kX21paV90aW1lc3RhbXBlcihzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlKVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy02OS1cbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYzo3MDppbnQgZndub2RlX21kaW9idXNfcGh5X2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqbWRpbyxcbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy03MS1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy0xMDMtXHQgKi9cbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYzoxMDQ6XHRyYyA9IHBoeV9kZXZpY2VfcmVnaXN0ZXIocGh5KTtcbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy0xMDUtXHRpZiAocmMpIHtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmMtMTE0LX1cbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYzoxMTU6RVhQT1JUX1NZTUJPTChmd25vZGVfbWRpb2J1c19waHlfZGV2aWNlX3JlZ2lzdGVyKTtcbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy0xMTYtXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmM9MTE3PWludCBmd25vZGVfbWRpb2J1c19yZWdpc3Rlcl9waHkoc3RydWN0IG1paV9idXMgKmJ1cyxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmMtMTQ5LVx0XHQvKiBBbGwgZGF0YSBpcyBub3cgc3RvcmVkIGluIHRoZSBwaHkgc3RydWN0LCBzbyByZWdpc3RlciBpdCAqL1xuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jOjE1MDpcdFx0cmMgPSBwaHlfZGV2aWNlX3JlZ2lzdGVyKHBoeSk7XG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmMtMTUxLVx0XHRpZiAocmMpIHtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmMtMTU2LVx0fSBlbHNlIGlmIChpc19vZl9ub2RlKGNoaWxkKSkge1xuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jOjE1NzpcdFx0cmMgPSBmd25vZGVfbWRpb2J1c19waHlfZGV2aWNlX3JlZ2lzdGVyKGJ1cywgcGh5LCBjaGlsZCwgYWRkcik7XG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmMtMTU4LVx0XHRpZiAocmMpXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXhnZW5lLmM9MjYzPXN0cnVjdCBwaHlfZGV2aWNlICp4Z2VuZV9lbmV0X3BoeV9yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2FkZHIpXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXhnZW5lLmMtMjcwLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXhnZW5lLmM6MjcxOlx0aWYgKHBoeV9kZXZpY2VfcmVnaXN0ZXIocGh5X2RldikpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8teGdlbmUuYy0yNzItXHRcdHBoeV9kZXZpY2VfZnJlZShwaHlfZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYz0zMj1zdGF0aWMgaW50IG9mX2dldF9waHlfaWQoc3RydWN0IGRldmljZV9ub2RlICpkZXZpY2UsIHUzMiAqcGh5X2lkKVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTM2LVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6Mzc6aW50IG9mX21kaW9idXNfcGh5X2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTM4LVx0XHRcdFx0ICAgc3RydWN0IGRldmljZV9ub2RlICpjaGlsZCwgdTMyIGFkZHIpXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0zOS17XG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzo0MDpcdHJldHVybiBmd25vZGVfbWRpb2J1c19waHlfZGV2aWNlX3JlZ2lzdGVyKG1kaW8sIHBoeSxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTQxLVx0XHRcdFx0XHRcdCAgb2ZfZndub2RlX2hhbmRsZShjaGlsZCksXG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtNDMtfVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6NDQ6RVhQT1JUX1NZTUJPTChvZl9tZGlvYnVzX3BoeV9kZXZpY2VfcmVnaXN0ZXIpO1xuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtNDUtXG4tLVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jPTEzMT1zdHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBmaXhlZF9waHlfc3RhdHVzICpzdGF0dXMsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE2Mi1cbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYzoxNjM6XHRyZXQgPSBwaHlfZGV2aWNlX3JlZ2lzdGVyKHBoeSk7XG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTY0LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jPTQwOD1zdGF0aWMgc3RydWN0IHBoeV9kZXZpY2UgKm1kaW9idXNfc2NhbihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgYm9vbCBjNDUpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNDM3LVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NDM4Olx0ZXJyID0gcGh5X2RldmljZV9yZWdpc3RlcihwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNDM5LVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jPTU1MT1zdGF0aWMgdm9pZCB0amExMTAyX3AxX3JlZ2lzdGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYy01OTctXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYzo1OTg6XHRcdHJldCA9IG9mX21kaW9idXNfcGh5X2RldmljZV9yZWdpc3RlcihidXMsIHBoeSwgY2hpbGQsIGFkZHIpO1xuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmMtNTk5LVx0XHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xMDEzPUVYUE9SVF9TWU1CT0woZ2V0X3BoeV9kZXZpY2UpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTAxNS0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTAxNjogKiBwaHlfZGV2aWNlX3JlZ2lzdGVyIC0gUmVnaXN0ZXIgdGhlIHBoeSBkZXZpY2Ugb24gdGhlIE1ESU8gYnVzXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEwMTctICogQHBoeWRldjogcGh5X2RldmljZSBzdHJ1Y3R1cmUgdG8gYmUgYWRkZWQgdG8gdGhlIE1ESU8gYnVzXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEwMTgtICovXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjEwMTk6aW50IHBoeV9kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTAyMC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMDUxLX1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTA1MjpFWFBPUlRfU1lNQk9MKHBoeV9kZXZpY2VfcmVnaXN0ZXIpO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMDUzLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTA1OC0gKiBUaGlzIGRvZXNuJiMzOTt0IGZyZWUgdGhlIHBoeV9kZXZpY2UgaXRzZWxmLCBpdCBtZXJlbHkgcmV2ZXJzZXMgdGhlIGVmZmVjdHNcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTA1OTogKiBvZiBwaHlfZGV2aWNlX3JlZ2lzdGVyKCkuIFVzZSBwaHlfZGV2aWNlX2ZyZWUoKSB0byBmcmVlIHRoZSBkZXZpY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTA2MC0gKiBhZnRlciBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uXG4tLVxuZHJpdmVycy9uZXQvcGh5L3NmcC5jPTIwNzM9c3RhdGljIGludCBzZnBfc21fcHJvYmVfcGh5KHN0cnVjdCBzZnAgKnNmcCwgaW50IGFkZHIsIGJvb2wgaXNfYzQ1KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9zZnAuYy0yMDg4LVxuZHJpdmVycy9uZXQvcGh5L3NmcC5jOjIwODk6XHRlcnIgPSBwaHlfZGV2aWNlX3JlZ2lzdGVyKHBoeSk7XG5kcml2ZXJzL25ldC9waHkvc2ZwLmMtMjA5MC1cdGlmIChlcnIpIHtcbmRyaXZlcnMvbmV0L3BoeS9zZnAuYy0yMDkxLVx0XHRwaHlfZGV2aWNlX2ZyZWUocGh5KTtcbmRyaXZlcnMvbmV0L3BoeS9zZnAuYzoyMDkyOlx0XHRkZXZfZXJyKHNmcC1cdTAwM2VkZXYsIFwmIzM0O3BoeV9kZXZpY2VfcmVnaXN0ZXIgZmFpbGVkOiAlcGVcXG5cJiMzNDssXG5kcml2ZXJzL25ldC9waHkvc2ZwLmMtMjA5My1cdFx0XHRFUlJfUFRSKGVycikpO1xuLS1cbmluY2x1ZGUvbGludXgvZndub2RlX21kaW8uaC0xMS0jaWYgSVNfRU5BQkxFRChDT05GSUdfRldOT0RFX01ESU8pXG5pbmNsdWRlL2xpbnV4L2Z3bm9kZV9tZGlvLmg6MTI6aW50IGZ3bm9kZV9tZGlvYnVzX3BoeV9kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKm1kaW8sXG5pbmNsdWRlL2xpbnV4L2Z3bm9kZV9tZGlvLmgtMTMtXHRcdFx0XHQgICAgICAgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcbi0tXG5pbmNsdWRlL2xpbnV4L2Z3bm9kZV9tZGlvLmg9MTY9aW50IGZ3bm9kZV9tZGlvYnVzX3JlZ2lzdGVyX3BoeShzdHJ1Y3QgbWlpX2J1cyAqYnVzLFxuLS1cbmluY2x1ZGUvbGludXgvZndub2RlX21kaW8uaC0xOS0jZWxzZSAvKiBDT05GSUdfRldOT0RFX01ESU8gKi9cbmluY2x1ZGUvbGludXgvZndub2RlX21kaW8uaDoyMDppbnQgZndub2RlX21kaW9idXNfcGh5X2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqbWRpbyxcbmluY2x1ZGUvbGludXgvZndub2RlX21kaW8uaC0yMS1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuLS1cbmluY2x1ZGUvbGludXgvb2ZfbWRpby5oPTQ5PWJvb2wgb2ZfcGh5X2lzX2ZpeGVkX2xpbmsoc3RydWN0IGRldmljZV9ub2RlICpucCk7XG5pbmNsdWRlL2xpbnV4L29mX21kaW8uaDo1MDppbnQgb2ZfbWRpb2J1c19waHlfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICptZGlvLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuaW5jbHVkZS9saW51eC9vZl9tZGlvLmgtNTEtXHRcdFx0XHQgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKmNoaWxkLCB1MzIgYWRkcik7XG4tLVxuaW5jbHVkZS9saW51eC9vZl9tZGlvLmg9MTQwPXN0YXRpYyBpbmxpbmUgYm9vbCBvZl9waHlfaXNfZml4ZWRfbGluayhzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxuLS1cbmluY2x1ZGUvbGludXgvb2ZfbWRpby5oLTE0NC1cbmluY2x1ZGUvbGludXgvb2ZfbWRpby5oOjE0NTpzdGF0aWMgaW5saW5lIGludCBvZl9tZGlvYnVzX3BoeV9kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKm1kaW8sXG5pbmNsdWRlL2xpbnV4L29mX21kaW8uaC0xNDYtXHRcdFx0XHRcdCAgICBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuLS1cbmluY2x1ZGUvbGludXgvcGh5Lmg9MjE1OT1zdHJ1Y3QgcGh5X2RldmljZSAqZ2V0X3BoeV9kZXZpY2Uoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGJvb2wgaXNfYzQ1KTtcbmluY2x1ZGUvbGludXgvcGh5Lmg6MjE2MDppbnQgcGh5X2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KTtcbmluY2x1ZGUvbGludXgvcGh5LmgtMjE2MS12b2lkIHBoeV9kZXZpY2VfZnJlZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDYzNgoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDE0MzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBIWSBGaXh1cHMgYW5kIHRoZWlyIEFNRDY0IEltcGxpY2F0aW9ucyoqCgpPa2F5LCBsZXQmIzM5O3MgZGlzc2VjdCB0aGlzLiBGaXJzdCwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBjaGFuZ2UgdGhpcyBpcyBhYm91dCwgY2hlY2tpbmcgdGhlIGdpdCBsb2dzIGFuZCBtYXliZSB0aGUgb3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UsIG9yIGRpdmluZyBpbnRvIGBkcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCAqd2h5KiB0aGlzIHBhdGNoIHdhcyBtYWRlLiBJdCBsb29rcyBsaWtlIGl0IGhhcyBzb21ldGhpbmcgdG8gZG8gd2l0aCBgcGh5X2ZpeHVwLmNgIGFuZCBpdHMgcmVsYXRpb25zaGlwIHdpdGggYENPTkZJR19QSFlMSUJgLgoKUmlnaHQsIEkgc2VlIGl0IG5vdy4gYHBoeV9maXh1cC5vYCBpcyBidWlsdC1pbiB3aGVuZXZlciBgQ09ORklHX1BIWUxJQmAgaXMgZW5hYmxlZC4gVGhpcyBpcyBjcnVjaWFsIGJlY2F1c2UgcGxhdGZvcm0gY29kZSBpbiBhcmNoaXRlY3R1cmVzIGxpa2UgYGFybWAgYW5kIGBwb3dlcnBjYCB1c2UgYHBoeV9yZWdpc3Rlcl9maXh1cF8qYCBkdXJpbmcgZWFybHkgYm9vdCwgc3BlY2lmaWNhbGx5IGF0IGBfX2luaXRgIHRpbWUuIFByZXZpb3VzbHksIHdpdGggYENPTkZJR19QSFlMSUI9bWAsIHRoZXNlIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMgd2VyZSBpbiBhIG1vZHVsZSwgbWFraW5nIHRoZW0gaW5hY2Nlc3NpYmxlIHRvIHRoZSBwbGF0Zm9ybSBjb2RlIHRoYXQmIzM5O3MgYnVpbHQgZGlyZWN0bHkgaW50byB0aGUga2VybmVsIGlmIFBIWUxJQiB3YXMgbW9kdWxhci4gVGhlIGBpZiAoSVNfQlVJTFRJTihDT05GSUdfUEhZTElCKSlgIGNoZWNrIHdhcyBhIHJlYWwgcm9hZGJsb2NrLgoKQnkgbW92aW5nIGBwaHlfcmVnaXN0ZXJfZml4dXBgIHRvIGBwaHlfZml4dXAuY2AgYW5kIGJ1aWxkaW5nIGl0IGFzIGBvYmoteWAgKGFsd2F5cyBidWlsdC1pbikgYW5kIG1ha2luZyByZWdpc3RyYXRpb24gYF9faW5pdGAsIHdlIGVuc3VyZSBQSFkgZml4dXBzIGNhbiBiZSByZWdpc3RlcmVkIGV2ZW4gaWYgUEhZTElCIGlzIGEgbW9kdWxlLiBUaGUgZmFjdCB0aGF0IGFsbCBmaXh1cHMgYXJlIHJlZ2lzdGVyZWQgYXQgYF9faW5pdGAgdGltZSwgYmVmb3JlIFNNUC91c2Vyc3BhY2UvZHJpdmVyIHByb2JlLCBpcyB0aGUga2V5LCBhbGxvd2luZyBgcGh5X2ZpeHVwX2xpc3RgIHRvIGJlIG1hcmtlZCBgX19yb19hZnRlcl9pbml0YC4gVGhpcyBhbHNvIGVsaW1pbmF0ZXMgdGhlIG5lZWQgZm9yIGEgbG9jayAoYHBoeV9maXh1cF9sb2NrYCkgd2hlbiByZWFkaW5nIGBwaHlfZml4dXBfbGlzdGAgaW4gYHBoeV9zY2FuX2ZpeHVwc2AuIENsZXZlci4KCkxvb2tpbmcgYXQgYHBoeV9maXh1cC5jYCwgSSBzZWUgdGhlIGBwaHlfZml4dXBfbGlzdGAgZGVmaW5lZCBhcyBgX19yb19hZnRlcl9pbml0YCBhbmQgdGhlIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbiBgcGh5X3JlZ2lzdGVyX2ZpeHVwYC4gSXQgYWRkcyBmaXh1cHMgdG8gdGhhdCBsaXN0IGJhc2VkIG9uIGJ1cyBJRCBhbmQgcGh5IFVJRC9tYXNrLgoKTm93IHRoZSBxdWVzdGlvbiBpcywgZG9lcyB0aGlzIGFwcGx5IHRvIEFNRDY0PyBBcmUgdGhlcmUgQU5ZIGNhbGxlcnMgb2YgYHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfdWlkYCBvciBgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZGAgb24gQU1ENjQ/IEkgbmVlZCB0byB2ZXJpZnkuIEkmIzM5O2xsIGNoZWNrIHRob3NlIGNhbGxlcnMgYWdhaW4uLi4gTm9wZSwgbm90aGluZy4gQWxsIHRoZSB1c2FnZXMgYXJlIGluIHRoZSBBUk0gYW5kIFBvd2VyUEMgYXJjaGl0ZWN0dXJlcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSwgY291bGQgYW55IG90aGVyIGRyaXZlciBvciBvdGhlciBBTUQ2NCBjb2RlIGNhbGwgYHBoeV9yZWdpc3Rlcl9maXh1cGA/IExldCYjMzk7cyBzZWFyY2ggdGhlIHdob2xlIHJlcG9zaXRvcnkgZm9yIGBwaHlfcmVnaXN0ZXJfZml4dXBgLi4uIEFoLCBubyBvdGhlciBjYWxscyBleGlzdC4gVGhhdCBjb25maXJtcyBpdC4KClNvLCBvbiBBTUQ2NCwgYHBoeV9maXh1cF9saXN0YCBpcyBqdXN0IGluaXRpYWxpemVkIGFzIGBMSVNUX0hFQURfSU5JVChwaHlfZml4dXBfbGlzdClgLiBTaW5jZSBub3RoaW5nIHJlZ2lzdGVycyBhbnkgZml4dXBzIG9uIEFNRDY0LCB0aGlzIGxpc3Qgd2lsbCBhbHdheXMgYmUgRU1QVFkhIFdoYXQgaGFwcGVucyB3aGVuIGBwaHlfc2Nhbl9maXh1cHMocGh5ZGV2KWAgaXMgY2FsbGVkIG9uIEFNRDY0PyBJdCBjYWxscyBgbGlzdF9mb3JfZWFjaF9lbnRyeWAsIGJ1dCBzaW5jZSB0aGUgbGlzdCBpcyBlbXB0eSwgaXQgZG9lcyBaRVJPIGl0ZXJhdGlvbnMgYW5kIGp1c3QgcmV0dXJucyAwIGltbWVkaWF0ZWx5LgoKVGhlcmVmb3JlLCBldmVuIGlmIGEgUEhZIGRldmljZSAodmlydHVhbCBvciB3aGF0ZXZlcikgaXMgcmVnaXN0ZXJlZCBvbiBBTUQ2NCwgYHBoeV9zY2FuX2ZpeHVwc2AgZG9lcyBhYnNvbHV0ZWx5IG5vdGhpbmcuIENhbiBhIFBIWSBkZXZpY2UgYmUgcmVnaXN0ZXJlZCBvbiBBTUQ2NCB3aXRob3V0IHBoeXNpY2FsIGhhcmR3YXJlPyBNYXliZSB3aXRoIGEgdmlydHVhbCBQSFksIG9yLi4uIEFoLCBmaXhlZCBQSFkgaXMgd2hhdCBJIHdhcyBsb29raW5nIGZvciAoYGRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuY2ApLiBBbmQsIHdobyBjYWxscyBgZml4ZWRfcGh5X3JlZ2lzdGVyYD8gSSYjMzk7bGwgaW52ZXN0aWdhdGUgbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmaXhlZF9waHlfcmVnaXN0ZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9NDgyPXN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTEtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBOVU1fRklYRURfUEhZUzsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTI6XHRcdHBoeWRldnNbaV0gPSBmaXhlZF9waHlfcmVnaXN0ZXJfMTAwZmQoKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5My1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYz0yMjM0PXN0YXRpYyBpbnQgYjQ0X3JlZ2lzdGVyX3BoeV9vbmUoc3RydWN0IGI0NCAqYnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMjI3Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jOjIyNzM6XHRcdHBoeWRldiA9IGZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMjI3NC1cdFx0aWYgKCFJU19FUlIocGh5ZGV2KSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jPTE0Mzk9aW50IGJnbWFjX3BoeV9jb25uZWN0X2RpcmVjdChzdHJ1Y3QgYmdtYWMgKmJnbWFjKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmMtMTQ0OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmM6MTQ0OTpcdHBoeV9kZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXIoXHUwMDI2ZnBoeV9zdGF0dXMsIE5VTEwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYy0xNDUwLVx0aWYgKElTX0VSUihwaHlfZGV2KSkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM9MTg0OD1zdGF0aWMgaW50IGZ0Z21hYzEwMF9wcm9iZV9uY3NpKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xODY2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYzoxODY3Olx0cGh5ZGV2ID0gZml4ZWRfcGh5X3JlZ2lzdGVyKFx1MDAyNm5jc2lfcGh5X3N0YXR1cywgbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xODY4LVx0aWYgKElTX0VSUihwaHlkZXYpKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9Mjk4MT1zdGF0aWMgaW50IGZlY19lbmV0X21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy0zMDAyLVx0XHRcdG5ldGRldl9pbmZvKG5kZXYsIFwmIzM0O25vIFBIWSwgYXNzdW1pbmcgZGlyZWN0IGNvbm5lY3Rpb24gdG8gc3dpdGNoXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjMwMDM6XHRcdFx0cGh5X2RldiA9IGZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzAwNC1cdFx0XHRpZiAoSVNfRVJSKHBoeV9kZXYpKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYz0yMzg9c3RhdGljIGludCBoYmdfZml4ZWRfcGh5X2luaXQoc3RydWN0IGhiZ19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmMtMjUwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYzoyNTE6XHRwaHlkZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXIoXHUwMDI2aGJnX2ZpeGVkX3BoeV9zdGF0dXMsIE5VTEwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYy0yNTItXHRpZiAoSVNfRVJSKHBoeWRldikpIHtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYz00MTI9aW50IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtNDU5LXJlZ2lzdGVyX3BoeTpcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjQ2MDpcdHJldHVybiBQVFJfRVJSX09SX1pFUk8oZml4ZWRfcGh5X3JlZ2lzdGVyKFx1MDAyNnN0YXR1cywgbnApKTtcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTQ2MS19XG4tLVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jPTExOD1zdGF0aWMgaW50IGZpeGVkX3BoeV9nZXRfZnJlZV9hZGRyKHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTEzMC1cbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYzoxMzE6c3RydWN0IHBoeV9kZXZpY2UgKmZpeGVkX3BoeV9yZWdpc3Rlcihjb25zdCBzdHJ1Y3QgZml4ZWRfcGh5X3N0YXR1cyAqc3RhdHVzLFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTEzMi1cdFx0XHRcdCAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXG4tLVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE3Mi19XG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM6MTczOkVYUE9SVF9TWU1CT0xfR1BMKGZpeGVkX3BoeV9yZWdpc3Rlcik7XG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTc0LVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jOjE3NTpzdHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKHZvaWQpXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTc2LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTgxLVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jOjE4MjpcdHJldHVybiBmaXhlZF9waHlfcmVnaXN0ZXIoXHUwMDI2c3RhdHVzLCBOVUxMKTtcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xODMtfVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jOjE4NDpFWFBPUlRfU1lNQk9MX0dQTChmaXhlZF9waHlfcmVnaXN0ZXJfMTAwZmQpO1xuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE4NS1cbi0tXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oPTE5PWV4dGVybiBpbnQgZml4ZWRfcGh5X2NoYW5nZV9jYXJyaWVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGJvb2wgbmV3X2NhcnJpZXIpO1xuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaDoyMDpzdHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBmaXhlZF9waHlfc3RhdHVzICpzdGF0dXMsXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oLTIxLVx0XHRcdFx0ICAgICAgc3RydWN0IGRldmljZV9ub2RlICpucCk7XG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oOjIyOnN0cnVjdCBwaHlfZGV2aWNlICpmaXhlZF9waHlfcmVnaXN0ZXJfMTAwZmQodm9pZCk7XG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oLTIzLVxuLS1cbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmg9Mjk9c3RhdGljIGlubGluZSBzdHJ1Y3QgcGh5X2RldmljZSAqXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oOjMwOmZpeGVkX3BoeV9yZWdpc3Rlcihjb25zdCBzdHJ1Y3QgZml4ZWRfcGh5X3N0YXR1cyAqc3RhdHVzLFxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaC0zMS1cdFx0ICAgc3RydWN0IGRldmljZV9ub2RlICpucClcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oLTM1LVxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaDozNjpzdGF0aWMgaW5saW5lIHN0cnVjdCBwaHlfZGV2aWNlICpmaXhlZF9waHlfcmVnaXN0ZXJfMTAwZmQodm9pZClcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmgtMzcte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODUxMQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGlzIGNvZGU6CgoqKkFuYWx5emluZyB0aGUgYGRzYV9sb29wLmNgIE1vZHVsZSoqCgpPa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIEkmIzM5O20gbG9va2luZyBhdCBgZHNhX2xvb3AuY2AuIEl0IHNlZW1zIGxpa2UgaXQmIzM5O3MgcmVnaXN0ZXJpbmcgc29tZSBmaXhlZCBwaHlzaWNhbCBhZGRyZXNzZXMgZHVyaW5nIG1vZHVsZSBpbml0aWFsaXphdGlvbiwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgZHNhX2xvb3BfaW5pdGAuIFRoaXMgaXMgYSBwcmV0dHkgc3RhbmRhcmQgYXBwcm9hY2ggZm9yIHRoaXMga2luZCBvZiBoYXJkd2FyZS4KCkJ1dCB0aGVuLCBhIHF1ZXN0aW9uIHBvcHMgaW50byBteSBoZWFkLi4uIHdhaXQgYSBzZWNvbmQsIHdoYXQgYWJvdXQgVVNCIGV0aGVybmV0IGRvbmdsZXM/IEhvdyBhcmUgKnRob3NlKiBoYW5kbGVkLCBlc3BlY2lhbGx5IGluIHJlbGF0aW9uIHRvIHBoeSBpbnRlcmZhY2VzIGFuZCBwaHlsaWI/IEkgbmVlZCB0byBjaGVjayB3aGV0aGVyIGFueSBvZiB0aGUgVVNCIGV0aGVybmV0IGRyaXZlcnMgYXJlIGxldmVyYWdpbmcgcGh5bGliIG9yIHBoeSBkZXZpY2VzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhleSBpbnRlZ3JhdGUgd2l0aCB0aGUgcGh5c2ljYWwgbGF5ZXIuIEkmIzM5O2xsIG5lZWQgdG8gZ28gZGlnZ2luZyBmb3IgdGhhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5XyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMjAxMyBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jPTI2Nj1zdGF0aWMgaW50IGFxYzExMV9nZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldCxcbi0tXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMzIwLVxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjMyMTpzdGF0aWMgdm9pZCBhcWMxMTFfc2V0X3BoeV9zcGVlZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHU4IGF1dG9uZWcsIHUxNiBzcGVlZClcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0zMjIte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0zMjQtXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6MzI1Olx0YXFjMTExX2RhdGEtXHUwMDNlcGh5X2NmZyBcdTAwMjY9IH5BUV9BRFZfTUFTSztcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzozMjY6XHRhcWMxMTFfZGF0YS1cdTAwM2VwaHlfY2ZnIHw9IEFRX1BBVVNFO1xuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjMyNzpcdGFxYzExMV9kYXRhLVx1MDAzZXBoeV9jZmcgfD0gQVFfQVNZTV9QQVVTRTtcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzozMjg6XHRhcWMxMTFfZGF0YS1cdTAwM2VwaHlfY2ZnIHw9IEFRX0RPV05TSElGVDtcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzozMjk6XHRhcWMxMTFfZGF0YS1cdTAwM2VwaHlfY2ZnIFx1MDAyNj0gfkFRX0RTSF9SRVRSSUVTX01BU0s7XG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6MzMwOlx0YXFjMTExX2RhdGEtXHUwMDNlcGh5X2NmZyB8PSAoMyBcdTAwM2NcdTAwM2MgQVFfRFNIX1JFVFJJRVNfU0hJRlQpIFx1MDAyNlxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTMzMS1cdFx0XHRcdEFRX0RTSF9SRVRSSUVTX01BU0s7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTMzNS1cdFx0Y2FzZSBTUEVFRF81MDAwOlxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjMzNjpcdFx0XHRhcWMxMTFfZGF0YS1cdTAwM2VwaHlfY2ZnIHw9IEFRX0FEVl81RztcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0zMzctXHRcdFx0ZmFsbHRocm91Z2g7XG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMzM4LVx0XHRjYXNlIFNQRUVEXzI1MDA6XG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6MzM5Olx0XHRcdGFxYzExMV9kYXRhLVx1MDAzZXBoeV9jZmcgfD0gQVFfQURWXzJHNTtcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0zNDAtXHRcdFx0ZmFsbHRocm91Z2g7XG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMzQxLVx0XHRjYXNlIFNQRUVEXzEwMDA6XG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6MzQyOlx0XHRcdGFxYzExMV9kYXRhLVx1MDAzZXBoeV9jZmcgfD0gQVFfQURWXzFHO1xuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTM0My1cdFx0XHRmYWxsdGhyb3VnaDtcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0zNDQtXHRcdGNhc2UgU1BFRURfMTAwOlxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjM0NTpcdFx0XHRhcWMxMTFfZGF0YS1cdTAwM2VwaHlfY2ZnIHw9IEFRX0FEVl8xMDBNO1xuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTM0Ni1cdFx0XHQvKiBmYWxsLXRocm91Z2ggKi9cbi0tXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMzUwLVx0XHRjYXNlIFNQRUVEXzUwMDA6XG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6MzUxOlx0XHRcdGFxYzExMV9kYXRhLVx1MDAzZXBoeV9jZmcgfD0gQVFfQURWXzVHO1xuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTM1Mi1cdFx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0zNTMtXHRcdGNhc2UgU1BFRURfMjUwMDpcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzozNTQ6XHRcdFx0YXFjMTExX2RhdGEtXHUwMDNlcGh5X2NmZyB8PSBBUV9BRFZfMkc1O1xuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTM1NS1cdFx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0zNTYtXHRcdGNhc2UgU1BFRURfMTAwMDpcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzozNTc6XHRcdFx0YXFjMTExX2RhdGEtXHUwMDNlcGh5X2NmZyB8PSBBUV9BRFZfMUc7XG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMzU4LVx0XHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTM1OS1cdFx0Y2FzZSBTUEVFRF8xMDA6XG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6MzYwOlx0XHRcdGFxYzExMV9kYXRhLVx1MDAzZXBoeV9jZmcgfD0gQVFfQURWXzEwME07XG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMzYxLVx0XHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0zNjQtXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6MzY1Olx0YXFjMTExX3dyaXRlMzJfY21kKGRldiwgQVFfUEhZX09QUywgMCwgMCwgXHUwMDI2YXFjMTExX2RhdGEtXHUwMDNlcGh5X2NmZyk7XG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMzY2LX1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM9MzY4PXN0YXRpYyBpbnQgYXFjMTExX3NldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0LFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0zODItXHRcdFx0XHRcdCBTUEVFRF81MDAwIDogU1BFRURfMTAwMDtcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzozODM6XHRcdFx0YXFjMTExX3NldF9waHlfc3BlZWQoZGV2LCBhcWMxMTFfZGF0YS1cdTAwM2VhdXRvbmVnLFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTM4NC1cdFx0XHRcdFx0ICAgICBhcWMxMTFfZGF0YS1cdTAwM2VhZHZlcnRpc2VkX3NwZWVkKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtNDAzLVxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjQwNDpcdFx0YXFjMTExX3NldF9waHlfc3BlZWQoZGV2LCBhcWMxMTFfZGF0YS1cdTAwM2VhdXRvbmVnLFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTQwNS1cdFx0XHRcdCAgICAgYXFjMTExX2RhdGEtXHUwMDNlYWR2ZXJ0aXNlZF9zcGVlZCk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jPTc1Mz1zdGF0aWMgdm9pZCBhcWMxMTFfdW5iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTc2Ni1cdC8qIFBvd2VyIGRvd24gZXRoZXJuZXQgUEhZICovXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6NzY3Olx0YXFjMTExX2RhdGEtXHUwMDNlcGh5X2NmZyBcdTAwMjY9IH5BUV9BRFZfTUFTSztcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzo3Njg6XHRhcWMxMTFfZGF0YS1cdTAwM2VwaHlfY2ZnIHw9IEFRX0xPV19QT1dFUjtcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzo3Njk6XHRhcWMxMTFfZGF0YS1cdTAwM2VwaHlfY2ZnIFx1MDAyNj0gfkFRX1BIWV9QT1dFUl9FTjtcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy03NzAtXHRhcWMxMTFfd3JpdGUzMl9jbWRfbm9wbShkZXYsIEFRX1BIWV9PUFMsIDAsIDAsXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6NzcxOlx0XHRcdFx0XHUwMDI2YXFjMTExX2RhdGEtXHUwMDNlcGh5X2NmZyk7XG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtNzcyLVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYz05OTA9c3RhdGljIGludCBhcWMxMTFfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xMDA0LVx0LyogUG93ZXIgdXAgZXRoZXJuZXQgUEhZICovXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6MTAwNTpcdGFxYzExMV9kYXRhLVx1MDAzZXBoeV9jZmcgPSBBUV9QSFlfUE9XRVJfRU47XG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMTAwNi1cdGFxYzExMV93cml0ZTMyX2NtZChkZXYsIEFRX1BIWV9PUFMsIDAsIDAsXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6MTAwNzpcdFx0XHQgICBcdTAwMjZhcWMxMTFfZGF0YS1cdTAwM2VwaHlfY2ZnKTtcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xMDA4LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xMDI3LVx0LyogUGh5IGFkdmVydGlzZSAqL1xuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjEwMjg6XHRhcWMxMTFfc2V0X3BoeV9zcGVlZChkZXYsIGFxYzExMV9kYXRhLVx1MDAzZWF1dG9uZWcsXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMTAyOS1cdFx0XHQgICAgIGFxYzExMV9kYXRhLVx1MDAzZWFkdmVydGlzZWRfc3BlZWQpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYz0xMDM0PXN0YXRpYyBpbnQgYXFjMTExX3N0b3Aoc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xMDQ3LVx0LyogUHV0IFBIWSB0byBsb3cgcG93ZXIqL1xuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjEwNDg6XHRhcWMxMTFfZGF0YS1cdTAwM2VwaHlfY2ZnIHw9IEFRX0xPV19QT1dFUjtcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xMDQ5LVx0YXFjMTExX3dyaXRlMzJfY21kKGRldiwgQVFfUEhZX09QUywgMCwgMCxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzoxMDUwOlx0XHRcdCAgIFx1MDAyNmFxYzExMV9kYXRhLVx1MDAzZXBoeV9jZmcpO1xuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTEwNTEtXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jPTEzMjI9c3RhdGljIGludCBhcWMxMTFfc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IG1lc3NhZ2UpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTEzNjEtXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6MTM2MjpcdFx0YXFjMTExX2RhdGEtXHUwMDNlcGh5X2NmZyB8PSBBUV9XT0w7XG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMTM2My1cdFx0ZXRoZXJfYWRkcl9jb3B5KHdvbF9jZmcuaHdfYWRkciwgZGV2LVx1MDAzZW5ldC1cdTAwM2VkZXZfYWRkcik7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTE0MDAtXHRcdGFxYzExMV93cml0ZTMyX2NtZF9ub3BtKGRldiwgQVFfUEhZX09QUywgMCwgMCxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzoxNDAxOlx0XHRcdFx0XHRcdTAwMjZhcWMxMTFfZGF0YS1cdTAwM2VwaHlfY2ZnKTtcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xNDAyLVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzoxNDAzOlx0XHRhcWMxMTFfZGF0YS1cdTAwM2VwaHlfY2ZnIHw9IEFRX0xPV19QT1dFUjtcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xNDA0LVx0XHRhcWMxMTFfd3JpdGUzMl9jbWRfbm9wbShkZXYsIEFRX1BIWV9PUFMsIDAsIDAsXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6MTQwNTpcdFx0XHRcdFx0XHUwMDI2YXFjMTExX2RhdGEtXHUwMDNlcGh5X2NmZyk7XG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMTQwNi1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM9MTQxOD1zdGF0aWMgaW50IGFxYzExMV9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTE0MjctXHQvKiBQb3dlciB1cCBldGhlcm5ldCBQSFkgKi9cbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzoxNDI4Olx0YXFjMTExX2RhdGEtXHUwMDNlcGh5X2NmZyB8PSBBUV9QSFlfUE9XRVJfRU47XG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6MTQyOTpcdGFxYzExMV9kYXRhLVx1MDAzZXBoeV9jZmcgXHUwMDI2PSB+QVFfTE9XX1BPV0VSO1xuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjE0MzA6XHRhcWMxMTFfZGF0YS1cdTAwM2VwaHlfY2ZnIFx1MDAyNj0gfkFRX1dPTDtcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xNDMxLVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xNDQyLVxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjE0NDM6XHRhcWMxMTFfc2V0X3BoeV9zcGVlZChkZXYsIGFxYzExMV9kYXRhLVx1MDAzZWF1dG9uZWcsXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMTQ0NC1cdFx0XHQgICAgIGFxYzExMV9kYXRhLVx1MDAzZWFkdmVydGlzZWRfc3BlZWQpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuaD0xNjE9c3RydWN0IGFxYzExMV9kYXRhIHtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmgtMTcyLVx0fSBmd192ZXI7XG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmg6MTczOlx0dTMyIHBoeV9jZmc7XG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmgtMTc0LVx0dTggd29sX2ZsYWdzO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg9MTc4PXN0cnVjdCBhc2l4X2NvbW1vbl9wcml2YXRlIHtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTE4MS1cdGludCAoKnJlc2V0KShzdHJ1Y3QgdXNibmV0ICpkZXYsIGludCBpbl9wbSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeC5oOjE4MjpcdHUxNiBwcmVzdmRfcGh5X2FkdmVydGlzZTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MTgzOlx0dTE2IHByZXN2ZF9waHlfYm1jcjtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMTg0LVx0c3RydWN0IGFzaXhfcnhfZml4dXBfaW5mbyByeF9maXh1cF9pbmZvO1xuZHJpdmVycy9uZXQvdXNiL2FzaXguaC0xODUtXHRzdHJ1Y3QgbWlpX2J1cyAqbWRpbztcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MTg2Olx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldjtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MTg3Olx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldl9pbnQ7XG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTE4OC1cdHN0cnVjdCBwaHlsaW5rICpwaHlsaW5rO1xuZHJpdmVycy9uZXQvdXNiL2FzaXguaC0xODktXHRzdHJ1Y3QgcGh5bGlua19jb25maWcgcGh5bGlua19jb25maWc7XG5kcml2ZXJzL25ldC91c2IvYXNpeC5oOjE5MDpcdHUxNiBwaHlfYWRkcjtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMTkxLVx0Ym9vbCBlbWJkX3BoeTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oPTIxND1zdHJ1Y3Qgc2tfYnVmZiAqYXNpeF90eF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXguaC0yMTYtXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oOjIxNzppbnQgYXNpeF9yZWFkX3BoeV9hZGRyKHN0cnVjdCB1c2JuZXQgKmRldiwgYm9vbCBpbnRlcm5hbCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTIxOC1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oPTIyOT12b2lkIGFzaXhfc2V0X211bHRpY2FzdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0KTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMjMwLVxuZHJpdmVycy9uZXQvdXNiL2FzaXguaDoyMzE6aW50IGFzaXhfbWRpb19yZWFkKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXguaDoyMzI6dm9pZCBhc2l4X21kaW9fd3JpdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHBoeV9pZCwgaW50IGxvYywgaW50IHZhbCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTIzMy1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MjM0OmludCBhc2l4X21kaW9fYnVzX3JlYWQoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9pZCwgaW50IHJlZ251bSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeC5oOjIzNTppbnQgYXNpeF9tZGlvX2J1c193cml0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2lkLCBpbnQgcmVnbnVtLCB1MTYgdmFsKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMjM2LVxuZHJpdmVycy9uZXQvdXNiL2FzaXguaDoyMzc6aW50IGFzaXhfbWRpb19yZWFkX25vcG0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHBoeV9pZCwgaW50IGxvYyk7XG5kcml2ZXJzL25ldC91c2IvYXNpeC5oOjIzODp2b2lkIGFzaXhfbWRpb193cml0ZV9ub3BtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MsXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTIzOS1cdFx0XHQgIGludCB2YWwpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jPTI2NT1zdHJ1Y3Qgc2tfYnVmZiAqYXNpeF90eF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMzIwLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6MzIxOmludCBhc2l4X3JlYWRfcGh5X2FkZHIoc3RydWN0IHVzYm5ldCAqZGV2LCBib29sIGludGVybmFsKVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMzIyLXtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYz00NDE9dm9pZCBhc2l4X3NldF9tdWx0aWNhc3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5ldClcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy00NzktXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo0ODA6c3RhdGljIGludCBfX2FzaXhfbWRpb19yZWFkKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy00ODEtXHRcdFx0ICAgIGJvb2wgaW5fcG0pXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNDg2LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NDg3Olx0bXV0ZXhfbG9jayhcdTAwMjZkZXYtXHUwMDNlcGh5X211dGV4KTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTQ4OC1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy00OTAtXHRpZiAocmV0ID09IC1FTk9ERVYgfHwgcmV0ID09IC1FVElNRURPVVQpIHtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjQ5MTpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRldi1cdTAwM2VwaHlfbXV0ZXgpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNDkyLVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTQ5NC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjQ5NTpcdHJldCA9IGFzaXhfcmVhZF9jbWQoZGV2LCBBWF9DTURfUkVBRF9NSUlfUkVHLCBwaHlfaWQsIChfX3UxNilsb2MsIDIsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy00OTYtXHRcdFx0ICAgIFx1MDAyNnJlcywgaW5fcG0pO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUwMS1vdXQ6XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MDI6XHRtdXRleF91bmxvY2soXHUwMDI2ZGV2LVx1MDAzZXBoeV9tdXRleCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01MDMtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MDQ6XHRuZXRkZXZfZGJnKGRldi1cdTAwM2VuZXQsIFwmIzM0O2FzaXhfbWRpb19yZWFkKCkgcGh5X2lkPTB4JTAyeCwgbG9jPTB4JTAyeCwgcmV0dXJucz0weCUwNHhcXG5cJiMzNDssXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MDU6XHRcdFx0cGh5X2lkLCBsb2MsIGxlMTZfdG9fY3B1KHJlcykpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTA2LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUwOS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjUxMDppbnQgYXNpeF9tZGlvX3JlYWQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHBoeV9pZCwgaW50IGxvYylcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUxMS17XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MTI6XHRyZXR1cm4gX19hc2l4X21kaW9fcmVhZChuZXRkZXYsIHBoeV9pZCwgbG9jLCBmYWxzZSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01MTMtfVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTE0LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTE1OnN0YXRpYyBpbnQgX19hc2l4X21kaW9fd3JpdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHBoeV9pZCwgaW50IGxvYyxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUxNi1cdFx0XHQgICAgIGludCB2YWwsIGJvb2wgaW5fcG0pXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTIxLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTIyOlx0bmV0ZGV2X2RiZyhkZXYtXHUwMDNlbmV0LCBcJiMzNDthc2l4X21kaW9fd3JpdGUoKSBwaHlfaWQ9MHglMDJ4LCBsb2M9MHglMDJ4LCB2YWw9MHglMDR4XFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTIzOlx0XHRcdHBoeV9pZCwgbG9jLCB2YWwpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTI0LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTI1Olx0bXV0ZXhfbG9jayhcdTAwMjZkZXYtXHUwMDNlcGh5X211dGV4KTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUyNi1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01MzAtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MzE6XHRyZXQgPSBhc2l4X3dyaXRlX2NtZChkZXYsIEFYX0NNRF9XUklURV9NSUlfUkVHLCBwaHlfaWQsIChfX3UxNilsb2MsIDIsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01MzItXHRcdFx0ICAgICBcdTAwMjZyZXMsIGluX3BtKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01Mzctb3V0OlxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTM4Olx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRldi1cdTAwM2VwaHlfbXV0ZXgpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTM5LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU0Mi1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjU0Mzp2b2lkIGFzaXhfbWRpb193cml0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jLCBpbnQgdmFsKVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTQ0LXtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjU0NTpcdF9fYXNpeF9tZGlvX3dyaXRlKG5ldGRldiwgcGh5X2lkLCBsb2MsIHZhbCwgZmFsc2UpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTQ2LX1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01NDgtLyogTURJTyByZWFkIGFuZCB3cml0ZSB3cmFwcGVycyBmb3IgcGh5bGliICovXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1NDk6aW50IGFzaXhfbWRpb19idXNfcmVhZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2lkLCBpbnQgcmVnbnVtKVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTUwLXtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01NTItXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1NTM6XHRyZXR1cm4gX19hc2l4X21kaW9fcmVhZChwcml2LVx1MDAzZW5ldCwgcGh5X2lkLCByZWdudW0sIGZhbHNlKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU1NC19XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01NTUtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1NTY6aW50IGFzaXhfbWRpb19idXNfd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9pZCwgaW50IHJlZ251bSwgdTE2IHZhbClcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU1Ny17XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTU5LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTYwOlx0cmV0dXJuIF9fYXNpeF9tZGlvX3dyaXRlKHByaXYtXHUwMDNlbmV0LCBwaHlfaWQsIHJlZ251bSwgdmFsLCBmYWxzZSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01NjEtfVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTYyLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTYzOmludCBhc2l4X21kaW9fcmVhZF9ub3BtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01NjQte1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTY1Olx0cmV0dXJuIF9fYXNpeF9tZGlvX3JlYWQobmV0ZGV2LCBwaHlfaWQsIGxvYywgdHJ1ZSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01NjYtfVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jPTU2OD12b2lkXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1Njk6YXNpeF9tZGlvX3dyaXRlX25vcG0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHBoeV9pZCwgaW50IGxvYywgaW50IHZhbClcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU3MC17XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1NzE6XHRfX2FzaXhfbWRpb193cml0ZShuZXRkZXYsIHBoeV9pZCwgbG9jLCB2YWwsIHRydWUpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTcyLX1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NzA9c3RhdGljIHUzMiBhc2l4X2dldF9waHlpZChzdHJ1Y3QgdXNibmV0ICpkZXYpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzEte1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjcyOlx0aW50IHBoeV9yZWc7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzM6XHR1MzIgcGh5X2lkO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc0LVx0aW50IGk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc3LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgMTAwOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjc4Olx0XHRwaHlfcmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIE1JSV9QSFlTSUQxKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3OTpcdFx0aWYgKHBoeV9yZWcgXHUwMDNjIDApXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODAtXHRcdFx0cmV0dXJuIDA7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODE6XHRcdGlmIChwaHlfcmVnICE9IDAgXHUwMDI2XHUwMDI2IHBoeV9yZWcgIT0gMHhGRkZGKVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgyLVx0XHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04NS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4NjpcdGlmIChwaHlfcmVnIFx1MDAzYz0gMCB8fCBwaHlfcmVnID09IDB4RkZGRilcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04Ny1cdFx0cmV0dXJuIDA7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODgtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODk6XHRwaHlfaWQgPSAocGh5X3JlZyBcdTAwMjYgMHhmZmZmKSBcdTAwM2NcdTAwM2MgMTY7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTAtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTE6XHRwaHlfcmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIE1JSV9QSFlTSUQyKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5MjpcdGlmIChwaHlfcmVnIFx1MDAzYyAwKVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkzLVx0XHRyZXR1cm4gMDtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05NC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5NTpcdHBoeV9pZCB8PSAocGh5X3JlZyBcdTAwMjYgMHhmZmZmKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05Ni1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5NzpcdHJldHVybiBwaHlfaWQ7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTgtfVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xNzc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBheDg4MTcyX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTE4OS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxOTA6c3RhdGljIHZvaWQgYXNpeF9waHlfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2LCB1bnNpZ25lZCBpbnQgcmVzZXRfYml0cylcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xOTEte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xOTMtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTk0Olx0YXNpeF9tZGlvX3dyaXRlKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCBNSUlfQk1DUiwgcmVzZXRfYml0cyk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTk1LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjE5NjpcdC8qIGdpdmUgcGh5X2lkIGEgY2hhbmNlIHRvIHByb2Nlc3MgcmVzZXQgKi9cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xOTctXHR1ZGVsYXkoNTAwKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMjAwLVx0d2hpbGUgKHRpbWVvdXQtLSkge1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjIwMTpcdFx0aWYgKGFzaXhfbWRpb19yZWFkKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCBNSUlfQk1DUilcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yMDItXHRcdFx0XHRcdFx0XHRcdTAwMjYgQk1DUl9SRVNFVClcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMjA3LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjIwODpcdG5ldGRldl9lcnIoZGV2LVx1MDAzZW5ldCwgXCYjMzQ7Qk1DUl9SRVNFVCB0aW1lb3V0IG9uIHBoeV9pZCAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoyMDk6XHRcdCAgIGRldi1cdTAwM2VtaWkucGh5X2lkKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yMTAtfVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0yMTI9c3RhdGljIGludCBheDg4MTcyX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMjUwLVx0ZGV2LVx1MDAzZW1paS5tZGlvX3dyaXRlID0gYXNpeF9tZGlvX3dyaXRlO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjI1MTpcdGRldi1cdTAwM2VtaWkucGh5X2lkX21hc2sgPSAweDNmO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTI1Mi1cdGRldi1cdTAwM2VtaWkucmVnX251bV9tYXNrID0gMHgxZjtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yNTMtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MjU0Olx0ZGV2LVx1MDAzZW1paS5waHlfaWQgPSBhc2l4X3JlYWRfcGh5X2FkZHIoZGV2LCB0cnVlKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoyNTU6XHRpZiAoZGV2LVx1MDAzZW1paS5waHlfaWQgXHUwMDNjIDApXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MjU2Olx0XHRyZXR1cm4gZGV2LVx1MDAzZW1paS5waHlfaWQ7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMjU3LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yNjItXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MjYzOlx0YXNpeF9waHlfcmVzZXQoZGV2LCBCTUNSX1JFU0VUKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoyNjQ6XHRhc2l4X21kaW9fd3JpdGUoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIE1JSV9BRFZFUlRJU0UsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMjY1LVx0XHRBRFZFUlRJU0VfQUxMIHwgQURWRVJUSVNFX0NTTUEgfCBBRFZFUlRJU0VfUEFVU0VfQ0FQKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MzEyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgYXg4ODc3Ml9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMzIxLVx0LnNldF9lZXByb21cdFx0PSBhc2l4X3NldF9lZXByb20sXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MzIyOlx0Lm53YXlfcmVzZXRcdFx0PSBwaHlfZXRodG9vbF9ud2F5X3Jlc2V0LFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjMyMzpcdC5nZXRfbGlua19rc2V0dGluZ3NcdD0gcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjMyNDpcdC5zZXRfbGlua19rc2V0dGluZ3NcdD0gcGh5X2V0aHRvb2xfc2V0X2xpbmtfa3NldHRpbmdzLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTMyNS1cdC5zZWxmX3Rlc3RcdFx0PSBuZXRfc2VsZnRlc3QsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTM2Mj1zdGF0aWMgaW50IGF4ODg3NzJfaHdfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2LCBpbnQgaW5fcG0pXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQwNi1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo0MDc6XHRpZiAoaW5fcG0gXHUwMDI2XHUwMDI2ICghYXNpeF9tZGlvX3JlYWRfbm9wbShkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy00MDgtXHRcdFx0XHRcdCAgIE1JSV9QSFlTSUQxKSkpe1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz00NTY9c3RhdGljIGludCBheDg4NzcyYV9od19yZXNldChzdHJ1Y3QgdXNibmV0ICpkZXYsIGludCBpbl9wbSlcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNDk2LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjQ5NzpcdGlmIChpbl9wbSBcdTAwMjZcdTAwMjYgKCFhc2l4X21kaW9fcmVhZF9ub3BtKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQ5OC1cdFx0XHRcdFx0ICAgTUlJX1BIWVNJRDEpKSkge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MTItXHRcdC8qIENoZWNrIGlmIHRoZSBQSFkgcmVnaXN0ZXJzIGhhdmUgZGVmYXVsdCBzZXR0aW5ncyAqL1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUxMzpcdFx0cGh5MTRoID0gYXNpeF9tZGlvX3JlYWRfbm9wbShkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MTQtXHRcdFx0XHRcdCAgICAgQVg4ODc3MkFfUEhZMTRIKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo1MTU6XHRcdHBoeTE1aCA9IGFzaXhfbWRpb19yZWFkX25vcG0oZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTE2LVx0XHRcdFx0XHQgICAgIEFYODg3NzJBX1BIWTE1SCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NTE3Olx0XHRwaHkxNmggPSBhc2l4X21kaW9fcmVhZF9ub3BtKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUxOC1cdFx0XHRcdFx0ICAgICBBWDg4NzcyQV9QSFkxNkgpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MjUtXHRcdGlmIChwaHkxNGggIT0gQVg4ODc3MkFfUEhZMTRIX0RFRkFVTFQpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NTI2Olx0XHRcdGFzaXhfbWRpb193cml0ZV9ub3BtKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUyNy1cdFx0XHRcdFx0ICAgICBBWDg4NzcyQV9QSFkxNEgsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUyOS1cdFx0aWYgKHBoeTE1aCAhPSBBWDg4NzcyQV9QSFkxNUhfREVGQVVMVClcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo1MzA6XHRcdFx0YXNpeF9tZGlvX3dyaXRlX25vcG0oZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTMxLVx0XHRcdFx0XHQgICAgIEFYODg3NzJBX1BIWTE1SCxcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTMzLVx0XHRpZiAocGh5MTZoICE9IEFYODg3NzJBX1BIWTE2SF9ERUZBVUxUKVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUzNDpcdFx0XHRhc2l4X21kaW9fd3JpdGVfbm9wbShkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MzUtXHRcdFx0XHRcdCAgICAgQVg4ODc3MkFfUEhZMTZILFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz01ODM9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBheDg4NzcyX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTU5MS1cdC5uZG9fdmFsaWRhdGVfYWRkclx0PSBldGhfdmFsaWRhdGVfYWRkcixcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo1OTI6XHQubmRvX2V0aF9pb2N0bFx0XHQ9IHBoeV9kb19pb2N0bF9ydW5uaW5nLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTU5My1cdC5uZG9fc2V0X3J4X21vZGUgICAgICAgID0gYXNpeF9zZXRfbXVsdGljYXN0LFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz02Njk9c3RhdGljIGludCBheDg4NzcyX2luaXRfbWRpbyhzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY4MS1cdHByaXYtXHUwMDNlbWRpby1cdTAwM2VuYW1lID0gXCYjMzQ7QXNpeCBNRElPIEJ1c1wmIzM0OztcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2ODI6XHRwcml2LVx1MDAzZW1kaW8tXHUwMDNlcGh5X21hc2sgPSB+KEJJVChwcml2LVx1MDAzZXBoeV9hZGRyIFx1MDAyNiAweDFmKSB8IEJJVChBWF9FTUJEX1BIWV9BRERSKSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjgzLVx0LyogbWlpIGJ1cyBuYW1lIGlzIHVzYi1cdTAwM2N1c2IgYnVzIG51bWJlclx1MDAzZS1cdTAwM2N1c2IgZGV2aWNlIG51bWJlclx1MDAzZSAqL1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz03MDM9c3RhdGljIGludCBheDg4NzcyX2luaXRfcGh5KHN0cnVjdCB1c2JuZXQgKmRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzA3LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjcwODpcdHByaXYtXHUwMDNlcGh5ZGV2ID0gbWRpb2J1c19nZXRfcGh5KHByaXYtXHUwMDNlbWRpbywgcHJpdi1cdTAwM2VwaHlfYWRkcik7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzA5LVx0aWYgKCFwcml2LVx1MDAzZXBoeWRldikge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MTktXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzIwOlx0cGh5X3N1c3BlbmQocHJpdi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTcyMS1cdHByaXYtXHUwMDNlcGh5ZGV2LVx1MDAzZW1hY19tYW5hZ2VkX3BtID0gdHJ1ZTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MjItXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzIzOlx0cGh5X2F0dGFjaGVkX2luZm8ocHJpdi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTcyNC1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzQxLVx0cHJpdi1cdTAwM2VwaHlkZXZfaW50LVx1MDAzZW1hY19tYW5hZ2VkX3BtID0gdHJ1ZTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3NDI6XHRwaHlfc3VzcGVuZChwcml2LVx1MDAzZXBoeWRldl9pbnQpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc0My1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NzUzPXN0YXRpYyB2b2lkIGF4ODg3NzJfbWFjX2xpbmtfZG93bihzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3NTQ6XHRcdFx0XHQgdW5zaWduZWQgaW50IG1vZGUsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzU1LXtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NzYyPXN0YXRpYyB2b2lkIGF4ODg3NzJfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzYzOlx0XHRcdCAgICAgICBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjc2NDpcdFx0XHQgICAgICAgdW5zaWduZWQgaW50IG1vZGUsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzY1LVx0XHRcdCAgICAgICBpbnQgc3BlZWQsIGludCBkdXBsZXgsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTc5OT1zdGF0aWMgaW50IGF4ODg3NzJfcGh5bGlua19zZXR1cChzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgwMS1cdHN0cnVjdCBhc2l4X2NvbW1vbl9wcml2YXRlICpwcml2ID0gZGV2LVx1MDAzZWRyaXZlcl9wcml2O1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgwMjpcdHBoeV9pbnRlcmZhY2VfdCBwaHlfaWZfbW9kZTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MDMtXHRzdHJ1Y3QgcGh5bGluayAqcGh5bGluaztcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODE1LVx0aWYgKHByaXYtXHUwMDNlZW1iZF9waHkpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODE2Olx0XHRwaHlfaWZfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTDtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MTctXHRlbHNlXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODE4Olx0XHRwaHlfaWZfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9STUlJO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgxOS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MjAtXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cHJpdi1cdTAwM2VwaHlsaW5rX2NvbmZpZywgZGV2LVx1MDAzZW5ldC1cdTAwM2VkZXYuZndub2RlLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgyMTpcdFx0XHRcdCBwaHlfaWZfbW9kZSwgXHUwMDI2YXg4ODc3Ml9waHlsaW5rX21hY19vcHMpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgyMi1cdGlmIChJU19FUlIocGh5bGluaykpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTgyOT1zdGF0aWMgaW50IGF4ODg3NzJfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04NzctXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODc4Olx0cmV0ID0gYXNpeF9yZWFkX3BoeV9hZGRyKGRldiwgdHJ1ZSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODc5LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODgxLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjg4MjpcdHByaXYtXHUwMDNlcGh5X2FkZHIgPSByZXQ7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODgzOlx0cHJpdi1cdTAwM2VlbWJkX3BoeSA9ICgocHJpdi1cdTAwM2VwaHlfYWRkciBcdTAwMjYgMHgxZikgPT0gQVhfRU1CRF9QSFlfQUREUik7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODg0LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05MTMtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTE0Olx0cHJpdi1cdTAwM2VwcmVzdmRfcGh5X2JtY3IgPSAwO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjkxNTpcdHByaXYtXHUwMDNlcHJlc3ZkX3BoeV9hZHZlcnRpc2UgPSAwO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkxNi1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTI2LVx0aWYgKHJldClcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5Mjc6XHRcdGdvdG8gaW5pdHBoeV9lcnI7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTI4LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05MzctXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTM4OmluaXRwaHlfZXJyOlxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkzOS1cdHBoeWxpbmtfZGVzdHJveShwcml2LVx1MDAzZXBoeWxpbmspO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz05NzU9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBheDg4MTc4X2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05ODktXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTkwOnN0YXRpYyBpbnQgbWFydmVsbF9waHlfaW5pdChzdHJ1Y3QgdXNibmV0ICpkZXYpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTkxLXtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTk0LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjk5NTpcdG5ldGRldl9kYmcoZGV2LVx1MDAzZW5ldCwgXCYjMzQ7bWFydmVsbF9waHlfaW5pdCgpXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05OTYtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTk3Olx0cmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIE1JSV9NQVJWRUxMX1NUQVRVUyk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTk4LVx0bmV0ZGV2X2RiZyhkZXYtXHUwMDNlbmV0LCBcJiMzNDtNSUlfTUFSVkVMTF9TVEFUVVMgPSAweCUwNHhcXG5cJiMzNDssIHJlZyk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTk5LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMDA6XHRhc2l4X21kaW9fd3JpdGUoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIE1JSV9NQVJWRUxMX0NUUkwsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAwMS1cdFx0XHRNQVJWRUxMX0NUUkxfUlhERUxBWSB8IE1BUlZFTExfQ1RSTF9UWERFTEFZKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAwMy1cdGlmIChkYXRhLVx1MDAzZWxlZG1vZGUpIHtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDA0Olx0XHRyZWcgPSBhc2l4X21kaW9fcmVhZChkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDA1LVx0XHRcdE1JSV9NQVJWRUxMX0xFRF9DVFJMKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAwOS1cdFx0cmVnIHw9ICgxICYjNDM7IDB4MDEwMCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAxMDpcdFx0YXNpeF9tZGlvX3dyaXRlKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMTEtXHRcdFx0TUlJX01BUlZFTExfTEVEX0NUUkwsIHJlZyk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAxMi1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDEzOlx0XHRyZWcgPSBhc2l4X21kaW9fcmVhZChkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDE0LVx0XHRcdE1JSV9NQVJWRUxMX0xFRF9DVFJMKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAyMC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDIxOnN0YXRpYyBpbnQgcnRsODIxMWNsX3BoeV9pbml0KHN0cnVjdCB1c2JuZXQgKmRldilcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDIyLXtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAyNC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDI1Olx0bmV0ZGV2X2RiZyhkZXYtXHUwMDNlbmV0LCBcJiMzNDtydGw4MjExY2xfcGh5X2luaXQoKVxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAyNi1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDI3Olx0YXNpeF9tZGlvX3dyaXRlIChkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCwgMHgxZiwgMHgwMDA1KTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDI4Olx0YXNpeF9tZGlvX3dyaXRlIChkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCwgMHgwYywgMCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAyOTpcdGFzaXhfbWRpb193cml0ZSAoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIDB4MDEsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAzMDpcdFx0YXNpeF9tZGlvX3JlYWQgKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCAweDAxKSB8IDB4MDA4MCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAzMTpcdGFzaXhfbWRpb193cml0ZSAoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIDB4MWYsIDApO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMzItXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAzMy1cdGlmIChkYXRhLVx1MDAzZWxlZG1vZGUgPT0gMTIpIHtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDM0Olx0XHRhc2l4X21kaW9fd3JpdGUgKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCAweDFmLCAweDAwMDIpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMzU6XHRcdGFzaXhfbWRpb193cml0ZSAoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIDB4MWEsIDB4MDBjYik7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAzNjpcdFx0YXNpeF9tZGlvX3dyaXRlIChkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCwgMHgxZiwgMCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAzNy1cdH1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MTA0Mj1zdGF0aWMgaW50IG1hcnZlbGxfbGVkX3N0YXR1cyhzdHJ1Y3QgdXNibmV0ICpkZXYsIHUxNiBzcGVlZClcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDQzLXtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDQ0Olx0dTE2IHJlZyA9IGFzaXhfbWRpb19yZWFkKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCBNQVJWRUxMX0xFRF9NQU5VQUwpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwNDUtXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwNjItXHRuZXRkZXZfZGJnKGRldi1cdTAwM2VuZXQsIFwmIzM0O21hcnZlbGxfbGVkX3N0YXR1cygpIHdyaXRpbmcgMHglMDR4XFxuXCYjMzQ7LCByZWcpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwNjM6XHRhc2l4X21kaW9fd3JpdGUoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIE1BUlZFTExfTEVEX01BTlVBTCwgcmVnKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDY0LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xMDY4PXN0YXRpYyBpbnQgYXg4ODE3OF9yZXNldChzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTExMzUtXHRpZiAoZGF0YS1cdTAwM2VwaHltb2RlID09IFBIWV9NT0RFX01BUlZFTEwpIHtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMTM2Olx0XHRtYXJ2ZWxsX3BoeV9pbml0KGRldik7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTEzNy1cdFx0bXNsZWVwKDYwKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMTM4LVx0fSBlbHNlIGlmIChkYXRhLVx1MDAzZXBoeW1vZGUgPT0gUEhZX01PREVfUlRMODIxMUNMKVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjExMzk6XHRcdHJ0bDgyMTFjbF9waHlfaW5pdChkZXYpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTExNDAtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTE0MTpcdGFzaXhfcGh5X3Jlc2V0KGRldiwgQk1DUl9SRVNFVCB8IEJNQ1JfQU5FTkFCTEUpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjExNDI6XHRhc2l4X21kaW9fd3JpdGUoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIE1JSV9BRFZFUlRJU0UsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTE0My1cdFx0XHRBRFZFUlRJU0VfQUxMIHwgQURWRVJUSVNFX0NTTUEgfCBBRFZFUlRJU0VfUEFVU0VfQ0FQKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMTQ0Olx0YXNpeF9tZGlvX3dyaXRlKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCBNSUlfQ1RSTDEwMDAsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTE0NS1cdFx0XHRBRFZFUlRJU0VfMTAwMEZVTEwpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xMjcxPXN0YXRpYyBpbnQgYXg4ODE3OF9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEyOTItXHRkZXYtXHUwMDNlbWlpLm1kaW9fd3JpdGUgPSBhc2l4X21kaW9fd3JpdGU7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTI5MzpcdGRldi1cdTAwM2VtaWkucGh5X2lkX21hc2sgPSAweDFmO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEyOTQtXHRkZXYtXHUwMDNlbWlpLnJlZ19udW1fbWFzayA9IDB4ZmY7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEyOTYtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTI5NzpcdGRldi1cdTAwM2VtaWkucGh5X2lkID0gYXNpeF9yZWFkX3BoeV9hZGRyKGRldiwgdHJ1ZSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTI5ODpcdGlmIChkZXYtXHUwMDNlbWlpLnBoeV9pZCBcdTAwM2MgMClcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMjk5Olx0XHRyZXR1cm4gZGV2LVx1MDAzZW1paS5waHlfaWQ7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTMwMC1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYz0xOD1zdHJ1Y3QgYXg4ODE3MmFfcHJpdmF0ZSB7XG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy0xOS1cdHN0cnVjdCBtaWlfYnVzICptZGlvO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxNjM3CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBBWDg4MTcyIERyaXZlciBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIEFYODgxNzIgZHJpdmVyLCBhbmQgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoZSBjaG9pY2UgYmV0d2VlbiBgYXg4ODE3Ml9iaW5kYCBhbmQgYGF4ODg3NzJfaW5pdF9tZGlvYC4gIE15IGd1dCB0ZWxscyBtZSBgYXg4ODc3Ml9pbml0X21kaW9gIGlzIHByb2JhYmx5IHdoZXJlIHRoZSBNRElPIGJ1cyBpbml0aWFsaXphdGlvbiBoYXBwZW5zLiBTbywgSSYjMzk7bSBoZWFkaW5nIHRoZXJlIGZpcnN0LiBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIE1ESU8gYnVzIGlzIGJlaW5nIHJlZ2lzdGVyZWQgYW5kIHNjYW5uZWQg4oCTIHVuZGVyc3RhbmRpbmcgdGhhdCBwYXJ0IGlzIGtleSB0byBmaWd1cmluZyBvdXQgdGhlIHdob2xlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGFuZCBob3cgdGhlIFBIWSBpcyBiZWluZyBoYW5kbGVkLiBUaGlzIGlzIGxpa2VseSB0aGUgY3J1Y2lhbCBzdGVwLiBMZXQgbWUgZ28gdGFrZSBhIGxvb2sgYXQgaXQuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWRpb2J1c19yZWdpc3RlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NjY5PXN0YXRpYyBpbnQgYXg4ODc3Ml9pbml0X21kaW8oc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy02ODYtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6Njg3Olx0cmV0ID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVx1MDAzZW1kaW8pO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY4OC1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYz02MT1zdGF0aWMgaW50IGF4ODgxNzJhX2luaXRfbWRpbyhzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtNzktXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzo4MDpcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIocHJpdi1cdTAwM2VtZGlvKTtcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTgxLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9MjA5MT1zdGF0aWMgaW50IGxhbjc4eHhfbWRpb19pbml0KHN0cnVjdCBsYW43OHh4X25ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjEyMS1cdG5vZGUgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShkZXYtXHUwMDNldWRldi1cdTAwM2VkZXYub2Zfbm9kZSwgXCYjMzQ7bWRpb1wmIzM0Oyk7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjIxMjI6XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGRldi1cdTAwM2VtZGlvYnVzLCBub2RlKTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjEyMy1cdG9mX25vZGVfcHV0KG5vZGUpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jPTExNDc9c3RhdGljIGludCBzbXNjOTV4eF9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMTI0MS1cbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jOjEyNDI6XHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKHBkYXRhLVx1MDAzZW1kaW9idXMpO1xuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMTI0My1cdGlmIChyZXQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI0MjYKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAxMDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50KioKCk9rYXksIHNvIEkmIzM5O20gc2VlaW5nIGBtZGlvYnVzX3JlZ2lzdGVyYCBiZWluZyB1c2VkIGluIHNldmVyYWwgVVNCIGV0aGVybmV0IGRyaXZlciBjb250ZXh0cyDigJMgYHNtc2M5NXh4YCwgYGFzaXhfZGV2aWNlc2AsIGBheDg4MTcyYWAsIHRoYXQgc29ydCBvZiB0aGluZy4gSW50ZXJlc3RpbmcuIEFuZCB0aGVuIHRoZXJlJiMzOTtzIGEgY29ubmVjdGlvbiB0byBzeXprYWxsZXIgYW5kIGl0cyBVU0IgZW11bGF0aW9uIGNhcGFiaWxpdGllcywgc3BlY2lmaWNhbGx5IHRoZSByYXctZ2FkZ2V0LCB1c2JpcCwgYW5kIGR1bW15X2hjZCBzZXR1cHMuIFRoaXMgaXMgbWFraW5nIG1lIHRoaW5rIGFib3V0IGhvdyB0aGUgcGh5c2ljYWwgbGF5ZXIgaXMgZXhwb3NlZCBmb3IgdGhlc2UgZGV2aWNlcy4KCk15IGltbWVkaWF0ZSBuZXh0IHRob3VnaHQgaXMgdG8gZHJpbGwgZG93biBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgbWRpb2J1c19yZWdpc3RlcmAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgTURJTyBidXMgaXMgYWN0dWFsbHkgcmVnaXN0ZXJlZCwgaG93IGl0JiMzOTtzIGhhbmRsZWQgYXQgdGhlIGRyaXZlciBsZXZlbCwgdGhlIGNvbm5lY3Rpb24gdGhhdCYjMzk7cyBiZWluZyBtYWRlLiBTcGVjaWZpY2FsbHksIEkgc2hvdWxkIGxvb2sgaW4gdGhlIGBkcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuY2AgZmlsZSDigJMgb3Igd2hlcmV2ZXIgdGhlIE1ESU8gYnVzIHJlZ2lzdHJhdGlvbiBsb2dpYyBhY3R1YWxseSBsaXZlcyBpbiB0aGUga2VybmVsIHNvdXJjZSwgaXQgbWF5IGhhdmUgbW92ZWQuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHVuZGVyIHRoZSBob29kLiBUaGlzIG1pZ2h0IHJldmVhbCBzb21lIHZ1bG5lcmFiaWxpdGllcyBvciBwb3RlbnRpYWwgYXJlYXMgZm9yIGZ1enppbmcsIGdpdmVuIHRoZSBzeXprYWxsZXIgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19tZGlvYnVzX3JlZ2lzdGVyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21kaW8vYWNwaV9tZGlvLmM9MzI9aW50IF9fYWNwaV9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICptZGlvLCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vYWNwaV9tZGlvLmMtNDAtXHRtZGlvLVx1MDAzZXBoeV9tYXNrID0gR0VOTUFTSygzMSwgMCk7XG5kcml2ZXJzL25ldC9tZGlvL2FjcGlfbWRpby5jOjQxOlx0cmV0ID0gX19tZGlvYnVzX3JlZ2lzdGVyKG1kaW8sIG93bmVyKTtcbmRyaXZlcnMvbmV0L21kaW8vYWNwaV9tZGlvLmMtNDItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jPTE5NT1pbnQgX19vZl9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICptZGlvLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTIwMi1cdGlmICghbnApXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzoyMDM6XHRcdHJldHVybiBfX21kaW9idXNfcmVnaXN0ZXIobWRpbywgb3duZXIpO1xuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMjA0LVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTIyMS1cdC8qIFJlZ2lzdGVyIHRoZSBNRElPIGJ1cyAqL1xuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6MjIyOlx0cmMgPSBfX21kaW9idXNfcmVnaXN0ZXIobWRpbywgb3duZXIpO1xuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMjIzLVx0aWYgKHJjKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jPTUyNT1zdGF0aWMgYm9vbCBtZGlvYnVzX3ByZXZlbnRfYzQ1X3NjYW4oc3RydWN0IG1paV9idXMgKmJ1cylcbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy01MzktLyoqXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo1NDA6ICogX19tZGlvYnVzX3JlZ2lzdGVyIC0gYnJpbmcgdXAgYWxsIHRoZSBQSFlzIG9uIGEgZ2l2ZW4gYnVzIGFuZCBhdHRhY2ggdGhlbSB0byBidXNcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTU0MS0gKiBAYnVzOiB0YXJnZXQgbWlpX2J1c1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTU0NS0gKiAgIG9uIGEgZ2l2ZW4gYnVzLCBhbmQgYXR0YWNoIHRoZW0gdG8gdGhlIGJ1cy4gRHJpdmVycyBzaG91bGQgdXNlXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo1NDY6ICogICBtZGlvYnVzX3JlZ2lzdGVyKCkgcmF0aGVyIHRoYW4gX19tZGlvYnVzX3JlZ2lzdGVyKCkgdW5sZXNzIHRoZXlcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTU0Ny0gKiAgIG5lZWQgdG8gcGFzcyBhIHNwZWNpZmljIG93bmVyIG1vZHVsZS4gTURJTyBkZXZpY2VzIHdoaWNoIGFyZSBub3Rcbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy01NTItICovXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo1NTM6aW50IF9fbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBzdHJ1Y3QgbW9kdWxlICpvd25lcilcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTU1NC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNjY2LX1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjY2NzpFWFBPUlRfU1lNQk9MKF9fbWRpb2J1c19yZWdpc3Rlcik7XG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy02NjgtXG4tLVxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2cmVzLmM9NzM9aW50IF9fZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG1paV9idXMgKmJ1cyxcbi0tXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZyZXMuYy04Ni1cbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldnJlcy5jOjg3Olx0cmV0ID0gX19tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgb3duZXIpO1xuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2cmVzLmMtODgtXHRpZiAocmV0KSB7XG4tLVxuaW5jbHVkZS9saW51eC9waHkuaD00NDI9c3RhdGljIGlubGluZSBzdHJ1Y3QgbWlpX2J1cyAqbWRpb2J1c19hbGxvYyh2b2lkKVxuLS1cbmluY2x1ZGUvbGludXgvcGh5LmgtNDQ2LVxuaW5jbHVkZS9saW51eC9waHkuaDo0NDc6aW50IF9fbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBzdHJ1Y3QgbW9kdWxlICpvd25lcik7XG5pbmNsdWRlL2xpbnV4L3BoeS5oLTQ0OC1pbnQgX19kZXZtX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgbWlpX2J1cyAqYnVzLFxuaW5jbHVkZS9saW51eC9waHkuaC00NDktXHRcdFx0ICAgIHN0cnVjdCBtb2R1bGUgKm93bmVyKTtcbmluY2x1ZGUvbGludXgvcGh5Lmg6NDUwOiNkZWZpbmUgbWRpb2J1c19yZWdpc3RlcihidXMpIF9fbWRpb2J1c19yZWdpc3RlcihidXMsIFRISVNfTU9EVUxFKVxuaW5jbHVkZS9saW51eC9waHkuaC00NTEtI2RlZmluZSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMpIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzODg2CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMzg0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgUEhZIEZpeHVwIFBhdGNoKioKCk9rYXksIGhlcmUmIzM5O3MgdGhlIGJyZWFrZG93bi4gVGhpcyBwYXRjaCBwcmltYXJpbHkgY29uY2VybnMgdGhlIFBIWSAoUGh5c2ljYWwgTGF5ZXIpIGZpeHVwIG1lY2hhbmlzbSB3aXRoaW4gdGhlIG5ldHdvcmtpbmcgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgdGhlIFBIWSBsaWJyYXJ5LiBJdCYjMzk7cyBhYm91dCBob3cgdGhlIGtlcm5lbCBoYW5kbGVzIHNwZWNpZmljIGhhcmR3YXJlIHF1aXJrcyBhbmQgd29ya2Fyb3VuZHMgZm9yIHZhcmlvdXMgUEhZIGRldmljZXMuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIHdlbnQgbGlrZSB0aGlzOiBgX19tZGlvYnVzX3JlZ2lzdGVyYCBpcyB0aGUgZW50cnkgcG9pbnQsIGFuZCBpdCBsZWFkcyB0byBQSFkgcHJvYmluZyBhbmQgcmVnaXN0cmF0aW9uLCB3aGljaCBpbiB0dXJuIGludm9sdmVzIGBwaHlfc2Nhbl9maXh1cHNgLiBUaGUgZml4dXAgaXMgY2FsbGVkIGZyb20gYHBoeV9kZXZpY2VfcmVnaXN0ZXJgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHRoaXMgc3BlY2lmaWMgcGF0Y2ggaXMgYWN0dWFsbHkgY2hhbmdpbmcuIEkgcmUtZXhhbWluZWQgdGhlIHBhdGNoIHRvIHVuZGVyc3RhbmQgdGhlIG1vZGlmaWNhdGlvbnMuCgpUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmaWxlLCBgcGh5X2ZpeHVwLmNgLCBhbmQgbW9kaWZpZXMgYGRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZWAgYW5kIGBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jYC4gTG9va2luZyBjYXJlZnVsbHksIGl0IGFwcGVhcnMgdGhlIHBhdGNoIGlzIHJlbW92aW5nIHRoZSBvbGQgaW4tcGxhY2UgaW1wbGVtZW50YXRpb24gb2YgYHBoeV9yZWdpc3Rlcl9maXh1cGAgZXRjLiBhbmQgbW92aW5nIHRoZSBpbXBsZW1lbnRhdGlvbiBpbnRvIGEgc2VwYXJhdGUgZmlsZSAoYHBoeV9maXh1cC5jYCkuIFRoZSBjb2RlIHRvIHJlZ2lzdGVyIGZpeHVwcyBpcyBub3cgYF9faW5pdGAsIG1lYW5pbmcgaXQgaGFwcGVucyBvbmx5IGR1cmluZyBib290LCBub3QgZHluYW1pY2FsbHkgYXQgcnVudGltZS4gVGhlIHByZXZpb3VzIGNhbGxzIHRvIGBwaHlfcmVnaXN0ZXJfZml4dXBfKmAgd2VyZSBkb25lIHZpYSBgRVhQT1JUX1NZTUJPTGAsIHdoaWNoIGhhcyBiZWVuIHJlbW92ZWQuCgpIZXJlJiMzOTtzIHRoZSBjcml0aWNhbCBiaXQ6IHRoZSBmdW5jdGlvbnMgYHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfdWlkYCBhbmQgYHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWRgIGFuZCBgcGh5X3JlZ2lzdGVyX2ZpeHVwYCBhcmUgTkVWRVIgdXNlZCBvbiB0aGUgYW1kNjQgYXJjaGl0ZWN0dXJlLiBJIHZlcmlmaWVkIHRoaXMgYnkgY2hlY2tpbmcgdGhlIGNhbGxlcnMgb2YgdGhvc2UgZnVuY3Rpb25zIHdoaWNoIGFyZSBmb3VuZCBvbmx5IG9uIEFSTSBhbmQgUG93ZXJQQyBwbGF0Zm9ybXMuIFRoZSBgcGh5X2ZpeHVwX2xpc3RgIGlzIGFsd2F5cyBlbXB0eSBvbiBhbWQ2NCBkdXJpbmcgcnVudGltZS4gU2luY2UgaXQmIzM5O3MgZW1wdHksIGFuZCB0aGUgbGlzdCBpcyByZWFkLW9ubHkgYWZ0ZXIgaW5pdCwgYHBoeV9zY2FuX2ZpeHVwc2AgZG9lcyBub3RoaW5nIG1vcmUgdGhhbiByZXR1cm4gMC4gVGhlIHJlbW92YWwgb2YgdGhlIG11dGV4IGlzIG5vdCBhbiBpc3N1ZSBiZWNhdXNlIHRoZXJlIGlzIG5vIHJlZ2lzdHJhdGlvbiBoYXBwZW5pbmcgYWZ0ZXIgaW5pdGlhbGl6YXRpb24uCgpFZmZlY3RpdmVseSwgb24gYW1kNjQsIHRoZSBmdW5jdGlvbmFsaXR5IGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGlzIGEgbm8tb3A7IHRoZSBjb2RlIHBhdGhzIHJlbGF0ZWQgdG8gZml4dXBzIGFyZSBub3QgZXhlY3V0ZWQuIFRoZSBjaGFuZ2UgaXMgc2FmZSBmb3IgYW1kNjQsIGFzIHRoZXJlIGFyZSBubyBjYWxscyBhbmQgbm8gZGVwZW5kZW5jaWVzIG9uIGFtZDY0LiBUaGVyZWZvcmUsIHRoZSBwYXRjaCBhcHBlYXJzIHRvIGJlIGEgY2xlYW4tdXAgYW5kIHJlZmFjdG9yaW5nLCByZWxldmFudCBvbmx5IHRvIHNwZWNpZmljLCBub24tYW1kNjQgYXJjaGl0ZWN0dXJlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5X3JlZ2lzdGVyX2ZpeHVwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0PTUyNz1UaGUgcGxhdGZvcm0gY29kZSBjYW4gcmVnaXN0ZXIgdGhlIGZpeHVwIHVzaW5nIG9uZSBvZjo6XG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdC01MjgtXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdDo1Mjk6IGludCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZCh1MzIgcGh5X3VpZCwgdTMyIHBoeV91aWRfbWFzayxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0LTUzMC1cdFx0aW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSk7XG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdDo1MzE6IGludCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX2lkKGNvbnN0IGNoYXIgKnBoeV9pZCxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0LTUzMi1cdFx0aW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSk7XG4tLVxuYXJjaC9hcm0vbWFjaC1pbXgvbWFjaC1pbXg2cS5jPTcxPXN0YXRpYyB2b2lkIF9faW5pdCBpbXg2cV9lbmV0X3BoeV9pbml0KHZvaWQpXG4tLVxuYXJjaC9hcm0vbWFjaC1pbXgvbWFjaC1pbXg2cS5jLTczLVx0aWYgKElTX0JVSUxUSU4oQ09ORklHX1BIWUxJQikpIHtcbmFyY2gvYXJtL21hY2gtaW14L21hY2gtaW14NnEuYzo3NDpcdFx0cGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQoUEhZX0lEX0tTWjkwMjEsIE1JQ1JFTF9QSFlfSURfTUFTSyxcbmFyY2gvYXJtL21hY2gtaW14L21hY2gtaW14NnEuYy03NS1cdFx0XHRcdGtzejkwMjFybl9waHlfZml4dXApO1xuLS1cbmFyY2gvYXJtL21hY2gtaW14L21hY2gtaW14N2QuYz0zMD1zdGF0aWMgdm9pZCBfX2luaXQgaW14N2RfZW5ldF9waHlfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtaW14L21hY2gtaW14N2QuYy0zMi1cdGlmIChJU19CVUlMVElOKENPTkZJR19QSFlMSUIpKSB7XG5hcmNoL2FybS9tYWNoLWlteC9tYWNoLWlteDdkLmM6MzM6XHRcdHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfdWlkKFBIWV9JRF9CQ001NDIyMCwgMHhmZmZmZmZmZixcbmFyY2gvYXJtL21hY2gtaW14L21hY2gtaW14N2QuYy0zNC1cdFx0XHRcdFx0ICAgYmNtNTQyMjBfcGh5X2ZpeHVwKTtcbi0tXG5hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jPTI1OD1zdGF0aWMgdm9pZCBfX2luaXQgYXB4NGRldmtpdF9pbml0KHZvaWQpXG4tLVxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYy0yNjItXHRpZiAoSVNfQlVJTFRJTihDT05GSUdfUEhZTElCKSlcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmM6MjYzOlx0XHRwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZChQSFlfSURfS1NaODA1MSwgTUlDUkVMX1BIWV9JRF9NQVNLLFxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYy0yNjQtXHRcdFx0XHRcdCAgIGFweDRkZXZraXRfcGh5X2ZpeHVwKTtcbi0tXG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvZG5zMzIzLXNldHVwLmM9NjEyPXN0YXRpYyB2b2lkIF9faW5pdCBkbnMzMjNfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtb3Jpb241eC9kbnMzMjMtc2V0dXAuYy02NzctXHRcdFx0YnJlYWs7XG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvZG5zMzIzLXNldHVwLmM6Njc4Olx0XHRwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZChNQVJWRUxMX1BIWV9JRF84OEUxMTE4LFxuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L2RuczMyMy1zZXR1cC5jLTY3OS1cdFx0XHRcdFx0ICAgTUFSVkVMTF9QSFlfSURfTUFTSyxcbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzg1eHgvbXBjODV4eF9tZHMuYz0yODI9c3RhdGljIGludCBfX2luaXQgYm9hcmRfZml4dXBzKHZvaWQpXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84NXh4L21wYzg1eHhfbWRzLmMtMjk2LVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84NXh4L21wYzg1eHhfbWRzLmM6Mjk3Olx0XHRwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX2lkKHBoeV9pZCwgbXBjODU2OF9maXh1cF8xMjVfY2xvY2spO1xuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84NXh4L21wYzg1eHhfbWRzLmM6Mjk4Olx0XHRwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX2lkKHBoeV9pZCwgbXBjODU2OF9tZHNfcGh5X2ZpeHVwcyk7XG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzg1eHgvbXBjODV4eF9tZHMuYy0yOTktXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84NXh4L21wYzg1eHhfbWRzLmMtMzAyLVx0XHRcdCh1bnNpZ25lZCBsb25nIGxvbmcpcmVzLnN0YXJ0LCA3KTtcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODV4eC9tcGM4NXh4X21kcy5jOjMwMzpcdFx0cGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZChwaHlfaWQsIG1wYzg1NjhfbWRzX3BoeV9maXh1cHMpO1xuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84NXh4L21wYzg1eHhfbWRzLmMtMzA0LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYz0xNj1zdHJ1Y3QgcGh5X2ZpeHVwIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMtMjQtLyoqXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmM6MjU6ICogcGh5X3JlZ2lzdGVyX2ZpeHVwIC0gY3JlYXRlcyBhIG5ldyBwaHlfZml4dXAgYW5kIGFkZHMgaXQgdG8gdGhlIGxpc3RcbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYy0yNi0gKiBAYnVzX2lkOiBBIHN0cmluZyB3aGljaCBtYXRjaGVzIHBoeWRldi1cdTAwM2VtZGlvLmRldi5idXNfaWQgKG9yIFBIWV9BTllfSUQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTMyLSAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jOjMzOnN0YXRpYyB2b2lkIF9faW5pdCBwaHlfcmVnaXN0ZXJfZml4dXAoY29uc3QgY2hhciAqYnVzX2lkLCB1MzIgcGh5X3VpZCxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYy0zNC1cdFx0XHRcdCAgICAgIHUzMiBwaHlfdWlkX21hc2ssXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTUxLS8qIFJlZ2lzdGVycyBhIGZpeHVwIHRvIGJlIHJ1biBvbiBhbnkgUEhZIHdpdGggdGhlIFVJRCBpbiBwaHlfdWlkICovXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmM6NTI6dm9pZCBfX2luaXQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQodTMyIHBoeV91aWQsIHUzMiBwaHlfdWlkX21hc2ssXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMtNTMtXHRcdFx0XHQgICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSlcbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYy01NC17XG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmM6NTU6XHRwaHlfcmVnaXN0ZXJfZml4dXAoTlVMTCwgcGh5X3VpZCwgcGh5X3VpZF9tYXNrLCBydW4pO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTU2LX1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMtNTgtLyogUmVnaXN0ZXJzIGEgZml4dXAgdG8gYmUgcnVuIG9uIHRoZSBQSFkgd2l0aCBpZCBzdHJpbmcgYnVzX2lkICovXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmM6NTk6dm9pZCBfX2luaXQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZChjb25zdCBjaGFyICpidXNfaWQsXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMtNjAtXHRcdFx0XHQgICAgICBpbnQgKCpydW4pKHN0cnVjdCBwaHlfZGV2aWNlICopKVxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTYxLXtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYzo2MjpcdHBoeV9yZWdpc3Rlcl9maXh1cChidXNfaWQsIDAsIDAsIHJ1bik7XG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMtNjMtfVxuLS1cbmluY2x1ZGUvbGludXgvcGh5Lmg9MjQyMj12b2lkIHBoeV9yZXNvbHZlX3BhdXNlKHVuc2lnbmVkIGxvbmcgKmxvY2FsX2FkdiwgdW5zaWduZWQgbG9uZyAqcGFydG5lcl9hZHYsXG4tLVxuaW5jbHVkZS9saW51eC9waHkuaC0yNDI0LVxuaW5jbHVkZS9saW51eC9waHkuaDoyNDI1OnZvaWQgX19pbml0IHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWQoY29uc3QgY2hhciAqYnVzX2lkLFxuaW5jbHVkZS9saW51eC9waHkuaC0yNDI2LVx0XHRcdFx0ICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSk7XG5pbmNsdWRlL2xpbnV4L3BoeS5oOjI0Mjc6dm9pZCBfX2luaXQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQodTMyIHBoeV91aWQsIHUzMiBwaHlfdWlkX21hc2ssXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTI0MjgtXHRcdFx0XHQgICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwMTg0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIFBIWSBGaXh1cHMqKgoKT2theSwgc28gSSBuZWVkIGEgcmVmcmVzaGVyIG9uIFBIWSBmaXh1cHMuIExldCYjMzk7cyBzZWUuLi4gdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyB0aGUgZG9jdW1lbnRhdGlvbi4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBoZWFkIG92ZXIgdG8gYERvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0YC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgY29yZSBuZXR3b3JraW5nIGRvY3VtZW50YXRpb24gbGl2ZXMsIHNvIGl0JiMzOTtzIGEgc2FmZSBiZXQgdGhhdCBQSFktcmVsYXRlZCBpbmZvcm1hdGlvbiB3aWxsIGJlIHRoZXJlLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGEgc29saWQgb3ZlcnZpZXcgb2Ygd2hhdCB0aGVzZSBmaXh1cHMgYWN0dWFsbHkgKmRvKiwgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhlbSwgYW5kIGhvcGVmdWxseSwgc29tZSBleGFtcGxlcyBvZiBjb21tb24gc2NlbmFyaW9zIHdoZXJlIHRoZXkmIzM5O3JlIG5lY2Vzc2FyeS4gSSYjMzk7bSBhbHNvIGhvcGluZyBmb3IgbGlua3MgdG8gcmVsZXZhbnQgY29kZSwgbWF5YmUgc29tZSBkaXNjdXNzaW9ucyBvbiBiZXN0IHByYWN0aWNlcywgYW5kIHBvdGVudGlhbGx5IHNvbWUgcG9pbnRlcnMgdG8gdGhlIGtlcm5lbCBpbmZyYXN0cnVjdHVyZSBpbnZvbHZlZC4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gZmlndXJpbmcgb3V0IHRoZSBkZXNpZ24gcHJpbmNpcGxlcyBiZWhpbmQgdGhlIGZpeHVwcy4uLiB0aGUgZ2VuZXJhbCBtZXRob2RvbG9neSBmb3IgYWRkcmVzc2luZyBpc3N1ZXMgd2l0aCBkaWZmZXJlbnQgUEhZIGltcGxlbWVudGF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDUxNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNTE1Olx0Zml4dXBzIHRvIGJlIHJ1biB3aGVuIHRoZSBQSFkgaXMgYnJvdWdodCB1cCAob3Igc3Vic2VxdWVudGx5IHJlc2V0KS5cbiA1MTY6XHRcbiA1MTc6XHRXaGVuIHRoZSBQSFkgTGF5ZXIgYnJpbmdzIHVwIGEgUEhZIGl0IGNoZWNrcyB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBmaXh1cHNcbiA1MTg6XHRyZWdpc3RlcmVkIGZvciBpdCwgbWF0Y2hpbmcgYmFzZWQgb24gVUlEIChjb250YWluZWQgaW4gdGhlIFBIWSBkZXZpY2UmIzM5O3MgcGh5X2lkXG4gNTE5Olx0ZmllbGQpIGFuZCB0aGUgYnVzIGlkZW50aWZpZXIgKGNvbnRhaW5lZCBpbiBwaHlkZXYtXHUwMDNlZGV2LmJ1c19pZCkuICBCb3RoIG11c3RcbiA1MjA6XHRtYXRjaCwgaG93ZXZlciB0d28gY29uc3RhbnRzLCBQSFlfQU5ZX0lEIGFuZCBQSFlfQU5ZX1VJRCwgYXJlIHByb3ZpZGVkIGFzXG4gNTIxOlx0d2lsZGNhcmRzIGZvciB0aGUgYnVzIElEIGFuZCBVSUQsIHJlc3BlY3RpdmVseS5cbiA1MjI6XHRcbiA1MjM6XHRXaGVuIGEgbWF0Y2ggaXMgZm91bmQsIHRoZSBQSFkgbGF5ZXIgd2lsbCBpbnZva2UgdGhlIHJ1biBmdW5jdGlvbiBhc3NvY2lhdGVkXG4gNTI0Olx0d2l0aCB0aGUgZml4dXAuICBUaGlzIGZ1bmN0aW9uIGlzIHBhc3NlZCBhIHBvaW50ZXIgdG8gdGhlIHBoeV9kZXZpY2Ugb2ZcbiA1MjU6XHRpbnRlcmVzdC4gIEl0IHNob3VsZCB0aGVyZWZvcmUgb25seSBvcGVyYXRlIG9uIHRoYXQgUEhZLlxuIDUyNjpcdFxuIDUyNzpcdFRoZSBwbGF0Zm9ybSBjb2RlIGNhbiByZWdpc3RlciB0aGUgZml4dXAgdXNpbmcgb25lIG9mOjpcbiA1Mjg6XHRcbiA1Mjk6XHQgaW50IHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfdWlkKHUzMiBwaHlfdWlkLCB1MzIgcGh5X3VpZF9tYXNrLFxuIDUzMDpcdFx0XHRpbnQgKCpydW4pKHN0cnVjdCBwaHlfZGV2aWNlICopKTtcbiA1MzE6XHQgaW50IHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWQoY29uc3QgY2hhciAqcGh5X2lkLFxuIDUzMjpcdFx0XHRpbnQgKCpydW4pKHN0cnVjdCBwaHlfZGV2aWNlICopKTtcbiA1MzM6XHRcbiA1MzQ6XHRTdGFuZGFyZHNcbiA1MzU6XHQ9PT09PT09PT1cbiA1MzY6XHRcbiA1Mzc6XHRJRUVFIFN0YW5kYXJkIDgwMi4zOiBDU01BL0NEIEFjY2VzcyBNZXRob2QgYW5kIFBoeXNpY2FsIExheWVyIFNwZWNpZmljYXRpb25zLCBTZWN0aW9uIFR3bzpcbiA1Mzg6XHRodHRwOi8vc3RhbmRhcmRzLmllZWUub3JnL2dldGllZWU4MDIvZG93bmxvYWQvODAyLjMtMjAwOF9zZWN0aW9uMi5wZGZcbiA1Mzk6XHRcbiA1NDA6XHRSR01JSSB2MS4zOlxuIDU0MTpcdGh0dHA6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTYwMzAzMjEyNjI5L2h0dHA6Ly93d3cuaHAuY29tL3JuZC9wZGZzL1JHTUlJdjFfMy5wZGZcbiA1NDI6XHRcbiA1NDM6XHRSR01JSSB2Mi4wOlxuIDU0NDpcdGh0dHA6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTYwMzAzMTcxMzI4L2h0dHA6Ly93d3cuaHAuY29tL3JuZC9wZGZzL1JHTUlJdjJfMF9maW5hbF9ocC5wZGZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDEwNTIKCQkJCQkJCW91dHB1dDogMTkyCgkJCQkJCQl0aG91Z2h0czogMjc0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiBQSFkgRml4dXAgUGF0Y2ggZm9yIEZ1enppbmcgU3VpdGFiaWxpdHkqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhpcyBjb21taXQuIEl0IGFwcGVhcnMgdG8gaW52b2x2ZSBjaGFuZ2VzIHRvIFBIWSAoUGh5c2ljYWwgTGF5ZXIpIGRldmljZSBmaXh1cHMgd2l0aGluIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gdGhlIHJlZ2lzdHJhdGlvbiBhbmQgZXhlY3V0aW9uIG9mIHRoZXNlIGZpeHVwcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gZmxvdyBhbmQgaWRlbnRpZnkgaWYgYW55IGNvZGUgbW9kaWZpY2F0aW9ucyBpbnRyb2R1Y2UgbmV3IHZ1bG5lcmFiaWxpdGllcyBvciByZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzIGZvciB0aGUgYW1kNjQgYXJjaGl0ZWN0dXJlLCB3aGljaCBpcyBvdXIgdGFyZ2V0LgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGNoYW5nZXM6IFdlIGhhdmUgYWx0ZXJhdGlvbnMgaW4gYGRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZWAsIGBwaHlfZGV2aWNlLmNgLCBhbmQgYSAqbmV3KiBgcGh5X2ZpeHVwLmNgIGZpbGUsIGFsb25nIHdpdGggYWRqdXN0bWVudHMgdG8gYHBoeWxpYi1pbnRlcm5hbC5oYCBhbmQgYGxpbnV4L3BoeS5oYC4gVGhpcyBzdWdnZXN0cyBhIHJlZmFjdG9yaW5nIG9mIGZpeHVwIHJlZ2lzdHJhdGlvbiBhbmQgaGFuZGxpbmcuIEkgbm90ZSB0aGUgcmVtb3ZhbCBvZiBhIG11dGV4IGluIGBwaHlfc2Nhbl9maXh1cHNgLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyB3aGV0aGVyIHRoaXMgY3JlYXRlcyBhbnkgcmFjZSBjb25kaXRpb25zIG9yIG5ldyBleGVjdXRpb24gZmxvd3Mgb24gYGFtZDY0YC4KClRoZSBjb3JlIHRyaWFnZSBwaGlsb3NvcGh5IHN0YXRlcyByZWFjaGFiaWxpdHkgaXMgdGhlIHByaW1hcnkgZ2F0ZS4gSSYjMzk7dmUgZ290IHRvIGVuc3VyZSB0aGUgbW9kaWZpZWQgY29kZSBjYW4gKmFjdHVhbGx5KiBleGVjdXRlIGluIG91ciBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFVucmVhY2hhYmxlIGNvZGUgKm11c3Qgbm90KiBiZSBmdXp6ZWQuCgpNeSBwcmltYXJ5IGZvY3VzIGlzIG9uIGBwaHlfcmVnaXN0ZXJfZml4dXBgLCBgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWRgLCBgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZGAsIGFuZCBgcGh5X25lZWRzX2ZpeHVwYC4gQXJlIHRoZXNlIGZ1bmN0aW9ucyBjYWxsZWQgb24gYGFtZDY0YD8gTGV0JiMzOTtzIGNoZWNrLiBBaCwgaXQgbG9va3MgbGlrZSBgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWRgIGFuZCBgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZGAgYXJlIG9ubHkgY2FsbGVkIGZyb20gd2l0aGluIEFSTSBhbmQgUG93ZXJQQy1zcGVjaWZpYyBib2FyZCBpbml0aWFsaXphdGlvbiBjb2RlLiBUaGVzZSBhcmNoaXRlY3R1cmVzIGFyZSBub3QgcmVsZXZhbnQgdG8gb3VyIHRhcmdldCBvZiBhbWQ2NC4gQWRkaXRpb25hbGx5LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGRlZmluaXRpb24uIFRoZXkmIzM5O3JlIG1hcmtlZCBhcyBgX19pbml0YCBmdW5jdGlvbnMgYW5kIG5vdCBleHBvcnRlZCB3aGljaCBjb25maXJtcyBteSBpbml0aWFsIHRob3VnaHRzLiBUaGVyZWZvcmUsIHRoZXNlIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMgYXJlICpuZXZlciogY2FsbGVkLCBub3IgYXZhaWxhYmxlIHRvIGxvYWQgb24gYGFtZDY0YC4KCklmIHRoZSByZWdpc3RyYXRpb24gZnVuY3Rpb25zIGFyZSBuZXZlciBjYWxsZWQgb24gYGFtZDY0YCwgdGhlbiB0aGUgYHBoeV9maXh1cF9saXN0YCAqbXVzdCogYWx3YXlzIGJlIGVtcHR5IG9uIGBhbWQ2NGAuIFRoaXMgaXMgY3JpdGljYWwuCgpOb3csIGxldCYjMzk7cyBleGFtaW5lIGBwaHlfc2Nhbl9maXh1cHNgLiBJdCYjMzk7cyBjcnVjaWFsIHRvIGV2YWx1YXRlIGlmIHRoZSByZW1vdmFsIG9mIHRoZSBtdXRleCBpbiB0aGlzIGZ1bmN0aW9uIG9wZW5zIGFueSBzZWN1cml0eSBpbXBsaWNhdGlvbnMgb24gYGFtZDY0YC4gSXQgd2lsbCBiZSBjYWxsZWQgKmlmKiBhbnkgUEhZIGlzIHJlZ2lzdGVyZWQgb3Igc2Nhbm5lZC4gU2luY2UgYHBoeV9maXh1cF9saXN0YCBpcyBhbHdheXMgZW1wdHkgb24gYGFtZDY0YCwgdGhlIGxvb3AgYm9keSB3aXRoaW4gYHBoeV9zY2FuX2ZpeHVwc2AgaXMgbmV2ZXIgZXhlY3V0ZWQuIEl0JiMzOTtzIGVmZmVjdGl2ZWx5IGp1c3QgYSBjaGVjayBmb3IgYW4gZW1wdHkgbGlzdCBhbmQgYSByZXR1cm4gMC4gVGhlIHBhdGNoIHJlbW92ZWQgYSBtdXRleCBpbiB0aGlzIGZ1bmN0aW9uLCBidXQgaXQgaXMgZW50aXJlbHkgaXJyZWxldmFudCBzaW5jZSBgcGh5X3NjYW5fZml4dXBzYCBkb2VzIHZpcnR1YWxseSBub3RoaW5nLgoKU28sIG9uIGBhbWQ2NGAsIHdoYXQgaXMgcmVhY2hhYmxlOgoqICBgcGh5X3NjYW5fZml4dXBzKClgIGlzIGNhbGxlZCwgY2hlY2tzIHRoZSBlbXB0eSBgcGh5X2ZpeHVwX2xpc3RgLCBhbmQgcmV0dXJucyAwLgoKQmFzZWQgb24gdGhlIGluc3RydWN0aW9ucywgc2luY2UgYWxsIHRoZSBtb2RpZmllZCBjb2RlIHN0cmljdGx5IGZhbGxzIGludG8gdGhlIG5lZ2F0aXZlIGNyaXRlcmlhIGRlc2NyaWJlZCAoc3BlY2lmaWNhbGx5ICYjMzQ7Y29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlJiMzNDsgYW5kIHRodXMgJiMzNDt1bnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHMmIzM0OykgQU5EIGdpdmVuIHRoZSBzcGVjaWZpYyByZWFjaGFiaWxpdHkgY3JpdGVyaWEsIGZ1enppbmcgdGhpcyBwYXRjaCB3b3VsZCBiZSBhIHdhc3RlIG9mIHRpbWUgYW5kIGNvbXB1dGF0aW9uYWwgcmVzb3VyY2VzLiBgV29ydGhGdXp6aW5nYCBtdXN0IGJlIHNldCB0byBgZmFsc2VgLgoKRnVydGhlcm1vcmUsIEkgaGF2ZSB2ZXJpZmllZCB0aGlzIGNvbmNsdXNpb24gbWVldHMgYWxsIHJlcXVpcmVtZW50cyB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZXh0cmFjdHMgUEhZIGZpeHVwIHJlZ2lzdHJhdGlvbiBpbnRvIGRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYyBhbmQgbWFya3MgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucyBhcyBfX2luaXQuIFRoZSBvbmx5IGNhbGxlcnMgb2YgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQoKSBhbmQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZCgpIGluIHRoZSBrZXJuZWwgYXJlIHBsYXRmb3JtLXNwZWNpZmljIGVhcmx5LWJvb3QgY29kZSBvbiBBUk0gKGFyY2gvYXJtL21hY2gtKikgYW5kIFBvd2VyUEMgKGFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvKiksIHdpdGggbm8gY2FsbGVycyBvbiBhbWQ2NC4gTmVpdGhlciBmdW5jdGlvbiBpcyBleHBvcnRlZCB0byBtb2R1bGVzLiBDb25zZXF1ZW50bHksIG9uIGFtZDY0LCBwaHlfZml4dXBfbGlzdCBpcyBwZXJtYW5lbnRseSBlbXB0eSwgcmVuZGVyaW5nIHRoZSBtYXRjaGluZyBsb2dpYyAocGh5X25lZWRzX2ZpeHVwKSBhbmQgZml4dXAgZXhlY3V0aW9uIHBhdGggaW5zaWRlIHBoeV9zY2FuX2ZpeHVwcygpIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4gRnV6emluZyBvbiBhbWQ2NCBjYW5ub3QgZXhlcmNpc2UgdGhlIG1vZGlmaWVkIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZXh0cmFjdHMgUEhZIGZpeHVwIHJlZ2lzdHJhdGlvbiBpbnRvIGRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYyBhbmQgbWFya3MgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucyBhcyBfX2luaXQuIFRoZSBvbmx5IGNhbGxlcnMgb2YgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQoKSBhbmQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZCgpIGluIHRoZSBrZXJuZWwgYXJlIHBsYXRmb3JtLXNwZWNpZmljIGVhcmx5LWJvb3QgY29kZSBvbiBBUk0gKGFyY2gvYXJtL21hY2gtKikgYW5kIFBvd2VyUEMgKGFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvKiksIHdpdGggbm8gY2FsbGVycyBvbiBhbWQ2NC4gTmVpdGhlciBmdW5jdGlvbiBpcyBleHBvcnRlZCB0byBtb2R1bGVzLiBDb25zZXF1ZW50bHksIG9uIGFtZDY0LCBwaHlfZml4dXBfbGlzdCBpcyBwZXJtYW5lbnRseSBlbXB0eSwgcmVuZGVyaW5nIHRoZSBtYXRjaGluZyBsb2dpYyAocGh5X25lZWRzX2ZpeHVwKSBhbmQgZml4dXAgZXhlY3V0aW9uIHBhdGggaW5zaWRlIHBoeV9zY2FuX2ZpeHVwcygpIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4gRnV6emluZyBvbiBhbWQ2NCBjYW5ub3QgZXhlcmNpc2UgdGhlIG1vZGlmaWVkIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6MjI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDIwOjIwOjUzLjA2MzYwMjAyN1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5OTcyMTYyMjM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZXh0cmFjdHMgUEhZIGZpeHVwIHJlZ2lzdHJhdGlvbiBpbnRvIGRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYyBhbmQgbWFya3MgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucyBhcyBfX2luaXQuIFRoZSBvbmx5IGNhbGxlcnMgb2YgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQoKSBhbmQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZCgpIGluIHRoZSBrZXJuZWwgYXJlIHBsYXRmb3JtLXNwZWNpZmljIGVhcmx5LWJvb3QgY29kZSBvbiBBUk0gKGFyY2gvYXJtL21hY2gtKikgYW5kIFBvd2VyUEMgKGFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvKiksIHdpdGggbm8gY2FsbGVycyBvbiBhbWQ2NC4gTmVpdGhlciBmdW5jdGlvbiBpcyBleHBvcnRlZCB0byBtb2R1bGVzLiBDb25zZXF1ZW50bHksIG9uIGFtZDY0LCBwaHlfZml4dXBfbGlzdCBpcyBwZXJtYW5lbnRseSBlbXB0eSwgcmVuZGVyaW5nIHRoZSBtYXRjaGluZyBsb2dpYyAocGh5X25lZWRzX2ZpeHVwKSBhbmQgZml4dXAgZXhlY3V0aW9uIHBhdGggaW5zaWRlIHBoeV9zY2FuX2ZpeHVwcygpIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4gRnV6emluZyBvbiBhbWQ2NCBjYW5ub3QgZXhlcmNpc2UgdGhlIG1vZGlmaWVkIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6MjA6NTMuMDYzNjA2NjU3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODg4ODA3NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAzMzU5NjM5MDIyYzk4YjRhNGM4OTUzMDMyNTRiMWY2NmIxMWNhMTk3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gU2VwIDEzIDIwOjIwOjUyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZSBiL2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZVxcbmluZGV4IGUyM2RmNWU4MzZlOWUuLjQ2NzRlYWYyNDNlYmEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlXFxuQEAgLTgsNyArOCw3IEBAIGxpYnBoeS15XFx0XFx0XFx0Oj0gcGh5Lm8gcGh5LWM0NS5vIHBoeS1jb3JlLm8gcGh5X2RldmljZS5vIFxcXFxcXG4gXFxuIGlmZGVmIENPTkZJR19QSFlMSUJcXG4gIyBidWlsdC1pbiB3aGVuZXZlciBQSFlMSUIgaXMgYnVpbHQtaW4gb3IgbW9kdWxlXFxuLW9iai15XFx0XFx0XFx0XFx0Kz0gc3R1YnMub1xcbitvYmoteVxcdFxcdFxcdFxcdCs9IHN0dWJzLm8gcGh5X2ZpeHVwLm9cXG4gZW5kaWZcXG4gXFxuIGxpYnBoeS0kKENPTkZJR19TV1BIWSlcXHRcXHQrPSBzd3BoeS5vXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXFxuaW5kZXggOTRiMmU4NWUwMGEzNy4uMjdjMGNiMTM4NjBiNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xcbkBAIC00OSwxNCArNDksNiBAQCBNT0RVTEVfREVTQ1JJUFRJT04oXFxcIlBIWSBsaWJyYXJ5XFxcIik7XFxuIE1PRFVMRV9BVVRIT1IoXFxcIkFuZHkgRmxlbWluZ1xcXCIpO1xcbiBNT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuIFxcbi1zdHJ1Y3QgcGh5X2ZpeHVwIHtcXG4tXFx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xcbi1cXHRjaGFyIGJ1c19pZFtNSUlfQlVTX0lEX1NJWkUgKyAzXTtcXG4tXFx0dTMyIHBoeV91aWQ7XFxuLVxcdHUzMiBwaHlfdWlkX21hc2s7XFxuLVxcdGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XFxuLX07XFxuLVxcbiBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZ2VucGh5X2M0NV9kcml2ZXIgPSB7XFxuIFxcdC5waHlfaWQgICAgICAgICA9IDB4ZmZmZmZmZmYsXFxuIFxcdC5waHlfaWRfbWFzayAgICA9IDB4ZmZmZmZmZmYsXFxuQEAgLTIzNyw5ICsyMjksNiBAQCBzdGF0aWMgdm9pZCBwaHlfbWRpb19kZXZpY2VfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG4gXFxuIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBnZW5waHlfZHJpdmVyO1xcbiBcXG4tc3RhdGljIExJU1RfSEVBRChwaHlfZml4dXBfbGlzdCk7XFxuLXN0YXRpYyBERUZJTkVfTVVURVgocGh5X2ZpeHVwX2xvY2spO1xcbi1cXG4gc3RhdGljIGJvb2wgcGh5X2Rydl93b2xfZW5hYmxlZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiB7XFxuIFxcdHN0cnVjdCBldGh0b29sX3dvbGluZm8gd29sID0geyAuY21kID0gRVRIVE9PTF9HV09MIH07XFxuQEAgLTQyNyw4NSArNDE2LDYgQEAgc3RhdGljIF9fbWF5YmVfdW51c2VkIGludCBtZGlvX2J1c19waHlfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gc3RhdGljIFNJTVBMRV9ERVZfUE1fT1BTKG1kaW9fYnVzX3BoeV9wbV9vcHMsIG1kaW9fYnVzX3BoeV9zdXNwZW5kLFxcbiBcXHRcXHRcXHQgbWRpb19idXNfcGh5X3Jlc3VtZSk7XFxuIFxcbi0vKipcXG4tICogcGh5X3JlZ2lzdGVyX2ZpeHVwIC0gY3JlYXRlcyBhIG5ldyBwaHlfZml4dXAgYW5kIGFkZHMgaXQgdG8gdGhlIGxpc3RcXG4tICogQGJ1c19pZDogQSBzdHJpbmcgd2hpY2ggbWF0Y2hlcyBwaHlkZXYtXFx1MDAzZW1kaW8uZGV2LmJ1c19pZCAob3IgTlVMTClcXG4tICogQHBoeV91aWQ6IFVzZWQgdG8gbWF0Y2ggYWdhaW5zdCBwaHlkZXYtXFx1MDAzZXBoeV9pZCAodGhlIFVJRCBvZiB0aGUgUEhZKVxcbi0gKiBAcGh5X3VpZF9tYXNrOiBBcHBsaWVkIHRvIHBoeWRldi1cXHUwMDNlcGh5X2lkIGFuZCBmaXh1cC1cXHUwMDNlcGh5X3VpZCBiZWZvcmVcXG4tICpcXHRjb21wYXJpc29uIChvciAwIHRvIGRpc2FibGUgaWQtYmFzZWQgbWF0Y2hpbmcpXFxuLSAqIEBydW46IFRoZSBhY3R1YWwgY29kZSB0byBiZSBydW4gd2hlbiBhIG1hdGNoaW5nIFBIWSBpcyBmb3VuZFxcbi0gKi9cXG4tc3RhdGljIGludCBwaHlfcmVnaXN0ZXJfZml4dXAoY29uc3QgY2hhciAqYnVzX2lkLCB1MzIgcGh5X3VpZCwgdTMyIHBoeV91aWRfbWFzayxcXG4tXFx0XFx0XFx0ICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSlcXG4te1xcbi1cXHRzdHJ1Y3QgcGh5X2ZpeHVwICpmaXh1cCA9IGt6YWxsb2Nfb2JqKCpmaXh1cCk7XFxuLVxcbi1cXHRpZiAoIWZpeHVwKVxcbi1cXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4tXFxuLVxcdGlmIChidXNfaWQpXFxuLVxcdFxcdHN0cnNjcHkoZml4dXAtXFx1MDAzZWJ1c19pZCwgYnVzX2lkLCBzaXplb2YoZml4dXAtXFx1MDAzZWJ1c19pZCkpO1xcbi1cXHRmaXh1cC1cXHUwMDNlcGh5X3VpZCA9IHBoeV91aWQ7XFxuLVxcdGZpeHVwLVxcdTAwM2VwaHlfdWlkX21hc2sgPSBwaHlfdWlkX21hc2s7XFxuLVxcdGZpeHVwLVxcdTAwM2VydW4gPSBydW47XFxuLVxcbi1cXHRtdXRleF9sb2NrKFxcdTAwMjZwaHlfZml4dXBfbG9jayk7XFxuLVxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNmZpeHVwLVxcdTAwM2VsaXN0LCBcXHUwMDI2cGh5X2ZpeHVwX2xpc3QpO1xcbi1cXHRtdXRleF91bmxvY2soXFx1MDAyNnBoeV9maXh1cF9sb2NrKTtcXG4tXFxuLVxcdHJldHVybiAwO1xcbi19XFxuLVxcbi0vKiBSZWdpc3RlcnMgYSBmaXh1cCB0byBiZSBydW4gb24gYW55IFBIWSB3aXRoIHRoZSBVSUQgaW4gcGh5X3VpZCAqL1xcbi1pbnQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQodTMyIHBoeV91aWQsIHUzMiBwaHlfdWlkX21hc2ssXFxuLVxcdFxcdFxcdCAgICAgICBpbnQgKCpydW4pKHN0cnVjdCBwaHlfZGV2aWNlICopKVxcbi17XFxuLVxcdHJldHVybiBwaHlfcmVnaXN0ZXJfZml4dXAoTlVMTCwgcGh5X3VpZCwgcGh5X3VpZF9tYXNrLCBydW4pO1xcbi19XFxuLUVYUE9SVF9TWU1CT0wocGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQpO1xcbi1cXG4tLyogUmVnaXN0ZXJzIGEgZml4dXAgdG8gYmUgcnVuIG9uIHRoZSBQSFkgd2l0aCBpZCBzdHJpbmcgYnVzX2lkICovXFxuLWludCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX2lkKGNvbnN0IGNoYXIgKmJ1c19pZCxcXG4tXFx0XFx0XFx0ICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSlcXG4te1xcbi1cXHRyZXR1cm4gcGh5X3JlZ2lzdGVyX2ZpeHVwKGJ1c19pZCwgMCwgMCwgcnVuKTtcXG4tfVxcbi1FWFBPUlRfU1lNQk9MKHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWQpO1xcbi1cXG4tc3RhdGljIGJvb2wgcGh5X25lZWRzX2ZpeHVwKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHN0cnVjdCBwaHlfZml4dXAgKmZpeHVwKVxcbi17XFxuLVxcdGlmICghc3RyY21wKGZpeHVwLVxcdTAwM2VidXNfaWQsIHBoeWRldl9uYW1lKHBoeWRldikpKVxcbi1cXHRcXHRyZXR1cm4gdHJ1ZTtcXG4tXFxuLVxcdGlmIChmaXh1cC1cXHUwMDNlcGh5X3VpZF9tYXNrIFxcdTAwMjZcXHUwMDI2XFxuLVxcdCAgICBwaHlfaWRfY29tcGFyZShwaHlkZXYtXFx1MDAzZXBoeV9pZCwgZml4dXAtXFx1MDAzZXBoeV91aWQsIGZpeHVwLVxcdTAwM2VwaHlfdWlkX21hc2spKVxcbi1cXHRcXHRyZXR1cm4gdHJ1ZTtcXG4tXFxuLVxcdHJldHVybiBmYWxzZTtcXG4tfVxcbi1cXG4tLyogUnVucyBhbnkgbWF0Y2hpbmcgZml4dXBzIGZvciB0aGlzIHBoeWRldiAqL1xcbi1zdGF0aWMgaW50IHBoeV9zY2FuX2ZpeHVwcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi17XFxuLVxcdHN0cnVjdCBwaHlfZml4dXAgKmZpeHVwO1xcbi1cXG4tXFx0bXV0ZXhfbG9jayhcXHUwMDI2cGh5X2ZpeHVwX2xvY2spO1xcbi1cXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGZpeHVwLCBcXHUwMDI2cGh5X2ZpeHVwX2xpc3QsIGxpc3QpIHtcXG4tXFx0XFx0aWYgKHBoeV9uZWVkc19maXh1cChwaHlkZXYsIGZpeHVwKSkge1xcbi1cXHRcXHRcXHRpbnQgZXJyID0gZml4dXAtXFx1MDAzZXJ1bihwaHlkZXYpO1xcbi1cXG4tXFx0XFx0XFx0aWYgKGVyciBcXHUwMDNjIDApIHtcXG4tXFx0XFx0XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwaHlfZml4dXBfbG9jayk7XFxuLVxcdFxcdFxcdFxcdHJldHVybiBlcnI7XFxuLVxcdFxcdFxcdH1cXG4tXFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2VoYXNfZml4dXBzID0gdHJ1ZTtcXG4tXFx0XFx0fVxcbi1cXHR9XFxuLVxcdG11dGV4X3VubG9jayhcXHUwMDI2cGh5X2ZpeHVwX2xvY2spO1xcbi1cXG4tXFx0cmV0dXJuIDA7XFxuLX1cXG4tXFxuIC8qKlxcbiAgKiBnZW5waHlfbWF0Y2hfcGh5X2RldmljZSAtIG1hdGNoIGEgUEhZIGRldmljZSB3aXRoIGEgUEhZIGRyaXZlclxcbiAgKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3RcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwLi5mNDlmYzRjZWZlODE3XFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuY1xcbkBAIC0wLDAgKzEsOTkgQEBcXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXJcXG4rLypcXG4rICogUEhZIGZpeHVwIHN1cHBvcnRcXG4rICovXFxuK1xcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvbGlzdC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcGh5LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9zbGFiLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9zdHJpbmcuaFxcdTAwM2VcXG4rXFxuKyNpbmNsdWRlIFxcXCJwaHlsaWItaW50ZXJuYWwuaFxcXCJcXG4rXFxuK3N0YXRpYyBzdHJ1Y3QgbGlzdF9oZWFkIHBoeV9maXh1cF9saXN0IF9fcm9fYWZ0ZXJfaW5pdCA9XFxuK1xcdExJU1RfSEVBRF9JTklUKHBoeV9maXh1cF9saXN0KTtcXG4rXFxuK3N0cnVjdCBwaHlfZml4dXAge1xcbitcXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7XFxuK1xcdGNoYXIgYnVzX2lkW01JSV9CVVNfSURfU0laRSArIDNdO1xcbitcXHR1MzIgcGh5X3VpZDtcXG4rXFx0dTMyIHBoeV91aWRfbWFzaztcXG4rXFx0aW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcXG4rfTtcXG4rXFxuKy8qKlxcbisgKiBwaHlfcmVnaXN0ZXJfZml4dXAgLSBjcmVhdGVzIGEgbmV3IHBoeV9maXh1cCBhbmQgYWRkcyBpdCB0byB0aGUgbGlzdFxcbisgKiBAYnVzX2lkOiBBIHN0cmluZyB3aGljaCBtYXRjaGVzIHBoeWRldi1cXHUwMDNlbWRpby5kZXYuYnVzX2lkIChvciBQSFlfQU5ZX0lEKVxcbisgKiBAcGh5X3VpZDogVXNlZCB0byBtYXRjaCBhZ2FpbnN0IHBoeWRldi1cXHUwMDNlcGh5X2lkICh0aGUgVUlEIG9mIHRoZSBQSFkpXFxuKyAqXFx0SXQgY2FuIGFsc28gYmUgUEhZX0FOWV9VSURcXG4rICogQHBoeV91aWRfbWFzazogQXBwbGllZCB0byBwaHlkZXYtXFx1MDAzZXBoeV9pZCBhbmQgZml4dXAtXFx1MDAzZXBoeV91aWQgYmVmb3JlXFxuKyAqXFx0Y29tcGFyaXNvblxcbisgKiBAcnVuOiBUaGUgYWN0dWFsIGNvZGUgdG8gYmUgcnVuIHdoZW4gYSBtYXRjaGluZyBQSFkgaXMgZm91bmRcXG4rICovXFxuK3N0YXRpYyB2b2lkIF9faW5pdCBwaHlfcmVnaXN0ZXJfZml4dXAoY29uc3QgY2hhciAqYnVzX2lkLCB1MzIgcGh5X3VpZCxcXG4rXFx0XFx0XFx0XFx0ICAgICAgdTMyIHBoeV91aWRfbWFzayxcXG4rXFx0XFx0XFx0XFx0ICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSlcXG4re1xcbitcXHRzdHJ1Y3QgcGh5X2ZpeHVwICpmaXh1cCA9IGt6YWxsb2Nfb2JqKCpmaXh1cCk7XFxuK1xcbitcXHRpZiAoIWZpeHVwKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRpZiAoYnVzX2lkKVxcbitcXHRcXHRzdHJzY3B5KGZpeHVwLVxcdTAwM2VidXNfaWQsIGJ1c19pZCk7XFxuK1xcdGZpeHVwLVxcdTAwM2VwaHlfdWlkID0gcGh5X3VpZDtcXG4rXFx0Zml4dXAtXFx1MDAzZXBoeV91aWRfbWFzayA9IHBoeV91aWRfbWFzaztcXG4rXFx0Zml4dXAtXFx1MDAzZXJ1biA9IHJ1bjtcXG4rXFxuK1xcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNmZpeHVwLVxcdTAwM2VsaXN0LCBcXHUwMDI2cGh5X2ZpeHVwX2xpc3QpO1xcbit9XFxuK1xcbisvKiBSZWdpc3RlcnMgYSBmaXh1cCB0byBiZSBydW4gb24gYW55IFBIWSB3aXRoIHRoZSBVSUQgaW4gcGh5X3VpZCAqL1xcbit2b2lkIF9faW5pdCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZCh1MzIgcGh5X3VpZCwgdTMyIHBoeV91aWRfbWFzayxcXG4rXFx0XFx0XFx0XFx0ICAgICAgIGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpXFxuK3tcXG4rXFx0cGh5X3JlZ2lzdGVyX2ZpeHVwKE5VTEwsIHBoeV91aWQsIHBoeV91aWRfbWFzaywgcnVuKTtcXG4rfVxcbitcXG4rLyogUmVnaXN0ZXJzIGEgZml4dXAgdG8gYmUgcnVuIG9uIHRoZSBQSFkgd2l0aCBpZCBzdHJpbmcgYnVzX2lkICovXFxuK3ZvaWQgX19pbml0IHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWQoY29uc3QgY2hhciAqYnVzX2lkLFxcbitcXHRcXHRcXHRcXHQgICAgICBpbnQgKCpydW4pKHN0cnVjdCBwaHlfZGV2aWNlICopKVxcbit7XFxuK1xcdHBoeV9yZWdpc3Rlcl9maXh1cChidXNfaWQsIDAsIDAsIHJ1bik7XFxuK31cXG4rXFxuK3N0YXRpYyBib29sIHBoeV9uZWVkc19maXh1cChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBzdHJ1Y3QgcGh5X2ZpeHVwICpmaXh1cClcXG4re1xcbitcXHRpZiAoIXN0cmNtcChmaXh1cC1cXHUwMDNlYnVzX2lkLCBwaHlkZXZfbmFtZShwaHlkZXYpKSlcXG4rXFx0XFx0cmV0dXJuIHRydWU7XFxuK1xcbitcXHRpZiAoZml4dXAtXFx1MDAzZXBoeV91aWRfbWFzayBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgcGh5X2lkX2NvbXBhcmUocGh5ZGV2LVxcdTAwM2VwaHlfaWQsIGZpeHVwLVxcdTAwM2VwaHlfdWlkLCBmaXh1cC1cXHUwMDNlcGh5X3VpZF9tYXNrKSlcXG4rXFx0XFx0cmV0dXJuIHRydWU7XFxuK1xcbitcXHRyZXR1cm4gZmFsc2U7XFxuK31cXG4rXFxuKy8qKlxcbisgKiBwaHlfc2Nhbl9maXh1cHMgLSBydW5zIGFueSBtYXRjaGluZyBmaXh1cHMgZm9yIHRoaXMgcGh5ZGV2XFxuKyAqIEBwaHlkZXY6IHRoZSBwaHlkZXYgdG8gc2VhcmNoIGFuZCBydW4gZml4dXBzIGZvclxcbisgKiBSZXR1cm5zOiAwIG9yIGFuIGVycm5vXFxuKyAqL1xcbitpbnQgcGh5X3NjYW5fZml4dXBzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuK3tcXG4rXFx0c3RydWN0IHBoeV9maXh1cCAqZml4dXA7XFxuK1xcbitcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGZpeHVwLCBcXHUwMDI2cGh5X2ZpeHVwX2xpc3QsIGxpc3QpIHtcXG4rXFx0XFx0aWYgKHBoeV9uZWVkc19maXh1cChwaHlkZXYsIGZpeHVwKSkge1xcbitcXHRcXHRcXHRpbnQgZXJyID0gZml4dXAtXFx1MDAzZXJ1bihwaHlkZXYpO1xcbitcXG4rXFx0XFx0XFx0aWYgKGVyciBcXHUwMDNjIDApXFxuK1xcdFxcdFxcdFxcdHJldHVybiBlcnI7XFxuK1xcbitcXHRcXHRcXHRwaHlkZXYtXFx1MDAzZWhhc19maXh1cHMgPSB0cnVlO1xcbitcXHRcXHR9XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK0VYUE9SVF9TWU1CT0xfR1BMKHBoeV9zY2FuX2ZpeHVwcyk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaWItaW50ZXJuYWwuaCBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaWItaW50ZXJuYWwuaFxcbmluZGV4IDY2NGVkN2ZhYTUxODQuLjM4ZWUyOTRmM2M5NjIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpYi1pbnRlcm5hbC5oXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpYi1pbnRlcm5hbC5oXFxuQEAgLTIzLDYgKzIzLDcgQEAgdm9pZCBvZl9zZXRfcGh5X2VlZV9icm9rZW4oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XFxuIHZvaWQgb2Zfc2V0X3BoeV90aW1pbmdfcm9sZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcXG4gaW50IHBoeV9zcGVlZF9kb3duX2NvcmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XFxuIHZvaWQgcGh5X2NoZWNrX2Rvd25zaGlmdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcXG4raW50IHBoeV9zY2FuX2ZpeHVwcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcXG4gXFxuIGludCBtZGlvYnVzX3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpO1xcbiBpbnQgbWRpb2J1c191bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpO1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BoeS5oIGIvaW5jbHVkZS9saW51eC9waHkuaFxcbmluZGV4IDVmOGQ2NTg2OGUwZmYuLmY3OTliMzY4NGNkZGUgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9waHkuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvcGh5LmhcXG5AQCAtMjQyMiwxMCArMjQyMiwxMCBAQCBpbnQgcGh5X2dldF9tYWNfdGVybWluYXRpb24oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgc3RydWN0IGRldmljZSAqZGV2LFxcbiB2b2lkIHBoeV9yZXNvbHZlX3BhdXNlKHVuc2lnbmVkIGxvbmcgKmxvY2FsX2FkdiwgdW5zaWduZWQgbG9uZyAqcGFydG5lcl9hZHYsXFxuIFxcdFxcdCAgICAgICBib29sICp0eF9wYXVzZSwgYm9vbCAqcnhfcGF1c2UpO1xcbiBcXG4taW50IHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWQoY29uc3QgY2hhciAqYnVzX2lkLFxcbi1cXHRcXHRcXHQgICAgICBpbnQgKCpydW4pKHN0cnVjdCBwaHlfZGV2aWNlICopKTtcXG4taW50IHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfdWlkKHUzMiBwaHlfdWlkLCB1MzIgcGh5X3VpZF9tYXNrLFxcbi1cXHRcXHRcXHQgICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSk7XFxuK3ZvaWQgX19pbml0IHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWQoY29uc3QgY2hhciAqYnVzX2lkLFxcbitcXHRcXHRcXHRcXHQgICAgICBpbnQgKCpydW4pKHN0cnVjdCBwaHlfZGV2aWNlICopKTtcXG4rdm9pZCBfX2luaXQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQodTMyIHBoeV91aWQsIHUzMiBwaHlfdWlkX21hc2ssXFxuK1xcdFxcdFxcdFxcdCAgICAgICBpbnQgKCpydW4pKHN0cnVjdCBwaHlfZGV2aWNlICopKTtcXG4gXFxuIGludCBwaHlfZWVlX3R4X2Nsb2NrX3N0b3BfY2FwYWJsZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcXG4gaW50IHBoeV9lZWVfcnhfY2xvY2tfc3RvcChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sIGNsa19zdG9wX2VuYWJsZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDIwOjIwOjUzLjQ1MzMwOTgwOVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6Njk1ODI0Mzk1NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGV4dHJhY3RzIFBIWSBmaXh1cCByZWdpc3RyYXRpb24gaW50byBkcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMgYW5kIG1hcmtzIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMgYXMgX19pbml0LiBUaGUgb25seSBjYWxsZXJzIG9mIHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfdWlkKCkgYW5kIHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWQoKSBpbiB0aGUga2VybmVsIGFyZSBwbGF0Zm9ybS1zcGVjaWZpYyBlYXJseS1ib290IGNvZGUgb24gQVJNIChhcmNoL2FybS9tYWNoLSopIGFuZCBQb3dlclBDIChhcmNoL3Bvd2VycGMvcGxhdGZvcm1zLyopLCB3aXRoIG5vIGNhbGxlcnMgb24gYW1kNjQuIE5laXRoZXIgZnVuY3Rpb24gaXMgZXhwb3J0ZWQgdG8gbW9kdWxlcy4gQ29uc2VxdWVudGx5LCBvbiBhbWQ2NCwgcGh5X2ZpeHVwX2xpc3QgaXMgcGVybWFuZW50bHkgZW1wdHksIHJlbmRlcmluZyB0aGUgbWF0Y2hpbmcgbG9naWMgKHBoeV9uZWVkc19maXh1cCkgYW5kIGZpeHVwIGV4ZWN1dGlvbiBwYXRoIGluc2lkZSBwaHlfc2Nhbl9maXh1cHMoKSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuIEZ1enppbmcgb24gYW1kNjQgY2Fubm90IGV4ZXJjaXNlIHRoZSBtb2RpZmllZCBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMzM1OTYzOTAyMmM5OGI0YTRjODk1MzAzMjU0YjFmNjZiMTFjYTE5N1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gU2VwIDEzIDIwOjIwOjUyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlIGIvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlXG5pbmRleCBlMjNkZjVlODM2ZTllLi40Njc0ZWFmMjQzZWJhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlXG4rKysgYi9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGVcbkBAIC04LDcgKzgsNyBAQCBsaWJwaHkteVx0XHRcdDo9IHBoeS5vIHBoeS1jNDUubyBwaHktY29yZS5vIHBoeV9kZXZpY2UubyBcXFxuIFxuIGlmZGVmIENPTkZJR19QSFlMSUJcbiAjIGJ1aWx0LWluIHdoZW5ldmVyIFBIWUxJQiBpcyBidWlsdC1pbiBvciBtb2R1bGVcbi1vYmoteVx0XHRcdFx0Kz0gc3R1YnMub1xuK29iai15XHRcdFx0XHQrPSBzdHVicy5vIHBoeV9maXh1cC5vXG4gZW5kaWZcbiBcbiBsaWJwaHktJChDT05GSUdfU1dQSFkpXHRcdCs9IHN3cGh5Lm9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuaW5kZXggOTRiMmU4NWUwMGEzNy4uMjdjMGNiMTM4NjBiNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbkBAIC00OSwxNCArNDksNiBAQCBNT0RVTEVfREVTQ1JJUFRJT04oXCJQSFkgbGlicmFyeVwiKTtcbiBNT0RVTEVfQVVUSE9SKFwiQW5keSBGbGVtaW5nXCIpO1xuIE1PRFVMRV9MSUNFTlNFKFwiR1BMXCIpO1xuIFxuLXN0cnVjdCBwaHlfZml4dXAge1xuLVx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xuLVx0Y2hhciBidXNfaWRbTUlJX0JVU19JRF9TSVpFICsgM107XG4tXHR1MzIgcGh5X3VpZDtcbi1cdHUzMiBwaHlfdWlkX21hc2s7XG4tXHRpbnQgKCpydW4pKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuLX07XG4tXG4gc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGdlbnBoeV9jNDVfZHJpdmVyID0ge1xuIFx0LnBoeV9pZCAgICAgICAgID0gMHhmZmZmZmZmZixcbiBcdC5waHlfaWRfbWFzayAgICA9IDB4ZmZmZmZmZmYsXG5AQCAtMjM3LDkgKzIyOSw2IEBAIHN0YXRpYyB2b2lkIHBoeV9tZGlvX2RldmljZV9yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuIFxuIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBnZW5waHlfZHJpdmVyO1xuIFxuLXN0YXRpYyBMSVNUX0hFQUQocGh5X2ZpeHVwX2xpc3QpO1xuLXN0YXRpYyBERUZJTkVfTVVURVgocGh5X2ZpeHVwX2xvY2spO1xuLVxuIHN0YXRpYyBib29sIHBoeV9kcnZfd29sX2VuYWJsZWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiB7XG4gXHRzdHJ1Y3QgZXRodG9vbF93b2xpbmZvIHdvbCA9IHsgLmNtZCA9IEVUSFRPT0xfR1dPTCB9O1xuQEAgLTQyNyw4NSArNDE2LDYgQEAgc3RhdGljIF9fbWF5YmVfdW51c2VkIGludCBtZGlvX2J1c19waHlfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcbiBzdGF0aWMgU0lNUExFX0RFVl9QTV9PUFMobWRpb19idXNfcGh5X3BtX29wcywgbWRpb19idXNfcGh5X3N1c3BlbmQsXG4gXHRcdFx0IG1kaW9fYnVzX3BoeV9yZXN1bWUpO1xuIFxuLS8qKlxuLSAqIHBoeV9yZWdpc3Rlcl9maXh1cCAtIGNyZWF0ZXMgYSBuZXcgcGh5X2ZpeHVwIGFuZCBhZGRzIGl0IHRvIHRoZSBsaXN0XG4tICogQGJ1c19pZDogQSBzdHJpbmcgd2hpY2ggbWF0Y2hlcyBwaHlkZXYtXHUwMDNlbWRpby5kZXYuYnVzX2lkIChvciBOVUxMKVxuLSAqIEBwaHlfdWlkOiBVc2VkIHRvIG1hdGNoIGFnYWluc3QgcGh5ZGV2LVx1MDAzZXBoeV9pZCAodGhlIFVJRCBvZiB0aGUgUEhZKVxuLSAqIEBwaHlfdWlkX21hc2s6IEFwcGxpZWQgdG8gcGh5ZGV2LVx1MDAzZXBoeV9pZCBhbmQgZml4dXAtXHUwMDNlcGh5X3VpZCBiZWZvcmVcbi0gKlx0Y29tcGFyaXNvbiAob3IgMCB0byBkaXNhYmxlIGlkLWJhc2VkIG1hdGNoaW5nKVxuLSAqIEBydW46IFRoZSBhY3R1YWwgY29kZSB0byBiZSBydW4gd2hlbiBhIG1hdGNoaW5nIFBIWSBpcyBmb3VuZFxuLSAqL1xuLXN0YXRpYyBpbnQgcGh5X3JlZ2lzdGVyX2ZpeHVwKGNvbnN0IGNoYXIgKmJ1c19pZCwgdTMyIHBoeV91aWQsIHUzMiBwaHlfdWlkX21hc2ssXG4tXHRcdFx0ICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSlcbi17XG4tXHRzdHJ1Y3QgcGh5X2ZpeHVwICpmaXh1cCA9IGt6YWxsb2Nfb2JqKCpmaXh1cCk7XG4tXG4tXHRpZiAoIWZpeHVwKVxuLVx0XHRyZXR1cm4gLUVOT01FTTtcbi1cbi1cdGlmIChidXNfaWQpXG4tXHRcdHN0cnNjcHkoZml4dXAtXHUwMDNlYnVzX2lkLCBidXNfaWQsIHNpemVvZihmaXh1cC1cdTAwM2VidXNfaWQpKTtcbi1cdGZpeHVwLVx1MDAzZXBoeV91aWQgPSBwaHlfdWlkO1xuLVx0Zml4dXAtXHUwMDNlcGh5X3VpZF9tYXNrID0gcGh5X3VpZF9tYXNrO1xuLVx0Zml4dXAtXHUwMDNlcnVuID0gcnVuO1xuLVxuLVx0bXV0ZXhfbG9jayhcdTAwMjZwaHlfZml4dXBfbG9jayk7XG4tXHRsaXN0X2FkZF90YWlsKFx1MDAyNmZpeHVwLVx1MDAzZWxpc3QsIFx1MDAyNnBoeV9maXh1cF9saXN0KTtcbi1cdG11dGV4X3VubG9jayhcdTAwMjZwaHlfZml4dXBfbG9jayk7XG4tXG4tXHRyZXR1cm4gMDtcbi19XG4tXG4tLyogUmVnaXN0ZXJzIGEgZml4dXAgdG8gYmUgcnVuIG9uIGFueSBQSFkgd2l0aCB0aGUgVUlEIGluIHBoeV91aWQgKi9cbi1pbnQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQodTMyIHBoeV91aWQsIHUzMiBwaHlfdWlkX21hc2ssXG4tXHRcdFx0ICAgICAgIGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpXG4te1xuLVx0cmV0dXJuIHBoeV9yZWdpc3Rlcl9maXh1cChOVUxMLCBwaHlfdWlkLCBwaHlfdWlkX21hc2ssIHJ1bik7XG4tfVxuLUVYUE9SVF9TWU1CT0wocGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQpO1xuLVxuLS8qIFJlZ2lzdGVycyBhIGZpeHVwIHRvIGJlIHJ1biBvbiB0aGUgUEhZIHdpdGggaWQgc3RyaW5nIGJ1c19pZCAqL1xuLWludCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX2lkKGNvbnN0IGNoYXIgKmJ1c19pZCxcbi1cdFx0XHQgICAgICBpbnQgKCpydW4pKHN0cnVjdCBwaHlfZGV2aWNlICopKVxuLXtcbi1cdHJldHVybiBwaHlfcmVnaXN0ZXJfZml4dXAoYnVzX2lkLCAwLCAwLCBydW4pO1xuLX1cbi1FWFBPUlRfU1lNQk9MKHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWQpO1xuLVxuLXN0YXRpYyBib29sIHBoeV9uZWVkc19maXh1cChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBzdHJ1Y3QgcGh5X2ZpeHVwICpmaXh1cClcbi17XG4tXHRpZiAoIXN0cmNtcChmaXh1cC1cdTAwM2VidXNfaWQsIHBoeWRldl9uYW1lKHBoeWRldikpKVxuLVx0XHRyZXR1cm4gdHJ1ZTtcbi1cbi1cdGlmIChmaXh1cC1cdTAwM2VwaHlfdWlkX21hc2sgXHUwMDI2XHUwMDI2XG4tXHQgICAgcGh5X2lkX2NvbXBhcmUocGh5ZGV2LVx1MDAzZXBoeV9pZCwgZml4dXAtXHUwMDNlcGh5X3VpZCwgZml4dXAtXHUwMDNlcGh5X3VpZF9tYXNrKSlcbi1cdFx0cmV0dXJuIHRydWU7XG4tXG4tXHRyZXR1cm4gZmFsc2U7XG4tfVxuLVxuLS8qIFJ1bnMgYW55IG1hdGNoaW5nIGZpeHVwcyBmb3IgdGhpcyBwaHlkZXYgKi9cbi1zdGF0aWMgaW50IHBoeV9zY2FuX2ZpeHVwcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLXtcbi1cdHN0cnVjdCBwaHlfZml4dXAgKmZpeHVwO1xuLVxuLVx0bXV0ZXhfbG9jayhcdTAwMjZwaHlfZml4dXBfbG9jayk7XG4tXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGZpeHVwLCBcdTAwMjZwaHlfZml4dXBfbGlzdCwgbGlzdCkge1xuLVx0XHRpZiAocGh5X25lZWRzX2ZpeHVwKHBoeWRldiwgZml4dXApKSB7XG4tXHRcdFx0aW50IGVyciA9IGZpeHVwLVx1MDAzZXJ1bihwaHlkZXYpO1xuLVxuLVx0XHRcdGlmIChlcnIgXHUwMDNjIDApIHtcbi1cdFx0XHRcdG11dGV4X3VubG9jayhcdTAwMjZwaHlfZml4dXBfbG9jayk7XG4tXHRcdFx0XHRyZXR1cm4gZXJyO1xuLVx0XHRcdH1cbi1cdFx0XHRwaHlkZXYtXHUwMDNlaGFzX2ZpeHVwcyA9IHRydWU7XG4tXHRcdH1cbi1cdH1cbi1cdG11dGV4X3VubG9jayhcdTAwMjZwaHlfZml4dXBfbG9jayk7XG4tXG4tXHRyZXR1cm4gMDtcbi19XG4tXG4gLyoqXG4gICogZ2VucGh5X21hdGNoX3BoeV9kZXZpY2UgLSBtYXRjaCBhIFBIWSBkZXZpY2Ugd2l0aCBhIFBIWSBkcml2ZXJcbiAgKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3RcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi5mNDlmYzRjZWZlODE3XG4tLS0gL2Rldi9udWxsXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmNcbkBAIC0wLDAgKzEsOTkgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlclxuKy8qXG4rICogUEhZIGZpeHVwIHN1cHBvcnRcbisgKi9cbitcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9saXN0LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9waHkuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3NsYWIuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3N0cmluZy5oXHUwMDNlXG4rXG4rI2luY2x1ZGUgXCJwaHlsaWItaW50ZXJuYWwuaFwiXG4rXG4rc3RhdGljIHN0cnVjdCBsaXN0X2hlYWQgcGh5X2ZpeHVwX2xpc3QgX19yb19hZnRlcl9pbml0ID1cbitcdExJU1RfSEVBRF9JTklUKHBoeV9maXh1cF9saXN0KTtcbitcbitzdHJ1Y3QgcGh5X2ZpeHVwIHtcbitcdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcbitcdGNoYXIgYnVzX2lkW01JSV9CVVNfSURfU0laRSArIDNdO1xuK1x0dTMyIHBoeV91aWQ7XG4rXHR1MzIgcGh5X3VpZF9tYXNrO1xuK1x0aW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbit9O1xuK1xuKy8qKlxuKyAqIHBoeV9yZWdpc3Rlcl9maXh1cCAtIGNyZWF0ZXMgYSBuZXcgcGh5X2ZpeHVwIGFuZCBhZGRzIGl0IHRvIHRoZSBsaXN0XG4rICogQGJ1c19pZDogQSBzdHJpbmcgd2hpY2ggbWF0Y2hlcyBwaHlkZXYtXHUwMDNlbWRpby5kZXYuYnVzX2lkIChvciBQSFlfQU5ZX0lEKVxuKyAqIEBwaHlfdWlkOiBVc2VkIHRvIG1hdGNoIGFnYWluc3QgcGh5ZGV2LVx1MDAzZXBoeV9pZCAodGhlIFVJRCBvZiB0aGUgUEhZKVxuKyAqXHRJdCBjYW4gYWxzbyBiZSBQSFlfQU5ZX1VJRFxuKyAqIEBwaHlfdWlkX21hc2s6IEFwcGxpZWQgdG8gcGh5ZGV2LVx1MDAzZXBoeV9pZCBhbmQgZml4dXAtXHUwMDNlcGh5X3VpZCBiZWZvcmVcbisgKlx0Y29tcGFyaXNvblxuKyAqIEBydW46IFRoZSBhY3R1YWwgY29kZSB0byBiZSBydW4gd2hlbiBhIG1hdGNoaW5nIFBIWSBpcyBmb3VuZFxuKyAqL1xuK3N0YXRpYyB2b2lkIF9faW5pdCBwaHlfcmVnaXN0ZXJfZml4dXAoY29uc3QgY2hhciAqYnVzX2lkLCB1MzIgcGh5X3VpZCxcbitcdFx0XHRcdCAgICAgIHUzMiBwaHlfdWlkX21hc2ssXG4rXHRcdFx0XHQgICAgICBpbnQgKCpydW4pKHN0cnVjdCBwaHlfZGV2aWNlICopKVxuK3tcbitcdHN0cnVjdCBwaHlfZml4dXAgKmZpeHVwID0ga3phbGxvY19vYmooKmZpeHVwKTtcbitcbitcdGlmICghZml4dXApXG4rXHRcdHJldHVybjtcbitcbitcdGlmIChidXNfaWQpXG4rXHRcdHN0cnNjcHkoZml4dXAtXHUwMDNlYnVzX2lkLCBidXNfaWQpO1xuK1x0Zml4dXAtXHUwMDNlcGh5X3VpZCA9IHBoeV91aWQ7XG4rXHRmaXh1cC1cdTAwM2VwaHlfdWlkX21hc2sgPSBwaHlfdWlkX21hc2s7XG4rXHRmaXh1cC1cdTAwM2VydW4gPSBydW47XG4rXG4rXHRsaXN0X2FkZF90YWlsKFx1MDAyNmZpeHVwLVx1MDAzZWxpc3QsIFx1MDAyNnBoeV9maXh1cF9saXN0KTtcbit9XG4rXG4rLyogUmVnaXN0ZXJzIGEgZml4dXAgdG8gYmUgcnVuIG9uIGFueSBQSFkgd2l0aCB0aGUgVUlEIGluIHBoeV91aWQgKi9cbit2b2lkIF9faW5pdCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZCh1MzIgcGh5X3VpZCwgdTMyIHBoeV91aWRfbWFzayxcbitcdFx0XHRcdCAgICAgICBpbnQgKCpydW4pKHN0cnVjdCBwaHlfZGV2aWNlICopKVxuK3tcbitcdHBoeV9yZWdpc3Rlcl9maXh1cChOVUxMLCBwaHlfdWlkLCBwaHlfdWlkX21hc2ssIHJ1bik7XG4rfVxuK1xuKy8qIFJlZ2lzdGVycyBhIGZpeHVwIHRvIGJlIHJ1biBvbiB0aGUgUEhZIHdpdGggaWQgc3RyaW5nIGJ1c19pZCAqL1xuK3ZvaWQgX19pbml0IHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWQoY29uc3QgY2hhciAqYnVzX2lkLFxuK1x0XHRcdFx0ICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSlcbit7XG4rXHRwaHlfcmVnaXN0ZXJfZml4dXAoYnVzX2lkLCAwLCAwLCBydW4pO1xuK31cbitcbitzdGF0aWMgYm9vbCBwaHlfbmVlZHNfZml4dXAoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgc3RydWN0IHBoeV9maXh1cCAqZml4dXApXG4re1xuK1x0aWYgKCFzdHJjbXAoZml4dXAtXHUwMDNlYnVzX2lkLCBwaHlkZXZfbmFtZShwaHlkZXYpKSlcbitcdFx0cmV0dXJuIHRydWU7XG4rXG4rXHRpZiAoZml4dXAtXHUwMDNlcGh5X3VpZF9tYXNrIFx1MDAyNlx1MDAyNlxuK1x0ICAgIHBoeV9pZF9jb21wYXJlKHBoeWRldi1cdTAwM2VwaHlfaWQsIGZpeHVwLVx1MDAzZXBoeV91aWQsIGZpeHVwLVx1MDAzZXBoeV91aWRfbWFzaykpXG4rXHRcdHJldHVybiB0cnVlO1xuK1xuK1x0cmV0dXJuIGZhbHNlO1xuK31cbitcbisvKipcbisgKiBwaHlfc2Nhbl9maXh1cHMgLSBydW5zIGFueSBtYXRjaGluZyBmaXh1cHMgZm9yIHRoaXMgcGh5ZGV2XG4rICogQHBoeWRldjogdGhlIHBoeWRldiB0byBzZWFyY2ggYW5kIHJ1biBmaXh1cHMgZm9yXG4rICogUmV0dXJuczogMCBvciBhbiBlcnJub1xuKyAqL1xuK2ludCBwaHlfc2Nhbl9maXh1cHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbit7XG4rXHRzdHJ1Y3QgcGh5X2ZpeHVwICpmaXh1cDtcbitcbitcdGxpc3RfZm9yX2VhY2hfZW50cnkoZml4dXAsIFx1MDAyNnBoeV9maXh1cF9saXN0LCBsaXN0KSB7XG4rXHRcdGlmIChwaHlfbmVlZHNfZml4dXAocGh5ZGV2LCBmaXh1cCkpIHtcbitcdFx0XHRpbnQgZXJyID0gZml4dXAtXHUwMDNlcnVuKHBoeWRldik7XG4rXG4rXHRcdFx0aWYgKGVyciBcdTAwM2MgMClcbitcdFx0XHRcdHJldHVybiBlcnI7XG4rXG4rXHRcdFx0cGh5ZGV2LVx1MDAzZWhhc19maXh1cHMgPSB0cnVlO1xuK1x0XHR9XG4rXHR9XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rRVhQT1JUX1NZTUJPTF9HUEwocGh5X3NjYW5fZml4dXBzKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmggYi9kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmhcbmluZGV4IDY2NGVkN2ZhYTUxODQuLjM4ZWUyOTRmM2M5NjIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmhcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaWItaW50ZXJuYWwuaFxuQEAgLTIzLDYgKzIzLDcgQEAgdm9pZCBvZl9zZXRfcGh5X2VlZV9icm9rZW4oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG4gdm9pZCBvZl9zZXRfcGh5X3RpbWluZ19yb2xlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuIGludCBwaHlfc3BlZWRfZG93bl9jb3JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuIHZvaWQgcGh5X2NoZWNrX2Rvd25zaGlmdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbitpbnQgcGh5X3NjYW5fZml4dXBzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuIFxuIGludCBtZGlvYnVzX3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpO1xuIGludCBtZGlvYnVzX3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9waHkuaCBiL2luY2x1ZGUvbGludXgvcGh5LmhcbmluZGV4IDVmOGQ2NTg2OGUwZmYuLmY3OTliMzY4NGNkZGUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BoeS5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L3BoeS5oXG5AQCAtMjQyMiwxMCArMjQyMiwxMCBAQCBpbnQgcGh5X2dldF9tYWNfdGVybWluYXRpb24oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgc3RydWN0IGRldmljZSAqZGV2LFxuIHZvaWQgcGh5X3Jlc29sdmVfcGF1c2UodW5zaWduZWQgbG9uZyAqbG9jYWxfYWR2LCB1bnNpZ25lZCBsb25nICpwYXJ0bmVyX2FkdixcbiBcdFx0ICAgICAgIGJvb2wgKnR4X3BhdXNlLCBib29sICpyeF9wYXVzZSk7XG4gXG4taW50IHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWQoY29uc3QgY2hhciAqYnVzX2lkLFxuLVx0XHRcdCAgICAgIGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpO1xuLWludCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZCh1MzIgcGh5X3VpZCwgdTMyIHBoeV91aWRfbWFzayxcbi1cdFx0XHQgICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSk7XG4rdm9pZCBfX2luaXQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZChjb25zdCBjaGFyICpidXNfaWQsXG4rXHRcdFx0XHQgICAgICBpbnQgKCpydW4pKHN0cnVjdCBwaHlfZGV2aWNlICopKTtcbit2b2lkIF9faW5pdCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZCh1MzIgcGh5X3VpZCwgdTMyIHBoeV91aWRfbWFzayxcbitcdFx0XHRcdCAgICAgICBpbnQgKCpydW4pKHN0cnVjdCBwaHlfZGV2aWNlICopKTtcbiBcbiBpbnQgcGh5X2VlZV90eF9jbG9ja19zdG9wX2NhcGFibGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG4gaW50IHBoeV9lZWVfcnhfY2xvY2tfc3RvcChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sIGNsa19zdG9wX2VuYWJsZSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDoyMDo1My40NTMzMTE0MTlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo0NDc5NzY3ODEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBQSFkgRml4dXAgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGNsZWFybHkgZm9jdXNlZCBvbiByZWZpbmluZyB0aGUgUEhZIGZpeHVwIG1lY2hhbmlzbSB3aXRoaW4gdGhlIG5ldHdvcmtpbmcgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgdW5kZXIgYGRyaXZlcnMvbmV0L3BoeS9gLiBJdCdzIGEgdGFyZ2V0ZWQgcmVmYWN0b3IuIExldCdzIGJyZWFrIGRvd24gdGhlIGltcGxpY2F0aW9ucy5cblxuRmlyc3QsIEkgc2VlIHRoZSBgTWFrZWZpbGVgIGJlaW5nIHVwZGF0ZWQgdG8gaW5jbHVkZSBgcGh5X2ZpeHVwLm9gIGFzIGEgYnVpbHQtaW4gb2JqZWN0IHdoZW4gYFBIWUxJQmAgaXMgZW5hYmxlZC4gVGhhdCdzIHN0YW5kYXJkIHByYWN0aWNlOyB3ZSdyZSBtYWtpbmcgc3VyZSB0aGUgZml4dXAgZnVuY3Rpb25hbGl0eSBpcyBhdmFpbGFibGUgd2hlbiB0aGUgUEhZIGxpYnJhcnkgaXMgaW5jbHVkZWQuIE5vIHN1cnByaXNlcyB0aGVyZS5cblxuVGhlIG5leHQgY2hhbmdlIGluIGBwaHlfZGV2aWNlLmNgIGlzIHNpZ25pZmljYW50LiBUaGUgZml4dXAgbGlzdCBhbmQgYXNzb2NpYXRlZCBmdW5jdGlvbnMgYXJlIGJlaW5nIG1vdmVkIHRvIGEgbmV3IGZpbGUsIGBwaHlfZml4dXAuY2AuIFRoaXMgaXMgZ29vZCBmb3IgbW9kdWxhcml0eSBhbmQgY2xhcml0eS4gSXNvbGF0aW5nIHRoZSBmaXh1cCBsb2dpYyBtYWtlcyBpdCBlYXNpZXIgdG8gbWFuYWdlIGFuZCB1bmRlcnN0YW5kLlxuXG5Ob3csIGxldCdzIGV4YW1pbmUgdGhlIG5ldyBgcGh5X2ZpeHVwLmNgIGZpbGUgaXRzZWxmLiBTZXZlcmFsIGtleSB0aGluZ3MganVtcCBvdXQ6XG5cbiogICBUaGUgYHBoeV9maXh1cF9saXN0YCBpcyBub3cgYF9fcm9fYWZ0ZXJfaW5pdGAuIFRoaXMgaXMgYSBjcnVjaWFsIGRldGFpbCEgVGhpcyBpbXBsaWVzIHRoYXQgdGhlIGZpeHVwIGxpc3QgaXMgbWVhbnQgdG8gYmUgcmVhZC1vbmx5IGFmdGVyIGluaXRpYWxpemF0aW9uLiBUaGlzIGlzIGEgdmVyeSBzdHJvbmcgc2lnbmFsLiBJdCBoYXMgdG8gYmUgdGhhdCB3YXkgZm9yIGl0IHRvIGJlIHJlbW92ZWQsIHdoaWNoIGlzIG15IG5leHQgcG9pbnQuXG4qICAgKipUaGUgYHBoeV9maXh1cF9sb2NrYCBtdXRleCBoYXMgYmVlbiAqcmVtb3ZlZCohKiogVGhhdCdzIHRoZSByZWFsIGNydXggb2YgdGhpcyBwYXRjaCEgVGhpcyBpbXBsaWVzIHRoZSBjb2RlIGlzIG5vdyB0aHJlYWQgc2FmZSBieSBkZXNpZ24sIGJlY2F1c2UgYWxsIHRoZSBkYXRhIGlzIGltbXV0YWJsZSwgc28gaXQgaXMgcHJvYmFibHkgaW5pdGlhbGl6ZWQgZWFybHkgYW5kIG5ldmVyIG1vZGlmaWVkIGFnYWluLiBUaGlzIGltcGxpZXMgYW4gKmltbXV0YWJsZSogbGlzdCBpcyB1c2VkLlxuKiAgIGBwaHlfcmVnaXN0ZXJfZml4dXBgIGFuZCB0aGUgdmFyaWFudCBmdW5jdGlvbnMgYXJlIG5vdyBtYXJrZWQgYF9faW5pdGAgYW5kIHJldHVybiBgdm9pZGAuIFRoaXMgc3VnZ2VzdHMgdGhlc2UgZnVuY3Rpb25zIGFyZSBvbmx5IGNhbGxlZCBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIHBoYXNlLCBhbmQgbm8gZXJyb3IgaGFuZGxpbmcgaXMgbmVjZXNzYXJ5LCBhcyB0aGVyZSBpcyBubyBydW50aW1lIHJlZ2lzdHJhdGlvbi5cbiogICBUaGUgYHBoeV9zY2FuX2ZpeHVwc2AgZnVuY3Rpb24sIHdoaWNoIGl0ZXJhdGVzIG92ZXIgdGhlIGZpeHVwIGxpc3QsICpubyBsb25nZXIgYWNxdWlyZXMgdGhlIGBwaHlfZml4dXBfbG9ja2AqLiBHaXZlbiB0aGUgbGlzdCBpcyBpbW11dGFibGUsIHdlIGRvbid0IG5lZWQgYSBsb2NrLCBmdXJ0aGVyIGNvbmZpcm1pbmcgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgZWFybGllciBwb2ludC5cblxuSXQncyBjbGVhciB0aGUgZGVzaWduIGhlcmUgaGFzIHNoaWZ0ZWQgdG8gYW4gaW5pdGlhbGl6YXRpb24tdGltZSByZWdpc3RyYXRpb24sIHRoZW4gcmVhZC1vbmx5IGFjY2VzcyBmb3IgZml4dXBzLiBUaGlzIHNob3VsZCBwcm92aWRlIGJldHRlciBwZXJmb3JtYW5jZSwgYXMgdGhlcmUgaXMgbm8gbG9ja2luZy5cblxuVGhlIGhlYWRlciBmaWxlIGNoYW5nZXMgYXJlIHNpbXBsZTogdXBkYXRlcyB0byB0aGUgcHJvdG90eXBlcyBvZiB0aGUgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucyB0byBgX19pbml0IHZvaWRgLlxuXG5Ob3csIHRoZSBxdWVzdGlvbiBpczogaG93IGlzIHRoaXMgbmV3IHNldHVwIGFjdHVhbGx5ICp1c2VkKj8gSSdtIGdvaW5nIHRvIHJ1biBgZ3JlcHBlcmAgdG8gc2VlIHdoZXJlIGBwaHlfcmVnaXN0ZXJfZml4dXBfKmAgYW5kIGBwaHlfc2Nhbl9maXh1cHNgIGFyZSBjYWxsZWQuIEkgZXhwZWN0IHRoZW0gdG8gYmUgY2FsbGVkIGR1cmluZyBpbml0aWFsaXphdGlvbiBhbmQgaW4gdGhlIGRyaXZlciBwcm9iZSBmdW5jdGlvbiwgcmVzcGVjdGl2ZWx5LiBMZXQncyBzZWUgd2hhdCB0aGF0IHNob3dzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDUyLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzk4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6MjA6NTcuOTMzMDgyMzU5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MzQ2MjI3NTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5X3JlZ2lzdGVyX2ZpeHVwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0PTUyNz1UaGUgcGxhdGZvcm0gY29kZSBjYW4gcmVnaXN0ZXIgdGhlIGZpeHVwIHVzaW5nIG9uZSBvZjo6XFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3QtNTI4LVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0OjUyOTogaW50IHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfdWlkKHUzMiBwaHlfdWlkLCB1MzIgcGh5X3VpZF9tYXNrLFxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0LTUzMC1cXHRcXHRpbnQgKCpydW4pKHN0cnVjdCBwaHlfZGV2aWNlICopKTtcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdDo1MzE6IGludCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX2lkKGNvbnN0IGNoYXIgKnBoeV9pZCxcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdC01MzItXFx0XFx0aW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSk7XFxuLS1cXG5hcmNoL2FybS9tYWNoLWlteC9tYWNoLWlteDZxLmM9NzE9c3RhdGljIHZvaWQgX19pbml0IGlteDZxX2VuZXRfcGh5X2luaXQodm9pZClcXG4tLVxcbmFyY2gvYXJtL21hY2gtaW14L21hY2gtaW14NnEuYy03My1cXHRpZiAoSVNfQlVJTFRJTihDT05GSUdfUEhZTElCKSkge1xcbmFyY2gvYXJtL21hY2gtaW14L21hY2gtaW14NnEuYzo3NDpcXHRcXHRwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZChQSFlfSURfS1NaOTAyMSwgTUlDUkVMX1BIWV9JRF9NQVNLLFxcbmFyY2gvYXJtL21hY2gtaW14L21hY2gtaW14NnEuYy03NS1cXHRcXHRcXHRcXHRrc3o5MDIxcm5fcGh5X2ZpeHVwKTtcXG4tLVxcbmFyY2gvYXJtL21hY2gtaW14L21hY2gtaW14N2QuYz0zMD1zdGF0aWMgdm9pZCBfX2luaXQgaW14N2RfZW5ldF9waHlfaW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1pbXgvbWFjaC1pbXg3ZC5jLTMyLVxcdGlmIChJU19CVUlMVElOKENPTkZJR19QSFlMSUIpKSB7XFxuYXJjaC9hcm0vbWFjaC1pbXgvbWFjaC1pbXg3ZC5jOjMzOlxcdFxcdHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfdWlkKFBIWV9JRF9CQ001NDIyMCwgMHhmZmZmZmZmZixcXG5hcmNoL2FybS9tYWNoLWlteC9tYWNoLWlteDdkLmMtMzQtXFx0XFx0XFx0XFx0XFx0ICAgYmNtNTQyMjBfcGh5X2ZpeHVwKTtcXG4tLVxcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmM9MjU4PXN0YXRpYyB2b2lkIF9faW5pdCBhcHg0ZGV2a2l0X2luaXQodm9pZClcXG4tLVxcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmMtMjYyLVxcdGlmIChJU19CVUlMVElOKENPTkZJR19QSFlMSUIpKVxcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmM6MjYzOlxcdFxcdHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfdWlkKFBIWV9JRF9LU1o4MDUxLCBNSUNSRUxfUEhZX0lEX01BU0ssXFxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYy0yNjQtXFx0XFx0XFx0XFx0XFx0ICAgYXB4NGRldmtpdF9waHlfZml4dXApO1xcbi0tXFxuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L2RuczMyMy1zZXR1cC5jPTYxMj1zdGF0aWMgdm9pZCBfX2luaXQgZG5zMzIzX2luaXQodm9pZClcXG4tLVxcbmFyY2gvYXJtL21hY2gtb3Jpb241eC9kbnMzMjMtc2V0dXAuYy02NzctXFx0XFx0XFx0YnJlYWs7XFxuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L2RuczMyMy1zZXR1cC5jOjY3ODpcXHRcXHRwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZChNQVJWRUxMX1BIWV9JRF84OEUxMTE4LFxcbmFyY2gvYXJtL21hY2gtb3Jpb241eC9kbnMzMjMtc2V0dXAuYy02NzktXFx0XFx0XFx0XFx0XFx0ICAgTUFSVkVMTF9QSFlfSURfTUFTSyxcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODV4eC9tcGM4NXh4X21kcy5jPTI4Mj1zdGF0aWMgaW50IF9faW5pdCBib2FyZF9maXh1cHModm9pZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODV4eC9tcGM4NXh4X21kcy5jLTI5Ni1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzg1eHgvbXBjODV4eF9tZHMuYzoyOTc6XFx0XFx0cGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZChwaHlfaWQsIG1wYzg1NjhfZml4dXBfMTI1X2Nsb2NrKTtcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzg1eHgvbXBjODV4eF9tZHMuYzoyOTg6XFx0XFx0cGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZChwaHlfaWQsIG1wYzg1NjhfbWRzX3BoeV9maXh1cHMpO1xcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODV4eC9tcGM4NXh4X21kcy5jLTI5OS1cXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODV4eC9tcGM4NXh4X21kcy5jLTMwMi1cXHRcXHRcXHQodW5zaWduZWQgbG9uZyBsb25nKXJlcy5zdGFydCwgNyk7XFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84NXh4L21wYzg1eHhfbWRzLmM6MzAzOlxcdFxcdHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWQocGh5X2lkLCBtcGM4NTY4X21kc19waHlfZml4dXBzKTtcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzg1eHgvbXBjODV4eF9tZHMuYy0zMDQtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmM9MTY9c3RydWN0IHBoeV9maXh1cCB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMtMjQtLyoqXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jOjI1OiAqIHBoeV9yZWdpc3Rlcl9maXh1cCAtIGNyZWF0ZXMgYSBuZXcgcGh5X2ZpeHVwIGFuZCBhZGRzIGl0IHRvIHRoZSBsaXN0XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTI2LSAqIEBidXNfaWQ6IEEgc3RyaW5nIHdoaWNoIG1hdGNoZXMgcGh5ZGV2LVxcdTAwM2VtZGlvLmRldi5idXNfaWQgKG9yIFBIWV9BTllfSUQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMtMzItICovXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jOjMzOnN0YXRpYyB2b2lkIF9faW5pdCBwaHlfcmVnaXN0ZXJfZml4dXAoY29uc3QgY2hhciAqYnVzX2lkLCB1MzIgcGh5X3VpZCxcXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMtMzQtXFx0XFx0XFx0XFx0ICAgICAgdTMyIHBoeV91aWRfbWFzayxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYy01MS0vKiBSZWdpc3RlcnMgYSBmaXh1cCB0byBiZSBydW4gb24gYW55IFBIWSB3aXRoIHRoZSBVSUQgaW4gcGh5X3VpZCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYzo1Mjp2b2lkIF9faW5pdCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZCh1MzIgcGh5X3VpZCwgdTMyIHBoeV91aWRfbWFzayxcXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMtNTMtXFx0XFx0XFx0XFx0ICAgICAgIGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTU0LXtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmM6NTU6XFx0cGh5X3JlZ2lzdGVyX2ZpeHVwKE5VTEwsIHBoeV91aWQsIHBoeV91aWRfbWFzaywgcnVuKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMtNTYtfVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTU4LS8qIFJlZ2lzdGVycyBhIGZpeHVwIHRvIGJlIHJ1biBvbiB0aGUgUEhZIHdpdGggaWQgc3RyaW5nIGJ1c19pZCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYzo1OTp2b2lkIF9faW5pdCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX2lkKGNvbnN0IGNoYXIgKmJ1c19pZCxcXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMtNjAtXFx0XFx0XFx0XFx0ICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSlcXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMtNjEte1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYzo2MjpcXHRwaHlfcmVnaXN0ZXJfZml4dXAoYnVzX2lkLCAwLCAwLCBydW4pO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYy02My19XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeS5oPTI0MjI9dm9pZCBwaHlfcmVzb2x2ZV9wYXVzZSh1bnNpZ25lZCBsb25nICpsb2NhbF9hZHYsIHVuc2lnbmVkIGxvbmcgKnBhcnRuZXJfYWR2LFxcbi0tXFxuaW5jbHVkZS9saW51eC9waHkuaC0yNDI0LVxcbmluY2x1ZGUvbGludXgvcGh5Lmg6MjQyNTp2b2lkIF9faW5pdCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX2lkKGNvbnN0IGNoYXIgKmJ1c19pZCxcXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTI0MjYtXFx0XFx0XFx0XFx0ICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSk7XFxuaW5jbHVkZS9saW51eC9waHkuaDoyNDI3OnZvaWQgX19pbml0IHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfdWlkKHUzMiBwaHlfdWlkLCB1MzIgcGh5X3VpZF9tYXNrLFxcbmluY2x1ZGUvbGludXgvcGh5LmgtMjQyOC1cXHRcXHRcXHRcXHQgICAgICAgaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDIwOjIwOjU5Ljg2NzcxMjI0NFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjI3NzM4MzMxMjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFBIWSBGaXh1cCBSZWdpc3RyYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBQSFkgZml4dXAgYnVzaW5lc3MuIE15IGluaXRpYWwgZm9jdXMgaXMgb24gYHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfdWlkYCBhbmQgYHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWRgLiBJJ3ZlIHF1aWNrbHkgY29tcGlsZWQgYSBsaXN0IG9mIHdoZXJlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgYmVpbmcgaW52b2tlZCB3aXRoaW4gdGhlIGtlcm5lbC4gSSBzZWUgY2FsbHMgY29taW5nIGZyb20gc2V2ZXJhbCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgbWFjaGluZSBjb2RlIGZpbGVzOiBgYXJjaC9hcm0vbWFjaC1pbXgvbWFjaC1pbXg2cS5jYCwgYGFyY2gvYXJtL21hY2gtaW14L21hY2gtaW14N2QuY2AsIGBhcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jYCwgYGFyY2gvYXJtL21hY2gtb3Jpb241eC9kbnMzMjMtc2V0dXAuY2AsIGFuZCBgYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84NXh4L21wYzg1eHhfbWRzLmNgLiBUaGF0IGdpdmVzIG1lIGEgZ29vZCBzdGFydGluZyBwb2ludC5cblxuTm93LCBiZWZvcmUgSSBjb25jbHVkZSB0aGF0J3MgdGhlIGNvbXBsZXRlIHBpY3R1cmUsIEkgbmVlZCB0byBiZSB0aG9yb3VnaC4gQXJlIHRoZXJlIGFueSBvdGhlciBzbmVha3kgY2FsbHMgdG8gdGhlc2UgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucyBsdXJraW5nIGVsc2V3aGVyZT8gTm9wZSwgZG9lc24ndCBhcHBlYXIgc28gYXQgZmlyc3QgZ2xhbmNlLlxuXG5CdXQgd2FpdCBhIG1pbnV0ZSwgSSBiZXR0ZXIgY29uc2lkZXIgYHBoeV9zY2FuX2ZpeHVwc2AuIEkgc2hvdWxkIGNoZWNrIHdoZXJlICp0aGF0KiBpcyBjYWxsZWQuIE1heWJlIHRoZXJlJ3Mgc29tZSBpbmRpcmVjdCB1c2FnZSBvciBpbnRlcmFjdGlvbiB0aGF0IEknbSBtaXNzaW5nIGJ5IG9ubHkgZm9jdXNpbmcgb24gdGhlIGRpcmVjdCByZWdpc3RyYXRpb24gZnVuY3Rpb25zLiBUaGlzIHdhcnJhbnRzIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiB0byBoYXZlIGEgY29tcGxldGUgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlc2UgUEhZIGZpeHVwcyBhcmUgYWN0dWFsbHkgYmVpbmcgYXBwbGllZC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODk5OCwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDoyMTowMi42NDE1NDc5ODhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgwOTQxNTQzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlfc2Nhbl9maXh1cHNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xMDE5PWludCBwaHlfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEwMzAtXFx0LyogUnVuIGFsbCBvZiB0aGUgZml4dXBzIGZvciB0aGlzIFBIWSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTAzMTpcXHRlcnIgPSBwaHlfc2Nhbl9maXh1cHMocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEwMzItXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xMjUxPWludCBwaHlfaW5pdF9odyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMjY5LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTI3MDpcXHRyZXQgPSBwaHlfc2Nhbl9maXh1cHMocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEyNzEtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmM9NjU9c3RhdGljIGJvb2wgcGh5X25lZWRzX2ZpeHVwKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHN0cnVjdCBwaHlfZml4dXAgKmZpeHVwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTc3LS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYzo3ODogKiBwaHlfc2Nhbl9maXh1cHMgLSBydW5zIGFueSBtYXRjaGluZyBmaXh1cHMgZm9yIHRoaXMgcGh5ZGV2XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTc5LSAqIEBwaHlkZXY6IHRoZSBwaHlkZXYgdG8gc2VhcmNoIGFuZCBydW4gZml4dXBzIGZvclxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTgxLSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYzo4MjppbnQgcGh5X3NjYW5fZml4dXBzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTgzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYy05OC19XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jOjk5OkVYUE9SVF9TWU1CT0xfR1BMKHBoeV9zY2FuX2ZpeHVwcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLWludGVybmFsLmg9MjU9dm9pZCBwaHlfY2hlY2tfZG93bnNoaWZ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWItaW50ZXJuYWwuaDoyNjppbnQgcGh5X3NjYW5fZml4dXBzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWItaW50ZXJuYWwuaC0yNy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6MjE6MDQuNDUwOTY4MjMzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NTI5MTkzODE2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBIWSBGaXh1cCBSZW1vdmFsIG9uIGFtZDY0KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duIG1ldGhvZGljYWxseS4gRmlyc3QsIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGBhbWQ2NGAsIHNvIHRoYXQncyB0aGUgZm9jdXMuIFRoZSBrZXkgcXVlc3Rpb246IGNhbiBgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWRgIG9yIGBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX2lkYCBldmVuIGJlIHJlbGV2YW50IGhlcmU/IE15IGluaXRpYWwgb2JzZXJ2YXRpb24gaXMgdGhhdCB0aGV5J3JlICpvbmx5KiBjYWxsZWQgYnkgYGFyY2gvYXJtL2AgYW5kIGBhcmNoL3Bvd2VycGMvYCBjb2RlLiBUaGF0J3MgYSBzdHJvbmcgaW5kaWNhdG9yLiBUaGVuLCBjb3VsZCBhIG1vZHVsZSBvciBkcml2ZXIsIGV2ZW4gb24gYGFtZDY0YCwgY2FsbCB0aGVzZSBmdW5jdGlvbnM/XG5cbkkgbm90aWNlZCBzb21ldGhpbmcgc2lnbmlmaWNhbnQgaW4gdGhlIHBhdGNoOiB0aGUgcmVtb3ZhbCBvZiBgRVhQT1JUX1NZTUJPTGAgZm9yIGBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZGAgYW5kIGBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX2lkYCBmcm9tIGBwaHlfZGV2aWNlLmNgLiBUaGF0J3MgYSByZWQgZmxhZy4gRGlnZ2luZyBkZWVwZXIsIHRob3NlIGZ1bmN0aW9ucyBhcmUgYWxzbyBub3QgZXhwb3J0ZWQgZnJvbSBgcGh5X2ZpeHVwLmNgIGFueW1vcmUuIFRoZXkncmUgYHZvaWQgX19pbml0YCBmdW5jdGlvbnMsIG1lYW5pbmcgdGhleSdyZSBtZWFudCB0byBiZSBjYWxsZWQgb25seSBkdXJpbmcgYF9faW5pdGAgc3RhZ2VzIGZvciBidWlsdC1pbiBjb2RlLCBhbmQgbm90IG1vZHVsZSBjb2RlLlxuXG5UaGVuLCBhIGBnaXQgZ3JlcGAgc2VhcmNoIHNob3dlZCBhbGwgb2NjdXJyZW5jZXMgb2YgdGhlc2UgZnVuY3Rpb25zIGluIHRoZSBlbnRpcmUga2VybmVsLCBwb2ludGluZyBvbmx5IHRvIHNwZWNpZmljIEFSTSBhbmQgUG93ZXJQQyBwbGF0Zm9ybXM6IGBpbXg2cWAsIGBpbXg3ZGAsIGBteHNgLCBgZG5zMzIzYCBhbmQgYG1wYzg1eHhgLiBTbywgdGhlIGNvbnRleHQgaXMgdmVyeSBsaW1pdGVkLCBhbmQgc3BlY2lmaWMgdG8gdGhvc2UgYXJjaGl0ZWN0dXJlcy5cblxuTm93LCB0aGUgY3JpdGljYWwgcXVlc3Rpb246IGFyZSB0aGVyZSAqYW55KiBjYWxsZXJzIG9uIGBhbWQ2NGAgb3IgaW4gYW55IGdlbmVyaWMgY29kZSB0aGF0IGNvdWxkIHVzZSB0aGVzZSByZW1vdmVkIGZ1bmN0aW9ucz8gQSBxdWljayByZXZpZXcgc2hvd3MgdGhlcmUgYXJlIG5vbmUsIHdoaWNoIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoYXQgdGhlIHJlbW92YWwgaXMgY29ycmVjdCwgYXQgbGVhc3QgZnJvbSBhbiBhcmNoaXRlY3R1cmFsIHBlcnNwZWN0aXZlLlxuXG5UaGUgbmV4dCBxdWVzdGlvbjogd2hhdCBoYXBwZW5zIG9uIGBhbWQ2NGAgd2hlbiBhIFBIWSBkZXZpY2UgaXMgcmVnaXN0ZXJlZD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIG5vcm1hbCBwYXRoLiBJdCBsb29rcyBsaWtlIGBwaHlfc2Nhbl9maXh1cHMocGh5ZGV2KWAgaXMgY2FsbGVkIGluIGJvdGggYHBoeV9kZXZpY2VfcmVnaXN0ZXJgIGFuZCBgcGh5X2luaXRfaHdgLiBJJ20gZ29pbmcgdG8gbG9vayBhdCB0aGF0IGZ1bmN0aW9uIGNhcmVmdWxseS5cblxuTG9va2luZyBhdCB0aGUgY29kZSBmb3IgYHBoeV9zY2FuX2ZpeHVwc2AsIGl0IGl0ZXJhdGVzIHRocm91Z2ggYHBoeV9maXh1cF9saXN0YCB0byBmaW5kIGFueSBhcHBsaWNhYmxlIGZpeHVwcy4gSG93ZXZlciwgaWYgdGhpcyBsaXN0IGlzIGVtcHR5IChhbmQgaXQncyBpbml0aWFsaXplZCBhcyBgTElTVF9IRUFEX0lOSVQocGh5X2ZpeHVwX2xpc3QpYCksIHRoZW4gYHBoeV9zY2FuX2ZpeHVwc2AgZG9lcyBhIHRyaXZpYWwgaXRlcmF0aW9uIGFuZCByZXR1cm5zIDAuIEVmZmVjdGl2ZWx5LCBubyBmaXh1cHMgYXJlIGFwcGxpZWQuXG5cbkJ1dCBpcyBgcGh5X3NjYW5fZml4dXBzYCBldmVuICpyZWFjaGFibGUqIG9uIGBhbWQ2NGA/IENhbiBhIGBwaHlfZGV2aWNlYCBldmVuIGJlIGNyZWF0ZWQvcmVnaXN0ZXJlZCBvbiB0aGlzIGFyY2hpdGVjdHVyZT8gVGhhdCdzIHRoZSBuZXh0IGtleSBxdWVzdGlvbi4gVGhpcyByZXF1aXJlcyBtZSB0byBkZXRlcm1pbmUgaG93IGBwaHlfZGV2aWNlX3JlZ2lzdGVyYCBnZXRzIGNhbGxlZCBvciB3aGF0IGRyaXZlcnMgY3JlYXRlIHBoeV9kZXZpY2VzLiBNYXliZSBJIHNob3VsZCBsb29rIGludG8gaWYgYHN5emthbGxlcmAgY291bGQgYmUgdXNlZCB0byBjcmVhdGUgYSBwaHlfZGV2aWNlP1xuXG5cbiIsIklucHV0VG9rZW5zIjoxMDA4OCwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDoyMTowOS43NDI5MDg2NzdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYzMTU1NDA3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlfZGV2aWNlX3JlZ2lzdGVyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmM9OTMxPXN0YXRpYyBpbnQgeGdiZV9waHlfZmluZF9waHlfZGV2aWNlKHN0cnVjdCB4Z2JlX3Bydl9kYXRhICpwZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtOTc1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmM6OTc2OlxcdHJldCA9IHBoeV9kZXZpY2VfcmVnaXN0ZXIocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTk3Ny1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYzo5Nzg6XFx0XFx0bmV0ZGV2X2VycihwZGF0YS1cXHUwMDNlbmV0ZGV2LCBcXFwicGh5X2RldmljZV9yZWdpc3RlciBmYWlsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtOTc5LVxcdFxcdHBoeV9kZXZpY2VfZnJlZShwaHlkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZHNhZl9tYWMuYz03MTY9aG5zX21hY19yZWdpc3Rlcl9waHlkZXYoc3RydWN0IG1paV9idXMgKm1kaW8sIHN0cnVjdCBobnNfbWFjX2NiICptYWNfY2IsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19kc2FmX21hYy5jLTc0NC1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19kc2FmX21hYy5jOjc0NTpcXHRyYyA9IHBoeV9kZXZpY2VfcmVnaXN0ZXIocGh5KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19kc2FmX21hYy5jLTc0Ni1cXHRpZiAocmMpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9uZXRzZWMuYz0xOTI5PXN0YXRpYyBpbnQgbmV0c2VjX3JlZ2lzdGVyX21kaW8oc3RydWN0IG5ldHNlY19wcml2ICpwcml2LCB1MzIgcGh5X2FkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvbmV0c2VjLmMtMTk4My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvbmV0c2VjLmM6MTk4NDpcXHRcXHRyZXQgPSBwaHlfZGV2aWNlX3JlZ2lzdGVyKHByaXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L25ldHNlYy5jLTE5ODUtXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L25ldHNlYy5jLTE5ODgtXFx0XFx0XFx0ZGV2X2Vycihwcml2LVxcdTAwM2VkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L25ldHNlYy5jOjE5ODk6XFx0XFx0XFx0XFx0XFxcInBoeV9kZXZpY2VfcmVnaXN0ZXIgZXJyKCVkKVxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvbmV0c2VjLmMtMTk5MC1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmM9NDI9Zndub2RlX2ZpbmRfbWlpX3RpbWVzdGFtcGVyKHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmMtNjktXFxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jOjcwOmludCBmd25vZGVfbWRpb2J1c19waHlfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICptZGlvLFxcbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy03MS1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy0xMDMtXFx0ICovXFxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jOjEwNDpcXHRyYyA9IHBoeV9kZXZpY2VfcmVnaXN0ZXIocGh5KTtcXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmMtMTA1LVxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jLTExNC19XFxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jOjExNTpFWFBPUlRfU1lNQk9MKGZ3bm9kZV9tZGlvYnVzX3BoeV9kZXZpY2VfcmVnaXN0ZXIpO1xcbmRyaXZlcnMvbmV0L21kaW8vZndub2RlX21kaW8uYy0xMTYtXFxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jPTExNz1pbnQgZndub2RlX21kaW9idXNfcmVnaXN0ZXJfcGh5KHN0cnVjdCBtaWlfYnVzICpidXMsXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmMtMTQ5LVxcdFxcdC8qIEFsbCBkYXRhIGlzIG5vdyBzdG9yZWQgaW4gdGhlIHBoeSBzdHJ1Y3QsIHNvIHJlZ2lzdGVyIGl0ICovXFxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jOjE1MDpcXHRcXHRyYyA9IHBoeV9kZXZpY2VfcmVnaXN0ZXIocGh5KTtcXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmMtMTUxLVxcdFxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jLTE1Ni1cXHR9IGVsc2UgaWYgKGlzX29mX25vZGUoY2hpbGQpKSB7XFxuZHJpdmVycy9uZXQvbWRpby9md25vZGVfbWRpby5jOjE1NzpcXHRcXHRyYyA9IGZ3bm9kZV9tZGlvYnVzX3BoeV9kZXZpY2VfcmVnaXN0ZXIoYnVzLCBwaHksIGNoaWxkLCBhZGRyKTtcXG5kcml2ZXJzL25ldC9tZGlvL2Z3bm9kZV9tZGlvLmMtMTU4LVxcdFxcdGlmIChyYylcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby14Z2VuZS5jPTI2Mz1zdHJ1Y3QgcGh5X2RldmljZSAqeGdlbmVfZW5ldF9waHlfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9hZGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLXhnZW5lLmMtMjcwLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby14Z2VuZS5jOjI3MTpcXHRpZiAocGh5X2RldmljZV9yZWdpc3RlcihwaHlfZGV2KSlcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8teGdlbmUuYy0yNzItXFx0XFx0cGh5X2RldmljZV9mcmVlKHBoeV9kZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM9MzI9c3RhdGljIGludCBvZl9nZXRfcGh5X2lkKHN0cnVjdCBkZXZpY2Vfbm9kZSAqZGV2aWNlLCB1MzIgKnBoeV9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTM2LVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjM3OmludCBvZl9tZGlvYnVzX3BoeV9kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKm1kaW8sIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMzgtXFx0XFx0XFx0XFx0ICAgc3RydWN0IGRldmljZV9ub2RlICpjaGlsZCwgdTMyIGFkZHIpXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMzkte1xcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjQwOlxcdHJldHVybiBmd25vZGVfbWRpb2J1c19waHlfZGV2aWNlX3JlZ2lzdGVyKG1kaW8sIHBoeSxcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy00MS1cXHRcXHRcXHRcXHRcXHRcXHQgIG9mX2Z3bm9kZV9oYW5kbGUoY2hpbGQpLFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtNDMtfVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjQ0OkVYUE9SVF9TWU1CT0wob2ZfbWRpb2J1c19waHlfZGV2aWNlX3JlZ2lzdGVyKTtcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy00NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYz0xMzE9c3RydWN0IHBoeV9kZXZpY2UgKmZpeGVkX3BoeV9yZWdpc3Rlcihjb25zdCBzdHJ1Y3QgZml4ZWRfcGh5X3N0YXR1cyAqc3RhdHVzLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE2Mi1cXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM6MTYzOlxcdHJldCA9IHBoeV9kZXZpY2VfcmVnaXN0ZXIocGh5KTtcXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTY0LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jPTQwOD1zdGF0aWMgc3RydWN0IHBoeV9kZXZpY2UgKm1kaW9idXNfc2NhbihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgYm9vbCBjNDUpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy00MzctXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NDM4OlxcdGVyciA9IHBoeV9kZXZpY2VfcmVnaXN0ZXIocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy00MzktXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmM9NTUxPXN0YXRpYyB2b2lkIHRqYTExMDJfcDFfcmVnaXN0ZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmMtNTk3LVxcbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jOjU5ODpcXHRcXHRyZXQgPSBvZl9tZGlvYnVzX3BoeV9kZXZpY2VfcmVnaXN0ZXIoYnVzLCBwaHksIGNoaWxkLCBhZGRyKTtcXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYy01OTktXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xMDEzPUVYUE9SVF9TWU1CT0woZ2V0X3BoeV9kZXZpY2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMDE1LS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTAxNjogKiBwaHlfZGV2aWNlX3JlZ2lzdGVyIC0gUmVnaXN0ZXIgdGhlIHBoeSBkZXZpY2Ugb24gdGhlIE1ESU8gYnVzXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMDE3LSAqIEBwaHlkZXY6IHBoeV9kZXZpY2Ugc3RydWN0dXJlIHRvIGJlIGFkZGVkIHRvIHRoZSBNRElPIGJ1c1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTAxOC0gKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjEwMTk6aW50IHBoeV9kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEwMjAte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMDUxLX1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjEwNTI6RVhQT1JUX1NZTUJPTChwaHlfZGV2aWNlX3JlZ2lzdGVyKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEwNTMtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEwNTgtICogVGhpcyBkb2Vzbid0IGZyZWUgdGhlIHBoeV9kZXZpY2UgaXRzZWxmLCBpdCBtZXJlbHkgcmV2ZXJzZXMgdGhlIGVmZmVjdHNcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjEwNTk6ICogb2YgcGh5X2RldmljZV9yZWdpc3RlcigpLiBVc2UgcGh5X2RldmljZV9mcmVlKCkgdG8gZnJlZSB0aGUgZGV2aWNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMDYwLSAqIGFmdGVyIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9zZnAuYz0yMDczPXN0YXRpYyBpbnQgc2ZwX3NtX3Byb2JlX3BoeShzdHJ1Y3Qgc2ZwICpzZnAsIGludCBhZGRyLCBib29sIGlzX2M0NSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9zZnAuYy0yMDg4LVxcbmRyaXZlcnMvbmV0L3BoeS9zZnAuYzoyMDg5OlxcdGVyciA9IHBoeV9kZXZpY2VfcmVnaXN0ZXIocGh5KTtcXG5kcml2ZXJzL25ldC9waHkvc2ZwLmMtMjA5MC1cXHRpZiAoZXJyKSB7XFxuZHJpdmVycy9uZXQvcGh5L3NmcC5jLTIwOTEtXFx0XFx0cGh5X2RldmljZV9mcmVlKHBoeSk7XFxuZHJpdmVycy9uZXQvcGh5L3NmcC5jOjIwOTI6XFx0XFx0ZGV2X2VycihzZnAtXFx1MDAzZWRldiwgXFxcInBoeV9kZXZpY2VfcmVnaXN0ZXIgZmFpbGVkOiAlcGVcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvcGh5L3NmcC5jLTIwOTMtXFx0XFx0XFx0RVJSX1BUUihlcnIpKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvZndub2RlX21kaW8uaC0xMS0jaWYgSVNfRU5BQkxFRChDT05GSUdfRldOT0RFX01ESU8pXFxuaW5jbHVkZS9saW51eC9md25vZGVfbWRpby5oOjEyOmludCBmd25vZGVfbWRpb2J1c19waHlfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICptZGlvLFxcbmluY2x1ZGUvbGludXgvZndub2RlX21kaW8uaC0xMy1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcXG4tLVxcbmluY2x1ZGUvbGludXgvZndub2RlX21kaW8uaD0xNj1pbnQgZndub2RlX21kaW9idXNfcmVnaXN0ZXJfcGh5KHN0cnVjdCBtaWlfYnVzICpidXMsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2Z3bm9kZV9tZGlvLmgtMTktI2Vsc2UgLyogQ09ORklHX0ZXTk9ERV9NRElPICovXFxuaW5jbHVkZS9saW51eC9md25vZGVfbWRpby5oOjIwOmludCBmd25vZGVfbWRpb2J1c19waHlfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICptZGlvLFxcbmluY2x1ZGUvbGludXgvZndub2RlX21kaW8uaC0yMS1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcXG4tLVxcbmluY2x1ZGUvbGludXgvb2ZfbWRpby5oPTQ5PWJvb2wgb2ZfcGh5X2lzX2ZpeGVkX2xpbmsoc3RydWN0IGRldmljZV9ub2RlICpucCk7XFxuaW5jbHVkZS9saW51eC9vZl9tZGlvLmg6NTA6aW50IG9mX21kaW9idXNfcGh5X2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcXG5pbmNsdWRlL2xpbnV4L29mX21kaW8uaC01MS1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKmNoaWxkLCB1MzIgYWRkcik7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L29mX21kaW8uaD0xNDA9c3RhdGljIGlubGluZSBib29sIG9mX3BoeV9pc19maXhlZF9saW5rKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXFxuLS1cXG5pbmNsdWRlL2xpbnV4L29mX21kaW8uaC0xNDQtXFxuaW5jbHVkZS9saW51eC9vZl9tZGlvLmg6MTQ1OnN0YXRpYyBpbmxpbmUgaW50IG9mX21kaW9idXNfcGh5X2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqbWRpbyxcXG5pbmNsdWRlL2xpbnV4L29mX21kaW8uaC0xNDYtXFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeS5oPTIxNTk9c3RydWN0IHBoeV9kZXZpY2UgKmdldF9waHlfZGV2aWNlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBib29sIGlzX2M0NSk7XFxuaW5jbHVkZS9saW51eC9waHkuaDoyMTYwOmludCBwaHlfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpO1xcbmluY2x1ZGUvbGludXgvcGh5LmgtMjE2MS12b2lkIHBoeV9kZXZpY2VfZnJlZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6MjE6MTEuMzc0NDY4NDgzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTEwMzE1OTYzNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFBIWSBGaXh1cHMgYW5kIHRoZWlyIEFNRDY0IEltcGxpY2F0aW9ucyoqXG5cbk9rYXksIGxldCdzIGRpc3NlY3QgdGhpcy4gRmlyc3QsIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgY2hhbmdlIHRoaXMgaXMgYWJvdXQsIGNoZWNraW5nIHRoZSBnaXQgbG9ncyBhbmQgbWF5YmUgdGhlIG9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlLCBvciBkaXZpbmcgaW50byBgZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgKndoeSogdGhpcyBwYXRjaCB3YXMgbWFkZS4gSXQgbG9va3MgbGlrZSBpdCBoYXMgc29tZXRoaW5nIHRvIGRvIHdpdGggYHBoeV9maXh1cC5jYCBhbmQgaXRzIHJlbGF0aW9uc2hpcCB3aXRoIGBDT05GSUdfUEhZTElCYC5cblxuUmlnaHQsIEkgc2VlIGl0IG5vdy4gYHBoeV9maXh1cC5vYCBpcyBidWlsdC1pbiB3aGVuZXZlciBgQ09ORklHX1BIWUxJQmAgaXMgZW5hYmxlZC4gVGhpcyBpcyBjcnVjaWFsIGJlY2F1c2UgcGxhdGZvcm0gY29kZSBpbiBhcmNoaXRlY3R1cmVzIGxpa2UgYGFybWAgYW5kIGBwb3dlcnBjYCB1c2UgYHBoeV9yZWdpc3Rlcl9maXh1cF8qYCBkdXJpbmcgZWFybHkgYm9vdCwgc3BlY2lmaWNhbGx5IGF0IGBfX2luaXRgIHRpbWUuIFByZXZpb3VzbHksIHdpdGggYENPTkZJR19QSFlMSUI9bWAsIHRoZXNlIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMgd2VyZSBpbiBhIG1vZHVsZSwgbWFraW5nIHRoZW0gaW5hY2Nlc3NpYmxlIHRvIHRoZSBwbGF0Zm9ybSBjb2RlIHRoYXQncyBidWlsdCBkaXJlY3RseSBpbnRvIHRoZSBrZXJuZWwgaWYgUEhZTElCIHdhcyBtb2R1bGFyLiBUaGUgYGlmIChJU19CVUlMVElOKENPTkZJR19QSFlMSUIpKWAgY2hlY2sgd2FzIGEgcmVhbCByb2FkYmxvY2suXG5cbkJ5IG1vdmluZyBgcGh5X3JlZ2lzdGVyX2ZpeHVwYCB0byBgcGh5X2ZpeHVwLmNgIGFuZCBidWlsZGluZyBpdCBhcyBgb2JqLXlgIChhbHdheXMgYnVpbHQtaW4pIGFuZCBtYWtpbmcgcmVnaXN0cmF0aW9uIGBfX2luaXRgLCB3ZSBlbnN1cmUgUEhZIGZpeHVwcyBjYW4gYmUgcmVnaXN0ZXJlZCBldmVuIGlmIFBIWUxJQiBpcyBhIG1vZHVsZS4gVGhlIGZhY3QgdGhhdCBhbGwgZml4dXBzIGFyZSByZWdpc3RlcmVkIGF0IGBfX2luaXRgIHRpbWUsIGJlZm9yZSBTTVAvdXNlcnNwYWNlL2RyaXZlciBwcm9iZSwgaXMgdGhlIGtleSwgYWxsb3dpbmcgYHBoeV9maXh1cF9saXN0YCB0byBiZSBtYXJrZWQgYF9fcm9fYWZ0ZXJfaW5pdGAuIFRoaXMgYWxzbyBlbGltaW5hdGVzIHRoZSBuZWVkIGZvciBhIGxvY2sgKGBwaHlfZml4dXBfbG9ja2ApIHdoZW4gcmVhZGluZyBgcGh5X2ZpeHVwX2xpc3RgIGluIGBwaHlfc2Nhbl9maXh1cHNgLiBDbGV2ZXIuXG5cbkxvb2tpbmcgYXQgYHBoeV9maXh1cC5jYCwgSSBzZWUgdGhlIGBwaHlfZml4dXBfbGlzdGAgZGVmaW5lZCBhcyBgX19yb19hZnRlcl9pbml0YCBhbmQgdGhlIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbiBgcGh5X3JlZ2lzdGVyX2ZpeHVwYC4gSXQgYWRkcyBmaXh1cHMgdG8gdGhhdCBsaXN0IGJhc2VkIG9uIGJ1cyBJRCBhbmQgcGh5IFVJRC9tYXNrLlxuXG5Ob3cgdGhlIHF1ZXN0aW9uIGlzLCBkb2VzIHRoaXMgYXBwbHkgdG8gQU1ENjQ/IEFyZSB0aGVyZSBBTlkgY2FsbGVycyBvZiBgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWRgIG9yIGBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX2lkYCBvbiBBTUQ2ND8gSSBuZWVkIHRvIHZlcmlmeS4gSSdsbCBjaGVjayB0aG9zZSBjYWxsZXJzIGFnYWluLi4uIE5vcGUsIG5vdGhpbmcuIEFsbCB0aGUgdXNhZ2VzIGFyZSBpbiB0aGUgQVJNIGFuZCBQb3dlclBDIGFyY2hpdGVjdHVyZXMuIEkgbmVlZCB0byBtYWtlIHN1cmUsIGNvdWxkIGFueSBvdGhlciBkcml2ZXIgb3Igb3RoZXIgQU1ENjQgY29kZSBjYWxsIGBwaHlfcmVnaXN0ZXJfZml4dXBgPyBMZXQncyBzZWFyY2ggdGhlIHdob2xlIHJlcG9zaXRvcnkgZm9yIGBwaHlfcmVnaXN0ZXJfZml4dXBgLi4uIEFoLCBubyBvdGhlciBjYWxscyBleGlzdC4gVGhhdCBjb25maXJtcyBpdC5cblxuU28sIG9uIEFNRDY0LCBgcGh5X2ZpeHVwX2xpc3RgIGlzIGp1c3QgaW5pdGlhbGl6ZWQgYXMgYExJU1RfSEVBRF9JTklUKHBoeV9maXh1cF9saXN0KWAuIFNpbmNlIG5vdGhpbmcgcmVnaXN0ZXJzIGFueSBmaXh1cHMgb24gQU1ENjQsIHRoaXMgbGlzdCB3aWxsIGFsd2F5cyBiZSBFTVBUWSEgV2hhdCBoYXBwZW5zIHdoZW4gYHBoeV9zY2FuX2ZpeHVwcyhwaHlkZXYpYCBpcyBjYWxsZWQgb24gQU1ENjQ/IEl0IGNhbGxzIGBsaXN0X2Zvcl9lYWNoX2VudHJ5YCwgYnV0IHNpbmNlIHRoZSBsaXN0IGlzIGVtcHR5LCBpdCBkb2VzIFpFUk8gaXRlcmF0aW9ucyBhbmQganVzdCByZXR1cm5zIDAgaW1tZWRpYXRlbHkuXG5cblRoZXJlZm9yZSwgZXZlbiBpZiBhIFBIWSBkZXZpY2UgKHZpcnR1YWwgb3Igd2hhdGV2ZXIpIGlzIHJlZ2lzdGVyZWQgb24gQU1ENjQsIGBwaHlfc2Nhbl9maXh1cHNgIGRvZXMgYWJzb2x1dGVseSBub3RoaW5nLiBDYW4gYSBQSFkgZGV2aWNlIGJlIHJlZ2lzdGVyZWQgb24gQU1ENjQgd2l0aG91dCBwaHlzaWNhbCBoYXJkd2FyZT8gTWF5YmUgd2l0aCBhIHZpcnR1YWwgUEhZLCBvci4uLiBBaCwgZml4ZWQgUEhZIGlzIHdoYXQgSSB3YXMgbG9va2luZyBmb3IgKGBkcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmNgKS4gQW5kLCB3aG8gY2FsbHMgYGZpeGVkX3BoeV9yZWdpc3RlcmA/IEknbGwgaW52ZXN0aWdhdGUgbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDYzNiwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6MjE6MjIuNDA2MDY4NDE4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzU3MzIxMzk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZpeGVkX3BoeV9yZWdpc3RlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz00ODI9c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDkxLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBOVU1fRklYRURfUEhZUzsgaSsrKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5MjpcXHRcXHRwaHlkZXZzW2ldID0gZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKCk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDkzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM9MjIzND1zdGF0aWMgaW50IGI0NF9yZWdpc3Rlcl9waHlfb25lKHN0cnVjdCBiNDQgKmJwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMjI3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYzoyMjczOlxcdFxcdHBoeWRldiA9IGZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyNzQtXFx0XFx0aWYgKCFJU19FUlIocGh5ZGV2KSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmM9MTQzOT1pbnQgYmdtYWNfcGh5X2Nvbm5lY3RfZGlyZWN0KHN0cnVjdCBiZ21hYyAqYmdtYWMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jLTE0NDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYzoxNDQ5OlxcdHBoeV9kZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXIoXFx1MDAyNmZwaHlfc3RhdHVzLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jLTE0NTAtXFx0aWYgKElTX0VSUihwaHlfZGV2KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYz0xODQ4PXN0YXRpYyBpbnQgZnRnbWFjMTAwX3Byb2JlX25jc2koc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTg2Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jOjE4Njc6XFx0cGh5ZGV2ID0gZml4ZWRfcGh5X3JlZ2lzdGVyKFxcdTAwMjZuY3NpX3BoeV9zdGF0dXMsIG5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE4NjgtXFx0aWYgKElTX0VSUihwaHlkZXYpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz0yOTgxPXN0YXRpYyBpbnQgZmVjX2VuZXRfbWlpX3Byb2JlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzAwMi1cXHRcXHRcXHRuZXRkZXZfaW5mbyhuZGV2LCBcXFwibm8gUEhZLCBhc3N1bWluZyBkaXJlY3QgY29ubmVjdGlvbiB0byBzd2l0Y2hcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjMwMDM6XFx0XFx0XFx0cGh5X2RldiA9IGZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTMwMDQtXFx0XFx0XFx0aWYgKElTX0VSUihwaHlfZGV2KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYz0yMzg9c3RhdGljIGludCBoYmdfZml4ZWRfcGh5X2luaXQoc3RydWN0IGhiZ19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYy0yNTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYzoyNTE6XFx0cGh5ZGV2ID0gZml4ZWRfcGh5X3JlZ2lzdGVyKFxcdTAwMjZoYmdfZml4ZWRfcGh5X3N0YXR1cywgTlVMTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYy0yNTItXFx0aWYgKElTX0VSUihwaHlkZXYpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYz00MTI9aW50IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy00NTktcmVnaXN0ZXJfcGh5OlxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjQ2MDpcXHRyZXR1cm4gUFRSX0VSUl9PUl9aRVJPKGZpeGVkX3BoeV9yZWdpc3RlcihcXHUwMDI2c3RhdHVzLCBucCkpO1xcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTQ2MS19XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM9MTE4PXN0YXRpYyBpbnQgZml4ZWRfcGh5X2dldF9mcmVlX2FkZHIodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xMzAtXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jOjEzMTpzdHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBmaXhlZF9waHlfc3RhdHVzICpzdGF0dXMsXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTEzMi1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE3Mi19XFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jOjE3MzpFWFBPUlRfU1lNQk9MX0dQTChmaXhlZF9waHlfcmVnaXN0ZXIpO1xcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xNzQtXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jOjE3NTpzdHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKHZvaWQpXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE3Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTgxLVxcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYzoxODI6XFx0cmV0dXJuIGZpeGVkX3BoeV9yZWdpc3RlcihcXHUwMDI2c3RhdHVzLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTgzLX1cXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM6MTg0OkVYUE9SVF9TWU1CT0xfR1BMKGZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCk7XFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE4NS1cXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmg9MTk9ZXh0ZXJuIGludCBmaXhlZF9waHlfY2hhbmdlX2NhcnJpZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCBuZXdfY2Fycmllcik7XFxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaDoyMDpzdHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBmaXhlZF9waHlfc3RhdHVzICpzdGF0dXMsXFxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaC0yMS1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKTtcXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oOjIyOnN0cnVjdCBwaHlfZGV2aWNlICpmaXhlZF9waHlfcmVnaXN0ZXJfMTAwZmQodm9pZCk7XFxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaC0yMy1cXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmg9Mjk9c3RhdGljIGlubGluZSBzdHJ1Y3QgcGh5X2RldmljZSAqXFxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaDozMDpmaXhlZF9waHlfcmVnaXN0ZXIoY29uc3Qgc3RydWN0IGZpeGVkX3BoeV9zdGF0dXMgKnN0YXR1cyxcXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oLTMxLVxcdFxcdCAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oLTM1LVxcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmg6MzY6c3RhdGljIGlubGluZSBzdHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKHZvaWQpXFxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaC0zNy17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDIwOjIxOjI0LjE2MzM5Nzc4NFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoxOTY3MTcyNTI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoaXMgY29kZTpcblxuKipBbmFseXppbmcgdGhlIGBkc2FfbG9vcC5jYCBNb2R1bGUqKlxuXG5Pa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIEknbSBsb29raW5nIGF0IGBkc2FfbG9vcC5jYC4gSXQgc2VlbXMgbGlrZSBpdCdzIHJlZ2lzdGVyaW5nIHNvbWUgZml4ZWQgcGh5c2ljYWwgYWRkcmVzc2VzIGR1cmluZyBtb2R1bGUgaW5pdGlhbGl6YXRpb24sIHNwZWNpZmljYWxseSB3aXRoaW4gYGRzYV9sb29wX2luaXRgLiBUaGlzIGlzIGEgcHJldHR5IHN0YW5kYXJkIGFwcHJvYWNoIGZvciB0aGlzIGtpbmQgb2YgaGFyZHdhcmUuXG5cbkJ1dCB0aGVuLCBhIHF1ZXN0aW9uIHBvcHMgaW50byBteSBoZWFkLi4uIHdhaXQgYSBzZWNvbmQsIHdoYXQgYWJvdXQgVVNCIGV0aGVybmV0IGRvbmdsZXM/IEhvdyBhcmUgKnRob3NlKiBoYW5kbGVkLCBlc3BlY2lhbGx5IGluIHJlbGF0aW9uIHRvIHBoeSBpbnRlcmZhY2VzIGFuZCBwaHlsaWI/IEkgbmVlZCB0byBjaGVjayB3aGV0aGVyIGFueSBvZiB0aGUgVVNCIGV0aGVybmV0IGRyaXZlcnMgYXJlIGxldmVyYWdpbmcgcGh5bGliIG9yIHBoeSBkZXZpY2VzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhleSBpbnRlZ3JhdGUgd2l0aCB0aGUgcGh5c2ljYWwgbGF5ZXIuIEknbGwgbmVlZCB0byBnbyBkaWdnaW5nIGZvciB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODUxMSwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDIwOjIxOjI2LjEzMDU3MzM4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDkzNzQyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDIwMTMgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYz0yNjY9c3RhdGljIGludCBhcWMxMTFfZ2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXQsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMzIwLVxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzozMjE6c3RhdGljIHZvaWQgYXFjMTExX3NldF9waHlfc3BlZWQoc3RydWN0IHVzYm5ldCAqZGV2LCB1OCBhdXRvbmVnLCB1MTYgc3BlZWQpXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTMyMi17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMzI0LVxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzozMjU6XFx0YXFjMTExX2RhdGEtXFx1MDAzZXBoeV9jZmcgXFx1MDAyNj0gfkFRX0FEVl9NQVNLO1xcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzozMjY6XFx0YXFjMTExX2RhdGEtXFx1MDAzZXBoeV9jZmcgfD0gQVFfUEFVU0U7XFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjMyNzpcXHRhcWMxMTFfZGF0YS1cXHUwMDNlcGh5X2NmZyB8PSBBUV9BU1lNX1BBVVNFO1xcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzozMjg6XFx0YXFjMTExX2RhdGEtXFx1MDAzZXBoeV9jZmcgfD0gQVFfRE9XTlNISUZUO1xcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzozMjk6XFx0YXFjMTExX2RhdGEtXFx1MDAzZXBoeV9jZmcgXFx1MDAyNj0gfkFRX0RTSF9SRVRSSUVTX01BU0s7XFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjMzMDpcXHRhcWMxMTFfZGF0YS1cXHUwMDNlcGh5X2NmZyB8PSAoMyBcXHUwMDNjXFx1MDAzYyBBUV9EU0hfUkVUUklFU19TSElGVCkgXFx1MDAyNlxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0zMzEtXFx0XFx0XFx0XFx0QVFfRFNIX1JFVFJJRVNfTUFTSztcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0zMzUtXFx0XFx0Y2FzZSBTUEVFRF81MDAwOlxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzozMzY6XFx0XFx0XFx0YXFjMTExX2RhdGEtXFx1MDAzZXBoeV9jZmcgfD0gQVFfQURWXzVHO1xcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0zMzctXFx0XFx0XFx0ZmFsbHRocm91Z2g7XFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTMzOC1cXHRcXHRjYXNlIFNQRUVEXzI1MDA6XFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjMzOTpcXHRcXHRcXHRhcWMxMTFfZGF0YS1cXHUwMDNlcGh5X2NmZyB8PSBBUV9BRFZfMkc1O1xcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0zNDAtXFx0XFx0XFx0ZmFsbHRocm91Z2g7XFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTM0MS1cXHRcXHRjYXNlIFNQRUVEXzEwMDA6XFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjM0MjpcXHRcXHRcXHRhcWMxMTFfZGF0YS1cXHUwMDNlcGh5X2NmZyB8PSBBUV9BRFZfMUc7XFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTM0My1cXHRcXHRcXHRmYWxsdGhyb3VnaDtcXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMzQ0LVxcdFxcdGNhc2UgU1BFRURfMTAwOlxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzozNDU6XFx0XFx0XFx0YXFjMTExX2RhdGEtXFx1MDAzZXBoeV9jZmcgfD0gQVFfQURWXzEwME07XFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTM0Ni1cXHRcXHRcXHQvKiBmYWxsLXRocm91Z2ggKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0zNTAtXFx0XFx0Y2FzZSBTUEVFRF81MDAwOlxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzozNTE6XFx0XFx0XFx0YXFjMTExX2RhdGEtXFx1MDAzZXBoeV9jZmcgfD0gQVFfQURWXzVHO1xcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0zNTItXFx0XFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTM1My1cXHRcXHRjYXNlIFNQRUVEXzI1MDA6XFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjM1NDpcXHRcXHRcXHRhcWMxMTFfZGF0YS1cXHUwMDNlcGh5X2NmZyB8PSBBUV9BRFZfMkc1O1xcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0zNTUtXFx0XFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTM1Ni1cXHRcXHRjYXNlIFNQRUVEXzEwMDA6XFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjM1NzpcXHRcXHRcXHRhcWMxMTFfZGF0YS1cXHUwMDNlcGh5X2NmZyB8PSBBUV9BRFZfMUc7XFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTM1OC1cXHRcXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMzU5LVxcdFxcdGNhc2UgU1BFRURfMTAwOlxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzozNjA6XFx0XFx0XFx0YXFjMTExX2RhdGEtXFx1MDAzZXBoeV9jZmcgfD0gQVFfQURWXzEwME07XFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTM2MS1cXHRcXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0zNjQtXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjM2NTpcXHRhcWMxMTFfd3JpdGUzMl9jbWQoZGV2LCBBUV9QSFlfT1BTLCAwLCAwLCBcXHUwMDI2YXFjMTExX2RhdGEtXFx1MDAzZXBoeV9jZmcpO1xcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0zNjYtfVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jPTM2OD1zdGF0aWMgaW50IGFxYzExMV9zZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0zODItXFx0XFx0XFx0XFx0XFx0IFNQRUVEXzUwMDAgOiBTUEVFRF8xMDAwO1xcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzozODM6XFx0XFx0XFx0YXFjMTExX3NldF9waHlfc3BlZWQoZGV2LCBhcWMxMTFfZGF0YS1cXHUwMDNlYXV0b25lZyxcXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMzg0LVxcdFxcdFxcdFxcdFxcdCAgICAgYXFjMTExX2RhdGEtXFx1MDAzZWFkdmVydGlzZWRfc3BlZWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTQwMy1cXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6NDA0OlxcdFxcdGFxYzExMV9zZXRfcGh5X3NwZWVkKGRldiwgYXFjMTExX2RhdGEtXFx1MDAzZWF1dG9uZWcsXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTQwNS1cXHRcXHRcXHRcXHQgICAgIGFxYzExMV9kYXRhLVxcdTAwM2VhZHZlcnRpc2VkX3NwZWVkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYz03NTM9c3RhdGljIHZvaWQgYXFjMTExX3VuYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTc2Ni1cXHQvKiBQb3dlciBkb3duIGV0aGVybmV0IFBIWSAqL1xcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzo3Njc6XFx0YXFjMTExX2RhdGEtXFx1MDAzZXBoeV9jZmcgXFx1MDAyNj0gfkFRX0FEVl9NQVNLO1xcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzo3Njg6XFx0YXFjMTExX2RhdGEtXFx1MDAzZXBoeV9jZmcgfD0gQVFfTE9XX1BPV0VSO1xcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzo3Njk6XFx0YXFjMTExX2RhdGEtXFx1MDAzZXBoeV9jZmcgXFx1MDAyNj0gfkFRX1BIWV9QT1dFUl9FTjtcXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtNzcwLVxcdGFxYzExMV93cml0ZTMyX2NtZF9ub3BtKGRldiwgQVFfUEhZX09QUywgMCwgMCxcXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6NzcxOlxcdFxcdFxcdFxcdFxcdTAwMjZhcWMxMTFfZGF0YS1cXHUwMDNlcGh5X2NmZyk7XFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTc3Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYz05OTA9c3RhdGljIGludCBhcWMxMTFfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTEwMDQtXFx0LyogUG93ZXIgdXAgZXRoZXJuZXQgUEhZICovXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjEwMDU6XFx0YXFjMTExX2RhdGEtXFx1MDAzZXBoeV9jZmcgPSBBUV9QSFlfUE9XRVJfRU47XFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTEwMDYtXFx0YXFjMTExX3dyaXRlMzJfY21kKGRldiwgQVFfUEhZX09QUywgMCwgMCxcXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6MTAwNzpcXHRcXHRcXHQgICBcXHUwMDI2YXFjMTExX2RhdGEtXFx1MDAzZXBoeV9jZmcpO1xcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xMDA4LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTEwMjctXFx0LyogUGh5IGFkdmVydGlzZSAqL1xcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzoxMDI4OlxcdGFxYzExMV9zZXRfcGh5X3NwZWVkKGRldiwgYXFjMTExX2RhdGEtXFx1MDAzZWF1dG9uZWcsXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTEwMjktXFx0XFx0XFx0ICAgICBhcWMxMTFfZGF0YS1cXHUwMDNlYWR2ZXJ0aXNlZF9zcGVlZCk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM9MTAzND1zdGF0aWMgaW50IGFxYzExMV9zdG9wKHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xMDQ3LVxcdC8qIFB1dCBQSFkgdG8gbG93IHBvd2VyKi9cXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6MTA0ODpcXHRhcWMxMTFfZGF0YS1cXHUwMDNlcGh5X2NmZyB8PSBBUV9MT1dfUE9XRVI7XFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTEwNDktXFx0YXFjMTExX3dyaXRlMzJfY21kKGRldiwgQVFfUEhZX09QUywgMCwgMCxcXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6MTA1MDpcXHRcXHRcXHQgICBcXHUwMDI2YXFjMTExX2RhdGEtXFx1MDAzZXBoeV9jZmcpO1xcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xMDUxLVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jPTEzMjI9c3RhdGljIGludCBhcWMxMTFfc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IG1lc3NhZ2UpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMTM2MS1cXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6MTM2MjpcXHRcXHRhcWMxMTFfZGF0YS1cXHUwMDNlcGh5X2NmZyB8PSBBUV9XT0w7XFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTEzNjMtXFx0XFx0ZXRoZXJfYWRkcl9jb3B5KHdvbF9jZmcuaHdfYWRkciwgZGV2LVxcdTAwM2VuZXQtXFx1MDAzZWRldl9hZGRyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xNDAwLVxcdFxcdGFxYzExMV93cml0ZTMyX2NtZF9ub3BtKGRldiwgQVFfUEhZX09QUywgMCwgMCxcXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6MTQwMTpcXHRcXHRcXHRcXHRcXHRcXHUwMDI2YXFjMTExX2RhdGEtXFx1MDAzZXBoeV9jZmcpO1xcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xNDAyLVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjE0MDM6XFx0XFx0YXFjMTExX2RhdGEtXFx1MDAzZXBoeV9jZmcgfD0gQVFfTE9XX1BPV0VSO1xcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xNDA0LVxcdFxcdGFxYzExMV93cml0ZTMyX2NtZF9ub3BtKGRldiwgQVFfUEhZX09QUywgMCwgMCxcXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6MTQwNTpcXHRcXHRcXHRcXHRcXHRcXHUwMDI2YXFjMTExX2RhdGEtXFx1MDAzZXBoeV9jZmcpO1xcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xNDA2LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jPTE0MTg9c3RhdGljIGludCBhcWMxMTFfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTE0MjctXFx0LyogUG93ZXIgdXAgZXRoZXJuZXQgUEhZICovXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjE0Mjg6XFx0YXFjMTExX2RhdGEtXFx1MDAzZXBoeV9jZmcgfD0gQVFfUEhZX1BPV0VSX0VOO1xcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzoxNDI5OlxcdGFxYzExMV9kYXRhLVxcdTAwM2VwaHlfY2ZnIFxcdTAwMjY9IH5BUV9MT1dfUE9XRVI7XFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjE0MzA6XFx0YXFjMTExX2RhdGEtXFx1MDAzZXBoeV9jZmcgXFx1MDAyNj0gfkFRX1dPTDtcXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMTQzMS1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xNDQyLVxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzoxNDQzOlxcdGFxYzExMV9zZXRfcGh5X3NwZWVkKGRldiwgYXFjMTExX2RhdGEtXFx1MDAzZWF1dG9uZWcsXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTE0NDQtXFx0XFx0XFx0ICAgICBhcWMxMTFfZGF0YS1cXHUwMDNlYWR2ZXJ0aXNlZF9zcGVlZCk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmg9MTYxPXN0cnVjdCBhcWMxMTFfZGF0YSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmgtMTcyLVxcdH0gZndfdmVyO1xcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuaDoxNzM6XFx0dTMyIHBoeV9jZmc7XFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5oLTE3NC1cXHR1OCB3b2xfZmxhZ3M7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oPTE3OD1zdHJ1Y3QgYXNpeF9jb21tb25fcHJpdmF0ZSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTE4MS1cXHRpbnQgKCpyZXNldCkoc3RydWN0IHVzYm5ldCAqZGV2LCBpbnQgaW5fcG0pO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MTgyOlxcdHUxNiBwcmVzdmRfcGh5X2FkdmVydGlzZTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oOjE4MzpcXHR1MTYgcHJlc3ZkX3BoeV9ibWNyO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMTg0LVxcdHN0cnVjdCBhc2l4X3J4X2ZpeHVwX2luZm8gcnhfZml4dXBfaW5mbztcXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTE4NS1cXHRzdHJ1Y3QgbWlpX2J1cyAqbWRpbztcXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oOjE4NjpcXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2O1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MTg3OlxcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXZfaW50O1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMTg4LVxcdHN0cnVjdCBwaHlsaW5rICpwaHlsaW5rO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMTg5LVxcdHN0cnVjdCBwaHlsaW5rX2NvbmZpZyBwaHlsaW5rX2NvbmZpZztcXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oOjE5MDpcXHR1MTYgcGh5X2FkZHI7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXguaC0xOTEtXFx0Ym9vbCBlbWJkX3BoeTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg9MjE0PXN0cnVjdCBza19idWZmICphc2l4X3R4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMjE2LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MjE3OmludCBhc2l4X3JlYWRfcGh5X2FkZHIoc3RydWN0IHVzYm5ldCAqZGV2LCBib29sIGludGVybmFsKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTIxOC1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg9MjI5PXZvaWQgYXNpeF9zZXRfbXVsdGljYXN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXQpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMjMwLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MjMxOmludCBhc2l4X21kaW9fcmVhZChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oOjIzMjp2b2lkIGFzaXhfbWRpb193cml0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jLCBpbnQgdmFsKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTIzMy1cXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oOjIzNDppbnQgYXNpeF9tZGlvX2J1c19yZWFkKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfaWQsIGludCByZWdudW0pO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MjM1OmludCBhc2l4X21kaW9fYnVzX3dyaXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfaWQsIGludCByZWdudW0sIHUxNiB2YWwpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMjM2LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MjM3OmludCBhc2l4X21kaW9fcmVhZF9ub3BtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MjM4OnZvaWQgYXNpeF9tZGlvX3dyaXRlX25vcG0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHBoeV9pZCwgaW50IGxvYyxcXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTIzOS1cXHRcXHRcXHQgIGludCB2YWwpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM9MjY1PXN0cnVjdCBza19idWZmICphc2l4X3R4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTMyMC1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzozMjE6aW50IGFzaXhfcmVhZF9waHlfYWRkcihzdHJ1Y3QgdXNibmV0ICpkZXYsIGJvb2wgaW50ZXJuYWwpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMzIyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jPTQ0MT12b2lkIGFzaXhfc2V0X211bHRpY2FzdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNDc5LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjQ4MDpzdGF0aWMgaW50IF9fYXNpeF9tZGlvX3JlYWQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHBoeV9pZCwgaW50IGxvYyxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy00ODEtXFx0XFx0XFx0ICAgIGJvb2wgaW5fcG0pXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy00ODYtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NDg3OlxcdG11dGV4X2xvY2soXFx1MDAyNmRldi1cXHUwMDNlcGh5X211dGV4KTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy00ODgtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy00OTAtXFx0aWYgKHJldCA9PSAtRU5PREVWIHx8IHJldCA9PSAtRVRJTUVET1VUKSB7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NDkxOlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VwaHlfbXV0ZXgpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTQ5Mi1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNDk0LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjQ5NTpcXHRyZXQgPSBhc2l4X3JlYWRfY21kKGRldiwgQVhfQ01EX1JFQURfTUlJX1JFRywgcGh5X2lkLCAoX191MTYpbG9jLCAyLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTQ5Ni1cXHRcXHRcXHQgICAgXFx1MDAyNnJlcywgaW5fcG0pO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTAxLW91dDpcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MDI6XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZXBoeV9tdXRleCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTAzLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjUwNDpcXHRuZXRkZXZfZGJnKGRldi1cXHUwMDNlbmV0LCBcXFwiYXNpeF9tZGlvX3JlYWQoKSBwaHlfaWQ9MHglMDJ4LCBsb2M9MHglMDJ4LCByZXR1cm5zPTB4JTA0eFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MDU6XFx0XFx0XFx0cGh5X2lkLCBsb2MsIGxlMTZfdG9fY3B1KHJlcykpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUwNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUwOS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MTA6aW50IGFzaXhfbWRpb19yZWFkKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTExLXtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MTI6XFx0cmV0dXJuIF9fYXNpeF9tZGlvX3JlYWQobmV0ZGV2LCBwaHlfaWQsIGxvYywgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUxMy19XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTE0LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjUxNTpzdGF0aWMgaW50IF9fYXNpeF9tZGlvX3dyaXRlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTE2LVxcdFxcdFxcdCAgICAgaW50IHZhbCwgYm9vbCBpbl9wbSlcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUyMS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MjI6XFx0bmV0ZGV2X2RiZyhkZXYtXFx1MDAzZW5ldCwgXFxcImFzaXhfbWRpb193cml0ZSgpIHBoeV9pZD0weCUwMngsIGxvYz0weCUwMngsIHZhbD0weCUwNHhcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTIzOlxcdFxcdFxcdHBoeV9pZCwgbG9jLCB2YWwpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUyNC1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MjU6XFx0bXV0ZXhfbG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VwaHlfbXV0ZXgpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUyNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUzMC1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MzE6XFx0cmV0ID0gYXNpeF93cml0ZV9jbWQoZGV2LCBBWF9DTURfV1JJVEVfTUlJX1JFRywgcGh5X2lkLCAoX191MTYpbG9jLCAyLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUzMi1cXHRcXHRcXHQgICAgIFxcdTAwMjZyZXMsIGluX3BtKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUzNy1vdXQ6XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTM4OlxcdG11dGV4X3VubG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VwaHlfbXV0ZXgpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUzOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU0Mi1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1NDM6dm9pZCBhc2l4X21kaW9fd3JpdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHBoeV9pZCwgaW50IGxvYywgaW50IHZhbClcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01NDQte1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjU0NTpcXHRfX2FzaXhfbWRpb193cml0ZShuZXRkZXYsIHBoeV9pZCwgbG9jLCB2YWwsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01NDYtfVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTQ4LS8qIE1ESU8gcmVhZCBhbmQgd3JpdGUgd3JhcHBlcnMgZm9yIHBoeWxpYiAqL1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjU0OTppbnQgYXNpeF9tZGlvX2J1c19yZWFkKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfaWQsIGludCByZWdudW0pXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTUwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU1Mi1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1NTM6XFx0cmV0dXJuIF9fYXNpeF9tZGlvX3JlYWQocHJpdi1cXHUwMDNlbmV0LCBwaHlfaWQsIHJlZ251bSwgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU1NC19XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTU1LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjU1NjppbnQgYXNpeF9tZGlvX2J1c193cml0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2lkLCBpbnQgcmVnbnVtLCB1MTYgdmFsKVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU1Ny17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01NTktXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTYwOlxcdHJldHVybiBfX2FzaXhfbWRpb193cml0ZShwcml2LVxcdTAwM2VuZXQsIHBoeV9pZCwgcmVnbnVtLCB2YWwsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01NjEtfVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU2Mi1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1NjM6aW50IGFzaXhfbWRpb19yZWFkX25vcG0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHBoeV9pZCwgaW50IGxvYylcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01NjQte1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjU2NTpcXHRyZXR1cm4gX19hc2l4X21kaW9fcmVhZChuZXRkZXYsIHBoeV9pZCwgbG9jLCB0cnVlKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01NjYtfVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM9NTY4PXZvaWRcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1Njk6YXNpeF9tZGlvX3dyaXRlX25vcG0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHBoeV9pZCwgaW50IGxvYywgaW50IHZhbClcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01NzAte1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjU3MTpcXHRfX2FzaXhfbWRpb193cml0ZShuZXRkZXYsIHBoeV9pZCwgbG9jLCB2YWwsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU3Mi19XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NzA9c3RhdGljIHUzMiBhc2l4X2dldF9waHlpZChzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTcxLXtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzI6XFx0aW50IHBoeV9yZWc7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjczOlxcdHUzMiBwaHlfaWQ7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc0LVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc3LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyAxMDA7IGkrKykge1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3ODpcXHRcXHRwaHlfcmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgTUlJX1BIWVNJRDEpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3OTpcXHRcXHRpZiAocGh5X3JlZyBcXHUwMDNjIDApXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgwLVxcdFxcdFxcdHJldHVybiAwO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MTpcXHRcXHRpZiAocGh5X3JlZyAhPSAwIFxcdTAwMjZcXHUwMDI2IHBoeV9yZWcgIT0gMHhGRkZGKVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04Mi1cXHRcXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04NS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODY6XFx0aWYgKHBoeV9yZWcgXFx1MDAzYz0gMCB8fCBwaHlfcmVnID09IDB4RkZGRilcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODctXFx0XFx0cmV0dXJuIDA7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTg4LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4OTpcXHRwaHlfaWQgPSAocGh5X3JlZyBcXHUwMDI2IDB4ZmZmZikgXFx1MDAzY1xcdTAwM2MgMTY7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkwLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5MTpcXHRwaHlfcmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgTUlJX1BIWVNJRDIpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5MjpcXHRpZiAocGh5X3JlZyBcXHUwMDNjIDApXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkzLVxcdFxcdHJldHVybiAwO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05NC1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTU6XFx0cGh5X2lkIHw9IChwaHlfcmVnIFxcdTAwMjYgMHhmZmZmKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTYtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjk3OlxcdHJldHVybiBwaHlfaWQ7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xNzc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBheDg4MTcyX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTg5LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxOTA6c3RhdGljIHZvaWQgYXNpeF9waHlfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2LCB1bnNpZ25lZCBpbnQgcmVzZXRfYml0cylcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTkxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xOTMtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjE5NDpcXHRhc2l4X21kaW9fd3JpdGUoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgTUlJX0JNQ1IsIHJlc2V0X2JpdHMpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xOTUtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjE5NjpcXHQvKiBnaXZlIHBoeV9pZCBhIGNoYW5jZSB0byBwcm9jZXNzIHJlc2V0ICovXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTE5Ny1cXHR1ZGVsYXkoNTAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yMDAtXFx0d2hpbGUgKHRpbWVvdXQtLSkge1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoyMDE6XFx0XFx0aWYgKGFzaXhfbWRpb19yZWFkKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIE1JSV9CTUNSKVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yMDItXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx1MDAyNiBCTUNSX1JFU0VUKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTIwNy1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MjA4OlxcdG5ldGRldl9lcnIoZGV2LVxcdTAwM2VuZXQsIFxcXCJCTUNSX1JFU0VUIHRpbWVvdXQgb24gcGh5X2lkICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoyMDk6XFx0XFx0ICAgZGV2LVxcdTAwM2VtaWkucGh5X2lkKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMjEwLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0yMTI9c3RhdGljIGludCBheDg4MTcyX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yNTAtXFx0ZGV2LVxcdTAwM2VtaWkubWRpb193cml0ZSA9IGFzaXhfbWRpb193cml0ZTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MjUxOlxcdGRldi1cXHUwMDNlbWlpLnBoeV9pZF9tYXNrID0gMHgzZjtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMjUyLVxcdGRldi1cXHUwMDNlbWlpLnJlZ19udW1fbWFzayA9IDB4MWY7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTI1My1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MjU0OlxcdGRldi1cXHUwMDNlbWlpLnBoeV9pZCA9IGFzaXhfcmVhZF9waHlfYWRkcihkZXYsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoyNTU6XFx0aWYgKGRldi1cXHUwMDNlbWlpLnBoeV9pZCBcXHUwMDNjIDApXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjI1NjpcXHRcXHRyZXR1cm4gZGV2LVxcdTAwM2VtaWkucGh5X2lkO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yNTctXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMjYyLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoyNjM6XFx0YXNpeF9waHlfcmVzZXQoZGV2LCBCTUNSX1JFU0VUKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MjY0OlxcdGFzaXhfbWRpb193cml0ZShkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCBNSUlfQURWRVJUSVNFLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yNjUtXFx0XFx0QURWRVJUSVNFX0FMTCB8IEFEVkVSVElTRV9DU01BIHwgQURWRVJUSVNFX1BBVVNFX0NBUCk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MzEyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgYXg4ODc3Ml9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0zMjEtXFx0LnNldF9lZXByb21cXHRcXHQ9IGFzaXhfc2V0X2VlcHJvbSxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MzIyOlxcdC5ud2F5X3Jlc2V0XFx0XFx0PSBwaHlfZXRodG9vbF9ud2F5X3Jlc2V0LFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzozMjM6XFx0LmdldF9saW5rX2tzZXR0aW5nc1xcdD0gcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzozMjQ6XFx0LnNldF9saW5rX2tzZXR0aW5nc1xcdD0gcGh5X2V0aHRvb2xfc2V0X2xpbmtfa3NldHRpbmdzLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0zMjUtXFx0LnNlbGZfdGVzdFxcdFxcdD0gbmV0X3NlbGZ0ZXN0LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTM2Mj1zdGF0aWMgaW50IGF4ODg3NzJfaHdfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2LCBpbnQgaW5fcG0pXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNDA2LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo0MDc6XFx0aWYgKGluX3BtIFxcdTAwMjZcXHUwMDI2ICghYXNpeF9tZGlvX3JlYWRfbm9wbShkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy00MDgtXFx0XFx0XFx0XFx0XFx0ICAgTUlJX1BIWVNJRDEpKSl7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NDU2PXN0YXRpYyBpbnQgYXg4ODc3MmFfaHdfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2LCBpbnQgaW5fcG0pXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNDk2LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo0OTc6XFx0aWYgKGluX3BtIFxcdTAwMjZcXHUwMDI2ICghYXNpeF9tZGlvX3JlYWRfbm9wbShkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy00OTgtXFx0XFx0XFx0XFx0XFx0ICAgTUlJX1BIWVNJRDEpKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUxMi1cXHRcXHQvKiBDaGVjayBpZiB0aGUgUEhZIHJlZ2lzdGVycyBoYXZlIGRlZmF1bHQgc2V0dGluZ3MgKi9cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NTEzOlxcdFxcdHBoeTE0aCA9IGFzaXhfbWRpb19yZWFkX25vcG0oZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTE0LVxcdFxcdFxcdFxcdFxcdCAgICAgQVg4ODc3MkFfUEhZMTRIKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NTE1OlxcdFxcdHBoeTE1aCA9IGFzaXhfbWRpb19yZWFkX25vcG0oZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTE2LVxcdFxcdFxcdFxcdFxcdCAgICAgQVg4ODc3MkFfUEhZMTVIKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NTE3OlxcdFxcdHBoeTE2aCA9IGFzaXhfbWRpb19yZWFkX25vcG0oZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTE4LVxcdFxcdFxcdFxcdFxcdCAgICAgQVg4ODc3MkFfUEhZMTZIKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MjUtXFx0XFx0aWYgKHBoeTE0aCAhPSBBWDg4NzcyQV9QSFkxNEhfREVGQVVMVClcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NTI2OlxcdFxcdFxcdGFzaXhfbWRpb193cml0ZV9ub3BtKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUyNy1cXHRcXHRcXHRcXHRcXHQgICAgIEFYODg3NzJBX1BIWTE0SCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MjktXFx0XFx0aWYgKHBoeTE1aCAhPSBBWDg4NzcyQV9QSFkxNUhfREVGQVVMVClcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NTMwOlxcdFxcdFxcdGFzaXhfbWRpb193cml0ZV9ub3BtKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUzMS1cXHRcXHRcXHRcXHRcXHQgICAgIEFYODg3NzJBX1BIWTE1SCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MzMtXFx0XFx0aWYgKHBoeTE2aCAhPSBBWDg4NzcyQV9QSFkxNkhfREVGQVVMVClcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NTM0OlxcdFxcdFxcdGFzaXhfbWRpb193cml0ZV9ub3BtKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUzNS1cXHRcXHRcXHRcXHRcXHQgICAgIEFYODg3NzJBX1BIWTE2SCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz01ODM9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBheDg4NzcyX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTkxLVxcdC5uZG9fdmFsaWRhdGVfYWRkclxcdD0gZXRoX3ZhbGlkYXRlX2FkZHIsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjU5MjpcXHQubmRvX2V0aF9pb2N0bFxcdFxcdD0gcGh5X2RvX2lvY3RsX3J1bm5pbmcsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTU5My1cXHQubmRvX3NldF9yeF9tb2RlICAgICAgICA9IGFzaXhfc2V0X211bHRpY2FzdCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz02Njk9c3RhdGljIGludCBheDg4NzcyX2luaXRfbWRpbyhzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjgxLVxcdHByaXYtXFx1MDAzZW1kaW8tXFx1MDAzZW5hbWUgPSBcXFwiQXNpeCBNRElPIEJ1c1xcXCI7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjY4MjpcXHRwcml2LVxcdTAwM2VtZGlvLVxcdTAwM2VwaHlfbWFzayA9IH4oQklUKHByaXYtXFx1MDAzZXBoeV9hZGRyIFxcdTAwMjYgMHgxZikgfCBCSVQoQVhfRU1CRF9QSFlfQUREUikpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy02ODMtXFx0LyogbWlpIGJ1cyBuYW1lIGlzIHVzYi1cXHUwMDNjdXNiIGJ1cyBudW1iZXJcXHUwMDNlLVxcdTAwM2N1c2IgZGV2aWNlIG51bWJlclxcdTAwM2UgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz03MDM9c3RhdGljIGludCBheDg4NzcyX2luaXRfcGh5KHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MDctXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjcwODpcXHRwcml2LVxcdTAwM2VwaHlkZXYgPSBtZGlvYnVzX2dldF9waHkocHJpdi1cXHUwMDNlbWRpbywgcHJpdi1cXHUwMDNlcGh5X2FkZHIpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MDktXFx0aWYgKCFwcml2LVxcdTAwM2VwaHlkZXYpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MTktXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjcyMDpcXHRwaHlfc3VzcGVuZChwcml2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MjEtXFx0cHJpdi1cXHUwMDNlcGh5ZGV2LVxcdTAwM2VtYWNfbWFuYWdlZF9wbSA9IHRydWU7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTcyMi1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzIzOlxcdHBoeV9hdHRhY2hlZF9pbmZvKHByaXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTcyNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03NDEtXFx0cHJpdi1cXHUwMDNlcGh5ZGV2X2ludC1cXHUwMDNlbWFjX21hbmFnZWRfcG0gPSB0cnVlO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3NDI6XFx0cGh5X3N1c3BlbmQocHJpdi1cXHUwMDNlcGh5ZGV2X2ludCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc0My1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz03NTM9c3RhdGljIHZvaWQgYXg4ODc3Ml9tYWNfbGlua19kb3duKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3NTQ6XFx0XFx0XFx0XFx0IHVuc2lnbmVkIGludCBtb2RlLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03NTUte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTc2Mj1zdGF0aWMgdm9pZCBheDg4NzcyX21hY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3NjM6XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjc2NDpcXHRcXHRcXHQgICAgICAgdW5zaWduZWQgaW50IG1vZGUsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc2NS1cXHRcXHRcXHQgICAgICAgaW50IHNwZWVkLCBpbnQgZHVwbGV4LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTc5OT1zdGF0aWMgaW50IGF4ODg3NzJfcGh5bGlua19zZXR1cChzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODAxLVxcdHN0cnVjdCBhc2l4X2NvbW1vbl9wcml2YXRlICpwcml2ID0gZGV2LVxcdTAwM2Vkcml2ZXJfcHJpdjtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODAyOlxcdHBoeV9pbnRlcmZhY2VfdCBwaHlfaWZfbW9kZTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODAzLVxcdHN0cnVjdCBwaHlsaW5rICpwaHlsaW5rO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgxNS1cXHRpZiAocHJpdi1cXHUwMDNlZW1iZF9waHkpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgxNjpcXHRcXHRwaHlfaWZfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTDtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODE3LVxcdGVsc2VcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODE4OlxcdFxcdHBoeV9pZl9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX1JNSUk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgxOS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODIwLVxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2cHJpdi1cXHUwMDNlcGh5bGlua19jb25maWcsIGRldi1cXHUwMDNlbmV0LVxcdTAwM2VkZXYuZndub2RlLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MjE6XFx0XFx0XFx0XFx0IHBoeV9pZl9tb2RlLCBcXHUwMDI2YXg4ODc3Ml9waHlsaW5rX21hY19vcHMpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MjItXFx0aWYgKElTX0VSUihwaHlsaW5rKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz04Mjk9c3RhdGljIGludCBheDg4NzcyX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04NzctXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjg3ODpcXHRyZXQgPSBhc2l4X3JlYWRfcGh5X2FkZHIoZGV2LCB0cnVlKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODc5LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTg4MS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODgyOlxcdHByaXYtXFx1MDAzZXBoeV9hZGRyID0gcmV0O1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4ODM6XFx0cHJpdi1cXHUwMDNlZW1iZF9waHkgPSAoKHByaXYtXFx1MDAzZXBoeV9hZGRyIFxcdTAwMjYgMHgxZikgPT0gQVhfRU1CRF9QSFlfQUREUik7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTg4NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05MTMtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjkxNDpcXHRwcml2LVxcdTAwM2VwcmVzdmRfcGh5X2JtY3IgPSAwO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5MTU6XFx0cHJpdi1cXHUwMDNlcHJlc3ZkX3BoeV9hZHZlcnRpc2UgPSAwO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05MTYtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTI2LVxcdGlmIChyZXQpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjkyNzpcXHRcXHRnb3RvIGluaXRwaHlfZXJyO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05MjgtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTM3LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5Mzg6aW5pdHBoeV9lcnI6XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkzOS1cXHRwaHlsaW5rX2Rlc3Ryb3kocHJpdi1cXHUwMDNlcGh5bGluayk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9OTc1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgYXg4ODE3OF9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05ODktXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjk5MDpzdGF0aWMgaW50IG1hcnZlbGxfcGh5X2luaXQoc3RydWN0IHVzYm5ldCAqZGV2KVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05OTEte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk5NC1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTk1OlxcdG5ldGRldl9kYmcoZGV2LVxcdTAwM2VuZXQsIFxcXCJtYXJ2ZWxsX3BoeV9pbml0KClcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05OTYtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjk5NzpcXHRyZWcgPSBhc2l4X21kaW9fcmVhZChkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCBNSUlfTUFSVkVMTF9TVEFUVVMpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05OTgtXFx0bmV0ZGV2X2RiZyhkZXYtXFx1MDAzZW5ldCwgXFxcIk1JSV9NQVJWRUxMX1NUQVRVUyA9IDB4JTA0eFxcXFxuXFxcIiwgcmVnKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTk5LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDAwOlxcdGFzaXhfbWRpb193cml0ZShkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCBNSUlfTUFSVkVMTF9DVFJMLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDAxLVxcdFxcdFxcdE1BUlZFTExfQ1RSTF9SWERFTEFZIHwgTUFSVkVMTF9DVFJMX1RYREVMQVkpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMDMtXFx0aWYgKGRhdGEtXFx1MDAzZWxlZG1vZGUpIHtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAwNDpcXHRcXHRyZWcgPSBhc2l4X21kaW9fcmVhZChkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDA1LVxcdFxcdFxcdE1JSV9NQVJWRUxMX0xFRF9DVFJMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDA5LVxcdFxcdHJlZyB8PSAoMSArIDB4MDEwMCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMTA6XFx0XFx0YXNpeF9tZGlvX3dyaXRlKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMTEtXFx0XFx0XFx0TUlJX01BUlZFTExfTEVEX0NUUkwsIHJlZyk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMTItXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMTM6XFx0XFx0cmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAxNC1cXHRcXHRcXHRNSUlfTUFSVkVMTF9MRURfQ1RSTCk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAyMC1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAyMTpzdGF0aWMgaW50IHJ0bDgyMTFjbF9waHlfaW5pdChzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMjIte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMjQtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMjU6XFx0bmV0ZGV2X2RiZyhkZXYtXFx1MDAzZW5ldCwgXFxcInJ0bDgyMTFjbF9waHlfaW5pdCgpXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAyNi1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAyNzpcXHRhc2l4X21kaW9fd3JpdGUgKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIDB4MWYsIDB4MDAwNSk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMjg6XFx0YXNpeF9tZGlvX3dyaXRlIChkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCAweDBjLCAwKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAyOTpcXHRhc2l4X21kaW9fd3JpdGUgKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIDB4MDEsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMzA6XFx0XFx0YXNpeF9tZGlvX3JlYWQgKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIDB4MDEpIHwgMHgwMDgwKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAzMTpcXHRhc2l4X21kaW9fd3JpdGUgKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIDB4MWYsIDApO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDMyLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDMzLVxcdGlmIChkYXRhLVxcdTAwM2VsZWRtb2RlID09IDEyKSB7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMzQ6XFx0XFx0YXNpeF9tZGlvX3dyaXRlIChkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCAweDFmLCAweDAwMDIpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDM1OlxcdFxcdGFzaXhfbWRpb193cml0ZSAoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgMHgxYSwgMHgwMGNiKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAzNjpcXHRcXHRhc2l4X21kaW9fd3JpdGUgKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIDB4MWYsIDApO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDM3LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xMDQyPXN0YXRpYyBpbnQgbWFydmVsbF9sZWRfc3RhdHVzKHN0cnVjdCB1c2JuZXQgKmRldiwgdTE2IHNwZWVkKVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDQzLXtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTA0NDpcXHR1MTYgcmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgTUFSVkVMTF9MRURfTUFOVUFMKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTA0NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDYyLVxcdG5ldGRldl9kYmcoZGV2LVxcdTAwM2VuZXQsIFxcXCJtYXJ2ZWxsX2xlZF9zdGF0dXMoKSB3cml0aW5nIDB4JTA0eFxcXFxuXFxcIiwgcmVnKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTA2MzpcXHRhc2l4X21kaW9fd3JpdGUoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgTUFSVkVMTF9MRURfTUFOVUFMLCByZWcpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDY0LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTEwNjg9c3RhdGljIGludCBheDg4MTc4X3Jlc2V0KHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMTM1LVxcdGlmIChkYXRhLVxcdTAwM2VwaHltb2RlID09IFBIWV9NT0RFX01BUlZFTEwpIHtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTEzNjpcXHRcXHRtYXJ2ZWxsX3BoeV9pbml0KGRldik7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTExMzctXFx0XFx0bXNsZWVwKDYwKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTEzOC1cXHR9IGVsc2UgaWYgKGRhdGEtXFx1MDAzZXBoeW1vZGUgPT0gUEhZX01PREVfUlRMODIxMUNMKVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMTM5OlxcdFxcdHJ0bDgyMTFjbF9waHlfaW5pdChkZXYpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMTQwLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMTQxOlxcdGFzaXhfcGh5X3Jlc2V0KGRldiwgQk1DUl9SRVNFVCB8IEJNQ1JfQU5FTkFCTEUpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMTQyOlxcdGFzaXhfbWRpb193cml0ZShkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCBNSUlfQURWRVJUSVNFLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMTQzLVxcdFxcdFxcdEFEVkVSVElTRV9BTEwgfCBBRFZFUlRJU0VfQ1NNQSB8IEFEVkVSVElTRV9QQVVTRV9DQVApO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMTQ0OlxcdGFzaXhfbWRpb193cml0ZShkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCBNSUlfQ1RSTDEwMDAsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTExNDUtXFx0XFx0XFx0QURWRVJUSVNFXzEwMDBGVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xMjcxPXN0YXRpYyBpbnQgYXg4ODE3OF9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTI5Mi1cXHRkZXYtXFx1MDAzZW1paS5tZGlvX3dyaXRlID0gYXNpeF9tZGlvX3dyaXRlO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMjkzOlxcdGRldi1cXHUwMDNlbWlpLnBoeV9pZF9tYXNrID0gMHgxZjtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTI5NC1cXHRkZXYtXFx1MDAzZW1paS5yZWdfbnVtX21hc2sgPSAweGZmO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEyOTYtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEyOTc6XFx0ZGV2LVxcdTAwM2VtaWkucGh5X2lkID0gYXNpeF9yZWFkX3BoeV9hZGRyKGRldiwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEyOTg6XFx0aWYgKGRldi1cXHUwMDNlbWlpLnBoeV9pZCBcXHUwMDNjIDApXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEyOTk6XFx0XFx0cmV0dXJuIGRldi1cXHUwMDNlbWlpLnBoeV9pZDtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTMwMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jPTE4PXN0cnVjdCBheDg4MTcyYV9wcml2YXRlIHtcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy0xOS1cXHRzdHJ1Y3QgbWlpX2J1cyAqbWRpbztcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6MjE6MjYuMTgxNTE2Mjk4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjE4NzYyMzY4MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgQVg4ODE3MiBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgQVg4ODE3MiBkcml2ZXIsIGFuZCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhlIGNob2ljZSBiZXR3ZWVuIGBheDg4MTcyX2JpbmRgIGFuZCBgYXg4ODc3Ml9pbml0X21kaW9gLiAgTXkgZ3V0IHRlbGxzIG1lIGBheDg4NzcyX2luaXRfbWRpb2AgaXMgcHJvYmFibHkgd2hlcmUgdGhlIE1ESU8gYnVzIGluaXRpYWxpemF0aW9uIGhhcHBlbnMuIFNvLCBJJ20gaGVhZGluZyB0aGVyZSBmaXJzdC4gSSB3YW50IHRvIHNlZSBob3cgdGhpcyBNRElPIGJ1cyBpcyBiZWluZyByZWdpc3RlcmVkIGFuZCBzY2FubmVkIOKAkyB1bmRlcnN0YW5kaW5nIHRoYXQgcGFydCBpcyBrZXkgdG8gZmlndXJpbmcgb3V0IHRoZSB3aG9sZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBhbmQgaG93IHRoZSBQSFkgaXMgYmVpbmcgaGFuZGxlZC4gVGhpcyBpcyBsaWtlbHkgdGhlIGNydWNpYWwgc3RlcC4gTGV0IG1lIGdvIHRha2UgYSBsb29rIGF0IGl0Li4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxNjM3LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6MjE6MjguMDU3NzU3NDU4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTE0NDE0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZGlvYnVzX3JlZ2lzdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NjY5PXN0YXRpYyBpbnQgYXg4ODc3Ml9pbml0X21kaW8oc3RydWN0IHVzYm5ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY4Ni1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6Njg3OlxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIocHJpdi1cXHUwMDNlbWRpbyk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY4OC1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYz02MT1zdGF0aWMgaW50IGF4ODgxNzJhX2luaXRfbWRpbyhzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy03OS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzo4MDpcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKHByaXYtXFx1MDAzZW1kaW8pO1xcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTgxLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9MjA5MT1zdGF0aWMgaW50IGxhbjc4eHhfbWRpb19pbml0KHN0cnVjdCBsYW43OHh4X25ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMTIxLVxcdG5vZGUgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShkZXYtXFx1MDAzZXVkZXYtXFx1MDAzZWRldi5vZl9ub2RlLCBcXFwibWRpb1xcXCIpO1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjEyMjpcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGRldi1cXHUwMDNlbWRpb2J1cywgbm9kZSk7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMTIzLVxcdG9mX25vZGVfcHV0KG5vZGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmM9MTE0Nz1zdGF0aWMgaW50IHNtc2M5NXh4X2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jLTEyNDEtXFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmM6MTI0MjpcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKHBkYXRhLVxcdTAwM2VtZGlvYnVzKTtcXG5kcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYy0xMjQzLVxcdGlmIChyZXQpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6MjE6MjguMTA2OTA5OTQ1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjMzODM0NjEwOTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50KipcblxuT2theSwgc28gSSdtIHNlZWluZyBgbWRpb2J1c19yZWdpc3RlcmAgYmVpbmcgdXNlZCBpbiBzZXZlcmFsIFVTQiBldGhlcm5ldCBkcml2ZXIgY29udGV4dHMg4oCTIGBzbXNjOTV4eGAsIGBhc2l4X2RldmljZXNgLCBgYXg4ODE3MmFgLCB0aGF0IHNvcnQgb2YgdGhpbmcuIEludGVyZXN0aW5nLiBBbmQgdGhlbiB0aGVyZSdzIGEgY29ubmVjdGlvbiB0byBzeXprYWxsZXIgYW5kIGl0cyBVU0IgZW11bGF0aW9uIGNhcGFiaWxpdGllcywgc3BlY2lmaWNhbGx5IHRoZSByYXctZ2FkZ2V0LCB1c2JpcCwgYW5kIGR1bW15X2hjZCBzZXR1cHMuIFRoaXMgaXMgbWFraW5nIG1lIHRoaW5rIGFib3V0IGhvdyB0aGUgcGh5c2ljYWwgbGF5ZXIgaXMgZXhwb3NlZCBmb3IgdGhlc2UgZGV2aWNlcy5cblxuTXkgaW1tZWRpYXRlIG5leHQgdGhvdWdodCBpcyB0byBkcmlsbCBkb3duIGludG8gdGhlIGltcGxlbWVudGF0aW9uIG9mIGBtZGlvYnVzX3JlZ2lzdGVyYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBNRElPIGJ1cyBpcyBhY3R1YWxseSByZWdpc3RlcmVkLCBob3cgaXQncyBoYW5kbGVkIGF0IHRoZSBkcml2ZXIgbGV2ZWwsIHRoZSBjb25uZWN0aW9uIHRoYXQncyBiZWluZyBtYWRlLiBTcGVjaWZpY2FsbHksIEkgc2hvdWxkIGxvb2sgaW4gdGhlIGBkcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuY2AgZmlsZSDigJMgb3Igd2hlcmV2ZXIgdGhlIE1ESU8gYnVzIHJlZ2lzdHJhdGlvbiBsb2dpYyBhY3R1YWxseSBsaXZlcyBpbiB0aGUga2VybmVsIHNvdXJjZSwgaXQgbWF5IGhhdmUgbW92ZWQuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQncyBoYXBwZW5pbmcgdW5kZXIgdGhlIGhvb2QuIFRoaXMgbWlnaHQgcmV2ZWFsIHNvbWUgdnVsbmVyYWJpbGl0aWVzIG9yIHBvdGVudGlhbCBhcmVhcyBmb3IgZnV6emluZywgZ2l2ZW4gdGhlIHN5emthbGxlciBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjQyNiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDoyMTozMS40OTAzNzMxODlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MDM5MTQwNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19tZGlvYnVzX3JlZ2lzdGVyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L21kaW8vYWNwaV9tZGlvLmM9MzI9aW50IF9fYWNwaV9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICptZGlvLCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9hY3BpX21kaW8uYy00MC1cXHRtZGlvLVxcdTAwM2VwaHlfbWFzayA9IEdFTk1BU0soMzEsIDApO1xcbmRyaXZlcnMvbmV0L21kaW8vYWNwaV9tZGlvLmM6NDE6XFx0cmV0ID0gX19tZGlvYnVzX3JlZ2lzdGVyKG1kaW8sIG93bmVyKTtcXG5kcml2ZXJzL25ldC9tZGlvL2FjcGlfbWRpby5jLTQyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYz0xOTU9aW50IF9fb2ZfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgc3RydWN0IGRldmljZV9ub2RlICpucCxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTIwMi1cXHRpZiAoIW5wKVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjIwMzpcXHRcXHRyZXR1cm4gX19tZGlvYnVzX3JlZ2lzdGVyKG1kaW8sIG93bmVyKTtcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0yMDQtXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0yMjEtXFx0LyogUmVnaXN0ZXIgdGhlIE1ESU8gYnVzICovXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6MjIyOlxcdHJjID0gX19tZGlvYnVzX3JlZ2lzdGVyKG1kaW8sIG93bmVyKTtcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0yMjMtXFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM9NTI1PXN0YXRpYyBib29sIG1kaW9idXNfcHJldmVudF9jNDVfc2NhbihzdHJ1Y3QgbWlpX2J1cyAqYnVzKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNTM5LS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jOjU0MDogKiBfX21kaW9idXNfcmVnaXN0ZXIgLSBicmluZyB1cCBhbGwgdGhlIFBIWXMgb24gYSBnaXZlbiBidXMgYW5kIGF0dGFjaCB0aGVtIHRvIGJ1c1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTU0MS0gKiBAYnVzOiB0YXJnZXQgbWlpX2J1c1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNTQ1LSAqICAgb24gYSBnaXZlbiBidXMsIGFuZCBhdHRhY2ggdGhlbSB0byB0aGUgYnVzLiBEcml2ZXJzIHNob3VsZCB1c2VcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYzo1NDY6ICogICBtZGlvYnVzX3JlZ2lzdGVyKCkgcmF0aGVyIHRoYW4gX19tZGlvYnVzX3JlZ2lzdGVyKCkgdW5sZXNzIHRoZXlcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy01NDctICogICBuZWVkIHRvIHBhc3MgYSBzcGVjaWZpYyBvd25lciBtb2R1bGUuIE1ESU8gZGV2aWNlcyB3aGljaCBhcmUgbm90XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy01NTItICovXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NTUzOmludCBfX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKmJ1cywgc3RydWN0IG1vZHVsZSAqb3duZXIpXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmMtNTU0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1c19wcm92aWRlci5jLTY2Ni19XFxuZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzX3Byb3ZpZGVyLmM6NjY3OkVYUE9SVF9TWU1CT0woX19tZGlvYnVzX3JlZ2lzdGVyKTtcXG5kcml2ZXJzL25ldC9waHkvbWRpb19idXNfcHJvdmlkZXIuYy02NjgtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWRpb19kZXZyZXMuYz03Mz1pbnQgX19kZXZtX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgbWlpX2J1cyAqYnVzLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2cmVzLmMtODYtXFxuZHJpdmVycy9uZXQvcGh5L21kaW9fZGV2cmVzLmM6ODc6XFx0cmV0ID0gX19tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgb3duZXIpO1xcbmRyaXZlcnMvbmV0L3BoeS9tZGlvX2RldnJlcy5jLTg4LVxcdGlmIChyZXQpIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5Lmg9NDQyPXN0YXRpYyBpbmxpbmUgc3RydWN0IG1paV9idXMgKm1kaW9idXNfYWxsb2Modm9pZClcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5LmgtNDQ2LVxcbmluY2x1ZGUvbGludXgvcGh5Lmg6NDQ3OmludCBfX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKmJ1cywgc3RydWN0IG1vZHVsZSAqb3duZXIpO1xcbmluY2x1ZGUvbGludXgvcGh5LmgtNDQ4LWludCBfX2Rldm1fbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBtaWlfYnVzICpidXMsXFxuaW5jbHVkZS9saW51eC9waHkuaC00NDktXFx0XFx0XFx0ICAgIHN0cnVjdCBtb2R1bGUgKm93bmVyKTtcXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjQ1MDojZGVmaW5lIG1kaW9idXNfcmVnaXN0ZXIoYnVzKSBfX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBUSElTX01PRFVMRSlcXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTQ1MS0jZGVmaW5lIGRldm1fbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cykgXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDoyMTozMy4wOTQyOTIzNTlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTE5OTQ4NzUxOTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIFBIWSBGaXh1cCBQYXRjaCoqXG5cbk9rYXksIGhlcmUncyB0aGUgYnJlYWtkb3duLiBUaGlzIHBhdGNoIHByaW1hcmlseSBjb25jZXJucyB0aGUgUEhZIChQaHlzaWNhbCBMYXllcikgZml4dXAgbWVjaGFuaXNtIHdpdGhpbiB0aGUgbmV0d29ya2luZyBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSB0aGUgUEhZIGxpYnJhcnkuIEl0J3MgYWJvdXQgaG93IHRoZSBrZXJuZWwgaGFuZGxlcyBzcGVjaWZpYyBoYXJkd2FyZSBxdWlya3MgYW5kIHdvcmthcm91bmRzIGZvciB2YXJpb3VzIFBIWSBkZXZpY2VzLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyB3ZW50IGxpa2UgdGhpczogYF9fbWRpb2J1c19yZWdpc3RlcmAgaXMgdGhlIGVudHJ5IHBvaW50LCBhbmQgaXQgbGVhZHMgdG8gUEhZIHByb2JpbmcgYW5kIHJlZ2lzdHJhdGlvbiwgd2hpY2ggaW4gdHVybiBpbnZvbHZlcyBgcGh5X3NjYW5fZml4dXBzYC4gVGhlIGZpeHVwIGlzIGNhbGxlZCBmcm9tIGBwaHlfZGV2aWNlX3JlZ2lzdGVyYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCB0aGlzIHNwZWNpZmljIHBhdGNoIGlzIGFjdHVhbGx5IGNoYW5naW5nLiBJIHJlLWV4YW1pbmVkIHRoZSBwYXRjaCB0byB1bmRlcnN0YW5kIHRoZSBtb2RpZmljYXRpb25zLlxuXG5UaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmaWxlLCBgcGh5X2ZpeHVwLmNgLCBhbmQgbW9kaWZpZXMgYGRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZWAgYW5kIGBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jYC4gTG9va2luZyBjYXJlZnVsbHksIGl0IGFwcGVhcnMgdGhlIHBhdGNoIGlzIHJlbW92aW5nIHRoZSBvbGQgaW4tcGxhY2UgaW1wbGVtZW50YXRpb24gb2YgYHBoeV9yZWdpc3Rlcl9maXh1cGAgZXRjLiBhbmQgbW92aW5nIHRoZSBpbXBsZW1lbnRhdGlvbiBpbnRvIGEgc2VwYXJhdGUgZmlsZSAoYHBoeV9maXh1cC5jYCkuIFRoZSBjb2RlIHRvIHJlZ2lzdGVyIGZpeHVwcyBpcyBub3cgYF9faW5pdGAsIG1lYW5pbmcgaXQgaGFwcGVucyBvbmx5IGR1cmluZyBib290LCBub3QgZHluYW1pY2FsbHkgYXQgcnVudGltZS4gVGhlIHByZXZpb3VzIGNhbGxzIHRvIGBwaHlfcmVnaXN0ZXJfZml4dXBfKmAgd2VyZSBkb25lIHZpYSBgRVhQT1JUX1NZTUJPTGAsIHdoaWNoIGhhcyBiZWVuIHJlbW92ZWQuXG5cbkhlcmUncyB0aGUgY3JpdGljYWwgYml0OiB0aGUgZnVuY3Rpb25zIGBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZGAgYW5kIGBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX2lkYCBhbmQgYHBoeV9yZWdpc3Rlcl9maXh1cGAgYXJlIE5FVkVSIHVzZWQgb24gdGhlIGFtZDY0IGFyY2hpdGVjdHVyZS4gSSB2ZXJpZmllZCB0aGlzIGJ5IGNoZWNraW5nIHRoZSBjYWxsZXJzIG9mIHRob3NlIGZ1bmN0aW9ucyB3aGljaCBhcmUgZm91bmQgb25seSBvbiBBUk0gYW5kIFBvd2VyUEMgcGxhdGZvcm1zLiBUaGUgYHBoeV9maXh1cF9saXN0YCBpcyBhbHdheXMgZW1wdHkgb24gYW1kNjQgZHVyaW5nIHJ1bnRpbWUuIFNpbmNlIGl0J3MgZW1wdHksIGFuZCB0aGUgbGlzdCBpcyByZWFkLW9ubHkgYWZ0ZXIgaW5pdCwgYHBoeV9zY2FuX2ZpeHVwc2AgZG9lcyBub3RoaW5nIG1vcmUgdGhhbiByZXR1cm4gMC4gVGhlIHJlbW92YWwgb2YgdGhlIG11dGV4IGlzIG5vdCBhbiBpc3N1ZSBiZWNhdXNlIHRoZXJlIGlzIG5vIHJlZ2lzdHJhdGlvbiBoYXBwZW5pbmcgYWZ0ZXIgaW5pdGlhbGl6YXRpb24uXG5cbkVmZmVjdGl2ZWx5LCBvbiBhbWQ2NCwgdGhlIGZ1bmN0aW9uYWxpdHkgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggaXMgYSBuby1vcDsgdGhlIGNvZGUgcGF0aHMgcmVsYXRlZCB0byBmaXh1cHMgYXJlIG5vdCBleGVjdXRlZC4gVGhlIGNoYW5nZSBpcyBzYWZlIGZvciBhbWQ2NCwgYXMgdGhlcmUgYXJlIG5vIGNhbGxzIGFuZCBubyBkZXBlbmRlbmNpZXMgb24gYW1kNjQuIFRoZXJlZm9yZSwgdGhlIHBhdGNoIGFwcGVhcnMgdG8gYmUgYSBjbGVhbi11cCBhbmQgcmVmYWN0b3JpbmcsIHJlbGV2YW50IG9ubHkgdG8gc3BlY2lmaWMsIG5vbi1hbWQ2NCBhcmNoaXRlY3R1cmVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzg4NiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4NDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6MjE6NDUuMDg5MTcwMDQ0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjA1Mzg4NjIxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeV9yZWdpc3Rlcl9maXh1cFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdD01Mjc9VGhlIHBsYXRmb3JtIGNvZGUgY2FuIHJlZ2lzdGVyIHRoZSBmaXh1cCB1c2luZyBvbmUgb2Y6OlxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0LTUyOC1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdDo1Mjk6IGludCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZCh1MzIgcGh5X3VpZCwgdTMyIHBoeV91aWRfbWFzayxcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdC01MzAtXFx0XFx0aW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSk7XFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3Q6NTMxOiBpbnQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZChjb25zdCBjaGFyICpwaHlfaWQsXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3QtNTMyLVxcdFxcdGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpO1xcbi0tXFxuYXJjaC9hcm0vbWFjaC1pbXgvbWFjaC1pbXg2cS5jPTcxPXN0YXRpYyB2b2lkIF9faW5pdCBpbXg2cV9lbmV0X3BoeV9pbml0KHZvaWQpXFxuLS1cXG5hcmNoL2FybS9tYWNoLWlteC9tYWNoLWlteDZxLmMtNzMtXFx0aWYgKElTX0JVSUxUSU4oQ09ORklHX1BIWUxJQikpIHtcXG5hcmNoL2FybS9tYWNoLWlteC9tYWNoLWlteDZxLmM6NzQ6XFx0XFx0cGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQoUEhZX0lEX0tTWjkwMjEsIE1JQ1JFTF9QSFlfSURfTUFTSyxcXG5hcmNoL2FybS9tYWNoLWlteC9tYWNoLWlteDZxLmMtNzUtXFx0XFx0XFx0XFx0a3N6OTAyMXJuX3BoeV9maXh1cCk7XFxuLS1cXG5hcmNoL2FybS9tYWNoLWlteC9tYWNoLWlteDdkLmM9MzA9c3RhdGljIHZvaWQgX19pbml0IGlteDdkX2VuZXRfcGh5X2luaXQodm9pZClcXG4tLVxcbmFyY2gvYXJtL21hY2gtaW14L21hY2gtaW14N2QuYy0zMi1cXHRpZiAoSVNfQlVJTFRJTihDT05GSUdfUEhZTElCKSkge1xcbmFyY2gvYXJtL21hY2gtaW14L21hY2gtaW14N2QuYzozMzpcXHRcXHRwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZChQSFlfSURfQkNNNTQyMjAsIDB4ZmZmZmZmZmYsXFxuYXJjaC9hcm0vbWFjaC1pbXgvbWFjaC1pbXg3ZC5jLTM0LVxcdFxcdFxcdFxcdFxcdCAgIGJjbTU0MjIwX3BoeV9maXh1cCk7XFxuLS1cXG5hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jPTI1OD1zdGF0aWMgdm9pZCBfX2luaXQgYXB4NGRldmtpdF9pbml0KHZvaWQpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jLTI2Mi1cXHRpZiAoSVNfQlVJTFRJTihDT05GSUdfUEhZTElCKSlcXG5hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jOjI2MzpcXHRcXHRwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZChQSFlfSURfS1NaODA1MSwgTUlDUkVMX1BIWV9JRF9NQVNLLFxcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmMtMjY0LVxcdFxcdFxcdFxcdFxcdCAgIGFweDRkZXZraXRfcGh5X2ZpeHVwKTtcXG4tLVxcbmFyY2gvYXJtL21hY2gtb3Jpb241eC9kbnMzMjMtc2V0dXAuYz02MTI9c3RhdGljIHZvaWQgX19pbml0IGRuczMyM19pbml0KHZvaWQpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvZG5zMzIzLXNldHVwLmMtNjc3LVxcdFxcdFxcdGJyZWFrO1xcbmFyY2gvYXJtL21hY2gtb3Jpb241eC9kbnMzMjMtc2V0dXAuYzo2Nzg6XFx0XFx0cGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQoTUFSVkVMTF9QSFlfSURfODhFMTExOCxcXG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvZG5zMzIzLXNldHVwLmMtNjc5LVxcdFxcdFxcdFxcdFxcdCAgIE1BUlZFTExfUEhZX0lEX01BU0ssXFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzg1eHgvbXBjODV4eF9tZHMuYz0yODI9c3RhdGljIGludCBfX2luaXQgYm9hcmRfZml4dXBzKHZvaWQpXFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzg1eHgvbXBjODV4eF9tZHMuYy0yOTYtXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84NXh4L21wYzg1eHhfbWRzLmM6Mjk3OlxcdFxcdHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWQocGh5X2lkLCBtcGM4NTY4X2ZpeHVwXzEyNV9jbG9jayk7XFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84NXh4L21wYzg1eHhfbWRzLmM6Mjk4OlxcdFxcdHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWQocGh5X2lkLCBtcGM4NTY4X21kc19waHlfZml4dXBzKTtcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzg1eHgvbXBjODV4eF9tZHMuYy0yOTktXFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzg1eHgvbXBjODV4eF9tZHMuYy0zMDItXFx0XFx0XFx0KHVuc2lnbmVkIGxvbmcgbG9uZylyZXMuc3RhcnQsIDcpO1xcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODV4eC9tcGM4NXh4X21kcy5jOjMwMzpcXHRcXHRwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX2lkKHBoeV9pZCwgbXBjODU2OF9tZHNfcGh5X2ZpeHVwcyk7XFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84NXh4L21wYzg1eHhfbWRzLmMtMzA0LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jPTE2PXN0cnVjdCBwaHlfZml4dXAge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTI0LS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYzoyNTogKiBwaHlfcmVnaXN0ZXJfZml4dXAgLSBjcmVhdGVzIGEgbmV3IHBoeV9maXh1cCBhbmQgYWRkcyBpdCB0byB0aGUgbGlzdFxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYy0yNi0gKiBAYnVzX2lkOiBBIHN0cmluZyB3aGljaCBtYXRjaGVzIHBoeWRldi1cXHUwMDNlbWRpby5kZXYuYnVzX2lkIChvciBQSFlfQU5ZX0lEKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTMyLSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYzozMzpzdGF0aWMgdm9pZCBfX2luaXQgcGh5X3JlZ2lzdGVyX2ZpeHVwKGNvbnN0IGNoYXIgKmJ1c19pZCwgdTMyIHBoeV91aWQsXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTM0LVxcdFxcdFxcdFxcdCAgICAgIHUzMiBwaHlfdWlkX21hc2ssXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMtNTEtLyogUmVnaXN0ZXJzIGEgZml4dXAgdG8gYmUgcnVuIG9uIGFueSBQSFkgd2l0aCB0aGUgVUlEIGluIHBoeV91aWQgKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmM6NTI6dm9pZCBfX2luaXQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQodTMyIHBoeV91aWQsIHUzMiBwaHlfdWlkX21hc2ssXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTUzLVxcdFxcdFxcdFxcdCAgICAgICBpbnQgKCpydW4pKHN0cnVjdCBwaHlfZGV2aWNlICopKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYy01NC17XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jOjU1OlxcdHBoeV9yZWdpc3Rlcl9maXh1cChOVUxMLCBwaHlfdWlkLCBwaHlfdWlkX21hc2ssIHJ1bik7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTU2LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYy01OC0vKiBSZWdpc3RlcnMgYSBmaXh1cCB0byBiZSBydW4gb24gdGhlIFBIWSB3aXRoIGlkIHN0cmluZyBidXNfaWQgKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmM6NTk6dm9pZCBfX2luaXQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZChjb25zdCBjaGFyICpidXNfaWQsXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTYwLVxcdFxcdFxcdFxcdCAgICAgIGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9maXh1cC5jLTYxLXtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmM6NjI6XFx0cGh5X3JlZ2lzdGVyX2ZpeHVwKGJ1c19pZCwgMCwgMCwgcnVuKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2ZpeHVwLmMtNjMtfVxcbi0tXFxuaW5jbHVkZS9saW51eC9waHkuaD0yNDIyPXZvaWQgcGh5X3Jlc29sdmVfcGF1c2UodW5zaWduZWQgbG9uZyAqbG9jYWxfYWR2LCB1bnNpZ25lZCBsb25nICpwYXJ0bmVyX2FkdixcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5LmgtMjQyNC1cXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjI0MjU6dm9pZCBfX2luaXQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZChjb25zdCBjaGFyICpidXNfaWQsXFxuaW5jbHVkZS9saW51eC9waHkuaC0yNDI2LVxcdFxcdFxcdFxcdCAgICAgIGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpO1xcbmluY2x1ZGUvbGludXgvcGh5Lmg6MjQyNzp2b2lkIF9faW5pdCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZCh1MzIgcGh5X3VpZCwgdTMyIHBoeV91aWRfbWFzayxcXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTI0MjgtXFx0XFx0XFx0XFx0ICAgICAgIGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDoyMTo0Ni42OTQ1NzE5OTVaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NDYxNjM0MzQ1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gUEhZIEZpeHVwcyoqXG5cbk9rYXksIHNvIEkgbmVlZCBhIHJlZnJlc2hlciBvbiBQSFkgZml4dXBzLiBMZXQncyBzZWUuLi4gdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyB0aGUgZG9jdW1lbnRhdGlvbi4gU3BlY2lmaWNhbGx5LCBJJ2xsIGhlYWQgb3ZlciB0byBgRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3RgLiBUaGF0J3Mgd2hlcmUgdGhlIGNvcmUgbmV0d29ya2luZyBkb2N1bWVudGF0aW9uIGxpdmVzLCBzbyBpdCdzIGEgc2FmZSBiZXQgdGhhdCBQSFktcmVsYXRlZCBpbmZvcm1hdGlvbiB3aWxsIGJlIHRoZXJlLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgYSBzb2xpZCBvdmVydmlldyBvZiB3aGF0IHRoZXNlIGZpeHVwcyBhY3R1YWxseSAqZG8qLCB0aGUgcmF0aW9uYWxlIGJlaGluZCB0aGVtLCBhbmQgaG9wZWZ1bGx5LCBzb21lIGV4YW1wbGVzIG9mIGNvbW1vbiBzY2VuYXJpb3Mgd2hlcmUgdGhleSdyZSBuZWNlc3NhcnkuIEknbSBhbHNvIGhvcGluZyBmb3IgbGlua3MgdG8gcmVsZXZhbnQgY29kZSwgbWF5YmUgc29tZSBkaXNjdXNzaW9ucyBvbiBiZXN0IHByYWN0aWNlcywgYW5kIHBvdGVudGlhbGx5IHNvbWUgcG9pbnRlcnMgdG8gdGhlIGtlcm5lbCBpbmZyYXN0cnVjdHVyZSBpbnZvbHZlZC4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBmaWd1cmluZyBvdXQgdGhlIGRlc2lnbiBwcmluY2lwbGVzIGJlaGluZCB0aGUgZml4dXBzLi4uIHRoZSBnZW5lcmFsIG1ldGhvZG9sb2d5IGZvciBhZGRyZXNzaW5nIGlzc3VlcyB3aXRoIGRpZmZlcmVudCBQSFkgaW1wbGVtZW50YXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDE4NCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDIwOjIxOjUxLjMxMDkxODI5NVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDU5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdFwiLFxuICBcIkZpcnN0TGluZVwiOiA1MTUsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1MTU6XFx0Zml4dXBzIHRvIGJlIHJ1biB3aGVuIHRoZSBQSFkgaXMgYnJvdWdodCB1cCAob3Igc3Vic2VxdWVudGx5IHJlc2V0KS5cXG4gNTE2OlxcdFxcbiA1MTc6XFx0V2hlbiB0aGUgUEhZIExheWVyIGJyaW5ncyB1cCBhIFBIWSBpdCBjaGVja3MgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgZml4dXBzXFxuIDUxODpcXHRyZWdpc3RlcmVkIGZvciBpdCwgbWF0Y2hpbmcgYmFzZWQgb24gVUlEIChjb250YWluZWQgaW4gdGhlIFBIWSBkZXZpY2UncyBwaHlfaWRcXG4gNTE5OlxcdGZpZWxkKSBhbmQgdGhlIGJ1cyBpZGVudGlmaWVyIChjb250YWluZWQgaW4gcGh5ZGV2LVxcdTAwM2VkZXYuYnVzX2lkKS4gIEJvdGggbXVzdFxcbiA1MjA6XFx0bWF0Y2gsIGhvd2V2ZXIgdHdvIGNvbnN0YW50cywgUEhZX0FOWV9JRCBhbmQgUEhZX0FOWV9VSUQsIGFyZSBwcm92aWRlZCBhc1xcbiA1MjE6XFx0d2lsZGNhcmRzIGZvciB0aGUgYnVzIElEIGFuZCBVSUQsIHJlc3BlY3RpdmVseS5cXG4gNTIyOlxcdFxcbiA1MjM6XFx0V2hlbiBhIG1hdGNoIGlzIGZvdW5kLCB0aGUgUEhZIGxheWVyIHdpbGwgaW52b2tlIHRoZSBydW4gZnVuY3Rpb24gYXNzb2NpYXRlZFxcbiA1MjQ6XFx0d2l0aCB0aGUgZml4dXAuICBUaGlzIGZ1bmN0aW9uIGlzIHBhc3NlZCBhIHBvaW50ZXIgdG8gdGhlIHBoeV9kZXZpY2Ugb2ZcXG4gNTI1OlxcdGludGVyZXN0LiAgSXQgc2hvdWxkIHRoZXJlZm9yZSBvbmx5IG9wZXJhdGUgb24gdGhhdCBQSFkuXFxuIDUyNjpcXHRcXG4gNTI3OlxcdFRoZSBwbGF0Zm9ybSBjb2RlIGNhbiByZWdpc3RlciB0aGUgZml4dXAgdXNpbmcgb25lIG9mOjpcXG4gNTI4OlxcdFxcbiA1Mjk6XFx0IGludCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX3VpZCh1MzIgcGh5X3VpZCwgdTMyIHBoeV91aWRfbWFzayxcXG4gNTMwOlxcdFxcdFxcdGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpO1xcbiA1MzE6XFx0IGludCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX2lkKGNvbnN0IGNoYXIgKnBoeV9pZCxcXG4gNTMyOlxcdFxcdFxcdGludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpO1xcbiA1MzM6XFx0XFxuIDUzNDpcXHRTdGFuZGFyZHNcXG4gNTM1OlxcdD09PT09PT09PVxcbiA1MzY6XFx0XFxuIDUzNzpcXHRJRUVFIFN0YW5kYXJkIDgwMi4zOiBDU01BL0NEIEFjY2VzcyBNZXRob2QgYW5kIFBoeXNpY2FsIExheWVyIFNwZWNpZmljYXRpb25zLCBTZWN0aW9uIFR3bzpcXG4gNTM4OlxcdGh0dHA6Ly9zdGFuZGFyZHMuaWVlZS5vcmcvZ2V0aWVlZTgwMi9kb3dubG9hZC84MDIuMy0yMDA4X3NlY3Rpb24yLnBkZlxcbiA1Mzk6XFx0XFxuIDU0MDpcXHRSR01JSSB2MS4zOlxcbiA1NDE6XFx0aHR0cDovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxNjAzMDMyMTI2MjkvaHR0cDovL3d3dy5ocC5jb20vcm5kL3BkZnMvUkdNSUl2MV8zLnBkZlxcbiA1NDI6XFx0XFxuIDU0MzpcXHRSR01JSSB2Mi4wOlxcbiA1NDQ6XFx0aHR0cDovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxNjAzMDMxNzEzMjgvaHR0cDovL3d3dy5ocC5jb20vcm5kL3BkZnMvUkdNSUl2Ml8wX2ZpbmFsX2hwLnBkZlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDoyMTo1MS4zMTEwMDE1MTVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTE3MjQ3MTY1OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgUEhZIEZpeHVwIFBhdGNoIGZvciBGdXp6aW5nIFN1aXRhYmlsaXR5KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiB0aGlzIGNvbW1pdC4gSXQgYXBwZWFycyB0byBpbnZvbHZlIGNoYW5nZXMgdG8gUEhZIChQaHlzaWNhbCBMYXllcikgZGV2aWNlIGZpeHVwcyB3aXRoaW4gdGhlIG5ldHdvcmtpbmcgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byB0aGUgcmVnaXN0cmF0aW9uIGFuZCBleGVjdXRpb24gb2YgdGhlc2UgZml4dXBzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBmbG93IGFuZCBpZGVudGlmeSBpZiBhbnkgY29kZSBtb2RpZmljYXRpb25zIGludHJvZHVjZSBuZXcgdnVsbmVyYWJpbGl0aWVzIG9yIHJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHMgZm9yIHRoZSBhbWQ2NCBhcmNoaXRlY3R1cmUsIHdoaWNoIGlzIG91ciB0YXJnZXQuXG5cbkkgbmVlZCB0byBjb25maXJtIHRoZSBjaGFuZ2VzOiBXZSBoYXZlIGFsdGVyYXRpb25zIGluIGBkcml2ZXJzL25ldC9waHkvTWFrZWZpbGVgLCBgcGh5X2RldmljZS5jYCwgYW5kIGEgKm5ldyogYHBoeV9maXh1cC5jYCBmaWxlLCBhbG9uZyB3aXRoIGFkanVzdG1lbnRzIHRvIGBwaHlsaWItaW50ZXJuYWwuaGAgYW5kIGBsaW51eC9waHkuaGAuIFRoaXMgc3VnZ2VzdHMgYSByZWZhY3RvcmluZyBvZiBmaXh1cCByZWdpc3RyYXRpb24gYW5kIGhhbmRsaW5nLiBJIG5vdGUgdGhlIHJlbW92YWwgb2YgYSBtdXRleCBpbiBgcGh5X3NjYW5fZml4dXBzYC4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgd2hldGhlciB0aGlzIGNyZWF0ZXMgYW55IHJhY2UgY29uZGl0aW9ucyBvciBuZXcgZXhlY3V0aW9uIGZsb3dzIG9uIGBhbWQ2NGAuXG5cblRoZSBjb3JlIHRyaWFnZSBwaGlsb3NvcGh5IHN0YXRlcyByZWFjaGFiaWxpdHkgaXMgdGhlIHByaW1hcnkgZ2F0ZS4gSSd2ZSBnb3QgdG8gZW5zdXJlIHRoZSBtb2RpZmllZCBjb2RlIGNhbiAqYWN0dWFsbHkqIGV4ZWN1dGUgaW4gb3VyIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVW5yZWFjaGFibGUgY29kZSAqbXVzdCBub3QqIGJlIGZ1enplZC5cblxuTXkgcHJpbWFyeSBmb2N1cyBpcyBvbiBgcGh5X3JlZ2lzdGVyX2ZpeHVwYCwgYHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfdWlkYCwgYHBoeV9yZWdpc3Rlcl9maXh1cF9mb3JfaWRgLCBhbmQgYHBoeV9uZWVkc19maXh1cGAuIEFyZSB0aGVzZSBmdW5jdGlvbnMgY2FsbGVkIG9uIGBhbWQ2NGA/IExldCdzIGNoZWNrLiBBaCwgaXQgbG9va3MgbGlrZSBgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWRgIGFuZCBgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZGAgYXJlIG9ubHkgY2FsbGVkIGZyb20gd2l0aGluIEFSTSBhbmQgUG93ZXJQQy1zcGVjaWZpYyBib2FyZCBpbml0aWFsaXphdGlvbiBjb2RlLiBUaGVzZSBhcmNoaXRlY3R1cmVzIGFyZSBub3QgcmVsZXZhbnQgdG8gb3VyIHRhcmdldCBvZiBhbWQ2NC4gQWRkaXRpb25hbGx5LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGRlZmluaXRpb24uIFRoZXkncmUgbWFya2VkIGFzIGBfX2luaXRgIGZ1bmN0aW9ucyBhbmQgbm90IGV4cG9ydGVkIHdoaWNoIGNvbmZpcm1zIG15IGluaXRpYWwgdGhvdWdodHMuIFRoZXJlZm9yZSwgdGhlc2UgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucyBhcmUgKm5ldmVyKiBjYWxsZWQsIG5vciBhdmFpbGFibGUgdG8gbG9hZCBvbiBgYW1kNjRgLlxuXG5JZiB0aGUgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucyBhcmUgbmV2ZXIgY2FsbGVkIG9uIGBhbWQ2NGAsIHRoZW4gdGhlIGBwaHlfZml4dXBfbGlzdGAgKm11c3QqIGFsd2F5cyBiZSBlbXB0eSBvbiBgYW1kNjRgLiBUaGlzIGlzIGNyaXRpY2FsLlxuXG5Ob3csIGxldCdzIGV4YW1pbmUgYHBoeV9zY2FuX2ZpeHVwc2AuIEl0J3MgY3J1Y2lhbCB0byBldmFsdWF0ZSBpZiB0aGUgcmVtb3ZhbCBvZiB0aGUgbXV0ZXggaW4gdGhpcyBmdW5jdGlvbiBvcGVucyBhbnkgc2VjdXJpdHkgaW1wbGljYXRpb25zIG9uIGBhbWQ2NGAuIEl0IHdpbGwgYmUgY2FsbGVkICppZiogYW55IFBIWSBpcyByZWdpc3RlcmVkIG9yIHNjYW5uZWQuIFNpbmNlIGBwaHlfZml4dXBfbGlzdGAgaXMgYWx3YXlzIGVtcHR5IG9uIGBhbWQ2NGAsIHRoZSBsb29wIGJvZHkgd2l0aGluIGBwaHlfc2Nhbl9maXh1cHNgIGlzIG5ldmVyIGV4ZWN1dGVkLiBJdCdzIGVmZmVjdGl2ZWx5IGp1c3QgYSBjaGVjayBmb3IgYW4gZW1wdHkgbGlzdCBhbmQgYSByZXR1cm4gMC4gVGhlIHBhdGNoIHJlbW92ZWQgYSBtdXRleCBpbiB0aGlzIGZ1bmN0aW9uLCBidXQgaXQgaXMgZW50aXJlbHkgaXJyZWxldmFudCBzaW5jZSBgcGh5X3NjYW5fZml4dXBzYCBkb2VzIHZpcnR1YWxseSBub3RoaW5nLlxuXG5Tbywgb24gYGFtZDY0YCwgd2hhdCBpcyByZWFjaGFibGU6XG4qICBgcGh5X3NjYW5fZml4dXBzKClgIGlzIGNhbGxlZCwgY2hlY2tzIHRoZSBlbXB0eSBgcGh5X2ZpeHVwX2xpc3RgLCBhbmQgcmV0dXJucyAwLlxuXG5CYXNlZCBvbiB0aGUgaW5zdHJ1Y3Rpb25zLCBzaW5jZSBhbGwgdGhlIG1vZGlmaWVkIGNvZGUgc3RyaWN0bHkgZmFsbHMgaW50byB0aGUgbmVnYXRpdmUgY3JpdGVyaWEgZGVzY3JpYmVkIChzcGVjaWZpY2FsbHkgXCJjb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmVcIiBhbmQgdGh1cyBcInVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoc1wiKSBBTkQgZ2l2ZW4gdGhlIHNwZWNpZmljIHJlYWNoYWJpbGl0eSBjcml0ZXJpYSwgZnV6emluZyB0aGlzIHBhdGNoIHdvdWxkIGJlIGEgd2FzdGUgb2YgdGltZSBhbmQgY29tcHV0YXRpb25hbCByZXNvdXJjZXMuIGBXb3J0aEZ1enppbmdgIG11c3QgYmUgc2V0IHRvIGBmYWxzZWAuXG5cbkZ1cnRoZXJtb3JlLCBJIGhhdmUgdmVyaWZpZWQgdGhpcyBjb25jbHVzaW9uIG1lZXRzIGFsbCByZXF1aXJlbWVudHMgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTA1MiwiT3V0cHV0VG9rZW5zIjoxOTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzQxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6MjI6MDMuMDM1NzIwODkxWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY3OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZXh0cmFjdHMgUEhZIGZpeHVwIHJlZ2lzdHJhdGlvbiBpbnRvIGRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYyBhbmQgbWFya3MgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucyBhcyBfX2luaXQuIFRoZSBvbmx5IGNhbGxlcnMgb2YgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQoKSBhbmQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZCgpIGluIHRoZSBrZXJuZWwgYXJlIHBsYXRmb3JtLXNwZWNpZmljIGVhcmx5LWJvb3QgY29kZSBvbiBBUk0gKGFyY2gvYXJtL21hY2gtKikgYW5kIFBvd2VyUEMgKGFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvKiksIHdpdGggbm8gY2FsbGVycyBvbiBhbWQ2NC4gTmVpdGhlciBmdW5jdGlvbiBpcyBleHBvcnRlZCB0byBtb2R1bGVzLiBDb25zZXF1ZW50bHksIG9uIGFtZDY0LCBwaHlfZml4dXBfbGlzdCBpcyBwZXJtYW5lbnRseSBlbXB0eSwgcmVuZGVyaW5nIHRoZSBtYXRjaGluZyBsb2dpYyAocGh5X25lZWRzX2ZpeHVwKSBhbmQgZml4dXAgZXhlY3V0aW9uIHBhdGggaW5zaWRlIHBoeV9zY2FuX2ZpeHVwcygpIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4gRnV6emluZyBvbiBhbWQ2NCBjYW5ub3QgZXhlcmNpc2UgdGhlIG1vZGlmaWVkIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZXh0cmFjdHMgUEhZIGZpeHVwIHJlZ2lzdHJhdGlvbiBpbnRvIGRyaXZlcnMvbmV0L3BoeS9waHlfZml4dXAuYyBhbmQgbWFya3MgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucyBhcyBfX2luaXQuIFRoZSBvbmx5IGNhbGxlcnMgb2YgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQoKSBhbmQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl9pZCgpIGluIHRoZSBrZXJuZWwgYXJlIHBsYXRmb3JtLXNwZWNpZmljIGVhcmx5LWJvb3QgY29kZSBvbiBBUk0gKGFyY2gvYXJtL21hY2gtKikgYW5kIFBvd2VyUEMgKGFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvKiksIHdpdGggbm8gY2FsbGVycyBvbiBhbWQ2NC4gTmVpdGhlciBmdW5jdGlvbiBpcyBleHBvcnRlZCB0byBtb2R1bGVzLiBDb25zZXF1ZW50bHksIG9uIGFtZDY0LCBwaHlfZml4dXBfbGlzdCBpcyBwZXJtYW5lbnRseSBlbXB0eSwgcmVuZGVyaW5nIHRoZSBtYXRjaGluZyBsb2dpYyAocGh5X25lZWRzX2ZpeHVwKSBhbmQgZml4dXAgZXhlY3V0aW9uIHBhdGggaW5zaWRlIHBoeV9zY2FuX2ZpeHVwcygpIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4gRnV6emluZyBvbiBhbWQ2NCBjYW5ub3QgZXhlcmNpc2UgdGhlIG1vZGlmaWVkIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6MjI6MDMuMDM1NzUxNzQxWiIsIlNlcSI6MjMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowlpcb7[1] Phase: Running StartedAt: 2026-09-13 20:22:14 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlpcb7[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-13 20:22:14 +0000 UTC FinishedAt: 2026-09-13 20:22:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}