Name: series-workflow4vhl7 Phase: Failed StartedAt: 2026-09-01 02:21:33 +0000 UTC FinishedAt: 2026-09-01 02:23:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4vhl7[0] Phase: Succeeded StartedAt: 2026-09-01 02:21:33 +0000 UTC FinishedAt: 2026-09-01 02:23:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4vhl7[0].run-triage Phase: Succeeded StartedAt: 2026-09-01 02:21:33 +0000 UTC FinishedAt: 2026-09-01 02:23:30 +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+CgkJCTx0ZD4yMDI2LzA5LzAxIDAyOjIyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMgdG8gYWRkIHNvZnR3YXJlIG5ldHN0YXRzIGFjY291bnRpbmcuIFRoaXMgZHJpdmVyIGlzIHNwZWNpZmljIHRvIFF1YWxjb21tIFNvQ3MgKGUuZy4gTVNNODkxNi9NU004OTc0KSByZXF1aXJpbmcgUXVhbGNvbW0gU01FTSBzdGF0ZSBhbmQgRE1BIGVuZ2luZSBoYXJkd2FyZSwgd2hpY2ggaXMgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgdGVzdCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gSGVuY2UsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMjoyMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDNhYjI0Y2EwMTY4ZTcxMDliOGE1YjFmNTM3ZTRjYmViOGVhZjZiYzlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCAxIDAyOjIyOjUxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jIGIvZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmNcbmluZGV4IGNjNmFjZThkNjQzNzEuLjViY2FjMmNjYWFiZDYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmNcbkBAIC0xNzcsOCAmIzQzOzE3NywxMiBAQCBzdGF0aWMgdm9pZCBiYW1fZG11eF90eF9jYWxsYmFjayh2b2lkICpkYXRhKVxuIHtcbiBcdHN0cnVjdCBiYW1fZG11eF9za2JfZG1hICpza2JfZG1hID0gZGF0YTtcbiBcdHN0cnVjdCBza19idWZmICpza2IgPSBza2JfZG1hLVx1MDAzZXNrYjtcbiYjNDM7XHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2ID0gc2tiLVx1MDAzZWRldjtcbiBcbiBcdGJhbV9kbXV4X3R4X2RvbmUoc2tiX2RtYSk7XG4mIzQzO1x0aWYgKG5ldGRldilcbiYjNDM7XHRcdGRldl9zd19uZXRzdGF0c190eF9hZGQobmV0ZGV2LCAxLFxuJiM0MztcdFx0XHRcdCAgICAgICAoKHN0cnVjdCBiYW1fZG11eF9oZHIgKilza2ItXHUwMDNlZGF0YSktXHUwMDNlbGVuKTtcbiBcdGRldl9jb25zdW1lX3NrYl9hbnkoc2tiKTtcbiB9XG4gXG5AQCAtNDAyLDYgJiM0Mzs0MDYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGJhbV9kbXV4X29wcyA9IHtcbiBcdC5uZG9fb3Blblx0PSBiYW1fZG11eF9uZXRkZXZfb3BlbixcbiBcdC5uZG9fc3RvcFx0PSBiYW1fZG11eF9uZXRkZXZfc3RvcCxcbiBcdC5uZG9fc3RhcnRfeG1pdFx0PSBiYW1fZG11eF9uZXRkZXZfc3RhcnRfeG1pdCxcbiYjNDM7XHQubmRvX2dldF9zdGF0czY0XHQ9IGRldl9nZXRfdHN0YXRzNjQsXG4gfTtcbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGRldmljZV90eXBlIHd3YW5fdHlwZSA9IHtcbkBAIC00MjEsNiAmIzQzOzQyNiw3IEBAIHN0YXRpYyB2b2lkIGJhbV9kbXV4X25ldGRldl9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0ZGV2LVx1MDAzZW5lZWRlZF9oZWFkcm9vbSA9IHNpemVvZihzdHJ1Y3QgYmFtX2RtdXhfaGRyKTtcbiBcdGRldi1cdTAwM2VuZWVkZWRfdGFpbHJvb20gPSBzaXplb2YodTMyKTsgLyogd29yZC1hbGlnbmVkICovXG4gXHRkZXYtXHUwMDNldHhfcXVldWVfbGVuID0gREVGQVVMVF9UWF9RVUVVRV9MRU47XG4mIzQzO1x0ZGV2LVx1MDAzZXBjcHVfc3RhdF90eXBlID0gTkVUREVWX1BDUFVfU1RBVF9UU1RBVFM7XG4gXG4gXHQvKiBUaGlzIHBlcm0gYWRkciB3aWxsIGJlIHVzZWQgYXMgaW50ZXJmYWNlIGlkZW50aWZpZXIgYnkgSVB2NiAqL1xuIFx0ZGV2LVx1MDAzZWFkZHJfYXNzaWduX3R5cGUgPSBORVRfQUREUl9SQU5ET007XG5AQCAtNTMzLDYgJiM0Mzs1MzksNyBAQCBzdGF0aWMgdm9pZCBiYW1fZG11eF9jbWRfZGF0YShzdHJ1Y3QgYmFtX2RtdXhfc2tiX2RtYSAqc2tiX2RtYSlcbiBcdFx0YnJlYWs7XG4gXHR9XG4gXG4mIzQzO1x0ZGV2X3N3X25ldHN0YXRzX3J4X2FkZChuZXRkZXYsIHNrYi1cdTAwM2VsZW4pO1xuIFx0bmV0aWZfcmVjZWl2ZV9za2Ioc2tiKTtcbiB9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMDI6MjI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMgdG8gYWRkIHNvZnR3YXJlIG5ldHN0YXRzIGFjY291bnRpbmcuIFRoaXMgZHJpdmVyIGlzIHNwZWNpZmljIHRvIFF1YWxjb21tIFNvQ3MgKGUuZy4gTVNNODkxNi9NU004OTc0KSByZXF1aXJpbmcgUXVhbGNvbW0gU01FTSBzdGF0ZSBhbmQgRE1BIGVuZ2luZSBoYXJkd2FyZSwgd2hpY2ggaXMgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgdGVzdCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gSGVuY2UsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDNhYjI0Y2EwMTY4ZTcxMDliOGE1YjFmNTM3ZTRjYmViOGVhZjZiYzkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIFNlcCAxIDAyOjIyOjUxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMgYi9kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYwppbmRleCBjYzZhY2U4ZDY0MzcxLi41YmNhYzJjY2FhYmQ2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYwpAQCAtMTc3LDggJiM0MzsxNzcsMTIgQEAgc3RhdGljIHZvaWQgYmFtX2RtdXhfdHhfY2FsbGJhY2sodm9pZCAqZGF0YSkKIHsKIAlzdHJ1Y3QgYmFtX2RtdXhfc2tiX2RtYSAqc2tiX2RtYSA9IGRhdGE7CiAJc3RydWN0IHNrX2J1ZmYgKnNrYiA9IHNrYl9kbWEtJmd0O3NrYjsKJiM0MzsJc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiA9IHNrYi0mZ3Q7ZGV2OwogCiAJYmFtX2RtdXhfdHhfZG9uZShza2JfZG1hKTsKJiM0MzsJaWYgKG5ldGRldikKJiM0MzsJCWRldl9zd19uZXRzdGF0c190eF9hZGQobmV0ZGV2LCAxLAomIzQzOwkJCQkgICAgICAgKChzdHJ1Y3QgYmFtX2RtdXhfaGRyICopc2tiLSZndDtkYXRhKS0mZ3Q7bGVuKTsKIAlkZXZfY29uc3VtZV9za2JfYW55KHNrYik7CiB9CiAKQEAgLTQwMiw2ICYjNDM7NDA2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBiYW1fZG11eF9vcHMgPSB7CiAJLm5kb19vcGVuCT0gYmFtX2RtdXhfbmV0ZGV2X29wZW4sCiAJLm5kb19zdG9wCT0gYmFtX2RtdXhfbmV0ZGV2X3N0b3AsCiAJLm5kb19zdGFydF94bWl0CT0gYmFtX2RtdXhfbmV0ZGV2X3N0YXJ0X3htaXQsCiYjNDM7CS5uZG9fZ2V0X3N0YXRzNjQJPSBkZXZfZ2V0X3RzdGF0czY0LAogfTsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZpY2VfdHlwZSB3d2FuX3R5cGUgPSB7CkBAIC00MjEsNiAmIzQzOzQyNiw3IEBAIHN0YXRpYyB2b2lkIGJhbV9kbXV4X25ldGRldl9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCWRldi0mZ3Q7bmVlZGVkX2hlYWRyb29tID0gc2l6ZW9mKHN0cnVjdCBiYW1fZG11eF9oZHIpOwogCWRldi0mZ3Q7bmVlZGVkX3RhaWxyb29tID0gc2l6ZW9mKHUzMik7IC8qIHdvcmQtYWxpZ25lZCAqLwogCWRldi0mZ3Q7dHhfcXVldWVfbGVuID0gREVGQVVMVF9UWF9RVUVVRV9MRU47CiYjNDM7CWRldi0mZ3Q7cGNwdV9zdGF0X3R5cGUgPSBORVRERVZfUENQVV9TVEFUX1RTVEFUUzsKIAogCS8qIFRoaXMgcGVybSBhZGRyIHdpbGwgYmUgdXNlZCBhcyBpbnRlcmZhY2UgaWRlbnRpZmllciBieSBJUHY2ICovCiAJZGV2LSZndDthZGRyX2Fzc2lnbl90eXBlID0gTkVUX0FERFJfUkFORE9NOwpAQCAtNTMzLDYgJiM0Mzs1MzksNyBAQCBzdGF0aWMgdm9pZCBiYW1fZG11eF9jbWRfZGF0YShzdHJ1Y3QgYmFtX2RtdXhfc2tiX2RtYSAqc2tiX2RtYSkKIAkJYnJlYWs7CiAJfQogCiYjNDM7CWRldl9zd19uZXRzdGF0c19yeF9hZGQobmV0ZGV2LCBza2ItJmd0O2xlbik7CiAJbmV0aWZfcmVjZWl2ZV9za2Ioc2tiKTsKIH0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMjoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTM1CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgV1dBTiBEcml2ZXIgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHBhdGNoIGFuZCB0aGUgZHJpdmVyIGl0JiMzOTtzIHRvdWNoaW5nIOKAkyBzcGVjaWZpY2FsbHksIGBkcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGdldCBhIHNvbGlkIG92ZXJ2aWV3IG9mIGl0cyBjb250ZXh0LiBGaXJzdCwgSSB3YW50IHRvIGNvbmZpcm0gdGhlIGZpbGUmIzM5O3MgbG9jYXRpb24gYW5kIHdoYXQgaXRzIEtjb25maWcgYW5kIGhhcmR3YXJlIGRlcGVuZGVuY2llcyBhcmUuIFRoYXQgd2lsbCBnaXZlIG1lIGEgdml0YWwgdW5kZXJzdGFuZGluZyBvZiB0aGUgY29tcG9uZW50cyBpbnZvbHZlZC4KCkkmIzM5O2xsIHN0YXJ0IHdpdGggYSBxdWljayBjaGVjayBvZiBgcWNvbV9iYW1fZG11eC5jYCBpdHNlbGYuIFRoZW4sIEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlIHdpdGhpbiB0aGF0IGRpcmVjdG9yeSwgYGRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZ2AuIEkmIzM5O2xsIHVzZSBgZ3JlcHBlcmAgKG9yIGByZWFkLWZpbGVgIGlmIHRoYXQmIzM5O3MgbW9yZSBhcHByb3ByaWF0ZSkgdG8gcXVpY2tseSBwYXJzZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBhbnkgb3RoZXIgcGVydGluZW50IGNvbW1lbnRzIG9yIGNvZGUgZnJhZ21lbnRzIHdpdGhpbiB0aG9zZSBmaWxlcy4gVGhhdCYjMzk7bGwgc2V0IHRoZSBzdGFnZSBmb3IgYSBtb3JlIHRob3JvdWdoIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAyOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBRQ09NX0JBTV9ETVVYfFFDT01fQkFNX0RNVVgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93d2FuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZz01Mz1jb25maWcgTUhJX1dXQU5fTUJJTVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy02NC1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzo2NTpjb25maWcgUUNPTV9CQU1fRE1VWFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTY2LVx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gQkFNLURNVVggV1dBTiBuZXR3b3JrIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vTWFrZWZpbGU9MTI9b2JqLSQoQ09ORklHX01ISV9XV0FOX01CSU0pICYjNDM7PSBtaGlfd3dhbl9tYmltLm9cbmRyaXZlcnMvbmV0L3d3YW4vTWFrZWZpbGU6MTM6b2JqLSQoQ09ORklHX1FDT01fQkFNX0RNVVgpICYjNDM7PSBxY29tX2JhbV9kbXV4Lm9cbmRyaXZlcnMvbmV0L3d3YW4vTWFrZWZpbGUtMTQtb2JqLSQoQ09ORklHX1JQTVNHX1dXQU5fQ1RSTCkgJiM0Mzs9IHJwbXNnX3d3YW5fY3RybC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMDI6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA5NgoJCQkJCQkJb3V0cHV0OiA4MgoJCQkJCQkJdGhvdWdodHM6IDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aGluZ3M6CgoqKkRpZ2dpbmcgaW50byBXV0FOIENvbmZpZ3VyYXRpb24gYW5kIFFDT00gQkFNIERtdXgqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgd2l0aCB0aGlzIFdXQU4gc3R1ZmYuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBzZXQgdXAsIHNvIGZpcnN0LCBsZXQmIzM5O3MganVtcCBpbnRvIGBkcml2ZXJzL25ldC93d2FuL0tjb25maWdgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgNjUuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIG92ZXJ2aWV3IG9mIHRoZSBhdmFpbGFibGUgY2hvaWNlcyBhbmQgZGVwZW5kZW5jaWVzLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBmbGFncy4KCkFmdGVyIHRoYXQsIEkmIzM5O2xsIHN3aXRjaCBnZWFycyBhbmQgcmVhbGx5IGRpdmUgaW50byB0aGUgYHFjb21fYmFtX2RtdXhgIGRyaXZlci4gSSBuZWVkIHRvIHRyYWNlIGhvdyBpdCYjMzk7cyBiaW5kaW5nIHRvIHRoZSBzeXN0ZW0uIFdoYXQgZXhhY3QgaGFyZHdhcmUgcmVzb3VyY2VzIGRvZXMgaXQgcmVxdWlyZT8gQW5kIGFyZSB0aGVyZSBhbnkgc3BlY2lmaWMgcGxhdGZvcm0gZGVwZW5kZW5jaWVzPyBHZXR0aW5nIHRoaXMgbGV2ZWwgb2YgZGV0YWlsIGlzIGNyaXRpY2FsIHRvIHByb3Blcmx5IGludGVncmF0aW5nIGFuZCB1bmRlcnN0YW5kaW5nIGhvdyBpdCBmdW5jdGlvbnMgd2l0aGluIHRoZSBsYXJnZXIgc3lzdGVtLiBJJiMzOTttIGxvb2tpbmcgZm9yIGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgcm9sZSBhbmQgcHJlcmVxdWlzaXRlcyBiZWZvcmUgSSBtb3ZlIGZ1cnRoZXIgd2l0aCB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAyOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA2MDpcdCAgICAgICAgICBJRCAwLiBBZGRpdGlvbmFsIGxpbmtzIGNhbiBiZSBjcmVhdGVkIHZpYSB3d2FuIHJ0bmV0bGluayB0eXBlLlxuICA2MTpcdFxuICA2MjpcdCAgICAgICAgICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmVcbiAgNjM6XHQgICAgICAgICAgY2FsbGVkIG1oaV93d2FuX21iaW0uXG4gIDY0Olx0XG4gIDY1Olx0Y29uZmlnIFFDT01fQkFNX0RNVVhcbiAgNjY6XHRcdHRyaXN0YXRlIFwmIzM0O1F1YWxjb21tIEJBTS1ETVVYIFdXQU4gbmV0d29yayBkcml2ZXJcJiMzNDtcbiAgNjc6XHRcdGRlcGVuZHMgb24gKERNQV9FTkdJTkUgXHUwMDI2XHUwMDI2IFBNIFx1MDAyNlx1MDAyNiBRQ09NX1NNRU1fU1RBVEUpIHx8IENPTVBJTEVfVEVTVFxuICA2ODpcdFx0aGVscFxuICA2OTpcdFx0ICBUaGUgQkFNIERhdGEgTXVsdGlwbGV4ZXIgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBuZXR3b3JrIGRhdGEgY2hhbm5lbHNcbiAgNzA6XHRcdCAgb2YgbW9kZW1zIGludGVncmF0ZWQgaW50byBtYW55IG9sZGVyIFF1YWxjb21tIFNvQ3MsIGUuZy4gUXVhbGNvbW1cbiAgNzE6XHRcdCAgTVNNODkxNiBvciBNU004OTc0LiBUaGUgY29ubmVjdGlvbiBjYW4gYmUgZXN0YWJsaXNoZWQgdmlhIFFNSS9BVCBmcm9tXG4gIDcyOlx0XHQgIHVzZXJzcGFjZSB3aXRoIGNvbnRyb2wgcG9ydHMgYXZhaWxhYmxlIHRocm91Z2ggdGhlIFdXQU4gc3Vic3lzdGVtXG4gIDczOlx0XHQgIChDT05GSUdfUlBNU0dfV1dBTl9DVFJMKSBvciBRUlRSIG5ldHdvcmsgc29ja2V0cyAoQ09ORklHX1FSVFIpLlxuICA3NDpcdFxuICA3NTpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmVcbiAgNzY6XHRcdCAgY2FsbGVkIHFjb21fYmFtX2RtdXguXG4gIDc3Olx0XG4gIDc4Olx0Y29uZmlnIFJQTVNHX1dXQU5fQ1RSTFxuICA3OTpcdFx0dHJpc3RhdGUgXCYjMzQ7UlBNU0cgV1dBTiBjb250cm9sIGRyaXZlclwmIzM0O1xuICA4MDpcdFx0ZGVwZW5kcyBvbiBSUE1TR1xuICA4MTpcdFx0aGVscFxuICA4MjpcdFx0ICBSUE1TRyBXV0FOIENUUkwgYWxsb3dzIG1vZGVtcyBhdmFpbGFibGUgdmlhIFJQTVNHIGNoYW5uZWxzIHRvIGV4cG9zZVxuICA4MzpcdFx0ICBkaWZmZXJlbnQgbW9kZW0gcHJvdG9jb2xzL3BvcnRzIHRvIHVzZXJzcGFjZSwgaW5jbHVkaW5nIEFUIGFuZCBRTUkuXG4gIDg0Olx0XHQgIFRoZXNlIHByb3RvY29scyBjYW4gYmUgYWNjZXNzZWQgZGlyZWN0bHkgZnJvbSB1c2Vyc3BhY2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMjoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfcGxhdGZvcm1fZHJpdmVyfGJhbV9kbXV4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMjQtI2RlZmluZSBCQU1fRE1VWF9CVUZGRVJfU0laRVx0XHRTWl8yS1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MjU6I2RlZmluZSBCQU1fRE1VWF9IRFJfU0laRVx0XHRzaXplb2Yoc3RydWN0IGJhbV9kbXV4X2hkcilcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTI2LSNkZWZpbmUgQkFNX0RNVVhfTUFYX0RBVEFfU0laRVx0XHQoQkFNX0RNVVhfQlVGRkVSX1NJWkUgLSBCQU1fRE1VWF9IRFJfU0laRSlcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYz00MD1lbnVtIHtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy01MS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjUyOnN0cnVjdCBiYW1fZG11eF9oZHIge1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNTMtXHR1MTYgbWFnaWM7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNjAtXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo2MTpzdHJ1Y3QgYmFtX2RtdXhfc2tiX2RtYSB7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo2MjpcdHN0cnVjdCBiYW1fZG11eCAqZG11eDtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTYzLVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02Ni1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjY3OnN0cnVjdCBiYW1fZG11eCB7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02OC1cdHN0cnVjdCBkZXZpY2UgKmRldjtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy03Ny1cdHN0cnVjdCBkbWFfY2hhbiAqcngsICp0eDtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjc4Olx0c3RydWN0IGJhbV9kbXV4X3NrYl9kbWEgcnhfc2tic1tCQU1fRE1VWF9OVU1fU0tCXTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjc5Olx0c3RydWN0IGJhbV9kbXV4X3NrYl9kbWEgdHhfc2tic1tCQU1fRE1VWF9OVU1fU0tCXTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTgwLVx0c3BpbmxvY2tfdCB0eF9sb2NrOyAvKiBQcm90ZWN0IHR4X3NrYnMsIHR4X25leHRfc2tiICovXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtODktXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo5MDpzdHJ1Y3QgYmFtX2RtdXhfbmV0ZGV2IHtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjkxOlx0c3RydWN0IGJhbV9kbXV4ICpkbXV4O1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtOTItXHR1OCBjaDtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy05NC1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjk1OnN0YXRpYyB2b2lkIGJhbV9kbXV4X3BjX3ZvdGUoc3RydWN0IGJhbV9kbXV4ICpkbXV4LCBib29sIGVuYWJsZSlcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTk2LXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0xMDEtXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoxMDI6c3RhdGljIHZvaWQgYmFtX2RtdXhfcGNfYWNrKHN0cnVjdCBiYW1fZG11eCAqZG11eClcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTEwMy17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMTA4LVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MTA5OnN0YXRpYyBib29sIGJhbV9kbXV4X3NrYl9kbWFfbWFwKHN0cnVjdCBiYW1fZG11eF9za2JfZG1hICpza2JfZG1hLFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMTEwLVx0XHRcdFx0IGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcilcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0xMjMtXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoxMjQ6c3RhdGljIHZvaWQgYmFtX2RtdXhfc2tiX2RtYV91bm1hcChzdHJ1Y3QgYmFtX2RtdXhfc2tiX2RtYSAqc2tiX2RtYSxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTEyNS1cdFx0XHRcdCAgIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcilcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0xMzAtXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoxMzE6c3RhdGljIHZvaWQgYmFtX2RtdXhfdHhfd2FrZV9xdWV1ZXMoc3RydWN0IGJhbV9kbXV4ICpkbXV4KVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMTMyLXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0xNDQtXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoxNDU6c3RhdGljIHZvaWQgYmFtX2RtdXhfdHhfc3RvcF9xdWV1ZXMoc3RydWN0IGJhbV9kbXV4ICpkbXV4KVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMTQ2LXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0xNTgtXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoxNTk6c3RhdGljIHZvaWQgYmFtX2RtdXhfdHhfZG9uZShzdHJ1Y3QgYmFtX2RtdXhfc2tiX2RtYSAqc2tiX2RtYSlcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTE2MC17XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoxNjE6XHRzdHJ1Y3QgYmFtX2RtdXggKmRtdXggPSBza2JfZG1hLVx1MDAzZWRtdXg7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0xNjItXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTE2Ni1cdGlmIChza2JfZG1hLVx1MDAzZWFkZHIpXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoxNjc6XHRcdGJhbV9kbXV4X3NrYl9kbWFfdW5tYXAoc2tiX2RtYSwgRE1BX1RPX0RFVklDRSk7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0xNjgtXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMTcxLVx0aWYgKHNrYl9kbWEgPT0gXHUwMDI2ZG11eC1cdTAwM2V0eF9za2JzW2RtdXgtXHUwMDNldHhfbmV4dF9za2IgJSBCQU1fRE1VWF9OVU1fU0tCXSlcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjE3MjpcdFx0YmFtX2RtdXhfdHhfd2FrZV9xdWV1ZXMoZG11eCk7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0xNzMtXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmRtdXgtXHUwMDNldHhfbG9jaywgZmxhZ3MpO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTE3NS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjE3NjpzdGF0aWMgdm9pZCBiYW1fZG11eF90eF9jYWxsYmFjayh2b2lkICpkYXRhKVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMTc3LXtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjE3ODpcdHN0cnVjdCBiYW1fZG11eF9za2JfZG1hICpza2JfZG1hID0gZGF0YTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTE3OS1cdHN0cnVjdCBza19idWZmICpza2IgPSBza2JfZG1hLVx1MDAzZXNrYjtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0xODEtXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoxODI6XHRiYW1fZG11eF90eF9kb25lKHNrYl9kbWEpO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMTgzLVx0aWYgKG5ldGRldilcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTE4NC1cdFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChuZXRkZXYsIDEsXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoxODU6XHRcdFx0XHQgICAgICAgKChzdHJ1Y3QgYmFtX2RtdXhfaGRyICopc2tiLVx1MDAzZWRhdGEpLVx1MDAzZWxlbik7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0xODYtXHRkZXZfY29uc3VtZV9za2JfYW55KHNrYik7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMTg4LVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MTg5OnN0YXRpYyBib29sIGJhbV9kbXV4X3NrYl9kbWFfc3VibWl0X3R4KHN0cnVjdCBiYW1fZG11eF9za2JfZG1hICpza2JfZG1hKVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMTkwLXtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjE5MTpcdHN0cnVjdCBiYW1fZG11eCAqZG11eCA9IHNrYl9kbWEtXHUwMDNlZG11eDtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTE5Mi1cdHN0cnVjdCBkbWFfYXN5bmNfdHhfZGVzY3JpcHRvciAqZGVzYztcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yMDEtXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoyMDI6XHRkZXNjLVx1MDAzZWNhbGxiYWNrID0gYmFtX2RtdXhfdHhfY2FsbGJhY2s7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yMDMtXHRkZXNjLVx1MDAzZWNhbGxiYWNrX3BhcmFtID0gc2tiX2RtYTtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yMDctXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoyMDg6c3RhdGljIHN0cnVjdCBiYW1fZG11eF9za2JfZG1hICpcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjIwOTpiYW1fZG11eF90eF9xdWV1ZShzdHJ1Y3QgYmFtX2RtdXggKmRtdXgsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yMTAte1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MjExOlx0c3RydWN0IGJhbV9kbXV4X3NrYl9kbWEgKnNrYl9kbWE7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yMTItXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTIxNy1cdGlmIChza2JfZG1hLVx1MDAzZXNrYikge1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MjE4Olx0XHRiYW1fZG11eF90eF9zdG9wX3F1ZXVlcyhkbXV4KTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTIxOS1cdFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZkbXV4LVx1MDAzZXR4X2xvY2ssIGZsYWdzKTtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yMjUtXHRpZiAoZG11eC1cdTAwM2V0eF9za2JzW2RtdXgtXHUwMDNldHhfbmV4dF9za2IgJSBCQU1fRE1VWF9OVU1fU0tCXS5za2IpXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoyMjY6XHRcdGJhbV9kbXV4X3R4X3N0b3BfcXVldWVzKGRtdXgpO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMjI3LVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTIzMS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjIzMjpzdGF0aWMgaW50IGJhbV9kbXV4X3NlbmRfY21kKHN0cnVjdCBiYW1fZG11eF9uZXRkZXYgKmJuZGV2LCB1OCBjbWQpXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yMzMte1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MjM0Olx0c3RydWN0IGJhbV9kbXV4ICpkbXV4ID0gYm5kZXYtXHUwMDNlZG11eDtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjIzNTpcdHN0cnVjdCBiYW1fZG11eF9za2JfZG1hICpza2JfZG1hO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MjM2Olx0c3RydWN0IGJhbV9kbXV4X2hkciAqaGRyO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMjM3LVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yNDgtXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoyNDk6XHRza2JfZG1hID0gYmFtX2RtdXhfdHhfcXVldWUoZG11eCwgc2tiKTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTI1MC1cdGlmICghc2tiX2RtYSkge1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTI1OC1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjI1OTpcdGlmICghYmFtX2RtdXhfc2tiX2RtYV9tYXAoc2tiX2RtYSwgRE1BX1RPX0RFVklDRSkpIHtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTI2MC1cdFx0cmV0ID0gLUVOT01FTTtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yNjMtXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoyNjQ6XHRpZiAoIWJhbV9kbXV4X3NrYl9kbWFfc3VibWl0X3R4KHNrYl9kbWEpKSB7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yNjUtXHRcdHJldCA9IC1FSU87XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMjcyLXR4X2ZhaWw6XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoyNzM6XHRiYW1fZG11eF90eF9kb25lKHNrYl9kbWEpO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMjc0LWZyZWVfc2tiOlxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTI3OC1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjI3OTpzdGF0aWMgaW50IGJhbV9kbXV4X25ldGRldl9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yODAte1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MjgxOlx0c3RydWN0IGJhbV9kbXV4X25ldGRldiAqYm5kZXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMjgyLVx0aW50IHJldDtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTI4My1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjI4NDpcdHJldCA9IGJhbV9kbXV4X3NlbmRfY21kKGJuZGV2LCBCQU1fRE1VWF9DTURfT1BFTik7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yODUtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTI5MS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjI5MjpzdGF0aWMgaW50IGJhbV9kbXV4X25ldGRldl9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yOTMte1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6Mjk0Olx0c3RydWN0IGJhbV9kbXV4X25ldGRldiAqYm5kZXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMjk1LVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMjk2LVx0bmV0aWZfc3RvcF9xdWV1ZShuZXRkZXYpO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6Mjk3Olx0YmFtX2RtdXhfc2VuZF9jbWQoYm5kZXYsIEJBTV9ETVVYX0NNRF9DTE9TRSk7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yOTgtXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYz0zMDE9c3RhdGljIHVuc2lnbmVkIGludCBuZWVkZWRfcm9vbSh1bnNpZ25lZCBpbnQgYXZhaWwsIHVuc2lnbmVkIGludCBuZWVkZWQpXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMzA3LVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MzA4OnN0YXRpYyBpbnQgYmFtX2RtdXhfdHhfcHJlcGFyZV9za2Ioc3RydWN0IGJhbV9kbXV4X25ldGRldiAqYm5kZXYsXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0zMDktXHRcdFx0XHQgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTMxMy1cdHVuc2lnbmVkIGludCB0YWlsID0gbmVlZGVkX3Jvb20oc2tiX3RhaWxyb29tKHNrYiksIHBhZCk7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzozMTQ6XHRzdHJ1Y3QgYmFtX2RtdXhfaGRyICpoZHI7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0zMTUtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTMzNS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjMzNjpzdGF0aWMgbmV0ZGV2X3R4X3QgYmFtX2RtdXhfbmV0ZGV2X3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTMzNy1cdFx0XHRcdFx0ICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTMzOC17XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzozMzk6XHRzdHJ1Y3QgYmFtX2RtdXhfbmV0ZGV2ICpibmRldiA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzozNDA6XHRzdHJ1Y3QgYmFtX2RtdXggKmRtdXggPSBibmRldi1cdTAwM2VkbXV4O1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MzQxOlx0c3RydWN0IGJhbV9kbXV4X3NrYl9kbWEgKnNrYl9kbWE7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0zNDItXHRpbnQgYWN0aXZlLCByZXQ7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0zNDMtXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzozNDQ6XHRza2JfZG1hID0gYmFtX2RtdXhfdHhfcXVldWUoZG11eCwgc2tiKTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTM0NS1cdGlmICghc2tiX2RtYSlcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0zNTEtXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzozNTI6XHRyZXQgPSBiYW1fZG11eF90eF9wcmVwYXJlX3NrYihibmRldiwgc2tiKTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTM1My1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMzU1LVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MzU2Olx0aWYgKCFiYW1fZG11eF9za2JfZG1hX21hcChza2JfZG1hLCBETUFfVE9fREVWSUNFKSlcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTM1Ny1cdFx0Z290byBkcm9wO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTM2Ni1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjM2NzpcdGlmICghYmFtX2RtdXhfc2tiX2RtYV9zdWJtaXRfdHgoc2tiX2RtYSkpXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0zNjgtXHRcdGdvdG8gZHJvcDtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0zNzMtZHJvcDpcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjM3NDpcdGJhbV9kbXV4X3R4X2RvbmUoc2tiX2RtYSk7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0zNzUtXHRkZXZfa2ZyZWVfc2tiX2FueShza2IpO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTM3OC1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjM3OTpzdGF0aWMgdm9pZCBiYW1fZG11eF90eF93YWtldXBfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0zODAte1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MzgxOlx0c3RydWN0IGJhbV9kbXV4ICpkbXV4ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBiYW1fZG11eCwgdHhfd2FrZXVwX3dvcmspO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMzgyLVx0dW5zaWduZWQgbG9uZyBwZW5kaW5nO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTM5Ni1cdGZvcl9lYWNoX3NldF9iaXQoaSwgXHUwMDI2cGVuZGluZywgQkFNX0RNVVhfTlVNX1NLQikge1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6Mzk3Olx0XHRiYW1fZG11eF9za2JfZG1hX3N1Ym1pdF90eChcdTAwMjZkbXV4LVx1MDAzZXR4X3NrYnNbaV0pO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMzk4LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTQwNC1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjQwNTpzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGJhbV9kbXV4X29wcyA9IHtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjQwNjpcdC5uZG9fb3Blblx0PSBiYW1fZG11eF9uZXRkZXZfb3BlbixcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjQwNzpcdC5uZG9fc3RvcFx0PSBiYW1fZG11eF9uZXRkZXZfc3RvcCxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjQwODpcdC5uZG9fc3RhcnRfeG1pdFx0PSBiYW1fZG11eF9uZXRkZXZfc3RhcnRfeG1pdCxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTQwOS1cdC5uZG9fZ2V0X3N0YXRzNjRcdD0gZGV2X2dldF90c3RhdHM2NCxcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYz00MTI9c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZpY2VfdHlwZSB3d2FuX3R5cGUgPSB7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNDE1LVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NDE2OnN0YXRpYyB2b2lkIGJhbV9kbXV4X25ldGRldl9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNDE3LXtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjQxODpcdGRldi1cdTAwM2VuZXRkZXZfb3BzID0gXHUwMDI2YmFtX2RtdXhfb3BzO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNDE5LVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTQyNS1cdGRldi1cdTAwM2VtYXhfbXR1ID0gQkFNX0RNVVhfTUFYX0RBVEFfU0laRTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjQyNjpcdGRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb20gPSBzaXplb2Yoc3RydWN0IGJhbV9kbXV4X2hkcik7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy00MjctXHRkZXYtXHUwMDNlbmVlZGVkX3RhaWxyb29tID0gc2l6ZW9mKHUzMik7IC8qIHdvcmQtYWxpZ25lZCAqL1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTQzNS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjQzNjpzdGF0aWMgdm9pZCBiYW1fZG11eF9yZWdpc3Rlcl9uZXRkZXZfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy00Mzcte1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NDM4Olx0c3RydWN0IGJhbV9kbXV4ICpkbXV4ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBiYW1fZG11eCwgcmVnaXN0ZXJfbmV0ZGV2X3dvcmspO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NDM5Olx0c3RydWN0IGJhbV9kbXV4X25ldGRldiAqYm5kZXY7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy00NDAtXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTQ0Ny1cdFx0bmV0ZGV2ID0gYWxsb2NfbmV0ZGV2KHNpemVvZigqYm5kZXYpLCBcJiMzNDt3d2FuJWRcJiMzNDssIE5FVF9OQU1FX0VOVU0sXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo0NDg6XHRcdFx0XHQgICAgICBiYW1fZG11eF9uZXRkZXZfc2V0dXApO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNDQ5LVx0XHRpZiAoIW5ldGRldilcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy00NzAtXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo0NzE6c3RhdGljIHZvaWQgYmFtX2RtdXhfcnhfY2FsbGJhY2sodm9pZCAqZGF0YSk7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy00NzItXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo0NzM6c3RhdGljIGJvb2wgYmFtX2RtdXhfc2tiX2RtYV9zdWJtaXRfcngoc3RydWN0IGJhbV9kbXV4X3NrYl9kbWEgKnNrYl9kbWEpXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy00NzQte1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NDc1Olx0c3RydWN0IGJhbV9kbXV4ICpkbXV4ID0gc2tiX2RtYS1cdTAwM2VkbXV4O1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNDc2LVx0c3RydWN0IGRtYV9hc3luY190eF9kZXNjcmlwdG9yICpkZXNjO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTQ4NS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjQ4NjpcdGRlc2MtXHUwMDNlY2FsbGJhY2sgPSBiYW1fZG11eF9yeF9jYWxsYmFjaztcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTQ4Ny1cdGRlc2MtXHUwMDNlY2FsbGJhY2tfcGFyYW0gPSBza2JfZG1hO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTQ5MS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjQ5MjpzdGF0aWMgYm9vbCBiYW1fZG11eF9za2JfZG1hX3F1ZXVlX3J4KHN0cnVjdCBiYW1fZG11eF9za2JfZG1hICpza2JfZG1hLCBnZnBfdCBnZnApXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy00OTMte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTUwMC1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjUwMTpcdHJldHVybiBiYW1fZG11eF9za2JfZG1hX21hcChza2JfZG1hLCBETUFfRlJPTV9ERVZJQ0UpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NTAyOlx0ICAgICAgIGJhbV9kbXV4X3NrYl9kbWFfc3VibWl0X3J4KHNrYl9kbWEpO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNTAzLX1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTUwNC1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjUwNTpzdGF0aWMgdm9pZCBiYW1fZG11eF9jbWRfZGF0YShzdHJ1Y3QgYmFtX2RtdXhfc2tiX2RtYSAqc2tiX2RtYSlcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTUwNi17XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo1MDc6XHRzdHJ1Y3QgYmFtX2RtdXggKmRtdXggPSBza2JfZG1hLVx1MDAzZWRtdXg7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy01MDgtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gc2tiX2RtYS1cdTAwM2Vza2I7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo1MDk6XHRzdHJ1Y3QgYmFtX2RtdXhfaGRyICpoZHIgPSAoc3RydWN0IGJhbV9kbXV4X2hkciAqKXNrYi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNTEwLVx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiA9IGRtdXgtXHUwMDNlbmV0ZGV2c1toZHItXHUwMDNlY2hdO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTU0NS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjU0NjpzdGF0aWMgdm9pZCBiYW1fZG11eF9jbWRfb3BlbihzdHJ1Y3QgYmFtX2RtdXggKmRtdXgsIHN0cnVjdCBiYW1fZG11eF9oZHIgKmhkcilcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTU0Ny17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNTY0LVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NTY1OnN0YXRpYyB2b2lkIGJhbV9kbXV4X2NtZF9jbG9zZShzdHJ1Y3QgYmFtX2RtdXggKmRtdXgsIHN0cnVjdCBiYW1fZG11eF9oZHIgKmhkcilcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTU2Ni17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNTc5LVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NTgwOnN0YXRpYyB2b2lkIGJhbV9kbXV4X3J4X2NhbGxiYWNrKHZvaWQgKmRhdGEpXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy01ODEte1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NTgyOlx0c3RydWN0IGJhbV9kbXV4X3NrYl9kbWEgKnNrYl9kbWEgPSBkYXRhO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NTgzOlx0c3RydWN0IGJhbV9kbXV4ICpkbXV4ID0gc2tiX2RtYS1cdTAwM2VkbXV4O1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNTg0LVx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9IHNrYl9kbWEtXHUwMDNlc2tiO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NTg1Olx0c3RydWN0IGJhbV9kbXV4X2hkciAqaGRyID0gKHN0cnVjdCBiYW1fZG11eF9oZHIgKilza2ItXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTU4Ni1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjU4NzpcdGJhbV9kbXV4X3NrYl9kbWFfdW5tYXAoc2tiX2RtYSwgRE1BX0ZST01fREVWSUNFKTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTU4OC1cbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02MDAtXHRjYXNlIEJBTV9ETVVYX0NNRF9EQVRBOlxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NjAxOlx0XHRiYW1fZG11eF9jbWRfZGF0YShza2JfZG1hKTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTYwMi1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02MDMtXHRjYXNlIEJBTV9ETVVYX0NNRF9PUEVOOlxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NjA0Olx0XHRiYW1fZG11eF9jbWRfb3BlbihkbXV4LCBoZHIpO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNjA1LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTYwNi1cdGNhc2UgQkFNX0RNVVhfQ01EX0NMT1NFOlxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NjA3Olx0XHRiYW1fZG11eF9jbWRfY2xvc2UoZG11eCwgaGRyKTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTYwOC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNjE1LW91dDpcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjYxNjpcdGlmIChiYW1fZG11eF9za2JfZG1hX3F1ZXVlX3J4KHNrYl9kbWEsIEdGUF9BVE9NSUMpKVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNjE3LVx0XHRkbWFfYXN5bmNfaXNzdWVfcGVuZGluZyhkbXV4LVx1MDAzZXJ4KTtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02MTktXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo2MjA6c3RhdGljIGJvb2wgYmFtX2RtdXhfcG93ZXJfb24oc3RydWN0IGJhbV9kbXV4ICpkbXV4KVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNjIxLXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02MzctXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBCQU1fRE1VWF9OVU1fU0tCOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NjM4Olx0XHRpZiAoIWJhbV9kbXV4X3NrYl9kbWFfcXVldWVfcngoXHUwMDI2ZG11eC1cdTAwM2VyeF9za2JzW2ldLCBHRlBfS0VSTkVMKSlcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTYzOS1cdFx0XHRyZXR1cm4gZmFsc2U7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNjQ1LVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NjQ2OnN0YXRpYyB2b2lkIGJhbV9kbXV4X2ZyZWVfc2ticyhzdHJ1Y3QgYmFtX2RtdXhfc2tiX2RtYSBza2JzW10sXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02NDctXHRcdFx0ICAgICAgIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcilcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02NTEtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBCQU1fRE1VWF9OVU1fU0tCOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NjUyOlx0XHRzdHJ1Y3QgYmFtX2RtdXhfc2tiX2RtYSAqc2tiX2RtYSA9IFx1MDAyNnNrYnNbaV07XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02NTMtXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02NTQtXHRcdGlmIChza2JfZG1hLVx1MDAzZWFkZHIpXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo2NTU6XHRcdFx0YmFtX2RtdXhfc2tiX2RtYV91bm1hcChza2JfZG1hLCBkaXIpO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNjU2LVx0XHRpZiAoc2tiX2RtYS1cdTAwM2Vza2IpIHtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02NjItXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo2NjM6c3RhdGljIHZvaWQgYmFtX2RtdXhfcG93ZXJfb2ZmKHN0cnVjdCBiYW1fZG11eCAqZG11eClcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTY2NC17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNjc2LVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6Njc3Olx0YmFtX2RtdXhfZnJlZV9za2JzKGRtdXgtXHUwMDNlcnhfc2ticywgRE1BX0ZST01fREVWSUNFKTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTY3OC19XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02NzktXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo2ODA6c3RhdGljIGlycXJldHVybl90IGJhbV9kbXV4X3BjX2lycShpbnQgaXJxLCB2b2lkICpkYXRhKVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNjgxLXtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjY4MjpcdHN0cnVjdCBiYW1fZG11eCAqZG11eCA9IGRhdGE7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02ODMtXHRib29sIG5ld19zdGF0ZSA9ICFkbXV4LVx1MDAzZXBjX3N0YXRlO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTY4Ny1cdGlmIChuZXdfc3RhdGUpIHtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjY4ODpcdFx0aWYgKGJhbV9kbXV4X3Bvd2VyX29uKGRtdXgpKVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6Njg5Olx0XHRcdGJhbV9kbXV4X3BjX2FjayhkbXV4KTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTY5MC1cdFx0ZWxzZVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NjkxOlx0XHRcdGJhbV9kbXV4X3Bvd2VyX29mZihkbXV4KTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTY5Mi1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo2OTM6XHRcdGJhbV9kbXV4X3Bvd2VyX29mZihkbXV4KTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjY5NDpcdFx0YmFtX2RtdXhfcGNfYWNrKGRtdXgpO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNjk1LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTcwMi1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjcwMzpzdGF0aWMgaXJxcmV0dXJuX3QgYmFtX2RtdXhfcGNfYWNrX2lycShpbnQgaXJxLCB2b2lkICpkYXRhKVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNzA0LXtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjcwNTpcdHN0cnVjdCBiYW1fZG11eCAqZG11eCA9IGRhdGE7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy03MDYtXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNzEyLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NzEzOnN0YXRpYyBpbnQgYmFtX2RtdXhfcnVudGltZV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTcxNC17XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo3MTU6XHRzdHJ1Y3QgYmFtX2RtdXggKmRtdXggPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTcxNi1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTcxNy1cdGRldl9kYmcoZGV2LCBcJiMzNDtydW50aW1lIHN1c3BlbmRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NzE4Olx0YmFtX2RtdXhfcGNfdm90ZShkbXV4LCBmYWxzZSk7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy03MTktXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNzIyLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NzIzOnN0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgYmFtX2RtdXhfcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNzI0LXtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjcyNTpcdHN0cnVjdCBiYW1fZG11eCAqZG11eCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNzI2LVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTczNC1cdC8qIFZvdGUgZm9yIHBvd2VyIHN0YXRlICovXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo3MzU6XHRiYW1fZG11eF9wY192b3RlKGRtdXgsIHRydWUpO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNzM2LVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTczOS1cdFx0XHRcdFx0IEJBTV9ETVVYX1JFTU9URV9USU1FT1VUKSkge1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NzQwOlx0XHRiYW1fZG11eF9wY192b3RlKGRtdXgsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTc0MS1cdFx0cmV0dXJuIC1FVElNRURPVVQ7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNzQ2LVx0XHRcdFx0QkFNX0RNVVhfUkVNT1RFX1RJTUVPVVQpKSB7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo3NDc6XHRcdGJhbV9kbXV4X3BjX3ZvdGUoZG11eCwgZmFsc2UpO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNzQ4LVx0XHRyZXR1cm4gLUVUSU1FRE9VVDtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy03NTItXHRpZiAoIWRtdXgtXHUwMDNlcngpIHtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjc1MzpcdFx0YmFtX2RtdXhfcGNfdm90ZShkbXV4LCBmYWxzZSk7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy03NTQtXHRcdHJldHVybiAtRU5YSU87XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNzY0LVx0XHRkbXV4LVx1MDAzZXR4ID0gTlVMTDtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjc2NTpcdFx0YmFtX2RtdXhfcnVudGltZV9zdXNwZW5kKGRldik7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy03NjYtXHRcdHJldHVybiAtRU5YSU87XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNzcxLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NzcyOnN0YXRpYyBpbnQgYmFtX2RtdXhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTc3My17XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy03NzQtXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjc3NTpcdHN0cnVjdCBiYW1fZG11eCAqZG11eDtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTc3Ni1cdGludCByZXQsIHBjX2Fja19pcnEsIGk7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtODEwLVx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2ZG11eC1cdTAwM2V0eF9sb2NrKTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjgxMTpcdElOSVRfV09SSyhcdTAwMjZkbXV4LVx1MDAzZXR4X3dha2V1cF93b3JrLCBiYW1fZG11eF90eF93YWtldXBfd29yayk7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo4MTI6XHRJTklUX1dPUksoXHUwMDI2ZG11eC1cdTAwM2VyZWdpc3Rlcl9uZXRkZXZfd29yaywgYmFtX2RtdXhfcmVnaXN0ZXJfbmV0ZGV2X3dvcmspO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtODEzLVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTgyNi1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjgyNzpcdHJldCA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEoZGV2LCBwY19hY2tfaXJxLCBOVUxMLCBiYW1fZG11eF9wY19hY2tfaXJxLFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtODI4LVx0XHRcdFx0XHRJUlFGX09ORVNIT1QsIE5VTEwsIGRtdXgpO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTgzMS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjgzMjpcdHJldCA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEoZGV2LCBkbXV4LVx1MDAzZXBjX2lycSwgTlVMTCwgYmFtX2RtdXhfcGNfaXJxLFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtODMzLVx0XHRcdFx0XHRJUlFGX09ORVNIT1QsIE5VTEwsIGRtdXgpO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTg0My1cdGlmIChkbXV4LVx1MDAzZXBjX3N0YXRlKSB7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo4NDQ6XHRcdGlmIChiYW1fZG11eF9wb3dlcl9vbihkbXV4KSlcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjg0NTpcdFx0XHRiYW1fZG11eF9wY19hY2soZG11eCk7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy04NDYtXHRcdGVsc2VcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjg0NzpcdFx0XHRiYW1fZG11eF9wb3dlcl9vZmYoZG11eCk7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy04NDgtXHR9XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtODU3LVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6ODU4OnN0YXRpYyB2b2lkIGJhbV9kbXV4X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtODU5LXtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjg2MDpcdHN0cnVjdCBiYW1fZG11eCAqZG11eCA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtODYxLVx0c3RydWN0IGRldmljZSAqZGV2ID0gZG11eC1cdTAwM2VkZXY7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtODc3LVx0cG1fcnVudGltZV9kb250X3VzZV9hdXRvc3VzcGVuZChkZXYpO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6ODc4Olx0YmFtX2RtdXhfcnVudGltZV9zdXNwZW5kKGRldik7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy04NzktXHRwbV9ydW50aW1lX3NldF9zdXNwZW5kZWQoZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy04ODYtXHRkaXNhYmxlX2lycShkbXV4LVx1MDAzZXBjX2lycSk7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo4ODc6XHRiYW1fZG11eF9wb3dlcl9vZmYoZG11eCk7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo4ODg6XHRiYW1fZG11eF9mcmVlX3NrYnMoZG11eC1cdTAwM2V0eF9za2JzLCBETUFfVE9fREVWSUNFKTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTg4OS19XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy04OTAtXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo4OTE6c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIGJhbV9kbXV4X3BtX29wcyA9IHtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjg5MjpcdFNFVF9SVU5USU1FX1BNX09QUyhiYW1fZG11eF9ydW50aW1lX3N1c3BlbmQsIGJhbV9kbXV4X3J1bnRpbWVfcmVzdW1lLCBOVUxMKVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtODkzLX07XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy04OTQtXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo4OTU6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYmFtX2RtdXhfb2ZfbWF0Y2hbXSA9IHtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTg5Ni1cdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtxY29tLGJhbS1kbXV4XCYjMzQ7IH0sXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtODk4LX07XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo4OTk6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgYmFtX2RtdXhfb2ZfbWF0Y2gpO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtOTAwLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6OTAxOnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGJhbV9kbXV4X2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjkwMjpcdC5wcm9iZSA9IGJhbV9kbXV4X3Byb2JlLFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6OTAzOlx0LnJlbW92ZSA9IGJhbV9kbXV4X3JlbW92ZSxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTkwNC1cdC5kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy05MDUtXHRcdC5uYW1lID0gXCYjMzQ7YmFtLWRtdXhcJiMzNDssXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo5MDY6XHRcdC5wbSA9IFx1MDAyNmJhbV9kbXV4X3BtX29wcyxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjkwNzpcdFx0Lm9mX21hdGNoX3RhYmxlID0gYmFtX2RtdXhfb2ZfbWF0Y2gsXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy05MDgtXHR9LFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtOTA5LX07XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo5MTA6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihiYW1fZG11eF9kcml2ZXIpO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtOTExLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAyOjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1Nzk4CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogNDAzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBgYmFtX2RtdXhgIGZvciBGdXp6aW5nIFN1aXRhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgYmFtX2RtdXhgLCBhIHBsYXRmb3JtIGRyaXZlciBmb3IgUXVhbGNvbW0gbW9kZW1zIOKAkyBzcGVjaWZpY2FsbHksICYjMzQ7cWNvbSxiYW0tZG11eCYjMzQ7LiBJdCBoaW5nZXMgb24gdGhlc2UgZGVwZW5kZW5jaWVzOiBgRE1BX0VOR0lORSAmYW1wOyZhbXA7IFBNICZhbXA7JmFtcDsgUUNPTV9TTUVNX1NUQVRFYCBvciBgQ09NUElMRV9URVNUYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBpcyB0aGlzIGV2ZW4gYSB2aWFibGUgdGFyZ2V0IGZvciBmdXp6aW5nIGluIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VPyBUaGF0JiMzOTtzIHRoZSBjcml0aWNhbCBxdWVzdGlvbi4KCkxldCBtZSBydW4gdGhyb3VnaCB0aGUgdXN1YWwgY2hlY2tsaXN0LiBUaGUgaW5zdHJ1Y3Rpb25zIHNheSB0byBydWxlIGl0IG91dCBpZiB0aGUgcGF0Y2ggaXM6CgoqICAgRG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgb3IgY29tbWVudHMgb25seS4gTm9wZS4KKiAgIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMg4oCTIGxvZ2dpbmcsIHRyYWNlcG9pbnRzLiBOb3QgbGlrZWx5LgoqICAgTnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHdpdGhvdXQgZnVuY3Rpb25hbCBpbXBhY3QuIFByb2JhYmx5IG5vdC4KClRoaXMgbmV4dCBwb2ludCBpcyBjcnVjaWFsOiAqaW1wYXNzYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemF0aW9uKi4gU28gSSBuZWVkIHRvIHZlcmlmeTogY2FuIHRoaXMgdGhpbmcgYmUgcnVuIGluIFFFTVU/IEl0JiMzOTtzIGEgUXVhbGNvbW0gbW9kZW0gZHJpdmVyLCBzbywgZXZlbiB3aGVuIHVzaW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLCBhbSBJIGdvaW5nIHRvIGJlIGFibGUgdG8gcmVhY2ggaXQ/IFRoaW5ncyBsaWtlIFVTQiBnYWRnZXQgb3IgbWFjODAyMTFfaHdzaW0sIHRoZXkgYXJlIGEgaGFyZCAmIzM0O25vJiMzNDsgZm9yIHRoZSBwdXJwb3NlIG9mIGZ1enppbmcuCgpBbHNvLCBJIGhhdmUgdG8gZGlzcmVnYXJkIGRyaXZlcnMgZm9yIHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUuIE5vIFBDSWUgY2FyZHMgdGhhdCBhcmVuJiMzOTt0IGF2YWlsYWJsZSBpbiBRRU1VLCBubyB2ZW5kb3Itc3BlY2lmaWMgc3dpdGNoL1NtYXJ0TklDL0dQVSBkcml2ZXJzIChsaWtlIG1seHN3LCBwZHNcX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkuIElmIGl0IG5lZWRzIGEgcGh5c2ljYWwgUENJZSBjYXJkLCBJJiMzOTttIG91dC4gRmluYWxseSwgSSBzaG91bGQgaWdub3JlIGRyaXZlciB0ZWFyZG93biBjYWxscyB0aGF0IGFyZSBvbmx5IGV4ZWN1dGVkIGR1cmluZyBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KClNvLCBsZXQgbWUgc2VlLi4uIEl0JiMzOTtzIGBxY29tX2JhbV9kbXV4LmNgLCB3aGljaCwgYWNjb3JkaW5nIHRvIHRoZSBjb2RlLCBpcyBhIHBsYXRmb3JtIGRyaXZlciB0aGF0IHVzZXMgYG9mX21hdGNoYCB0byBpZGVudGlmeSBpdHNlbGYgYXMgJiMzNDtxY29tLGJhbS1kbXV4JiMzNDssIHNwZWNpZmljYWxseSBmb3IgUXVhbGNvbW0gU29DcyBsaWtlIE1TTTg5MTYgYW5kIE1TTTg5NzQuIE9rYXksIHJpZ2h0IG5vdywgSSBuZWVkIHRvIGZvY3VzIG9uIHdoYXQgaGFwcGVucyBpbiBgYmFtX2RtdXhfcHJvYmVgLiBJIG5lZWQgdG8gaW5zcGVjdCB0aGF0IGZ1bmN0aW9uIGluIGBkcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguY2AgYW5kIGZpZ3VyZSBvdXQgaG93IGl0IHdvcmtzIGFuZCB3aGV0aGVyIHRoZSBleGVjdXRpb24gcGF0aCBjYW4gYmUgcmVhY2hlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAyOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3NzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDc3MDpcdH1cbiA3NzE6XHRcbiA3NzI6XHRzdGF0aWMgaW50IGJhbV9kbXV4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gNzczOlx0e1xuIDc3NDpcdFx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG4gNzc1Olx0XHRzdHJ1Y3QgYmFtX2RtdXggKmRtdXg7XG4gNzc2Olx0XHRpbnQgcmV0LCBwY19hY2tfaXJxLCBpO1xuIDc3NzpcdFx0dW5zaWduZWQgaW50IGJpdDtcbiA3Nzg6XHRcbiA3Nzk6XHRcdGRtdXggPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKmRtdXgpLCBHRlBfS0VSTkVMKTtcbiA3ODA6XHRcdGlmICghZG11eClcbiA3ODE6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gNzgyOlx0XG4gNzgzOlx0XHRkbXV4LVx1MDAzZWRldiA9IGRldjtcbiA3ODQ6XHRcdHBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIGRtdXgpO1xuIDc4NTpcdFxuIDc4NjpcdFx0ZG11eC1cdTAwM2VwY19pcnEgPSBwbGF0Zm9ybV9nZXRfaXJxX2J5bmFtZShwZGV2LCBcJiMzNDtwY1wmIzM0Oyk7XG4gNzg3Olx0XHRpZiAoZG11eC1cdTAwM2VwY19pcnEgXHUwMDNjIDApXG4gNzg4Olx0XHRcdHJldHVybiBkbXV4LVx1MDAzZXBjX2lycTtcbiA3ODk6XHRcbiA3OTA6XHRcdHBjX2Fja19pcnEgPSBwbGF0Zm9ybV9nZXRfaXJxX2J5bmFtZShwZGV2LCBcJiMzNDtwYy1hY2tcJiMzNDspO1xuIDc5MTpcdFx0aWYgKHBjX2Fja19pcnEgXHUwMDNjIDApXG4gNzkyOlx0XHRcdHJldHVybiBwY19hY2tfaXJxO1xuIDc5MzpcdFxuIDc5NDpcdFx0ZG11eC1cdTAwM2VwYyA9IGRldm1fcWNvbV9zbWVtX3N0YXRlX2dldChkZXYsIFwmIzM0O3BjXCYjMzQ7LCBcdTAwMjZiaXQpO1xuIDc5NTpcdFx0aWYgKElTX0VSUihkbXV4LVx1MDAzZXBjKSlcbiA3OTY6XHRcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKGRtdXgtXHUwMDNlcGMpLFxuIDc5NzpcdFx0XHRcdFx0ICAgICBcJiMzNDtGYWlsZWQgdG8gZ2V0IHBjIHN0YXRlXFxuXCYjMzQ7KTtcbiA3OTg6XHRcdGRtdXgtXHUwMDNlcGNfbWFzayA9IEJJVChiaXQpO1xuIDc5OTpcdFxuIDgwMDpcdFx0ZG11eC1cdTAwM2VwY19hY2sgPSBkZXZtX3Fjb21fc21lbV9zdGF0ZV9nZXQoZGV2LCBcJiMzNDtwYy1hY2tcJiMzNDssIFx1MDAyNmJpdCk7XG4gODAxOlx0XHRpZiAoSVNfRVJSKGRtdXgtXHUwMDNlcGNfYWNrKSlcbiA4MDI6XHRcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKGRtdXgtXHUwMDNlcGNfYWNrKSxcbiA4MDM6XHRcdFx0XHRcdCAgICAgXCYjMzQ7RmFpbGVkIHRvIGdldCBwYy1hY2sgc3RhdGVcXG5cJiMzNDspO1xuIDgwNDpcdFx0ZG11eC1cdTAwM2VwY19hY2tfbWFzayA9IEJJVChiaXQpO1xuIDgwNTpcdFxuIDgwNjpcdFx0aW5pdF93YWl0cXVldWVfaGVhZChcdTAwMjZkbXV4LVx1MDAzZXBjX3dhaXQpO1xuIDgwNzpcdFx0aW5pdF9jb21wbGV0aW9uKFx1MDAyNmRtdXgtXHUwMDNlcGNfYWNrX2NvbXBsZXRpb24pO1xuIDgwODpcdFx0Y29tcGxldGVfYWxsKFx1MDAyNmRtdXgtXHUwMDNlcGNfYWNrX2NvbXBsZXRpb24pO1xuIDgwOTpcdFxuIDgxMDpcdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2ZG11eC1cdTAwM2V0eF9sb2NrKTtcbiA4MTE6XHRcdElOSVRfV09SSyhcdTAwMjZkbXV4LVx1MDAzZXR4X3dha2V1cF93b3JrLCBiYW1fZG11eF90eF93YWtldXBfd29yayk7XG4gODEyOlx0XHRJTklUX1dPUksoXHUwMDI2ZG11eC1cdTAwM2VyZWdpc3Rlcl9uZXRkZXZfd29yaywgYmFtX2RtdXhfcmVnaXN0ZXJfbmV0ZGV2X3dvcmspO1xuIDgxMzpcdFxuIDgxNDpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQkFNX0RNVVhfTlVNX1NLQjsgaSYjNDM7JiM0MzspIHtcbiA4MTU6XHRcdFx0ZG11eC1cdTAwM2VyeF9za2JzW2ldLmRtdXggPSBkbXV4O1xuIDgxNjpcdFx0XHRkbXV4LVx1MDAzZXR4X3NrYnNbaV0uZG11eCA9IGRtdXg7XG4gODE3Olx0XHR9XG4gODE4Olx0XG4gODE5Olx0XHQvKiBSdW50aW1lIFBNIG1hbmFnZXMgb3VyIG93biBwb3dlciB2b3RlLlxuIDgyMDpcdFx0ICogTm90ZSB0aGF0IHRoZSBSWCBwYXRoIG1heSBiZSBhY3RpdmUgZXZlbiBpZiB3ZSBhcmUgcnVudGltZSBzdXNwZW5kZWQsXG4gODIxOlx0XHQgKiBzaW5jZSBpdCBpcyBjb250cm9sbGVkIGJ5IHRoZSByZW1vdGUgc2lkZS5cbiA4MjI6XHRcdCAqL1xuIDgyMzpcdFx0cG1fcnVudGltZV9zZXRfYXV0b3N1c3BlbmRfZGVsYXkoZGV2LCBCQU1fRE1VWF9BVVRPU1VTUEVORF9ERUxBWSk7XG4gODI0Olx0XHRwbV9ydW50aW1lX3VzZV9hdXRvc3VzcGVuZChkZXYpO1xuIDgyNTpcdFx0cG1fcnVudGltZV9lbmFibGUoZGV2KTtcbiA4MjY6XHRcbiA4Mjc6XHRcdHJldCA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEoZGV2LCBwY19hY2tfaXJxLCBOVUxMLCBiYW1fZG11eF9wY19hY2tfaXJxLFxuIDgyODpcdFx0XHRcdFx0XHRJUlFGX09ORVNIT1QsIE5VTEwsIGRtdXgpO1xuIDgyOTpcdFx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMDI6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc4MjQKCQkJCQkJCW91dHB1dDogMTI1CgkJCQkJCQl0aG91Z2h0czogNzA0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJiMzOTtzIEZ1enppbmcgU3VpdGFiaWxpdHkqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBwYXRjaCwgd2hpbGUgcG90ZW50aWFsbHkgaW50ZXJlc3RpbmcgZnJvbSBhIGZ1bmN0aW9uYWwgcGVyc3BlY3RpdmUsIGlzIG5vdCBzdWl0YWJsZSBmb3IgZnV6emluZyBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHQ0UuIEhlcmUmIzM5O3Mgd2h5OgoKVGhlIGNvcmUgb2YgdGhlIGlzc3VlIGxpZXMgaW4gdGhlIGRlcGVuZGVuY2llcyBvZiB0aGUgY29kZSBiZWluZyBtb2RpZmllZCwgc3BlY2lmaWNhbGx5IGBxY29tX2JhbV9kbXV4LmNgLiBUaGlzIGRyaXZlciByZWxpZXMgb24gc2V2ZXJhbCBRdWFsY29tbS1zcGVjaWZpYyBoYXJkd2FyZSBjb21wb25lbnRzOiBgZGV2bV9xY29tX3NtZW1fc3RhdGVfZ2V0YCAoUXVhbGNvbW0gU2hhcmVkIE1lbW9yeSksIGBwbGF0Zm9ybV9nZXRfaXJxX2J5bmFtZWAsIGFuZCBRdWFsY29tbSBCQU0gRE1BIGNoYW5uZWxzLiAgVGhlIEJBTSBETUEgY2hhbm5lbHMgYXJlIHJlcXVlc3RlZCB1c2luZyAmIzM0O3J4JiMzNDsgYW5kICYjMzQ7dHgmIzM0OyBzdHJpbmdzIHZpYSBgZG1hX3JlcXVlc3RfY2hhbihkZXYsICYjMzQ7cngmIzM0OylgLiBDcnVjaWFsbHksIGl0IGFsc28gZGVwZW5kcyBvbiBhIGRldmljZSB0cmVlIG5vZGUgbWF0Y2hpbmcgJiMzNDtxY29tLGJhbS1kbXV4JiMzNDsuCgpJIG5lZWQgdG8gY29uZmlybSBpZiBJIGNhbiBldmVuIHJlYWNoIHRoaXMgaGFyZHdhcmUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gQmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgdGhlcmUmIzM5O3Mgbm8gc29mdHdhcmUgZW11bGF0aW9uIGF2YWlsYWJsZSB3aXRoaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZm9yIGVpdGhlciB0aGUgUXVhbGNvbW0gQkFNIERNVVggb3IgUXVhbGNvbW0gU01FTS4gVGhpcyBpcyBiZWNhdXNlIHRoZXNlIGNvbXBvbmVudHMgYXJlIFNvQy1zcGVjaWZpYyBoYXJkd2FyZSwgdGlnaHRseSBpbnRlZ3JhdGVkIHdpdGggUXVhbGNvbW0mIzM5O3MgTVNNODkxNiBhbmQgTVNNODk3NCBwbGF0Zm9ybXMuIEV2ZW4gaWYgdGhlIGNvZGUgY29tcGlsZXMgd2l0aG91dCBlcnJvcnMsIGl0IHdvdWxkIGZhaWwgdG8gcHJvYmUgYW5kIGluaXRpYWxpemUgd2l0aG91dCB0aGUgY29ycmVjdCBkZXZpY2UgdHJlZSBiaW5kaW5ncyBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgUXVhbGNvbW0gU01FTS9ETUEgaGFyZHdhcmUgZHJpdmVycy4KCk5vdywgbGV0JiMzOTtzIGxvb2sgYXQgd2hhdCB0aGUgcGF0Y2ggYWN0dWFsbHkgZG9lcy4gVGhlIHBhdGNoIGFkZHMgbmV0d29yayBzdGF0aXN0aWNzIHN1cHBvcnQgdG8gYHFjb21fYmFtX2RtdXguY2AsIHdoaWNoIGluY2x1ZGVzIGFkZGluZyBgZGV2X3N3X25ldHN0YXRzX3R4X2FkZCguLi4pYCBhbmQgYGRldl9zd19uZXRzdGF0c19yeF9hZGQoLi4uKWAgaW4gZGlmZmVyZW50IGZ1bmN0aW9ucy4gSXQgYWxzbyBhZGRzIGEgYC5uZG9fZ2V0X3N0YXRzNjRgIG9wZXJhdGlvbiBhbmQgc2V0cyB0aGUgYGRldi0mZ3Q7cGNwdV9zdGF0X3R5cGVgIGFwcHJvcHJpYXRlbHkuCgpHaXZlbiB0aGF0IHRoaXMgZHJpdmVyIGlzLCBieSBpdHMgdmVyeSBuYXR1cmUsIGV4Y2x1c2l2ZSB0byBRdWFsY29tbSBwbGF0Zm9ybXMsIEkgY2FuIGNvbmZpcm0gdGhhdCBpdCBmYWxscyB1bmRlciB0aGUgcnVsZXMgZm9yIGRldGVybWluaW5nICYjMzQ7V29ydGhGdXp6aW5nJiMzNDsuIFNwZWNpZmljYWxseSwgdGhlIHBhdGNoIGNvbnRhaW5zIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEl0IGV4cGxpY2l0bHkgcmVxdWlyZXMgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQuCgpUaGVyZWZvcmUsIGFmdGVyIGNhcmVmdWwgY29uc2lkZXJhdGlvbiwgSSYjMzk7bSBjb25maWRlbnQgdGhhdCBgV29ydGhGdXp6aW5nYCBzaG91bGQgYmUgc2V0IHRvIGBmYWxzZWAuIE15IHJlYXNvbmluZyBpcyBjb25jaXNlOiB0aGUgcGF0Y2ggbW9kaWZpZXMgYSBRdWFsY29tbSBwbGF0Zm9ybSBkcml2ZXIgKGBxY29tX2JhbV9kbXV4LmNgKSB0aGF0IGlzIGRlcGVuZGVudCBvbiBwcm9wcmlldGFyeSBRdWFsY29tbSBoYXJkd2FyZSAoU01FTSwgQkFNIERNQSkgYW5kIGNhbm5vdCBiZSByZWFjaGVkIG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyBpdCB1bnN1aXRhYmxlIGZvciB0aGlzIHR5cGUgb2YgdGVzdGluZy4KCkZpbmFsbHksIEkmIzM5O2xsIHJldmlldyBhbmQgZG91YmxlLWNoZWNrIGFsbCBhc3BlY3RzIG9mIG15IGFuYWx5c2lzOiB0aGUgZGVwZW5kZW5jaWVzLCB0aGUgbmF0dXJlIG9mIHRoZSBwYXRjaCwgYW5kIHRoZSBmdXp6aW5nIGVudmlyb25tZW50IGNvbnN0cmFpbnRzLiBFdmVyeXRoaW5nIGNoZWNrcyBvdXQsIGFuZCBJJiMzOTtsbCBwcm9jZWVkIGFjY29yZGluZ2x5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMjoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jIHRvIGFkZCBzb2Z0d2FyZSBuZXRzdGF0cyBhY2NvdW50aW5nLiBUaGlzIGRyaXZlciBpcyBzcGVjaWZpYyB0byBRdWFsY29tbSBTb0NzIChlLmcuIE1TTTg5MTYvTVNNODk3NCkgcmVxdWlyaW5nIFF1YWxjb21tIFNNRU0gc3RhdGUgYW5kIERNQSBlbmdpbmUgaGFyZHdhcmUsIHdoaWNoIGlzIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIEhlbmNlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jIHRvIGFkZCBzb2Z0d2FyZSBuZXRzdGF0cyBhY2NvdW50aW5nLiBUaGlzIGRyaXZlciBpcyBzcGVjaWZpYyB0byBRdWFsY29tbSBTb0NzIChlLmcuIE1TTTg5MTYvTVNNODk3NCkgcmVxdWlyaW5nIFF1YWxjb21tIFNNRU0gc3RhdGUgYW5kIERNQSBlbmdpbmUgaGFyZHdhcmUsIHdoaWNoIGlzIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIEhlbmNlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAyOjIzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wMVQwMjoyMjo1My43NDY1NzQyODJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTg4NDEzMDcyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jIHRvIGFkZCBzb2Z0d2FyZSBuZXRzdGF0cyBhY2NvdW50aW5nLiBUaGlzIGRyaXZlciBpcyBzcGVjaWZpYyB0byBRdWFsY29tbSBTb0NzIChlLmcuIE1TTTg5MTYvTVNNODk3NCkgcmVxdWlyaW5nIFF1YWxjb21tIFNNRU0gc3RhdGUgYW5kIERNQSBlbmdpbmUgaGFyZHdhcmUsIHdoaWNoIGlzIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIEhlbmNlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAyOjIyOjUzLjc0NjU3ODI4MloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY1MjA3NTk5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDNhYjI0Y2EwMTY4ZTcxMDliOGE1YjFmNTM3ZTRjYmViOGVhZjZiYzlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBTZXAgMSAwMjoyMjo1MSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYyBiL2RyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jXFxuaW5kZXggY2M2YWNlOGQ2NDM3MS4uNWJjYWMyY2NhYWJkNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguY1xcbisrKyBiL2RyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jXFxuQEAgLTE3Nyw4ICsxNzcsMTIgQEAgc3RhdGljIHZvaWQgYmFtX2RtdXhfdHhfY2FsbGJhY2sodm9pZCAqZGF0YSlcXG4ge1xcbiBcXHRzdHJ1Y3QgYmFtX2RtdXhfc2tiX2RtYSAqc2tiX2RtYSA9IGRhdGE7XFxuIFxcdHN0cnVjdCBza19idWZmICpza2IgPSBza2JfZG1hLVxcdTAwM2Vza2I7XFxuK1xcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYgPSBza2ItXFx1MDAzZWRldjtcXG4gXFxuIFxcdGJhbV9kbXV4X3R4X2RvbmUoc2tiX2RtYSk7XFxuK1xcdGlmIChuZXRkZXYpXFxuK1xcdFxcdGRldl9zd19uZXRzdGF0c190eF9hZGQobmV0ZGV2LCAxLFxcbitcXHRcXHRcXHRcXHQgICAgICAgKChzdHJ1Y3QgYmFtX2RtdXhfaGRyICopc2tiLVxcdTAwM2VkYXRhKS1cXHUwMDNlbGVuKTtcXG4gXFx0ZGV2X2NvbnN1bWVfc2tiX2FueShza2IpO1xcbiB9XFxuIFxcbkBAIC00MDIsNiArNDA2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBiYW1fZG11eF9vcHMgPSB7XFxuIFxcdC5uZG9fb3BlblxcdD0gYmFtX2RtdXhfbmV0ZGV2X29wZW4sXFxuIFxcdC5uZG9fc3RvcFxcdD0gYmFtX2RtdXhfbmV0ZGV2X3N0b3AsXFxuIFxcdC5uZG9fc3RhcnRfeG1pdFxcdD0gYmFtX2RtdXhfbmV0ZGV2X3N0YXJ0X3htaXQsXFxuK1xcdC5uZG9fZ2V0X3N0YXRzNjRcXHQ9IGRldl9nZXRfdHN0YXRzNjQsXFxuIH07XFxuIFxcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGRldmljZV90eXBlIHd3YW5fdHlwZSA9IHtcXG5AQCAtNDIxLDYgKzQyNiw3IEBAIHN0YXRpYyB2b2lkIGJhbV9kbXV4X25ldGRldl9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHRkZXYtXFx1MDAzZW5lZWRlZF9oZWFkcm9vbSA9IHNpemVvZihzdHJ1Y3QgYmFtX2RtdXhfaGRyKTtcXG4gXFx0ZGV2LVxcdTAwM2VuZWVkZWRfdGFpbHJvb20gPSBzaXplb2YodTMyKTsgLyogd29yZC1hbGlnbmVkICovXFxuIFxcdGRldi1cXHUwMDNldHhfcXVldWVfbGVuID0gREVGQVVMVF9UWF9RVUVVRV9MRU47XFxuK1xcdGRldi1cXHUwMDNlcGNwdV9zdGF0X3R5cGUgPSBORVRERVZfUENQVV9TVEFUX1RTVEFUUztcXG4gXFxuIFxcdC8qIFRoaXMgcGVybSBhZGRyIHdpbGwgYmUgdXNlZCBhcyBpbnRlcmZhY2UgaWRlbnRpZmllciBieSBJUHY2ICovXFxuIFxcdGRldi1cXHUwMDNlYWRkcl9hc3NpZ25fdHlwZSA9IE5FVF9BRERSX1JBTkRPTTtcXG5AQCAtNTMzLDYgKzUzOSw3IEBAIHN0YXRpYyB2b2lkIGJhbV9kbXV4X2NtZF9kYXRhKHN0cnVjdCBiYW1fZG11eF9za2JfZG1hICpza2JfZG1hKVxcbiBcXHRcXHRicmVhaztcXG4gXFx0fVxcbiBcXG4rXFx0ZGV2X3N3X25ldHN0YXRzX3J4X2FkZChuZXRkZXYsIHNrYi1cXHUwMDNlbGVuKTtcXG4gXFx0bmV0aWZfcmVjZWl2ZV9za2Ioc2tiKTtcXG4gfVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDI6MjI6NTUuMzk5MzI3OTI0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoyNDIzMTM2NTc1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMgdG8gYWRkIHNvZnR3YXJlIG5ldHN0YXRzIGFjY291bnRpbmcuIFRoaXMgZHJpdmVyIGlzIHNwZWNpZmljIHRvIFF1YWxjb21tIFNvQ3MgKGUuZy4gTVNNODkxNi9NU004OTc0KSByZXF1aXJpbmcgUXVhbGNvbW0gU01FTSBzdGF0ZSBhbmQgRE1BIGVuZ2luZSBoYXJkd2FyZSwgd2hpY2ggaXMgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgdGVzdCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gSGVuY2UsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgM2FiMjRjYTAxNjhlNzEwOWI4YTViMWY1MzdlNGNiZWI4ZWFmNmJjOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDEgMDI6MjI6NTEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYyBiL2RyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jXG5pbmRleCBjYzZhY2U4ZDY0MzcxLi41YmNhYzJjY2FhYmQ2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmNcbisrKyBiL2RyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jXG5AQCAtMTc3LDggKzE3NywxMiBAQCBzdGF0aWMgdm9pZCBiYW1fZG11eF90eF9jYWxsYmFjayh2b2lkICpkYXRhKVxuIHtcbiBcdHN0cnVjdCBiYW1fZG11eF9za2JfZG1hICpza2JfZG1hID0gZGF0YTtcbiBcdHN0cnVjdCBza19idWZmICpza2IgPSBza2JfZG1hLVx1MDAzZXNrYjtcbitcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYgPSBza2ItXHUwMDNlZGV2O1xuIFxuIFx0YmFtX2RtdXhfdHhfZG9uZShza2JfZG1hKTtcbitcdGlmIChuZXRkZXYpXG4rXHRcdGRldl9zd19uZXRzdGF0c190eF9hZGQobmV0ZGV2LCAxLFxuK1x0XHRcdFx0ICAgICAgICgoc3RydWN0IGJhbV9kbXV4X2hkciAqKXNrYi1cdTAwM2VkYXRhKS1cdTAwM2VsZW4pO1xuIFx0ZGV2X2NvbnN1bWVfc2tiX2FueShza2IpO1xuIH1cbiBcbkBAIC00MDIsNiArNDA2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBiYW1fZG11eF9vcHMgPSB7XG4gXHQubmRvX29wZW5cdD0gYmFtX2RtdXhfbmV0ZGV2X29wZW4sXG4gXHQubmRvX3N0b3BcdD0gYmFtX2RtdXhfbmV0ZGV2X3N0b3AsXG4gXHQubmRvX3N0YXJ0X3htaXRcdD0gYmFtX2RtdXhfbmV0ZGV2X3N0YXJ0X3htaXQsXG4rXHQubmRvX2dldF9zdGF0czY0XHQ9IGRldl9nZXRfdHN0YXRzNjQsXG4gfTtcbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGRldmljZV90eXBlIHd3YW5fdHlwZSA9IHtcbkBAIC00MjEsNiArNDI2LDcgQEAgc3RhdGljIHZvaWQgYmFtX2RtdXhfbmV0ZGV2X3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRkZXYtXHUwMDNlbmVlZGVkX2hlYWRyb29tID0gc2l6ZW9mKHN0cnVjdCBiYW1fZG11eF9oZHIpO1xuIFx0ZGV2LVx1MDAzZW5lZWRlZF90YWlscm9vbSA9IHNpemVvZih1MzIpOyAvKiB3b3JkLWFsaWduZWQgKi9cbiBcdGRldi1cdTAwM2V0eF9xdWV1ZV9sZW4gPSBERUZBVUxUX1RYX1FVRVVFX0xFTjtcbitcdGRldi1cdTAwM2VwY3B1X3N0YXRfdHlwZSA9IE5FVERFVl9QQ1BVX1NUQVRfVFNUQVRTO1xuIFxuIFx0LyogVGhpcyBwZXJtIGFkZHIgd2lsbCBiZSB1c2VkIGFzIGludGVyZmFjZSBpZGVudGlmaWVyIGJ5IElQdjYgKi9cbiBcdGRldi1cdTAwM2VhZGRyX2Fzc2lnbl90eXBlID0gTkVUX0FERFJfUkFORE9NO1xuQEAgLTUzMyw2ICs1MzksNyBAQCBzdGF0aWMgdm9pZCBiYW1fZG11eF9jbWRfZGF0YShzdHJ1Y3QgYmFtX2RtdXhfc2tiX2RtYSAqc2tiX2RtYSlcbiBcdFx0YnJlYWs7XG4gXHR9XG4gXG4rXHRkZXZfc3dfbmV0c3RhdHNfcnhfYWRkKG5ldGRldiwgc2tiLVx1MDAzZWxlbik7XG4gXHRuZXRpZl9yZWNlaXZlX3NrYihza2IpO1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAyOjIyOjU1LjM5OTMyOTQ0NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYxNDM1NDY5MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBXV0FOIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHBhdGNoIGFuZCB0aGUgZHJpdmVyIGl0J3MgdG91Y2hpbmcg4oCTIHNwZWNpZmljYWxseSwgYGRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZ2V0IGEgc29saWQgb3ZlcnZpZXcgb2YgaXRzIGNvbnRleHQuIEZpcnN0LCBJIHdhbnQgdG8gY29uZmlybSB0aGUgZmlsZSdzIGxvY2F0aW9uIGFuZCB3aGF0IGl0cyBLY29uZmlnIGFuZCBoYXJkd2FyZSBkZXBlbmRlbmNpZXMgYXJlLiBUaGF0IHdpbGwgZ2l2ZSBtZSBhIHZpdGFsIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvbXBvbmVudHMgaW52b2x2ZWQuXG5cbkknbGwgc3RhcnQgd2l0aCBhIHF1aWNrIGNoZWNrIG9mIGBxY29tX2JhbV9kbXV4LmNgIGl0c2VsZi4gVGhlbiwgSSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgd2l0aGluIHRoYXQgZGlyZWN0b3J5LCBgZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnYC4gSSdsbCB1c2UgYGdyZXBwZXJgIChvciBgcmVhZC1maWxlYCBpZiB0aGF0J3MgbW9yZSBhcHByb3ByaWF0ZSkgdG8gcXVpY2tseSBwYXJzZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBhbnkgb3RoZXIgcGVydGluZW50IGNvbW1lbnRzIG9yIGNvZGUgZnJhZ21lbnRzIHdpdGhpbiB0aG9zZSBmaWxlcy4gVGhhdCdsbCBzZXQgdGhlIHN0YWdlIGZvciBhIG1vcmUgdGhvcm91Z2ggYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MzUsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQwMjoyMzowMS41NDI4Nzg5N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTY0NDU0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUUNPTV9CQU1fRE1VWHxRQ09NX0JBTV9ETVVYXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3d3YW5cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnPTUzPWNvbmZpZyBNSElfV1dBTl9NQklNXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctNjQtXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjY1OmNvbmZpZyBRQ09NX0JBTV9ETVVYXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTY2LVxcdHRyaXN0YXRlIFxcXCJRdWFsY29tbSBCQU0tRE1VWCBXV0FOIG5ldHdvcmsgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9NYWtlZmlsZT0xMj1vYmotJChDT05GSUdfTUhJX1dXQU5fTUJJTSkgKz0gbWhpX3d3YW5fbWJpbS5vXFxuZHJpdmVycy9uZXQvd3dhbi9NYWtlZmlsZToxMzpvYmotJChDT05GSUdfUUNPTV9CQU1fRE1VWCkgKz0gcWNvbV9iYW1fZG11eC5vXFxuZHJpdmVycy9uZXQvd3dhbi9NYWtlZmlsZS0xNC1vYmotJChDT05GSUdfUlBNU0dfV1dBTl9DVFJMKSArPSBycG1zZ193d2FuX2N0cmwub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQwMjoyMzowMS41ODg1MjgzMTlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNTE2MTUyMjM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRoaW5nczpcblxuKipEaWdnaW5nIGludG8gV1dBTiBDb25maWd1cmF0aW9uIGFuZCBRQ09NIEJBTSBEbXV4KipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgd2l0aCB0aGlzIFdXQU4gc3R1ZmYuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBzZXQgdXAsIHNvIGZpcnN0LCBsZXQncyBqdW1wIGludG8gYGRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZ2AsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSA2NS4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2Qgb3ZlcnZpZXcgb2YgdGhlIGF2YWlsYWJsZSBjaG9pY2VzIGFuZCBkZXBlbmRlbmNpZXMuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdW5kZXJzdGFuZGluZyB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZmxhZ3MuXG5cbkFmdGVyIHRoYXQsIEknbGwgc3dpdGNoIGdlYXJzIGFuZCByZWFsbHkgZGl2ZSBpbnRvIHRoZSBgcWNvbV9iYW1fZG11eGAgZHJpdmVyLiBJIG5lZWQgdG8gdHJhY2UgaG93IGl0J3MgYmluZGluZyB0byB0aGUgc3lzdGVtLiBXaGF0IGV4YWN0IGhhcmR3YXJlIHJlc291cmNlcyBkb2VzIGl0IHJlcXVpcmU/IEFuZCBhcmUgdGhlcmUgYW55IHNwZWNpZmljIHBsYXRmb3JtIGRlcGVuZGVuY2llcz8gR2V0dGluZyB0aGlzIGxldmVsIG9mIGRldGFpbCBpcyBjcml0aWNhbCB0byBwcm9wZXJseSBpbnRlZ3JhdGluZyBhbmQgdW5kZXJzdGFuZGluZyBob3cgaXQgZnVuY3Rpb25zIHdpdGhpbiB0aGUgbGFyZ2VyIHN5c3RlbS4gSSdtIGxvb2tpbmcgZm9yIGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgcm9sZSBhbmQgcHJlcmVxdWlzaXRlcyBiZWZvcmUgSSBtb3ZlIGZ1cnRoZXIgd2l0aCB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDk2LCJPdXRwdXRUb2tlbnMiOjgyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDI6MjM6MDQuMTA0NjgyNjc2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY5OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYwLFxuICBcIkxpbmVDb3VudFwiOiAyNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDYwOlxcdCAgICAgICAgICBJRCAwLiBBZGRpdGlvbmFsIGxpbmtzIGNhbiBiZSBjcmVhdGVkIHZpYSB3d2FuIHJ0bmV0bGluayB0eXBlLlxcbiAgNjE6XFx0XFxuICA2MjpcXHQgICAgICAgICAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlXFxuICA2MzpcXHQgICAgICAgICAgY2FsbGVkIG1oaV93d2FuX21iaW0uXFxuICA2NDpcXHRcXG4gIDY1OlxcdGNvbmZpZyBRQ09NX0JBTV9ETVVYXFxuICA2NjpcXHRcXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gQkFNLURNVVggV1dBTiBuZXR3b3JrIGRyaXZlclxcXCJcXG4gIDY3OlxcdFxcdGRlcGVuZHMgb24gKERNQV9FTkdJTkUgXFx1MDAyNlxcdTAwMjYgUE0gXFx1MDAyNlxcdTAwMjYgUUNPTV9TTUVNX1NUQVRFKSB8fCBDT01QSUxFX1RFU1RcXG4gIDY4OlxcdFxcdGhlbHBcXG4gIDY5OlxcdFxcdCAgVGhlIEJBTSBEYXRhIE11bHRpcGxleGVyIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgbmV0d29yayBkYXRhIGNoYW5uZWxzXFxuICA3MDpcXHRcXHQgIG9mIG1vZGVtcyBpbnRlZ3JhdGVkIGludG8gbWFueSBvbGRlciBRdWFsY29tbSBTb0NzLCBlLmcuIFF1YWxjb21tXFxuICA3MTpcXHRcXHQgIE1TTTg5MTYgb3IgTVNNODk3NC4gVGhlIGNvbm5lY3Rpb24gY2FuIGJlIGVzdGFibGlzaGVkIHZpYSBRTUkvQVQgZnJvbVxcbiAgNzI6XFx0XFx0ICB1c2Vyc3BhY2Ugd2l0aCBjb250cm9sIHBvcnRzIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSBXV0FOIHN1YnN5c3RlbVxcbiAgNzM6XFx0XFx0ICAoQ09ORklHX1JQTVNHX1dXQU5fQ1RSTCkgb3IgUVJUUiBuZXR3b3JrIHNvY2tldHMgKENPTkZJR19RUlRSKS5cXG4gIDc0OlxcdFxcbiAgNzU6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmVcXG4gIDc2OlxcdFxcdCAgY2FsbGVkIHFjb21fYmFtX2RtdXguXFxuICA3NzpcXHRcXG4gIDc4OlxcdGNvbmZpZyBSUE1TR19XV0FOX0NUUkxcXG4gIDc5OlxcdFxcdHRyaXN0YXRlIFxcXCJSUE1TRyBXV0FOIGNvbnRyb2wgZHJpdmVyXFxcIlxcbiAgODA6XFx0XFx0ZGVwZW5kcyBvbiBSUE1TR1xcbiAgODE6XFx0XFx0aGVscFxcbiAgODI6XFx0XFx0ICBSUE1TRyBXV0FOIENUUkwgYWxsb3dzIG1vZGVtcyBhdmFpbGFibGUgdmlhIFJQTVNHIGNoYW5uZWxzIHRvIGV4cG9zZVxcbiAgODM6XFx0XFx0ICBkaWZmZXJlbnQgbW9kZW0gcHJvdG9jb2xzL3BvcnRzIHRvIHVzZXJzcGFjZSwgaW5jbHVkaW5nIEFUIGFuZCBRTUkuXFxuICA4NDpcXHRcXHQgIFRoZXNlIHByb3RvY29scyBjYW4gYmUgYWNjZXNzZWQgZGlyZWN0bHkgZnJvbSB1c2Vyc3BhY2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDI6MjM6MDQuMTA0NzUxMTE2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MjI2NDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXJ8YmFtX2RtdXhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMjQtI2RlZmluZSBCQU1fRE1VWF9CVUZGRVJfU0laRVxcdFxcdFNaXzJLXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MjU6I2RlZmluZSBCQU1fRE1VWF9IRFJfU0laRVxcdFxcdHNpemVvZihzdHJ1Y3QgYmFtX2RtdXhfaGRyKVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTI2LSNkZWZpbmUgQkFNX0RNVVhfTUFYX0RBVEFfU0laRVxcdFxcdChCQU1fRE1VWF9CVUZGRVJfU0laRSAtIEJBTV9ETVVYX0hEUl9TSVpFKVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM9NDA9ZW51bSB7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy01MS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo1MjpzdHJ1Y3QgYmFtX2RtdXhfaGRyIHtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy01My1cXHR1MTYgbWFnaWM7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02MC1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo2MTpzdHJ1Y3QgYmFtX2RtdXhfc2tiX2RtYSB7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NjI6XFx0c3RydWN0IGJhbV9kbXV4ICpkbXV4O1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTYzLVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02Ni1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo2NzpzdHJ1Y3QgYmFtX2RtdXgge1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTY4LVxcdHN0cnVjdCBkZXZpY2UgKmRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTc3LVxcdHN0cnVjdCBkbWFfY2hhbiAqcngsICp0eDtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo3ODpcXHRzdHJ1Y3QgYmFtX2RtdXhfc2tiX2RtYSByeF9za2JzW0JBTV9ETVVYX05VTV9TS0JdO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjc5OlxcdHN0cnVjdCBiYW1fZG11eF9za2JfZG1hIHR4X3NrYnNbQkFNX0RNVVhfTlVNX1NLQl07XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtODAtXFx0c3BpbmxvY2tfdCB0eF9sb2NrOyAvKiBQcm90ZWN0IHR4X3NrYnMsIHR4X25leHRfc2tiICovXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy04OS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo5MDpzdHJ1Y3QgYmFtX2RtdXhfbmV0ZGV2IHtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo5MTpcXHRzdHJ1Y3QgYmFtX2RtdXggKmRtdXg7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtOTItXFx0dTggY2g7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy05NC1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo5NTpzdGF0aWMgdm9pZCBiYW1fZG11eF9wY192b3RlKHN0cnVjdCBiYW1fZG11eCAqZG11eCwgYm9vbCBlbmFibGUpXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtOTYte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMTAxLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjEwMjpzdGF0aWMgdm9pZCBiYW1fZG11eF9wY19hY2soc3RydWN0IGJhbV9kbXV4ICpkbXV4KVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTEwMy17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0xMDgtXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MTA5OnN0YXRpYyBib29sIGJhbV9kbXV4X3NrYl9kbWFfbWFwKHN0cnVjdCBiYW1fZG11eF9za2JfZG1hICpza2JfZG1hLFxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTExMC1cXHRcXHRcXHRcXHQgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyKVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMTIzLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjEyNDpzdGF0aWMgdm9pZCBiYW1fZG11eF9za2JfZG1hX3VubWFwKHN0cnVjdCBiYW1fZG11eF9za2JfZG1hICpza2JfZG1hLFxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTEyNS1cXHRcXHRcXHRcXHQgICBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIpXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0xMzAtXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MTMxOnN0YXRpYyB2b2lkIGJhbV9kbXV4X3R4X3dha2VfcXVldWVzKHN0cnVjdCBiYW1fZG11eCAqZG11eClcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0xMzIte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMTQ0LVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjE0NTpzdGF0aWMgdm9pZCBiYW1fZG11eF90eF9zdG9wX3F1ZXVlcyhzdHJ1Y3QgYmFtX2RtdXggKmRtdXgpXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMTQ2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTE1OC1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoxNTk6c3RhdGljIHZvaWQgYmFtX2RtdXhfdHhfZG9uZShzdHJ1Y3QgYmFtX2RtdXhfc2tiX2RtYSAqc2tiX2RtYSlcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0xNjAte1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjE2MTpcXHRzdHJ1Y3QgYmFtX2RtdXggKmRtdXggPSBza2JfZG1hLVxcdTAwM2VkbXV4O1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTE2Mi1cXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMTY2LVxcdGlmIChza2JfZG1hLVxcdTAwM2VhZGRyKVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjE2NzpcXHRcXHRiYW1fZG11eF9za2JfZG1hX3VubWFwKHNrYl9kbWEsIERNQV9UT19ERVZJQ0UpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTE2OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTE3MS1cXHRpZiAoc2tiX2RtYSA9PSBcXHUwMDI2ZG11eC1cXHUwMDNldHhfc2tic1tkbXV4LVxcdTAwM2V0eF9uZXh0X3NrYiAlIEJBTV9ETVVYX05VTV9TS0JdKVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjE3MjpcXHRcXHRiYW1fZG11eF90eF93YWtlX3F1ZXVlcyhkbXV4KTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0xNzMtXFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2ZG11eC1cXHUwMDNldHhfbG9jaywgZmxhZ3MpO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMTc1LVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjE3NjpzdGF0aWMgdm9pZCBiYW1fZG11eF90eF9jYWxsYmFjayh2b2lkICpkYXRhKVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTE3Ny17XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MTc4OlxcdHN0cnVjdCBiYW1fZG11eF9za2JfZG1hICpza2JfZG1hID0gZGF0YTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0xNzktXFx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9IHNrYl9kbWEtXFx1MDAzZXNrYjtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTE4MS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoxODI6XFx0YmFtX2RtdXhfdHhfZG9uZShza2JfZG1hKTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0xODMtXFx0aWYgKG5ldGRldilcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0xODQtXFx0XFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChuZXRkZXYsIDEsXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MTg1OlxcdFxcdFxcdFxcdCAgICAgICAoKHN0cnVjdCBiYW1fZG11eF9oZHIgKilza2ItXFx1MDAzZWRhdGEpLVxcdTAwM2VsZW4pO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTE4Ni1cXHRkZXZfY29uc3VtZV9za2JfYW55KHNrYik7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0xODgtXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MTg5OnN0YXRpYyBib29sIGJhbV9kbXV4X3NrYl9kbWFfc3VibWl0X3R4KHN0cnVjdCBiYW1fZG11eF9za2JfZG1hICpza2JfZG1hKVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTE5MC17XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MTkxOlxcdHN0cnVjdCBiYW1fZG11eCAqZG11eCA9IHNrYl9kbWEtXFx1MDAzZWRtdXg7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMTkyLVxcdHN0cnVjdCBkbWFfYXN5bmNfdHhfZGVzY3JpcHRvciAqZGVzYztcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTIwMS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoyMDI6XFx0ZGVzYy1cXHUwMDNlY2FsbGJhY2sgPSBiYW1fZG11eF90eF9jYWxsYmFjaztcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yMDMtXFx0ZGVzYy1cXHUwMDNlY2FsbGJhY2tfcGFyYW0gPSBza2JfZG1hO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMjA3LVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjIwODpzdGF0aWMgc3RydWN0IGJhbV9kbXV4X3NrYl9kbWEgKlxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjIwOTpiYW1fZG11eF90eF9xdWV1ZShzdHJ1Y3QgYmFtX2RtdXggKmRtdXgsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMjEwLXtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoyMTE6XFx0c3RydWN0IGJhbV9kbXV4X3NrYl9kbWEgKnNrYl9kbWE7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMjEyLVxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yMTctXFx0aWYgKHNrYl9kbWEtXFx1MDAzZXNrYikge1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjIxODpcXHRcXHRiYW1fZG11eF90eF9zdG9wX3F1ZXVlcyhkbXV4KTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yMTktXFx0XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2ZG11eC1cXHUwMDNldHhfbG9jaywgZmxhZ3MpO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMjI1LVxcdGlmIChkbXV4LVxcdTAwM2V0eF9za2JzW2RtdXgtXFx1MDAzZXR4X25leHRfc2tiICUgQkFNX0RNVVhfTlVNX1NLQl0uc2tiKVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjIyNjpcXHRcXHRiYW1fZG11eF90eF9zdG9wX3F1ZXVlcyhkbXV4KTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yMjctXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yMzEtXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MjMyOnN0YXRpYyBpbnQgYmFtX2RtdXhfc2VuZF9jbWQoc3RydWN0IGJhbV9kbXV4X25ldGRldiAqYm5kZXYsIHU4IGNtZClcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yMzMte1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjIzNDpcXHRzdHJ1Y3QgYmFtX2RtdXggKmRtdXggPSBibmRldi1cXHUwMDNlZG11eDtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoyMzU6XFx0c3RydWN0IGJhbV9kbXV4X3NrYl9kbWEgKnNrYl9kbWE7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MjM2OlxcdHN0cnVjdCBiYW1fZG11eF9oZHIgKmhkcjtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yMzctXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTI0OC1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoyNDk6XFx0c2tiX2RtYSA9IGJhbV9kbXV4X3R4X3F1ZXVlKGRtdXgsIHNrYik7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMjUwLVxcdGlmICghc2tiX2RtYSkge1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMjU4LVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjI1OTpcXHRpZiAoIWJhbV9kbXV4X3NrYl9kbWFfbWFwKHNrYl9kbWEsIERNQV9UT19ERVZJQ0UpKSB7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMjYwLVxcdFxcdHJldCA9IC1FTk9NRU07XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yNjMtXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MjY0OlxcdGlmICghYmFtX2RtdXhfc2tiX2RtYV9zdWJtaXRfdHgoc2tiX2RtYSkpIHtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yNjUtXFx0XFx0cmV0ID0gLUVJTztcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTI3Mi10eF9mYWlsOlxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjI3MzpcXHRiYW1fZG11eF90eF9kb25lKHNrYl9kbWEpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTI3NC1mcmVlX3NrYjpcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTI3OC1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoyNzk6c3RhdGljIGludCBiYW1fZG11eF9uZXRkZXZfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTI4MC17XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MjgxOlxcdHN0cnVjdCBiYW1fZG11eF9uZXRkZXYgKmJuZGV2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yODItXFx0aW50IHJldDtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yODMtXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6Mjg0OlxcdHJldCA9IGJhbV9kbXV4X3NlbmRfY21kKGJuZGV2LCBCQU1fRE1VWF9DTURfT1BFTik7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMjg1LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yOTEtXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MjkyOnN0YXRpYyBpbnQgYmFtX2RtdXhfbmV0ZGV2X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yOTMte1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjI5NDpcXHRzdHJ1Y3QgYmFtX2RtdXhfbmV0ZGV2ICpibmRldiA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMjk1LVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTI5Ni1cXHRuZXRpZl9zdG9wX3F1ZXVlKG5ldGRldik7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6Mjk3OlxcdGJhbV9kbXV4X3NlbmRfY21kKGJuZGV2LCBCQU1fRE1VWF9DTURfQ0xPU0UpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTI5OC1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jPTMwMT1zdGF0aWMgdW5zaWduZWQgaW50IG5lZWRlZF9yb29tKHVuc2lnbmVkIGludCBhdmFpbCwgdW5zaWduZWQgaW50IG5lZWRlZClcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTMwNy1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzozMDg6c3RhdGljIGludCBiYW1fZG11eF90eF9wcmVwYXJlX3NrYihzdHJ1Y3QgYmFtX2RtdXhfbmV0ZGV2ICpibmRldixcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0zMDktXFx0XFx0XFx0XFx0ICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTMxMy1cXHR1bnNpZ25lZCBpbnQgdGFpbCA9IG5lZWRlZF9yb29tKHNrYl90YWlscm9vbShza2IpLCBwYWQpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjMxNDpcXHRzdHJ1Y3QgYmFtX2RtdXhfaGRyICpoZHI7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMzE1LVxcdGludCByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0zMzUtXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MzM2OnN0YXRpYyBuZXRkZXZfdHhfdCBiYW1fZG11eF9uZXRkZXZfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTMzNy1cXHRcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTMzOC17XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MzM5OlxcdHN0cnVjdCBiYW1fZG11eF9uZXRkZXYgKmJuZGV2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzozNDA6XFx0c3RydWN0IGJhbV9kbXV4ICpkbXV4ID0gYm5kZXYtXFx1MDAzZWRtdXg7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MzQxOlxcdHN0cnVjdCBiYW1fZG11eF9za2JfZG1hICpza2JfZG1hO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTM0Mi1cXHRpbnQgYWN0aXZlLCByZXQ7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMzQzLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjM0NDpcXHRza2JfZG1hID0gYmFtX2RtdXhfdHhfcXVldWUoZG11eCwgc2tiKTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0zNDUtXFx0aWYgKCFza2JfZG1hKVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMzUxLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjM1MjpcXHRyZXQgPSBiYW1fZG11eF90eF9wcmVwYXJlX3NrYihibmRldiwgc2tiKTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0zNTMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTM1NS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzozNTY6XFx0aWYgKCFiYW1fZG11eF9za2JfZG1hX21hcChza2JfZG1hLCBETUFfVE9fREVWSUNFKSlcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0zNTctXFx0XFx0Z290byBkcm9wO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMzY2LVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjM2NzpcXHRpZiAoIWJhbV9kbXV4X3NrYl9kbWFfc3VibWl0X3R4KHNrYl9kbWEpKVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTM2OC1cXHRcXHRnb3RvIGRyb3A7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0zNzMtZHJvcDpcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzozNzQ6XFx0YmFtX2RtdXhfdHhfZG9uZShza2JfZG1hKTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0zNzUtXFx0ZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTM3OC1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzozNzk6c3RhdGljIHZvaWQgYmFtX2RtdXhfdHhfd2FrZXVwX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTM4MC17XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MzgxOlxcdHN0cnVjdCBiYW1fZG11eCAqZG11eCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgYmFtX2RtdXgsIHR4X3dha2V1cF93b3JrKTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0zODItXFx0dW5zaWduZWQgbG9uZyBwZW5kaW5nO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMzk2LVxcdGZvcl9lYWNoX3NldF9iaXQoaSwgXFx1MDAyNnBlbmRpbmcsIEJBTV9ETVVYX05VTV9TS0IpIHtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzozOTc6XFx0XFx0YmFtX2RtdXhfc2tiX2RtYV9zdWJtaXRfdHgoXFx1MDAyNmRtdXgtXFx1MDAzZXR4X3NrYnNbaV0pO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTM5OC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy00MDQtXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NDA1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgYmFtX2RtdXhfb3BzID0ge1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjQwNjpcXHQubmRvX29wZW5cXHQ9IGJhbV9kbXV4X25ldGRldl9vcGVuLFxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjQwNzpcXHQubmRvX3N0b3BcXHQ9IGJhbV9kbXV4X25ldGRldl9zdG9wLFxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjQwODpcXHQubmRvX3N0YXJ0X3htaXRcXHQ9IGJhbV9kbXV4X25ldGRldl9zdGFydF94bWl0LFxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTQwOS1cXHQubmRvX2dldF9zdGF0czY0XFx0PSBkZXZfZ2V0X3RzdGF0czY0LFxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM9NDEyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2aWNlX3R5cGUgd3dhbl90eXBlID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNDE1LVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjQxNjpzdGF0aWMgdm9pZCBiYW1fZG11eF9uZXRkZXZfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy00MTcte1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjQxODpcXHRkZXYtXFx1MDAzZW5ldGRldl9vcHMgPSBcXHUwMDI2YmFtX2RtdXhfb3BzO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTQxOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTQyNS1cXHRkZXYtXFx1MDAzZW1heF9tdHUgPSBCQU1fRE1VWF9NQVhfREFUQV9TSVpFO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjQyNjpcXHRkZXYtXFx1MDAzZW5lZWRlZF9oZWFkcm9vbSA9IHNpemVvZihzdHJ1Y3QgYmFtX2RtdXhfaGRyKTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy00MjctXFx0ZGV2LVxcdTAwM2VuZWVkZWRfdGFpbHJvb20gPSBzaXplb2YodTMyKTsgLyogd29yZC1hbGlnbmVkICovXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy00MzUtXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NDM2OnN0YXRpYyB2b2lkIGJhbV9kbXV4X3JlZ2lzdGVyX25ldGRldl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy00Mzcte1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjQzODpcXHRzdHJ1Y3QgYmFtX2RtdXggKmRtdXggPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IGJhbV9kbXV4LCByZWdpc3Rlcl9uZXRkZXZfd29yayk7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NDM5OlxcdHN0cnVjdCBiYW1fZG11eF9uZXRkZXYgKmJuZGV2O1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTQ0MC1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNDQ3LVxcdFxcdG5ldGRldiA9IGFsbG9jX25ldGRldihzaXplb2YoKmJuZGV2KSwgXFxcInd3YW4lZFxcXCIsIE5FVF9OQU1FX0VOVU0sXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NDQ4OlxcdFxcdFxcdFxcdCAgICAgIGJhbV9kbXV4X25ldGRldl9zZXR1cCk7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNDQ5LVxcdFxcdGlmICghbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNDcwLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjQ3MTpzdGF0aWMgdm9pZCBiYW1fZG11eF9yeF9jYWxsYmFjayh2b2lkICpkYXRhKTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy00NzItXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NDczOnN0YXRpYyBib29sIGJhbV9kbXV4X3NrYl9kbWFfc3VibWl0X3J4KHN0cnVjdCBiYW1fZG11eF9za2JfZG1hICpza2JfZG1hKVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTQ3NC17XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NDc1OlxcdHN0cnVjdCBiYW1fZG11eCAqZG11eCA9IHNrYl9kbWEtXFx1MDAzZWRtdXg7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNDc2LVxcdHN0cnVjdCBkbWFfYXN5bmNfdHhfZGVzY3JpcHRvciAqZGVzYztcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTQ4NS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo0ODY6XFx0ZGVzYy1cXHUwMDNlY2FsbGJhY2sgPSBiYW1fZG11eF9yeF9jYWxsYmFjaztcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy00ODctXFx0ZGVzYy1cXHUwMDNlY2FsbGJhY2tfcGFyYW0gPSBza2JfZG1hO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNDkxLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjQ5MjpzdGF0aWMgYm9vbCBiYW1fZG11eF9za2JfZG1hX3F1ZXVlX3J4KHN0cnVjdCBiYW1fZG11eF9za2JfZG1hICpza2JfZG1hLCBnZnBfdCBnZnApXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNDkzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTUwMC1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo1MDE6XFx0cmV0dXJuIGJhbV9kbXV4X3NrYl9kbWFfbWFwKHNrYl9kbWEsIERNQV9GUk9NX0RFVklDRSkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo1MDI6XFx0ICAgICAgIGJhbV9kbXV4X3NrYl9kbWFfc3VibWl0X3J4KHNrYl9kbWEpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTUwMy19XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNTA0LVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjUwNTpzdGF0aWMgdm9pZCBiYW1fZG11eF9jbWRfZGF0YShzdHJ1Y3QgYmFtX2RtdXhfc2tiX2RtYSAqc2tiX2RtYSlcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy01MDYte1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjUwNzpcXHRzdHJ1Y3QgYmFtX2RtdXggKmRtdXggPSBza2JfZG1hLVxcdTAwM2VkbXV4O1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTUwOC1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gc2tiX2RtYS1cXHUwMDNlc2tiO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjUwOTpcXHRzdHJ1Y3QgYmFtX2RtdXhfaGRyICpoZHIgPSAoc3RydWN0IGJhbV9kbXV4X2hkciAqKXNrYi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy01MTAtXFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiA9IGRtdXgtXFx1MDAzZW5ldGRldnNbaGRyLVxcdTAwM2VjaF07XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy01NDUtXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NTQ2OnN0YXRpYyB2b2lkIGJhbV9kbXV4X2NtZF9vcGVuKHN0cnVjdCBiYW1fZG11eCAqZG11eCwgc3RydWN0IGJhbV9kbXV4X2hkciAqaGRyKVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTU0Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy01NjQtXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NTY1OnN0YXRpYyB2b2lkIGJhbV9kbXV4X2NtZF9jbG9zZShzdHJ1Y3QgYmFtX2RtdXggKmRtdXgsIHN0cnVjdCBiYW1fZG11eF9oZHIgKmhkcilcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy01NjYte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNTc5LVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjU4MDpzdGF0aWMgdm9pZCBiYW1fZG11eF9yeF9jYWxsYmFjayh2b2lkICpkYXRhKVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTU4MS17XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NTgyOlxcdHN0cnVjdCBiYW1fZG11eF9za2JfZG1hICpza2JfZG1hID0gZGF0YTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo1ODM6XFx0c3RydWN0IGJhbV9kbXV4ICpkbXV4ID0gc2tiX2RtYS1cXHUwMDNlZG11eDtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy01ODQtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9IHNrYl9kbWEtXFx1MDAzZXNrYjtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo1ODU6XFx0c3RydWN0IGJhbV9kbXV4X2hkciAqaGRyID0gKHN0cnVjdCBiYW1fZG11eF9oZHIgKilza2ItXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNTg2LVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjU4NzpcXHRiYW1fZG11eF9za2JfZG1hX3VubWFwKHNrYl9kbWEsIERNQV9GUk9NX0RFVklDRSk7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNTg4LVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNjAwLVxcdGNhc2UgQkFNX0RNVVhfQ01EX0RBVEE6XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NjAxOlxcdFxcdGJhbV9kbXV4X2NtZF9kYXRhKHNrYl9kbWEpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTYwMi1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02MDMtXFx0Y2FzZSBCQU1fRE1VWF9DTURfT1BFTjpcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo2MDQ6XFx0XFx0YmFtX2RtdXhfY21kX29wZW4oZG11eCwgaGRyKTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02MDUtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNjA2LVxcdGNhc2UgQkFNX0RNVVhfQ01EX0NMT1NFOlxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjYwNzpcXHRcXHRiYW1fZG11eF9jbWRfY2xvc2UoZG11eCwgaGRyKTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02MDgtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02MTUtb3V0OlxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjYxNjpcXHRpZiAoYmFtX2RtdXhfc2tiX2RtYV9xdWV1ZV9yeChza2JfZG1hLCBHRlBfQVRPTUlDKSlcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02MTctXFx0XFx0ZG1hX2FzeW5jX2lzc3VlX3BlbmRpbmcoZG11eC1cXHUwMDNlcngpO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNjE5LVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjYyMDpzdGF0aWMgYm9vbCBiYW1fZG11eF9wb3dlcl9vbihzdHJ1Y3QgYmFtX2RtdXggKmRtdXgpXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNjIxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTYzNy1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQkFNX0RNVVhfTlVNX1NLQjsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NjM4OlxcdFxcdGlmICghYmFtX2RtdXhfc2tiX2RtYV9xdWV1ZV9yeChcXHUwMDI2ZG11eC1cXHUwMDNlcnhfc2tic1tpXSwgR0ZQX0tFUk5FTCkpXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNjM5LVxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTY0NS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo2NDY6c3RhdGljIHZvaWQgYmFtX2RtdXhfZnJlZV9za2JzKHN0cnVjdCBiYW1fZG11eF9za2JfZG1hIHNrYnNbXSxcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02NDctXFx0XFx0XFx0ICAgICAgIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcilcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTY1MS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQkFNX0RNVVhfTlVNX1NLQjsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NjUyOlxcdFxcdHN0cnVjdCBiYW1fZG11eF9za2JfZG1hICpza2JfZG1hID0gXFx1MDAyNnNrYnNbaV07XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNjUzLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTY1NC1cXHRcXHRpZiAoc2tiX2RtYS1cXHUwMDNlYWRkcilcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo2NTU6XFx0XFx0XFx0YmFtX2RtdXhfc2tiX2RtYV91bm1hcChza2JfZG1hLCBkaXIpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTY1Ni1cXHRcXHRpZiAoc2tiX2RtYS1cXHUwMDNlc2tiKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02NjItXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NjYzOnN0YXRpYyB2b2lkIGJhbV9kbXV4X3Bvd2VyX29mZihzdHJ1Y3QgYmFtX2RtdXggKmRtdXgpXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNjY0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTY3Ni1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo2Nzc6XFx0YmFtX2RtdXhfZnJlZV9za2JzKGRtdXgtXFx1MDAzZXJ4X3NrYnMsIERNQV9GUk9NX0RFVklDRSk7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNjc4LX1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02NzktXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NjgwOnN0YXRpYyBpcnFyZXR1cm5fdCBiYW1fZG11eF9wY19pcnEoaW50IGlycSwgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02ODEte1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjY4MjpcXHRzdHJ1Y3QgYmFtX2RtdXggKmRtdXggPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTY4My1cXHRib29sIG5ld19zdGF0ZSA9ICFkbXV4LVxcdTAwM2VwY19zdGF0ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTY4Ny1cXHRpZiAobmV3X3N0YXRlKSB7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6Njg4OlxcdFxcdGlmIChiYW1fZG11eF9wb3dlcl9vbihkbXV4KSlcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo2ODk6XFx0XFx0XFx0YmFtX2RtdXhfcGNfYWNrKGRtdXgpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTY5MC1cXHRcXHRlbHNlXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NjkxOlxcdFxcdFxcdGJhbV9kbXV4X3Bvd2VyX29mZihkbXV4KTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02OTItXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo2OTM6XFx0XFx0YmFtX2RtdXhfcG93ZXJfb2ZmKGRtdXgpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjY5NDpcXHRcXHRiYW1fZG11eF9wY19hY2soZG11eCk7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNjk1LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTcwMi1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo3MDM6c3RhdGljIGlycXJldHVybl90IGJhbV9kbXV4X3BjX2Fja19pcnEoaW50IGlycSwgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy03MDQte1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjcwNTpcXHRzdHJ1Y3QgYmFtX2RtdXggKmRtdXggPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTcwNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTcxMi1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo3MTM6c3RhdGljIGludCBiYW1fZG11eF9ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTcxNC17XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NzE1OlxcdHN0cnVjdCBiYW1fZG11eCAqZG11eCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTcxNi1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy03MTctXFx0ZGV2X2RiZyhkZXYsIFxcXCJydW50aW1lIHN1c3BlbmRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjcxODpcXHRiYW1fZG11eF9wY192b3RlKGRtdXgsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy03MTktXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy03MjItXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NzIzOnN0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgYmFtX2RtdXhfcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTcyNC17XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NzI1OlxcdHN0cnVjdCBiYW1fZG11eCAqZG11eCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTcyNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTczNC1cXHQvKiBWb3RlIGZvciBwb3dlciBzdGF0ZSAqL1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjczNTpcXHRiYW1fZG11eF9wY192b3RlKGRtdXgsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTczNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTczOS1cXHRcXHRcXHRcXHRcXHQgQkFNX0RNVVhfUkVNT1RFX1RJTUVPVVQpKSB7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NzQwOlxcdFxcdGJhbV9kbXV4X3BjX3ZvdGUoZG11eCwgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTc0MS1cXHRcXHRyZXR1cm4gLUVUSU1FRE9VVDtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTc0Ni1cXHRcXHRcXHRcXHRCQU1fRE1VWF9SRU1PVEVfVElNRU9VVCkpIHtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo3NDc6XFx0XFx0YmFtX2RtdXhfcGNfdm90ZShkbXV4LCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNzQ4LVxcdFxcdHJldHVybiAtRVRJTUVET1VUO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNzUyLVxcdGlmICghZG11eC1cXHUwMDNlcngpIHtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo3NTM6XFx0XFx0YmFtX2RtdXhfcGNfdm90ZShkbXV4LCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNzU0LVxcdFxcdHJldHVybiAtRU5YSU87XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy03NjQtXFx0XFx0ZG11eC1cXHUwMDNldHggPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjc2NTpcXHRcXHRiYW1fZG11eF9ydW50aW1lX3N1c3BlbmQoZGV2KTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy03NjYtXFx0XFx0cmV0dXJuIC1FTlhJTztcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTc3MS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo3NzI6c3RhdGljIGludCBiYW1fZG11eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTc3My17XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNzc0LVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6Nzc1OlxcdHN0cnVjdCBiYW1fZG11eCAqZG11eDtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy03NzYtXFx0aW50IHJldCwgcGNfYWNrX2lycSwgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTgxMC1cXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2ZG11eC1cXHUwMDNldHhfbG9jayk7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6ODExOlxcdElOSVRfV09SSyhcXHUwMDI2ZG11eC1cXHUwMDNldHhfd2FrZXVwX3dvcmssIGJhbV9kbXV4X3R4X3dha2V1cF93b3JrKTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo4MTI6XFx0SU5JVF9XT1JLKFxcdTAwMjZkbXV4LVxcdTAwM2VyZWdpc3Rlcl9uZXRkZXZfd29yaywgYmFtX2RtdXhfcmVnaXN0ZXJfbmV0ZGV2X3dvcmspO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTgxMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTgyNi1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo4Mjc6XFx0cmV0ID0gZGV2bV9yZXF1ZXN0X3RocmVhZGVkX2lycShkZXYsIHBjX2Fja19pcnEsIE5VTEwsIGJhbV9kbXV4X3BjX2Fja19pcnEsXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtODI4LVxcdFxcdFxcdFxcdFxcdElSUUZfT05FU0hPVCwgTlVMTCwgZG11eCk7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy04MzEtXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6ODMyOlxcdHJldCA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEoZGV2LCBkbXV4LVxcdTAwM2VwY19pcnEsIE5VTEwsIGJhbV9kbXV4X3BjX2lycSxcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy04MzMtXFx0XFx0XFx0XFx0XFx0SVJRRl9PTkVTSE9ULCBOVUxMLCBkbXV4KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTg0My1cXHRpZiAoZG11eC1cXHUwMDNlcGNfc3RhdGUpIHtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo4NDQ6XFx0XFx0aWYgKGJhbV9kbXV4X3Bvd2VyX29uKGRtdXgpKVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjg0NTpcXHRcXHRcXHRiYW1fZG11eF9wY19hY2soZG11eCk7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtODQ2LVxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo4NDc6XFx0XFx0XFx0YmFtX2RtdXhfcG93ZXJfb2ZmKGRtdXgpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTg0OC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy04NTctXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6ODU4OnN0YXRpYyB2b2lkIGJhbV9kbXV4X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTg1OS17XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6ODYwOlxcdHN0cnVjdCBiYW1fZG11eCAqZG11eCA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTg2MS1cXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBkbXV4LVxcdTAwM2VkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy04NzctXFx0cG1fcnVudGltZV9kb250X3VzZV9hdXRvc3VzcGVuZChkZXYpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjg3ODpcXHRiYW1fZG11eF9ydW50aW1lX3N1c3BlbmQoZGV2KTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy04NzktXFx0cG1fcnVudGltZV9zZXRfc3VzcGVuZGVkKGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy04ODYtXFx0ZGlzYWJsZV9pcnEoZG11eC1cXHUwMDNlcGNfaXJxKTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo4ODc6XFx0YmFtX2RtdXhfcG93ZXJfb2ZmKGRtdXgpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjg4ODpcXHRiYW1fZG11eF9mcmVlX3NrYnMoZG11eC1cXHUwMDNldHhfc2ticywgRE1BX1RPX0RFVklDRSk7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtODg5LX1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy04OTAtXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6ODkxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBiYW1fZG11eF9wbV9vcHMgPSB7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6ODkyOlxcdFNFVF9SVU5USU1FX1BNX09QUyhiYW1fZG11eF9ydW50aW1lX3N1c3BlbmQsIGJhbV9kbXV4X3J1bnRpbWVfcmVzdW1lLCBOVUxMKVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTg5My19O1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTg5NC1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo4OTU6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYmFtX2RtdXhfb2ZfbWF0Y2hbXSA9IHtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy04OTYtXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJxY29tLGJhbS1kbXV4XFxcIiB9LFxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtODk4LX07XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6ODk5Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGJhbV9kbXV4X29mX21hdGNoKTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy05MDAtXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6OTAxOnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGJhbV9kbXV4X2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo5MDI6XFx0LnByb2JlID0gYmFtX2RtdXhfcHJvYmUsXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6OTAzOlxcdC5yZW1vdmUgPSBiYW1fZG11eF9yZW1vdmUsXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtOTA0LVxcdC5kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtOTA1LVxcdFxcdC5uYW1lID0gXFxcImJhbS1kbXV4XFxcIixcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo5MDY6XFx0XFx0LnBtID0gXFx1MDAyNmJhbV9kbXV4X3BtX29wcyxcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo5MDc6XFx0XFx0Lm9mX21hdGNoX3RhYmxlID0gYmFtX2RtdXhfb2ZfbWF0Y2gsXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtOTA4LVxcdH0sXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtOTA5LX07XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6OTEwOm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoYmFtX2RtdXhfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy05MTEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAyOjIzOjA0LjE1MTk4MDQ3NVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjgzODQxNjA3NTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGBiYW1fZG11eGAgZm9yIEZ1enppbmcgU3VpdGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgYmFtX2RtdXhgLCBhIHBsYXRmb3JtIGRyaXZlciBmb3IgUXVhbGNvbW0gbW9kZW1zIOKAkyBzcGVjaWZpY2FsbHksIFwicWNvbSxiYW0tZG11eFwiLiBJdCBoaW5nZXMgb24gdGhlc2UgZGVwZW5kZW5jaWVzOiBgRE1BX0VOR0lORSBcdTAwMjZcdTAwMjYgUE0gXHUwMDI2XHUwMDI2IFFDT01fU01FTV9TVEFURWAgb3IgYENPTVBJTEVfVEVTVGAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgaXMgdGhpcyBldmVuIGEgdmlhYmxlIHRhcmdldCBmb3IgZnV6emluZyBpbiBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVT8gVGhhdCdzIHRoZSBjcml0aWNhbCBxdWVzdGlvbi5cblxuTGV0IG1lIHJ1biB0aHJvdWdoIHRoZSB1c3VhbCBjaGVja2xpc3QuIFRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIHJ1bGUgaXQgb3V0IGlmIHRoZSBwYXRjaCBpczpcblxuKiAgIERvY3VtZW50YXRpb24sIEtjb25maWcsIG9yIGNvbW1lbnRzIG9ubHkuIE5vcGUuXG4qICAgUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcyDigJMgbG9nZ2luZywgdHJhY2Vwb2ludHMuIE5vdCBsaWtlbHkuXG4qICAgTnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHdpdGhvdXQgZnVuY3Rpb25hbCBpbXBhY3QuIFByb2JhYmx5IG5vdC5cblxuVGhpcyBuZXh0IHBvaW50IGlzIGNydWNpYWw6ICppbXBhc3NhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6YXRpb24qLiBTbyBJIG5lZWQgdG8gdmVyaWZ5OiBjYW4gdGhpcyB0aGluZyBiZSBydW4gaW4gUUVNVT8gSXQncyBhIFF1YWxjb21tIG1vZGVtIGRyaXZlciwgc28sIGV2ZW4gd2hlbiB1c2luZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSwgYW0gSSBnb2luZyB0byBiZSBhYmxlIHRvIHJlYWNoIGl0PyBUaGluZ3MgbGlrZSBVU0IgZ2FkZ2V0IG9yIG1hYzgwMjExX2h3c2ltLCB0aGV5IGFyZSBhIGhhcmQgXCJub1wiIGZvciB0aGUgcHVycG9zZSBvZiBmdXp6aW5nLlxuXG5BbHNvLCBJIGhhdmUgdG8gZGlzcmVnYXJkIGRyaXZlcnMgZm9yIHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUuIE5vIFBDSWUgY2FyZHMgdGhhdCBhcmVuJ3QgYXZhaWxhYmxlIGluIFFFTVUsIG5vIHZlbmRvci1zcGVjaWZpYyBzd2l0Y2gvU21hcnROSUMvR1BVIGRyaXZlcnMgKGxpa2UgbWx4c3csIHBkc1xcX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkuIElmIGl0IG5lZWRzIGEgcGh5c2ljYWwgUENJZSBjYXJkLCBJJ20gb3V0LiBGaW5hbGx5LCBJIHNob3VsZCBpZ25vcmUgZHJpdmVyIHRlYXJkb3duIGNhbGxzIHRoYXQgYXJlIG9ubHkgZXhlY3V0ZWQgZHVyaW5nIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5TbywgbGV0IG1lIHNlZS4uLiBJdCdzIGBxY29tX2JhbV9kbXV4LmNgLCB3aGljaCwgYWNjb3JkaW5nIHRvIHRoZSBjb2RlLCBpcyBhIHBsYXRmb3JtIGRyaXZlciB0aGF0IHVzZXMgYG9mX21hdGNoYCB0byBpZGVudGlmeSBpdHNlbGYgYXMgXCJxY29tLGJhbS1kbXV4XCIsIHNwZWNpZmljYWxseSBmb3IgUXVhbGNvbW0gU29DcyBsaWtlIE1TTTg5MTYgYW5kIE1TTTg5NzQuIE9rYXksIHJpZ2h0IG5vdywgSSBuZWVkIHRvIGZvY3VzIG9uIHdoYXQgaGFwcGVucyBpbiBgYmFtX2RtdXhfcHJvYmVgLiBJIG5lZWQgdG8gaW5zcGVjdCB0aGF0IGZ1bmN0aW9uIGluIGBkcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguY2AgYW5kIGZpZ3VyZSBvdXQgaG93IGl0IHdvcmtzIGFuZCB3aGV0aGVyIHRoZSBleGVjdXRpb24gcGF0aCBjYW4gYmUgcmVhY2hlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTc5OCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSIsImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQwMjoyMzoxMi41MzYxNDQzMTRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDU3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3NzAsXG4gIFwiTGluZUNvdW50XCI6IDYwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA3NzA6XFx0fVxcbiA3NzE6XFx0XFxuIDc3MjpcXHRzdGF0aWMgaW50IGJhbV9kbXV4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuIDc3MzpcXHR7XFxuIDc3NDpcXHRcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2cGRldi1cXHUwMDNlZGV2O1xcbiA3NzU6XFx0XFx0c3RydWN0IGJhbV9kbXV4ICpkbXV4O1xcbiA3NzY6XFx0XFx0aW50IHJldCwgcGNfYWNrX2lycSwgaTtcXG4gNzc3OlxcdFxcdHVuc2lnbmVkIGludCBiaXQ7XFxuIDc3ODpcXHRcXG4gNzc5OlxcdFxcdGRtdXggPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKmRtdXgpLCBHRlBfS0VSTkVMKTtcXG4gNzgwOlxcdFxcdGlmICghZG11eClcXG4gNzgxOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiA3ODI6XFx0XFxuIDc4MzpcXHRcXHRkbXV4LVxcdTAwM2VkZXYgPSBkZXY7XFxuIDc4NDpcXHRcXHRwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBkbXV4KTtcXG4gNzg1OlxcdFxcbiA3ODY6XFx0XFx0ZG11eC1cXHUwMDNlcGNfaXJxID0gcGxhdGZvcm1fZ2V0X2lycV9ieW5hbWUocGRldiwgXFxcInBjXFxcIik7XFxuIDc4NzpcXHRcXHRpZiAoZG11eC1cXHUwMDNlcGNfaXJxIFxcdTAwM2MgMClcXG4gNzg4OlxcdFxcdFxcdHJldHVybiBkbXV4LVxcdTAwM2VwY19pcnE7XFxuIDc4OTpcXHRcXG4gNzkwOlxcdFxcdHBjX2Fja19pcnEgPSBwbGF0Zm9ybV9nZXRfaXJxX2J5bmFtZShwZGV2LCBcXFwicGMtYWNrXFxcIik7XFxuIDc5MTpcXHRcXHRpZiAocGNfYWNrX2lycSBcXHUwMDNjIDApXFxuIDc5MjpcXHRcXHRcXHRyZXR1cm4gcGNfYWNrX2lycTtcXG4gNzkzOlxcdFxcbiA3OTQ6XFx0XFx0ZG11eC1cXHUwMDNlcGMgPSBkZXZtX3Fjb21fc21lbV9zdGF0ZV9nZXQoZGV2LCBcXFwicGNcXFwiLCBcXHUwMDI2Yml0KTtcXG4gNzk1OlxcdFxcdGlmIChJU19FUlIoZG11eC1cXHUwMDNlcGMpKVxcbiA3OTY6XFx0XFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKGRtdXgtXFx1MDAzZXBjKSxcXG4gNzk3OlxcdFxcdFxcdFxcdFxcdCAgICAgXFxcIkZhaWxlZCB0byBnZXQgcGMgc3RhdGVcXFxcblxcXCIpO1xcbiA3OTg6XFx0XFx0ZG11eC1cXHUwMDNlcGNfbWFzayA9IEJJVChiaXQpO1xcbiA3OTk6XFx0XFxuIDgwMDpcXHRcXHRkbXV4LVxcdTAwM2VwY19hY2sgPSBkZXZtX3Fjb21fc21lbV9zdGF0ZV9nZXQoZGV2LCBcXFwicGMtYWNrXFxcIiwgXFx1MDAyNmJpdCk7XFxuIDgwMTpcXHRcXHRpZiAoSVNfRVJSKGRtdXgtXFx1MDAzZXBjX2FjaykpXFxuIDgwMjpcXHRcXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIoZG11eC1cXHUwMDNlcGNfYWNrKSxcXG4gODAzOlxcdFxcdFxcdFxcdFxcdCAgICAgXFxcIkZhaWxlZCB0byBnZXQgcGMtYWNrIHN0YXRlXFxcXG5cXFwiKTtcXG4gODA0OlxcdFxcdGRtdXgtXFx1MDAzZXBjX2Fja19tYXNrID0gQklUKGJpdCk7XFxuIDgwNTpcXHRcXG4gODA2OlxcdFxcdGluaXRfd2FpdHF1ZXVlX2hlYWQoXFx1MDAyNmRtdXgtXFx1MDAzZXBjX3dhaXQpO1xcbiA4MDc6XFx0XFx0aW5pdF9jb21wbGV0aW9uKFxcdTAwMjZkbXV4LVxcdTAwM2VwY19hY2tfY29tcGxldGlvbik7XFxuIDgwODpcXHRcXHRjb21wbGV0ZV9hbGwoXFx1MDAyNmRtdXgtXFx1MDAzZXBjX2Fja19jb21wbGV0aW9uKTtcXG4gODA5OlxcdFxcbiA4MTA6XFx0XFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmRtdXgtXFx1MDAzZXR4X2xvY2spO1xcbiA4MTE6XFx0XFx0SU5JVF9XT1JLKFxcdTAwMjZkbXV4LVxcdTAwM2V0eF93YWtldXBfd29yaywgYmFtX2RtdXhfdHhfd2FrZXVwX3dvcmspO1xcbiA4MTI6XFx0XFx0SU5JVF9XT1JLKFxcdTAwMjZkbXV4LVxcdTAwM2VyZWdpc3Rlcl9uZXRkZXZfd29yaywgYmFtX2RtdXhfcmVnaXN0ZXJfbmV0ZGV2X3dvcmspO1xcbiA4MTM6XFx0XFxuIDgxNDpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQkFNX0RNVVhfTlVNX1NLQjsgaSsrKSB7XFxuIDgxNTpcXHRcXHRcXHRkbXV4LVxcdTAwM2VyeF9za2JzW2ldLmRtdXggPSBkbXV4O1xcbiA4MTY6XFx0XFx0XFx0ZG11eC1cXHUwMDNldHhfc2tic1tpXS5kbXV4ID0gZG11eDtcXG4gODE3OlxcdFxcdH1cXG4gODE4OlxcdFxcbiA4MTk6XFx0XFx0LyogUnVudGltZSBQTSBtYW5hZ2VzIG91ciBvd24gcG93ZXIgdm90ZS5cXG4gODIwOlxcdFxcdCAqIE5vdGUgdGhhdCB0aGUgUlggcGF0aCBtYXkgYmUgYWN0aXZlIGV2ZW4gaWYgd2UgYXJlIHJ1bnRpbWUgc3VzcGVuZGVkLFxcbiA4MjE6XFx0XFx0ICogc2luY2UgaXQgaXMgY29udHJvbGxlZCBieSB0aGUgcmVtb3RlIHNpZGUuXFxuIDgyMjpcXHRcXHQgKi9cXG4gODIzOlxcdFxcdHBtX3J1bnRpbWVfc2V0X2F1dG9zdXNwZW5kX2RlbGF5KGRldiwgQkFNX0RNVVhfQVVUT1NVU1BFTkRfREVMQVkpO1xcbiA4MjQ6XFx0XFx0cG1fcnVudGltZV91c2VfYXV0b3N1c3BlbmQoZGV2KTtcXG4gODI1OlxcdFxcdHBtX3J1bnRpbWVfZW5hYmxlKGRldik7XFxuIDgyNjpcXHRcXG4gODI3OlxcdFxcdHJldCA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEoZGV2LCBwY19hY2tfaXJxLCBOVUxMLCBiYW1fZG11eF9wY19hY2tfaXJxLFxcbiA4Mjg6XFx0XFx0XFx0XFx0XFx0XFx0SVJRRl9PTkVTSE9ULCBOVUxMLCBkbXV4KTtcXG4gODI5OlxcdFxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAyOjIzOjEyLjUzNjIyNjIyNFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3MDk0NDQ0OTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgRnV6emluZyBTdWl0YWJpbGl0eSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBwYXRjaCwgd2hpbGUgcG90ZW50aWFsbHkgaW50ZXJlc3RpbmcgZnJvbSBhIGZ1bmN0aW9uYWwgcGVyc3BlY3RpdmUsIGlzIG5vdCBzdWl0YWJsZSBmb3IgZnV6emluZyBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHQ0UuIEhlcmUncyB3aHk6XG5cblRoZSBjb3JlIG9mIHRoZSBpc3N1ZSBsaWVzIGluIHRoZSBkZXBlbmRlbmNpZXMgb2YgdGhlIGNvZGUgYmVpbmcgbW9kaWZpZWQsIHNwZWNpZmljYWxseSBgcWNvbV9iYW1fZG11eC5jYC4gVGhpcyBkcml2ZXIgcmVsaWVzIG9uIHNldmVyYWwgUXVhbGNvbW0tc3BlY2lmaWMgaGFyZHdhcmUgY29tcG9uZW50czogYGRldm1fcWNvbV9zbWVtX3N0YXRlX2dldGAgKFF1YWxjb21tIFNoYXJlZCBNZW1vcnkpLCBgcGxhdGZvcm1fZ2V0X2lycV9ieW5hbWVgLCBhbmQgUXVhbGNvbW0gQkFNIERNQSBjaGFubmVscy4gIFRoZSBCQU0gRE1BIGNoYW5uZWxzIGFyZSByZXF1ZXN0ZWQgdXNpbmcgXCJyeFwiIGFuZCBcInR4XCIgc3RyaW5ncyB2aWEgYGRtYV9yZXF1ZXN0X2NoYW4oZGV2LCBcInJ4XCIpYC4gQ3J1Y2lhbGx5LCBpdCBhbHNvIGRlcGVuZHMgb24gYSBkZXZpY2UgdHJlZSBub2RlIG1hdGNoaW5nIFwicWNvbSxiYW0tZG11eFwiLlxuXG5JIG5lZWQgdG8gY29uZmlybSBpZiBJIGNhbiBldmVuIHJlYWNoIHRoaXMgaGFyZHdhcmUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gQmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgdGhlcmUncyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gYXZhaWxhYmxlIHdpdGhpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBmb3IgZWl0aGVyIHRoZSBRdWFsY29tbSBCQU0gRE1VWCBvciBRdWFsY29tbSBTTUVNLiBUaGlzIGlzIGJlY2F1c2UgdGhlc2UgY29tcG9uZW50cyBhcmUgU29DLXNwZWNpZmljIGhhcmR3YXJlLCB0aWdodGx5IGludGVncmF0ZWQgd2l0aCBRdWFsY29tbSdzIE1TTTg5MTYgYW5kIE1TTTg5NzQgcGxhdGZvcm1zLiBFdmVuIGlmIHRoZSBjb2RlIGNvbXBpbGVzIHdpdGhvdXQgZXJyb3JzLCBpdCB3b3VsZCBmYWlsIHRvIHByb2JlIGFuZCBpbml0aWFsaXplIHdpdGhvdXQgdGhlIGNvcnJlY3QgZGV2aWNlIHRyZWUgYmluZGluZ3MgYW5kIHRoZSBjb3JyZXNwb25kaW5nIFF1YWxjb21tIFNNRU0vRE1BIGhhcmR3YXJlIGRyaXZlcnMuXG5cbk5vdywgbGV0J3MgbG9vayBhdCB3aGF0IHRoZSBwYXRjaCBhY3R1YWxseSBkb2VzLiBUaGUgcGF0Y2ggYWRkcyBuZXR3b3JrIHN0YXRpc3RpY3Mgc3VwcG9ydCB0byBgcWNvbV9iYW1fZG11eC5jYCwgd2hpY2ggaW5jbHVkZXMgYWRkaW5nIGBkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKC4uLilgIGFuZCBgZGV2X3N3X25ldHN0YXRzX3J4X2FkZCguLi4pYCBpbiBkaWZmZXJlbnQgZnVuY3Rpb25zLiBJdCBhbHNvIGFkZHMgYSBgLm5kb19nZXRfc3RhdHM2NGAgb3BlcmF0aW9uIGFuZCBzZXRzIHRoZSBgZGV2LVx1MDAzZXBjcHVfc3RhdF90eXBlYCBhcHByb3ByaWF0ZWx5LlxuXG5HaXZlbiB0aGF0IHRoaXMgZHJpdmVyIGlzLCBieSBpdHMgdmVyeSBuYXR1cmUsIGV4Y2x1c2l2ZSB0byBRdWFsY29tbSBwbGF0Zm9ybXMsIEkgY2FuIGNvbmZpcm0gdGhhdCBpdCBmYWxscyB1bmRlciB0aGUgcnVsZXMgZm9yIGRldGVybWluaW5nIFwiV29ydGhGdXp6aW5nXCIuIFNwZWNpZmljYWxseSwgdGhlIHBhdGNoIGNvbnRhaW5zIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEl0IGV4cGxpY2l0bHkgcmVxdWlyZXMgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQuXG5cblRoZXJlZm9yZSwgYWZ0ZXIgY2FyZWZ1bCBjb25zaWRlcmF0aW9uLCBJJ20gY29uZmlkZW50IHRoYXQgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGJlIHNldCB0byBgZmFsc2VgLiBNeSByZWFzb25pbmcgaXMgY29uY2lzZTogdGhlIHBhdGNoIG1vZGlmaWVzIGEgUXVhbGNvbW0gcGxhdGZvcm0gZHJpdmVyIChgcWNvbV9iYW1fZG11eC5jYCkgdGhhdCBpcyBkZXBlbmRlbnQgb24gcHJvcHJpZXRhcnkgUXVhbGNvbW0gaGFyZHdhcmUgKFNNRU0sIEJBTSBETUEpIGFuZCBjYW5ub3QgYmUgcmVhY2hlZCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgaXQgdW5zdWl0YWJsZSBmb3IgdGhpcyB0eXBlIG9mIHRlc3RpbmcuXG5cbkZpbmFsbHksIEknbGwgcmV2aWV3IGFuZCBkb3VibGUtY2hlY2sgYWxsIGFzcGVjdHMgb2YgbXkgYW5hbHlzaXM6IHRoZSBkZXBlbmRlbmNpZXMsIHRoZSBuYXR1cmUgb2YgdGhlIHBhdGNoLCBhbmQgdGhlIGZ1enppbmcgZW52aXJvbm1lbnQgY29uc3RyYWludHMuIEV2ZXJ5dGhpbmcgY2hlY2tzIG91dCwgYW5kIEknbGwgcHJvY2VlZCBhY2NvcmRpbmdseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc4MjQsIk91dHB1dFRva2VucyI6MTI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzA0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDI6MjM6MTkuNjMwNjczMjY0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkwNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMgdG8gYWRkIHNvZnR3YXJlIG5ldHN0YXRzIGFjY291bnRpbmcuIFRoaXMgZHJpdmVyIGlzIHNwZWNpZmljIHRvIFF1YWxjb21tIFNvQ3MgKGUuZy4gTVNNODkxNi9NU004OTc0KSByZXF1aXJpbmcgUXVhbGNvbW0gU01FTSBzdGF0ZSBhbmQgRE1BIGVuZ2luZSBoYXJkd2FyZSwgd2hpY2ggaXMgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgdGVzdCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gSGVuY2UsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMgdG8gYWRkIHNvZnR3YXJlIG5ldHN0YXRzIGFjY291bnRpbmcuIFRoaXMgZHJpdmVyIGlzIHNwZWNpZmljIHRvIFF1YWxjb21tIFNvQ3MgKGUuZy4gTVNNODkxNi9NU004OTc0KSByZXF1aXJpbmcgUXVhbGNvbW0gU01FTSBzdGF0ZSBhbmQgRE1BIGVuZ2luZSBoYXJkd2FyZSwgd2hpY2ggaXMgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgdGVzdCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gSGVuY2UsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDI6MjM6MTkuNjMwNjk1MzE0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow4vhl7[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-01 02:21:33 +0000 UTC FinishedAt: 2026-09-01 02:23:20 +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+CgkJCTx0ZD4yMDI2LzA5LzAxIDAyOjIyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMgdG8gYWRkIHNvZnR3YXJlIG5ldHN0YXRzIGFjY291bnRpbmcuIFRoaXMgZHJpdmVyIGlzIHNwZWNpZmljIHRvIFF1YWxjb21tIFNvQ3MgKGUuZy4gTVNNODkxNi9NU004OTc0KSByZXF1aXJpbmcgUXVhbGNvbW0gU01FTSBzdGF0ZSBhbmQgRE1BIGVuZ2luZSBoYXJkd2FyZSwgd2hpY2ggaXMgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgdGVzdCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gSGVuY2UsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMjoyMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDNhYjI0Y2EwMTY4ZTcxMDliOGE1YjFmNTM3ZTRjYmViOGVhZjZiYzlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCAxIDAyOjIyOjUxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jIGIvZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmNcbmluZGV4IGNjNmFjZThkNjQzNzEuLjViY2FjMmNjYWFiZDYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmNcbkBAIC0xNzcsOCAmIzQzOzE3NywxMiBAQCBzdGF0aWMgdm9pZCBiYW1fZG11eF90eF9jYWxsYmFjayh2b2lkICpkYXRhKVxuIHtcbiBcdHN0cnVjdCBiYW1fZG11eF9za2JfZG1hICpza2JfZG1hID0gZGF0YTtcbiBcdHN0cnVjdCBza19idWZmICpza2IgPSBza2JfZG1hLVx1MDAzZXNrYjtcbiYjNDM7XHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2ID0gc2tiLVx1MDAzZWRldjtcbiBcbiBcdGJhbV9kbXV4X3R4X2RvbmUoc2tiX2RtYSk7XG4mIzQzO1x0aWYgKG5ldGRldilcbiYjNDM7XHRcdGRldl9zd19uZXRzdGF0c190eF9hZGQobmV0ZGV2LCAxLFxuJiM0MztcdFx0XHRcdCAgICAgICAoKHN0cnVjdCBiYW1fZG11eF9oZHIgKilza2ItXHUwMDNlZGF0YSktXHUwMDNlbGVuKTtcbiBcdGRldl9jb25zdW1lX3NrYl9hbnkoc2tiKTtcbiB9XG4gXG5AQCAtNDAyLDYgJiM0Mzs0MDYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGJhbV9kbXV4X29wcyA9IHtcbiBcdC5uZG9fb3Blblx0PSBiYW1fZG11eF9uZXRkZXZfb3BlbixcbiBcdC5uZG9fc3RvcFx0PSBiYW1fZG11eF9uZXRkZXZfc3RvcCxcbiBcdC5uZG9fc3RhcnRfeG1pdFx0PSBiYW1fZG11eF9uZXRkZXZfc3RhcnRfeG1pdCxcbiYjNDM7XHQubmRvX2dldF9zdGF0czY0XHQ9IGRldl9nZXRfdHN0YXRzNjQsXG4gfTtcbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGRldmljZV90eXBlIHd3YW5fdHlwZSA9IHtcbkBAIC00MjEsNiAmIzQzOzQyNiw3IEBAIHN0YXRpYyB2b2lkIGJhbV9kbXV4X25ldGRldl9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0ZGV2LVx1MDAzZW5lZWRlZF9oZWFkcm9vbSA9IHNpemVvZihzdHJ1Y3QgYmFtX2RtdXhfaGRyKTtcbiBcdGRldi1cdTAwM2VuZWVkZWRfdGFpbHJvb20gPSBzaXplb2YodTMyKTsgLyogd29yZC1hbGlnbmVkICovXG4gXHRkZXYtXHUwMDNldHhfcXVldWVfbGVuID0gREVGQVVMVF9UWF9RVUVVRV9MRU47XG4mIzQzO1x0ZGV2LVx1MDAzZXBjcHVfc3RhdF90eXBlID0gTkVUREVWX1BDUFVfU1RBVF9UU1RBVFM7XG4gXG4gXHQvKiBUaGlzIHBlcm0gYWRkciB3aWxsIGJlIHVzZWQgYXMgaW50ZXJmYWNlIGlkZW50aWZpZXIgYnkgSVB2NiAqL1xuIFx0ZGV2LVx1MDAzZWFkZHJfYXNzaWduX3R5cGUgPSBORVRfQUREUl9SQU5ET007XG5AQCAtNTMzLDYgJiM0Mzs1MzksNyBAQCBzdGF0aWMgdm9pZCBiYW1fZG11eF9jbWRfZGF0YShzdHJ1Y3QgYmFtX2RtdXhfc2tiX2RtYSAqc2tiX2RtYSlcbiBcdFx0YnJlYWs7XG4gXHR9XG4gXG4mIzQzO1x0ZGV2X3N3X25ldHN0YXRzX3J4X2FkZChuZXRkZXYsIHNrYi1cdTAwM2VsZW4pO1xuIFx0bmV0aWZfcmVjZWl2ZV9za2Ioc2tiKTtcbiB9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMDI6MjI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMgdG8gYWRkIHNvZnR3YXJlIG5ldHN0YXRzIGFjY291bnRpbmcuIFRoaXMgZHJpdmVyIGlzIHNwZWNpZmljIHRvIFF1YWxjb21tIFNvQ3MgKGUuZy4gTVNNODkxNi9NU004OTc0KSByZXF1aXJpbmcgUXVhbGNvbW0gU01FTSBzdGF0ZSBhbmQgRE1BIGVuZ2luZSBoYXJkd2FyZSwgd2hpY2ggaXMgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgdGVzdCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gSGVuY2UsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDNhYjI0Y2EwMTY4ZTcxMDliOGE1YjFmNTM3ZTRjYmViOGVhZjZiYzkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIFNlcCAxIDAyOjIyOjUxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMgYi9kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYwppbmRleCBjYzZhY2U4ZDY0MzcxLi41YmNhYzJjY2FhYmQ2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYwpAQCAtMTc3LDggJiM0MzsxNzcsMTIgQEAgc3RhdGljIHZvaWQgYmFtX2RtdXhfdHhfY2FsbGJhY2sodm9pZCAqZGF0YSkKIHsKIAlzdHJ1Y3QgYmFtX2RtdXhfc2tiX2RtYSAqc2tiX2RtYSA9IGRhdGE7CiAJc3RydWN0IHNrX2J1ZmYgKnNrYiA9IHNrYl9kbWEtJmd0O3NrYjsKJiM0MzsJc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiA9IHNrYi0mZ3Q7ZGV2OwogCiAJYmFtX2RtdXhfdHhfZG9uZShza2JfZG1hKTsKJiM0MzsJaWYgKG5ldGRldikKJiM0MzsJCWRldl9zd19uZXRzdGF0c190eF9hZGQobmV0ZGV2LCAxLAomIzQzOwkJCQkgICAgICAgKChzdHJ1Y3QgYmFtX2RtdXhfaGRyICopc2tiLSZndDtkYXRhKS0mZ3Q7bGVuKTsKIAlkZXZfY29uc3VtZV9za2JfYW55KHNrYik7CiB9CiAKQEAgLTQwMiw2ICYjNDM7NDA2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBiYW1fZG11eF9vcHMgPSB7CiAJLm5kb19vcGVuCT0gYmFtX2RtdXhfbmV0ZGV2X29wZW4sCiAJLm5kb19zdG9wCT0gYmFtX2RtdXhfbmV0ZGV2X3N0b3AsCiAJLm5kb19zdGFydF94bWl0CT0gYmFtX2RtdXhfbmV0ZGV2X3N0YXJ0X3htaXQsCiYjNDM7CS5uZG9fZ2V0X3N0YXRzNjQJPSBkZXZfZ2V0X3RzdGF0czY0LAogfTsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZpY2VfdHlwZSB3d2FuX3R5cGUgPSB7CkBAIC00MjEsNiAmIzQzOzQyNiw3IEBAIHN0YXRpYyB2b2lkIGJhbV9kbXV4X25ldGRldl9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCWRldi0mZ3Q7bmVlZGVkX2hlYWRyb29tID0gc2l6ZW9mKHN0cnVjdCBiYW1fZG11eF9oZHIpOwogCWRldi0mZ3Q7bmVlZGVkX3RhaWxyb29tID0gc2l6ZW9mKHUzMik7IC8qIHdvcmQtYWxpZ25lZCAqLwogCWRldi0mZ3Q7dHhfcXVldWVfbGVuID0gREVGQVVMVF9UWF9RVUVVRV9MRU47CiYjNDM7CWRldi0mZ3Q7cGNwdV9zdGF0X3R5cGUgPSBORVRERVZfUENQVV9TVEFUX1RTVEFUUzsKIAogCS8qIFRoaXMgcGVybSBhZGRyIHdpbGwgYmUgdXNlZCBhcyBpbnRlcmZhY2UgaWRlbnRpZmllciBieSBJUHY2ICovCiAJZGV2LSZndDthZGRyX2Fzc2lnbl90eXBlID0gTkVUX0FERFJfUkFORE9NOwpAQCAtNTMzLDYgJiM0Mzs1MzksNyBAQCBzdGF0aWMgdm9pZCBiYW1fZG11eF9jbWRfZGF0YShzdHJ1Y3QgYmFtX2RtdXhfc2tiX2RtYSAqc2tiX2RtYSkKIAkJYnJlYWs7CiAJfQogCiYjNDM7CWRldl9zd19uZXRzdGF0c19yeF9hZGQobmV0ZGV2LCBza2ItJmd0O2xlbik7CiAJbmV0aWZfcmVjZWl2ZV9za2Ioc2tiKTsKIH0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMjoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTM1CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgV1dBTiBEcml2ZXIgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHBhdGNoIGFuZCB0aGUgZHJpdmVyIGl0JiMzOTtzIHRvdWNoaW5nIOKAkyBzcGVjaWZpY2FsbHksIGBkcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGdldCBhIHNvbGlkIG92ZXJ2aWV3IG9mIGl0cyBjb250ZXh0LiBGaXJzdCwgSSB3YW50IHRvIGNvbmZpcm0gdGhlIGZpbGUmIzM5O3MgbG9jYXRpb24gYW5kIHdoYXQgaXRzIEtjb25maWcgYW5kIGhhcmR3YXJlIGRlcGVuZGVuY2llcyBhcmUuIFRoYXQgd2lsbCBnaXZlIG1lIGEgdml0YWwgdW5kZXJzdGFuZGluZyBvZiB0aGUgY29tcG9uZW50cyBpbnZvbHZlZC4KCkkmIzM5O2xsIHN0YXJ0IHdpdGggYSBxdWljayBjaGVjayBvZiBgcWNvbV9iYW1fZG11eC5jYCBpdHNlbGYuIFRoZW4sIEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlIHdpdGhpbiB0aGF0IGRpcmVjdG9yeSwgYGRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZ2AuIEkmIzM5O2xsIHVzZSBgZ3JlcHBlcmAgKG9yIGByZWFkLWZpbGVgIGlmIHRoYXQmIzM5O3MgbW9yZSBhcHByb3ByaWF0ZSkgdG8gcXVpY2tseSBwYXJzZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBhbnkgb3RoZXIgcGVydGluZW50IGNvbW1lbnRzIG9yIGNvZGUgZnJhZ21lbnRzIHdpdGhpbiB0aG9zZSBmaWxlcy4gVGhhdCYjMzk7bGwgc2V0IHRoZSBzdGFnZSBmb3IgYSBtb3JlIHRob3JvdWdoIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAyOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBRQ09NX0JBTV9ETVVYfFFDT01fQkFNX0RNVVgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93d2FuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZz01Mz1jb25maWcgTUhJX1dXQU5fTUJJTVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy02NC1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzo2NTpjb25maWcgUUNPTV9CQU1fRE1VWFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTY2LVx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gQkFNLURNVVggV1dBTiBuZXR3b3JrIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vTWFrZWZpbGU9MTI9b2JqLSQoQ09ORklHX01ISV9XV0FOX01CSU0pICYjNDM7PSBtaGlfd3dhbl9tYmltLm9cbmRyaXZlcnMvbmV0L3d3YW4vTWFrZWZpbGU6MTM6b2JqLSQoQ09ORklHX1FDT01fQkFNX0RNVVgpICYjNDM7PSBxY29tX2JhbV9kbXV4Lm9cbmRyaXZlcnMvbmV0L3d3YW4vTWFrZWZpbGUtMTQtb2JqLSQoQ09ORklHX1JQTVNHX1dXQU5fQ1RSTCkgJiM0Mzs9IHJwbXNnX3d3YW5fY3RybC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMDI6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA5NgoJCQkJCQkJb3V0cHV0OiA4MgoJCQkJCQkJdGhvdWdodHM6IDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aGluZ3M6CgoqKkRpZ2dpbmcgaW50byBXV0FOIENvbmZpZ3VyYXRpb24gYW5kIFFDT00gQkFNIERtdXgqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgd2l0aCB0aGlzIFdXQU4gc3R1ZmYuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBzZXQgdXAsIHNvIGZpcnN0LCBsZXQmIzM5O3MganVtcCBpbnRvIGBkcml2ZXJzL25ldC93d2FuL0tjb25maWdgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgNjUuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIG92ZXJ2aWV3IG9mIHRoZSBhdmFpbGFibGUgY2hvaWNlcyBhbmQgZGVwZW5kZW5jaWVzLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBmbGFncy4KCkFmdGVyIHRoYXQsIEkmIzM5O2xsIHN3aXRjaCBnZWFycyBhbmQgcmVhbGx5IGRpdmUgaW50byB0aGUgYHFjb21fYmFtX2RtdXhgIGRyaXZlci4gSSBuZWVkIHRvIHRyYWNlIGhvdyBpdCYjMzk7cyBiaW5kaW5nIHRvIHRoZSBzeXN0ZW0uIFdoYXQgZXhhY3QgaGFyZHdhcmUgcmVzb3VyY2VzIGRvZXMgaXQgcmVxdWlyZT8gQW5kIGFyZSB0aGVyZSBhbnkgc3BlY2lmaWMgcGxhdGZvcm0gZGVwZW5kZW5jaWVzPyBHZXR0aW5nIHRoaXMgbGV2ZWwgb2YgZGV0YWlsIGlzIGNyaXRpY2FsIHRvIHByb3Blcmx5IGludGVncmF0aW5nIGFuZCB1bmRlcnN0YW5kaW5nIGhvdyBpdCBmdW5jdGlvbnMgd2l0aGluIHRoZSBsYXJnZXIgc3lzdGVtLiBJJiMzOTttIGxvb2tpbmcgZm9yIGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgcm9sZSBhbmQgcHJlcmVxdWlzaXRlcyBiZWZvcmUgSSBtb3ZlIGZ1cnRoZXIgd2l0aCB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAyOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA2MDpcdCAgICAgICAgICBJRCAwLiBBZGRpdGlvbmFsIGxpbmtzIGNhbiBiZSBjcmVhdGVkIHZpYSB3d2FuIHJ0bmV0bGluayB0eXBlLlxuICA2MTpcdFxuICA2MjpcdCAgICAgICAgICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmVcbiAgNjM6XHQgICAgICAgICAgY2FsbGVkIG1oaV93d2FuX21iaW0uXG4gIDY0Olx0XG4gIDY1Olx0Y29uZmlnIFFDT01fQkFNX0RNVVhcbiAgNjY6XHRcdHRyaXN0YXRlIFwmIzM0O1F1YWxjb21tIEJBTS1ETVVYIFdXQU4gbmV0d29yayBkcml2ZXJcJiMzNDtcbiAgNjc6XHRcdGRlcGVuZHMgb24gKERNQV9FTkdJTkUgXHUwMDI2XHUwMDI2IFBNIFx1MDAyNlx1MDAyNiBRQ09NX1NNRU1fU1RBVEUpIHx8IENPTVBJTEVfVEVTVFxuICA2ODpcdFx0aGVscFxuICA2OTpcdFx0ICBUaGUgQkFNIERhdGEgTXVsdGlwbGV4ZXIgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBuZXR3b3JrIGRhdGEgY2hhbm5lbHNcbiAgNzA6XHRcdCAgb2YgbW9kZW1zIGludGVncmF0ZWQgaW50byBtYW55IG9sZGVyIFF1YWxjb21tIFNvQ3MsIGUuZy4gUXVhbGNvbW1cbiAgNzE6XHRcdCAgTVNNODkxNiBvciBNU004OTc0LiBUaGUgY29ubmVjdGlvbiBjYW4gYmUgZXN0YWJsaXNoZWQgdmlhIFFNSS9BVCBmcm9tXG4gIDcyOlx0XHQgIHVzZXJzcGFjZSB3aXRoIGNvbnRyb2wgcG9ydHMgYXZhaWxhYmxlIHRocm91Z2ggdGhlIFdXQU4gc3Vic3lzdGVtXG4gIDczOlx0XHQgIChDT05GSUdfUlBNU0dfV1dBTl9DVFJMKSBvciBRUlRSIG5ldHdvcmsgc29ja2V0cyAoQ09ORklHX1FSVFIpLlxuICA3NDpcdFxuICA3NTpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmVcbiAgNzY6XHRcdCAgY2FsbGVkIHFjb21fYmFtX2RtdXguXG4gIDc3Olx0XG4gIDc4Olx0Y29uZmlnIFJQTVNHX1dXQU5fQ1RSTFxuICA3OTpcdFx0dHJpc3RhdGUgXCYjMzQ7UlBNU0cgV1dBTiBjb250cm9sIGRyaXZlclwmIzM0O1xuICA4MDpcdFx0ZGVwZW5kcyBvbiBSUE1TR1xuICA4MTpcdFx0aGVscFxuICA4MjpcdFx0ICBSUE1TRyBXV0FOIENUUkwgYWxsb3dzIG1vZGVtcyBhdmFpbGFibGUgdmlhIFJQTVNHIGNoYW5uZWxzIHRvIGV4cG9zZVxuICA4MzpcdFx0ICBkaWZmZXJlbnQgbW9kZW0gcHJvdG9jb2xzL3BvcnRzIHRvIHVzZXJzcGFjZSwgaW5jbHVkaW5nIEFUIGFuZCBRTUkuXG4gIDg0Olx0XHQgIFRoZXNlIHByb3RvY29scyBjYW4gYmUgYWNjZXNzZWQgZGlyZWN0bHkgZnJvbSB1c2Vyc3BhY2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMjoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfcGxhdGZvcm1fZHJpdmVyfGJhbV9kbXV4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMjQtI2RlZmluZSBCQU1fRE1VWF9CVUZGRVJfU0laRVx0XHRTWl8yS1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MjU6I2RlZmluZSBCQU1fRE1VWF9IRFJfU0laRVx0XHRzaXplb2Yoc3RydWN0IGJhbV9kbXV4X2hkcilcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTI2LSNkZWZpbmUgQkFNX0RNVVhfTUFYX0RBVEFfU0laRVx0XHQoQkFNX0RNVVhfQlVGRkVSX1NJWkUgLSBCQU1fRE1VWF9IRFJfU0laRSlcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYz00MD1lbnVtIHtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy01MS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjUyOnN0cnVjdCBiYW1fZG11eF9oZHIge1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNTMtXHR1MTYgbWFnaWM7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNjAtXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo2MTpzdHJ1Y3QgYmFtX2RtdXhfc2tiX2RtYSB7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo2MjpcdHN0cnVjdCBiYW1fZG11eCAqZG11eDtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTYzLVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02Ni1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjY3OnN0cnVjdCBiYW1fZG11eCB7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02OC1cdHN0cnVjdCBkZXZpY2UgKmRldjtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy03Ny1cdHN0cnVjdCBkbWFfY2hhbiAqcngsICp0eDtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjc4Olx0c3RydWN0IGJhbV9kbXV4X3NrYl9kbWEgcnhfc2tic1tCQU1fRE1VWF9OVU1fU0tCXTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjc5Olx0c3RydWN0IGJhbV9kbXV4X3NrYl9kbWEgdHhfc2tic1tCQU1fRE1VWF9OVU1fU0tCXTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTgwLVx0c3BpbmxvY2tfdCB0eF9sb2NrOyAvKiBQcm90ZWN0IHR4X3NrYnMsIHR4X25leHRfc2tiICovXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtODktXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo5MDpzdHJ1Y3QgYmFtX2RtdXhfbmV0ZGV2IHtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjkxOlx0c3RydWN0IGJhbV9kbXV4ICpkbXV4O1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtOTItXHR1OCBjaDtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy05NC1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjk1OnN0YXRpYyB2b2lkIGJhbV9kbXV4X3BjX3ZvdGUoc3RydWN0IGJhbV9kbXV4ICpkbXV4LCBib29sIGVuYWJsZSlcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTk2LXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0xMDEtXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoxMDI6c3RhdGljIHZvaWQgYmFtX2RtdXhfcGNfYWNrKHN0cnVjdCBiYW1fZG11eCAqZG11eClcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTEwMy17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMTA4LVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MTA5OnN0YXRpYyBib29sIGJhbV9kbXV4X3NrYl9kbWFfbWFwKHN0cnVjdCBiYW1fZG11eF9za2JfZG1hICpza2JfZG1hLFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMTEwLVx0XHRcdFx0IGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcilcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0xMjMtXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoxMjQ6c3RhdGljIHZvaWQgYmFtX2RtdXhfc2tiX2RtYV91bm1hcChzdHJ1Y3QgYmFtX2RtdXhfc2tiX2RtYSAqc2tiX2RtYSxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTEyNS1cdFx0XHRcdCAgIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcilcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0xMzAtXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoxMzE6c3RhdGljIHZvaWQgYmFtX2RtdXhfdHhfd2FrZV9xdWV1ZXMoc3RydWN0IGJhbV9kbXV4ICpkbXV4KVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMTMyLXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0xNDQtXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoxNDU6c3RhdGljIHZvaWQgYmFtX2RtdXhfdHhfc3RvcF9xdWV1ZXMoc3RydWN0IGJhbV9kbXV4ICpkbXV4KVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMTQ2LXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0xNTgtXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoxNTk6c3RhdGljIHZvaWQgYmFtX2RtdXhfdHhfZG9uZShzdHJ1Y3QgYmFtX2RtdXhfc2tiX2RtYSAqc2tiX2RtYSlcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTE2MC17XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoxNjE6XHRzdHJ1Y3QgYmFtX2RtdXggKmRtdXggPSBza2JfZG1hLVx1MDAzZWRtdXg7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0xNjItXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTE2Ni1cdGlmIChza2JfZG1hLVx1MDAzZWFkZHIpXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoxNjc6XHRcdGJhbV9kbXV4X3NrYl9kbWFfdW5tYXAoc2tiX2RtYSwgRE1BX1RPX0RFVklDRSk7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0xNjgtXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMTcxLVx0aWYgKHNrYl9kbWEgPT0gXHUwMDI2ZG11eC1cdTAwM2V0eF9za2JzW2RtdXgtXHUwMDNldHhfbmV4dF9za2IgJSBCQU1fRE1VWF9OVU1fU0tCXSlcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjE3MjpcdFx0YmFtX2RtdXhfdHhfd2FrZV9xdWV1ZXMoZG11eCk7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0xNzMtXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmRtdXgtXHUwMDNldHhfbG9jaywgZmxhZ3MpO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTE3NS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjE3NjpzdGF0aWMgdm9pZCBiYW1fZG11eF90eF9jYWxsYmFjayh2b2lkICpkYXRhKVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMTc3LXtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjE3ODpcdHN0cnVjdCBiYW1fZG11eF9za2JfZG1hICpza2JfZG1hID0gZGF0YTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTE3OS1cdHN0cnVjdCBza19idWZmICpza2IgPSBza2JfZG1hLVx1MDAzZXNrYjtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0xODEtXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoxODI6XHRiYW1fZG11eF90eF9kb25lKHNrYl9kbWEpO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMTgzLVx0aWYgKG5ldGRldilcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTE4NC1cdFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChuZXRkZXYsIDEsXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoxODU6XHRcdFx0XHQgICAgICAgKChzdHJ1Y3QgYmFtX2RtdXhfaGRyICopc2tiLVx1MDAzZWRhdGEpLVx1MDAzZWxlbik7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0xODYtXHRkZXZfY29uc3VtZV9za2JfYW55KHNrYik7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMTg4LVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MTg5OnN0YXRpYyBib29sIGJhbV9kbXV4X3NrYl9kbWFfc3VibWl0X3R4KHN0cnVjdCBiYW1fZG11eF9za2JfZG1hICpza2JfZG1hKVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMTkwLXtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjE5MTpcdHN0cnVjdCBiYW1fZG11eCAqZG11eCA9IHNrYl9kbWEtXHUwMDNlZG11eDtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTE5Mi1cdHN0cnVjdCBkbWFfYXN5bmNfdHhfZGVzY3JpcHRvciAqZGVzYztcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yMDEtXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoyMDI6XHRkZXNjLVx1MDAzZWNhbGxiYWNrID0gYmFtX2RtdXhfdHhfY2FsbGJhY2s7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yMDMtXHRkZXNjLVx1MDAzZWNhbGxiYWNrX3BhcmFtID0gc2tiX2RtYTtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yMDctXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoyMDg6c3RhdGljIHN0cnVjdCBiYW1fZG11eF9za2JfZG1hICpcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjIwOTpiYW1fZG11eF90eF9xdWV1ZShzdHJ1Y3QgYmFtX2RtdXggKmRtdXgsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yMTAte1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MjExOlx0c3RydWN0IGJhbV9kbXV4X3NrYl9kbWEgKnNrYl9kbWE7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yMTItXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTIxNy1cdGlmIChza2JfZG1hLVx1MDAzZXNrYikge1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MjE4Olx0XHRiYW1fZG11eF90eF9zdG9wX3F1ZXVlcyhkbXV4KTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTIxOS1cdFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZkbXV4LVx1MDAzZXR4X2xvY2ssIGZsYWdzKTtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yMjUtXHRpZiAoZG11eC1cdTAwM2V0eF9za2JzW2RtdXgtXHUwMDNldHhfbmV4dF9za2IgJSBCQU1fRE1VWF9OVU1fU0tCXS5za2IpXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoyMjY6XHRcdGJhbV9kbXV4X3R4X3N0b3BfcXVldWVzKGRtdXgpO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMjI3LVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTIzMS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjIzMjpzdGF0aWMgaW50IGJhbV9kbXV4X3NlbmRfY21kKHN0cnVjdCBiYW1fZG11eF9uZXRkZXYgKmJuZGV2LCB1OCBjbWQpXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yMzMte1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MjM0Olx0c3RydWN0IGJhbV9kbXV4ICpkbXV4ID0gYm5kZXYtXHUwMDNlZG11eDtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjIzNTpcdHN0cnVjdCBiYW1fZG11eF9za2JfZG1hICpza2JfZG1hO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MjM2Olx0c3RydWN0IGJhbV9kbXV4X2hkciAqaGRyO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMjM3LVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yNDgtXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoyNDk6XHRza2JfZG1hID0gYmFtX2RtdXhfdHhfcXVldWUoZG11eCwgc2tiKTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTI1MC1cdGlmICghc2tiX2RtYSkge1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTI1OC1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjI1OTpcdGlmICghYmFtX2RtdXhfc2tiX2RtYV9tYXAoc2tiX2RtYSwgRE1BX1RPX0RFVklDRSkpIHtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTI2MC1cdFx0cmV0ID0gLUVOT01FTTtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yNjMtXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoyNjQ6XHRpZiAoIWJhbV9kbXV4X3NrYl9kbWFfc3VibWl0X3R4KHNrYl9kbWEpKSB7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yNjUtXHRcdHJldCA9IC1FSU87XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMjcyLXR4X2ZhaWw6XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoyNzM6XHRiYW1fZG11eF90eF9kb25lKHNrYl9kbWEpO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMjc0LWZyZWVfc2tiOlxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTI3OC1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjI3OTpzdGF0aWMgaW50IGJhbV9kbXV4X25ldGRldl9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yODAte1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MjgxOlx0c3RydWN0IGJhbV9kbXV4X25ldGRldiAqYm5kZXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMjgyLVx0aW50IHJldDtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTI4My1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjI4NDpcdHJldCA9IGJhbV9kbXV4X3NlbmRfY21kKGJuZGV2LCBCQU1fRE1VWF9DTURfT1BFTik7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yODUtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTI5MS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjI5MjpzdGF0aWMgaW50IGJhbV9kbXV4X25ldGRldl9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yOTMte1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6Mjk0Olx0c3RydWN0IGJhbV9kbXV4X25ldGRldiAqYm5kZXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMjk1LVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMjk2LVx0bmV0aWZfc3RvcF9xdWV1ZShuZXRkZXYpO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6Mjk3Olx0YmFtX2RtdXhfc2VuZF9jbWQoYm5kZXYsIEJBTV9ETVVYX0NNRF9DTE9TRSk7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yOTgtXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYz0zMDE9c3RhdGljIHVuc2lnbmVkIGludCBuZWVkZWRfcm9vbSh1bnNpZ25lZCBpbnQgYXZhaWwsIHVuc2lnbmVkIGludCBuZWVkZWQpXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMzA3LVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MzA4OnN0YXRpYyBpbnQgYmFtX2RtdXhfdHhfcHJlcGFyZV9za2Ioc3RydWN0IGJhbV9kbXV4X25ldGRldiAqYm5kZXYsXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0zMDktXHRcdFx0XHQgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTMxMy1cdHVuc2lnbmVkIGludCB0YWlsID0gbmVlZGVkX3Jvb20oc2tiX3RhaWxyb29tKHNrYiksIHBhZCk7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzozMTQ6XHRzdHJ1Y3QgYmFtX2RtdXhfaGRyICpoZHI7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0zMTUtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTMzNS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjMzNjpzdGF0aWMgbmV0ZGV2X3R4X3QgYmFtX2RtdXhfbmV0ZGV2X3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTMzNy1cdFx0XHRcdFx0ICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTMzOC17XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzozMzk6XHRzdHJ1Y3QgYmFtX2RtdXhfbmV0ZGV2ICpibmRldiA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzozNDA6XHRzdHJ1Y3QgYmFtX2RtdXggKmRtdXggPSBibmRldi1cdTAwM2VkbXV4O1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MzQxOlx0c3RydWN0IGJhbV9kbXV4X3NrYl9kbWEgKnNrYl9kbWE7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0zNDItXHRpbnQgYWN0aXZlLCByZXQ7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0zNDMtXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzozNDQ6XHRza2JfZG1hID0gYmFtX2RtdXhfdHhfcXVldWUoZG11eCwgc2tiKTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTM0NS1cdGlmICghc2tiX2RtYSlcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0zNTEtXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzozNTI6XHRyZXQgPSBiYW1fZG11eF90eF9wcmVwYXJlX3NrYihibmRldiwgc2tiKTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTM1My1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMzU1LVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MzU2Olx0aWYgKCFiYW1fZG11eF9za2JfZG1hX21hcChza2JfZG1hLCBETUFfVE9fREVWSUNFKSlcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTM1Ny1cdFx0Z290byBkcm9wO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTM2Ni1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjM2NzpcdGlmICghYmFtX2RtdXhfc2tiX2RtYV9zdWJtaXRfdHgoc2tiX2RtYSkpXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0zNjgtXHRcdGdvdG8gZHJvcDtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0zNzMtZHJvcDpcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjM3NDpcdGJhbV9kbXV4X3R4X2RvbmUoc2tiX2RtYSk7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0zNzUtXHRkZXZfa2ZyZWVfc2tiX2FueShza2IpO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTM3OC1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjM3OTpzdGF0aWMgdm9pZCBiYW1fZG11eF90eF93YWtldXBfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0zODAte1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MzgxOlx0c3RydWN0IGJhbV9kbXV4ICpkbXV4ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBiYW1fZG11eCwgdHhfd2FrZXVwX3dvcmspO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMzgyLVx0dW5zaWduZWQgbG9uZyBwZW5kaW5nO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTM5Ni1cdGZvcl9lYWNoX3NldF9iaXQoaSwgXHUwMDI2cGVuZGluZywgQkFNX0RNVVhfTlVNX1NLQikge1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6Mzk3Olx0XHRiYW1fZG11eF9za2JfZG1hX3N1Ym1pdF90eChcdTAwMjZkbXV4LVx1MDAzZXR4X3NrYnNbaV0pO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMzk4LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTQwNC1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjQwNTpzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGJhbV9kbXV4X29wcyA9IHtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjQwNjpcdC5uZG9fb3Blblx0PSBiYW1fZG11eF9uZXRkZXZfb3BlbixcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjQwNzpcdC5uZG9fc3RvcFx0PSBiYW1fZG11eF9uZXRkZXZfc3RvcCxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjQwODpcdC5uZG9fc3RhcnRfeG1pdFx0PSBiYW1fZG11eF9uZXRkZXZfc3RhcnRfeG1pdCxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTQwOS1cdC5uZG9fZ2V0X3N0YXRzNjRcdD0gZGV2X2dldF90c3RhdHM2NCxcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYz00MTI9c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZpY2VfdHlwZSB3d2FuX3R5cGUgPSB7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNDE1LVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NDE2OnN0YXRpYyB2b2lkIGJhbV9kbXV4X25ldGRldl9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNDE3LXtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjQxODpcdGRldi1cdTAwM2VuZXRkZXZfb3BzID0gXHUwMDI2YmFtX2RtdXhfb3BzO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNDE5LVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTQyNS1cdGRldi1cdTAwM2VtYXhfbXR1ID0gQkFNX0RNVVhfTUFYX0RBVEFfU0laRTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjQyNjpcdGRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb20gPSBzaXplb2Yoc3RydWN0IGJhbV9kbXV4X2hkcik7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy00MjctXHRkZXYtXHUwMDNlbmVlZGVkX3RhaWxyb29tID0gc2l6ZW9mKHUzMik7IC8qIHdvcmQtYWxpZ25lZCAqL1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTQzNS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjQzNjpzdGF0aWMgdm9pZCBiYW1fZG11eF9yZWdpc3Rlcl9uZXRkZXZfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy00Mzcte1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NDM4Olx0c3RydWN0IGJhbV9kbXV4ICpkbXV4ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBiYW1fZG11eCwgcmVnaXN0ZXJfbmV0ZGV2X3dvcmspO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NDM5Olx0c3RydWN0IGJhbV9kbXV4X25ldGRldiAqYm5kZXY7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy00NDAtXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTQ0Ny1cdFx0bmV0ZGV2ID0gYWxsb2NfbmV0ZGV2KHNpemVvZigqYm5kZXYpLCBcJiMzNDt3d2FuJWRcJiMzNDssIE5FVF9OQU1FX0VOVU0sXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo0NDg6XHRcdFx0XHQgICAgICBiYW1fZG11eF9uZXRkZXZfc2V0dXApO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNDQ5LVx0XHRpZiAoIW5ldGRldilcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy00NzAtXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo0NzE6c3RhdGljIHZvaWQgYmFtX2RtdXhfcnhfY2FsbGJhY2sodm9pZCAqZGF0YSk7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy00NzItXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo0NzM6c3RhdGljIGJvb2wgYmFtX2RtdXhfc2tiX2RtYV9zdWJtaXRfcngoc3RydWN0IGJhbV9kbXV4X3NrYl9kbWEgKnNrYl9kbWEpXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy00NzQte1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NDc1Olx0c3RydWN0IGJhbV9kbXV4ICpkbXV4ID0gc2tiX2RtYS1cdTAwM2VkbXV4O1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNDc2LVx0c3RydWN0IGRtYV9hc3luY190eF9kZXNjcmlwdG9yICpkZXNjO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTQ4NS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjQ4NjpcdGRlc2MtXHUwMDNlY2FsbGJhY2sgPSBiYW1fZG11eF9yeF9jYWxsYmFjaztcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTQ4Ny1cdGRlc2MtXHUwMDNlY2FsbGJhY2tfcGFyYW0gPSBza2JfZG1hO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTQ5MS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjQ5MjpzdGF0aWMgYm9vbCBiYW1fZG11eF9za2JfZG1hX3F1ZXVlX3J4KHN0cnVjdCBiYW1fZG11eF9za2JfZG1hICpza2JfZG1hLCBnZnBfdCBnZnApXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy00OTMte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTUwMC1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjUwMTpcdHJldHVybiBiYW1fZG11eF9za2JfZG1hX21hcChza2JfZG1hLCBETUFfRlJPTV9ERVZJQ0UpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NTAyOlx0ICAgICAgIGJhbV9kbXV4X3NrYl9kbWFfc3VibWl0X3J4KHNrYl9kbWEpO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNTAzLX1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTUwNC1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjUwNTpzdGF0aWMgdm9pZCBiYW1fZG11eF9jbWRfZGF0YShzdHJ1Y3QgYmFtX2RtdXhfc2tiX2RtYSAqc2tiX2RtYSlcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTUwNi17XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo1MDc6XHRzdHJ1Y3QgYmFtX2RtdXggKmRtdXggPSBza2JfZG1hLVx1MDAzZWRtdXg7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy01MDgtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gc2tiX2RtYS1cdTAwM2Vza2I7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo1MDk6XHRzdHJ1Y3QgYmFtX2RtdXhfaGRyICpoZHIgPSAoc3RydWN0IGJhbV9kbXV4X2hkciAqKXNrYi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNTEwLVx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiA9IGRtdXgtXHUwMDNlbmV0ZGV2c1toZHItXHUwMDNlY2hdO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTU0NS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjU0NjpzdGF0aWMgdm9pZCBiYW1fZG11eF9jbWRfb3BlbihzdHJ1Y3QgYmFtX2RtdXggKmRtdXgsIHN0cnVjdCBiYW1fZG11eF9oZHIgKmhkcilcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTU0Ny17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNTY0LVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NTY1OnN0YXRpYyB2b2lkIGJhbV9kbXV4X2NtZF9jbG9zZShzdHJ1Y3QgYmFtX2RtdXggKmRtdXgsIHN0cnVjdCBiYW1fZG11eF9oZHIgKmhkcilcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTU2Ni17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNTc5LVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NTgwOnN0YXRpYyB2b2lkIGJhbV9kbXV4X3J4X2NhbGxiYWNrKHZvaWQgKmRhdGEpXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy01ODEte1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NTgyOlx0c3RydWN0IGJhbV9kbXV4X3NrYl9kbWEgKnNrYl9kbWEgPSBkYXRhO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NTgzOlx0c3RydWN0IGJhbV9kbXV4ICpkbXV4ID0gc2tiX2RtYS1cdTAwM2VkbXV4O1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNTg0LVx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9IHNrYl9kbWEtXHUwMDNlc2tiO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NTg1Olx0c3RydWN0IGJhbV9kbXV4X2hkciAqaGRyID0gKHN0cnVjdCBiYW1fZG11eF9oZHIgKilza2ItXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTU4Ni1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjU4NzpcdGJhbV9kbXV4X3NrYl9kbWFfdW5tYXAoc2tiX2RtYSwgRE1BX0ZST01fREVWSUNFKTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTU4OC1cbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02MDAtXHRjYXNlIEJBTV9ETVVYX0NNRF9EQVRBOlxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NjAxOlx0XHRiYW1fZG11eF9jbWRfZGF0YShza2JfZG1hKTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTYwMi1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02MDMtXHRjYXNlIEJBTV9ETVVYX0NNRF9PUEVOOlxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NjA0Olx0XHRiYW1fZG11eF9jbWRfb3BlbihkbXV4LCBoZHIpO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNjA1LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTYwNi1cdGNhc2UgQkFNX0RNVVhfQ01EX0NMT1NFOlxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NjA3Olx0XHRiYW1fZG11eF9jbWRfY2xvc2UoZG11eCwgaGRyKTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTYwOC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNjE1LW91dDpcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjYxNjpcdGlmIChiYW1fZG11eF9za2JfZG1hX3F1ZXVlX3J4KHNrYl9kbWEsIEdGUF9BVE9NSUMpKVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNjE3LVx0XHRkbWFfYXN5bmNfaXNzdWVfcGVuZGluZyhkbXV4LVx1MDAzZXJ4KTtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02MTktXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo2MjA6c3RhdGljIGJvb2wgYmFtX2RtdXhfcG93ZXJfb24oc3RydWN0IGJhbV9kbXV4ICpkbXV4KVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNjIxLXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02MzctXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBCQU1fRE1VWF9OVU1fU0tCOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NjM4Olx0XHRpZiAoIWJhbV9kbXV4X3NrYl9kbWFfcXVldWVfcngoXHUwMDI2ZG11eC1cdTAwM2VyeF9za2JzW2ldLCBHRlBfS0VSTkVMKSlcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTYzOS1cdFx0XHRyZXR1cm4gZmFsc2U7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNjQ1LVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NjQ2OnN0YXRpYyB2b2lkIGJhbV9kbXV4X2ZyZWVfc2ticyhzdHJ1Y3QgYmFtX2RtdXhfc2tiX2RtYSBza2JzW10sXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02NDctXHRcdFx0ICAgICAgIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcilcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02NTEtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBCQU1fRE1VWF9OVU1fU0tCOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NjUyOlx0XHRzdHJ1Y3QgYmFtX2RtdXhfc2tiX2RtYSAqc2tiX2RtYSA9IFx1MDAyNnNrYnNbaV07XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02NTMtXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02NTQtXHRcdGlmIChza2JfZG1hLVx1MDAzZWFkZHIpXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo2NTU6XHRcdFx0YmFtX2RtdXhfc2tiX2RtYV91bm1hcChza2JfZG1hLCBkaXIpO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNjU2LVx0XHRpZiAoc2tiX2RtYS1cdTAwM2Vza2IpIHtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02NjItXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo2NjM6c3RhdGljIHZvaWQgYmFtX2RtdXhfcG93ZXJfb2ZmKHN0cnVjdCBiYW1fZG11eCAqZG11eClcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTY2NC17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNjc2LVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6Njc3Olx0YmFtX2RtdXhfZnJlZV9za2JzKGRtdXgtXHUwMDNlcnhfc2ticywgRE1BX0ZST01fREVWSUNFKTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTY3OC19XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02NzktXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo2ODA6c3RhdGljIGlycXJldHVybl90IGJhbV9kbXV4X3BjX2lycShpbnQgaXJxLCB2b2lkICpkYXRhKVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNjgxLXtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjY4MjpcdHN0cnVjdCBiYW1fZG11eCAqZG11eCA9IGRhdGE7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02ODMtXHRib29sIG5ld19zdGF0ZSA9ICFkbXV4LVx1MDAzZXBjX3N0YXRlO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTY4Ny1cdGlmIChuZXdfc3RhdGUpIHtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjY4ODpcdFx0aWYgKGJhbV9kbXV4X3Bvd2VyX29uKGRtdXgpKVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6Njg5Olx0XHRcdGJhbV9kbXV4X3BjX2FjayhkbXV4KTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTY5MC1cdFx0ZWxzZVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NjkxOlx0XHRcdGJhbV9kbXV4X3Bvd2VyX29mZihkbXV4KTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTY5Mi1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo2OTM6XHRcdGJhbV9kbXV4X3Bvd2VyX29mZihkbXV4KTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjY5NDpcdFx0YmFtX2RtdXhfcGNfYWNrKGRtdXgpO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNjk1LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTcwMi1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjcwMzpzdGF0aWMgaXJxcmV0dXJuX3QgYmFtX2RtdXhfcGNfYWNrX2lycShpbnQgaXJxLCB2b2lkICpkYXRhKVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNzA0LXtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjcwNTpcdHN0cnVjdCBiYW1fZG11eCAqZG11eCA9IGRhdGE7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy03MDYtXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNzEyLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NzEzOnN0YXRpYyBpbnQgYmFtX2RtdXhfcnVudGltZV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTcxNC17XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo3MTU6XHRzdHJ1Y3QgYmFtX2RtdXggKmRtdXggPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTcxNi1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTcxNy1cdGRldl9kYmcoZGV2LCBcJiMzNDtydW50aW1lIHN1c3BlbmRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NzE4Olx0YmFtX2RtdXhfcGNfdm90ZShkbXV4LCBmYWxzZSk7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy03MTktXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNzIyLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NzIzOnN0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgYmFtX2RtdXhfcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNzI0LXtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjcyNTpcdHN0cnVjdCBiYW1fZG11eCAqZG11eCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNzI2LVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTczNC1cdC8qIFZvdGUgZm9yIHBvd2VyIHN0YXRlICovXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo3MzU6XHRiYW1fZG11eF9wY192b3RlKGRtdXgsIHRydWUpO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNzM2LVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTczOS1cdFx0XHRcdFx0IEJBTV9ETVVYX1JFTU9URV9USU1FT1VUKSkge1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NzQwOlx0XHRiYW1fZG11eF9wY192b3RlKGRtdXgsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTc0MS1cdFx0cmV0dXJuIC1FVElNRURPVVQ7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNzQ2LVx0XHRcdFx0QkFNX0RNVVhfUkVNT1RFX1RJTUVPVVQpKSB7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo3NDc6XHRcdGJhbV9kbXV4X3BjX3ZvdGUoZG11eCwgZmFsc2UpO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNzQ4LVx0XHRyZXR1cm4gLUVUSU1FRE9VVDtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy03NTItXHRpZiAoIWRtdXgtXHUwMDNlcngpIHtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjc1MzpcdFx0YmFtX2RtdXhfcGNfdm90ZShkbXV4LCBmYWxzZSk7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy03NTQtXHRcdHJldHVybiAtRU5YSU87XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNzY0LVx0XHRkbXV4LVx1MDAzZXR4ID0gTlVMTDtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjc2NTpcdFx0YmFtX2RtdXhfcnVudGltZV9zdXNwZW5kKGRldik7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy03NjYtXHRcdHJldHVybiAtRU5YSU87XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNzcxLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NzcyOnN0YXRpYyBpbnQgYmFtX2RtdXhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTc3My17XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy03NzQtXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjc3NTpcdHN0cnVjdCBiYW1fZG11eCAqZG11eDtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTc3Ni1cdGludCByZXQsIHBjX2Fja19pcnEsIGk7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtODEwLVx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2ZG11eC1cdTAwM2V0eF9sb2NrKTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjgxMTpcdElOSVRfV09SSyhcdTAwMjZkbXV4LVx1MDAzZXR4X3dha2V1cF93b3JrLCBiYW1fZG11eF90eF93YWtldXBfd29yayk7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo4MTI6XHRJTklUX1dPUksoXHUwMDI2ZG11eC1cdTAwM2VyZWdpc3Rlcl9uZXRkZXZfd29yaywgYmFtX2RtdXhfcmVnaXN0ZXJfbmV0ZGV2X3dvcmspO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtODEzLVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTgyNi1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjgyNzpcdHJldCA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEoZGV2LCBwY19hY2tfaXJxLCBOVUxMLCBiYW1fZG11eF9wY19hY2tfaXJxLFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtODI4LVx0XHRcdFx0XHRJUlFGX09ORVNIT1QsIE5VTEwsIGRtdXgpO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTgzMS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjgzMjpcdHJldCA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEoZGV2LCBkbXV4LVx1MDAzZXBjX2lycSwgTlVMTCwgYmFtX2RtdXhfcGNfaXJxLFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtODMzLVx0XHRcdFx0XHRJUlFGX09ORVNIT1QsIE5VTEwsIGRtdXgpO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTg0My1cdGlmIChkbXV4LVx1MDAzZXBjX3N0YXRlKSB7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo4NDQ6XHRcdGlmIChiYW1fZG11eF9wb3dlcl9vbihkbXV4KSlcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjg0NTpcdFx0XHRiYW1fZG11eF9wY19hY2soZG11eCk7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy04NDYtXHRcdGVsc2VcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjg0NzpcdFx0XHRiYW1fZG11eF9wb3dlcl9vZmYoZG11eCk7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy04NDgtXHR9XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtODU3LVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6ODU4OnN0YXRpYyB2b2lkIGJhbV9kbXV4X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtODU5LXtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjg2MDpcdHN0cnVjdCBiYW1fZG11eCAqZG11eCA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtODYxLVx0c3RydWN0IGRldmljZSAqZGV2ID0gZG11eC1cdTAwM2VkZXY7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtODc3LVx0cG1fcnVudGltZV9kb250X3VzZV9hdXRvc3VzcGVuZChkZXYpO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6ODc4Olx0YmFtX2RtdXhfcnVudGltZV9zdXNwZW5kKGRldik7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy04NzktXHRwbV9ydW50aW1lX3NldF9zdXNwZW5kZWQoZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy04ODYtXHRkaXNhYmxlX2lycShkbXV4LVx1MDAzZXBjX2lycSk7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo4ODc6XHRiYW1fZG11eF9wb3dlcl9vZmYoZG11eCk7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo4ODg6XHRiYW1fZG11eF9mcmVlX3NrYnMoZG11eC1cdTAwM2V0eF9za2JzLCBETUFfVE9fREVWSUNFKTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTg4OS19XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy04OTAtXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo4OTE6c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIGJhbV9kbXV4X3BtX29wcyA9IHtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjg5MjpcdFNFVF9SVU5USU1FX1BNX09QUyhiYW1fZG11eF9ydW50aW1lX3N1c3BlbmQsIGJhbV9kbXV4X3J1bnRpbWVfcmVzdW1lLCBOVUxMKVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtODkzLX07XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy04OTQtXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo4OTU6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYmFtX2RtdXhfb2ZfbWF0Y2hbXSA9IHtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTg5Ni1cdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtxY29tLGJhbS1kbXV4XCYjMzQ7IH0sXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtODk4LX07XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo4OTk6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgYmFtX2RtdXhfb2ZfbWF0Y2gpO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtOTAwLVxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6OTAxOnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGJhbV9kbXV4X2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjkwMjpcdC5wcm9iZSA9IGJhbV9kbXV4X3Byb2JlLFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6OTAzOlx0LnJlbW92ZSA9IGJhbV9kbXV4X3JlbW92ZSxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTkwNC1cdC5kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy05MDUtXHRcdC5uYW1lID0gXCYjMzQ7YmFtLWRtdXhcJiMzNDssXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo5MDY6XHRcdC5wbSA9IFx1MDAyNmJhbV9kbXV4X3BtX29wcyxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjkwNzpcdFx0Lm9mX21hdGNoX3RhYmxlID0gYmFtX2RtdXhfb2ZfbWF0Y2gsXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy05MDgtXHR9LFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtOTA5LX07XG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo5MTA6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihiYW1fZG11eF9kcml2ZXIpO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtOTExLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAyOjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1Nzk4CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogNDAzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBgYmFtX2RtdXhgIGZvciBGdXp6aW5nIFN1aXRhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgYmFtX2RtdXhgLCBhIHBsYXRmb3JtIGRyaXZlciBmb3IgUXVhbGNvbW0gbW9kZW1zIOKAkyBzcGVjaWZpY2FsbHksICYjMzQ7cWNvbSxiYW0tZG11eCYjMzQ7LiBJdCBoaW5nZXMgb24gdGhlc2UgZGVwZW5kZW5jaWVzOiBgRE1BX0VOR0lORSAmYW1wOyZhbXA7IFBNICZhbXA7JmFtcDsgUUNPTV9TTUVNX1NUQVRFYCBvciBgQ09NUElMRV9URVNUYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBpcyB0aGlzIGV2ZW4gYSB2aWFibGUgdGFyZ2V0IGZvciBmdXp6aW5nIGluIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VPyBUaGF0JiMzOTtzIHRoZSBjcml0aWNhbCBxdWVzdGlvbi4KCkxldCBtZSBydW4gdGhyb3VnaCB0aGUgdXN1YWwgY2hlY2tsaXN0LiBUaGUgaW5zdHJ1Y3Rpb25zIHNheSB0byBydWxlIGl0IG91dCBpZiB0aGUgcGF0Y2ggaXM6CgoqICAgRG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgb3IgY29tbWVudHMgb25seS4gTm9wZS4KKiAgIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMg4oCTIGxvZ2dpbmcsIHRyYWNlcG9pbnRzLiBOb3QgbGlrZWx5LgoqICAgTnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHdpdGhvdXQgZnVuY3Rpb25hbCBpbXBhY3QuIFByb2JhYmx5IG5vdC4KClRoaXMgbmV4dCBwb2ludCBpcyBjcnVjaWFsOiAqaW1wYXNzYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemF0aW9uKi4gU28gSSBuZWVkIHRvIHZlcmlmeTogY2FuIHRoaXMgdGhpbmcgYmUgcnVuIGluIFFFTVU/IEl0JiMzOTtzIGEgUXVhbGNvbW0gbW9kZW0gZHJpdmVyLCBzbywgZXZlbiB3aGVuIHVzaW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLCBhbSBJIGdvaW5nIHRvIGJlIGFibGUgdG8gcmVhY2ggaXQ/IFRoaW5ncyBsaWtlIFVTQiBnYWRnZXQgb3IgbWFjODAyMTFfaHdzaW0sIHRoZXkgYXJlIGEgaGFyZCAmIzM0O25vJiMzNDsgZm9yIHRoZSBwdXJwb3NlIG9mIGZ1enppbmcuCgpBbHNvLCBJIGhhdmUgdG8gZGlzcmVnYXJkIGRyaXZlcnMgZm9yIHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUuIE5vIFBDSWUgY2FyZHMgdGhhdCBhcmVuJiMzOTt0IGF2YWlsYWJsZSBpbiBRRU1VLCBubyB2ZW5kb3Itc3BlY2lmaWMgc3dpdGNoL1NtYXJ0TklDL0dQVSBkcml2ZXJzIChsaWtlIG1seHN3LCBwZHNcX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkuIElmIGl0IG5lZWRzIGEgcGh5c2ljYWwgUENJZSBjYXJkLCBJJiMzOTttIG91dC4gRmluYWxseSwgSSBzaG91bGQgaWdub3JlIGRyaXZlciB0ZWFyZG93biBjYWxscyB0aGF0IGFyZSBvbmx5IGV4ZWN1dGVkIGR1cmluZyBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KClNvLCBsZXQgbWUgc2VlLi4uIEl0JiMzOTtzIGBxY29tX2JhbV9kbXV4LmNgLCB3aGljaCwgYWNjb3JkaW5nIHRvIHRoZSBjb2RlLCBpcyBhIHBsYXRmb3JtIGRyaXZlciB0aGF0IHVzZXMgYG9mX21hdGNoYCB0byBpZGVudGlmeSBpdHNlbGYgYXMgJiMzNDtxY29tLGJhbS1kbXV4JiMzNDssIHNwZWNpZmljYWxseSBmb3IgUXVhbGNvbW0gU29DcyBsaWtlIE1TTTg5MTYgYW5kIE1TTTg5NzQuIE9rYXksIHJpZ2h0IG5vdywgSSBuZWVkIHRvIGZvY3VzIG9uIHdoYXQgaGFwcGVucyBpbiBgYmFtX2RtdXhfcHJvYmVgLiBJIG5lZWQgdG8gaW5zcGVjdCB0aGF0IGZ1bmN0aW9uIGluIGBkcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguY2AgYW5kIGZpZ3VyZSBvdXQgaG93IGl0IHdvcmtzIGFuZCB3aGV0aGVyIHRoZSBleGVjdXRpb24gcGF0aCBjYW4gYmUgcmVhY2hlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAyOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3NzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDc3MDpcdH1cbiA3NzE6XHRcbiA3NzI6XHRzdGF0aWMgaW50IGJhbV9kbXV4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gNzczOlx0e1xuIDc3NDpcdFx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG4gNzc1Olx0XHRzdHJ1Y3QgYmFtX2RtdXggKmRtdXg7XG4gNzc2Olx0XHRpbnQgcmV0LCBwY19hY2tfaXJxLCBpO1xuIDc3NzpcdFx0dW5zaWduZWQgaW50IGJpdDtcbiA3Nzg6XHRcbiA3Nzk6XHRcdGRtdXggPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKmRtdXgpLCBHRlBfS0VSTkVMKTtcbiA3ODA6XHRcdGlmICghZG11eClcbiA3ODE6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gNzgyOlx0XG4gNzgzOlx0XHRkbXV4LVx1MDAzZWRldiA9IGRldjtcbiA3ODQ6XHRcdHBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIGRtdXgpO1xuIDc4NTpcdFxuIDc4NjpcdFx0ZG11eC1cdTAwM2VwY19pcnEgPSBwbGF0Zm9ybV9nZXRfaXJxX2J5bmFtZShwZGV2LCBcJiMzNDtwY1wmIzM0Oyk7XG4gNzg3Olx0XHRpZiAoZG11eC1cdTAwM2VwY19pcnEgXHUwMDNjIDApXG4gNzg4Olx0XHRcdHJldHVybiBkbXV4LVx1MDAzZXBjX2lycTtcbiA3ODk6XHRcbiA3OTA6XHRcdHBjX2Fja19pcnEgPSBwbGF0Zm9ybV9nZXRfaXJxX2J5bmFtZShwZGV2LCBcJiMzNDtwYy1hY2tcJiMzNDspO1xuIDc5MTpcdFx0aWYgKHBjX2Fja19pcnEgXHUwMDNjIDApXG4gNzkyOlx0XHRcdHJldHVybiBwY19hY2tfaXJxO1xuIDc5MzpcdFxuIDc5NDpcdFx0ZG11eC1cdTAwM2VwYyA9IGRldm1fcWNvbV9zbWVtX3N0YXRlX2dldChkZXYsIFwmIzM0O3BjXCYjMzQ7LCBcdTAwMjZiaXQpO1xuIDc5NTpcdFx0aWYgKElTX0VSUihkbXV4LVx1MDAzZXBjKSlcbiA3OTY6XHRcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKGRtdXgtXHUwMDNlcGMpLFxuIDc5NzpcdFx0XHRcdFx0ICAgICBcJiMzNDtGYWlsZWQgdG8gZ2V0IHBjIHN0YXRlXFxuXCYjMzQ7KTtcbiA3OTg6XHRcdGRtdXgtXHUwMDNlcGNfbWFzayA9IEJJVChiaXQpO1xuIDc5OTpcdFxuIDgwMDpcdFx0ZG11eC1cdTAwM2VwY19hY2sgPSBkZXZtX3Fjb21fc21lbV9zdGF0ZV9nZXQoZGV2LCBcJiMzNDtwYy1hY2tcJiMzNDssIFx1MDAyNmJpdCk7XG4gODAxOlx0XHRpZiAoSVNfRVJSKGRtdXgtXHUwMDNlcGNfYWNrKSlcbiA4MDI6XHRcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKGRtdXgtXHUwMDNlcGNfYWNrKSxcbiA4MDM6XHRcdFx0XHRcdCAgICAgXCYjMzQ7RmFpbGVkIHRvIGdldCBwYy1hY2sgc3RhdGVcXG5cJiMzNDspO1xuIDgwNDpcdFx0ZG11eC1cdTAwM2VwY19hY2tfbWFzayA9IEJJVChiaXQpO1xuIDgwNTpcdFxuIDgwNjpcdFx0aW5pdF93YWl0cXVldWVfaGVhZChcdTAwMjZkbXV4LVx1MDAzZXBjX3dhaXQpO1xuIDgwNzpcdFx0aW5pdF9jb21wbGV0aW9uKFx1MDAyNmRtdXgtXHUwMDNlcGNfYWNrX2NvbXBsZXRpb24pO1xuIDgwODpcdFx0Y29tcGxldGVfYWxsKFx1MDAyNmRtdXgtXHUwMDNlcGNfYWNrX2NvbXBsZXRpb24pO1xuIDgwOTpcdFxuIDgxMDpcdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2ZG11eC1cdTAwM2V0eF9sb2NrKTtcbiA4MTE6XHRcdElOSVRfV09SSyhcdTAwMjZkbXV4LVx1MDAzZXR4X3dha2V1cF93b3JrLCBiYW1fZG11eF90eF93YWtldXBfd29yayk7XG4gODEyOlx0XHRJTklUX1dPUksoXHUwMDI2ZG11eC1cdTAwM2VyZWdpc3Rlcl9uZXRkZXZfd29yaywgYmFtX2RtdXhfcmVnaXN0ZXJfbmV0ZGV2X3dvcmspO1xuIDgxMzpcdFxuIDgxNDpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQkFNX0RNVVhfTlVNX1NLQjsgaSYjNDM7JiM0MzspIHtcbiA4MTU6XHRcdFx0ZG11eC1cdTAwM2VyeF9za2JzW2ldLmRtdXggPSBkbXV4O1xuIDgxNjpcdFx0XHRkbXV4LVx1MDAzZXR4X3NrYnNbaV0uZG11eCA9IGRtdXg7XG4gODE3Olx0XHR9XG4gODE4Olx0XG4gODE5Olx0XHQvKiBSdW50aW1lIFBNIG1hbmFnZXMgb3VyIG93biBwb3dlciB2b3RlLlxuIDgyMDpcdFx0ICogTm90ZSB0aGF0IHRoZSBSWCBwYXRoIG1heSBiZSBhY3RpdmUgZXZlbiBpZiB3ZSBhcmUgcnVudGltZSBzdXNwZW5kZWQsXG4gODIxOlx0XHQgKiBzaW5jZSBpdCBpcyBjb250cm9sbGVkIGJ5IHRoZSByZW1vdGUgc2lkZS5cbiA4MjI6XHRcdCAqL1xuIDgyMzpcdFx0cG1fcnVudGltZV9zZXRfYXV0b3N1c3BlbmRfZGVsYXkoZGV2LCBCQU1fRE1VWF9BVVRPU1VTUEVORF9ERUxBWSk7XG4gODI0Olx0XHRwbV9ydW50aW1lX3VzZV9hdXRvc3VzcGVuZChkZXYpO1xuIDgyNTpcdFx0cG1fcnVudGltZV9lbmFibGUoZGV2KTtcbiA4MjY6XHRcbiA4Mjc6XHRcdHJldCA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEoZGV2LCBwY19hY2tfaXJxLCBOVUxMLCBiYW1fZG11eF9wY19hY2tfaXJxLFxuIDgyODpcdFx0XHRcdFx0XHRJUlFGX09ORVNIT1QsIE5VTEwsIGRtdXgpO1xuIDgyOTpcdFx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMDI6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc4MjQKCQkJCQkJCW91dHB1dDogMTI1CgkJCQkJCQl0aG91Z2h0czogNzA0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJiMzOTtzIEZ1enppbmcgU3VpdGFiaWxpdHkqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBwYXRjaCwgd2hpbGUgcG90ZW50aWFsbHkgaW50ZXJlc3RpbmcgZnJvbSBhIGZ1bmN0aW9uYWwgcGVyc3BlY3RpdmUsIGlzIG5vdCBzdWl0YWJsZSBmb3IgZnV6emluZyBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHQ0UuIEhlcmUmIzM5O3Mgd2h5OgoKVGhlIGNvcmUgb2YgdGhlIGlzc3VlIGxpZXMgaW4gdGhlIGRlcGVuZGVuY2llcyBvZiB0aGUgY29kZSBiZWluZyBtb2RpZmllZCwgc3BlY2lmaWNhbGx5IGBxY29tX2JhbV9kbXV4LmNgLiBUaGlzIGRyaXZlciByZWxpZXMgb24gc2V2ZXJhbCBRdWFsY29tbS1zcGVjaWZpYyBoYXJkd2FyZSBjb21wb25lbnRzOiBgZGV2bV9xY29tX3NtZW1fc3RhdGVfZ2V0YCAoUXVhbGNvbW0gU2hhcmVkIE1lbW9yeSksIGBwbGF0Zm9ybV9nZXRfaXJxX2J5bmFtZWAsIGFuZCBRdWFsY29tbSBCQU0gRE1BIGNoYW5uZWxzLiAgVGhlIEJBTSBETUEgY2hhbm5lbHMgYXJlIHJlcXVlc3RlZCB1c2luZyAmIzM0O3J4JiMzNDsgYW5kICYjMzQ7dHgmIzM0OyBzdHJpbmdzIHZpYSBgZG1hX3JlcXVlc3RfY2hhbihkZXYsICYjMzQ7cngmIzM0OylgLiBDcnVjaWFsbHksIGl0IGFsc28gZGVwZW5kcyBvbiBhIGRldmljZSB0cmVlIG5vZGUgbWF0Y2hpbmcgJiMzNDtxY29tLGJhbS1kbXV4JiMzNDsuCgpJIG5lZWQgdG8gY29uZmlybSBpZiBJIGNhbiBldmVuIHJlYWNoIHRoaXMgaGFyZHdhcmUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gQmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgdGhlcmUmIzM5O3Mgbm8gc29mdHdhcmUgZW11bGF0aW9uIGF2YWlsYWJsZSB3aXRoaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZm9yIGVpdGhlciB0aGUgUXVhbGNvbW0gQkFNIERNVVggb3IgUXVhbGNvbW0gU01FTS4gVGhpcyBpcyBiZWNhdXNlIHRoZXNlIGNvbXBvbmVudHMgYXJlIFNvQy1zcGVjaWZpYyBoYXJkd2FyZSwgdGlnaHRseSBpbnRlZ3JhdGVkIHdpdGggUXVhbGNvbW0mIzM5O3MgTVNNODkxNiBhbmQgTVNNODk3NCBwbGF0Zm9ybXMuIEV2ZW4gaWYgdGhlIGNvZGUgY29tcGlsZXMgd2l0aG91dCBlcnJvcnMsIGl0IHdvdWxkIGZhaWwgdG8gcHJvYmUgYW5kIGluaXRpYWxpemUgd2l0aG91dCB0aGUgY29ycmVjdCBkZXZpY2UgdHJlZSBiaW5kaW5ncyBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgUXVhbGNvbW0gU01FTS9ETUEgaGFyZHdhcmUgZHJpdmVycy4KCk5vdywgbGV0JiMzOTtzIGxvb2sgYXQgd2hhdCB0aGUgcGF0Y2ggYWN0dWFsbHkgZG9lcy4gVGhlIHBhdGNoIGFkZHMgbmV0d29yayBzdGF0aXN0aWNzIHN1cHBvcnQgdG8gYHFjb21fYmFtX2RtdXguY2AsIHdoaWNoIGluY2x1ZGVzIGFkZGluZyBgZGV2X3N3X25ldHN0YXRzX3R4X2FkZCguLi4pYCBhbmQgYGRldl9zd19uZXRzdGF0c19yeF9hZGQoLi4uKWAgaW4gZGlmZmVyZW50IGZ1bmN0aW9ucy4gSXQgYWxzbyBhZGRzIGEgYC5uZG9fZ2V0X3N0YXRzNjRgIG9wZXJhdGlvbiBhbmQgc2V0cyB0aGUgYGRldi0mZ3Q7cGNwdV9zdGF0X3R5cGVgIGFwcHJvcHJpYXRlbHkuCgpHaXZlbiB0aGF0IHRoaXMgZHJpdmVyIGlzLCBieSBpdHMgdmVyeSBuYXR1cmUsIGV4Y2x1c2l2ZSB0byBRdWFsY29tbSBwbGF0Zm9ybXMsIEkgY2FuIGNvbmZpcm0gdGhhdCBpdCBmYWxscyB1bmRlciB0aGUgcnVsZXMgZm9yIGRldGVybWluaW5nICYjMzQ7V29ydGhGdXp6aW5nJiMzNDsuIFNwZWNpZmljYWxseSwgdGhlIHBhdGNoIGNvbnRhaW5zIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEl0IGV4cGxpY2l0bHkgcmVxdWlyZXMgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQuCgpUaGVyZWZvcmUsIGFmdGVyIGNhcmVmdWwgY29uc2lkZXJhdGlvbiwgSSYjMzk7bSBjb25maWRlbnQgdGhhdCBgV29ydGhGdXp6aW5nYCBzaG91bGQgYmUgc2V0IHRvIGBmYWxzZWAuIE15IHJlYXNvbmluZyBpcyBjb25jaXNlOiB0aGUgcGF0Y2ggbW9kaWZpZXMgYSBRdWFsY29tbSBwbGF0Zm9ybSBkcml2ZXIgKGBxY29tX2JhbV9kbXV4LmNgKSB0aGF0IGlzIGRlcGVuZGVudCBvbiBwcm9wcmlldGFyeSBRdWFsY29tbSBoYXJkd2FyZSAoU01FTSwgQkFNIERNQSkgYW5kIGNhbm5vdCBiZSByZWFjaGVkIG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyBpdCB1bnN1aXRhYmxlIGZvciB0aGlzIHR5cGUgb2YgdGVzdGluZy4KCkZpbmFsbHksIEkmIzM5O2xsIHJldmlldyBhbmQgZG91YmxlLWNoZWNrIGFsbCBhc3BlY3RzIG9mIG15IGFuYWx5c2lzOiB0aGUgZGVwZW5kZW5jaWVzLCB0aGUgbmF0dXJlIG9mIHRoZSBwYXRjaCwgYW5kIHRoZSBmdXp6aW5nIGVudmlyb25tZW50IGNvbnN0cmFpbnRzLiBFdmVyeXRoaW5nIGNoZWNrcyBvdXQsIGFuZCBJJiMzOTtsbCBwcm9jZWVkIGFjY29yZGluZ2x5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMjoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jIHRvIGFkZCBzb2Z0d2FyZSBuZXRzdGF0cyBhY2NvdW50aW5nLiBUaGlzIGRyaXZlciBpcyBzcGVjaWZpYyB0byBRdWFsY29tbSBTb0NzIChlLmcuIE1TTTg5MTYvTVNNODk3NCkgcmVxdWlyaW5nIFF1YWxjb21tIFNNRU0gc3RhdGUgYW5kIERNQSBlbmdpbmUgaGFyZHdhcmUsIHdoaWNoIGlzIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIEhlbmNlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jIHRvIGFkZCBzb2Z0d2FyZSBuZXRzdGF0cyBhY2NvdW50aW5nLiBUaGlzIGRyaXZlciBpcyBzcGVjaWZpYyB0byBRdWFsY29tbSBTb0NzIChlLmcuIE1TTTg5MTYvTVNNODk3NCkgcmVxdWlyaW5nIFF1YWxjb21tIFNNRU0gc3RhdGUgYW5kIERNQSBlbmdpbmUgaGFyZHdhcmUsIHdoaWNoIGlzIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIEhlbmNlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAyOjIzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wMVQwMjoyMjo1My43NDY1NzQyODJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTg4NDEzMDcyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jIHRvIGFkZCBzb2Z0d2FyZSBuZXRzdGF0cyBhY2NvdW50aW5nLiBUaGlzIGRyaXZlciBpcyBzcGVjaWZpYyB0byBRdWFsY29tbSBTb0NzIChlLmcuIE1TTTg5MTYvTVNNODk3NCkgcmVxdWlyaW5nIFF1YWxjb21tIFNNRU0gc3RhdGUgYW5kIERNQSBlbmdpbmUgaGFyZHdhcmUsIHdoaWNoIGlzIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIEhlbmNlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAyOjIyOjUzLjc0NjU3ODI4MloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY1MjA3NTk5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDNhYjI0Y2EwMTY4ZTcxMDliOGE1YjFmNTM3ZTRjYmViOGVhZjZiYzlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBTZXAgMSAwMjoyMjo1MSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYyBiL2RyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jXFxuaW5kZXggY2M2YWNlOGQ2NDM3MS4uNWJjYWMyY2NhYWJkNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguY1xcbisrKyBiL2RyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jXFxuQEAgLTE3Nyw4ICsxNzcsMTIgQEAgc3RhdGljIHZvaWQgYmFtX2RtdXhfdHhfY2FsbGJhY2sodm9pZCAqZGF0YSlcXG4ge1xcbiBcXHRzdHJ1Y3QgYmFtX2RtdXhfc2tiX2RtYSAqc2tiX2RtYSA9IGRhdGE7XFxuIFxcdHN0cnVjdCBza19idWZmICpza2IgPSBza2JfZG1hLVxcdTAwM2Vza2I7XFxuK1xcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYgPSBza2ItXFx1MDAzZWRldjtcXG4gXFxuIFxcdGJhbV9kbXV4X3R4X2RvbmUoc2tiX2RtYSk7XFxuK1xcdGlmIChuZXRkZXYpXFxuK1xcdFxcdGRldl9zd19uZXRzdGF0c190eF9hZGQobmV0ZGV2LCAxLFxcbitcXHRcXHRcXHRcXHQgICAgICAgKChzdHJ1Y3QgYmFtX2RtdXhfaGRyICopc2tiLVxcdTAwM2VkYXRhKS1cXHUwMDNlbGVuKTtcXG4gXFx0ZGV2X2NvbnN1bWVfc2tiX2FueShza2IpO1xcbiB9XFxuIFxcbkBAIC00MDIsNiArNDA2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBiYW1fZG11eF9vcHMgPSB7XFxuIFxcdC5uZG9fb3BlblxcdD0gYmFtX2RtdXhfbmV0ZGV2X29wZW4sXFxuIFxcdC5uZG9fc3RvcFxcdD0gYmFtX2RtdXhfbmV0ZGV2X3N0b3AsXFxuIFxcdC5uZG9fc3RhcnRfeG1pdFxcdD0gYmFtX2RtdXhfbmV0ZGV2X3N0YXJ0X3htaXQsXFxuK1xcdC5uZG9fZ2V0X3N0YXRzNjRcXHQ9IGRldl9nZXRfdHN0YXRzNjQsXFxuIH07XFxuIFxcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGRldmljZV90eXBlIHd3YW5fdHlwZSA9IHtcXG5AQCAtNDIxLDYgKzQyNiw3IEBAIHN0YXRpYyB2b2lkIGJhbV9kbXV4X25ldGRldl9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHRkZXYtXFx1MDAzZW5lZWRlZF9oZWFkcm9vbSA9IHNpemVvZihzdHJ1Y3QgYmFtX2RtdXhfaGRyKTtcXG4gXFx0ZGV2LVxcdTAwM2VuZWVkZWRfdGFpbHJvb20gPSBzaXplb2YodTMyKTsgLyogd29yZC1hbGlnbmVkICovXFxuIFxcdGRldi1cXHUwMDNldHhfcXVldWVfbGVuID0gREVGQVVMVF9UWF9RVUVVRV9MRU47XFxuK1xcdGRldi1cXHUwMDNlcGNwdV9zdGF0X3R5cGUgPSBORVRERVZfUENQVV9TVEFUX1RTVEFUUztcXG4gXFxuIFxcdC8qIFRoaXMgcGVybSBhZGRyIHdpbGwgYmUgdXNlZCBhcyBpbnRlcmZhY2UgaWRlbnRpZmllciBieSBJUHY2ICovXFxuIFxcdGRldi1cXHUwMDNlYWRkcl9hc3NpZ25fdHlwZSA9IE5FVF9BRERSX1JBTkRPTTtcXG5AQCAtNTMzLDYgKzUzOSw3IEBAIHN0YXRpYyB2b2lkIGJhbV9kbXV4X2NtZF9kYXRhKHN0cnVjdCBiYW1fZG11eF9za2JfZG1hICpza2JfZG1hKVxcbiBcXHRcXHRicmVhaztcXG4gXFx0fVxcbiBcXG4rXFx0ZGV2X3N3X25ldHN0YXRzX3J4X2FkZChuZXRkZXYsIHNrYi1cXHUwMDNlbGVuKTtcXG4gXFx0bmV0aWZfcmVjZWl2ZV9za2Ioc2tiKTtcXG4gfVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDI6MjI6NTUuMzk5MzI3OTI0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoyNDIzMTM2NTc1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMgdG8gYWRkIHNvZnR3YXJlIG5ldHN0YXRzIGFjY291bnRpbmcuIFRoaXMgZHJpdmVyIGlzIHNwZWNpZmljIHRvIFF1YWxjb21tIFNvQ3MgKGUuZy4gTVNNODkxNi9NU004OTc0KSByZXF1aXJpbmcgUXVhbGNvbW0gU01FTSBzdGF0ZSBhbmQgRE1BIGVuZ2luZSBoYXJkd2FyZSwgd2hpY2ggaXMgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgdGVzdCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gSGVuY2UsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgM2FiMjRjYTAxNjhlNzEwOWI4YTViMWY1MzdlNGNiZWI4ZWFmNmJjOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDEgMDI6MjI6NTEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYyBiL2RyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jXG5pbmRleCBjYzZhY2U4ZDY0MzcxLi41YmNhYzJjY2FhYmQ2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmNcbisrKyBiL2RyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jXG5AQCAtMTc3LDggKzE3NywxMiBAQCBzdGF0aWMgdm9pZCBiYW1fZG11eF90eF9jYWxsYmFjayh2b2lkICpkYXRhKVxuIHtcbiBcdHN0cnVjdCBiYW1fZG11eF9za2JfZG1hICpza2JfZG1hID0gZGF0YTtcbiBcdHN0cnVjdCBza19idWZmICpza2IgPSBza2JfZG1hLVx1MDAzZXNrYjtcbitcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYgPSBza2ItXHUwMDNlZGV2O1xuIFxuIFx0YmFtX2RtdXhfdHhfZG9uZShza2JfZG1hKTtcbitcdGlmIChuZXRkZXYpXG4rXHRcdGRldl9zd19uZXRzdGF0c190eF9hZGQobmV0ZGV2LCAxLFxuK1x0XHRcdFx0ICAgICAgICgoc3RydWN0IGJhbV9kbXV4X2hkciAqKXNrYi1cdTAwM2VkYXRhKS1cdTAwM2VsZW4pO1xuIFx0ZGV2X2NvbnN1bWVfc2tiX2FueShza2IpO1xuIH1cbiBcbkBAIC00MDIsNiArNDA2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBiYW1fZG11eF9vcHMgPSB7XG4gXHQubmRvX29wZW5cdD0gYmFtX2RtdXhfbmV0ZGV2X29wZW4sXG4gXHQubmRvX3N0b3BcdD0gYmFtX2RtdXhfbmV0ZGV2X3N0b3AsXG4gXHQubmRvX3N0YXJ0X3htaXRcdD0gYmFtX2RtdXhfbmV0ZGV2X3N0YXJ0X3htaXQsXG4rXHQubmRvX2dldF9zdGF0czY0XHQ9IGRldl9nZXRfdHN0YXRzNjQsXG4gfTtcbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGRldmljZV90eXBlIHd3YW5fdHlwZSA9IHtcbkBAIC00MjEsNiArNDI2LDcgQEAgc3RhdGljIHZvaWQgYmFtX2RtdXhfbmV0ZGV2X3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRkZXYtXHUwMDNlbmVlZGVkX2hlYWRyb29tID0gc2l6ZW9mKHN0cnVjdCBiYW1fZG11eF9oZHIpO1xuIFx0ZGV2LVx1MDAzZW5lZWRlZF90YWlscm9vbSA9IHNpemVvZih1MzIpOyAvKiB3b3JkLWFsaWduZWQgKi9cbiBcdGRldi1cdTAwM2V0eF9xdWV1ZV9sZW4gPSBERUZBVUxUX1RYX1FVRVVFX0xFTjtcbitcdGRldi1cdTAwM2VwY3B1X3N0YXRfdHlwZSA9IE5FVERFVl9QQ1BVX1NUQVRfVFNUQVRTO1xuIFxuIFx0LyogVGhpcyBwZXJtIGFkZHIgd2lsbCBiZSB1c2VkIGFzIGludGVyZmFjZSBpZGVudGlmaWVyIGJ5IElQdjYgKi9cbiBcdGRldi1cdTAwM2VhZGRyX2Fzc2lnbl90eXBlID0gTkVUX0FERFJfUkFORE9NO1xuQEAgLTUzMyw2ICs1MzksNyBAQCBzdGF0aWMgdm9pZCBiYW1fZG11eF9jbWRfZGF0YShzdHJ1Y3QgYmFtX2RtdXhfc2tiX2RtYSAqc2tiX2RtYSlcbiBcdFx0YnJlYWs7XG4gXHR9XG4gXG4rXHRkZXZfc3dfbmV0c3RhdHNfcnhfYWRkKG5ldGRldiwgc2tiLVx1MDAzZWxlbik7XG4gXHRuZXRpZl9yZWNlaXZlX3NrYihza2IpO1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAyOjIyOjU1LjM5OTMyOTQ0NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYxNDM1NDY5MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBXV0FOIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHBhdGNoIGFuZCB0aGUgZHJpdmVyIGl0J3MgdG91Y2hpbmcg4oCTIHNwZWNpZmljYWxseSwgYGRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZ2V0IGEgc29saWQgb3ZlcnZpZXcgb2YgaXRzIGNvbnRleHQuIEZpcnN0LCBJIHdhbnQgdG8gY29uZmlybSB0aGUgZmlsZSdzIGxvY2F0aW9uIGFuZCB3aGF0IGl0cyBLY29uZmlnIGFuZCBoYXJkd2FyZSBkZXBlbmRlbmNpZXMgYXJlLiBUaGF0IHdpbGwgZ2l2ZSBtZSBhIHZpdGFsIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvbXBvbmVudHMgaW52b2x2ZWQuXG5cbkknbGwgc3RhcnQgd2l0aCBhIHF1aWNrIGNoZWNrIG9mIGBxY29tX2JhbV9kbXV4LmNgIGl0c2VsZi4gVGhlbiwgSSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgd2l0aGluIHRoYXQgZGlyZWN0b3J5LCBgZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnYC4gSSdsbCB1c2UgYGdyZXBwZXJgIChvciBgcmVhZC1maWxlYCBpZiB0aGF0J3MgbW9yZSBhcHByb3ByaWF0ZSkgdG8gcXVpY2tseSBwYXJzZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBhbnkgb3RoZXIgcGVydGluZW50IGNvbW1lbnRzIG9yIGNvZGUgZnJhZ21lbnRzIHdpdGhpbiB0aG9zZSBmaWxlcy4gVGhhdCdsbCBzZXQgdGhlIHN0YWdlIGZvciBhIG1vcmUgdGhvcm91Z2ggYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MzUsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQwMjoyMzowMS41NDI4Nzg5N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTY0NDU0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUUNPTV9CQU1fRE1VWHxRQ09NX0JBTV9ETVVYXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3d3YW5cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnPTUzPWNvbmZpZyBNSElfV1dBTl9NQklNXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctNjQtXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjY1OmNvbmZpZyBRQ09NX0JBTV9ETVVYXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTY2LVxcdHRyaXN0YXRlIFxcXCJRdWFsY29tbSBCQU0tRE1VWCBXV0FOIG5ldHdvcmsgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9NYWtlZmlsZT0xMj1vYmotJChDT05GSUdfTUhJX1dXQU5fTUJJTSkgKz0gbWhpX3d3YW5fbWJpbS5vXFxuZHJpdmVycy9uZXQvd3dhbi9NYWtlZmlsZToxMzpvYmotJChDT05GSUdfUUNPTV9CQU1fRE1VWCkgKz0gcWNvbV9iYW1fZG11eC5vXFxuZHJpdmVycy9uZXQvd3dhbi9NYWtlZmlsZS0xNC1vYmotJChDT05GSUdfUlBNU0dfV1dBTl9DVFJMKSArPSBycG1zZ193d2FuX2N0cmwub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQwMjoyMzowMS41ODg1MjgzMTlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNTE2MTUyMjM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRoaW5nczpcblxuKipEaWdnaW5nIGludG8gV1dBTiBDb25maWd1cmF0aW9uIGFuZCBRQ09NIEJBTSBEbXV4KipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgd2l0aCB0aGlzIFdXQU4gc3R1ZmYuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBzZXQgdXAsIHNvIGZpcnN0LCBsZXQncyBqdW1wIGludG8gYGRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZ2AsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSA2NS4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2Qgb3ZlcnZpZXcgb2YgdGhlIGF2YWlsYWJsZSBjaG9pY2VzIGFuZCBkZXBlbmRlbmNpZXMuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdW5kZXJzdGFuZGluZyB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZmxhZ3MuXG5cbkFmdGVyIHRoYXQsIEknbGwgc3dpdGNoIGdlYXJzIGFuZCByZWFsbHkgZGl2ZSBpbnRvIHRoZSBgcWNvbV9iYW1fZG11eGAgZHJpdmVyLiBJIG5lZWQgdG8gdHJhY2UgaG93IGl0J3MgYmluZGluZyB0byB0aGUgc3lzdGVtLiBXaGF0IGV4YWN0IGhhcmR3YXJlIHJlc291cmNlcyBkb2VzIGl0IHJlcXVpcmU/IEFuZCBhcmUgdGhlcmUgYW55IHNwZWNpZmljIHBsYXRmb3JtIGRlcGVuZGVuY2llcz8gR2V0dGluZyB0aGlzIGxldmVsIG9mIGRldGFpbCBpcyBjcml0aWNhbCB0byBwcm9wZXJseSBpbnRlZ3JhdGluZyBhbmQgdW5kZXJzdGFuZGluZyBob3cgaXQgZnVuY3Rpb25zIHdpdGhpbiB0aGUgbGFyZ2VyIHN5c3RlbS4gSSdtIGxvb2tpbmcgZm9yIGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgcm9sZSBhbmQgcHJlcmVxdWlzaXRlcyBiZWZvcmUgSSBtb3ZlIGZ1cnRoZXIgd2l0aCB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDk2LCJPdXRwdXRUb2tlbnMiOjgyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDI6MjM6MDQuMTA0NjgyNjc2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY5OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYwLFxuICBcIkxpbmVDb3VudFwiOiAyNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDYwOlxcdCAgICAgICAgICBJRCAwLiBBZGRpdGlvbmFsIGxpbmtzIGNhbiBiZSBjcmVhdGVkIHZpYSB3d2FuIHJ0bmV0bGluayB0eXBlLlxcbiAgNjE6XFx0XFxuICA2MjpcXHQgICAgICAgICAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlXFxuICA2MzpcXHQgICAgICAgICAgY2FsbGVkIG1oaV93d2FuX21iaW0uXFxuICA2NDpcXHRcXG4gIDY1OlxcdGNvbmZpZyBRQ09NX0JBTV9ETVVYXFxuICA2NjpcXHRcXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gQkFNLURNVVggV1dBTiBuZXR3b3JrIGRyaXZlclxcXCJcXG4gIDY3OlxcdFxcdGRlcGVuZHMgb24gKERNQV9FTkdJTkUgXFx1MDAyNlxcdTAwMjYgUE0gXFx1MDAyNlxcdTAwMjYgUUNPTV9TTUVNX1NUQVRFKSB8fCBDT01QSUxFX1RFU1RcXG4gIDY4OlxcdFxcdGhlbHBcXG4gIDY5OlxcdFxcdCAgVGhlIEJBTSBEYXRhIE11bHRpcGxleGVyIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgbmV0d29yayBkYXRhIGNoYW5uZWxzXFxuICA3MDpcXHRcXHQgIG9mIG1vZGVtcyBpbnRlZ3JhdGVkIGludG8gbWFueSBvbGRlciBRdWFsY29tbSBTb0NzLCBlLmcuIFF1YWxjb21tXFxuICA3MTpcXHRcXHQgIE1TTTg5MTYgb3IgTVNNODk3NC4gVGhlIGNvbm5lY3Rpb24gY2FuIGJlIGVzdGFibGlzaGVkIHZpYSBRTUkvQVQgZnJvbVxcbiAgNzI6XFx0XFx0ICB1c2Vyc3BhY2Ugd2l0aCBjb250cm9sIHBvcnRzIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSBXV0FOIHN1YnN5c3RlbVxcbiAgNzM6XFx0XFx0ICAoQ09ORklHX1JQTVNHX1dXQU5fQ1RSTCkgb3IgUVJUUiBuZXR3b3JrIHNvY2tldHMgKENPTkZJR19RUlRSKS5cXG4gIDc0OlxcdFxcbiAgNzU6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmVcXG4gIDc2OlxcdFxcdCAgY2FsbGVkIHFjb21fYmFtX2RtdXguXFxuICA3NzpcXHRcXG4gIDc4OlxcdGNvbmZpZyBSUE1TR19XV0FOX0NUUkxcXG4gIDc5OlxcdFxcdHRyaXN0YXRlIFxcXCJSUE1TRyBXV0FOIGNvbnRyb2wgZHJpdmVyXFxcIlxcbiAgODA6XFx0XFx0ZGVwZW5kcyBvbiBSUE1TR1xcbiAgODE6XFx0XFx0aGVscFxcbiAgODI6XFx0XFx0ICBSUE1TRyBXV0FOIENUUkwgYWxsb3dzIG1vZGVtcyBhdmFpbGFibGUgdmlhIFJQTVNHIGNoYW5uZWxzIHRvIGV4cG9zZVxcbiAgODM6XFx0XFx0ICBkaWZmZXJlbnQgbW9kZW0gcHJvdG9jb2xzL3BvcnRzIHRvIHVzZXJzcGFjZSwgaW5jbHVkaW5nIEFUIGFuZCBRTUkuXFxuICA4NDpcXHRcXHQgIFRoZXNlIHByb3RvY29scyBjYW4gYmUgYWNjZXNzZWQgZGlyZWN0bHkgZnJvbSB1c2Vyc3BhY2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDI6MjM6MDQuMTA0NzUxMTE2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MjI2NDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXJ8YmFtX2RtdXhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMjQtI2RlZmluZSBCQU1fRE1VWF9CVUZGRVJfU0laRVxcdFxcdFNaXzJLXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MjU6I2RlZmluZSBCQU1fRE1VWF9IRFJfU0laRVxcdFxcdHNpemVvZihzdHJ1Y3QgYmFtX2RtdXhfaGRyKVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTI2LSNkZWZpbmUgQkFNX0RNVVhfTUFYX0RBVEFfU0laRVxcdFxcdChCQU1fRE1VWF9CVUZGRVJfU0laRSAtIEJBTV9ETVVYX0hEUl9TSVpFKVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM9NDA9ZW51bSB7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy01MS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo1MjpzdHJ1Y3QgYmFtX2RtdXhfaGRyIHtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy01My1cXHR1MTYgbWFnaWM7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02MC1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo2MTpzdHJ1Y3QgYmFtX2RtdXhfc2tiX2RtYSB7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NjI6XFx0c3RydWN0IGJhbV9kbXV4ICpkbXV4O1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTYzLVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02Ni1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo2NzpzdHJ1Y3QgYmFtX2RtdXgge1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTY4LVxcdHN0cnVjdCBkZXZpY2UgKmRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTc3LVxcdHN0cnVjdCBkbWFfY2hhbiAqcngsICp0eDtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo3ODpcXHRzdHJ1Y3QgYmFtX2RtdXhfc2tiX2RtYSByeF9za2JzW0JBTV9ETVVYX05VTV9TS0JdO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjc5OlxcdHN0cnVjdCBiYW1fZG11eF9za2JfZG1hIHR4X3NrYnNbQkFNX0RNVVhfTlVNX1NLQl07XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtODAtXFx0c3BpbmxvY2tfdCB0eF9sb2NrOyAvKiBQcm90ZWN0IHR4X3NrYnMsIHR4X25leHRfc2tiICovXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy04OS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo5MDpzdHJ1Y3QgYmFtX2RtdXhfbmV0ZGV2IHtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo5MTpcXHRzdHJ1Y3QgYmFtX2RtdXggKmRtdXg7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtOTItXFx0dTggY2g7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy05NC1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo5NTpzdGF0aWMgdm9pZCBiYW1fZG11eF9wY192b3RlKHN0cnVjdCBiYW1fZG11eCAqZG11eCwgYm9vbCBlbmFibGUpXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtOTYte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMTAxLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjEwMjpzdGF0aWMgdm9pZCBiYW1fZG11eF9wY19hY2soc3RydWN0IGJhbV9kbXV4ICpkbXV4KVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTEwMy17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0xMDgtXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MTA5OnN0YXRpYyBib29sIGJhbV9kbXV4X3NrYl9kbWFfbWFwKHN0cnVjdCBiYW1fZG11eF9za2JfZG1hICpza2JfZG1hLFxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTExMC1cXHRcXHRcXHRcXHQgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyKVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMTIzLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjEyNDpzdGF0aWMgdm9pZCBiYW1fZG11eF9za2JfZG1hX3VubWFwKHN0cnVjdCBiYW1fZG11eF9za2JfZG1hICpza2JfZG1hLFxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTEyNS1cXHRcXHRcXHRcXHQgICBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIpXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0xMzAtXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MTMxOnN0YXRpYyB2b2lkIGJhbV9kbXV4X3R4X3dha2VfcXVldWVzKHN0cnVjdCBiYW1fZG11eCAqZG11eClcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0xMzIte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMTQ0LVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjE0NTpzdGF0aWMgdm9pZCBiYW1fZG11eF90eF9zdG9wX3F1ZXVlcyhzdHJ1Y3QgYmFtX2RtdXggKmRtdXgpXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMTQ2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTE1OC1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoxNTk6c3RhdGljIHZvaWQgYmFtX2RtdXhfdHhfZG9uZShzdHJ1Y3QgYmFtX2RtdXhfc2tiX2RtYSAqc2tiX2RtYSlcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0xNjAte1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjE2MTpcXHRzdHJ1Y3QgYmFtX2RtdXggKmRtdXggPSBza2JfZG1hLVxcdTAwM2VkbXV4O1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTE2Mi1cXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMTY2LVxcdGlmIChza2JfZG1hLVxcdTAwM2VhZGRyKVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjE2NzpcXHRcXHRiYW1fZG11eF9za2JfZG1hX3VubWFwKHNrYl9kbWEsIERNQV9UT19ERVZJQ0UpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTE2OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTE3MS1cXHRpZiAoc2tiX2RtYSA9PSBcXHUwMDI2ZG11eC1cXHUwMDNldHhfc2tic1tkbXV4LVxcdTAwM2V0eF9uZXh0X3NrYiAlIEJBTV9ETVVYX05VTV9TS0JdKVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjE3MjpcXHRcXHRiYW1fZG11eF90eF93YWtlX3F1ZXVlcyhkbXV4KTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0xNzMtXFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2ZG11eC1cXHUwMDNldHhfbG9jaywgZmxhZ3MpO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMTc1LVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjE3NjpzdGF0aWMgdm9pZCBiYW1fZG11eF90eF9jYWxsYmFjayh2b2lkICpkYXRhKVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTE3Ny17XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MTc4OlxcdHN0cnVjdCBiYW1fZG11eF9za2JfZG1hICpza2JfZG1hID0gZGF0YTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0xNzktXFx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9IHNrYl9kbWEtXFx1MDAzZXNrYjtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTE4MS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoxODI6XFx0YmFtX2RtdXhfdHhfZG9uZShza2JfZG1hKTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0xODMtXFx0aWYgKG5ldGRldilcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0xODQtXFx0XFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChuZXRkZXYsIDEsXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MTg1OlxcdFxcdFxcdFxcdCAgICAgICAoKHN0cnVjdCBiYW1fZG11eF9oZHIgKilza2ItXFx1MDAzZWRhdGEpLVxcdTAwM2VsZW4pO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTE4Ni1cXHRkZXZfY29uc3VtZV9za2JfYW55KHNrYik7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0xODgtXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MTg5OnN0YXRpYyBib29sIGJhbV9kbXV4X3NrYl9kbWFfc3VibWl0X3R4KHN0cnVjdCBiYW1fZG11eF9za2JfZG1hICpza2JfZG1hKVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTE5MC17XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MTkxOlxcdHN0cnVjdCBiYW1fZG11eCAqZG11eCA9IHNrYl9kbWEtXFx1MDAzZWRtdXg7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMTkyLVxcdHN0cnVjdCBkbWFfYXN5bmNfdHhfZGVzY3JpcHRvciAqZGVzYztcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTIwMS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoyMDI6XFx0ZGVzYy1cXHUwMDNlY2FsbGJhY2sgPSBiYW1fZG11eF90eF9jYWxsYmFjaztcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yMDMtXFx0ZGVzYy1cXHUwMDNlY2FsbGJhY2tfcGFyYW0gPSBza2JfZG1hO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMjA3LVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjIwODpzdGF0aWMgc3RydWN0IGJhbV9kbXV4X3NrYl9kbWEgKlxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjIwOTpiYW1fZG11eF90eF9xdWV1ZShzdHJ1Y3QgYmFtX2RtdXggKmRtdXgsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMjEwLXtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoyMTE6XFx0c3RydWN0IGJhbV9kbXV4X3NrYl9kbWEgKnNrYl9kbWE7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMjEyLVxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yMTctXFx0aWYgKHNrYl9kbWEtXFx1MDAzZXNrYikge1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjIxODpcXHRcXHRiYW1fZG11eF90eF9zdG9wX3F1ZXVlcyhkbXV4KTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yMTktXFx0XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2ZG11eC1cXHUwMDNldHhfbG9jaywgZmxhZ3MpO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMjI1LVxcdGlmIChkbXV4LVxcdTAwM2V0eF9za2JzW2RtdXgtXFx1MDAzZXR4X25leHRfc2tiICUgQkFNX0RNVVhfTlVNX1NLQl0uc2tiKVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjIyNjpcXHRcXHRiYW1fZG11eF90eF9zdG9wX3F1ZXVlcyhkbXV4KTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yMjctXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yMzEtXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MjMyOnN0YXRpYyBpbnQgYmFtX2RtdXhfc2VuZF9jbWQoc3RydWN0IGJhbV9kbXV4X25ldGRldiAqYm5kZXYsIHU4IGNtZClcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yMzMte1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjIzNDpcXHRzdHJ1Y3QgYmFtX2RtdXggKmRtdXggPSBibmRldi1cXHUwMDNlZG11eDtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoyMzU6XFx0c3RydWN0IGJhbV9kbXV4X3NrYl9kbWEgKnNrYl9kbWE7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MjM2OlxcdHN0cnVjdCBiYW1fZG11eF9oZHIgKmhkcjtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yMzctXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTI0OC1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoyNDk6XFx0c2tiX2RtYSA9IGJhbV9kbXV4X3R4X3F1ZXVlKGRtdXgsIHNrYik7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMjUwLVxcdGlmICghc2tiX2RtYSkge1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMjU4LVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjI1OTpcXHRpZiAoIWJhbV9kbXV4X3NrYl9kbWFfbWFwKHNrYl9kbWEsIERNQV9UT19ERVZJQ0UpKSB7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMjYwLVxcdFxcdHJldCA9IC1FTk9NRU07XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yNjMtXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MjY0OlxcdGlmICghYmFtX2RtdXhfc2tiX2RtYV9zdWJtaXRfdHgoc2tiX2RtYSkpIHtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yNjUtXFx0XFx0cmV0ID0gLUVJTztcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTI3Mi10eF9mYWlsOlxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjI3MzpcXHRiYW1fZG11eF90eF9kb25lKHNrYl9kbWEpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTI3NC1mcmVlX3NrYjpcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTI3OC1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzoyNzk6c3RhdGljIGludCBiYW1fZG11eF9uZXRkZXZfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTI4MC17XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MjgxOlxcdHN0cnVjdCBiYW1fZG11eF9uZXRkZXYgKmJuZGV2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yODItXFx0aW50IHJldDtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yODMtXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6Mjg0OlxcdHJldCA9IGJhbV9kbXV4X3NlbmRfY21kKGJuZGV2LCBCQU1fRE1VWF9DTURfT1BFTik7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMjg1LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yOTEtXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MjkyOnN0YXRpYyBpbnQgYmFtX2RtdXhfbmV0ZGV2X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yOTMte1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjI5NDpcXHRzdHJ1Y3QgYmFtX2RtdXhfbmV0ZGV2ICpibmRldiA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMjk1LVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTI5Ni1cXHRuZXRpZl9zdG9wX3F1ZXVlKG5ldGRldik7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6Mjk3OlxcdGJhbV9kbXV4X3NlbmRfY21kKGJuZGV2LCBCQU1fRE1VWF9DTURfQ0xPU0UpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTI5OC1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jPTMwMT1zdGF0aWMgdW5zaWduZWQgaW50IG5lZWRlZF9yb29tKHVuc2lnbmVkIGludCBhdmFpbCwgdW5zaWduZWQgaW50IG5lZWRlZClcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTMwNy1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzozMDg6c3RhdGljIGludCBiYW1fZG11eF90eF9wcmVwYXJlX3NrYihzdHJ1Y3QgYmFtX2RtdXhfbmV0ZGV2ICpibmRldixcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0zMDktXFx0XFx0XFx0XFx0ICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTMxMy1cXHR1bnNpZ25lZCBpbnQgdGFpbCA9IG5lZWRlZF9yb29tKHNrYl90YWlscm9vbShza2IpLCBwYWQpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjMxNDpcXHRzdHJ1Y3QgYmFtX2RtdXhfaGRyICpoZHI7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMzE1LVxcdGludCByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0zMzUtXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MzM2OnN0YXRpYyBuZXRkZXZfdHhfdCBiYW1fZG11eF9uZXRkZXZfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTMzNy1cXHRcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTMzOC17XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MzM5OlxcdHN0cnVjdCBiYW1fZG11eF9uZXRkZXYgKmJuZGV2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzozNDA6XFx0c3RydWN0IGJhbV9kbXV4ICpkbXV4ID0gYm5kZXYtXFx1MDAzZWRtdXg7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MzQxOlxcdHN0cnVjdCBiYW1fZG11eF9za2JfZG1hICpza2JfZG1hO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTM0Mi1cXHRpbnQgYWN0aXZlLCByZXQ7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMzQzLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjM0NDpcXHRza2JfZG1hID0gYmFtX2RtdXhfdHhfcXVldWUoZG11eCwgc2tiKTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0zNDUtXFx0aWYgKCFza2JfZG1hKVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMzUxLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjM1MjpcXHRyZXQgPSBiYW1fZG11eF90eF9wcmVwYXJlX3NrYihibmRldiwgc2tiKTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0zNTMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTM1NS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzozNTY6XFx0aWYgKCFiYW1fZG11eF9za2JfZG1hX21hcChza2JfZG1hLCBETUFfVE9fREVWSUNFKSlcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0zNTctXFx0XFx0Z290byBkcm9wO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMzY2LVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjM2NzpcXHRpZiAoIWJhbV9kbXV4X3NrYl9kbWFfc3VibWl0X3R4KHNrYl9kbWEpKVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTM2OC1cXHRcXHRnb3RvIGRyb3A7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0zNzMtZHJvcDpcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzozNzQ6XFx0YmFtX2RtdXhfdHhfZG9uZShza2JfZG1hKTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0zNzUtXFx0ZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTM3OC1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzozNzk6c3RhdGljIHZvaWQgYmFtX2RtdXhfdHhfd2FrZXVwX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTM4MC17XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MzgxOlxcdHN0cnVjdCBiYW1fZG11eCAqZG11eCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgYmFtX2RtdXgsIHR4X3dha2V1cF93b3JrKTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0zODItXFx0dW5zaWduZWQgbG9uZyBwZW5kaW5nO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtMzk2LVxcdGZvcl9lYWNoX3NldF9iaXQoaSwgXFx1MDAyNnBlbmRpbmcsIEJBTV9ETVVYX05VTV9TS0IpIHtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzozOTc6XFx0XFx0YmFtX2RtdXhfc2tiX2RtYV9zdWJtaXRfdHgoXFx1MDAyNmRtdXgtXFx1MDAzZXR4X3NrYnNbaV0pO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTM5OC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy00MDQtXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NDA1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgYmFtX2RtdXhfb3BzID0ge1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjQwNjpcXHQubmRvX29wZW5cXHQ9IGJhbV9kbXV4X25ldGRldl9vcGVuLFxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjQwNzpcXHQubmRvX3N0b3BcXHQ9IGJhbV9kbXV4X25ldGRldl9zdG9wLFxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjQwODpcXHQubmRvX3N0YXJ0X3htaXRcXHQ9IGJhbV9kbXV4X25ldGRldl9zdGFydF94bWl0LFxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTQwOS1cXHQubmRvX2dldF9zdGF0czY0XFx0PSBkZXZfZ2V0X3RzdGF0czY0LFxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM9NDEyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2aWNlX3R5cGUgd3dhbl90eXBlID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNDE1LVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjQxNjpzdGF0aWMgdm9pZCBiYW1fZG11eF9uZXRkZXZfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy00MTcte1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjQxODpcXHRkZXYtXFx1MDAzZW5ldGRldl9vcHMgPSBcXHUwMDI2YmFtX2RtdXhfb3BzO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTQxOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTQyNS1cXHRkZXYtXFx1MDAzZW1heF9tdHUgPSBCQU1fRE1VWF9NQVhfREFUQV9TSVpFO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjQyNjpcXHRkZXYtXFx1MDAzZW5lZWRlZF9oZWFkcm9vbSA9IHNpemVvZihzdHJ1Y3QgYmFtX2RtdXhfaGRyKTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy00MjctXFx0ZGV2LVxcdTAwM2VuZWVkZWRfdGFpbHJvb20gPSBzaXplb2YodTMyKTsgLyogd29yZC1hbGlnbmVkICovXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy00MzUtXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NDM2OnN0YXRpYyB2b2lkIGJhbV9kbXV4X3JlZ2lzdGVyX25ldGRldl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy00Mzcte1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjQzODpcXHRzdHJ1Y3QgYmFtX2RtdXggKmRtdXggPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IGJhbV9kbXV4LCByZWdpc3Rlcl9uZXRkZXZfd29yayk7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NDM5OlxcdHN0cnVjdCBiYW1fZG11eF9uZXRkZXYgKmJuZGV2O1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTQ0MC1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNDQ3LVxcdFxcdG5ldGRldiA9IGFsbG9jX25ldGRldihzaXplb2YoKmJuZGV2KSwgXFxcInd3YW4lZFxcXCIsIE5FVF9OQU1FX0VOVU0sXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NDQ4OlxcdFxcdFxcdFxcdCAgICAgIGJhbV9kbXV4X25ldGRldl9zZXR1cCk7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNDQ5LVxcdFxcdGlmICghbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNDcwLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjQ3MTpzdGF0aWMgdm9pZCBiYW1fZG11eF9yeF9jYWxsYmFjayh2b2lkICpkYXRhKTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy00NzItXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NDczOnN0YXRpYyBib29sIGJhbV9kbXV4X3NrYl9kbWFfc3VibWl0X3J4KHN0cnVjdCBiYW1fZG11eF9za2JfZG1hICpza2JfZG1hKVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTQ3NC17XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NDc1OlxcdHN0cnVjdCBiYW1fZG11eCAqZG11eCA9IHNrYl9kbWEtXFx1MDAzZWRtdXg7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNDc2LVxcdHN0cnVjdCBkbWFfYXN5bmNfdHhfZGVzY3JpcHRvciAqZGVzYztcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTQ4NS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo0ODY6XFx0ZGVzYy1cXHUwMDNlY2FsbGJhY2sgPSBiYW1fZG11eF9yeF9jYWxsYmFjaztcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy00ODctXFx0ZGVzYy1cXHUwMDNlY2FsbGJhY2tfcGFyYW0gPSBza2JfZG1hO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNDkxLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjQ5MjpzdGF0aWMgYm9vbCBiYW1fZG11eF9za2JfZG1hX3F1ZXVlX3J4KHN0cnVjdCBiYW1fZG11eF9za2JfZG1hICpza2JfZG1hLCBnZnBfdCBnZnApXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNDkzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTUwMC1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo1MDE6XFx0cmV0dXJuIGJhbV9kbXV4X3NrYl9kbWFfbWFwKHNrYl9kbWEsIERNQV9GUk9NX0RFVklDRSkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo1MDI6XFx0ICAgICAgIGJhbV9kbXV4X3NrYl9kbWFfc3VibWl0X3J4KHNrYl9kbWEpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTUwMy19XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNTA0LVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjUwNTpzdGF0aWMgdm9pZCBiYW1fZG11eF9jbWRfZGF0YShzdHJ1Y3QgYmFtX2RtdXhfc2tiX2RtYSAqc2tiX2RtYSlcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy01MDYte1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjUwNzpcXHRzdHJ1Y3QgYmFtX2RtdXggKmRtdXggPSBza2JfZG1hLVxcdTAwM2VkbXV4O1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTUwOC1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gc2tiX2RtYS1cXHUwMDNlc2tiO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjUwOTpcXHRzdHJ1Y3QgYmFtX2RtdXhfaGRyICpoZHIgPSAoc3RydWN0IGJhbV9kbXV4X2hkciAqKXNrYi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy01MTAtXFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiA9IGRtdXgtXFx1MDAzZW5ldGRldnNbaGRyLVxcdTAwM2VjaF07XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy01NDUtXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NTQ2OnN0YXRpYyB2b2lkIGJhbV9kbXV4X2NtZF9vcGVuKHN0cnVjdCBiYW1fZG11eCAqZG11eCwgc3RydWN0IGJhbV9kbXV4X2hkciAqaGRyKVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTU0Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy01NjQtXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NTY1OnN0YXRpYyB2b2lkIGJhbV9kbXV4X2NtZF9jbG9zZShzdHJ1Y3QgYmFtX2RtdXggKmRtdXgsIHN0cnVjdCBiYW1fZG11eF9oZHIgKmhkcilcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy01NjYte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNTc5LVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjU4MDpzdGF0aWMgdm9pZCBiYW1fZG11eF9yeF9jYWxsYmFjayh2b2lkICpkYXRhKVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTU4MS17XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NTgyOlxcdHN0cnVjdCBiYW1fZG11eF9za2JfZG1hICpza2JfZG1hID0gZGF0YTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo1ODM6XFx0c3RydWN0IGJhbV9kbXV4ICpkbXV4ID0gc2tiX2RtYS1cXHUwMDNlZG11eDtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy01ODQtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9IHNrYl9kbWEtXFx1MDAzZXNrYjtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo1ODU6XFx0c3RydWN0IGJhbV9kbXV4X2hkciAqaGRyID0gKHN0cnVjdCBiYW1fZG11eF9oZHIgKilza2ItXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNTg2LVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjU4NzpcXHRiYW1fZG11eF9za2JfZG1hX3VubWFwKHNrYl9kbWEsIERNQV9GUk9NX0RFVklDRSk7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNTg4LVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNjAwLVxcdGNhc2UgQkFNX0RNVVhfQ01EX0RBVEE6XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NjAxOlxcdFxcdGJhbV9kbXV4X2NtZF9kYXRhKHNrYl9kbWEpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTYwMi1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02MDMtXFx0Y2FzZSBCQU1fRE1VWF9DTURfT1BFTjpcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo2MDQ6XFx0XFx0YmFtX2RtdXhfY21kX29wZW4oZG11eCwgaGRyKTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02MDUtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNjA2LVxcdGNhc2UgQkFNX0RNVVhfQ01EX0NMT1NFOlxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjYwNzpcXHRcXHRiYW1fZG11eF9jbWRfY2xvc2UoZG11eCwgaGRyKTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02MDgtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02MTUtb3V0OlxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjYxNjpcXHRpZiAoYmFtX2RtdXhfc2tiX2RtYV9xdWV1ZV9yeChza2JfZG1hLCBHRlBfQVRPTUlDKSlcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02MTctXFx0XFx0ZG1hX2FzeW5jX2lzc3VlX3BlbmRpbmcoZG11eC1cXHUwMDNlcngpO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNjE5LVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjYyMDpzdGF0aWMgYm9vbCBiYW1fZG11eF9wb3dlcl9vbihzdHJ1Y3QgYmFtX2RtdXggKmRtdXgpXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNjIxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTYzNy1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQkFNX0RNVVhfTlVNX1NLQjsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NjM4OlxcdFxcdGlmICghYmFtX2RtdXhfc2tiX2RtYV9xdWV1ZV9yeChcXHUwMDI2ZG11eC1cXHUwMDNlcnhfc2tic1tpXSwgR0ZQX0tFUk5FTCkpXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNjM5LVxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTY0NS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo2NDY6c3RhdGljIHZvaWQgYmFtX2RtdXhfZnJlZV9za2JzKHN0cnVjdCBiYW1fZG11eF9za2JfZG1hIHNrYnNbXSxcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02NDctXFx0XFx0XFx0ICAgICAgIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcilcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTY1MS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQkFNX0RNVVhfTlVNX1NLQjsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NjUyOlxcdFxcdHN0cnVjdCBiYW1fZG11eF9za2JfZG1hICpza2JfZG1hID0gXFx1MDAyNnNrYnNbaV07XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNjUzLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTY1NC1cXHRcXHRpZiAoc2tiX2RtYS1cXHUwMDNlYWRkcilcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo2NTU6XFx0XFx0XFx0YmFtX2RtdXhfc2tiX2RtYV91bm1hcChza2JfZG1hLCBkaXIpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTY1Ni1cXHRcXHRpZiAoc2tiX2RtYS1cXHUwMDNlc2tiKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02NjItXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NjYzOnN0YXRpYyB2b2lkIGJhbV9kbXV4X3Bvd2VyX29mZihzdHJ1Y3QgYmFtX2RtdXggKmRtdXgpXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNjY0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTY3Ni1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo2Nzc6XFx0YmFtX2RtdXhfZnJlZV9za2JzKGRtdXgtXFx1MDAzZXJ4X3NrYnMsIERNQV9GUk9NX0RFVklDRSk7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNjc4LX1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02NzktXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NjgwOnN0YXRpYyBpcnFyZXR1cm5fdCBiYW1fZG11eF9wY19pcnEoaW50IGlycSwgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02ODEte1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjY4MjpcXHRzdHJ1Y3QgYmFtX2RtdXggKmRtdXggPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTY4My1cXHRib29sIG5ld19zdGF0ZSA9ICFkbXV4LVxcdTAwM2VwY19zdGF0ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTY4Ny1cXHRpZiAobmV3X3N0YXRlKSB7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6Njg4OlxcdFxcdGlmIChiYW1fZG11eF9wb3dlcl9vbihkbXV4KSlcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo2ODk6XFx0XFx0XFx0YmFtX2RtdXhfcGNfYWNrKGRtdXgpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTY5MC1cXHRcXHRlbHNlXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NjkxOlxcdFxcdFxcdGJhbV9kbXV4X3Bvd2VyX29mZihkbXV4KTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy02OTItXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo2OTM6XFx0XFx0YmFtX2RtdXhfcG93ZXJfb2ZmKGRtdXgpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjY5NDpcXHRcXHRiYW1fZG11eF9wY19hY2soZG11eCk7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNjk1LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTcwMi1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo3MDM6c3RhdGljIGlycXJldHVybl90IGJhbV9kbXV4X3BjX2Fja19pcnEoaW50IGlycSwgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy03MDQte1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjcwNTpcXHRzdHJ1Y3QgYmFtX2RtdXggKmRtdXggPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTcwNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTcxMi1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo3MTM6c3RhdGljIGludCBiYW1fZG11eF9ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTcxNC17XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NzE1OlxcdHN0cnVjdCBiYW1fZG11eCAqZG11eCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTcxNi1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy03MTctXFx0ZGV2X2RiZyhkZXYsIFxcXCJydW50aW1lIHN1c3BlbmRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjcxODpcXHRiYW1fZG11eF9wY192b3RlKGRtdXgsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy03MTktXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy03MjItXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NzIzOnN0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgYmFtX2RtdXhfcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTcyNC17XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NzI1OlxcdHN0cnVjdCBiYW1fZG11eCAqZG11eCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTcyNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTczNC1cXHQvKiBWb3RlIGZvciBwb3dlciBzdGF0ZSAqL1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjczNTpcXHRiYW1fZG11eF9wY192b3RlKGRtdXgsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTczNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTczOS1cXHRcXHRcXHRcXHRcXHQgQkFNX0RNVVhfUkVNT1RFX1RJTUVPVVQpKSB7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6NzQwOlxcdFxcdGJhbV9kbXV4X3BjX3ZvdGUoZG11eCwgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTc0MS1cXHRcXHRyZXR1cm4gLUVUSU1FRE9VVDtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTc0Ni1cXHRcXHRcXHRcXHRCQU1fRE1VWF9SRU1PVEVfVElNRU9VVCkpIHtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo3NDc6XFx0XFx0YmFtX2RtdXhfcGNfdm90ZShkbXV4LCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNzQ4LVxcdFxcdHJldHVybiAtRVRJTUVET1VUO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNzUyLVxcdGlmICghZG11eC1cXHUwMDNlcngpIHtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo3NTM6XFx0XFx0YmFtX2RtdXhfcGNfdm90ZShkbXV4LCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNzU0LVxcdFxcdHJldHVybiAtRU5YSU87XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy03NjQtXFx0XFx0ZG11eC1cXHUwMDNldHggPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjc2NTpcXHRcXHRiYW1fZG11eF9ydW50aW1lX3N1c3BlbmQoZGV2KTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy03NjYtXFx0XFx0cmV0dXJuIC1FTlhJTztcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTc3MS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo3NzI6c3RhdGljIGludCBiYW1fZG11eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTc3My17XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNzc0LVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6Nzc1OlxcdHN0cnVjdCBiYW1fZG11eCAqZG11eDtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy03NzYtXFx0aW50IHJldCwgcGNfYWNrX2lycSwgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTgxMC1cXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2ZG11eC1cXHUwMDNldHhfbG9jayk7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6ODExOlxcdElOSVRfV09SSyhcXHUwMDI2ZG11eC1cXHUwMDNldHhfd2FrZXVwX3dvcmssIGJhbV9kbXV4X3R4X3dha2V1cF93b3JrKTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo4MTI6XFx0SU5JVF9XT1JLKFxcdTAwMjZkbXV4LVxcdTAwM2VyZWdpc3Rlcl9uZXRkZXZfd29yaywgYmFtX2RtdXhfcmVnaXN0ZXJfbmV0ZGV2X3dvcmspO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTgxMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTgyNi1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo4Mjc6XFx0cmV0ID0gZGV2bV9yZXF1ZXN0X3RocmVhZGVkX2lycShkZXYsIHBjX2Fja19pcnEsIE5VTEwsIGJhbV9kbXV4X3BjX2Fja19pcnEsXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtODI4LVxcdFxcdFxcdFxcdFxcdElSUUZfT05FU0hPVCwgTlVMTCwgZG11eCk7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy04MzEtXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6ODMyOlxcdHJldCA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEoZGV2LCBkbXV4LVxcdTAwM2VwY19pcnEsIE5VTEwsIGJhbV9kbXV4X3BjX2lycSxcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy04MzMtXFx0XFx0XFx0XFx0XFx0SVJRRl9PTkVTSE9ULCBOVUxMLCBkbXV4KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTg0My1cXHRpZiAoZG11eC1cXHUwMDNlcGNfc3RhdGUpIHtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo4NDQ6XFx0XFx0aWYgKGJhbV9kbXV4X3Bvd2VyX29uKGRtdXgpKVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjg0NTpcXHRcXHRcXHRiYW1fZG11eF9wY19hY2soZG11eCk7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtODQ2LVxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo4NDc6XFx0XFx0XFx0YmFtX2RtdXhfcG93ZXJfb2ZmKGRtdXgpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTg0OC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy04NTctXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6ODU4OnN0YXRpYyB2b2lkIGJhbV9kbXV4X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTg1OS17XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6ODYwOlxcdHN0cnVjdCBiYW1fZG11eCAqZG11eCA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTg2MS1cXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBkbXV4LVxcdTAwM2VkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy04NzctXFx0cG1fcnVudGltZV9kb250X3VzZV9hdXRvc3VzcGVuZChkZXYpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjg3ODpcXHRiYW1fZG11eF9ydW50aW1lX3N1c3BlbmQoZGV2KTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy04NzktXFx0cG1fcnVudGltZV9zZXRfc3VzcGVuZGVkKGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy04ODYtXFx0ZGlzYWJsZV9pcnEoZG11eC1cXHUwMDNlcGNfaXJxKTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo4ODc6XFx0YmFtX2RtdXhfcG93ZXJfb2ZmKGRtdXgpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jOjg4ODpcXHRiYW1fZG11eF9mcmVlX3NrYnMoZG11eC1cXHUwMDNldHhfc2ticywgRE1BX1RPX0RFVklDRSk7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtODg5LX1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy04OTAtXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6ODkxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBiYW1fZG11eF9wbV9vcHMgPSB7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6ODkyOlxcdFNFVF9SVU5USU1FX1BNX09QUyhiYW1fZG11eF9ydW50aW1lX3N1c3BlbmQsIGJhbV9kbXV4X3J1bnRpbWVfcmVzdW1lLCBOVUxMKVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTg5My19O1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTg5NC1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo4OTU6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYmFtX2RtdXhfb2ZfbWF0Y2hbXSA9IHtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy04OTYtXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJxY29tLGJhbS1kbXV4XFxcIiB9LFxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtODk4LX07XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6ODk5Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGJhbV9kbXV4X29mX21hdGNoKTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy05MDAtXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6OTAxOnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGJhbV9kbXV4X2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo5MDI6XFx0LnByb2JlID0gYmFtX2RtdXhfcHJvYmUsXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6OTAzOlxcdC5yZW1vdmUgPSBiYW1fZG11eF9yZW1vdmUsXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtOTA0LVxcdC5kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtOTA1LVxcdFxcdC5uYW1lID0gXFxcImJhbS1kbXV4XFxcIixcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo5MDY6XFx0XFx0LnBtID0gXFx1MDAyNmJhbV9kbXV4X3BtX29wcyxcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzo5MDc6XFx0XFx0Lm9mX21hdGNoX3RhYmxlID0gYmFtX2RtdXhfb2ZfbWF0Y2gsXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtOTA4LVxcdH0sXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtOTA5LX07XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6OTEwOm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoYmFtX2RtdXhfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy05MTEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAyOjIzOjA0LjE1MTk4MDQ3NVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjgzODQxNjA3NTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGBiYW1fZG11eGAgZm9yIEZ1enppbmcgU3VpdGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgYmFtX2RtdXhgLCBhIHBsYXRmb3JtIGRyaXZlciBmb3IgUXVhbGNvbW0gbW9kZW1zIOKAkyBzcGVjaWZpY2FsbHksIFwicWNvbSxiYW0tZG11eFwiLiBJdCBoaW5nZXMgb24gdGhlc2UgZGVwZW5kZW5jaWVzOiBgRE1BX0VOR0lORSBcdTAwMjZcdTAwMjYgUE0gXHUwMDI2XHUwMDI2IFFDT01fU01FTV9TVEFURWAgb3IgYENPTVBJTEVfVEVTVGAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgaXMgdGhpcyBldmVuIGEgdmlhYmxlIHRhcmdldCBmb3IgZnV6emluZyBpbiBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVT8gVGhhdCdzIHRoZSBjcml0aWNhbCBxdWVzdGlvbi5cblxuTGV0IG1lIHJ1biB0aHJvdWdoIHRoZSB1c3VhbCBjaGVja2xpc3QuIFRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIHJ1bGUgaXQgb3V0IGlmIHRoZSBwYXRjaCBpczpcblxuKiAgIERvY3VtZW50YXRpb24sIEtjb25maWcsIG9yIGNvbW1lbnRzIG9ubHkuIE5vcGUuXG4qICAgUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcyDigJMgbG9nZ2luZywgdHJhY2Vwb2ludHMuIE5vdCBsaWtlbHkuXG4qICAgTnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHdpdGhvdXQgZnVuY3Rpb25hbCBpbXBhY3QuIFByb2JhYmx5IG5vdC5cblxuVGhpcyBuZXh0IHBvaW50IGlzIGNydWNpYWw6ICppbXBhc3NhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6YXRpb24qLiBTbyBJIG5lZWQgdG8gdmVyaWZ5OiBjYW4gdGhpcyB0aGluZyBiZSBydW4gaW4gUUVNVT8gSXQncyBhIFF1YWxjb21tIG1vZGVtIGRyaXZlciwgc28sIGV2ZW4gd2hlbiB1c2luZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSwgYW0gSSBnb2luZyB0byBiZSBhYmxlIHRvIHJlYWNoIGl0PyBUaGluZ3MgbGlrZSBVU0IgZ2FkZ2V0IG9yIG1hYzgwMjExX2h3c2ltLCB0aGV5IGFyZSBhIGhhcmQgXCJub1wiIGZvciB0aGUgcHVycG9zZSBvZiBmdXp6aW5nLlxuXG5BbHNvLCBJIGhhdmUgdG8gZGlzcmVnYXJkIGRyaXZlcnMgZm9yIHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUuIE5vIFBDSWUgY2FyZHMgdGhhdCBhcmVuJ3QgYXZhaWxhYmxlIGluIFFFTVUsIG5vIHZlbmRvci1zcGVjaWZpYyBzd2l0Y2gvU21hcnROSUMvR1BVIGRyaXZlcnMgKGxpa2UgbWx4c3csIHBkc1xcX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkuIElmIGl0IG5lZWRzIGEgcGh5c2ljYWwgUENJZSBjYXJkLCBJJ20gb3V0LiBGaW5hbGx5LCBJIHNob3VsZCBpZ25vcmUgZHJpdmVyIHRlYXJkb3duIGNhbGxzIHRoYXQgYXJlIG9ubHkgZXhlY3V0ZWQgZHVyaW5nIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5TbywgbGV0IG1lIHNlZS4uLiBJdCdzIGBxY29tX2JhbV9kbXV4LmNgLCB3aGljaCwgYWNjb3JkaW5nIHRvIHRoZSBjb2RlLCBpcyBhIHBsYXRmb3JtIGRyaXZlciB0aGF0IHVzZXMgYG9mX21hdGNoYCB0byBpZGVudGlmeSBpdHNlbGYgYXMgXCJxY29tLGJhbS1kbXV4XCIsIHNwZWNpZmljYWxseSBmb3IgUXVhbGNvbW0gU29DcyBsaWtlIE1TTTg5MTYgYW5kIE1TTTg5NzQuIE9rYXksIHJpZ2h0IG5vdywgSSBuZWVkIHRvIGZvY3VzIG9uIHdoYXQgaGFwcGVucyBpbiBgYmFtX2RtdXhfcHJvYmVgLiBJIG5lZWQgdG8gaW5zcGVjdCB0aGF0IGZ1bmN0aW9uIGluIGBkcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguY2AgYW5kIGZpZ3VyZSBvdXQgaG93IGl0IHdvcmtzIGFuZCB3aGV0aGVyIHRoZSBleGVjdXRpb24gcGF0aCBjYW4gYmUgcmVhY2hlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTc5OCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSIsImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQwMjoyMzoxMi41MzYxNDQzMTRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDU3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3NzAsXG4gIFwiTGluZUNvdW50XCI6IDYwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA3NzA6XFx0fVxcbiA3NzE6XFx0XFxuIDc3MjpcXHRzdGF0aWMgaW50IGJhbV9kbXV4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuIDc3MzpcXHR7XFxuIDc3NDpcXHRcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2cGRldi1cXHUwMDNlZGV2O1xcbiA3NzU6XFx0XFx0c3RydWN0IGJhbV9kbXV4ICpkbXV4O1xcbiA3NzY6XFx0XFx0aW50IHJldCwgcGNfYWNrX2lycSwgaTtcXG4gNzc3OlxcdFxcdHVuc2lnbmVkIGludCBiaXQ7XFxuIDc3ODpcXHRcXG4gNzc5OlxcdFxcdGRtdXggPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKmRtdXgpLCBHRlBfS0VSTkVMKTtcXG4gNzgwOlxcdFxcdGlmICghZG11eClcXG4gNzgxOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiA3ODI6XFx0XFxuIDc4MzpcXHRcXHRkbXV4LVxcdTAwM2VkZXYgPSBkZXY7XFxuIDc4NDpcXHRcXHRwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBkbXV4KTtcXG4gNzg1OlxcdFxcbiA3ODY6XFx0XFx0ZG11eC1cXHUwMDNlcGNfaXJxID0gcGxhdGZvcm1fZ2V0X2lycV9ieW5hbWUocGRldiwgXFxcInBjXFxcIik7XFxuIDc4NzpcXHRcXHRpZiAoZG11eC1cXHUwMDNlcGNfaXJxIFxcdTAwM2MgMClcXG4gNzg4OlxcdFxcdFxcdHJldHVybiBkbXV4LVxcdTAwM2VwY19pcnE7XFxuIDc4OTpcXHRcXG4gNzkwOlxcdFxcdHBjX2Fja19pcnEgPSBwbGF0Zm9ybV9nZXRfaXJxX2J5bmFtZShwZGV2LCBcXFwicGMtYWNrXFxcIik7XFxuIDc5MTpcXHRcXHRpZiAocGNfYWNrX2lycSBcXHUwMDNjIDApXFxuIDc5MjpcXHRcXHRcXHRyZXR1cm4gcGNfYWNrX2lycTtcXG4gNzkzOlxcdFxcbiA3OTQ6XFx0XFx0ZG11eC1cXHUwMDNlcGMgPSBkZXZtX3Fjb21fc21lbV9zdGF0ZV9nZXQoZGV2LCBcXFwicGNcXFwiLCBcXHUwMDI2Yml0KTtcXG4gNzk1OlxcdFxcdGlmIChJU19FUlIoZG11eC1cXHUwMDNlcGMpKVxcbiA3OTY6XFx0XFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKGRtdXgtXFx1MDAzZXBjKSxcXG4gNzk3OlxcdFxcdFxcdFxcdFxcdCAgICAgXFxcIkZhaWxlZCB0byBnZXQgcGMgc3RhdGVcXFxcblxcXCIpO1xcbiA3OTg6XFx0XFx0ZG11eC1cXHUwMDNlcGNfbWFzayA9IEJJVChiaXQpO1xcbiA3OTk6XFx0XFxuIDgwMDpcXHRcXHRkbXV4LVxcdTAwM2VwY19hY2sgPSBkZXZtX3Fjb21fc21lbV9zdGF0ZV9nZXQoZGV2LCBcXFwicGMtYWNrXFxcIiwgXFx1MDAyNmJpdCk7XFxuIDgwMTpcXHRcXHRpZiAoSVNfRVJSKGRtdXgtXFx1MDAzZXBjX2FjaykpXFxuIDgwMjpcXHRcXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIoZG11eC1cXHUwMDNlcGNfYWNrKSxcXG4gODAzOlxcdFxcdFxcdFxcdFxcdCAgICAgXFxcIkZhaWxlZCB0byBnZXQgcGMtYWNrIHN0YXRlXFxcXG5cXFwiKTtcXG4gODA0OlxcdFxcdGRtdXgtXFx1MDAzZXBjX2Fja19tYXNrID0gQklUKGJpdCk7XFxuIDgwNTpcXHRcXG4gODA2OlxcdFxcdGluaXRfd2FpdHF1ZXVlX2hlYWQoXFx1MDAyNmRtdXgtXFx1MDAzZXBjX3dhaXQpO1xcbiA4MDc6XFx0XFx0aW5pdF9jb21wbGV0aW9uKFxcdTAwMjZkbXV4LVxcdTAwM2VwY19hY2tfY29tcGxldGlvbik7XFxuIDgwODpcXHRcXHRjb21wbGV0ZV9hbGwoXFx1MDAyNmRtdXgtXFx1MDAzZXBjX2Fja19jb21wbGV0aW9uKTtcXG4gODA5OlxcdFxcbiA4MTA6XFx0XFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmRtdXgtXFx1MDAzZXR4X2xvY2spO1xcbiA4MTE6XFx0XFx0SU5JVF9XT1JLKFxcdTAwMjZkbXV4LVxcdTAwM2V0eF93YWtldXBfd29yaywgYmFtX2RtdXhfdHhfd2FrZXVwX3dvcmspO1xcbiA4MTI6XFx0XFx0SU5JVF9XT1JLKFxcdTAwMjZkbXV4LVxcdTAwM2VyZWdpc3Rlcl9uZXRkZXZfd29yaywgYmFtX2RtdXhfcmVnaXN0ZXJfbmV0ZGV2X3dvcmspO1xcbiA4MTM6XFx0XFxuIDgxNDpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQkFNX0RNVVhfTlVNX1NLQjsgaSsrKSB7XFxuIDgxNTpcXHRcXHRcXHRkbXV4LVxcdTAwM2VyeF9za2JzW2ldLmRtdXggPSBkbXV4O1xcbiA4MTY6XFx0XFx0XFx0ZG11eC1cXHUwMDNldHhfc2tic1tpXS5kbXV4ID0gZG11eDtcXG4gODE3OlxcdFxcdH1cXG4gODE4OlxcdFxcbiA4MTk6XFx0XFx0LyogUnVudGltZSBQTSBtYW5hZ2VzIG91ciBvd24gcG93ZXIgdm90ZS5cXG4gODIwOlxcdFxcdCAqIE5vdGUgdGhhdCB0aGUgUlggcGF0aCBtYXkgYmUgYWN0aXZlIGV2ZW4gaWYgd2UgYXJlIHJ1bnRpbWUgc3VzcGVuZGVkLFxcbiA4MjE6XFx0XFx0ICogc2luY2UgaXQgaXMgY29udHJvbGxlZCBieSB0aGUgcmVtb3RlIHNpZGUuXFxuIDgyMjpcXHRcXHQgKi9cXG4gODIzOlxcdFxcdHBtX3J1bnRpbWVfc2V0X2F1dG9zdXNwZW5kX2RlbGF5KGRldiwgQkFNX0RNVVhfQVVUT1NVU1BFTkRfREVMQVkpO1xcbiA4MjQ6XFx0XFx0cG1fcnVudGltZV91c2VfYXV0b3N1c3BlbmQoZGV2KTtcXG4gODI1OlxcdFxcdHBtX3J1bnRpbWVfZW5hYmxlKGRldik7XFxuIDgyNjpcXHRcXG4gODI3OlxcdFxcdHJldCA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEoZGV2LCBwY19hY2tfaXJxLCBOVUxMLCBiYW1fZG11eF9wY19hY2tfaXJxLFxcbiA4Mjg6XFx0XFx0XFx0XFx0XFx0XFx0SVJRRl9PTkVTSE9ULCBOVUxMLCBkbXV4KTtcXG4gODI5OlxcdFxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAyOjIzOjEyLjUzNjIyNjIyNFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3MDk0NDQ0OTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgRnV6emluZyBTdWl0YWJpbGl0eSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBwYXRjaCwgd2hpbGUgcG90ZW50aWFsbHkgaW50ZXJlc3RpbmcgZnJvbSBhIGZ1bmN0aW9uYWwgcGVyc3BlY3RpdmUsIGlzIG5vdCBzdWl0YWJsZSBmb3IgZnV6emluZyBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHQ0UuIEhlcmUncyB3aHk6XG5cblRoZSBjb3JlIG9mIHRoZSBpc3N1ZSBsaWVzIGluIHRoZSBkZXBlbmRlbmNpZXMgb2YgdGhlIGNvZGUgYmVpbmcgbW9kaWZpZWQsIHNwZWNpZmljYWxseSBgcWNvbV9iYW1fZG11eC5jYC4gVGhpcyBkcml2ZXIgcmVsaWVzIG9uIHNldmVyYWwgUXVhbGNvbW0tc3BlY2lmaWMgaGFyZHdhcmUgY29tcG9uZW50czogYGRldm1fcWNvbV9zbWVtX3N0YXRlX2dldGAgKFF1YWxjb21tIFNoYXJlZCBNZW1vcnkpLCBgcGxhdGZvcm1fZ2V0X2lycV9ieW5hbWVgLCBhbmQgUXVhbGNvbW0gQkFNIERNQSBjaGFubmVscy4gIFRoZSBCQU0gRE1BIGNoYW5uZWxzIGFyZSByZXF1ZXN0ZWQgdXNpbmcgXCJyeFwiIGFuZCBcInR4XCIgc3RyaW5ncyB2aWEgYGRtYV9yZXF1ZXN0X2NoYW4oZGV2LCBcInJ4XCIpYC4gQ3J1Y2lhbGx5LCBpdCBhbHNvIGRlcGVuZHMgb24gYSBkZXZpY2UgdHJlZSBub2RlIG1hdGNoaW5nIFwicWNvbSxiYW0tZG11eFwiLlxuXG5JIG5lZWQgdG8gY29uZmlybSBpZiBJIGNhbiBldmVuIHJlYWNoIHRoaXMgaGFyZHdhcmUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gQmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgdGhlcmUncyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gYXZhaWxhYmxlIHdpdGhpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBmb3IgZWl0aGVyIHRoZSBRdWFsY29tbSBCQU0gRE1VWCBvciBRdWFsY29tbSBTTUVNLiBUaGlzIGlzIGJlY2F1c2UgdGhlc2UgY29tcG9uZW50cyBhcmUgU29DLXNwZWNpZmljIGhhcmR3YXJlLCB0aWdodGx5IGludGVncmF0ZWQgd2l0aCBRdWFsY29tbSdzIE1TTTg5MTYgYW5kIE1TTTg5NzQgcGxhdGZvcm1zLiBFdmVuIGlmIHRoZSBjb2RlIGNvbXBpbGVzIHdpdGhvdXQgZXJyb3JzLCBpdCB3b3VsZCBmYWlsIHRvIHByb2JlIGFuZCBpbml0aWFsaXplIHdpdGhvdXQgdGhlIGNvcnJlY3QgZGV2aWNlIHRyZWUgYmluZGluZ3MgYW5kIHRoZSBjb3JyZXNwb25kaW5nIFF1YWxjb21tIFNNRU0vRE1BIGhhcmR3YXJlIGRyaXZlcnMuXG5cbk5vdywgbGV0J3MgbG9vayBhdCB3aGF0IHRoZSBwYXRjaCBhY3R1YWxseSBkb2VzLiBUaGUgcGF0Y2ggYWRkcyBuZXR3b3JrIHN0YXRpc3RpY3Mgc3VwcG9ydCB0byBgcWNvbV9iYW1fZG11eC5jYCwgd2hpY2ggaW5jbHVkZXMgYWRkaW5nIGBkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKC4uLilgIGFuZCBgZGV2X3N3X25ldHN0YXRzX3J4X2FkZCguLi4pYCBpbiBkaWZmZXJlbnQgZnVuY3Rpb25zLiBJdCBhbHNvIGFkZHMgYSBgLm5kb19nZXRfc3RhdHM2NGAgb3BlcmF0aW9uIGFuZCBzZXRzIHRoZSBgZGV2LVx1MDAzZXBjcHVfc3RhdF90eXBlYCBhcHByb3ByaWF0ZWx5LlxuXG5HaXZlbiB0aGF0IHRoaXMgZHJpdmVyIGlzLCBieSBpdHMgdmVyeSBuYXR1cmUsIGV4Y2x1c2l2ZSB0byBRdWFsY29tbSBwbGF0Zm9ybXMsIEkgY2FuIGNvbmZpcm0gdGhhdCBpdCBmYWxscyB1bmRlciB0aGUgcnVsZXMgZm9yIGRldGVybWluaW5nIFwiV29ydGhGdXp6aW5nXCIuIFNwZWNpZmljYWxseSwgdGhlIHBhdGNoIGNvbnRhaW5zIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEl0IGV4cGxpY2l0bHkgcmVxdWlyZXMgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQuXG5cblRoZXJlZm9yZSwgYWZ0ZXIgY2FyZWZ1bCBjb25zaWRlcmF0aW9uLCBJJ20gY29uZmlkZW50IHRoYXQgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGJlIHNldCB0byBgZmFsc2VgLiBNeSByZWFzb25pbmcgaXMgY29uY2lzZTogdGhlIHBhdGNoIG1vZGlmaWVzIGEgUXVhbGNvbW0gcGxhdGZvcm0gZHJpdmVyIChgcWNvbV9iYW1fZG11eC5jYCkgdGhhdCBpcyBkZXBlbmRlbnQgb24gcHJvcHJpZXRhcnkgUXVhbGNvbW0gaGFyZHdhcmUgKFNNRU0sIEJBTSBETUEpIGFuZCBjYW5ub3QgYmUgcmVhY2hlZCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgaXQgdW5zdWl0YWJsZSBmb3IgdGhpcyB0eXBlIG9mIHRlc3RpbmcuXG5cbkZpbmFsbHksIEknbGwgcmV2aWV3IGFuZCBkb3VibGUtY2hlY2sgYWxsIGFzcGVjdHMgb2YgbXkgYW5hbHlzaXM6IHRoZSBkZXBlbmRlbmNpZXMsIHRoZSBuYXR1cmUgb2YgdGhlIHBhdGNoLCBhbmQgdGhlIGZ1enppbmcgZW52aXJvbm1lbnQgY29uc3RyYWludHMuIEV2ZXJ5dGhpbmcgY2hlY2tzIG91dCwgYW5kIEknbGwgcHJvY2VlZCBhY2NvcmRpbmdseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc4MjQsIk91dHB1dFRva2VucyI6MTI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzA0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDI6MjM6MTkuNjMwNjczMjY0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkwNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMgdG8gYWRkIHNvZnR3YXJlIG5ldHN0YXRzIGFjY291bnRpbmcuIFRoaXMgZHJpdmVyIGlzIHNwZWNpZmljIHRvIFF1YWxjb21tIFNvQ3MgKGUuZy4gTVNNODkxNi9NU004OTc0KSByZXF1aXJpbmcgUXVhbGNvbW0gU01FTSBzdGF0ZSBhbmQgRE1BIGVuZ2luZSBoYXJkd2FyZSwgd2hpY2ggaXMgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgdGVzdCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gSGVuY2UsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMgdG8gYWRkIHNvZnR3YXJlIG5ldHN0YXRzIGFjY291bnRpbmcuIFRoaXMgZHJpdmVyIGlzIHNwZWNpZmljIHRvIFF1YWxjb21tIFNvQ3MgKGUuZy4gTVNNODkxNi9NU004OTc0KSByZXF1aXJpbmcgUXVhbGNvbW0gU01FTSBzdGF0ZSBhbmQgRE1BIGVuZ2luZSBoYXJkd2FyZSwgd2hpY2ggaXMgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgdGVzdCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gSGVuY2UsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDI6MjM6MTkuNjMwNjk1MzE0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow4vhl7[1] Phase: Running StartedAt: 2026-09-01 02:23:30 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4vhl7[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-01 02:23:30 +0000 UTC FinishedAt: 2026-09-01 02:23:34 +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,}