Name: series-workflowgd8dn Phase: Failed StartedAt: 2026-09-14 18:56:46 +0000 UTC FinishedAt: 2026-09-14 19:00:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgd8dn[0] Phase: Succeeded StartedAt: 2026-09-14 18:56:46 +0000 UTC FinishedAt: 2026-09-14 19:00:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgd8dn[0].run-triage Phase: Succeeded StartedAt: 2026-09-14 18:56:46 +0000 UTC FinishedAt: 2026-09-14 19:00:19 +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+CgkJCTx0ZD4yMDI2LzA5LzE0IDE4OjU4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3ItcGF0aCBmcmVlaW5nIGxvZ2ljIChzd2l0Y2hpbmcga2ZyZWUgdG8ga2ZyZWVfcmN1KSBpbiBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpIChzcGVjaWZpY2FsbHkgaW4gbWxkIGFuZCBtdm0gbW9kdWxlcykuIGl3bHdpZmkgaXMgYSBoYXJkd2FyZSBkcml2ZXIgZm9yIEludGVsIFBDSWUgd2lyZWxlc3MgYWRhcHRlcnMgcmVxdWlyaW5nIHBoeXNpY2FsIFBDSWUgZGV2aWNlcyB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDE4OjU4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYzcxMGNlMTU2ZWEwOGIzYzcxNzVmNDUxNWViOGI5NTU0YjhlYjA4NFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gU2VwIDE0IDE4OjU4OjIzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2xpbmsuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2xpbmsuY1xuaW5kZXggOTZlMDY5NDBiMzRjNC4uNTViODQ4MDE5MjNkNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2xpbmsuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbGluay5jXG5AQCAtNTQxLDE1ICYjNDM7NTQxLDE1IEBAIGludCBpd2xfbWxkX2FkZF9saW5rKHN0cnVjdCBpd2xfbWxkICptbGQsXG4gXHRyZXQgPSBpd2xfbWxkX2FkZF9saW5rX3RvX2Z3KG1sZCwgYnNzX2NvbmYpO1xuIFx0aWYgKHJldCkge1xuIFx0XHRSQ1VfSU5JVF9QT0lOVEVSKG1sZC1cdTAwM2Vmd19pZF90b19ic3NfY29uZltsaW5rLVx1MDAzZWZ3X2lkXSwgTlVMTCk7XG4tXHRcdFJDVV9JTklUX1BPSU5URVIobWxkX3ZpZi1cdTAwM2VsaW5rW2Jzc19jb25mLVx1MDAzZWxpbmtfaWRdLCBOVUxMKTtcbiBcdFx0Z290byBmcmVlO1xuIFx0fVxuIFxuIFx0cmV0dXJuIHJldDtcbiBcbiBmcmVlOlxuJiM0MztcdFJDVV9JTklUX1BPSU5URVIobWxkX3ZpZi1cdTAwM2VsaW5rW2Jzc19jb25mLVx1MDAzZWxpbmtfaWRdLCBOVUxMKTtcbiBcdGlmICghaXNfZGVmbGluaylcbi1cdFx0a2ZyZWUobGluayk7XG4mIzQzO1x0XHRrZnJlZV9yY3UobGluaywgcmN1X2hlYWQpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmNcbmluZGV4IDNhNGM4ZmRhNjhkMGEuLjY5M2YyMDkyYTc4MTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tYWM4MDIxMS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tYWM4MDIxMS5jXG5AQCAtMjI2NSw3ICYjNDM7MjI2NSw3IEBAIHN0YXRpYyBpbnQgaXdsX21sZF9zZXRfa2V5X2FkZChzdHJ1Y3QgaXdsX21sZCAqbWxkLFxuIFx0aWYgKHJldCkge1xuIFx0XHRpZiAocHRrX3BuKSB7XG4gXHRcdFx0UkNVX0lOSVRfUE9JTlRFUihtbGRfc3RhLVx1MDAzZXB0a19wbltrZXlpZHhdLCBOVUxMKTtcbi1cdFx0XHRrZnJlZShwdGtfcG4pO1xuJiM0MztcdFx0XHRrZnJlZV9yY3UocHRrX3BuLCByY3VfaGVhZCk7XG4gXHRcdH1cbiBcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWM4MDIxMS5jXG5pbmRleCA1YmQyNDZlMzc5NDMyLi5iMGM0ZjI0NWM4OGZmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuY1xuQEAgLTQzODUsNyAmIzQzOzQzODUsNyBAQCBzdGF0aWMgaW50IF9faXdsX212bV9tYWNfc2V0X2tleShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdFx0XHRrZXktXHUwMDNlaHdfa2V5X2lkeCA9IFNUQV9LRVlfSURYX0lOVkFMSUQ7XG4gXHRcdFx0aWYgKHB0a19wbikge1xuIFx0XHRcdFx0UkNVX0lOSVRfUE9JTlRFUihtdm1zdGEtXHUwMDNlcHRrX3BuW2tleWlkeF0sIE5VTEwpO1xuLVx0XHRcdFx0a2ZyZWUocHRrX3BuKTtcbiYjNDM7XHRcdFx0XHRrZnJlZV9yY3UocHRrX3BuLCByY3VfaGVhZCk7XG4gXHRcdFx0fVxuIFx0XHRcdC8qXG4gXHRcdFx0ICogY2FuJiMzOTt0IGFkZCBrZXkgZm9yIFJYLCBidXQgd2UgZG9uJiMzOTt0IG5lZWQgaXRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxODo1ODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBlcnJvci1wYXRoIGZyZWVpbmcgbG9naWMgKHN3aXRjaGluZyBrZnJlZSB0byBrZnJlZV9yY3UpIGluIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkgKHNwZWNpZmljYWxseSBpbiBtbGQgYW5kIG12bSBtb2R1bGVzKS4gaXdsd2lmaSBpcyBhIGhhcmR3YXJlIGRyaXZlciBmb3IgSW50ZWwgUENJZSB3aXJlbGVzcyBhZGFwdGVycyByZXF1aXJpbmcgcGh5c2ljYWwgUENJZSBkZXZpY2VzIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjNzEwY2UxNTZlYTA4YjNjNzE3NWY0NTE1ZWI4Yjk1NTRiOGViMDg0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBTZXAgMTQgMTg6NTg6MjMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9saW5rLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9saW5rLmMKaW5kZXggOTZlMDY5NDBiMzRjNC4uNTViODQ4MDE5MjNkNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbGluay5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2xpbmsuYwpAQCAtNTQxLDE1ICYjNDM7NTQxLDE1IEBAIGludCBpd2xfbWxkX2FkZF9saW5rKHN0cnVjdCBpd2xfbWxkICptbGQsCiAJcmV0ID0gaXdsX21sZF9hZGRfbGlua190b19mdyhtbGQsIGJzc19jb25mKTsKIAlpZiAocmV0KSB7CiAJCVJDVV9JTklUX1BPSU5URVIobWxkLSZndDtmd19pZF90b19ic3NfY29uZltsaW5rLSZndDtmd19pZF0sIE5VTEwpOwotCQlSQ1VfSU5JVF9QT0lOVEVSKG1sZF92aWYtJmd0O2xpbmtbYnNzX2NvbmYtJmd0O2xpbmtfaWRdLCBOVUxMKTsKIAkJZ290byBmcmVlOwogCX0KIAogCXJldHVybiByZXQ7CiAKIGZyZWU6CiYjNDM7CVJDVV9JTklUX1BPSU5URVIobWxkX3ZpZi0mZ3Q7bGlua1tic3NfY29uZi0mZ3Q7bGlua19pZF0sIE5VTEwpOwogCWlmICghaXNfZGVmbGluaykKLQkJa2ZyZWUobGluayk7CiYjNDM7CQlrZnJlZV9yY3UobGluaywgcmN1X2hlYWQpOwogCXJldHVybiByZXQ7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tYWM4MDIxMS5jCmluZGV4IDNhNGM4ZmRhNjhkMGEuLjY5M2YyMDkyYTc4MTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYwpAQCAtMjI2NSw3ICYjNDM7MjI2NSw3IEBAIHN0YXRpYyBpbnQgaXdsX21sZF9zZXRfa2V5X2FkZChzdHJ1Y3QgaXdsX21sZCAqbWxkLAogCWlmIChyZXQpIHsKIAkJaWYgKHB0a19wbikgewogCQkJUkNVX0lOSVRfUE9JTlRFUihtbGRfc3RhLSZndDtwdGtfcG5ba2V5aWR4XSwgTlVMTCk7Ci0JCQlrZnJlZShwdGtfcG4pOwomIzQzOwkJCWtmcmVlX3JjdShwdGtfcG4sIHJjdV9oZWFkKTsKIAkJfQogCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWM4MDIxMS5jCmluZGV4IDViZDI0NmUzNzk0MzIuLmIwYzRmMjQ1Yzg4ZmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuYwpAQCAtNDM4NSw3ICYjNDM7NDM4NSw3IEBAIHN0YXRpYyBpbnQgX19pd2xfbXZtX21hY19zZXRfa2V5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCQkJa2V5LSZndDtod19rZXlfaWR4ID0gU1RBX0tFWV9JRFhfSU5WQUxJRDsKIAkJCWlmIChwdGtfcG4pIHsKIAkJCQlSQ1VfSU5JVF9QT0lOVEVSKG12bXN0YS0mZ3Q7cHRrX3BuW2tleWlkeF0sIE5VTEwpOwotCQkJCWtmcmVlKHB0a19wbik7CiYjNDM7CQkJCWtmcmVlX3JjdShwdGtfcG4sIHJjdV9oZWFkKTsKIAkJCX0KIAkJCS8qCiAJCQkgKiBjYW4mIzM5O3QgYWRkIGtleSBmb3IgUlgsIGJ1dCB3ZSBkb24mIzM5O3QgbmVlZCBpdAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxODo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTkyCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2ggU2VyaWVzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCBhIHBhdGNoIHNlcmllcyB0byByZXZpZXcuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpdmUgc3RyYWlnaHQgaW50byB0aGUgZGlmZiwgb2J2aW91c2x5LiBJIHNlZSBjaGFuZ2VzIHRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9saW5rLmNgLCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuY2AsIGFuZCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuY2AuIFJpZ2h0LCBzbyB0aGlzIGlzIGZvciB0aGUgYGl3bHdpZmlgIGRyaXZlci4gQnV0IHdhaXQsIGJlZm9yZSBJIGdldCB0b28gZGVlcCwgYSBjcnVjaWFsIHF1ZXN0aW9uIHBvcHMgaW50byBteSBoZWFkOiBjYW4gSSBhY3R1YWxseSAqdGVzdCogdGhpcyBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmU/CgpIYW5nIG9uIGEgc2Vjb25k4oCmIEkgbmVlZCB0byBjaGVjayB0aGUgcHJvamVjdCYjMzk7cyBpbnN0cnVjdGlvbnMgKFNlY3Rpb24gMiwgdG8gYmUgcHJlY2lzZSkuIFRoZSBpbnN0cnVjdGlvbnMgc3BlY2lmaWNhbGx5IGNhbGwgb3V0IGhhcmR3YXJlIGRlcGVuZGVuY2llcy4gTGV0JiMzOTtzIHNlZS4uLiBpdCBtZW50aW9ucyB0aGluZ3MgdGhhdCBhcmUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlOiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBHUFUgZHJpdmVyc+KApiBPa2F5LCBteSByYWRhciBpcyB1cC4gVGhpcyBpcyB2ZXJ5IGltcG9ydGFudCB3aGVuIEkgdGhpbmsgYWJvdXQgZHJpdmVycy4KClNvLCB0aGUgbmV4dCBxdWVzdGlvbiBpcywgZG9lcyBgaXdsd2lmaWAgbmVlZCBwaHlzaWNhbCBJbnRlbCBXaUZpIGhhcmR3YXJlPyBJcyBpdCBlbXVsYXRlZCwgb3IgaXMgdGhlcmUgYSBzaW11bGF0aW9uIG1vZGU/IFdhaXQsIGRvZXMgYGl3bHdpZmlgIGhhdmUgYSBgbWFjODAyMTFfaHdzaW1gIGVxdWl2YWxlbnQ/IEkgbmVlZCB0byByZW1lbWJlciB0aGUgZGlmZmVyZW5jZTogYG1hYzgwMjExX2h3c2ltYCBpcyBhIHNvZnR3YXJlLWJhc2VkIGRyaXZlciBmb3IgbWFjODAyMTEsIHJpZ2h0PyBCdXQgYGl3bHdpZmlgIGlzIEludGVsJiMzOTtzICpwcm9wcmlldGFyeSosIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBkZXNpZ25lZCBmb3IgSW50ZWwgV2lGaSBQQ0kgZGV2aWNlcy4uLiBTbywgaXQgaXMgbWVhbnQgdG8gcnVuIG9uICpyZWFsKiBJbnRlbCBoYXJkd2FyZSwgbGlrZSB0aGUgSW50ZWwgV2lyZWxlc3MtQUMgb3IgV2ktRmkgNiBBWDIwMCBjYXJkcy4KCkhtbS4gVGhhdCYjMzk7cyBhIHByb2JsZW0uIFFFTVUgZGVmaW5pdGVseSAqZG9lc24mIzM5O3QqIGVtdWxhdGUgSW50ZWwgV2ktRmkgUENJIGNhcmRzLiBPa2F5LCBzbyBJJiMzOTttIG5vdCBnb2luZyB0byBiZSBhYmxlIHRvIGp1c3Qgc3BpbiB1cCBhIFZNIGFuZCByZXByb2R1Y2UgdGhpcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUmIzM5O3MgYW55IGtpbmQgb2YgdmlydHVhbCBvciBzaW11bGF0ZWQgbW9kZSB3aXRoaW4gdGhlIGBpd2x3aWZpYCBkcml2ZXIgaXRzZWxmLiBUaW1lIHRvIGdvIGRpZ2dpbmcgdGhyb3VnaCB0aGUgY29kZSBhbmQgdGhlIEtjb25maWcgZmlsZXMuIFRoaXMgaXMgZ29pbmcgdG8gYmUgbXkgZmlyc3QgcHJpb3JpdHkgYmVmb3JlIEkgY29tbWl0IHRvIHRoZSByZXZpZXcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTg6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElXTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6Mjpjb25maWcgSVdMV0lGSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBXaXJlbGVzcyBXaUZpIE5leHQgR2VuIEFHTiAtIFdpcmVsZXNzLU4vQWR2YW5jZWQtTi9VbHRpbWF0ZS1OIChpd2x3aWZpKSBcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9NDc9aWYgSVdMV0lGSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjQ5OmNvbmZpZyBJV0xXSUZJX0tVTklUX1RFU1RTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTAtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo1ODpjb25maWcgSVdMV0lGSV9MRURTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTktXHRib29sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTY1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjY2OmNvbmZpZyBJV0xEVk1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy02Ny1cdHRyaXN0YXRlIFwmIzM0O0ludGVsIFdpcmVsZXNzIFdpRmkgRFZNIEZpcm13YXJlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NzQ6Y29uZmlnIElXTE1WTVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTc1LVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgV2lyZWxlc3MgV2lGaSBNVk0gRmlybXdhcmUgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy04My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo4NDpjb25maWcgSVdMTUxEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctODUtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBXaXJlbGVzcyBXaUZpIE1MRCBGaXJtd2FyZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTk0LSMgZG9uJiMzOTt0IGNhbGwgaXQgX01PRFVMRSAtLSB3aWxsIGNvbmZ1c2UgS2NvbmZpZy9maXhkZXAvLi4uXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6OTU6Y29uZmlnIElXTFdJRklfT1BNT0RFX01PRFVMQVJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy05Ni1cdGJvb2xcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9MTA1PW1lbnUgXCYjMzQ7RGVidWdnaW5nIE9wdGlvbnNcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTA3OmNvbmZpZyBJV0xXSUZJX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA4LVx0Ym9vbCBcJiMzNDtFbmFibGUgZnVsbCBkZWJ1Z2dpbmcgb3V0cHV0IGluIHRoZSBpd2x3aWZpIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTMxOmNvbmZpZyBJV0xXSUZJX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzItXHRib29sIFwmIzM0O2l3bHdpZmkgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMzk6Y29uZmlnIElXTFdJRklfREVWSUNFX1RSQUNJTkdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xNDAtXHRib29sIFwmIzM0O2l3bHdpZmkgZGV2aWNlIGFjY2VzcyB0cmFjaW5nXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTE1OD1lbmRpZlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTE1OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxNjA6Y29uZmlnIElXTE1FSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTE2MS1cdHRyaXN0YXRlIFwmIzM0O0ludGVsIE1hbmFnZW1lbnQgRW5naW5lIGNvbW11bmljYXRpb24gb3ZlciBXTEFOXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTg6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQ3MAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbnZlc3RpZ2F0aW5nIElXTFdJRkkgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgY29yZSBvZiB0aGlzLiBXaGVuIEkmIzM5O20gd29ya2luZyB3aXRoIHRoZSBJbnRlbCB3aXJlbGVzcyBkcml2ZXJzLCB0aGUgZmlyc3QgcGxhY2UgSSBhbHdheXMgZ28gdG8gdW5yYXZlbCB0aGVzZSBkZXBlbmRlbmNpZXMgaXMgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZ2AuIEl0JiMzOTtzIGVzc2VudGlhbGx5IHRoZSByb2FkbWFwIGZvciBjb25maWd1cmluZyBJV0xXSUZJLCBJV0xNVk0sIGFuZCBJV0xNTEQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgb3RoZXIgY29tcG9uZW50cywgZmVhdHVyZXMsIG9yIGtlcm5lbCBvcHRpb25zIHRoZXkgcmVseSBvbi4gVGhpcyBgS2NvbmZpZ2AgZmlsZSBob2xkcyB0aGUgYW5zd2VyczsgdGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aGVzZSBtb2R1bGVzLCBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gYmFzZWQgb24gaGFyZHdhcmUgc3VwcG9ydCwgYW5kIGFueSBzcGVjaWZpYyBmZWF0dXJlIGZsYWdzIEkgbmVlZCB0byBjb25zaWRlciBmb3IgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIGNvbXBvbmVudHMuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlICYjMzQ7aWYmIzM0OyBzdGF0ZW1lbnRzLCB0aGUgJiMzNDtkZXBlbmRzIG9uJiMzNDsgY2xhdXNlcywgYW5kIGFueSAmIzM0O3NlbGVjdCYjMzQ7IHN0YXRlbWVudHMgdGhhdCBtaWdodCBwdWxsIGluIG90aGVyIGJpdHMgb2YgdGhlIGtlcm5lbC4gVGhpcyBpbml0aWFsIHNjYW4gd2lsbCB0ZWxsIG1lIHRoZSBzdG9yeSBvZiBob3cgdGhlc2UgcGllY2VzIGZpdCB0b2dldGhlciBhbmQgaW5mb3JtIGFueSBzdWJzZXF1ZW50IGRlYnVnZ2luZyBvciBjb25maWd1cmF0aW9uIEkgbWlnaHQgbmVlZCB0byBkby4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxODo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogOTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBJV0xXSUZJXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBXaXJlbGVzcyBXaUZpIE5leHQgR2VuIEFHTiAtIFdpcmVsZXNzLU4vQWR2YW5jZWQtTi9VbHRpbWF0ZS1OIChpd2x3aWZpKSBcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gUENJIFx1MDAyNlx1MDAyNiBIQVNfSU9NRU0gXHUwMDI2XHUwMDI2IENGRzgwMjExXG4gICA1Olx0XHRkZXBlbmRzIG9uIElXTE1FSSB8fCAhSVdMTUVJXG4gICA2Olx0XHRzZWxlY3QgRldfTE9BREVSXG4gICA3Olx0XHRoZWxwXG4gICA4Olx0XHQgIFNlbGVjdCB0byBidWlsZCB0aGUgZHJpdmVyIHN1cHBvcnRpbmcgdGhlOlxuICAgOTpcdFxuICAxMDpcdFx0ICBJbnRlbCBXaXJlbGVzcyBXaUZpIExpbmsgTmV4dC1HZW4gQUdOXG4gIDExOlx0XG4gIDEyOlx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgdXNlIHdpdGggdGhlIGZvbGxvd2luZyBoYXJkd2FyZTpcbiAgMTM6XHRcdFx0SW50ZWwgV2lyZWxlc3MgV2lGaSBMaW5rIDYyNTBBR04gQWRhcHRlclxuICAxNDpcdFx0XHRJbnRlbCA2MDAwIFNlcmllcyBXaS1GaSBBZGFwdGVycyAoNjIwMEFHTiBhbmQgNjMwMEFHTilcbiAgMTU6XHRcdFx0SW50ZWwgV2lGaSBMaW5rIDEwMDBCR05cbiAgMTY6XHRcdFx0SW50ZWwgV2lyZWxlc3MgV2lGaSA1MTUwQUdOXG4gIDE3Olx0XHRcdEludGVsIFdpcmVsZXNzIFdpRmkgNTEwMEFHTiwgNTMwMEFHTiwgYW5kIDUzNTBBR05cbiAgMTg6XHRcdFx0SW50ZWwgNjAwNSBTZXJpZXMgV2ktRmkgQWRhcHRlcnNcbiAgMTk6XHRcdFx0SW50ZWwgNjAzMCBTZXJpZXMgV2ktRmkgQWRhcHRlcnNcbiAgMjA6XHRcdFx0SW50ZWwgV2lyZWxlc3MgV2lGaSBMaW5rIDYxNTBCR04gMiBBZGFwdGVyXG4gIDIxOlx0XHRcdEludGVsIDEwMCBTZXJpZXMgV2ktRmkgQWRhcHRlcnMgKDEwMEJHTiBhbmQgMTMwQkdOKVxuICAyMjpcdFx0XHRJbnRlbCAyMDAwIFNlcmllcyBXaS1GaSBBZGFwdGVyc1xuICAyMzpcdFx0XHRJbnRlbCA3MjYwIFdpLUZpIEFkYXB0ZXJcbiAgMjQ6XHRcdFx0SW50ZWwgMzE2MCBXaS1GaSBBZGFwdGVyXG4gIDI1Olx0XHRcdEludGVsIDcyNjUgV2ktRmkgQWRhcHRlclxuICAyNjpcdFx0XHRJbnRlbCA4MjYwIFdpLUZpIEFkYXB0ZXJcbiAgMjc6XHRcdFx0SW50ZWwgMzE2NSBXaS1GaSBBZGFwdGVyXG4gIDI4Olx0XG4gIDI5Olx0XG4gIDMwOlx0XHQgIFRoaXMgZHJpdmVyIHVzZXMgdGhlIGtlcm5lbCYjMzk7cyBtYWM4MDIxMSBzdWJzeXN0ZW0uXG4gIDMxOlx0XG4gIDMyOlx0XHQgIEluIG9yZGVyIHRvIHVzZSB0aGlzIGRyaXZlciwgeW91IHdpbGwgbmVlZCBhIGZpcm13YXJlXG4gIDMzOlx0XHQgIGltYWdlIGZvciBpdC4gWW91IGNhbiBvYnRhaW4gdGhlIG1pY3JvY29kZSBmcm9tOlxuICAzNDpcdFxuICAzNTpcdFx0ICAgICAgICAgIFx1MDAzY2h0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL0RyaXZlcnMvaXdsd2lmaVx1MDAzZS5cbiAgMzY6XHRcbiAgMzc6XHRcdCAgVGhlIGZpcm13YXJlIGlzIHR5cGljYWxseSBpbnN0YWxsZWQgaW4gL2xpYi9maXJtd2FyZS4gWW91IGNhblxuICAzODpcdFx0ICBsb29rIGluIHRoZSBob3RwbHVnIHNjcmlwdCAvZXRjL2hvdHBsdWcvZmlybXdhcmUuYWdlbnQgdG9cbiAgMzk6XHRcdCAgZGV0ZXJtaW5lIHdoaWNoIGRpcmVjdG9yeSBGSVJNV0FSRV9ESVIgaXMgc2V0IHRvIHdoZW4gdGhlIHNjcmlwdFxuICA0MDpcdFx0ICBydW5zLlxuICA0MTpcdFxuICA0MjpcdFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIHRoZSBkcml2ZXIgYXMgYSBtb2R1bGUgKCA9IGNvZGUgd2hpY2ggY2FuIGJlXG4gIDQzOlx0XHQgIGluc2VydGVkIGluIGFuZCByZW1vdmVkIGZyb20gdGhlIHJ1bm5pbmcga2VybmVsIHdoZW5ldmVyIHlvdSB3YW50KSxcbiAgNDQ6XHRcdCAgc2F5IE0gaGVyZSBhbmQgcmVhZCBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24va2J1aWxkL21vZHVsZXMucnN0XHUwMDNlLiAgVGhlXG4gIDQ1Olx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBpd2x3aWZpLlxuICA0NjpcdFxuICA0NzpcdGlmIElXTFdJRklcbiAgNDg6XHRcbiAgNDk6XHRjb25maWcgSVdMV0lGSV9LVU5JVF9URVNUU1xuICA1MDpcdFx0dHJpc3RhdGVcbiAgNTE6XHRcdGRlcGVuZHMgb24gS1VOSVRcbiAgNTI6XHRcdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXG4gIDUzOlx0XHRoZWxwXG4gIDU0Olx0XHQgIEVuYWJsZSB0aGlzIG9wdGlvbiBmb3IgaXdsd2lmaSBrdW5pdCB0ZXN0cy5cbiAgNTU6XHRcbiAgNTY6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgNTc6XHRcbiAgNTg6XHRjb25maWcgSVdMV0lGSV9MRURTXG4gIDU5Olx0XHRib29sXG4gIDYwOlx0XHRkZXBlbmRzIG9uIExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU1BQzgwMjExXG4gIDYxOlx0XHRkZXBlbmRzIG9uIElXTE1WTSB8fCBJV0xEVk1cbiAgNjI6XHRcdHNlbGVjdCBMRURTX1RSSUdHRVJTXG4gIDYzOlx0XHRzZWxlY3QgTUFDODAyMTFfTEVEU1xuICA2NDpcdFx0ZGVmYXVsdCB5XG4gIDY1Olx0XG4gIDY2Olx0Y29uZmlnIElXTERWTVxuICA2NzpcdFx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgV2lyZWxlc3MgV2lGaSBEVk0gRmlybXdhcmUgc3VwcG9ydFwmIzM0O1xuICA2ODpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICA2OTpcdFx0aGVscFxuICA3MDpcdFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgdGhhdCBzdXBwb3J0cyB0aGUgRFZNIGZpcm13YXJlLiBUaGUgbGlzdFxuICA3MTpcdFx0ICBvZiB0aGUgZGV2aWNlcyB0aGF0IHVzZSB0aGlzIGZpcm13YXJlIGlzIGF2YWlsYWJsZSBoZXJlOlxuICA3MjpcdFx0ICBodHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi91c2Vycy9kcml2ZXJzL2l3bHdpZmkjZmlybXdhcmVcbiAgNzM6XHRcbiAgNzQ6XHRjb25maWcgSVdMTVZNXG4gIDc1Olx0XHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBXaXJlbGVzcyBXaUZpIE1WTSBGaXJtd2FyZSBzdXBwb3J0XCYjMzQ7XG4gIDc2Olx0XHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcbiAgNzc6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgNzg6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbiAgNzk6XHRcdGhlbHBcbiAgODA6XHRcdCAgVGhpcyBpcyB0aGUgZHJpdmVyIHRoYXQgc3VwcG9ydHMgdGhlIE1WTSBmaXJtd2FyZS4gVGhlIGxpc3RcbiAgODE6XHRcdCAgb2YgdGhlIGRldmljZXMgdGhhdCB1c2UgdGhpcyBmaXJtd2FyZSBpcyBhdmFpbGFibGUgaGVyZTpcbiAgODI6XHRcdCAgaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvZHJpdmVycy9pd2x3aWZpI2Zpcm13YXJlXG4gIDgzOlx0XG4gIDg0Olx0Y29uZmlnIElXTE1MRFxuICA4NTpcdFx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgV2lyZWxlc3MgV2lGaSBNTEQgRmlybXdhcmUgc3VwcG9ydFwmIzM0O1xuICA4NjpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gIDg3Olx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDg4Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gIDg5Olx0XHRoZWxwXG4gIDkwOlx0XHQgIFRoaXMgaXMgdGhlIGRyaXZlciB0aGF0IHN1cHBvcnRzIGZpcm13YXJlcyBvZiBNTEQgY2FwYWJsZSBkZXZpY2VzLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDE4OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxNTEKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgdGhlIGl3bHdpZmkgRHJpdmVyIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJIHNlZSBgSVdMV0lGSWAgbmVlZHMgYFBDSWAsIGBIQVNfSU9NRU1gLCBhbmQgYENGRzgwMjExYC4gVGhhdCBpbW1lZGlhdGVseSBmbGFncyBhIHBvdGVudGlhbCBwaHlzaWNhbCBQQ0kgZHJpdmVyIHJlbGF0aW9uc2hpcC4gTWFrZXMgc2Vuc2UsIGdpdmVuIGl0JiMzOTtzIGRlYWxpbmcgd2l0aCBhIHdpcmVsZXNzIGludGVyZmFjZS4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gY29uZmlybSB0aGlzLCBzbyBJIG5lZWQgdG8gY2hlY2sgdGhlIHNvdXJjZSBjb2RlLiBMZXQmIzM5O3Mgc3RhcnQgYnkgbG9va2luZyBpbnRvIHRoZSBsaWtlbHkgc3VzcGVjdCBkaXJlY3RvcnksIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvYCwgb3Igc29tZXRoaW5nIHNpbWlsYXIgd2l0aGluIHRoZSBpd2x3aWZpIGRpcmVjdG9yeSBzdHJ1Y3R1cmUuIFRoYXQgc2hvdWxkIGJlIHRoZSBiZXN0IHBsYWNlIHRvIGZpbmQgdGhlIFBDSS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGlmIG15IGluaXRpYWwgaHVuY2ggaXMgY29ycmVjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxODo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7aXdsLWFnbi1ody5oJiMzNDssCiAgICAmIzM0O2l3bC1jb25maWcuaCYjMzQ7LAogICAgJiMzNDtpd2wtY3NyLmgmIzM0OywKICAgICYjMzQ7aXdsLWRiZy10bHYuYyYjMzQ7LAogICAgJiMzNDtpd2wtZGJnLXRsdi5oJiMzNDssCiAgICAmIzM0O2l3bC1kZWJ1Zy5jJiMzNDssCiAgICAmIzM0O2l3bC1kZWJ1Zy5oJiMzNDssCiAgICAmIzM0O2l3bC1kZXZ0cmFjZS1kYXRhLmgmIzM0OywKICAgICYjMzQ7aXdsLWRldnRyYWNlLWlvLmgmIzM0OywKICAgICYjMzQ7aXdsLWRldnRyYWNlLWl3bHdpZmkuaCYjMzQ7LAogICAgJiMzNDtpd2wtZGV2dHJhY2UtbXNnLmgmIzM0OywKICAgICYjMzQ7aXdsLWRldnRyYWNlLXVjb2RlLmgmIzM0OywKICAgICYjMzQ7aXdsLWRldnRyYWNlLmMmIzM0OywKICAgICYjMzQ7aXdsLWRldnRyYWNlLmgmIzM0OywKICAgICYjMzQ7aXdsLWRydi5jJiMzNDssCiAgICAmIzM0O2l3bC1kcnYuaCYjMzQ7LAogICAgJiMzNDtpd2wtZmguaCYjMzQ7LAogICAgJiMzNDtpd2wtaW8uYyYjMzQ7LAogICAgJiMzNDtpd2wtaW8uaCYjMzQ7LAogICAgJiMzNDtpd2wtbW9kcGFyYW1zLmgmIzM0OywKICAgICYjMzQ7aXdsLW52bS1wYXJzZS5jJiMzNDssCiAgICAmIzM0O2l3bC1udm0tcGFyc2UuaCYjMzQ7LAogICAgJiMzNDtpd2wtbnZtLXV0aWxzLmMmIzM0OywKICAgICYjMzQ7aXdsLW52bS11dGlscy5oJiMzNDssCiAgICAmIzM0O2l3bC1vcC1tb2RlLmgmIzM0OywKICAgICYjMzQ7aXdsLXBoeS1kYi5jJiMzNDssCiAgICAmIzM0O2l3bC1waHktZGIuaCYjMzQ7LAogICAgJiMzNDtpd2wtcHJwaC5oJiMzNDssCiAgICAmIzM0O2l3bC1zY2QuaCYjMzQ7LAogICAgJiMzNDtpd2wtdHJhbnMuYyYjMzQ7LAogICAgJiMzNDtpd2wtdHJhbnMuaCYjMzQ7LAogICAgJiMzNDtpd2wtdXRpbHMuYyYjMzQ7LAogICAgJiMzNDtpd2wtdXRpbHMuaCYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogWwogICAgJiMzNDtjZmcmIzM0OywKICAgICYjMzQ7ZHZtJiMzNDssCiAgICAmIzM0O2Z3JiMzNDssCiAgICAmIzM0O21laSYjMzQ7LAogICAgJiMzNDttbGQmIzM0OywKICAgICYjMzQ7bXZtJiMzNDssCiAgICAmIzM0O3BjaWUmIzM0OywKICAgICYjMzQ7dGVzdHMmIzM0OwogIF0KfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDE4OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3ODYKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBpd2x3aWZpIERyaXZlciYjMzk7cyBBcmNoaXRlY3R1cmUqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZSBgaXdsd2lmaWAgZHJpdmVyIGlzIHNvbGVseSBQQ0ktYmFzZWQsIG9yIGlmIGl0IGluY29ycG9yYXRlcyBhbnkgc2ltdWxhdGVkIGJ1cyBpbnRlcmZhY2VzIGxpa2UgVVNCIGdhZGdldCBvciB2aXJ0aW8uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBhcmNoaXRlY3R1cmFsIHVuZGVycGlubmluZ3MuIFRoZSBmYXN0ZXN0IHdheSB0byBnZXQgYSBoYW5kbGUgb24gdGhpcyBpcyB0byBjaGVjayB0aGUgYE1ha2VmaWxlYCBhbmQgdGhlIGBwY2llYCBkaXJlY3Rvcnkgd2l0aGluIHRoZSBkcml2ZXImIzM5O3Mgc291cmNlLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgc29saWQgY2x1ZSBhYm91dCBob3cgdGhlIGRyaXZlciBpcyBzdHJ1Y3R1cmVkIGFuZCB3aGF0IGJ1cyBpbnRlcmZhY2VzIGl0JiMzOTtzIGRlc2lnbmVkIHRvIGludGVyYWN0IHdpdGguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDE4OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O2N0eHQtaW5mby12Mi5jJiMzNDssCiAgICAmIzM0O2N0eHQtaW5mby5jJiMzNDssCiAgICAmIzM0O2Rydi5jJiMzNDssCiAgICAmIzM0O2l3bC1jb250ZXh0LWluZm8tdjIuaCYjMzQ7LAogICAgJiMzNDtpd2wtY29udGV4dC1pbmZvLmgmIzM0OywKICAgICYjMzQ7dXRpbHMuYyYjMzQ7LAogICAgJiMzNDt1dGlscy5oJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBbCiAgICAmIzM0O2dlbjFfMiYjMzQ7CiAgXQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDE4OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgwNjQKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgYHBjaV9yZWdpc3Rlcl9kcml2ZXJgIGluIHRoZSBpd2x3aWZpIERyaXZlcioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGl3bHdpZmkgZHJpdmVyIGlzIGludGVyYWN0aW5nIHdpdGggdGhlIFBDSSBzdWJzeXN0ZW0uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBwaW5wb2ludCB3aGVyZSB0aGUgZHJpdmVyIGlzIHJlZ2lzdGVyZWQuIGBwY2lfcmVnaXN0ZXJfZHJpdmVyYCBpcyB0aGUgb2J2aW91cyBwbGFjZSB0byBzdGFydC4gVGhpcyBmdW5jdGlvbiBpcyB0aGUgY29ybmVyc3RvbmUgb2YgdGhlIFBDSSBkZXZpY2UgcHJvYmUgYW5kIGF0dGFjaCBwcm9jZXNzLCBzbyBmaW5kaW5nIGl0cyB1c2Ugd2l0aGluIHRoZSBpd2x3aWZpIGRyaXZlciBkaXJlY3RvcnkgKGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2ApIGlzIHRoZSBmaXJzdCBsb2dpY2FsIHN0ZXAuIFRoaXMgd2lsbCBnaXZlIG1lIGEgY2xlYXIgZW50cnkgcG9pbnQgaW50byB1bmRlcnN0YW5kaW5nIHRoZSBkZXZpY2UgaW5pdGlhbGl6YXRpb24gYW5kIGF0dGFjaG1lbnQgc2VxdWVuY2Ugd2l0aGluIHRoaXMgY29tcGxleCBkcml2ZXIuIEZyb20gdGhlcmUsIEkgY2FuIHRyYWNlIHRoZSBjb250cm9sIGZsb3cgdG8gdW5kZXJzdGFuZCB0aGUgZGV2aWNlJiMzOTtzIGxpZmVjeWNsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTg6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX3JlZ2lzdGVyX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM9MjEwOT1zdGF0aWMgaW50IF9faW5pdCBpd2xfZHJ2X2luaXQodm9pZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0yMTIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM6MjEyMTpcdGVyciA9IGl3bF9wY2lfcmVnaXN0ZXJfZHJpdmVyKCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0yMTIyLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oPTExNDE9c3RhdGljIGlubGluZSB2b2lkIGl3bF90cmFuc19ub3RpZnlfZndfZXJyb3Ioc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaC0xMTQ4LSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmg6MTE0OTppbnQgX19tdXN0X2NoZWNrIGl3bF9wY2lfcmVnaXN0ZXJfZHJpdmVyKHZvaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaC0xMTUwLXZvaWQgaXdsX3BjaV91bnJlZ2lzdGVyX2RyaXZlcih2b2lkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM9MTMzOT1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgaXdsX3BjaV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTEzNDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM6MTM0ODppbnQgX19tdXN0X2NoZWNrIGl3bF9wY2lfcmVnaXN0ZXJfZHJpdmVyKHZvaWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmMtMTM0OS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmMtMTM1MC1cdGludCByZXQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM6MTM1MTpcdHJldCA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2aXdsX3BjaV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTEzNTItXHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxODo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4ODQxCgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBJbnRlbCBXaUZpIERyaXZlciBSZWdpc3RyYXRpb24qKgoKT2theSwgc28gYGl3bF9wY2lfZHJpdmVyYCBpcyByZWdpc3RlcmluZyBpdHNlbGYgYXMgYSBQQ0kgZHJpdmVyIGZvciBJbnRlbCBXaUZpIGhhcmR3YXJlLiBUaGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgYnJvYWRlciBwaWN0dXJlIHRob3VnaC4gSSYjMzk7bSBjdXJpb3VzIGlmIHRoZSBgaXdsd2lmaWAgc3RhY2sgaXMgcmVnaXN0ZXJpbmcgb24gYW55ICpvdGhlciogYnVzZXMgYXMgd2VsbC4gSXQmIzM5O3MgZ29vZCBwcmFjdGljZSB0byB1bmRlcnN0YW5kIGFsbCB0aGUgcG9pbnRzIG9mIGF0dGFjaG1lbnQuIExldCYjMzk7cyBzZWUuLi4gdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIGlzIHByb2JhYmx5IHRoZSBpbml0aWFsaXphdGlvbiByb3V0aW5lLCB3aGljaCwgZnJvbSB3aGF0IEkgcmVtZW1iZXIgb2YgdGhlIGl3bHdpZmkgY29kZWJhc2UsIHNob3VsZCBiZSBgaXdsX2Rydl9pbml0YC4gVGltZSB0byBnbyBjaGVjayB0aGF0IG91dCBhbmQgc2VlIHdoYXQgb3RoZXIgYnVzIHR5cGVzIGFyZSBiZWluZyBoYW5kbGVkLiBJIHdhbnQgdG8gYnVpbGQgYSBjb21wbGV0ZSBtZW50YWwgbWFwIG9mIHRoZSBkcml2ZXImIzM5O3MgaW50ZXJmYWNlIHBvaW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTg6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIxMDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjEwMDpcdFx0XHRcdF9pd2xfb3BfbW9kZV9zdG9wKGRydik7XG4yMTAxOlx0XG4yMTAyOlx0XHRcdG11dGV4X3VubG9jayhcdTAwMjZpd2x3aWZpX29wbW9kZV90YWJsZV9tdHgpO1xuMjEwMzpcdFx0XHRyZXR1cm47XG4yMTA0Olx0XHR9XG4yMTA1Olx0XHRtdXRleF91bmxvY2soXHUwMDI2aXdsd2lmaV9vcG1vZGVfdGFibGVfbXR4KTtcbjIxMDY6XHR9XG4yMTA3Olx0SVdMX0VYUE9SVF9TWU1CT0woaXdsX29wbW9kZV9kZXJlZ2lzdGVyKTtcbjIxMDg6XHRcbjIxMDk6XHRzdGF0aWMgaW50IF9faW5pdCBpd2xfZHJ2X2luaXQodm9pZClcbjIxMTA6XHR7XG4yMTExOlx0XHRpbnQgaSwgZXJyO1xuMjExMjpcdFxuMjExMzpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShpd2x3aWZpX29wbW9kZV90YWJsZSk7IGkmIzQzOyYjNDM7KVxuMjExNDpcdFx0XHRJTklUX0xJU1RfSEVBRChcdTAwMjZpd2x3aWZpX29wbW9kZV90YWJsZVtpXS5kcnYpO1xuMjExNTpcdFxuMjExNjpcdCNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTXG4yMTE3Olx0XHQvKiBDcmVhdGUgdGhlIHJvb3Qgb2YgaXdsd2lmaSBkZWJ1Z2ZzIHN1YnN5c3RlbS4gKi9cbjIxMTg6XHRcdGl3bF9kYmdmc19yb290ID0gZGVidWdmc19jcmVhdGVfZGlyKERSVl9OQU1FLCBOVUxMKTtcbjIxMTk6XHQjZW5kaWZcbjIxMjA6XHRcbjIxMjE6XHRcdGVyciA9IGl3bF9wY2lfcmVnaXN0ZXJfZHJpdmVyKCk7XG4yMTIyOlx0XHRpZiAoZXJyKVxuMjEyMzpcdFx0XHRnb3RvIGNsZWFudXBfZGVidWdmcztcbjIxMjQ6XHRcbjIxMjU6XHRcdHJldHVybiAwO1xuMjEyNjpcdFxuMjEyNzpcdGNsZWFudXBfZGVidWdmczpcbjIxMjg6XHQjaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdGU1xuMjEyOTpcdFx0ZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlKGl3bF9kYmdmc19yb290KTtcbjIxMzA6XHQjZW5kaWZcbjIxMzE6XHRcdHJldHVybiBlcnI7XG4yMTMyOlx0fVxuMjEzMzpcdG1vZHVsZV9pbml0KGl3bF9kcnZfaW5pdCk7XG4yMTM0Olx0XG4yMTM1Olx0c3RhdGljIHZvaWQgX19leGl0IGl3bF9kcnZfZXhpdCh2b2lkKVxuMjEzNjpcdHtcbjIxMzc6XHRcdGl3bF9wY2lfdW5yZWdpc3Rlcl9kcml2ZXIoKTtcbjIxMzg6XHRcdGl3bF90cmFuc19mcmVlX3Jlc3RhcnRfbGlzdCgpO1xuMjEzOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxODo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5Njg2CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGFuZCB0aGUgc3lzdGVtIGlzICpvbmx5KiByZWdpc3RlcmluZyB0aGUgUENJIGRyaXZlciwgYGl3bF9wY2lfZHJpdmVyYC4gVGhhdCYjMzk7cyBhIGJpdCBvZGQuIEkmIzM5O2QgZXhwZWN0IHRvIHNlZSBtb3JlLCBwZXJoYXBzIHNvbWUgaW5kaWNhdGlvbiBvZiBhIGJyb2FkZXIgYXJjaGl0ZWN0dXJlIG9yIGV2ZW4gdmlydHVhbCBjb21wb25lbnRzIGRlcGVuZGluZyBvbiB0aGUgdGVzdGluZyBvciBpbXBsZW1lbnRhdGlvbi4KCldhaXQgYSBzZWNvbmTigKYgaXMgdGhlcmUgYW55IHNvcnQgb2YgdmlydHVhbCBoYXJkd2FyZSBvciBtb2NrIGRyaXZlciBpbiB0aGUgaXdsd2lmaSBjb2RlYmFzZSwgbWF5YmUgdXNlZCBmb3IgdGVzdGluZyBvciBzcGVjaWZpYyB1c2UgY2FzZXM/IEkmIzM5O3ZlIHNlZW4gdGhhdCBhcHByb2FjaCBiZWZvcmUsIGVzcGVjaWFsbHkgaW4gY29tcGxleCBkcml2ZXIgZmFtaWxpZXMuIExldCBtZSBxdWlja2x5IHNjYW4gdGhyb3VnaCB0aGUgYHRlc3RzL2AgZGlyZWN0b3J5IHdpdGhpbiB0aGUgaXdsd2lmaSBjb2RlLiBUaGF0JiMzOTtzIHVzdWFsbHkgd2hlcmUgdGhlc2Ugc29ydHMgb2YgdGhpbmdzIGFyZSBzdGFzaGVkLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgc2lnbnMgb2Ygc2ltdWxhdGVkIGhhcmR3YXJlIGVudmlyb25tZW50cyB0byBkZXRlcm1pbmUgaWYgdGhlIFBDSSBkcml2ZXIgaXMgdGhlIG9ubHkgcGllY2Ugb2YgdGhlIHB1enpsZSwgb3IgcGFydCBvZiBhIGJpZ2dlciBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDE4OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvdGVzdHMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDtkZXZpbmZvLmMmIzM0OywKICAgICYjMzQ7bW9kdWxlLmMmIzM0OywKICAgICYjMzQ7bnZtX3BhcnNlLmMmIzM0OywKICAgICYjMzQ7dXRpbHMuYyYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDE4OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk5ODgKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCYjMzk7cyBJbXBhY3Qgb24gdGhlIEludGVsIFdpcmVsZXNzIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIEkgc2VlIGl0JiMzOTtzIHRvdWNoaW5nIGEgZmV3IGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoZSBJbnRlbCB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBpd2x3aWZpYCBtb2R1bGUuIFRoZSBwcmVzZW5jZSBvZiBgdGVzdHMvYCBhbmQgdGhlIG1lbnRpb24gb2YgYElXTFdJRklfS1VOSVRfVEVTVFNgIGluZGljYXRlcyB0aGlzIGlzIHJlbGF0ZWQgdG8gS1VuaXQgdGVzdHMsIHdoaWNoIGlzIHVzZWZ1bCBjb250ZXh0LiBIb3dldmVyLCBteSBpbW1lZGlhdGUgY29uY2VybiBpcyB1bmRlcnN0YW5kaW5nIHRoZSBmdWxsIHNjb3BlIG9mIHRoaXMgY2hhbmdlLCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGV4YWN0bHkgdGhlIHBhdGNoIG1vZGlmaWVzLgoKTGV0IG1lIHRha2UgYSBsb29rIGF0IHRoZSBrZXkgZnVuY3Rpb25zIGFmZmVjdGVkOiBJIHNlZSBgaXdsX21sZF9hZGRfbGlua2AgaW4gYGxpbmsuY2AsIGBpd2xfbWxkX3NldF9rZXlfYWRkYCBpbiBgbWFjODAyMTEuY2AsIGFuZCBgX19pd2xfbXZtX21hY19zZXRfa2V5YCBpbiB0aGUgYG12bS9tYWM4MDIxMS5jYCBmaWxlLiBSaWdodCwgdGhlIE1MRCAoTWVzaCBMaW5rIERpc2NvdmVyeSkgc2VlbXMgdG8gYmUgaW52b2x2ZWQgYW5kIGEgY2hhbmdlIGluIGhvdyBrZXlzIGFyZSBoYW5kbGVkLgoKTm93LCB3aGVyZSBpcyBgaXdsX21sZF9hZGRfbGlua2AgYWN0dWFsbHkgY2FsbGVkIGZyb20/IFRoYXQmIzM5O3MgdGhlIG5leHQgY3JpdGljYWwgcXVlc3Rpb24uIEtub3dpbmcgdGhlIGNhbGwgZ3JhcGggd2lsbCBoZWxwIHRvIHVuZGVyc3RhbmQgdGhlIGJyb2FkZXIgaW1wbGljYXRpb25zIG9mIHRoZXNlIGNoYW5nZXMuIEkgbmVlZCB0byB0cmFjZSB0aGlzIGZ1bmN0aW9uIHRvIGdldCBhIGdvb2QgaGFuZGxlIG9uIHdoZXJlIGl0IGlzIGJlaW5nIHVzZWQgYW5kIHdoYXQgdGhlIHBvdGVudGlhbCBpbXBhY3QgaXMuIExldCYjMzk7cyBkaWcgZGVlcGVyIHRvIHNlZSB3aGVyZSB0aGF0IGZ1bmN0aW9uIGlzIHVzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDE4OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bF9tbGRfYWRkX2xpbmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2RlYnVnZnMuYz0xMDEzPUxJTktfREVCVUdGU19SRUFEX0ZJTEVfT1BTKGZ3X2lkLCA2NCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9kZWJ1Z2ZzLmMtMTAxNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2RlYnVnZnMuYzoxMDE1OnZvaWQgaXdsX21sZF9hZGRfbGlua19kZWJ1Z2ZzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvZGVidWdmcy5jLTEwMTYtXHRcdFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9kZWJ1Z2ZzLmM9MTE1NT1MSU5LX1NUQV9ERUJVR0ZTX1JFQURfT1BTKGZ3X2lkLCA2NCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9kZWJ1Z2ZzLmMtMTE1Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2RlYnVnZnMuYzoxMTU3OnZvaWQgaXdsX21sZF9hZGRfbGlua19zdGFfZGVidWdmcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2RlYnVnZnMuYy0xMTU4LVx0XHRcdFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2xpbmsuYz0zOD1pbnQgaXdsX21sZF9zZW5kX2xpbmtfY21kKHN0cnVjdCBpd2xfbWxkICptbGQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbGluay5jLTU4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbGluay5jOjU5OnN0YXRpYyBpbnQgaXdsX21sZF9hZGRfbGlua190b19mdyhzdHJ1Y3QgaXdsX21sZCAqbWxkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbGluay5jLTYwLVx0XHRcdFx0ICBzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpsaW5rX2NvbmYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbGluay5jPTUwMD1pd2xfbWxkX2luaXRfbGluayhzdHJ1Y3QgaXdsX21sZCAqbWxkLCBzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpsaW5rLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2xpbmsuYy01MTQtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9saW5rLmM6NTE1OmludCBpd2xfbWxkX2FkZF9saW5rKHN0cnVjdCBpd2xfbWxkICptbGQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9saW5rLmMtNTE2LVx0XHQgICAgIHN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKmJzc19jb25mKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2xpbmsuYy01NDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9saW5rLmM6NTQxOlx0cmV0ID0gaXdsX21sZF9hZGRfbGlua190b19mdyhtbGQsIGJzc19jb25mKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2xpbmsuYy01NDItXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbGluay5oPTEyMD1pbnQgaXdsX21sZF9zZW5kX2xpbmtfY21kKHN0cnVjdCBpd2xfbWxkICptbGQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbGluay5oLTEyMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2xpbmsuaDoxMjQ6aW50IGl3bF9tbGRfYWRkX2xpbmsoc3RydWN0IGl3bF9tbGQgKm1sZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2xpbmsuaC0xMjUtXHRcdCAgICAgc3RydWN0IGllZWU4MDIxMV9ic3NfY29uZiAqYnNzX2NvbmYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmM9NjU5PWludCBpd2xfbWxkX21hYzgwMjExX2FkZF9pbnRlcmZhY2Uoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYy02OTgtXHRpZiAodmlmLVx1MDAzZXR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfTkFOIFx1MDAyNlx1MDAyNiAhaWVlZTgwMjExX3ZpZl9pc19tbGQodmlmKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYzo2OTk6XHRcdHJldCA9IGl3bF9tbGRfYWRkX2xpbmsobWxkLCBcdTAwMjZ2aWYtXHUwMDNlYnNzX2NvbmYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYy03MDAtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYz0xMjQ3PXZvaWQgaXdsX21sZF91bmFzc2lnbl92aWZfY2hhbmN0eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tYWM4MDIxMS5jLTEyOTAtXHRcdGl3bF9tbGRfcmVtb3ZlX2xpbmsobWxkLCBsaW5rKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmM6MTI5MTpcdFx0aXdsX21sZF9hZGRfbGluayhtbGQsIGxpbmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYy0xMjkyLVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmM9MjcwNj1pd2xfbWxkX2NoYW5nZV92aWZfbGlua3Moc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYy0yNzQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYzoyNzQ2Olx0XHRcdGVyciA9IGl3bF9tbGRfYWRkX2xpbmsobWxkLCBsaW5rX2NvbmYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYy0yNzQ3LVx0XHRcdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYz0yOTE0PWNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIGl3bF9tbGRfaHdfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmMtMjk3Ni1cdC52aWZfYWRkX2RlYnVnZnMgPSBpd2xfbWxkX2FkZF92aWZfZGVidWdmcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmM6Mjk3NzpcdC5saW5rX2FkZF9kZWJ1Z2ZzID0gaXdsX21sZF9hZGRfbGlua19kZWJ1Z2ZzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYzoyOTc4Olx0Lmxpbmtfc3RhX2FkZF9kZWJ1Z2ZzID0gaXdsX21sZF9hZGRfbGlua19zdGFfZGVidWdmcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmMtMjk3OS0jZW5kaWZcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tbGQuaD01NzU9dm9pZCBpd2xfbWxkX2FkZF92aWZfZGVidWdmcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21sZC5oLTU3Ni1cdFx0XHQgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWxkLmg6NTc3OnZvaWQgaXdsX21sZF9hZGRfbGlua19kZWJ1Z2ZzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWxkLmgtNTc4LVx0XHRcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWxkLmgtNTgwLVx0XHRcdCAgICAgIHN0cnVjdCBkZW50cnkgKmRpcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tbGQuaDo1ODE6dm9pZCBpd2xfbWxkX2FkZF9saW5rX3N0YV9kZWJ1Z2ZzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWxkLmgtNTgyLVx0XHRcdFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5jPTU5Nj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zdGEuYzo1OTc6aXdsX21sZF9hZGRfbGlua19zdGEoc3RydWN0IGl3bF9tbGQgKm1sZCwgc3RydWN0IGllZWU4MDIxMV9saW5rX3N0YSAqbGlua19zdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zdGEuYy01OTgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5jPTgyMD1pbnQgaXdsX21sZF9hZGRfc3RhKHN0cnVjdCBpd2xfbWxkICptbGQsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc3RhLmMtODQ5LVx0Zm9yX2VhY2hfc3RhX2FjdGl2ZV9saW5rKG1sZF9zdGEtXHUwMDNldmlmLCBzdGEsIGxpbmtfc3RhLCBsaW5rX2lkKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zdGEuYzo4NTA6XHRcdHJldCA9IGl3bF9tbGRfYWRkX2xpbmtfc3RhKG1sZCwgbGlua19zdGEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc3RhLmMtODUxLVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5jPTEzMzA9aW50IGl3bF9tbGRfdXBkYXRlX2xpbmtfc3RhcyhzdHJ1Y3QgaXdsX21sZCAqbWxkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5jLTEzODgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zdGEuYzoxMzg5Olx0XHRyZXQgPSBpd2xfbWxkX2FkZF9saW5rX3N0YShtbGQsIGxpbmtfc3RhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5jLTEzOTAtXHRcdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDE4OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMDgxCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMzExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgVGhvdWdodHMgb24gaXdsd2lmaSBhbmQgbWFjODAyLjExIFRlc3RpbmcqKgoKT2theSwgc28gYGl3bF9tbGRfaHdfb3BzYCwgcmlnaHQsIHRoYXQmIzM5O3MgZGVmaW5lZCBhcyBhbiBgaWVlZTgwMjExX29wc2Agc3RydWN0dXJlLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGhvdyBleGFjdGx5IGRvZXMgdGhlIDgwMi4xMSBzdGFjayBnZXQgdGVzdGVkIHdpdGhpbiBzeXprYWxsZXIgYW5kIHRoZSBMaW51eCBrZXJuZWwgdGVzdGluZyBpbmZyYXN0cnVjdHVyZT8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGVzZSBjb21wb25lbnRzLgoKUmlnaHQsIHN5emthbGxlciBkb2VzIGZ1enogbWFjODAyMTEuIEFuZCB0aGUgbWV0aG9kIHVzZWQgaXMgYG1hYzgwMjExX2h3c2ltYC4gVGhhdCYjMzk7cyBhIHZpcnR1YWwsIHNvZnR3YXJlLWJhc2VkIG1hYzgwMjExIGRldmljZS4gSSByZWNhbGwgc2VlaW5nIHRoYXQgY29kZSBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5jYCBvciBhIHNpbWlsYXIgcGF0aC4gVGhlIGB2aXJ0X3dpZmlgIHNldHVwIGlzIGFub3RoZXIgb3B0aW9uLCB0aG91Z2ggYG1hYzgwMjExX2h3c2ltYCBpcyBtb3JlIGxpa2VseS4KCkJ1dCB3YWl0IGEgbWludXRlLi4uY2FuIEkgYWN0dWFsbHkgdXNlIGBpd2x3aWZpYCAqd2l0aCogYG1hYzgwMjExX2h3c2ltYD8gTm8sIHRoYXQmIzM5O3Mgbm90IGhvdyBpdCB3b3JrcyEgYG1hYzgwMjExX2h3c2ltYCAqaXMqIGl0cyBvd24gZHJpdmVyISBJdCYjMzk7cyBhIGtlcm5lbCBtb2R1bGUgKGBtYWM4MDIxMV9od3NpbS5rb2ApIHRoYXQgaW1wbGVtZW50cyB0aGUgYGllZWU4MDIxMV9vcHNgIGludGVyZmFjZSBpdHNlbGYuIEl0ICpyZXBsYWNlcyogYSByZWFsIGhhcmR3YXJlIGRyaXZlciwgYmFzaWNhbGx5LgoKU28sIHRoaW5raW5nIGFib3V0IGl0IG1vcmUgYnJvYWRseSwgZWFjaCB3aXJlbGVzcyBkcml2ZXIgKGl3bHdpZmksIGF0aDlrLCBydDI4MDAsIG10NzYsIGFuZCBldmVuIG1hYzgwMjExX2h3c2ltKSByZWdpc3RlcnMgaXRzIG93biBoYXJkd2FyZSB3aXRoIG1hYzgwMjExLiBUaGlzIGlzIGRvbmUgdGhyb3VnaCBgaWVlZTgwMjExX2FsbG9jX2h3KClgIGFuZCBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3KClgLiBUaGF0JiMzOTtzIHRoZSBrZXkgcmVnaXN0cmF0aW9uIG1lY2hhbmlzbS4KCk9rYXksIGxldCYjMzk7cyBjaGFuZ2UgZ2VhcnMgYSBiaXQuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgYGl3bF9tbGRgIG9yIGBpd2xfbXZtYCBpcyBpbml0aWFsaXplZC4gSSYjMzk7bGwgbmVlZCB0byBnbyBkaWdnaW5nIGZvciB0aGF0LiBMZXQgbWUgc3RhcnQgYnkgc2VhcmNoaW5nIGZvciB0aGUgY29kZSByZXNwb25zaWJsZSBmb3IgcmVnaXN0ZXJpbmcgdGhlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTg6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWVlZTgwMjExX2FsbG9jX2h3JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWM4MDIxMS5jPTE2MDk9c3RydWN0IGllZWU4MDIxMV9odyAqaXdsX2FsbG9jX2FsbCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21hYzgwMjExLmMtMTYxNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21hYzgwMjExLmM6MTYxNzpcdGh3ID0gaWVlZTgwMjExX2FsbG9jX2h3KHNpemVvZihzdHJ1Y3QgaXdsX3ByaXYpICYjNDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWM4MDIxMS5jLTE2MTgtXHRcdFx0XHRzaXplb2Yoc3RydWN0IGl3bF9vcF9tb2RlKSwgXHUwMDI2aXdsYWduX2h3X29wcyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWxkLmM9Mzk2PWl3bF9vcF9tb2RlX21sZF9zdGFydChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgY29uc3Qgc3RydWN0IGl3bF9yZl9jZmcgKmNmZyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tbGQuYy00MDQtXHQvKiBBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSBhIG5ldyBoYXJkd2FyZSBkZXZpY2UgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21sZC5jOjQwNTpcdGh3ID0gaWVlZTgwMjExX2FsbG9jX2h3KHNpemVvZihzdHJ1Y3QgaXdsX29wX21vZGUpICYjNDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tbGQuYy00MDYtXHRcdFx0XHRzaXplb2Yoc3RydWN0IGl3bF9tbGQpLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL29wcy5jPTExOTg9aXdsX29wX21vZGVfbXZtX3N0YXJ0KHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBjb25zdCBzdHJ1Y3QgaXdsX3JmX2NmZyAqY2ZnLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL29wcy5jLTEyMjQtXHQgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9vcHMuYzoxMjI1Olx0aHcgPSBpZWVlODAyMTFfYWxsb2NfaHcoc2l6ZW9mKHN0cnVjdCBpd2xfb3BfbW9kZSkgJiM0MztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL29wcy5jLTEyMjYtXHRcdFx0XHRzaXplb2Yoc3RydWN0IGl3bF9tdm0pLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxODo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDQ1MwoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlRyYWNpbmcgdGhlIGl3bF90cmFucyBTdHJ1Y3R1cmUqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBJJiMzOTttIGxvb2tpbmcgYXQgYGl3bF9vcF9tb2RlX21sZF9zdGFydGAgYW5kIGBpd2xfb3BfbW9kZV9tdm1fc3RhcnRgLCBhbmQgaW1tZWRpYXRlbHkgdGhlIGBzdHJ1Y3QgaXdsX3RyYW5zICp0cmFuc2AgY2F1Z2h0IG15IGV5ZS4gIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoaXMgYGl3bF90cmFuc2AgY29tZXMgZnJvbS4gVGhpcyBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBhYnN0cmFjdGlvbiBsYXllciBpbiB0aGlzIEludGVsIHdpcmVsZXNzIGRyaXZlciwgaXNuJiMzOTt0IGl0PwoKUmlnaHQsIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byB0cmFjayBkb3duIHRoZSBhbGxvY2F0aW9uLiBTbywgSSBuZWVkIHRvIGZpbmQgdGhlIGNhbGxzIHRvIGBpd2xfdHJhbnNfYWxsb2NgIG9yIGBpd2xfdHJhbnNfcGNpZV9hbGxvY2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzICp0cmFucyogc3RydWN0dXJlIGlzIGluc3RhbnRpYXRlZCBhbmQgaW5pdGlhbGl6ZWQuIE9uY2UgSSBrbm93IHRoYXQsIEkmIzM5O2xsIGJlIG9uZSBzdGVwIGNsb3NlciB0byBncmFzcGluZyB0aGUgY29tcGxldGUgb3BlcmF0aW9uYWwgZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTg6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXdsX3RyYW5zX2FsbG9jfGl3bF90cmFuc19wY2llX2FsbG9jJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jPTI2MD1pbnQgaXdsYWduX3R4X3NrYihzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYy0zNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jOjM0NDpcdGRldl9jbWQgPSBpd2xfdHJhbnNfYWxsb2NfdHhfY21kKHByaXYtXHUwMDNldHJhbnMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYy0zNDUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYz0yMDI9c3RhdGljIHZvaWQgaXdsX3RyYW5zX3Jlc3RhcnRfd2soc3RydWN0IHdvcmtfc3RydWN0ICp3aylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTI2Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM6MjY3OnN0cnVjdCBpd2xfdHJhbnMgKml3bF90cmFuc19hbGxvYyh1bnNpZ25lZCBpbnQgcHJpdl9zaXplLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0yNjgtXHRcdFx0XHQgIHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jPTMzMj1JV0xfRVhQT1JUX1NZTUJPTChpd2xfdHJhbnNfc2VuZF9jbWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0zMzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jOjMzNDpzdHJ1Y3QgaXdsX2RldmljZV90eF9jbWQgKml3bF90cmFuc19hbGxvY190eF9jbWQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTMzNS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0zMzctfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYzozMzg6SVdMX0VYUE9SVF9TWU1CT0woaXdsX3RyYW5zX2FsbG9jX3R4X2NtZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTMzOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oPTgzOD1pd2xfdHJhbnNfZHVtcF9kYXRhKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCB1MzIgZHVtcF9tYXNrLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmgtODQxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaDo4NDI6c3RydWN0IGl3bF9kZXZpY2VfdHhfY21kICppd2xfdHJhbnNfYWxsb2NfdHhfY21kKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmgtODQzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmg9MTA4OT1zdGF0aWMgaW5saW5lIHZvaWQgaXdsX3RyYW5zX2ZpbmlzaF9zd19yZXNldChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oLTEwOTYtICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaDoxMDk3OnN0cnVjdCBpd2xfdHJhbnMgKml3bF90cmFuc19hbGxvYyh1bnNpZ25lZCBpbnQgcHJpdl9zaXplLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaC0xMDk4LVx0XHRcdFx0ICBzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdHguYz03NTA9c3RhdGljIGludCBpd2xfbWxkX3R4X21wZHUoc3RydWN0IGl3bF9tbGQgKm1sZCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90eC5jLTc2Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3R4LmM6NzY3Olx0ZGV2X3R4X2NtZCA9IGl3bF90cmFuc19hbGxvY190eF9jbWQobWxkLVx1MDAzZXRyYW5zKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3R4LmMtNzY4LVx0aWYgKHVubGlrZWx5KCFkZXZfdHhfY21kKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90eC5jPTU1Mz1pd2xfbXZtX3NldF90eF9wYXJhbXMoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90eC5jLTU2MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3R4LmM6NTYyOlx0ZGV2X2NtZCA9IGl3bF90cmFuc19hbGxvY190eF9jbWQobXZtLVx1MDAzZXRyYW5zKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3R4LmMtNTYzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYz0zNzQzPXZvaWQgaXdsX3RyYW5zX3BjaWVfc3luY19ubWkoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTM3NjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmM6Mzc2MjpzdGF0aWMgaW50IGl3bF90cmFuc19wY2llX2FsbG9jX3R4Y21kX3Bvb2woc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmMtMzc2My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jPTM3OTk9c3RhdGljIHN0cnVjdCBpd2xfdHJhbnMgKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jOjM4MDA6aXdsX3RyYW5zX3BjaWVfYWxsb2Moc3RydWN0IHBjaV9kZXYgKnBkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmMtMzgwMS1cdFx0ICAgICBjb25zdCBzdHJ1Y3QgaXdsX21hY19jZmcgKm1hY19jZmcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTM4MDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmM6MzgwOTpcdHRyYW5zID0gaXdsX3RyYW5zX2FsbG9jKHNpemVvZihzdHJ1Y3QgaXdsX3RyYW5zX3BjaWUpLCBcdTAwMjZwZGV2LVx1MDAzZWRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy0zODEwLVx0XHRcdFx0bWFjX2NmZyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTM4MjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmM6MzgyMTpcdHJldCA9IGl3bF90cmFuc19wY2llX2FsbG9jX3R4Y21kX3Bvb2wodHJhbnMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTM4MjItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYz00MjMyPWludCBpd2xfcGNpX2dlbjFfMl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmMtNDI0NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYzo0MjQ2Olx0aXdsX3RyYW5zID0gaXdsX3RyYW5zX3BjaWVfYWxsb2MocGRldiwgbWFjX2NmZywgXHUwMDI2aW5mbywgaHdfYmFzZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmMtNDI0Ny1cdGlmIChJU19FUlIoaXdsX3RyYW5zKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTg6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY2NTMKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBzaXR1YXRpb246CgoqKkludmVzdGlnYXRpbmcgdGhlIEFsbG9jYXRpb24gUGF0aCBvZiBgaXdsX3RyYW5zX3BjaWVfYWxsb2NgKioKCk9rYXksIHNvIGBpd2xfdHJhbnNfcGNpZV9hbGxvY2AgaXMgY2FsbGVkIHNvbGVseSBmcm9tIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb25zLCBzcGVjaWZpY2FsbHkgYGl3bF9wY2lfZ2VuMV8yX3Byb2JlYCBvciBgaXdsX3BjaV9wcm9iZWAuIFRoYXQmIzM5O3MgYSBwcmV0dHkgdGlnaHQgY29uc3RyYWludCwgYW5kIGl0IG1ha2VzIG1lIHdvbmRlciBpZiB0aGVyZSYjMzk7cyBhbnkgb3RoZXIgaW5zdGFudGlhdGlvbiBvZiB0aGUgbW9yZSBnZW5lcmFsIGBpd2xfdHJhbnNfYWxsb2NgIGZ1bmN0aW9uLiBJdCBzZWVtcyBsaWtlIGl0IHdvdWxkIG9ubHkgYmUgaW4gdGhlIGluaXRpYWxpemF0aW9uIHBhdGguIEkgbmVlZCB0byBiZSBzdXJlIHRoaXMgaXMgY29ycmVjdC4gSSBzaG91bGQgZG91YmxlIGNoZWNrIHRoYXQgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgY2FsbCBzaXRlcywgZXZlbiBpZiB0aGV5IGFyZSBpbiBvdGhlciBkcml2ZXJzLCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBmdWxsIGFsbG9jYXRpb24gcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTg6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXdsX3RyYW5zX2FsbG9jXFwoJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM9MjAyPXN0YXRpYyB2b2lkIGl3bF90cmFuc19yZXN0YXJ0X3drKHN0cnVjdCB3b3JrX3N0cnVjdCAqd2spXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0yNjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jOjI2NzpzdHJ1Y3QgaXdsX3RyYW5zICppd2xfdHJhbnNfYWxsb2ModW5zaWduZWQgaW50IHByaXZfc2l6ZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtMjY4LVx0XHRcdFx0ICBzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaD0xMDg5PXN0YXRpYyBpbmxpbmUgdm9pZCBpd2xfdHJhbnNfZmluaXNoX3N3X3Jlc2V0KHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmgtMTA5Ni0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oOjEwOTc6c3RydWN0IGl3bF90cmFucyAqaXdsX3RyYW5zX2FsbG9jKHVuc2lnbmVkIGludCBwcml2X3NpemUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oLTEwOTgtXHRcdFx0XHQgIHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmM9MzgwMD1pd2xfdHJhbnNfcGNpZV9hbGxvYyhzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmMtMzgwOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYzozODA5Olx0dHJhbnMgPSBpd2xfdHJhbnNfYWxsb2Moc2l6ZW9mKHN0cnVjdCBpd2xfdHJhbnNfcGNpZSksIFx1MDAyNnBkZXYtXHUwMDNlZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTM4MTAtXHRcdFx0XHRtYWNfY2ZnKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTg6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTczOTMKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAxMDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVHJhY2luZyB0aGUgRHJpdmVyIEluaXRpYWxpemF0aW9uIEZsb3cqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBgaXdsd2lmaWAgZHJpdmVyIGNvZGUsIHNwZWNpZmljYWxseSB0aGUgUENJZS1yZWxhdGVkIHN0dWZmLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMgYWJvdXQgd2hlcmUgYGl3bF90cmFuc19hbGxvY2AgZ2V0cyBjYWxsZWQsIGFuZCBpdCBsb29rcyBsaWtlIHRoZSBjb2RlIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIGBpd2xfdHJhbnNfYWxsb2NgIGlzICpvbmx5KiBjYWxsZWQgYnkgYGl3bF90cmFuc19wY2llX2FsbG9jYC4gVGhhdCYjMzk7cyBnb29kOyBpdCBuYXJyb3dzIHRoaW5ncyBkb3duIGNvbnNpZGVyYWJseS4gQW5kIGBpd2xfdHJhbnNfcGNpZV9hbGxvY2AgaXRzZWxmIGlzICpvbmx5KiBldmVyIGNhbGxlZCBmcm9tIGBpd2xfcGNpX2dlbjFfMl9wcm9iZWAuIFNvLCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbml0aWFsaXphdGlvbiBmbG93LCBteSBuZXh0IHN0ZXAgaXMgY2xlYXI6IEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gYGl3bF9wY2lfZ2VuMV8yX3Byb2JlYCBhbmQgc2VlIHdoZXJlICppdCogZ2V0cyBjYWxsZWQgZnJvbS4gVGhhdCB3aWxsIGdpdmUgbWUgdGhlIGVudHJ5IHBvaW50IGZvciB0aGlzIHBhcnRpY3VsYXIgc3Vic3lzdGVtLiBUaGF0JiMzOTtzIHdoZXJlIEkgd2lsbCBzdGFydCBteSBpbnZlc3RpZ2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxODo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpd2xfcGNpX2dlbjFfMl9wcm9iZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM9MTE1MD1zdGF0aWMgaW50IGl3bF9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTExODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM6MTE5MDpcdHJldHVybiBpd2xfcGNpX2dlbjFfMl9wcm9iZShwZGV2LCBlbnQsIG1hY19jZmcsIGh3X2Jhc2UsIGh3X3Jldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmMtMTE5MS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi9pbnRlcm5hbC5oPTEyMDk9dm9pZCBpd2xfcGNpZV9hbGxvY19md19tb25pdG9yKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCB1OCBtYXhfcG93ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi9pbnRlcm5hbC5oOjEyMTA6aW50IGl3bF9wY2lfZ2VuMV8yX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi9pbnRlcm5hbC5oLTEyMTEtXHRcdFx0IGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jPTQyMDA9c3RhdGljIHZvaWQgaXdsX3BjaWVfY2hlY2tfbWVfc3RhdHVzKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy00MjMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jOjQyMzI6aW50IGl3bF9wY2lfZ2VuMV8yX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTQyMzMtXHRcdFx0IGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDE4OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MjI4CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBpd2xfcGNpIERyaXZlcioqCgpPa2F5LCBzbyBgaXdsX3BjaV9wcm9iZWAuLi4gdGhhdCYjMzk7cyB0aGUgcHJvYmUgZnVuY3Rpb24gZm9yIHRoZSBgaXdsX3BjaV9kcml2ZXJgLCB3aGljaCBpcyBrZXkgdG8gZ2V0dGluZyB0aGVzZSBJbnRlbCB3aXJlbGVzcyBjYXJkcyB3b3JraW5nIG9uIFBDSS4gVGltZSB0byBsb29rIGludG8gdGhlIHNwZWNpZmljcy4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoYXQgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgZHJpdmVyIHN0cnVjdHVyZSBpcyBjb3JyZWN0LCBhbmQgc2VlIHdoYXQgdGhlIHByb2JlIGZ1bmN0aW9uIGFjdHVhbGx5IGRvZXMuIExldCYjMzk7cyBoZWFkIG92ZXIgdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuY2AgYW5kIGRpZyBpbnRvIGBpd2xfcGNpX2RyaXZlcmAgaXRzZWxmIHRvIHNlZSBob3cgdGhpcyB0aGluZyBpcyBwdXQgdG9nZXRoZXIuIEdvdHRhIHVuZGVyc3RhbmQgdGhlIGVudHJ5IHBvaW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTg6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMzMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEzMzA6XHRcbjEzMzE6XHRzdGF0aWMgdm9pZCBpd2xfcGNpX2R1bXAoc3RydWN0IGRldmljZSAqZGV2aWNlKVxuMTMzMjpcdHtcbjEzMzM6XHRcdHN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gdG9fcGNpX2RldihkZXZpY2UpO1xuMTMzNDpcdFx0c3RydWN0IGl3bF90cmFucyAqdHJhbnMgPSBwY2lfZ2V0X2RydmRhdGEocGRldik7XG4xMzM1Olx0XG4xMzM2Olx0XHRpd2xfb3BfbW9kZV9kdW1wKHRyYW5zLVx1MDAzZW9wX21vZGUpO1xuMTMzNzpcdH1cbjEzMzg6XHRcbjEzMzk6XHRzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgaXdsX3BjaV9kcml2ZXIgPSB7XG4xMzQwOlx0XHQubmFtZSA9IERSVl9OQU1FLFxuMTM0MTpcdFx0LmlkX3RhYmxlID0gaXdsX2h3X2NhcmRfaWRzLFxuMTM0MjpcdFx0LnByb2JlID0gaXdsX3BjaV9wcm9iZSxcbjEzNDM6XHRcdC5yZW1vdmUgPSBpd2xfcGNpX3JlbW92ZSxcbjEzNDQ6XHRcdC5kcml2ZXIucG0gPSBJV0xfUE1fT1BTLFxuMTM0NTpcdFx0LmRyaXZlci5jb3JlZHVtcCA9IGl3bF9wY2lfZHVtcCxcbjEzNDY6XHR9O1xuMTM0NzpcdFxuMTM0ODpcdGludCBfX211c3RfY2hlY2sgaXdsX3BjaV9yZWdpc3Rlcl9kcml2ZXIodm9pZClcbjEzNDk6XHR7XG4xMzUwOlx0XHRpbnQgcmV0O1xuMTM1MTpcdFx0cmV0ID0gcGNpX3JlZ2lzdGVyX2RyaXZlcihcdTAwMjZpd2xfcGNpX2RyaXZlcik7XG4xMzUyOlx0XHRpZiAocmV0KVxuMTM1MzpcdFx0XHRwcl9lcnIoXCYjMzQ7VW5hYmxlIHRvIGluaXRpYWxpemUgUENJIG1vZHVsZVxcblwmIzM0Oyk7XG4xMzU0Olx0XG4xMzU1Olx0XHRyZXR1cm4gcmV0O1xuMTM1NjpcdH1cbjEzNTc6XHRcbjEzNTg6XHR2b2lkIGl3bF9wY2lfdW5yZWdpc3Rlcl9kcml2ZXIodm9pZClcbjEzNTk6XHR7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDE4OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4OTQzCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNTI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBEZWNpc2lvbiBmb3IgaXdsd2lmaSoqCgpPa2F5LCBzbyBgaXdsd2lmaWAgaXMgZGVmaW5pdGVseSBhbiBJbnRlbC1zcGVjaWZpYyBQQ0kgd2lyZWxlc3MgZHJpdmVyLiBUaGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gTm93LCBsZXQmIzM5O3MgY2FyZWZ1bGx5IGNvbnNpZGVyIHRob3NlIG5lZ2F0aXZlIGNyaXRlcmlhIG91dGxpbmVkIGluIFNlY3Rpb24gMiBvZiB0aGUgaW5zdHJ1Y3Rpb25zLiBUaGUga2V5IGhlcmUgaXMgZGV0ZXJtaW5pbmcgaWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgKnVucmVhY2hhYmxlKiBpbiBvdXIgc3RhbmRhcmQgZnV6emluZyBzZXR1cC4KCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBjYW4gd2UgZXZlbiBlbXVsYXRlIG9yIGZ1enogYGl3bHdpZmlgIGluIGEgc3RhbmRhcmQgZW52aXJvbm1lbnQgbGlrZSBHQ0Ugb3IgUUVNVT8gQW5kIHRoZSBhbnN3ZXIsIGFmdGVyIGEgbW9tZW50JiMzOTtzIHJlZmxlY3Rpb24sIGlzIG5vLiBJbnRlbCBXaS1GaSBQQ0kgY2FyZHMsIGxpa2UgdGhlIEFYMjAwIG9yIEFYMjEwLCBhcmUgcGh5c2ljYWwgaGFyZHdhcmUgZGV2aWNlcy4gU3RhbmRhcmQgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoZW0uIEl0IHByb3ZpZGVzIHZpcnR1YWwgbmV0d29yayBpbnRlcmZhY2VzLCBzdXJlLCBidXQgbm90IHBoeXNpY2FsIFdpLUZpIGNhcmRzLiBXZSBoYXZlIGBtYWM4MDIxMV9od3NpbWAgZm9yIHNvZnR3YXJlLWJhc2VkIHZpcnR1YWwgV2ktRmksIGJ1dCBgaXdsd2lmaWAgaXMgdGhlIHByb3ByaWV0YXJ5IGRyaXZlciBmb3IgcmVhbCBoYXJkd2FyZS4KClRoaXMgbWVhbnMsIHdpdGhvdXQgYW4gYWN0dWFsIEludGVsIFdpLUZpIFBDSWUgY2FyZCBwcmVzZW50IGFuZCB0aGUgcHJvcHJpZXRhcnkgZmlybXdhcmUgbG9hZGVkLCBjZXJ0YWluIGtleSBmdW5jdGlvbnMgbmV2ZXIgZ2V0IGV4ZWN1dGVkLiBTcGVjaWZpY2FsbHksIGBpd2xfcGNpX3Byb2JlYCBuZXZlciBydW5zLCBhbmQgY29uc2VxdWVudGx5LCBgaXdsX29wX21vZGVfbWxkX3N0YXJ0YCwgYGl3bF9vcF9tb2RlX212bV9zdGFydGAsIGFuZCB0aGUgbWFjODAyMTEgZGV2aWNlIHJlZ2lzdHJhdGlvbiB3aXRoIGBpd2xfbWxkX2h3X29wc2Agb3IgYGl3bF9tdm1faHdfb3BzYCBuZXZlciBoYXBwZW4uIFRoZXJlZm9yZSwgYGl3bF9tbGRfYWRkX2xpbmtgLCBgaXdsX21sZF9zZXRfa2V5X2FkZGAsIGFuZCBgX19pd2xfbXZtX21hY19zZXRfa2V5YCBhcmUgYWxsIGRlYWQgY29kZS4KCkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIGNoZWNrIHdoZXRoZXIgdGhlcmUgbWlnaHQgYmUgc29tZSBraW5kIG9mIG1vY2ssIGVtdWxhdGlvbiwgb3IgZ2FkZ2V0IGZyYW1ld29yayB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbCBpdHNlbGYgdGhhdCBjb3VsZCBhbGxvdyBzb21lIGxldmVsIG9mIGZ1enppbmcuIExldCBtZSBkbyBhIHF1aWNrIHNlYXJjaCB3aXRoaW4gdGhlIGB0b29scy90ZXN0aW5nYCBhbmQgYGRyaXZlcnMvYCBkaXJlY3RvcmllcyBmb3IgJiMzNDtpd2x3aWZpJiMzNDsgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBCdXQsIEkgYW0gcmVhc29uYWJseSBjZXJ0YWluIHRoaXMgZmFsbHMgaW50byB0aGUgJiMzNDtTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUmIzM0OyBjYXRlZ29yeSBhbmQgaXMgbGlrZWx5ICpXb3J0aEZ1enppbmc9ZmFsc2UqLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxODo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bHdpZmkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTg6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk5NjkKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipFeHBsb3JpbmcgVmlydHVhbCBXaXJlbGVzcyBEcml2ZXJzKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSSYjMzk7bSB0aGlua2luZywgJiMzNDtXaGVyZSB3b3VsZCBJIHR5cGljYWxseSBmaW5kIHRoZSB2aXJ0dWFsIHdpcmVsZXNzIGRyaXZlciBpbXBsZW1lbnRhdGlvbnMgaW4gdGhlIGtlcm5lbCBzb3VyY2U/JiMzNDsgTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBnbyBkaWdnaW5nIHRocm91Z2ggdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9gIGRpcmVjdG9yeS4gVGhhdCYjMzk7cyB1c3VhbGx5IHRoZSBnby10byBzcG90IGZvciBhbnl0aGluZyBuZXR3b3JrLXJlbGF0ZWQsIGFuZCB3aXJlbGVzcyBmYWxscyBzcXVhcmVseSB3aXRoaW4gdGhhdCBkb21haW4uIFRoZSBnb2FsIGhlcmUgaXMgdG8gZ2V0IGEgbGF5IG9mIHRoZSBsYW5kOyBpZGVudGlmeSB3aGF0JiMzOTtzIGFscmVhZHkgYnVpbHQsIGdldCBhIGhpZ2gtbGV2ZWwgc2Vuc2Ugb2YgdGhlIGV4aXN0aW5nIHZpcnR1YWwgZHJpdmVyIGFyY2hpdGVjdHVyZXMsIGFuZCBzZWUgd2hhdCYjMzk7cyBiZWluZyBsZXZlcmFnZWQgaW4gdGhpcyBzcGFjZS4gSSYjMzk7bSBlc3NlbnRpYWxseSBtZW50YWxseSBjYXRhbG9naW5nIHdoYXQmIzM5O3MgYXZhaWxhYmxlIGZvciB2aXJ0dWFsIHdpcmVsZXNzIGZ1bmN0aW9uYWxpdHkgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIHRoZXJlIGJlZm9yZSBJIGV2ZW4gc3RhcnQgdG8gZm9ybXVsYXRlIGFueSBraW5kIG9mIHBsYW4uIExldCYjMzk7cyBzZWUgd2hhdCBpbnRlcmVzdGluZyB2aXJ0dWFsIGRyaXZlcnMgaGF2ZSBiZWVuIGltcGxlbWVudGVkIHdpdGhpbiB0aGF0IGRpcmVjdG9yeSEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTg6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O21hYzgwMjExX2h3c2ltLmgmIzM0OywKICAgICYjMzQ7bWFjODAyMTFfaHdzaW1faS5oJiMzNDssCiAgICAmIzM0O21hYzgwMjExX2h3c2ltX21haW4uYyYjMzQ7LAogICAgJiMzNDttYWM4MDIxMV9od3NpbV9uYW4uYyYjMzQ7LAogICAgJiMzNDttYWM4MDIxMV9od3NpbV9uYW4uaCYjMzQ7LAogICAgJiMzNDt2aXJ0X3dpZmkuYyYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDE4OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMjkyCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNvbnNpZGVyaW5nIFdpcmVsZXNzIERldmljZSBFbXVsYXRpb24qKgoKT2theSwgc28gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsYCBkaXJlY3RvcnkgaXMgcHJldHR5IGxpbWl0ZWQsIGp1c3QgYG1hYzgwMjExX2h3c2ltYCBhbmQgYHZpcnRfd2lmaWAuIEJ1dCB0aGF0JiMzOTtzIG5vdCB0aGUgd2hvbGUgc3Rvcnkgd2hlbiB3ZSYjMzk7cmUgdGhpbmtpbmcgYWJvdXQgc3l6a2FsbGVyJiMzOTtzIHBvdGVudGlhbCBmb3IgZW11bGF0aW9uLCByaWdodD8gV2hhdCBhYm91dCBVU0IgV2ktRmkgZGV2aWNlcz8gTm93LCAqc29tZSogVVNCIFdpLUZpIGRldmljZXMg4oCTIGFuZCBJJiMzOTttIHRoaW5raW5nIHNwZWNpZmljYWxseSBvZiB0aGluZ3MgbGlrZSB0aGUgcnRsODE4NyBvciBldmVuIGF0aDlrX2h0YyDigJMgKmNvdWxkKiB0aGVvcmV0aWNhbGx5IGJlIGVtdWxhdGVkIHRocm91Z2ggVVNCIFJhdyBHYWRnZXQsIGlmIHRoZSB1bmRlcmx5aW5nIHN5emthbGxlciBzdXBwb3J0IGlzIHRoZXJlLiBJdCYjMzk7cyBzb21ldGhpbmcgd29ydGggZXhwbG9yaW5nLgoKSG1tLCBpcyBpd2x3aWZpIGEgVVNCIGRldmljZT8gTm8sIEkmIzM5O20gcHJldHR5IHN1cmUgaXdsd2lmaSBpcyBQQ0llIG9ubHksIGZvdW5kIHVuZGVyIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvYC4gSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgdGhvdWdoLCBsZXQgbWUgZG91YmxlIGNoZWNrIGlmIHRoZXJlJiMzOTtzICphbnkqIGV2aWRlbmNlIG9mIGEgbm9uLVBDSWUgdHJhbnNwb3J0IGx1cmtpbmcgd2l0aGluIGl3bHdpZmkuIFRpbWUgdG8gZGlnIGEgYml0IGRlZXBlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTg6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXdsX3RyYW5zX2FsbG9jJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jPTI2MD1pbnQgaXdsYWduX3R4X3NrYihzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYy0zNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jOjM0NDpcdGRldl9jbWQgPSBpd2xfdHJhbnNfYWxsb2NfdHhfY21kKHByaXYtXHUwMDNldHJhbnMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYy0zNDUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYz0yMDI9c3RhdGljIHZvaWQgaXdsX3RyYW5zX3Jlc3RhcnRfd2soc3RydWN0IHdvcmtfc3RydWN0ICp3aylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTI2Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM6MjY3OnN0cnVjdCBpd2xfdHJhbnMgKml3bF90cmFuc19hbGxvYyh1bnNpZ25lZCBpbnQgcHJpdl9zaXplLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0yNjgtXHRcdFx0XHQgIHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jPTMzMj1JV0xfRVhQT1JUX1NZTUJPTChpd2xfdHJhbnNfc2VuZF9jbWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0zMzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jOjMzNDpzdHJ1Y3QgaXdsX2RldmljZV90eF9jbWQgKml3bF90cmFuc19hbGxvY190eF9jbWQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTMzNS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0zMzctfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYzozMzg6SVdMX0VYUE9SVF9TWU1CT0woaXdsX3RyYW5zX2FsbG9jX3R4X2NtZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTMzOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oPTgzOD1pd2xfdHJhbnNfZHVtcF9kYXRhKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCB1MzIgZHVtcF9tYXNrLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmgtODQxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaDo4NDI6c3RydWN0IGl3bF9kZXZpY2VfdHhfY21kICppd2xfdHJhbnNfYWxsb2NfdHhfY21kKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmgtODQzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmg9MTA4OT1zdGF0aWMgaW5saW5lIHZvaWQgaXdsX3RyYW5zX2ZpbmlzaF9zd19yZXNldChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oLTEwOTYtICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaDoxMDk3OnN0cnVjdCBpd2xfdHJhbnMgKml3bF90cmFuc19hbGxvYyh1bnNpZ25lZCBpbnQgcHJpdl9zaXplLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaC0xMDk4LVx0XHRcdFx0ICBzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdHguYz03NTA9c3RhdGljIGludCBpd2xfbWxkX3R4X21wZHUoc3RydWN0IGl3bF9tbGQgKm1sZCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90eC5jLTc2Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3R4LmM6NzY3Olx0ZGV2X3R4X2NtZCA9IGl3bF90cmFuc19hbGxvY190eF9jbWQobWxkLVx1MDAzZXRyYW5zKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3R4LmMtNzY4LVx0aWYgKHVubGlrZWx5KCFkZXZfdHhfY21kKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90eC5jPTU1Mz1pd2xfbXZtX3NldF90eF9wYXJhbXMoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90eC5jLTU2MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3R4LmM6NTYyOlx0ZGV2X2NtZCA9IGl3bF90cmFuc19hbGxvY190eF9jbWQobXZtLVx1MDAzZXRyYW5zKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3R4LmMtNTYzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYz0zODAwPWl3bF90cmFuc19wY2llX2FsbG9jKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy0zODA4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jOjM4MDk6XHR0cmFucyA9IGl3bF90cmFuc19hbGxvYyhzaXplb2Yoc3RydWN0IGl3bF90cmFuc19wY2llKSwgXHUwMDI2cGRldi1cdTAwM2VkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmMtMzgxMC1cdFx0XHRcdG1hY19jZmcpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxODo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjAwOQoJCQkJCQkJb3V0cHV0OiAxMjAKCQkJCQkJCXRob3VnaHRzOiA2MTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudDogVGhpcyBDb2RlIElzbiYjMzk7dCBGdXp6YWJsZSAoUENJZS1Cb3VuZCkqKgoKT2theSwgaGVyZSYjMzk7cyB0aGUgYnJlYWtkb3duLiBUaGUgdGV4dCBjb25maXJtcyB3aGF0IEkgc3VzcGVjdGVkOiBpdCYjMzk7cyBQQ0llLW9ubHkuIEkmIzM5O3ZlIHJlLXJlYWQgU2VjdGlvbiAxIGFuZCBTZWN0aW9uIDIgb2YgdGhlIHJlbGV2YW50IGRvY3VtZW50YXRpb24sIHdoaWNoIGVtcGhhc2l6ZXMgdGhhdCBmdXp6aW5nIGlzIG9ubHkgZWZmZWN0aXZlIG9uIGNvZGUgdGhhdCYjMzk7cyAqcmVhY2hhYmxlKiBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIENvZGUgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gUUVNVSBvciBHQ0UgaXMgYSBub24tc3RhcnRlci4KClNwZWNpZmljYWxseSwgdGhpcyBwYXRjaCBzZXJpZXMgdGFyZ2V0cyB0aGUgYGl3bHdpZmlgIGRyaXZlciwgcmVzaWRpbmcgZW50aXJlbHkgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2AuIFRoaXMgZHJpdmVyJiMzOTtzIGFsbCBhYm91dCBJbnRlbCBQQ0llIFdpLUZpIE5JQ3MsIHdoaWNoIG1lYW5zIHBoeXNpY2FsIEludGVsIGhhcmR3YXJlIOKAkyBzb21ldGhpbmcgc3RhbmRhcmQgdmlydHVhbCBtYWNoaW5lcyBjYW4mIzM5O3QgcmVwbGljYXRlLiBUaGUgbW9kaWZpY2F0aW9ucyBhZmZlY3QgYG1sZC9saW5rLmNgLCBgbWxkL21hYzgwMjExLmNgLCBhbmQgYG12bS9tYWM4MDIxMS5jYCwgc3BlY2lmaWNhbGx5OiBgaXdsX21sZF9hZGRfbGluaygpYCwgYGl3bF9tbGRfc2V0X2tleV9hZGQoKWAsIGFuZCBgX19pd2xfbXZtX21hY19zZXRfa2V5KClgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGFsbCB3aXRoaW4gdGhlIGBpd2xtdm1gIGFuZCBgaXdsbWxkYCBtb2R1bGVzLCBzbyBpdCYjMzk7cyBhbGwgUENJZS1ib3VuZC4KClRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nIHB1cnBvc2VzLiBJdCBmYWxscyBzcXVhcmVseSBpbnRvIHRoZSAmIzM0O3N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7IGNhdGVnb3J5IGRldGFpbGVkIGluIHRoZSBkb2N1bWVudGF0aW9uLgoKTm93LCBsZXQgbWUgZG91YmxlLWNoZWNrIHRoZSByZXF1aXJlZCBmaWVsZHMgZm9yIGBzZXQtcmVzdWx0c2A6CgoqICAgYFdvcnRoRnV6emluZ2A6IERlZmluaXRlbHkgYGZhbHNlYC4KKiAgIGBSZWFzb25pbmdgOiBUaGUgZXhwbGFuYXRpb24gaXMgcm9jayBzb2xpZDogdGhlIGNoYW5nZXMgYXJlIGNvbmZpbmVkIHRvIHRoZSBgaXdsd2lmaWAgZHJpdmVyLCB3aGljaCBpcyBhIGRyaXZlciBmb3IgSW50ZWwgUENJZSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJzIHRoYXQgcmVsaWVzIG9uIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSB2aXJ0dWFsaXphdGlvbiBlbnZpcm9ubWVudHMuCiogICBgRm9jdXNTeW1ib2xzYDogTm8gc3ltYm9scyB0byBmb2N1cyBvbiwgc28gYW4gZW1wdHkgYXJyYXkgYFtdYC4KKiAgIGBFbmFibGVDb25maWdzYDogTm90aGluZyBzcGVjaWZpYyB0byBlbmFibGUsIHRodXMgYW4gZW1wdHkgYXJyYXkgYFtdYC4KCkV2ZXJ5dGhpbmcmIzM5O3MgY2xlYXIuIE5vIG5lZWQgdG8gbG9vayBhbnkgZnVydGhlci4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDE5OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3ItcGF0aCBmcmVlaW5nIGxvZ2ljIChzd2l0Y2hpbmcga2ZyZWUgdG8ga2ZyZWVfcmN1KSBpbiBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpIChzcGVjaWZpY2FsbHkgaW4gbWxkIGFuZCBtdm0gbW9kdWxlcykuIGl3bHdpZmkgaXMgYSBoYXJkd2FyZSBkcml2ZXIgZm9yIEludGVsIFBDSWUgd2lyZWxlc3MgYWRhcHRlcnMgcmVxdWlyaW5nIHBoeXNpY2FsIFBDSWUgZGV2aWNlcyB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBlcnJvci1wYXRoIGZyZWVpbmcgbG9naWMgKHN3aXRjaGluZyBrZnJlZSB0byBrZnJlZV9yY3UpIGluIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkgKHNwZWNpZmljYWxseSBpbiBtbGQgYW5kIG12bSBtb2R1bGVzKS4gaXdsd2lmaSBpcyBhIGhhcmR3YXJlIGRyaXZlciBmb3IgSW50ZWwgUENJZSB3aXJlbGVzcyBhZGFwdGVycyByZXF1aXJpbmcgcGh5c2ljYWwgUENJZSBkZXZpY2VzIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDE5OjAwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxODo1ODoyMy45ODYxNjY2MTVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDM5NzQ0Njk5ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBlcnJvci1wYXRoIGZyZWVpbmcgbG9naWMgKHN3aXRjaGluZyBrZnJlZSB0byBrZnJlZV9yY3UpIGluIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkgKHNwZWNpZmljYWxseSBpbiBtbGQgYW5kIG12bSBtb2R1bGVzKS4gaXdsd2lmaSBpcyBhIGhhcmR3YXJlIGRyaXZlciBmb3IgSW50ZWwgUENJZSB3aXJlbGVzcyBhZGFwdGVycyByZXF1aXJpbmcgcGh5c2ljYWwgUENJZSBkZXZpY2VzIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDE4OjU4OjIzLjk4NjE3MzQwNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY0NzYwMDcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYzcxMGNlMTU2ZWEwOGIzYzcxNzVmNDUxNWViOGI5NTU0YjhlYjA4NFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIFNlcCAxNCAxODo1ODoyMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9saW5rLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9saW5rLmNcXG5pbmRleCA5NmUwNjk0MGIzNGM0Li41NWI4NDgwMTkyM2Q2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2xpbmsuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2xpbmsuY1xcbkBAIC01NDEsMTUgKzU0MSwxNSBAQCBpbnQgaXdsX21sZF9hZGRfbGluayhzdHJ1Y3QgaXdsX21sZCAqbWxkLFxcbiBcXHRyZXQgPSBpd2xfbWxkX2FkZF9saW5rX3RvX2Z3KG1sZCwgYnNzX2NvbmYpO1xcbiBcXHRpZiAocmV0KSB7XFxuIFxcdFxcdFJDVV9JTklUX1BPSU5URVIobWxkLVxcdTAwM2Vmd19pZF90b19ic3NfY29uZltsaW5rLVxcdTAwM2Vmd19pZF0sIE5VTEwpO1xcbi1cXHRcXHRSQ1VfSU5JVF9QT0lOVEVSKG1sZF92aWYtXFx1MDAzZWxpbmtbYnNzX2NvbmYtXFx1MDAzZWxpbmtfaWRdLCBOVUxMKTtcXG4gXFx0XFx0Z290byBmcmVlO1xcbiBcXHR9XFxuIFxcbiBcXHRyZXR1cm4gcmV0O1xcbiBcXG4gZnJlZTpcXG4rXFx0UkNVX0lOSVRfUE9JTlRFUihtbGRfdmlmLVxcdTAwM2VsaW5rW2Jzc19jb25mLVxcdTAwM2VsaW5rX2lkXSwgTlVMTCk7XFxuIFxcdGlmICghaXNfZGVmbGluaylcXG4tXFx0XFx0a2ZyZWUobGluayk7XFxuK1xcdFxcdGtmcmVlX3JjdShsaW5rLCByY3VfaGVhZCk7XFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tYWM4MDIxMS5jXFxuaW5kZXggM2E0YzhmZGE2OGQwYS4uNjkzZjIwOTJhNzgxNSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tYWM4MDIxMS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuY1xcbkBAIC0yMjY1LDcgKzIyNjUsNyBAQCBzdGF0aWMgaW50IGl3bF9tbGRfc2V0X2tleV9hZGQoc3RydWN0IGl3bF9tbGQgKm1sZCxcXG4gXFx0aWYgKHJldCkge1xcbiBcXHRcXHRpZiAocHRrX3BuKSB7XFxuIFxcdFxcdFxcdFJDVV9JTklUX1BPSU5URVIobWxkX3N0YS1cXHUwMDNlcHRrX3BuW2tleWlkeF0sIE5VTEwpO1xcbi1cXHRcXHRcXHRrZnJlZShwdGtfcG4pO1xcbitcXHRcXHRcXHRrZnJlZV9yY3UocHRrX3BuLCByY3VfaGVhZCk7XFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmNcXG5pbmRleCA1YmQyNDZlMzc5NDMyLi5iMGM0ZjI0NWM4OGZmIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWM4MDIxMS5jXFxuQEAgLTQzODUsNyArNDM4NSw3IEBAIHN0YXRpYyBpbnQgX19pd2xfbXZtX21hY19zZXRfa2V5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbiBcXHRcXHRcXHRrZXktXFx1MDAzZWh3X2tleV9pZHggPSBTVEFfS0VZX0lEWF9JTlZBTElEO1xcbiBcXHRcXHRcXHRpZiAocHRrX3BuKSB7XFxuIFxcdFxcdFxcdFxcdFJDVV9JTklUX1BPSU5URVIobXZtc3RhLVxcdTAwM2VwdGtfcG5ba2V5aWR4XSwgTlVMTCk7XFxuLVxcdFxcdFxcdFxcdGtmcmVlKHB0a19wbik7XFxuK1xcdFxcdFxcdFxcdGtmcmVlX3JjdShwdGtfcG4sIHJjdV9oZWFkKTtcXG4gXFx0XFx0XFx0fVxcbiBcXHRcXHRcXHQvKlxcbiBcXHRcXHRcXHQgKiBjYW4ndCBhZGQga2V5IGZvciBSWCwgYnV0IHdlIGRvbid0IG5lZWQgaXRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTg6NTg6MjQuNTUxNjA4MDQ2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoxMDM0MDkwMTM2NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGVycm9yLXBhdGggZnJlZWluZyBsb2dpYyAoc3dpdGNoaW5nIGtmcmVlIHRvIGtmcmVlX3JjdSkgaW4gZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaSAoc3BlY2lmaWNhbGx5IGluIG1sZCBhbmQgbXZtIG1vZHVsZXMpLiBpd2x3aWZpIGlzIGEgaGFyZHdhcmUgZHJpdmVyIGZvciBJbnRlbCBQQ0llIHdpcmVsZXNzIGFkYXB0ZXJzIHJlcXVpcmluZyBwaHlzaWNhbCBQQ0llIGRldmljZXMgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIENvbnNlcXVlbnRseSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjNzEwY2UxNTZlYTA4YjNjNzE3NWY0NTE1ZWI4Yjk1NTRiOGViMDg0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBTZXAgMTQgMTg6NTg6MjMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9saW5rLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9saW5rLmNcbmluZGV4IDk2ZTA2OTQwYjM0YzQuLjU1Yjg0ODAxOTIzZDYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9saW5rLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2xpbmsuY1xuQEAgLTU0MSwxNSArNTQxLDE1IEBAIGludCBpd2xfbWxkX2FkZF9saW5rKHN0cnVjdCBpd2xfbWxkICptbGQsXG4gXHRyZXQgPSBpd2xfbWxkX2FkZF9saW5rX3RvX2Z3KG1sZCwgYnNzX2NvbmYpO1xuIFx0aWYgKHJldCkge1xuIFx0XHRSQ1VfSU5JVF9QT0lOVEVSKG1sZC1cdTAwM2Vmd19pZF90b19ic3NfY29uZltsaW5rLVx1MDAzZWZ3X2lkXSwgTlVMTCk7XG4tXHRcdFJDVV9JTklUX1BPSU5URVIobWxkX3ZpZi1cdTAwM2VsaW5rW2Jzc19jb25mLVx1MDAzZWxpbmtfaWRdLCBOVUxMKTtcbiBcdFx0Z290byBmcmVlO1xuIFx0fVxuIFxuIFx0cmV0dXJuIHJldDtcbiBcbiBmcmVlOlxuK1x0UkNVX0lOSVRfUE9JTlRFUihtbGRfdmlmLVx1MDAzZWxpbmtbYnNzX2NvbmYtXHUwMDNlbGlua19pZF0sIE5VTEwpO1xuIFx0aWYgKCFpc19kZWZsaW5rKVxuLVx0XHRrZnJlZShsaW5rKTtcbitcdFx0a2ZyZWVfcmN1KGxpbmssIHJjdV9oZWFkKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tYWM4MDIxMS5jXG5pbmRleCAzYTRjOGZkYTY4ZDBhLi42OTNmMjA5MmE3ODE1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuY1xuQEAgLTIyNjUsNyArMjI2NSw3IEBAIHN0YXRpYyBpbnQgaXdsX21sZF9zZXRfa2V5X2FkZChzdHJ1Y3QgaXdsX21sZCAqbWxkLFxuIFx0aWYgKHJldCkge1xuIFx0XHRpZiAocHRrX3BuKSB7XG4gXHRcdFx0UkNVX0lOSVRfUE9JTlRFUihtbGRfc3RhLVx1MDAzZXB0a19wbltrZXlpZHhdLCBOVUxMKTtcbi1cdFx0XHRrZnJlZShwdGtfcG4pO1xuK1x0XHRcdGtmcmVlX3JjdShwdGtfcG4sIHJjdV9oZWFkKTtcbiBcdFx0fVxuIFxuIFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmNcbmluZGV4IDViZDI0NmUzNzk0MzIuLmIwYzRmMjQ1Yzg4ZmYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWM4MDIxMS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWM4MDIxMS5jXG5AQCAtNDM4NSw3ICs0Mzg1LDcgQEAgc3RhdGljIGludCBfX2l3bF9tdm1fbWFjX3NldF9rZXkoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRcdFx0a2V5LVx1MDAzZWh3X2tleV9pZHggPSBTVEFfS0VZX0lEWF9JTlZBTElEO1xuIFx0XHRcdGlmIChwdGtfcG4pIHtcbiBcdFx0XHRcdFJDVV9JTklUX1BPSU5URVIobXZtc3RhLVx1MDAzZXB0a19wbltrZXlpZHhdLCBOVUxMKTtcbi1cdFx0XHRcdGtmcmVlKHB0a19wbik7XG4rXHRcdFx0XHRrZnJlZV9yY3UocHRrX3BuLCByY3VfaGVhZCk7XG4gXHRcdFx0fVxuIFx0XHRcdC8qXG4gXHRcdFx0ICogY2FuJ3QgYWRkIGtleSBmb3IgUlgsIGJ1dCB3ZSBkb24ndCBuZWVkIGl0XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxODo1ODoyNC41NTE2MDk5NTdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo4OTk0MTIyNDczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2ggU2VyaWVzKipcblxuT2theSwgc28gSSd2ZSBnb3QgYSBwYXRjaCBzZXJpZXMgdG8gcmV2aWV3LiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIGRpZmYsIG9idmlvdXNseS4gSSBzZWUgY2hhbmdlcyB0byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbGluay5jYCwgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmNgLCBhbmQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmNgLiBSaWdodCwgc28gdGhpcyBpcyBmb3IgdGhlIGBpd2x3aWZpYCBkcml2ZXIuIEJ1dCB3YWl0LCBiZWZvcmUgSSBnZXQgdG9vIGRlZXAsIGEgY3J1Y2lhbCBxdWVzdGlvbiBwb3BzIGludG8gbXkgaGVhZDogY2FuIEkgYWN0dWFsbHkgKnRlc3QqIHRoaXMgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lP1xuXG5IYW5nIG9uIGEgc2Vjb25k4oCmIEkgbmVlZCB0byBjaGVjayB0aGUgcHJvamVjdCdzIGluc3RydWN0aW9ucyAoU2VjdGlvbiAyLCB0byBiZSBwcmVjaXNlKS4gVGhlIGluc3RydWN0aW9ucyBzcGVjaWZpY2FsbHkgY2FsbCBvdXQgaGFyZHdhcmUgZGVwZW5kZW5jaWVzLiBMZXQncyBzZWUuLi4gaXQgbWVudGlvbnMgdGhpbmdzIHRoYXQgYXJlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZTogdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgR1BVIGRyaXZlcnPigKYgT2theSwgbXkgcmFkYXIgaXMgdXAuIFRoaXMgaXMgdmVyeSBpbXBvcnRhbnQgd2hlbiBJIHRoaW5rIGFib3V0IGRyaXZlcnMuXG5cblNvLCB0aGUgbmV4dCBxdWVzdGlvbiBpcywgZG9lcyBgaXdsd2lmaWAgbmVlZCBwaHlzaWNhbCBJbnRlbCBXaUZpIGhhcmR3YXJlPyBJcyBpdCBlbXVsYXRlZCwgb3IgaXMgdGhlcmUgYSBzaW11bGF0aW9uIG1vZGU/IFdhaXQsIGRvZXMgYGl3bHdpZmlgIGhhdmUgYSBgbWFjODAyMTFfaHdzaW1gIGVxdWl2YWxlbnQ/IEkgbmVlZCB0byByZW1lbWJlciB0aGUgZGlmZmVyZW5jZTogYG1hYzgwMjExX2h3c2ltYCBpcyBhIHNvZnR3YXJlLWJhc2VkIGRyaXZlciBmb3IgbWFjODAyMTEsIHJpZ2h0PyBCdXQgYGl3bHdpZmlgIGlzIEludGVsJ3MgKnByb3ByaWV0YXJ5KiwgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGRlc2lnbmVkIGZvciBJbnRlbCBXaUZpIFBDSSBkZXZpY2VzLi4uIFNvLCBpdCBpcyBtZWFudCB0byBydW4gb24gKnJlYWwqIEludGVsIGhhcmR3YXJlLCBsaWtlIHRoZSBJbnRlbCBXaXJlbGVzcy1BQyBvciBXaS1GaSA2IEFYMjAwIGNhcmRzLlxuXG5IbW0uIFRoYXQncyBhIHByb2JsZW0uIFFFTVUgZGVmaW5pdGVseSAqZG9lc24ndCogZW11bGF0ZSBJbnRlbCBXaS1GaSBQQ0kgY2FyZHMuIE9rYXksIHNvIEknbSBub3QgZ29pbmcgdG8gYmUgYWJsZSB0byBqdXN0IHNwaW4gdXAgYSBWTSBhbmQgcmVwcm9kdWNlIHRoaXMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJ3MgYW55IGtpbmQgb2YgdmlydHVhbCBvciBzaW11bGF0ZWQgbW9kZSB3aXRoaW4gdGhlIGBpd2x3aWZpYCBkcml2ZXIgaXRzZWxmLiBUaW1lIHRvIGdvIGRpZ2dpbmcgdGhyb3VnaCB0aGUgY29kZSBhbmQgdGhlIEtjb25maWcgZmlsZXMuIFRoaXMgaXMgZ29pbmcgdG8gYmUgbXkgZmlyc3QgcHJpb3JpdHkgYmVmb3JlIEkgY29tbWl0IHRvIHRoZSByZXZpZXcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1OTIsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOTEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxODo1ODozMy41NDU3MzQ0NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjA1NjI5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVdMXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjI6Y29uZmlnIElXTFdJRklcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwgV2lyZWxlc3MgV2lGaSBOZXh0IEdlbiBBR04gLSBXaXJlbGVzcy1OL0FkdmFuY2VkLU4vVWx0aW1hdGUtTiAoaXdsd2lmaSkgXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTQ3PWlmIElXTFdJRklcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjQ5OmNvbmZpZyBJV0xXSUZJX0tVTklUX1RFU1RTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTUwLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjU4OmNvbmZpZyBJV0xXSUZJX0xFRFNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTktXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTY1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo2Njpjb25maWcgSVdMRFZNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTY3LVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBXaXJlbGVzcyBXaUZpIERWTSBGaXJtd2FyZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTczLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo3NDpjb25maWcgSVdMTVZNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTc1LVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBXaXJlbGVzcyBXaUZpIE1WTSBGaXJtd2FyZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo4NDpjb25maWcgSVdMTUxEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTg1LVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBXaXJlbGVzcyBXaUZpIE1MRCBGaXJtd2FyZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTk0LSMgZG9uJ3QgY2FsbCBpdCBfTU9EVUxFIC0tIHdpbGwgY29uZnVzZSBLY29uZmlnL2ZpeGRlcC8uLi5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6OTU6Y29uZmlnIElXTFdJRklfT1BNT0RFX01PRFVMQVJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctOTYtXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTEwNT1tZW51IFxcXCJEZWJ1Z2dpbmcgT3B0aW9uc1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMDc6Y29uZmlnIElXTFdJRklfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA4LVxcdGJvb2wgXFxcIkVuYWJsZSBmdWxsIGRlYnVnZ2luZyBvdXRwdXQgaW4gdGhlIGl3bHdpZmkgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTMxOmNvbmZpZyBJV0xXSUZJX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTMyLVxcdGJvb2wgXFxcIml3bHdpZmkgZGVidWdmcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTM5OmNvbmZpZyBJV0xXSUZJX0RFVklDRV9UUkFDSU5HXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTE0MC1cXHRib29sIFxcXCJpd2x3aWZpIGRldmljZSBhY2Nlc3MgdHJhY2luZ1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz0xNTg9ZW5kaWZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxNjA6Y29uZmlnIElXTE1FSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xNjEtXFx0dHJpc3RhdGUgXFxcIkludGVsIE1hbmFnZW1lbnQgRW5naW5lIGNvbW11bmljYXRpb24gb3ZlciBXTEFOXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxODo1ODozMy41OTc3OTc2ODlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoxMDE4MzUyMDIyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkludmVzdGlnYXRpbmcgSVdMV0lGSSBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgY29yZSBvZiB0aGlzLiBXaGVuIEknbSB3b3JraW5nIHdpdGggdGhlIEludGVsIHdpcmVsZXNzIGRyaXZlcnMsIHRoZSBmaXJzdCBwbGFjZSBJIGFsd2F5cyBnbyB0byB1bnJhdmVsIHRoZXNlIGRlcGVuZGVuY2llcyBpcyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnYC4gSXQncyBlc3NlbnRpYWxseSB0aGUgcm9hZG1hcCBmb3IgY29uZmlndXJpbmcgSVdMV0lGSSwgSVdMTVZNLCBhbmQgSVdMTUxELiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIGNvbXBvbmVudHMsIGZlYXR1cmVzLCBvciBrZXJuZWwgb3B0aW9ucyB0aGV5IHJlbHkgb24uIFRoaXMgYEtjb25maWdgIGZpbGUgaG9sZHMgdGhlIGFuc3dlcnM7IHRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gdGhlc2UgbW9kdWxlcywgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGJhc2VkIG9uIGhhcmR3YXJlIHN1cHBvcnQsIGFuZCBhbnkgc3BlY2lmaWMgZmVhdHVyZSBmbGFncyBJIG5lZWQgdG8gY29uc2lkZXIgZm9yIGVuYWJsaW5nIG9yIGRpc2FibGluZyBjb21wb25lbnRzLiBJJ20gbG9va2luZyBmb3IgdGhlIFwiaWZcIiBzdGF0ZW1lbnRzLCB0aGUgXCJkZXBlbmRzIG9uXCIgY2xhdXNlcywgYW5kIGFueSBcInNlbGVjdFwiIHN0YXRlbWVudHMgdGhhdCBtaWdodCBwdWxsIGluIG90aGVyIGJpdHMgb2YgdGhlIGtlcm5lbC4gVGhpcyBpbml0aWFsIHNjYW4gd2lsbCB0ZWxsIG1lIHRoZSBzdG9yeSBvZiBob3cgdGhlc2UgcGllY2VzIGZpdCB0b2dldGhlciBhbmQgaW5mb3JtIGFueSBzdWJzZXF1ZW50IGRlYnVnZ2luZyBvciBjb25maWd1cmF0aW9uIEkgbWlnaHQgbmVlZCB0byBkby5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQ3MCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDE4OjU4OjQzLjc4MTMyMTI3NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1NTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA5MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIElXTFdJRklcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJJbnRlbCBXaXJlbGVzcyBXaUZpIE5leHQgR2VuIEFHTiAtIFdpcmVsZXNzLU4vQWR2YW5jZWQtTi9VbHRpbWF0ZS1OIChpd2x3aWZpKSBcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIFBDSSBcXHUwMDI2XFx1MDAyNiBIQVNfSU9NRU0gXFx1MDAyNlxcdTAwMjYgQ0ZHODAyMTFcXG4gICA1OlxcdFxcdGRlcGVuZHMgb24gSVdMTUVJIHx8ICFJV0xNRUlcXG4gICA2OlxcdFxcdHNlbGVjdCBGV19MT0FERVJcXG4gICA3OlxcdFxcdGhlbHBcXG4gICA4OlxcdFxcdCAgU2VsZWN0IHRvIGJ1aWxkIHRoZSBkcml2ZXIgc3VwcG9ydGluZyB0aGU6XFxuICAgOTpcXHRcXG4gIDEwOlxcdFxcdCAgSW50ZWwgV2lyZWxlc3MgV2lGaSBMaW5rIE5leHQtR2VuIEFHTlxcbiAgMTE6XFx0XFxuICAxMjpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgdXNlIHdpdGggdGhlIGZvbGxvd2luZyBoYXJkd2FyZTpcXG4gIDEzOlxcdFxcdFxcdEludGVsIFdpcmVsZXNzIFdpRmkgTGluayA2MjUwQUdOIEFkYXB0ZXJcXG4gIDE0OlxcdFxcdFxcdEludGVsIDYwMDAgU2VyaWVzIFdpLUZpIEFkYXB0ZXJzICg2MjAwQUdOIGFuZCA2MzAwQUdOKVxcbiAgMTU6XFx0XFx0XFx0SW50ZWwgV2lGaSBMaW5rIDEwMDBCR05cXG4gIDE2OlxcdFxcdFxcdEludGVsIFdpcmVsZXNzIFdpRmkgNTE1MEFHTlxcbiAgMTc6XFx0XFx0XFx0SW50ZWwgV2lyZWxlc3MgV2lGaSA1MTAwQUdOLCA1MzAwQUdOLCBhbmQgNTM1MEFHTlxcbiAgMTg6XFx0XFx0XFx0SW50ZWwgNjAwNSBTZXJpZXMgV2ktRmkgQWRhcHRlcnNcXG4gIDE5OlxcdFxcdFxcdEludGVsIDYwMzAgU2VyaWVzIFdpLUZpIEFkYXB0ZXJzXFxuICAyMDpcXHRcXHRcXHRJbnRlbCBXaXJlbGVzcyBXaUZpIExpbmsgNjE1MEJHTiAyIEFkYXB0ZXJcXG4gIDIxOlxcdFxcdFxcdEludGVsIDEwMCBTZXJpZXMgV2ktRmkgQWRhcHRlcnMgKDEwMEJHTiBhbmQgMTMwQkdOKVxcbiAgMjI6XFx0XFx0XFx0SW50ZWwgMjAwMCBTZXJpZXMgV2ktRmkgQWRhcHRlcnNcXG4gIDIzOlxcdFxcdFxcdEludGVsIDcyNjAgV2ktRmkgQWRhcHRlclxcbiAgMjQ6XFx0XFx0XFx0SW50ZWwgMzE2MCBXaS1GaSBBZGFwdGVyXFxuICAyNTpcXHRcXHRcXHRJbnRlbCA3MjY1IFdpLUZpIEFkYXB0ZXJcXG4gIDI2OlxcdFxcdFxcdEludGVsIDgyNjAgV2ktRmkgQWRhcHRlclxcbiAgMjc6XFx0XFx0XFx0SW50ZWwgMzE2NSBXaS1GaSBBZGFwdGVyXFxuICAyODpcXHRcXG4gIDI5OlxcdFxcbiAgMzA6XFx0XFx0ICBUaGlzIGRyaXZlciB1c2VzIHRoZSBrZXJuZWwncyBtYWM4MDIxMSBzdWJzeXN0ZW0uXFxuICAzMTpcXHRcXG4gIDMyOlxcdFxcdCAgSW4gb3JkZXIgdG8gdXNlIHRoaXMgZHJpdmVyLCB5b3Ugd2lsbCBuZWVkIGEgZmlybXdhcmVcXG4gIDMzOlxcdFxcdCAgaW1hZ2UgZm9yIGl0LiBZb3UgY2FuIG9idGFpbiB0aGUgbWljcm9jb2RlIGZyb206XFxuICAzNDpcXHRcXG4gIDM1OlxcdFxcdCAgICAgICAgICBcXHUwMDNjaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvRHJpdmVycy9pd2x3aWZpXFx1MDAzZS5cXG4gIDM2OlxcdFxcbiAgMzc6XFx0XFx0ICBUaGUgZmlybXdhcmUgaXMgdHlwaWNhbGx5IGluc3RhbGxlZCBpbiAvbGliL2Zpcm13YXJlLiBZb3UgY2FuXFxuICAzODpcXHRcXHQgIGxvb2sgaW4gdGhlIGhvdHBsdWcgc2NyaXB0IC9ldGMvaG90cGx1Zy9maXJtd2FyZS5hZ2VudCB0b1xcbiAgMzk6XFx0XFx0ICBkZXRlcm1pbmUgd2hpY2ggZGlyZWN0b3J5IEZJUk1XQVJFX0RJUiBpcyBzZXQgdG8gd2hlbiB0aGUgc2NyaXB0XFxuICA0MDpcXHRcXHQgIHJ1bnMuXFxuICA0MTpcXHRcXG4gIDQyOlxcdFxcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSB0aGUgZHJpdmVyIGFzIGEgbW9kdWxlICggPSBjb2RlIHdoaWNoIGNhbiBiZVxcbiAgNDM6XFx0XFx0ICBpbnNlcnRlZCBpbiBhbmQgcmVtb3ZlZCBmcm9tIHRoZSBydW5uaW5nIGtlcm5lbCB3aGVuZXZlciB5b3Ugd2FudCksXFxuICA0NDpcXHRcXHQgIHNheSBNIGhlcmUgYW5kIHJlYWQgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9rYnVpbGQvbW9kdWxlcy5yc3RcXHUwMDNlLiAgVGhlXFxuICA0NTpcXHRcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBpd2x3aWZpLlxcbiAgNDY6XFx0XFxuICA0NzpcXHRpZiBJV0xXSUZJXFxuICA0ODpcXHRcXG4gIDQ5OlxcdGNvbmZpZyBJV0xXSUZJX0tVTklUX1RFU1RTXFxuICA1MDpcXHRcXHR0cmlzdGF0ZVxcbiAgNTE6XFx0XFx0ZGVwZW5kcyBvbiBLVU5JVFxcbiAgNTI6XFx0XFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG4gIDUzOlxcdFxcdGhlbHBcXG4gIDU0OlxcdFxcdCAgRW5hYmxlIHRoaXMgb3B0aW9uIGZvciBpd2x3aWZpIGt1bml0IHRlc3RzLlxcbiAgNTU6XFx0XFxuICA1NjpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICA1NzpcXHRcXG4gIDU4OlxcdGNvbmZpZyBJV0xXSUZJX0xFRFNcXG4gIDU5OlxcdFxcdGJvb2xcXG4gIDYwOlxcdFxcdGRlcGVuZHMgb24gTEVEU19DTEFTUz15IHx8IExFRFNfQ0xBU1M9TUFDODAyMTFcXG4gIDYxOlxcdFxcdGRlcGVuZHMgb24gSVdMTVZNIHx8IElXTERWTVxcbiAgNjI6XFx0XFx0c2VsZWN0IExFRFNfVFJJR0dFUlNcXG4gIDYzOlxcdFxcdHNlbGVjdCBNQUM4MDIxMV9MRURTXFxuICA2NDpcXHRcXHRkZWZhdWx0IHlcXG4gIDY1OlxcdFxcbiAgNjY6XFx0Y29uZmlnIElXTERWTVxcbiAgNjc6XFx0XFx0dHJpc3RhdGUgXFxcIkludGVsIFdpcmVsZXNzIFdpRmkgRFZNIEZpcm13YXJlIHN1cHBvcnRcXFwiXFxuICA2ODpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICA2OTpcXHRcXHRoZWxwXFxuICA3MDpcXHRcXHQgIFRoaXMgaXMgdGhlIGRyaXZlciB0aGF0IHN1cHBvcnRzIHRoZSBEVk0gZmlybXdhcmUuIFRoZSBsaXN0XFxuICA3MTpcXHRcXHQgIG9mIHRoZSBkZXZpY2VzIHRoYXQgdXNlIHRoaXMgZmlybXdhcmUgaXMgYXZhaWxhYmxlIGhlcmU6XFxuICA3MjpcXHRcXHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL2RyaXZlcnMvaXdsd2lmaSNmaXJtd2FyZVxcbiAgNzM6XFx0XFxuICA3NDpcXHRjb25maWcgSVdMTVZNXFxuICA3NTpcXHRcXHR0cmlzdGF0ZSBcXFwiSW50ZWwgV2lyZWxlc3MgV2lGaSBNVk0gRmlybXdhcmUgc3VwcG9ydFxcXCJcXG4gIDc2OlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgNzc6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgNzg6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAgNzk6XFx0XFx0aGVscFxcbiAgODA6XFx0XFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgdGhhdCBzdXBwb3J0cyB0aGUgTVZNIGZpcm13YXJlLiBUaGUgbGlzdFxcbiAgODE6XFx0XFx0ICBvZiB0aGUgZGV2aWNlcyB0aGF0IHVzZSB0aGlzIGZpcm13YXJlIGlzIGF2YWlsYWJsZSBoZXJlOlxcbiAgODI6XFx0XFx0ICBodHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi91c2Vycy9kcml2ZXJzL2l3bHdpZmkjZmlybXdhcmVcXG4gIDgzOlxcdFxcbiAgODQ6XFx0Y29uZmlnIElXTE1MRFxcbiAgODU6XFx0XFx0dHJpc3RhdGUgXFxcIkludGVsIFdpcmVsZXNzIFdpRmkgTUxEIEZpcm13YXJlIHN1cHBvcnRcXFwiXFxuICA4NjpcXHRcXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcXG4gIDg3OlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gIDg4OlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG4gIDg5OlxcdFxcdGhlbHBcXG4gIDkwOlxcdFxcdCAgVGhpcyBpcyB0aGUgZHJpdmVyIHRoYXQgc3VwcG9ydHMgZmlybXdhcmVzIG9mIE1MRCBjYXBhYmxlIGRldmljZXMuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDE4OjU4OjQzLjc4MTM5OTg5NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjI5ODM4OTc2OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBpd2x3aWZpIERyaXZlciBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJIHNlZSBgSVdMV0lGSWAgbmVlZHMgYFBDSWAsIGBIQVNfSU9NRU1gLCBhbmQgYENGRzgwMjExYC4gVGhhdCBpbW1lZGlhdGVseSBmbGFncyBhIHBvdGVudGlhbCBwaHlzaWNhbCBQQ0kgZHJpdmVyIHJlbGF0aW9uc2hpcC4gTWFrZXMgc2Vuc2UsIGdpdmVuIGl0J3MgZGVhbGluZyB3aXRoIGEgd2lyZWxlc3MgaW50ZXJmYWNlLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBjb25maXJtIHRoaXMsIHNvIEkgbmVlZCB0byBjaGVjayB0aGUgc291cmNlIGNvZGUuIExldCdzIHN0YXJ0IGJ5IGxvb2tpbmcgaW50byB0aGUgbGlrZWx5IHN1c3BlY3QgZGlyZWN0b3J5LCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2AsIG9yIHNvbWV0aGluZyBzaW1pbGFyIHdpdGhpbiB0aGUgaXdsd2lmaSBkaXJlY3Rvcnkgc3RydWN0dXJlLiBUaGF0IHNob3VsZCBiZSB0aGUgYmVzdCBwbGFjZSB0byBmaW5kIHRoZSBQQ0ktc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gZGV0YWlscyBpZiBteSBpbml0aWFsIGh1bmNoIGlzIGNvcnJlY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxNTEsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDE4OjU4OjQ2Ljc2NTI5OTc2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTI2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogW1xuICAgIFwiaXdsLWFnbi1ody5oXCIsXG4gICAgXCJpd2wtY29uZmlnLmhcIixcbiAgICBcIml3bC1jc3IuaFwiLFxuICAgIFwiaXdsLWRiZy10bHYuY1wiLFxuICAgIFwiaXdsLWRiZy10bHYuaFwiLFxuICAgIFwiaXdsLWRlYnVnLmNcIixcbiAgICBcIml3bC1kZWJ1Zy5oXCIsXG4gICAgXCJpd2wtZGV2dHJhY2UtZGF0YS5oXCIsXG4gICAgXCJpd2wtZGV2dHJhY2UtaW8uaFwiLFxuICAgIFwiaXdsLWRldnRyYWNlLWl3bHdpZmkuaFwiLFxuICAgIFwiaXdsLWRldnRyYWNlLW1zZy5oXCIsXG4gICAgXCJpd2wtZGV2dHJhY2UtdWNvZGUuaFwiLFxuICAgIFwiaXdsLWRldnRyYWNlLmNcIixcbiAgICBcIml3bC1kZXZ0cmFjZS5oXCIsXG4gICAgXCJpd2wtZHJ2LmNcIixcbiAgICBcIml3bC1kcnYuaFwiLFxuICAgIFwiaXdsLWZoLmhcIixcbiAgICBcIml3bC1pby5jXCIsXG4gICAgXCJpd2wtaW8uaFwiLFxuICAgIFwiaXdsLW1vZHBhcmFtcy5oXCIsXG4gICAgXCJpd2wtbnZtLXBhcnNlLmNcIixcbiAgICBcIml3bC1udm0tcGFyc2UuaFwiLFxuICAgIFwiaXdsLW52bS11dGlscy5jXCIsXG4gICAgXCJpd2wtbnZtLXV0aWxzLmhcIixcbiAgICBcIml3bC1vcC1tb2RlLmhcIixcbiAgICBcIml3bC1waHktZGIuY1wiLFxuICAgIFwiaXdsLXBoeS1kYi5oXCIsXG4gICAgXCJpd2wtcHJwaC5oXCIsXG4gICAgXCJpd2wtc2NkLmhcIixcbiAgICBcIml3bC10cmFucy5jXCIsXG4gICAgXCJpd2wtdHJhbnMuaFwiLFxuICAgIFwiaXdsLXV0aWxzLmNcIixcbiAgICBcIml3bC11dGlscy5oXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IFtcbiAgICBcImNmZ1wiLFxuICAgIFwiZHZtXCIsXG4gICAgXCJmd1wiLFxuICAgIFwibWVpXCIsXG4gICAgXCJtbGRcIixcbiAgICBcIm12bVwiLFxuICAgIFwicGNpZVwiLFxuICAgIFwidGVzdHNcIlxuICBdXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxODo1ODo0Ni43NjUzOTA4OFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjI1MjkwOTIzNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgaXdsd2lmaSBEcml2ZXIncyBBcmNoaXRlY3R1cmUqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMgd2hldGhlciB0aGUgYGl3bHdpZmlgIGRyaXZlciBpcyBzb2xlbHkgUENJLWJhc2VkLCBvciBpZiBpdCBpbmNvcnBvcmF0ZXMgYW55IHNpbXVsYXRlZCBidXMgaW50ZXJmYWNlcyBsaWtlIFVTQiBnYWRnZXQgb3IgdmlydGlvLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYXJjaGl0ZWN0dXJhbCB1bmRlcnBpbm5pbmdzLiBUaGUgZmFzdGVzdCB3YXkgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoaXMgaXMgdG8gY2hlY2sgdGhlIGBNYWtlZmlsZWAgYW5kIHRoZSBgcGNpZWAgZGlyZWN0b3J5IHdpdGhpbiB0aGUgZHJpdmVyJ3Mgc291cmNlLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgc29saWQgY2x1ZSBhYm91dCBob3cgdGhlIGRyaXZlciBpcyBzdHJ1Y3R1cmVkIGFuZCB3aGF0IGJ1cyBpbnRlcmZhY2VzIGl0J3MgZGVzaWduZWQgdG8gaW50ZXJhY3Qgd2l0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzc4NiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxLCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxODo1ODo0OS4yOTQ0ODUyMzJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTg4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJjdHh0LWluZm8tdjIuY1wiLFxuICAgIFwiY3R4dC1pbmZvLmNcIixcbiAgICBcImRydi5jXCIsXG4gICAgXCJpd2wtY29udGV4dC1pbmZvLXYyLmhcIixcbiAgICBcIml3bC1jb250ZXh0LWluZm8uaFwiLFxuICAgIFwidXRpbHMuY1wiLFxuICAgIFwidXRpbHMuaFwiXG4gIF0sXG4gIFwiU3ViZGlyc1wiOiBbXG4gICAgXCJnZW4xXzJcIlxuICBdXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxODo1ODo0OS4yOTQ1NTM0NzJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NTU4MzcwMDA4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIGBwY2lfcmVnaXN0ZXJfZHJpdmVyYCBpbiB0aGUgaXdsd2lmaSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGl3bHdpZmkgZHJpdmVyIGlzIGludGVyYWN0aW5nIHdpdGggdGhlIFBDSSBzdWJzeXN0ZW0uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBwaW5wb2ludCB3aGVyZSB0aGUgZHJpdmVyIGlzIHJlZ2lzdGVyZWQuIGBwY2lfcmVnaXN0ZXJfZHJpdmVyYCBpcyB0aGUgb2J2aW91cyBwbGFjZSB0byBzdGFydC4gVGhpcyBmdW5jdGlvbiBpcyB0aGUgY29ybmVyc3RvbmUgb2YgdGhlIFBDSSBkZXZpY2UgcHJvYmUgYW5kIGF0dGFjaCBwcm9jZXNzLCBzbyBmaW5kaW5nIGl0cyB1c2Ugd2l0aGluIHRoZSBpd2x3aWZpIGRyaXZlciBkaXJlY3RvcnkgKGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2ApIGlzIHRoZSBmaXJzdCBsb2dpY2FsIHN0ZXAuIFRoaXMgd2lsbCBnaXZlIG1lIGEgY2xlYXIgZW50cnkgcG9pbnQgaW50byB1bmRlcnN0YW5kaW5nIHRoZSBkZXZpY2UgaW5pdGlhbGl6YXRpb24gYW5kIGF0dGFjaG1lbnQgc2VxdWVuY2Ugd2l0aGluIHRoaXMgY29tcGxleCBkcml2ZXIuIEZyb20gdGhlcmUsIEkgY2FuIHRyYWNlIHRoZSBjb250cm9sIGZsb3cgdG8gdW5kZXJzdGFuZCB0aGUgZGV2aWNlJ3MgbGlmZWN5Y2xlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MDY0LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDE4OjU4OjU0Ljg3ODI1NTQ4N1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk5MDc4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpX3JlZ2lzdGVyX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jPTIxMDk9c3RhdGljIGludCBfX2luaXQgaXdsX2Rydl9pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0yMTIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jOjIxMjE6XFx0ZXJyID0gaXdsX3BjaV9yZWdpc3Rlcl9kcml2ZXIoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0yMTIyLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oPTExNDE9c3RhdGljIGlubGluZSB2b2lkIGl3bF90cmFuc19ub3RpZnlfZndfZXJyb3Ioc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oLTExNDgtICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmg6MTE0OTppbnQgX19tdXN0X2NoZWNrIGl3bF9wY2lfcmVnaXN0ZXJfZHJpdmVyKHZvaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmgtMTE1MC12b2lkIGl3bF9wY2lfdW5yZWdpc3Rlcl9kcml2ZXIodm9pZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM9MTMzOT1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgaXdsX3BjaV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmMtMTM0Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM6MTM0ODppbnQgX19tdXN0X2NoZWNrIGl3bF9wY2lfcmVnaXN0ZXJfZHJpdmVyKHZvaWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTEzNDkte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy0xMzUwLVxcdGludCByZXQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jOjEzNTE6XFx0cmV0ID0gcGNpX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2aXdsX3BjaV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy0xMzUyLVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDE4OjU4OjU0LjkyODE2ODY3N1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjozNjY1Njg0MTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgSW50ZWwgV2lGaSBEcml2ZXIgUmVnaXN0cmF0aW9uKipcblxuT2theSwgc28gYGl3bF9wY2lfZHJpdmVyYCBpcyByZWdpc3RlcmluZyBpdHNlbGYgYXMgYSBQQ0kgZHJpdmVyIGZvciBJbnRlbCBXaUZpIGhhcmR3YXJlLiBUaGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBicm9hZGVyIHBpY3R1cmUgdGhvdWdoLiBJJ20gY3VyaW91cyBpZiB0aGUgYGl3bHdpZmlgIHN0YWNrIGlzIHJlZ2lzdGVyaW5nIG9uIGFueSAqb3RoZXIqIGJ1c2VzIGFzIHdlbGwuIEl0J3MgZ29vZCBwcmFjdGljZSB0byB1bmRlcnN0YW5kIGFsbCB0aGUgcG9pbnRzIG9mIGF0dGFjaG1lbnQuIExldCdzIHNlZS4uLiB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgaXMgcHJvYmFibHkgdGhlIGluaXRpYWxpemF0aW9uIHJvdXRpbmUsIHdoaWNoLCBmcm9tIHdoYXQgSSByZW1lbWJlciBvZiB0aGUgaXdsd2lmaSBjb2RlYmFzZSwgc2hvdWxkIGJlIGBpd2xfZHJ2X2luaXRgLiBUaW1lIHRvIGdvIGNoZWNrIHRoYXQgb3V0IGFuZCBzZWUgd2hhdCBvdGhlciBidXMgdHlwZXMgYXJlIGJlaW5nIGhhbmRsZWQuIEkgd2FudCB0byBidWlsZCBhIGNvbXBsZXRlIG1lbnRhbCBtYXAgb2YgdGhlIGRyaXZlcidzIGludGVyZmFjZSBwb2ludHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4NDEsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxODo1ODo1OC41OTM4NjAwMTFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgxOTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIxMDAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjIxMDA6XFx0XFx0XFx0XFx0X2l3bF9vcF9tb2RlX3N0b3AoZHJ2KTtcXG4yMTAxOlxcdFxcbjIxMDI6XFx0XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZpd2x3aWZpX29wbW9kZV90YWJsZV9tdHgpO1xcbjIxMDM6XFx0XFx0XFx0cmV0dXJuO1xcbjIxMDQ6XFx0XFx0fVxcbjIxMDU6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZpd2x3aWZpX29wbW9kZV90YWJsZV9tdHgpO1xcbjIxMDY6XFx0fVxcbjIxMDc6XFx0SVdMX0VYUE9SVF9TWU1CT0woaXdsX29wbW9kZV9kZXJlZ2lzdGVyKTtcXG4yMTA4OlxcdFxcbjIxMDk6XFx0c3RhdGljIGludCBfX2luaXQgaXdsX2Rydl9pbml0KHZvaWQpXFxuMjExMDpcXHR7XFxuMjExMTpcXHRcXHRpbnQgaSwgZXJyO1xcbjIxMTI6XFx0XFxuMjExMzpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShpd2x3aWZpX29wbW9kZV90YWJsZSk7IGkrKylcXG4yMTE0OlxcdFxcdFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZpd2x3aWZpX29wbW9kZV90YWJsZVtpXS5kcnYpO1xcbjIxMTU6XFx0XFxuMjExNjpcXHQjaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdGU1xcbjIxMTc6XFx0XFx0LyogQ3JlYXRlIHRoZSByb290IG9mIGl3bHdpZmkgZGVidWdmcyBzdWJzeXN0ZW0uICovXFxuMjExODpcXHRcXHRpd2xfZGJnZnNfcm9vdCA9IGRlYnVnZnNfY3JlYXRlX2RpcihEUlZfTkFNRSwgTlVMTCk7XFxuMjExOTpcXHQjZW5kaWZcXG4yMTIwOlxcdFxcbjIxMjE6XFx0XFx0ZXJyID0gaXdsX3BjaV9yZWdpc3Rlcl9kcml2ZXIoKTtcXG4yMTIyOlxcdFxcdGlmIChlcnIpXFxuMjEyMzpcXHRcXHRcXHRnb3RvIGNsZWFudXBfZGVidWdmcztcXG4yMTI0OlxcdFxcbjIxMjU6XFx0XFx0cmV0dXJuIDA7XFxuMjEyNjpcXHRcXG4yMTI3OlxcdGNsZWFudXBfZGVidWdmczpcXG4yMTI4OlxcdCNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTXFxuMjEyOTpcXHRcXHRkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoaXdsX2RiZ2ZzX3Jvb3QpO1xcbjIxMzA6XFx0I2VuZGlmXFxuMjEzMTpcXHRcXHRyZXR1cm4gZXJyO1xcbjIxMzI6XFx0fVxcbjIxMzM6XFx0bW9kdWxlX2luaXQoaXdsX2Rydl9pbml0KTtcXG4yMTM0OlxcdFxcbjIxMzU6XFx0c3RhdGljIHZvaWQgX19leGl0IGl3bF9kcnZfZXhpdCh2b2lkKVxcbjIxMzY6XFx0e1xcbjIxMzc6XFx0XFx0aXdsX3BjaV91bnJlZ2lzdGVyX2RyaXZlcigpO1xcbjIxMzg6XFx0XFx0aXdsX3RyYW5zX2ZyZWVfcmVzdGFydF9saXN0KCk7XFxuMjEzOTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTg6NTg6NTguNTk0MDUxNDQxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjIxNjAwNzAwNTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBhbmQgdGhlIHN5c3RlbSBpcyAqb25seSogcmVnaXN0ZXJpbmcgdGhlIFBDSSBkcml2ZXIsIGBpd2xfcGNpX2RyaXZlcmAuIFRoYXQncyBhIGJpdCBvZGQuIEknZCBleHBlY3QgdG8gc2VlIG1vcmUsIHBlcmhhcHMgc29tZSBpbmRpY2F0aW9uIG9mIGEgYnJvYWRlciBhcmNoaXRlY3R1cmUgb3IgZXZlbiB2aXJ0dWFsIGNvbXBvbmVudHMgZGVwZW5kaW5nIG9uIHRoZSB0ZXN0aW5nIG9yIGltcGxlbWVudGF0aW9uLlxuXG5XYWl0IGEgc2Vjb25k4oCmIGlzIHRoZXJlIGFueSBzb3J0IG9mIHZpcnR1YWwgaGFyZHdhcmUgb3IgbW9jayBkcml2ZXIgaW4gdGhlIGl3bHdpZmkgY29kZWJhc2UsIG1heWJlIHVzZWQgZm9yIHRlc3Rpbmcgb3Igc3BlY2lmaWMgdXNlIGNhc2VzPyBJJ3ZlIHNlZW4gdGhhdCBhcHByb2FjaCBiZWZvcmUsIGVzcGVjaWFsbHkgaW4gY29tcGxleCBkcml2ZXIgZmFtaWxpZXMuIExldCBtZSBxdWlja2x5IHNjYW4gdGhyb3VnaCB0aGUgYHRlc3RzL2AgZGlyZWN0b3J5IHdpdGhpbiB0aGUgaXdsd2lmaSBjb2RlLiBUaGF0J3MgdXN1YWxseSB3aGVyZSB0aGVzZSBzb3J0cyBvZiB0aGluZ3MgYXJlIHN0YXNoZWQuIEknbGwgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBhcmUgYW55IHNpZ25zIG9mIHNpbXVsYXRlZCBoYXJkd2FyZSBlbnZpcm9ubWVudHMgdG8gZGV0ZXJtaW5lIGlmIHRoZSBQQ0kgZHJpdmVyIGlzIHRoZSBvbmx5IHBpZWNlIG9mIHRoZSBwdXp6bGUsIG9yIHBhcnQgb2YgYSBiaWdnZXIgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5Njg2LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxODo1OTowMC43NTQxMjQwOThaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjIwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvdGVzdHNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogW1xuICAgIFwiZGV2aW5mby5jXCIsXG4gICAgXCJtb2R1bGUuY1wiLFxuICAgIFwibnZtX3BhcnNlLmNcIixcbiAgICBcInV0aWxzLmNcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogbnVsbFxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTg6NTk6MDAuNzU0MTgyMjg5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjk5MDM5NTAzNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCdzIEltcGFjdCBvbiB0aGUgSW50ZWwgV2lyZWxlc3MgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIEkgc2VlIGl0J3MgdG91Y2hpbmcgYSBmZXcgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhlIEludGVsIHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGl3bHdpZmlgIG1vZHVsZS4gVGhlIHByZXNlbmNlIG9mIGB0ZXN0cy9gIGFuZCB0aGUgbWVudGlvbiBvZiBgSVdMV0lGSV9LVU5JVF9URVNUU2AgaW5kaWNhdGVzIHRoaXMgaXMgcmVsYXRlZCB0byBLVW5pdCB0ZXN0cywgd2hpY2ggaXMgdXNlZnVsIGNvbnRleHQuIEhvd2V2ZXIsIG15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHVuZGVyc3RhbmRpbmcgdGhlIGZ1bGwgc2NvcGUgb2YgdGhpcyBjaGFuZ2UsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgZXhhY3RseSB0aGUgcGF0Y2ggbW9kaWZpZXMuXG5cbkxldCBtZSB0YWtlIGEgbG9vayBhdCB0aGUga2V5IGZ1bmN0aW9ucyBhZmZlY3RlZDogSSBzZWUgYGl3bF9tbGRfYWRkX2xpbmtgIGluIGBsaW5rLmNgLCBgaXdsX21sZF9zZXRfa2V5X2FkZGAgaW4gYG1hYzgwMjExLmNgLCBhbmQgYF9faXdsX212bV9tYWNfc2V0X2tleWAgaW4gdGhlIGBtdm0vbWFjODAyMTEuY2AgZmlsZS4gUmlnaHQsIHRoZSBNTEQgKE1lc2ggTGluayBEaXNjb3ZlcnkpIHNlZW1zIHRvIGJlIGludm9sdmVkIGFuZCBhIGNoYW5nZSBpbiBob3cga2V5cyBhcmUgaGFuZGxlZC5cblxuTm93LCB3aGVyZSBpcyBgaXdsX21sZF9hZGRfbGlua2AgYWN0dWFsbHkgY2FsbGVkIGZyb20/IFRoYXQncyB0aGUgbmV4dCBjcml0aWNhbCBxdWVzdGlvbi4gS25vd2luZyB0aGUgY2FsbCBncmFwaCB3aWxsIGhlbHAgdG8gdW5kZXJzdGFuZCB0aGUgYnJvYWRlciBpbXBsaWNhdGlvbnMgb2YgdGhlc2UgY2hhbmdlcy4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgZnVuY3Rpb24gdG8gZ2V0IGEgZ29vZCBoYW5kbGUgb24gd2hlcmUgaXQgaXMgYmVpbmcgdXNlZCBhbmQgd2hhdCB0aGUgcG90ZW50aWFsIGltcGFjdCBpcy4gTGV0J3MgZGlnIGRlZXBlciB0byBzZWUgd2hlcmUgdGhhdCBmdW5jdGlvbiBpcyB1c2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5OTg4LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc3LCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxODo1OToxMC42NTgxMzQ4ODhaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5ODUxODMzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpd2xfbWxkX2FkZF9saW5rXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvZGVidWdmcy5jPTEwMTM9TElOS19ERUJVR0ZTX1JFQURfRklMRV9PUFMoZndfaWQsIDY0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9kZWJ1Z2ZzLmMtMTAxNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9kZWJ1Z2ZzLmM6MTAxNTp2b2lkIGl3bF9tbGRfYWRkX2xpbmtfZGVidWdmcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9kZWJ1Z2ZzLmMtMTAxNi1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvZGVidWdmcy5jPTExNTU9TElOS19TVEFfREVCVUdGU19SRUFEX09QUyhmd19pZCwgNjQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2RlYnVnZnMuYy0xMTU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2RlYnVnZnMuYzoxMTU3OnZvaWQgaXdsX21sZF9hZGRfbGlua19zdGFfZGVidWdmcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9kZWJ1Z2ZzLmMtMTE1OC1cXHRcXHRcXHRcXHQgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9saW5rLmM9Mzg9aW50IGl3bF9tbGRfc2VuZF9saW5rX2NtZChzdHJ1Y3QgaXdsX21sZCAqbWxkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbGluay5jLTU4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2xpbmsuYzo1OTpzdGF0aWMgaW50IGl3bF9tbGRfYWRkX2xpbmtfdG9fZncoc3RydWN0IGl3bF9tbGQgKm1sZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9saW5rLmMtNjAtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpsaW5rX2NvbmYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9saW5rLmM9NTAwPWl3bF9tbGRfaW5pdF9saW5rKHN0cnVjdCBpd2xfbWxkICptbGQsIHN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKmxpbmssXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9saW5rLmMtNTE0LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2xpbmsuYzo1MTU6aW50IGl3bF9tbGRfYWRkX2xpbmsoc3RydWN0IGl3bF9tbGQgKm1sZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9saW5rLmMtNTE2LVxcdFxcdCAgICAgc3RydWN0IGllZWU4MDIxMV9ic3NfY29uZiAqYnNzX2NvbmYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9saW5rLmMtNTQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2xpbmsuYzo1NDE6XFx0cmV0ID0gaXdsX21sZF9hZGRfbGlua190b19mdyhtbGQsIGJzc19jb25mKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9saW5rLmMtNTQyLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2xpbmsuaD0xMjA9aW50IGl3bF9tbGRfc2VuZF9saW5rX2NtZChzdHJ1Y3QgaXdsX21sZCAqbWxkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbGluay5oLTEyMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9saW5rLmg6MTI0OmludCBpd2xfbWxkX2FkZF9saW5rKHN0cnVjdCBpd2xfbWxkICptbGQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbGluay5oLTEyNS1cXHRcXHQgICAgIHN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKmJzc19jb25mKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmM9NjU5PWludCBpd2xfbWxkX21hYzgwMjExX2FkZF9pbnRlcmZhY2Uoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tYWM4MDIxMS5jLTY5OC1cXHRpZiAodmlmLVxcdTAwM2V0eXBlICE9IE5MODAyMTFfSUZUWVBFX05BTiBcXHUwMDI2XFx1MDAyNiAhaWVlZTgwMjExX3ZpZl9pc19tbGQodmlmKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmM6Njk5OlxcdFxcdHJldCA9IGl3bF9tbGRfYWRkX2xpbmsobWxkLCBcXHUwMDI2dmlmLVxcdTAwM2Vic3NfY29uZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYy03MDAtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmM9MTI0Nz12b2lkIGl3bF9tbGRfdW5hc3NpZ25fdmlmX2NoYW5jdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tYWM4MDIxMS5jLTEyOTAtXFx0XFx0aXdsX21sZF9yZW1vdmVfbGluayhtbGQsIGxpbmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmM6MTI5MTpcXHRcXHRpd2xfbWxkX2FkZF9saW5rKG1sZCwgbGluayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYy0xMjkyLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmM9MjcwNj1pd2xfbWxkX2NoYW5nZV92aWZfbGlua3Moc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tYWM4MDIxMS5jLTI3NDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYzoyNzQ2OlxcdFxcdFxcdGVyciA9IGl3bF9tbGRfYWRkX2xpbmsobWxkLCBsaW5rX2NvbmYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmMtMjc0Ny1cXHRcXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYz0yOTE0PWNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIGl3bF9tbGRfaHdfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYy0yOTc2LVxcdC52aWZfYWRkX2RlYnVnZnMgPSBpd2xfbWxkX2FkZF92aWZfZGVidWdmcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tYWM4MDIxMS5jOjI5Nzc6XFx0LmxpbmtfYWRkX2RlYnVnZnMgPSBpd2xfbWxkX2FkZF9saW5rX2RlYnVnZnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYzoyOTc4OlxcdC5saW5rX3N0YV9hZGRfZGVidWdmcyA9IGl3bF9tbGRfYWRkX2xpbmtfc3RhX2RlYnVnZnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYy0yOTc5LSNlbmRpZlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWxkLmg9NTc1PXZvaWQgaXdsX21sZF9hZGRfdmlmX2RlYnVnZnMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWxkLmgtNTc2LVxcdFxcdFxcdCAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWxkLmg6NTc3OnZvaWQgaXdsX21sZF9hZGRfbGlua19kZWJ1Z2ZzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21sZC5oLTU3OC1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWxkLmgtNTgwLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBkZW50cnkgKmRpcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWxkLmg6NTgxOnZvaWQgaXdsX21sZF9hZGRfbGlua19zdGFfZGVidWdmcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tbGQuaC01ODItXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc3RhLmM9NTk2PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zdGEuYzo1OTc6aXdsX21sZF9hZGRfbGlua19zdGEoc3RydWN0IGl3bF9tbGQgKm1sZCwgc3RydWN0IGllZWU4MDIxMV9saW5rX3N0YSAqbGlua19zdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc3RhLmMtNTk4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5jPTgyMD1pbnQgaXdsX21sZF9hZGRfc3RhKHN0cnVjdCBpd2xfbWxkICptbGQsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zdGEuYy04NDktXFx0Zm9yX2VhY2hfc3RhX2FjdGl2ZV9saW5rKG1sZF9zdGEtXFx1MDAzZXZpZiwgc3RhLCBsaW5rX3N0YSwgbGlua19pZCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5jOjg1MDpcXHRcXHRyZXQgPSBpd2xfbWxkX2FkZF9saW5rX3N0YShtbGQsIGxpbmtfc3RhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zdGEuYy04NTEtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5jPTEzMzA9aW50IGl3bF9tbGRfdXBkYXRlX2xpbmtfc3RhcyhzdHJ1Y3QgaXdsX21sZCAqbWxkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc3RhLmMtMTM4OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zdGEuYzoxMzg5OlxcdFxcdHJldCA9IGl3bF9tbGRfYWRkX2xpbmtfc3RhKG1sZCwgbGlua19zdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5jLTEzOTAtXFx0XFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTg6NTk6MTAuOTU2NjY0Mzg0WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjU2NTUxMjkzMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiBpd2x3aWZpIGFuZCBtYWM4MDIuMTEgVGVzdGluZyoqXG5cbk9rYXksIHNvIGBpd2xfbWxkX2h3X29wc2AsIHJpZ2h0LCB0aGF0J3MgZGVmaW5lZCBhcyBhbiBgaWVlZTgwMjExX29wc2Agc3RydWN0dXJlLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGhvdyBleGFjdGx5IGRvZXMgdGhlIDgwMi4xMSBzdGFjayBnZXQgdGVzdGVkIHdpdGhpbiBzeXprYWxsZXIgYW5kIHRoZSBMaW51eCBrZXJuZWwgdGVzdGluZyBpbmZyYXN0cnVjdHVyZT8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGVzZSBjb21wb25lbnRzLlxuXG5SaWdodCwgc3l6a2FsbGVyIGRvZXMgZnV6eiBtYWM4MDIxMS4gQW5kIHRoZSBtZXRob2QgdXNlZCBpcyBgbWFjODAyMTFfaHdzaW1gLiBUaGF0J3MgYSB2aXJ0dWFsLCBzb2Z0d2FyZS1iYXNlZCBtYWM4MDIxMSBkZXZpY2UuIEkgcmVjYWxsIHNlZWluZyB0aGF0IGNvZGUgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uY2Agb3IgYSBzaW1pbGFyIHBhdGguIFRoZSBgdmlydF93aWZpYCBzZXR1cCBpcyBhbm90aGVyIG9wdGlvbiwgdGhvdWdoIGBtYWM4MDIxMV9od3NpbWAgaXMgbW9yZSBsaWtlbHkuXG5cbkJ1dCB3YWl0IGEgbWludXRlLi4uY2FuIEkgYWN0dWFsbHkgdXNlIGBpd2x3aWZpYCAqd2l0aCogYG1hYzgwMjExX2h3c2ltYD8gTm8sIHRoYXQncyBub3QgaG93IGl0IHdvcmtzISBgbWFjODAyMTFfaHdzaW1gICppcyogaXRzIG93biBkcml2ZXIhIEl0J3MgYSBrZXJuZWwgbW9kdWxlIChgbWFjODAyMTFfaHdzaW0ua29gKSB0aGF0IGltcGxlbWVudHMgdGhlIGBpZWVlODAyMTFfb3BzYCBpbnRlcmZhY2UgaXRzZWxmLiBJdCAqcmVwbGFjZXMqIGEgcmVhbCBoYXJkd2FyZSBkcml2ZXIsIGJhc2ljYWxseS5cblxuU28sIHRoaW5raW5nIGFib3V0IGl0IG1vcmUgYnJvYWRseSwgZWFjaCB3aXJlbGVzcyBkcml2ZXIgKGl3bHdpZmksIGF0aDlrLCBydDI4MDAsIG10NzYsIGFuZCBldmVuIG1hYzgwMjExX2h3c2ltKSByZWdpc3RlcnMgaXRzIG93biBoYXJkd2FyZSB3aXRoIG1hYzgwMjExLiBUaGlzIGlzIGRvbmUgdGhyb3VnaCBgaWVlZTgwMjExX2FsbG9jX2h3KClgIGFuZCBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3KClgLiBUaGF0J3MgdGhlIGtleSByZWdpc3RyYXRpb24gbWVjaGFuaXNtLlxuXG5Pa2F5LCBsZXQncyBjaGFuZ2UgZ2VhcnMgYSBiaXQuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgYGl3bF9tbGRgIG9yIGBpd2xfbXZtYCBpcyBpbml0aWFsaXplZC4gSSdsbCBuZWVkIHRvIGdvIGRpZ2dpbmcgZm9yIHRoYXQuIExldCBtZSBzdGFydCBieSBzZWFyY2hpbmcgZm9yIHRoZSBjb2RlIHJlc3BvbnNpYmxlIGZvciByZWdpc3RlcmluZyB0aGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzA4MSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxODo1OToxNi42MTE3OTY3MThaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNjk3NDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV9hbGxvY19od1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21hYzgwMjExLmM9MTYwOT1zdHJ1Y3QgaWVlZTgwMjExX2h3ICppd2xfYWxsb2NfYWxsKHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWM4MDIxMS5jLTE2MTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFjODAyMTEuYzoxNjE3OlxcdGh3ID0gaWVlZTgwMjExX2FsbG9jX2h3KHNpemVvZihzdHJ1Y3QgaXdsX3ByaXYpICtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWM4MDIxMS5jLTE2MTgtXFx0XFx0XFx0XFx0c2l6ZW9mKHN0cnVjdCBpd2xfb3BfbW9kZSksIFxcdTAwMjZpd2xhZ25faHdfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21sZC5jPTM5Nj1pd2xfb3BfbW9kZV9tbGRfc3RhcnQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHN0cnVjdCBpd2xfcmZfY2ZnICpjZmcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tbGQuYy00MDQtXFx0LyogQWxsb2NhdGUgYW5kIGluaXRpYWxpemUgYSBuZXcgaGFyZHdhcmUgZGV2aWNlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWxkLmM6NDA1OlxcdGh3ID0gaWVlZTgwMjExX2FsbG9jX2h3KHNpemVvZihzdHJ1Y3QgaXdsX29wX21vZGUpICtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tbGQuYy00MDYtXFx0XFx0XFx0XFx0c2l6ZW9mKHN0cnVjdCBpd2xfbWxkKSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL29wcy5jPTExOTg9aXdsX29wX21vZGVfbXZtX3N0YXJ0KHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBjb25zdCBzdHJ1Y3QgaXdsX3JmX2NmZyAqY2ZnLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vb3BzLmMtMTIyNC1cXHQgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vb3BzLmM6MTIyNTpcXHRodyA9IGllZWU4MDIxMV9hbGxvY19odyhzaXplb2Yoc3RydWN0IGl3bF9vcF9tb2RlKSArXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vb3BzLmMtMTIyNi1cXHRcXHRcXHRcXHRzaXplb2Yoc3RydWN0IGl3bF9tdm0pLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxODo1OToxNi42NjI0OTk5MzdaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MzExMzcyNjAyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipUcmFjaW5nIHRoZSBpd2xfdHJhbnMgU3RydWN0dXJlKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEknbSBsb29raW5nIGF0IGBpd2xfb3BfbW9kZV9tbGRfc3RhcnRgIGFuZCBgaXdsX29wX21vZGVfbXZtX3N0YXJ0YCwgYW5kIGltbWVkaWF0ZWx5IHRoZSBgc3RydWN0IGl3bF90cmFucyAqdHJhbnNgIGNhdWdodCBteSBleWUuICBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGlzIGBpd2xfdHJhbnNgIGNvbWVzIGZyb20uIFRoaXMgaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgYWJzdHJhY3Rpb24gbGF5ZXIgaW4gdGhpcyBJbnRlbCB3aXJlbGVzcyBkcml2ZXIsIGlzbid0IGl0P1xuXG5SaWdodCwgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHRyYWNrIGRvd24gdGhlIGFsbG9jYXRpb24uIFNvLCBJIG5lZWQgdG8gZmluZCB0aGUgY2FsbHMgdG8gYGl3bF90cmFuc19hbGxvY2Agb3IgYGl3bF90cmFuc19wY2llX2FsbG9jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgKnRyYW5zKiBzdHJ1Y3R1cmUgaXMgaW5zdGFudGlhdGVkIGFuZCBpbml0aWFsaXplZC4gT25jZSBJIGtub3cgdGhhdCwgSSdsbCBiZSBvbmUgc3RlcCBjbG9zZXIgdG8gZ3Jhc3BpbmcgdGhlIGNvbXBsZXRlIG9wZXJhdGlvbmFsIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NDUzLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTg6NTk6MTkuNzc2MjI5MDFaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzMTg4MjU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF90cmFuc19hbGxvY3xpd2xfdHJhbnNfcGNpZV9hbGxvY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmM9MjYwPWludCBpd2xhZ25fdHhfc2tiKHN0cnVjdCBpd2xfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmMtMzQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmM6MzQ0OlxcdGRldl9jbWQgPSBpd2xfdHJhbnNfYWxsb2NfdHhfY21kKHByaXYtXFx1MDAzZXRyYW5zKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jLTM0NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM9MjAyPXN0YXRpYyB2b2lkIGl3bF90cmFuc19yZXN0YXJ0X3drKHN0cnVjdCB3b3JrX3N0cnVjdCAqd2spXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTI2Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jOjI2NzpzdHJ1Y3QgaXdsX3RyYW5zICppd2xfdHJhbnNfYWxsb2ModW5zaWduZWQgaW50IHByaXZfc2l6ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTI2OC1cXHRcXHRcXHRcXHQgIHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM9MzMyPUlXTF9FWFBPUlRfU1lNQk9MKGl3bF90cmFuc19zZW5kX2NtZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0zMzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYzozMzQ6c3RydWN0IGl3bF9kZXZpY2VfdHhfY21kICppd2xfdHJhbnNfYWxsb2NfdHhfY21kKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtMzM1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtMzM3LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jOjMzODpJV0xfRVhQT1JUX1NZTUJPTChpd2xfdHJhbnNfYWxsb2NfdHhfY21kKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTMzOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmg9ODM4PWl3bF90cmFuc19kdW1wX2RhdGEoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIHUzMiBkdW1wX21hc2ssXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oLTg0MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oOjg0MjpzdHJ1Y3QgaXdsX2RldmljZV90eF9jbWQgKml3bF90cmFuc19hbGxvY190eF9jbWQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmgtODQzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaD0xMDg5PXN0YXRpYyBpbmxpbmUgdm9pZCBpd2xfdHJhbnNfZmluaXNoX3N3X3Jlc2V0KHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaC0xMDk2LSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oOjEwOTc6c3RydWN0IGl3bF90cmFucyAqaXdsX3RyYW5zX2FsbG9jKHVuc2lnbmVkIGludCBwcml2X3NpemUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaC0xMDk4LVxcdFxcdFxcdFxcdCAgc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdHguYz03NTA9c3RhdGljIGludCBpd2xfbWxkX3R4X21wZHUoc3RydWN0IGl3bF9tbGQgKm1sZCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3R4LmMtNzY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3R4LmM6NzY3OlxcdGRldl90eF9jbWQgPSBpd2xfdHJhbnNfYWxsb2NfdHhfY21kKG1sZC1cXHUwMDNldHJhbnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3R4LmMtNzY4LVxcdGlmICh1bmxpa2VseSghZGV2X3R4X2NtZCkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90eC5jPTU1Mz1pd2xfbXZtX3NldF90eF9wYXJhbXMoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3R4LmMtNTYxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3R4LmM6NTYyOlxcdGRldl9jbWQgPSBpd2xfdHJhbnNfYWxsb2NfdHhfY21kKG12bS1cXHUwMDNldHJhbnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3R4LmMtNTYzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jPTM3NDM9dm9pZCBpd2xfdHJhbnNfcGNpZV9zeW5jX25taShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy0zNzYxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYzozNzYyOnN0YXRpYyBpbnQgaXdsX3RyYW5zX3BjaWVfYWxsb2NfdHhjbWRfcG9vbChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmMtMzc2My17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmM9Mzc5OT1zdGF0aWMgc3RydWN0IGl3bF90cmFucyAqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jOjM4MDA6aXdsX3RyYW5zX3BjaWVfYWxsb2Moc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTM4MDEtXFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgaXdsX21hY19jZmcgKm1hY19jZmcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmMtMzgwOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmM6MzgwOTpcXHR0cmFucyA9IGl3bF90cmFuc19hbGxvYyhzaXplb2Yoc3RydWN0IGl3bF90cmFuc19wY2llKSwgXFx1MDAyNnBkZXYtXFx1MDAzZWRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmMtMzgxMC1cXHRcXHRcXHRcXHRtYWNfY2ZnKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy0zODIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYzozODIxOlxcdHJldCA9IGl3bF90cmFuc19wY2llX2FsbG9jX3R4Y21kX3Bvb2wodHJhbnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy0zODIyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmM9NDIzMj1pbnQgaXdsX3BjaV9nZW4xXzJfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmMtNDI0NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmM6NDI0NjpcXHRpd2xfdHJhbnMgPSBpd2xfdHJhbnNfcGNpZV9hbGxvYyhwZGV2LCBtYWNfY2ZnLCBcXHUwMDI2aW5mbywgaHdfYmFzZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTQyNDctXFx0aWYgKElTX0VSUihpd2xfdHJhbnMpKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxODo1OToxOS44Mjk0MjE1NloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo0MjI3OTA0NDM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgc2l0dWF0aW9uOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIEFsbG9jYXRpb24gUGF0aCBvZiBgaXdsX3RyYW5zX3BjaWVfYWxsb2NgKipcblxuT2theSwgc28gYGl3bF90cmFuc19wY2llX2FsbG9jYCBpcyBjYWxsZWQgc29sZWx5IGZyb20gdGhlIFBDSSBwcm9iZSBmdW5jdGlvbnMsIHNwZWNpZmljYWxseSBgaXdsX3BjaV9nZW4xXzJfcHJvYmVgIG9yIGBpd2xfcGNpX3Byb2JlYC4gVGhhdCdzIGEgcHJldHR5IHRpZ2h0IGNvbnN0cmFpbnQsIGFuZCBpdCBtYWtlcyBtZSB3b25kZXIgaWYgdGhlcmUncyBhbnkgb3RoZXIgaW5zdGFudGlhdGlvbiBvZiB0aGUgbW9yZSBnZW5lcmFsIGBpd2xfdHJhbnNfYWxsb2NgIGZ1bmN0aW9uLiBJdCBzZWVtcyBsaWtlIGl0IHdvdWxkIG9ubHkgYmUgaW4gdGhlIGluaXRpYWxpemF0aW9uIHBhdGguIEkgbmVlZCB0byBiZSBzdXJlIHRoaXMgaXMgY29ycmVjdC4gSSBzaG91bGQgZG91YmxlIGNoZWNrIHRoYXQgdGhlcmUgYXJlbid0IGFueSBvdGhlciBjYWxsIHNpdGVzLCBldmVuIGlmIHRoZXkgYXJlIGluIG90aGVyIGRyaXZlcnMsIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgYWxsb2NhdGlvbiBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjY1MywiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDE4OjU5OjI0LjA1NzMyNzk5NloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjcyNzg5OTEwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpd2xfdHJhbnNfYWxsb2NcXFxcKFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jPTIwMj1zdGF0aWMgdm9pZCBpd2xfdHJhbnNfcmVzdGFydF93ayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndrKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0yNjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYzoyNjc6c3RydWN0IGl3bF90cmFucyAqaXdsX3RyYW5zX2FsbG9jKHVuc2lnbmVkIGludCBwcml2X3NpemUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0yNjgtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oPTEwODk9c3RhdGljIGlubGluZSB2b2lkIGl3bF90cmFuc19maW5pc2hfc3dfcmVzZXQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oLTEwOTYtICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmg6MTA5NzpzdHJ1Y3QgaXdsX3RyYW5zICppd2xfdHJhbnNfYWxsb2ModW5zaWduZWQgaW50IHByaXZfc2l6ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oLTEwOTgtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmM9MzgwMD1pd2xfdHJhbnNfcGNpZV9hbGxvYyhzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy0zODA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYzozODA5OlxcdHRyYW5zID0gaXdsX3RyYW5zX2FsbG9jKHNpemVvZihzdHJ1Y3QgaXdsX3RyYW5zX3BjaWUpLCBcXHUwMDI2cGRldi1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy0zODEwLVxcdFxcdFxcdFxcdG1hY19jZmcpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxODo1OToyNi43ODUyMzQ0NTRaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MzEzOTQ5Nzc4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipUcmFjaW5nIHRoZSBEcml2ZXIgSW5pdGlhbGl6YXRpb24gRmxvdyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBgaXdsd2lmaWAgZHJpdmVyIGNvZGUsIHNwZWNpZmljYWxseSB0aGUgUENJZS1yZWxhdGVkIHN0dWZmLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMgYWJvdXQgd2hlcmUgYGl3bF90cmFuc19hbGxvY2AgZ2V0cyBjYWxsZWQsIGFuZCBpdCBsb29rcyBsaWtlIHRoZSBjb2RlIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIGBpd2xfdHJhbnNfYWxsb2NgIGlzICpvbmx5KiBjYWxsZWQgYnkgYGl3bF90cmFuc19wY2llX2FsbG9jYC4gVGhhdCdzIGdvb2Q7IGl0IG5hcnJvd3MgdGhpbmdzIGRvd24gY29uc2lkZXJhYmx5LiBBbmQgYGl3bF90cmFuc19wY2llX2FsbG9jYCBpdHNlbGYgaXMgKm9ubHkqIGV2ZXIgY2FsbGVkIGZyb20gYGl3bF9wY2lfZ2VuMV8yX3Byb2JlYC4gU28sIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGluaXRpYWxpemF0aW9uIGZsb3csIG15IG5leHQgc3RlcCBpcyBjbGVhcjogSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSBgaXdsX3BjaV9nZW4xXzJfcHJvYmVgIGFuZCBzZWUgd2hlcmUgKml0KiBnZXRzIGNhbGxlZCBmcm9tLiBUaGF0IHdpbGwgZ2l2ZSBtZSB0aGUgZW50cnkgcG9pbnQgZm9yIHRoaXMgcGFydGljdWxhciBzdWJzeXN0ZW0uIFRoYXQncyB3aGVyZSBJIHdpbGwgc3RhcnQgbXkgaW52ZXN0aWdhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTczOTMsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTg6NTk6MjkuOTI0NzM0NjE3WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjYwMDgwNDM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF9wY2lfZ2VuMV8yX3Byb2JlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYz0xMTUwPXN0YXRpYyBpbnQgaXdsX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy0xMTg5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYzoxMTkwOlxcdHJldHVybiBpd2xfcGNpX2dlbjFfMl9wcm9iZShwZGV2LCBlbnQsIG1hY19jZmcsIGh3X2Jhc2UsIGh3X3Jldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTExOTEtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi9pbnRlcm5hbC5oPTEyMDk9dm9pZCBpd2xfcGNpZV9hbGxvY19md19tb25pdG9yKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCB1OCBtYXhfcG93ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvaW50ZXJuYWwuaDoxMjEwOmludCBpd2xfcGNpX2dlbjFfMl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL2ludGVybmFsLmgtMTIxMS1cXHRcXHRcXHQgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYz00MjAwPXN0YXRpYyB2b2lkIGl3bF9wY2llX2NoZWNrX21lX3N0YXR1cyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy00MjMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYzo0MjMyOmludCBpd2xfcGNpX2dlbjFfMl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmMtNDIzMy1cXHRcXHRcXHQgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTg6NTk6MzEuNTg0ODIwNjgyWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjE5NjEwNDAyODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBpd2xfcGNpIERyaXZlcioqXG5cbk9rYXksIHNvIGBpd2xfcGNpX3Byb2JlYC4uLiB0aGF0J3MgdGhlIHByb2JlIGZ1bmN0aW9uIGZvciB0aGUgYGl3bF9wY2lfZHJpdmVyYCwgd2hpY2ggaXMga2V5IHRvIGdldHRpbmcgdGhlc2UgSW50ZWwgd2lyZWxlc3MgY2FyZHMgd29ya2luZyBvbiBQQ0kuIFRpbWUgdG8gbG9vayBpbnRvIHRoZSBzcGVjaWZpY3MuIEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgZHJpdmVyIHN0cnVjdHVyZSBpcyBjb3JyZWN0LCBhbmQgc2VlIHdoYXQgdGhlIHByb2JlIGZ1bmN0aW9uIGFjdHVhbGx5IGRvZXMuIExldCdzIGhlYWQgb3ZlciB0byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jYCBhbmQgZGlnIGludG8gYGl3bF9wY2lfZHJpdmVyYCBpdHNlbGYgdG8gc2VlIGhvdyB0aGlzIHRoaW5nIGlzIHB1dCB0b2dldGhlci4gR290dGEgdW5kZXJzdGFuZCB0aGUgZW50cnkgcG9pbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODIyOCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDE4OjU5OjMzLjU0NTg2Mzc0MloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDM2NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEzMzAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjEzMzA6XFx0XFxuMTMzMTpcXHRzdGF0aWMgdm9pZCBpd2xfcGNpX2R1bXAoc3RydWN0IGRldmljZSAqZGV2aWNlKVxcbjEzMzI6XFx0e1xcbjEzMzM6XFx0XFx0c3RydWN0IHBjaV9kZXYgKnBkZXYgPSB0b19wY2lfZGV2KGRldmljZSk7XFxuMTMzNDpcXHRcXHRzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTtcXG4xMzM1OlxcdFxcbjEzMzY6XFx0XFx0aXdsX29wX21vZGVfZHVtcCh0cmFucy1cXHUwMDNlb3BfbW9kZSk7XFxuMTMzNzpcXHR9XFxuMTMzODpcXHRcXG4xMzM5OlxcdHN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBpd2xfcGNpX2RyaXZlciA9IHtcXG4xMzQwOlxcdFxcdC5uYW1lID0gRFJWX05BTUUsXFxuMTM0MTpcXHRcXHQuaWRfdGFibGUgPSBpd2xfaHdfY2FyZF9pZHMsXFxuMTM0MjpcXHRcXHQucHJvYmUgPSBpd2xfcGNpX3Byb2JlLFxcbjEzNDM6XFx0XFx0LnJlbW92ZSA9IGl3bF9wY2lfcmVtb3ZlLFxcbjEzNDQ6XFx0XFx0LmRyaXZlci5wbSA9IElXTF9QTV9PUFMsXFxuMTM0NTpcXHRcXHQuZHJpdmVyLmNvcmVkdW1wID0gaXdsX3BjaV9kdW1wLFxcbjEzNDY6XFx0fTtcXG4xMzQ3OlxcdFxcbjEzNDg6XFx0aW50IF9fbXVzdF9jaGVjayBpd2xfcGNpX3JlZ2lzdGVyX2RyaXZlcih2b2lkKVxcbjEzNDk6XFx0e1xcbjEzNTA6XFx0XFx0aW50IHJldDtcXG4xMzUxOlxcdFxcdHJldCA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNml3bF9wY2lfZHJpdmVyKTtcXG4xMzUyOlxcdFxcdGlmIChyZXQpXFxuMTM1MzpcXHRcXHRcXHRwcl9lcnIoXFxcIlVuYWJsZSB0byBpbml0aWFsaXplIFBDSSBtb2R1bGVcXFxcblxcXCIpO1xcbjEzNTQ6XFx0XFxuMTM1NTpcXHRcXHRyZXR1cm4gcmV0O1xcbjEzNTY6XFx0fVxcbjEzNTc6XFx0XFxuMTM1ODpcXHR2b2lkIGl3bF9wY2lfdW5yZWdpc3Rlcl9kcml2ZXIodm9pZClcXG4xMzU5OlxcdHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTg6NTk6MzMuNTQ1OTY5NjEyWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjkyMzY4MzIxMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIERlY2lzaW9uIGZvciBpd2x3aWZpKipcblxuT2theSwgc28gYGl3bHdpZmlgIGlzIGRlZmluaXRlbHkgYW4gSW50ZWwtc3BlY2lmaWMgUENJIHdpcmVsZXNzIGRyaXZlci4gVGhhdCdzIHRoZSBzdGFydGluZyBwb2ludC4gTm93LCBsZXQncyBjYXJlZnVsbHkgY29uc2lkZXIgdGhvc2UgbmVnYXRpdmUgY3JpdGVyaWEgb3V0bGluZWQgaW4gU2VjdGlvbiAyIG9mIHRoZSBpbnN0cnVjdGlvbnMuIFRoZSBrZXkgaGVyZSBpcyBkZXRlcm1pbmluZyBpZiB0aGUgbW9kaWZpZWQgY29kZSBpcyAqdW5yZWFjaGFibGUqIGluIG91ciBzdGFuZGFyZCBmdXp6aW5nIHNldHVwLlxuXG5NeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIHdlIGV2ZW4gZW11bGF0ZSBvciBmdXp6IGBpd2x3aWZpYCBpbiBhIHN0YW5kYXJkIGVudmlyb25tZW50IGxpa2UgR0NFIG9yIFFFTVU/IEFuZCB0aGUgYW5zd2VyLCBhZnRlciBhIG1vbWVudCdzIHJlZmxlY3Rpb24sIGlzIG5vLiBJbnRlbCBXaS1GaSBQQ0kgY2FyZHMsIGxpa2UgdGhlIEFYMjAwIG9yIEFYMjEwLCBhcmUgcGh5c2ljYWwgaGFyZHdhcmUgZGV2aWNlcy4gU3RhbmRhcmQgUUVNVSBkb2Vzbid0IGVtdWxhdGUgdGhlbS4gSXQgcHJvdmlkZXMgdmlydHVhbCBuZXR3b3JrIGludGVyZmFjZXMsIHN1cmUsIGJ1dCBub3QgcGh5c2ljYWwgV2ktRmkgY2FyZHMuIFdlIGhhdmUgYG1hYzgwMjExX2h3c2ltYCBmb3Igc29mdHdhcmUtYmFzZWQgdmlydHVhbCBXaS1GaSwgYnV0IGBpd2x3aWZpYCBpcyB0aGUgcHJvcHJpZXRhcnkgZHJpdmVyIGZvciByZWFsIGhhcmR3YXJlLlxuXG5UaGlzIG1lYW5zLCB3aXRob3V0IGFuIGFjdHVhbCBJbnRlbCBXaS1GaSBQQ0llIGNhcmQgcHJlc2VudCBhbmQgdGhlIHByb3ByaWV0YXJ5IGZpcm13YXJlIGxvYWRlZCwgY2VydGFpbiBrZXkgZnVuY3Rpb25zIG5ldmVyIGdldCBleGVjdXRlZC4gU3BlY2lmaWNhbGx5LCBgaXdsX3BjaV9wcm9iZWAgbmV2ZXIgcnVucywgYW5kIGNvbnNlcXVlbnRseSwgYGl3bF9vcF9tb2RlX21sZF9zdGFydGAsIGBpd2xfb3BfbW9kZV9tdm1fc3RhcnRgLCBhbmQgdGhlIG1hYzgwMjExIGRldmljZSByZWdpc3RyYXRpb24gd2l0aCBgaXdsX21sZF9od19vcHNgIG9yIGBpd2xfbXZtX2h3X29wc2AgbmV2ZXIgaGFwcGVuLiBUaGVyZWZvcmUsIGBpd2xfbWxkX2FkZF9saW5rYCwgYGl3bF9tbGRfc2V0X2tleV9hZGRgLCBhbmQgYF9faXdsX212bV9tYWNfc2V0X2tleWAgYXJlIGFsbCBkZWFkIGNvZGUuXG5cbkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIGNoZWNrIHdoZXRoZXIgdGhlcmUgbWlnaHQgYmUgc29tZSBraW5kIG9mIG1vY2ssIGVtdWxhdGlvbiwgb3IgZ2FkZ2V0IGZyYW1ld29yayB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbCBpdHNlbGYgdGhhdCBjb3VsZCBhbGxvdyBzb21lIGxldmVsIG9mIGZ1enppbmcuIExldCBtZSBkbyBhIHF1aWNrIHNlYXJjaCB3aXRoaW4gdGhlIGB0b29scy90ZXN0aW5nYCBhbmQgYGRyaXZlcnMvYCBkaXJlY3RvcmllcyBmb3IgXCJpd2x3aWZpXCIgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBCdXQsIEkgYW0gcmVhc29uYWJseSBjZXJ0YWluIHRoaXMgZmFsbHMgaW50byB0aGUgXCJTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmVcIiBjYXRlZ29yeSBhbmQgaXMgbGlrZWx5ICpXb3J0aEZ1enppbmc9ZmFsc2UqLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODk0MywiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDE4OjU5OjQyLjc4MjgwNDEwMloiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUxOTIyMjQ2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpd2x3aWZpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWxcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDE4OjU5OjQzLjAzNDczNjk5OFoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjozODQ2NjA2NzcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipFeHBsb3JpbmcgVmlydHVhbCBXaXJlbGVzcyBEcml2ZXJzKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEknbSB0aGlua2luZywgXCJXaGVyZSB3b3VsZCBJIHR5cGljYWxseSBmaW5kIHRoZSB2aXJ0dWFsIHdpcmVsZXNzIGRyaXZlciBpbXBsZW1lbnRhdGlvbnMgaW4gdGhlIGtlcm5lbCBzb3VyY2U/XCIgTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBnbyBkaWdnaW5nIHRocm91Z2ggdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9gIGRpcmVjdG9yeS4gVGhhdCdzIHVzdWFsbHkgdGhlIGdvLXRvIHNwb3QgZm9yIGFueXRoaW5nIG5ldHdvcmstcmVsYXRlZCwgYW5kIHdpcmVsZXNzIGZhbGxzIHNxdWFyZWx5IHdpdGhpbiB0aGF0IGRvbWFpbi4gVGhlIGdvYWwgaGVyZSBpcyB0byBnZXQgYSBsYXkgb2YgdGhlIGxhbmQ7IGlkZW50aWZ5IHdoYXQncyBhbHJlYWR5IGJ1aWx0LCBnZXQgYSBoaWdoLWxldmVsIHNlbnNlIG9mIHRoZSBleGlzdGluZyB2aXJ0dWFsIGRyaXZlciBhcmNoaXRlY3R1cmVzLCBhbmQgc2VlIHdoYXQncyBiZWluZyBsZXZlcmFnZWQgaW4gdGhpcyBzcGFjZS4gSSdtIGVzc2VudGlhbGx5IG1lbnRhbGx5IGNhdGFsb2dpbmcgd2hhdCdzIGF2YWlsYWJsZSBmb3IgdmlydHVhbCB3aXJlbGVzcyBmdW5jdGlvbmFsaXR5IHRvIHVuZGVyc3RhbmQgd2hhdCdzIHRoZXJlIGJlZm9yZSBJIGV2ZW4gc3RhcnQgdG8gZm9ybXVsYXRlIGFueSBraW5kIG9mIHBsYW4uIExldCdzIHNlZSB3aGF0IGludGVyZXN0aW5nIHZpcnR1YWwgZHJpdmVycyBoYXZlIGJlZW4gaW1wbGVtZW50ZWQgd2l0aGluIHRoYXQgZGlyZWN0b3J5IVxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTk2OSwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDE4OjU5OjQ2Ljg4MTM0NjZaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzQyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWxcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogW1xuICAgIFwibWFjODAyMTFfaHdzaW0uaFwiLFxuICAgIFwibWFjODAyMTFfaHdzaW1faS5oXCIsXG4gICAgXCJtYWM4MDIxMV9od3NpbV9tYWluLmNcIixcbiAgICBcIm1hYzgwMjExX2h3c2ltX25hbi5jXCIsXG4gICAgXCJtYWM4MDIxMV9od3NpbV9uYW4uaFwiLFxuICAgIFwidmlydF93aWZpLmNcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogbnVsbFxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTg6NTk6NDYuODgxNDA2OVoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo0MjM0MzgyMTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkNvbnNpZGVyaW5nIFdpcmVsZXNzIERldmljZSBFbXVsYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWxgIGRpcmVjdG9yeSBpcyBwcmV0dHkgbGltaXRlZCwganVzdCBgbWFjODAyMTFfaHdzaW1gIGFuZCBgdmlydF93aWZpYC4gQnV0IHRoYXQncyBub3QgdGhlIHdob2xlIHN0b3J5IHdoZW4gd2UncmUgdGhpbmtpbmcgYWJvdXQgc3l6a2FsbGVyJ3MgcG90ZW50aWFsIGZvciBlbXVsYXRpb24sIHJpZ2h0PyBXaGF0IGFib3V0IFVTQiBXaS1GaSBkZXZpY2VzPyBOb3csICpzb21lKiBVU0IgV2ktRmkgZGV2aWNlcyDigJMgYW5kIEknbSB0aGlua2luZyBzcGVjaWZpY2FsbHkgb2YgdGhpbmdzIGxpa2UgdGhlIHJ0bDgxODcgb3IgZXZlbiBhdGg5a19odGMg4oCTICpjb3VsZCogdGhlb3JldGljYWxseSBiZSBlbXVsYXRlZCB0aHJvdWdoIFVTQiBSYXcgR2FkZ2V0LCBpZiB0aGUgdW5kZXJseWluZyBzeXprYWxsZXIgc3VwcG9ydCBpcyB0aGVyZS4gSXQncyBzb21ldGhpbmcgd29ydGggZXhwbG9yaW5nLlxuXG5IbW0sIGlzIGl3bHdpZmkgYSBVU0IgZGV2aWNlPyBObywgSSdtIHByZXR0eSBzdXJlIGl3bHdpZmkgaXMgUENJZSBvbmx5LCBmb3VuZCB1bmRlciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2AuIEp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlIHRob3VnaCwgbGV0IG1lIGRvdWJsZSBjaGVjayBpZiB0aGVyZSdzICphbnkqIGV2aWRlbmNlIG9mIGEgbm9uLVBDSWUgdHJhbnNwb3J0IGx1cmtpbmcgd2l0aGluIGl3bHdpZmkuIFRpbWUgdG8gZGlnIGEgYml0IGRlZXBlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAyOTIsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjUsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDE4OjU5OjUxLjExNTc5MjkwNloiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU4OTU5MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXdsX3RyYW5zX2FsbG9jXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYz0yNjA9aW50IGl3bGFnbl90eF9za2Ioc3RydWN0IGl3bF9wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYy0zNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYzozNDQ6XFx0ZGV2X2NtZCA9IGl3bF90cmFuc19hbGxvY190eF9jbWQocHJpdi1cXHUwMDNldHJhbnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmMtMzQ1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYz0yMDI9c3RhdGljIHZvaWQgaXdsX3RyYW5zX3Jlc3RhcnRfd2soc3RydWN0IHdvcmtfc3RydWN0ICp3aylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtMjY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM6MjY3OnN0cnVjdCBpd2xfdHJhbnMgKml3bF90cmFuc19hbGxvYyh1bnNpZ25lZCBpbnQgcHJpdl9zaXplLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtMjY4LVxcdFxcdFxcdFxcdCAgc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYz0zMzI9SVdMX0VYUE9SVF9TWU1CT0woaXdsX3RyYW5zX3NlbmRfY21kKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTMzMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jOjMzNDpzdHJ1Y3QgaXdsX2RldmljZV90eF9jbWQgKml3bF90cmFuc19hbGxvY190eF9jbWQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0zMzUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0zMzctfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM6MzM4OklXTF9FWFBPUlRfU1lNQk9MKGl3bF90cmFuc19hbGxvY190eF9jbWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtMzM5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaD04Mzg9aXdsX3RyYW5zX2R1bXBfZGF0YShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgdTMyIGR1bXBfbWFzayxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmgtODQxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmg6ODQyOnN0cnVjdCBpd2xfZGV2aWNlX3R4X2NtZCAqaXdsX3RyYW5zX2FsbG9jX3R4X2NtZChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaC04NDMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oPTEwODk9c3RhdGljIGlubGluZSB2b2lkIGl3bF90cmFuc19maW5pc2hfc3dfcmVzZXQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oLTEwOTYtICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmg6MTA5NzpzdHJ1Y3QgaXdsX3RyYW5zICppd2xfdHJhbnNfYWxsb2ModW5zaWduZWQgaW50IHByaXZfc2l6ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oLTEwOTgtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90eC5jPTc1MD1zdGF0aWMgaW50IGl3bF9tbGRfdHhfbXBkdShzdHJ1Y3QgaXdsX21sZCAqbWxkLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdHguYy03NjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdHguYzo3Njc6XFx0ZGV2X3R4X2NtZCA9IGl3bF90cmFuc19hbGxvY190eF9jbWQobWxkLVxcdTAwM2V0cmFucyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdHguYy03NjgtXFx0aWYgKHVubGlrZWx5KCFkZXZfdHhfY21kKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3R4LmM9NTUzPWl3bF9tdm1fc2V0X3R4X3BhcmFtcyhzdHJ1Y3QgaXdsX212bSAqbXZtLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdHguYy01NjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdHguYzo1NjI6XFx0ZGV2X2NtZCA9IGl3bF90cmFuc19hbGxvY190eF9jbWQobXZtLVxcdTAwM2V0cmFucyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdHguYy01NjMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmM9MzgwMD1pd2xfdHJhbnNfcGNpZV9hbGxvYyhzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy0zODA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYzozODA5OlxcdHRyYW5zID0gaXdsX3RyYW5zX2FsbG9jKHNpemVvZihzdHJ1Y3QgaXdsX3RyYW5zX3BjaWUpLCBcXHUwMDI2cGRldi1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy0zODEwLVxcdFxcdFxcdFxcdG1hY19jZmcpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxODo1OTo1MS4xNzE2OTUwNjVaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTY3ODg4OTcwODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudDogVGhpcyBDb2RlIElzbid0IEZ1enphYmxlIChQQ0llLUJvdW5kKSoqXG5cbk9rYXksIGhlcmUncyB0aGUgYnJlYWtkb3duLiBUaGUgdGV4dCBjb25maXJtcyB3aGF0IEkgc3VzcGVjdGVkOiBpdCdzIFBDSWUtb25seS4gSSd2ZSByZS1yZWFkIFNlY3Rpb24gMSBhbmQgU2VjdGlvbiAyIG9mIHRoZSByZWxldmFudCBkb2N1bWVudGF0aW9uLCB3aGljaCBlbXBoYXNpemVzIHRoYXQgZnV6emluZyBpcyBvbmx5IGVmZmVjdGl2ZSBvbiBjb2RlIHRoYXQncyAqcmVhY2hhYmxlKiBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIENvZGUgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gUUVNVSBvciBHQ0UgaXMgYSBub24tc3RhcnRlci5cblxuU3BlY2lmaWNhbGx5LCB0aGlzIHBhdGNoIHNlcmllcyB0YXJnZXRzIHRoZSBgaXdsd2lmaWAgZHJpdmVyLCByZXNpZGluZyBlbnRpcmVseSB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvYC4gVGhpcyBkcml2ZXIncyBhbGwgYWJvdXQgSW50ZWwgUENJZSBXaS1GaSBOSUNzLCB3aGljaCBtZWFucyBwaHlzaWNhbCBJbnRlbCBoYXJkd2FyZSDigJMgc29tZXRoaW5nIHN0YW5kYXJkIHZpcnR1YWwgbWFjaGluZXMgY2FuJ3QgcmVwbGljYXRlLiBUaGUgbW9kaWZpY2F0aW9ucyBhZmZlY3QgYG1sZC9saW5rLmNgLCBgbWxkL21hYzgwMjExLmNgLCBhbmQgYG12bS9tYWM4MDIxMS5jYCwgc3BlY2lmaWNhbGx5OiBgaXdsX21sZF9hZGRfbGluaygpYCwgYGl3bF9tbGRfc2V0X2tleV9hZGQoKWAsIGFuZCBgX19pd2xfbXZtX21hY19zZXRfa2V5KClgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGFsbCB3aXRoaW4gdGhlIGBpd2xtdm1gIGFuZCBgaXdsbWxkYCBtb2R1bGVzLCBzbyBpdCdzIGFsbCBQQ0llLWJvdW5kLlxuXG5UaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZyBwdXJwb3Nlcy4gSXQgZmFsbHMgc3F1YXJlbHkgaW50byB0aGUgXCJzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmVcIiBjYXRlZ29yeSBkZXRhaWxlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbi5cblxuTm93LCBsZXQgbWUgZG91YmxlLWNoZWNrIHRoZSByZXF1aXJlZCBmaWVsZHMgZm9yIGBzZXQtcmVzdWx0c2A6XG5cbiogICBgV29ydGhGdXp6aW5nYDogRGVmaW5pdGVseSBgZmFsc2VgLlxuKiAgIGBSZWFzb25pbmdgOiBUaGUgZXhwbGFuYXRpb24gaXMgcm9jayBzb2xpZDogdGhlIGNoYW5nZXMgYXJlIGNvbmZpbmVkIHRvIHRoZSBgaXdsd2lmaWAgZHJpdmVyLCB3aGljaCBpcyBhIGRyaXZlciBmb3IgSW50ZWwgUENJZSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJzIHRoYXQgcmVsaWVzIG9uIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSB2aXJ0dWFsaXphdGlvbiBlbnZpcm9ubWVudHMuXG4qICAgYEZvY3VzU3ltYm9sc2A6IE5vIHN5bWJvbHMgdG8gZm9jdXMgb24sIHNvIGFuIGVtcHR5IGFycmF5IGBbXWAuXG4qICAgYEVuYWJsZUNvbmZpZ3NgOiBOb3RoaW5nIHNwZWNpZmljIHRvIGVuYWJsZSwgdGh1cyBhbiBlbXB0eSBhcnJheSBgW11gLlxuXG5FdmVyeXRoaW5nJ3MgY2xlYXIuIE5vIG5lZWQgdG8gbG9vayBhbnkgZnVydGhlci4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMDA5LCJPdXRwdXRUb2tlbnMiOjEyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxOTowMDowNy45NjA1OTVaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDkyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBlcnJvci1wYXRoIGZyZWVpbmcgbG9naWMgKHN3aXRjaGluZyBrZnJlZSB0byBrZnJlZV9yY3UpIGluIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkgKHNwZWNpZmljYWxseSBpbiBtbGQgYW5kIG12bSBtb2R1bGVzKS4gaXdsd2lmaSBpcyBhIGhhcmR3YXJlIGRyaXZlciBmb3IgSW50ZWwgUENJZSB3aXJlbGVzcyBhZGFwdGVycyByZXF1aXJpbmcgcGh5c2ljYWwgUENJZSBkZXZpY2VzIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGVycm9yLXBhdGggZnJlZWluZyBsb2dpYyAoc3dpdGNoaW5nIGtmcmVlIHRvIGtmcmVlX3JjdSkgaW4gZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaSAoc3BlY2lmaWNhbGx5IGluIG1sZCBhbmQgbXZtIG1vZHVsZXMpLiBpd2x3aWZpIGlzIGEgaGFyZHdhcmUgZHJpdmVyIGZvciBJbnRlbCBQQ0llIHdpcmVsZXNzIGFkYXB0ZXJzIHJlcXVpcmluZyBwaHlzaWNhbCBQQ0llIGRldmljZXMgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIENvbnNlcXVlbnRseSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTk6MDA6MDcuOTYwNjI0MDJaIiwiU2VxIjozNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowgd8dn[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-14 18:56:46 +0000 UTC FinishedAt: 2026-09-14 19:00:09 +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+CgkJCTx0ZD4yMDI2LzA5LzE0IDE4OjU4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3ItcGF0aCBmcmVlaW5nIGxvZ2ljIChzd2l0Y2hpbmcga2ZyZWUgdG8ga2ZyZWVfcmN1KSBpbiBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpIChzcGVjaWZpY2FsbHkgaW4gbWxkIGFuZCBtdm0gbW9kdWxlcykuIGl3bHdpZmkgaXMgYSBoYXJkd2FyZSBkcml2ZXIgZm9yIEludGVsIFBDSWUgd2lyZWxlc3MgYWRhcHRlcnMgcmVxdWlyaW5nIHBoeXNpY2FsIFBDSWUgZGV2aWNlcyB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDE4OjU4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYzcxMGNlMTU2ZWEwOGIzYzcxNzVmNDUxNWViOGI5NTU0YjhlYjA4NFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gU2VwIDE0IDE4OjU4OjIzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2xpbmsuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2xpbmsuY1xuaW5kZXggOTZlMDY5NDBiMzRjNC4uNTViODQ4MDE5MjNkNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2xpbmsuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbGluay5jXG5AQCAtNTQxLDE1ICYjNDM7NTQxLDE1IEBAIGludCBpd2xfbWxkX2FkZF9saW5rKHN0cnVjdCBpd2xfbWxkICptbGQsXG4gXHRyZXQgPSBpd2xfbWxkX2FkZF9saW5rX3RvX2Z3KG1sZCwgYnNzX2NvbmYpO1xuIFx0aWYgKHJldCkge1xuIFx0XHRSQ1VfSU5JVF9QT0lOVEVSKG1sZC1cdTAwM2Vmd19pZF90b19ic3NfY29uZltsaW5rLVx1MDAzZWZ3X2lkXSwgTlVMTCk7XG4tXHRcdFJDVV9JTklUX1BPSU5URVIobWxkX3ZpZi1cdTAwM2VsaW5rW2Jzc19jb25mLVx1MDAzZWxpbmtfaWRdLCBOVUxMKTtcbiBcdFx0Z290byBmcmVlO1xuIFx0fVxuIFxuIFx0cmV0dXJuIHJldDtcbiBcbiBmcmVlOlxuJiM0MztcdFJDVV9JTklUX1BPSU5URVIobWxkX3ZpZi1cdTAwM2VsaW5rW2Jzc19jb25mLVx1MDAzZWxpbmtfaWRdLCBOVUxMKTtcbiBcdGlmICghaXNfZGVmbGluaylcbi1cdFx0a2ZyZWUobGluayk7XG4mIzQzO1x0XHRrZnJlZV9yY3UobGluaywgcmN1X2hlYWQpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmNcbmluZGV4IDNhNGM4ZmRhNjhkMGEuLjY5M2YyMDkyYTc4MTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tYWM4MDIxMS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tYWM4MDIxMS5jXG5AQCAtMjI2NSw3ICYjNDM7MjI2NSw3IEBAIHN0YXRpYyBpbnQgaXdsX21sZF9zZXRfa2V5X2FkZChzdHJ1Y3QgaXdsX21sZCAqbWxkLFxuIFx0aWYgKHJldCkge1xuIFx0XHRpZiAocHRrX3BuKSB7XG4gXHRcdFx0UkNVX0lOSVRfUE9JTlRFUihtbGRfc3RhLVx1MDAzZXB0a19wbltrZXlpZHhdLCBOVUxMKTtcbi1cdFx0XHRrZnJlZShwdGtfcG4pO1xuJiM0MztcdFx0XHRrZnJlZV9yY3UocHRrX3BuLCByY3VfaGVhZCk7XG4gXHRcdH1cbiBcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWM4MDIxMS5jXG5pbmRleCA1YmQyNDZlMzc5NDMyLi5iMGM0ZjI0NWM4OGZmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuY1xuQEAgLTQzODUsNyAmIzQzOzQzODUsNyBAQCBzdGF0aWMgaW50IF9faXdsX212bV9tYWNfc2V0X2tleShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdFx0XHRrZXktXHUwMDNlaHdfa2V5X2lkeCA9IFNUQV9LRVlfSURYX0lOVkFMSUQ7XG4gXHRcdFx0aWYgKHB0a19wbikge1xuIFx0XHRcdFx0UkNVX0lOSVRfUE9JTlRFUihtdm1zdGEtXHUwMDNlcHRrX3BuW2tleWlkeF0sIE5VTEwpO1xuLVx0XHRcdFx0a2ZyZWUocHRrX3BuKTtcbiYjNDM7XHRcdFx0XHRrZnJlZV9yY3UocHRrX3BuLCByY3VfaGVhZCk7XG4gXHRcdFx0fVxuIFx0XHRcdC8qXG4gXHRcdFx0ICogY2FuJiMzOTt0IGFkZCBrZXkgZm9yIFJYLCBidXQgd2UgZG9uJiMzOTt0IG5lZWQgaXRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxODo1ODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBlcnJvci1wYXRoIGZyZWVpbmcgbG9naWMgKHN3aXRjaGluZyBrZnJlZSB0byBrZnJlZV9yY3UpIGluIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkgKHNwZWNpZmljYWxseSBpbiBtbGQgYW5kIG12bSBtb2R1bGVzKS4gaXdsd2lmaSBpcyBhIGhhcmR3YXJlIGRyaXZlciBmb3IgSW50ZWwgUENJZSB3aXJlbGVzcyBhZGFwdGVycyByZXF1aXJpbmcgcGh5c2ljYWwgUENJZSBkZXZpY2VzIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjNzEwY2UxNTZlYTA4YjNjNzE3NWY0NTE1ZWI4Yjk1NTRiOGViMDg0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBTZXAgMTQgMTg6NTg6MjMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9saW5rLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9saW5rLmMKaW5kZXggOTZlMDY5NDBiMzRjNC4uNTViODQ4MDE5MjNkNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbGluay5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2xpbmsuYwpAQCAtNTQxLDE1ICYjNDM7NTQxLDE1IEBAIGludCBpd2xfbWxkX2FkZF9saW5rKHN0cnVjdCBpd2xfbWxkICptbGQsCiAJcmV0ID0gaXdsX21sZF9hZGRfbGlua190b19mdyhtbGQsIGJzc19jb25mKTsKIAlpZiAocmV0KSB7CiAJCVJDVV9JTklUX1BPSU5URVIobWxkLSZndDtmd19pZF90b19ic3NfY29uZltsaW5rLSZndDtmd19pZF0sIE5VTEwpOwotCQlSQ1VfSU5JVF9QT0lOVEVSKG1sZF92aWYtJmd0O2xpbmtbYnNzX2NvbmYtJmd0O2xpbmtfaWRdLCBOVUxMKTsKIAkJZ290byBmcmVlOwogCX0KIAogCXJldHVybiByZXQ7CiAKIGZyZWU6CiYjNDM7CVJDVV9JTklUX1BPSU5URVIobWxkX3ZpZi0mZ3Q7bGlua1tic3NfY29uZi0mZ3Q7bGlua19pZF0sIE5VTEwpOwogCWlmICghaXNfZGVmbGluaykKLQkJa2ZyZWUobGluayk7CiYjNDM7CQlrZnJlZV9yY3UobGluaywgcmN1X2hlYWQpOwogCXJldHVybiByZXQ7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tYWM4MDIxMS5jCmluZGV4IDNhNGM4ZmRhNjhkMGEuLjY5M2YyMDkyYTc4MTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYwpAQCAtMjI2NSw3ICYjNDM7MjI2NSw3IEBAIHN0YXRpYyBpbnQgaXdsX21sZF9zZXRfa2V5X2FkZChzdHJ1Y3QgaXdsX21sZCAqbWxkLAogCWlmIChyZXQpIHsKIAkJaWYgKHB0a19wbikgewogCQkJUkNVX0lOSVRfUE9JTlRFUihtbGRfc3RhLSZndDtwdGtfcG5ba2V5aWR4XSwgTlVMTCk7Ci0JCQlrZnJlZShwdGtfcG4pOwomIzQzOwkJCWtmcmVlX3JjdShwdGtfcG4sIHJjdV9oZWFkKTsKIAkJfQogCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWM4MDIxMS5jCmluZGV4IDViZDI0NmUzNzk0MzIuLmIwYzRmMjQ1Yzg4ZmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuYwpAQCAtNDM4NSw3ICYjNDM7NDM4NSw3IEBAIHN0YXRpYyBpbnQgX19pd2xfbXZtX21hY19zZXRfa2V5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCQkJa2V5LSZndDtod19rZXlfaWR4ID0gU1RBX0tFWV9JRFhfSU5WQUxJRDsKIAkJCWlmIChwdGtfcG4pIHsKIAkJCQlSQ1VfSU5JVF9QT0lOVEVSKG12bXN0YS0mZ3Q7cHRrX3BuW2tleWlkeF0sIE5VTEwpOwotCQkJCWtmcmVlKHB0a19wbik7CiYjNDM7CQkJCWtmcmVlX3JjdShwdGtfcG4sIHJjdV9oZWFkKTsKIAkJCX0KIAkJCS8qCiAJCQkgKiBjYW4mIzM5O3QgYWRkIGtleSBmb3IgUlgsIGJ1dCB3ZSBkb24mIzM5O3QgbmVlZCBpdAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxODo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTkyCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2ggU2VyaWVzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCBhIHBhdGNoIHNlcmllcyB0byByZXZpZXcuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpdmUgc3RyYWlnaHQgaW50byB0aGUgZGlmZiwgb2J2aW91c2x5LiBJIHNlZSBjaGFuZ2VzIHRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9saW5rLmNgLCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuY2AsIGFuZCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuY2AuIFJpZ2h0LCBzbyB0aGlzIGlzIGZvciB0aGUgYGl3bHdpZmlgIGRyaXZlci4gQnV0IHdhaXQsIGJlZm9yZSBJIGdldCB0b28gZGVlcCwgYSBjcnVjaWFsIHF1ZXN0aW9uIHBvcHMgaW50byBteSBoZWFkOiBjYW4gSSBhY3R1YWxseSAqdGVzdCogdGhpcyBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmU/CgpIYW5nIG9uIGEgc2Vjb25k4oCmIEkgbmVlZCB0byBjaGVjayB0aGUgcHJvamVjdCYjMzk7cyBpbnN0cnVjdGlvbnMgKFNlY3Rpb24gMiwgdG8gYmUgcHJlY2lzZSkuIFRoZSBpbnN0cnVjdGlvbnMgc3BlY2lmaWNhbGx5IGNhbGwgb3V0IGhhcmR3YXJlIGRlcGVuZGVuY2llcy4gTGV0JiMzOTtzIHNlZS4uLiBpdCBtZW50aW9ucyB0aGluZ3MgdGhhdCBhcmUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlOiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBHUFUgZHJpdmVyc+KApiBPa2F5LCBteSByYWRhciBpcyB1cC4gVGhpcyBpcyB2ZXJ5IGltcG9ydGFudCB3aGVuIEkgdGhpbmsgYWJvdXQgZHJpdmVycy4KClNvLCB0aGUgbmV4dCBxdWVzdGlvbiBpcywgZG9lcyBgaXdsd2lmaWAgbmVlZCBwaHlzaWNhbCBJbnRlbCBXaUZpIGhhcmR3YXJlPyBJcyBpdCBlbXVsYXRlZCwgb3IgaXMgdGhlcmUgYSBzaW11bGF0aW9uIG1vZGU/IFdhaXQsIGRvZXMgYGl3bHdpZmlgIGhhdmUgYSBgbWFjODAyMTFfaHdzaW1gIGVxdWl2YWxlbnQ/IEkgbmVlZCB0byByZW1lbWJlciB0aGUgZGlmZmVyZW5jZTogYG1hYzgwMjExX2h3c2ltYCBpcyBhIHNvZnR3YXJlLWJhc2VkIGRyaXZlciBmb3IgbWFjODAyMTEsIHJpZ2h0PyBCdXQgYGl3bHdpZmlgIGlzIEludGVsJiMzOTtzICpwcm9wcmlldGFyeSosIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBkZXNpZ25lZCBmb3IgSW50ZWwgV2lGaSBQQ0kgZGV2aWNlcy4uLiBTbywgaXQgaXMgbWVhbnQgdG8gcnVuIG9uICpyZWFsKiBJbnRlbCBoYXJkd2FyZSwgbGlrZSB0aGUgSW50ZWwgV2lyZWxlc3MtQUMgb3IgV2ktRmkgNiBBWDIwMCBjYXJkcy4KCkhtbS4gVGhhdCYjMzk7cyBhIHByb2JsZW0uIFFFTVUgZGVmaW5pdGVseSAqZG9lc24mIzM5O3QqIGVtdWxhdGUgSW50ZWwgV2ktRmkgUENJIGNhcmRzLiBPa2F5LCBzbyBJJiMzOTttIG5vdCBnb2luZyB0byBiZSBhYmxlIHRvIGp1c3Qgc3BpbiB1cCBhIFZNIGFuZCByZXByb2R1Y2UgdGhpcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUmIzM5O3MgYW55IGtpbmQgb2YgdmlydHVhbCBvciBzaW11bGF0ZWQgbW9kZSB3aXRoaW4gdGhlIGBpd2x3aWZpYCBkcml2ZXIgaXRzZWxmLiBUaW1lIHRvIGdvIGRpZ2dpbmcgdGhyb3VnaCB0aGUgY29kZSBhbmQgdGhlIEtjb25maWcgZmlsZXMuIFRoaXMgaXMgZ29pbmcgdG8gYmUgbXkgZmlyc3QgcHJpb3JpdHkgYmVmb3JlIEkgY29tbWl0IHRvIHRoZSByZXZpZXcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTg6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElXTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6Mjpjb25maWcgSVdMV0lGSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBXaXJlbGVzcyBXaUZpIE5leHQgR2VuIEFHTiAtIFdpcmVsZXNzLU4vQWR2YW5jZWQtTi9VbHRpbWF0ZS1OIChpd2x3aWZpKSBcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9NDc9aWYgSVdMV0lGSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjQ5OmNvbmZpZyBJV0xXSUZJX0tVTklUX1RFU1RTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTAtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo1ODpjb25maWcgSVdMV0lGSV9MRURTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTktXHRib29sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTY1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjY2OmNvbmZpZyBJV0xEVk1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy02Ny1cdHRyaXN0YXRlIFwmIzM0O0ludGVsIFdpcmVsZXNzIFdpRmkgRFZNIEZpcm13YXJlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NzQ6Y29uZmlnIElXTE1WTVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTc1LVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgV2lyZWxlc3MgV2lGaSBNVk0gRmlybXdhcmUgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy04My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo4NDpjb25maWcgSVdMTUxEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctODUtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBXaXJlbGVzcyBXaUZpIE1MRCBGaXJtd2FyZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTk0LSMgZG9uJiMzOTt0IGNhbGwgaXQgX01PRFVMRSAtLSB3aWxsIGNvbmZ1c2UgS2NvbmZpZy9maXhkZXAvLi4uXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6OTU6Y29uZmlnIElXTFdJRklfT1BNT0RFX01PRFVMQVJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy05Ni1cdGJvb2xcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9MTA1PW1lbnUgXCYjMzQ7RGVidWdnaW5nIE9wdGlvbnNcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTA3OmNvbmZpZyBJV0xXSUZJX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA4LVx0Ym9vbCBcJiMzNDtFbmFibGUgZnVsbCBkZWJ1Z2dpbmcgb3V0cHV0IGluIHRoZSBpd2x3aWZpIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTMxOmNvbmZpZyBJV0xXSUZJX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzItXHRib29sIFwmIzM0O2l3bHdpZmkgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMzk6Y29uZmlnIElXTFdJRklfREVWSUNFX1RSQUNJTkdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xNDAtXHRib29sIFwmIzM0O2l3bHdpZmkgZGV2aWNlIGFjY2VzcyB0cmFjaW5nXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTE1OD1lbmRpZlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTE1OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxNjA6Y29uZmlnIElXTE1FSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTE2MS1cdHRyaXN0YXRlIFwmIzM0O0ludGVsIE1hbmFnZW1lbnQgRW5naW5lIGNvbW11bmljYXRpb24gb3ZlciBXTEFOXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTg6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQ3MAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbnZlc3RpZ2F0aW5nIElXTFdJRkkgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgY29yZSBvZiB0aGlzLiBXaGVuIEkmIzM5O20gd29ya2luZyB3aXRoIHRoZSBJbnRlbCB3aXJlbGVzcyBkcml2ZXJzLCB0aGUgZmlyc3QgcGxhY2UgSSBhbHdheXMgZ28gdG8gdW5yYXZlbCB0aGVzZSBkZXBlbmRlbmNpZXMgaXMgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZ2AuIEl0JiMzOTtzIGVzc2VudGlhbGx5IHRoZSByb2FkbWFwIGZvciBjb25maWd1cmluZyBJV0xXSUZJLCBJV0xNVk0sIGFuZCBJV0xNTEQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgb3RoZXIgY29tcG9uZW50cywgZmVhdHVyZXMsIG9yIGtlcm5lbCBvcHRpb25zIHRoZXkgcmVseSBvbi4gVGhpcyBgS2NvbmZpZ2AgZmlsZSBob2xkcyB0aGUgYW5zd2VyczsgdGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aGVzZSBtb2R1bGVzLCBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gYmFzZWQgb24gaGFyZHdhcmUgc3VwcG9ydCwgYW5kIGFueSBzcGVjaWZpYyBmZWF0dXJlIGZsYWdzIEkgbmVlZCB0byBjb25zaWRlciBmb3IgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIGNvbXBvbmVudHMuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlICYjMzQ7aWYmIzM0OyBzdGF0ZW1lbnRzLCB0aGUgJiMzNDtkZXBlbmRzIG9uJiMzNDsgY2xhdXNlcywgYW5kIGFueSAmIzM0O3NlbGVjdCYjMzQ7IHN0YXRlbWVudHMgdGhhdCBtaWdodCBwdWxsIGluIG90aGVyIGJpdHMgb2YgdGhlIGtlcm5lbC4gVGhpcyBpbml0aWFsIHNjYW4gd2lsbCB0ZWxsIG1lIHRoZSBzdG9yeSBvZiBob3cgdGhlc2UgcGllY2VzIGZpdCB0b2dldGhlciBhbmQgaW5mb3JtIGFueSBzdWJzZXF1ZW50IGRlYnVnZ2luZyBvciBjb25maWd1cmF0aW9uIEkgbWlnaHQgbmVlZCB0byBkby4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxODo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogOTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBJV0xXSUZJXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBXaXJlbGVzcyBXaUZpIE5leHQgR2VuIEFHTiAtIFdpcmVsZXNzLU4vQWR2YW5jZWQtTi9VbHRpbWF0ZS1OIChpd2x3aWZpKSBcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gUENJIFx1MDAyNlx1MDAyNiBIQVNfSU9NRU0gXHUwMDI2XHUwMDI2IENGRzgwMjExXG4gICA1Olx0XHRkZXBlbmRzIG9uIElXTE1FSSB8fCAhSVdMTUVJXG4gICA2Olx0XHRzZWxlY3QgRldfTE9BREVSXG4gICA3Olx0XHRoZWxwXG4gICA4Olx0XHQgIFNlbGVjdCB0byBidWlsZCB0aGUgZHJpdmVyIHN1cHBvcnRpbmcgdGhlOlxuICAgOTpcdFxuICAxMDpcdFx0ICBJbnRlbCBXaXJlbGVzcyBXaUZpIExpbmsgTmV4dC1HZW4gQUdOXG4gIDExOlx0XG4gIDEyOlx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgdXNlIHdpdGggdGhlIGZvbGxvd2luZyBoYXJkd2FyZTpcbiAgMTM6XHRcdFx0SW50ZWwgV2lyZWxlc3MgV2lGaSBMaW5rIDYyNTBBR04gQWRhcHRlclxuICAxNDpcdFx0XHRJbnRlbCA2MDAwIFNlcmllcyBXaS1GaSBBZGFwdGVycyAoNjIwMEFHTiBhbmQgNjMwMEFHTilcbiAgMTU6XHRcdFx0SW50ZWwgV2lGaSBMaW5rIDEwMDBCR05cbiAgMTY6XHRcdFx0SW50ZWwgV2lyZWxlc3MgV2lGaSA1MTUwQUdOXG4gIDE3Olx0XHRcdEludGVsIFdpcmVsZXNzIFdpRmkgNTEwMEFHTiwgNTMwMEFHTiwgYW5kIDUzNTBBR05cbiAgMTg6XHRcdFx0SW50ZWwgNjAwNSBTZXJpZXMgV2ktRmkgQWRhcHRlcnNcbiAgMTk6XHRcdFx0SW50ZWwgNjAzMCBTZXJpZXMgV2ktRmkgQWRhcHRlcnNcbiAgMjA6XHRcdFx0SW50ZWwgV2lyZWxlc3MgV2lGaSBMaW5rIDYxNTBCR04gMiBBZGFwdGVyXG4gIDIxOlx0XHRcdEludGVsIDEwMCBTZXJpZXMgV2ktRmkgQWRhcHRlcnMgKDEwMEJHTiBhbmQgMTMwQkdOKVxuICAyMjpcdFx0XHRJbnRlbCAyMDAwIFNlcmllcyBXaS1GaSBBZGFwdGVyc1xuICAyMzpcdFx0XHRJbnRlbCA3MjYwIFdpLUZpIEFkYXB0ZXJcbiAgMjQ6XHRcdFx0SW50ZWwgMzE2MCBXaS1GaSBBZGFwdGVyXG4gIDI1Olx0XHRcdEludGVsIDcyNjUgV2ktRmkgQWRhcHRlclxuICAyNjpcdFx0XHRJbnRlbCA4MjYwIFdpLUZpIEFkYXB0ZXJcbiAgMjc6XHRcdFx0SW50ZWwgMzE2NSBXaS1GaSBBZGFwdGVyXG4gIDI4Olx0XG4gIDI5Olx0XG4gIDMwOlx0XHQgIFRoaXMgZHJpdmVyIHVzZXMgdGhlIGtlcm5lbCYjMzk7cyBtYWM4MDIxMSBzdWJzeXN0ZW0uXG4gIDMxOlx0XG4gIDMyOlx0XHQgIEluIG9yZGVyIHRvIHVzZSB0aGlzIGRyaXZlciwgeW91IHdpbGwgbmVlZCBhIGZpcm13YXJlXG4gIDMzOlx0XHQgIGltYWdlIGZvciBpdC4gWW91IGNhbiBvYnRhaW4gdGhlIG1pY3JvY29kZSBmcm9tOlxuICAzNDpcdFxuICAzNTpcdFx0ICAgICAgICAgIFx1MDAzY2h0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL0RyaXZlcnMvaXdsd2lmaVx1MDAzZS5cbiAgMzY6XHRcbiAgMzc6XHRcdCAgVGhlIGZpcm13YXJlIGlzIHR5cGljYWxseSBpbnN0YWxsZWQgaW4gL2xpYi9maXJtd2FyZS4gWW91IGNhblxuICAzODpcdFx0ICBsb29rIGluIHRoZSBob3RwbHVnIHNjcmlwdCAvZXRjL2hvdHBsdWcvZmlybXdhcmUuYWdlbnQgdG9cbiAgMzk6XHRcdCAgZGV0ZXJtaW5lIHdoaWNoIGRpcmVjdG9yeSBGSVJNV0FSRV9ESVIgaXMgc2V0IHRvIHdoZW4gdGhlIHNjcmlwdFxuICA0MDpcdFx0ICBydW5zLlxuICA0MTpcdFxuICA0MjpcdFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIHRoZSBkcml2ZXIgYXMgYSBtb2R1bGUgKCA9IGNvZGUgd2hpY2ggY2FuIGJlXG4gIDQzOlx0XHQgIGluc2VydGVkIGluIGFuZCByZW1vdmVkIGZyb20gdGhlIHJ1bm5pbmcga2VybmVsIHdoZW5ldmVyIHlvdSB3YW50KSxcbiAgNDQ6XHRcdCAgc2F5IE0gaGVyZSBhbmQgcmVhZCBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24va2J1aWxkL21vZHVsZXMucnN0XHUwMDNlLiAgVGhlXG4gIDQ1Olx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBpd2x3aWZpLlxuICA0NjpcdFxuICA0NzpcdGlmIElXTFdJRklcbiAgNDg6XHRcbiAgNDk6XHRjb25maWcgSVdMV0lGSV9LVU5JVF9URVNUU1xuICA1MDpcdFx0dHJpc3RhdGVcbiAgNTE6XHRcdGRlcGVuZHMgb24gS1VOSVRcbiAgNTI6XHRcdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXG4gIDUzOlx0XHRoZWxwXG4gIDU0Olx0XHQgIEVuYWJsZSB0aGlzIG9wdGlvbiBmb3IgaXdsd2lmaSBrdW5pdCB0ZXN0cy5cbiAgNTU6XHRcbiAgNTY6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgNTc6XHRcbiAgNTg6XHRjb25maWcgSVdMV0lGSV9MRURTXG4gIDU5Olx0XHRib29sXG4gIDYwOlx0XHRkZXBlbmRzIG9uIExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU1BQzgwMjExXG4gIDYxOlx0XHRkZXBlbmRzIG9uIElXTE1WTSB8fCBJV0xEVk1cbiAgNjI6XHRcdHNlbGVjdCBMRURTX1RSSUdHRVJTXG4gIDYzOlx0XHRzZWxlY3QgTUFDODAyMTFfTEVEU1xuICA2NDpcdFx0ZGVmYXVsdCB5XG4gIDY1Olx0XG4gIDY2Olx0Y29uZmlnIElXTERWTVxuICA2NzpcdFx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgV2lyZWxlc3MgV2lGaSBEVk0gRmlybXdhcmUgc3VwcG9ydFwmIzM0O1xuICA2ODpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICA2OTpcdFx0aGVscFxuICA3MDpcdFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgdGhhdCBzdXBwb3J0cyB0aGUgRFZNIGZpcm13YXJlLiBUaGUgbGlzdFxuICA3MTpcdFx0ICBvZiB0aGUgZGV2aWNlcyB0aGF0IHVzZSB0aGlzIGZpcm13YXJlIGlzIGF2YWlsYWJsZSBoZXJlOlxuICA3MjpcdFx0ICBodHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi91c2Vycy9kcml2ZXJzL2l3bHdpZmkjZmlybXdhcmVcbiAgNzM6XHRcbiAgNzQ6XHRjb25maWcgSVdMTVZNXG4gIDc1Olx0XHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBXaXJlbGVzcyBXaUZpIE1WTSBGaXJtd2FyZSBzdXBwb3J0XCYjMzQ7XG4gIDc2Olx0XHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcbiAgNzc6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgNzg6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbiAgNzk6XHRcdGhlbHBcbiAgODA6XHRcdCAgVGhpcyBpcyB0aGUgZHJpdmVyIHRoYXQgc3VwcG9ydHMgdGhlIE1WTSBmaXJtd2FyZS4gVGhlIGxpc3RcbiAgODE6XHRcdCAgb2YgdGhlIGRldmljZXMgdGhhdCB1c2UgdGhpcyBmaXJtd2FyZSBpcyBhdmFpbGFibGUgaGVyZTpcbiAgODI6XHRcdCAgaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvZHJpdmVycy9pd2x3aWZpI2Zpcm13YXJlXG4gIDgzOlx0XG4gIDg0Olx0Y29uZmlnIElXTE1MRFxuICA4NTpcdFx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgV2lyZWxlc3MgV2lGaSBNTEQgRmlybXdhcmUgc3VwcG9ydFwmIzM0O1xuICA4NjpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gIDg3Olx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDg4Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gIDg5Olx0XHRoZWxwXG4gIDkwOlx0XHQgIFRoaXMgaXMgdGhlIGRyaXZlciB0aGF0IHN1cHBvcnRzIGZpcm13YXJlcyBvZiBNTEQgY2FwYWJsZSBkZXZpY2VzLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDE4OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxNTEKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgdGhlIGl3bHdpZmkgRHJpdmVyIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJIHNlZSBgSVdMV0lGSWAgbmVlZHMgYFBDSWAsIGBIQVNfSU9NRU1gLCBhbmQgYENGRzgwMjExYC4gVGhhdCBpbW1lZGlhdGVseSBmbGFncyBhIHBvdGVudGlhbCBwaHlzaWNhbCBQQ0kgZHJpdmVyIHJlbGF0aW9uc2hpcC4gTWFrZXMgc2Vuc2UsIGdpdmVuIGl0JiMzOTtzIGRlYWxpbmcgd2l0aCBhIHdpcmVsZXNzIGludGVyZmFjZS4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gY29uZmlybSB0aGlzLCBzbyBJIG5lZWQgdG8gY2hlY2sgdGhlIHNvdXJjZSBjb2RlLiBMZXQmIzM5O3Mgc3RhcnQgYnkgbG9va2luZyBpbnRvIHRoZSBsaWtlbHkgc3VzcGVjdCBkaXJlY3RvcnksIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvYCwgb3Igc29tZXRoaW5nIHNpbWlsYXIgd2l0aGluIHRoZSBpd2x3aWZpIGRpcmVjdG9yeSBzdHJ1Y3R1cmUuIFRoYXQgc2hvdWxkIGJlIHRoZSBiZXN0IHBsYWNlIHRvIGZpbmQgdGhlIFBDSS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGlmIG15IGluaXRpYWwgaHVuY2ggaXMgY29ycmVjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxODo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7aXdsLWFnbi1ody5oJiMzNDssCiAgICAmIzM0O2l3bC1jb25maWcuaCYjMzQ7LAogICAgJiMzNDtpd2wtY3NyLmgmIzM0OywKICAgICYjMzQ7aXdsLWRiZy10bHYuYyYjMzQ7LAogICAgJiMzNDtpd2wtZGJnLXRsdi5oJiMzNDssCiAgICAmIzM0O2l3bC1kZWJ1Zy5jJiMzNDssCiAgICAmIzM0O2l3bC1kZWJ1Zy5oJiMzNDssCiAgICAmIzM0O2l3bC1kZXZ0cmFjZS1kYXRhLmgmIzM0OywKICAgICYjMzQ7aXdsLWRldnRyYWNlLWlvLmgmIzM0OywKICAgICYjMzQ7aXdsLWRldnRyYWNlLWl3bHdpZmkuaCYjMzQ7LAogICAgJiMzNDtpd2wtZGV2dHJhY2UtbXNnLmgmIzM0OywKICAgICYjMzQ7aXdsLWRldnRyYWNlLXVjb2RlLmgmIzM0OywKICAgICYjMzQ7aXdsLWRldnRyYWNlLmMmIzM0OywKICAgICYjMzQ7aXdsLWRldnRyYWNlLmgmIzM0OywKICAgICYjMzQ7aXdsLWRydi5jJiMzNDssCiAgICAmIzM0O2l3bC1kcnYuaCYjMzQ7LAogICAgJiMzNDtpd2wtZmguaCYjMzQ7LAogICAgJiMzNDtpd2wtaW8uYyYjMzQ7LAogICAgJiMzNDtpd2wtaW8uaCYjMzQ7LAogICAgJiMzNDtpd2wtbW9kcGFyYW1zLmgmIzM0OywKICAgICYjMzQ7aXdsLW52bS1wYXJzZS5jJiMzNDssCiAgICAmIzM0O2l3bC1udm0tcGFyc2UuaCYjMzQ7LAogICAgJiMzNDtpd2wtbnZtLXV0aWxzLmMmIzM0OywKICAgICYjMzQ7aXdsLW52bS11dGlscy5oJiMzNDssCiAgICAmIzM0O2l3bC1vcC1tb2RlLmgmIzM0OywKICAgICYjMzQ7aXdsLXBoeS1kYi5jJiMzNDssCiAgICAmIzM0O2l3bC1waHktZGIuaCYjMzQ7LAogICAgJiMzNDtpd2wtcHJwaC5oJiMzNDssCiAgICAmIzM0O2l3bC1zY2QuaCYjMzQ7LAogICAgJiMzNDtpd2wtdHJhbnMuYyYjMzQ7LAogICAgJiMzNDtpd2wtdHJhbnMuaCYjMzQ7LAogICAgJiMzNDtpd2wtdXRpbHMuYyYjMzQ7LAogICAgJiMzNDtpd2wtdXRpbHMuaCYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogWwogICAgJiMzNDtjZmcmIzM0OywKICAgICYjMzQ7ZHZtJiMzNDssCiAgICAmIzM0O2Z3JiMzNDssCiAgICAmIzM0O21laSYjMzQ7LAogICAgJiMzNDttbGQmIzM0OywKICAgICYjMzQ7bXZtJiMzNDssCiAgICAmIzM0O3BjaWUmIzM0OywKICAgICYjMzQ7dGVzdHMmIzM0OwogIF0KfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDE4OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3ODYKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBpd2x3aWZpIERyaXZlciYjMzk7cyBBcmNoaXRlY3R1cmUqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZSBgaXdsd2lmaWAgZHJpdmVyIGlzIHNvbGVseSBQQ0ktYmFzZWQsIG9yIGlmIGl0IGluY29ycG9yYXRlcyBhbnkgc2ltdWxhdGVkIGJ1cyBpbnRlcmZhY2VzIGxpa2UgVVNCIGdhZGdldCBvciB2aXJ0aW8uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBhcmNoaXRlY3R1cmFsIHVuZGVycGlubmluZ3MuIFRoZSBmYXN0ZXN0IHdheSB0byBnZXQgYSBoYW5kbGUgb24gdGhpcyBpcyB0byBjaGVjayB0aGUgYE1ha2VmaWxlYCBhbmQgdGhlIGBwY2llYCBkaXJlY3Rvcnkgd2l0aGluIHRoZSBkcml2ZXImIzM5O3Mgc291cmNlLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgc29saWQgY2x1ZSBhYm91dCBob3cgdGhlIGRyaXZlciBpcyBzdHJ1Y3R1cmVkIGFuZCB3aGF0IGJ1cyBpbnRlcmZhY2VzIGl0JiMzOTtzIGRlc2lnbmVkIHRvIGludGVyYWN0IHdpdGguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDE4OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O2N0eHQtaW5mby12Mi5jJiMzNDssCiAgICAmIzM0O2N0eHQtaW5mby5jJiMzNDssCiAgICAmIzM0O2Rydi5jJiMzNDssCiAgICAmIzM0O2l3bC1jb250ZXh0LWluZm8tdjIuaCYjMzQ7LAogICAgJiMzNDtpd2wtY29udGV4dC1pbmZvLmgmIzM0OywKICAgICYjMzQ7dXRpbHMuYyYjMzQ7LAogICAgJiMzNDt1dGlscy5oJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBbCiAgICAmIzM0O2dlbjFfMiYjMzQ7CiAgXQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDE4OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgwNjQKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgYHBjaV9yZWdpc3Rlcl9kcml2ZXJgIGluIHRoZSBpd2x3aWZpIERyaXZlcioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGl3bHdpZmkgZHJpdmVyIGlzIGludGVyYWN0aW5nIHdpdGggdGhlIFBDSSBzdWJzeXN0ZW0uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBwaW5wb2ludCB3aGVyZSB0aGUgZHJpdmVyIGlzIHJlZ2lzdGVyZWQuIGBwY2lfcmVnaXN0ZXJfZHJpdmVyYCBpcyB0aGUgb2J2aW91cyBwbGFjZSB0byBzdGFydC4gVGhpcyBmdW5jdGlvbiBpcyB0aGUgY29ybmVyc3RvbmUgb2YgdGhlIFBDSSBkZXZpY2UgcHJvYmUgYW5kIGF0dGFjaCBwcm9jZXNzLCBzbyBmaW5kaW5nIGl0cyB1c2Ugd2l0aGluIHRoZSBpd2x3aWZpIGRyaXZlciBkaXJlY3RvcnkgKGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2ApIGlzIHRoZSBmaXJzdCBsb2dpY2FsIHN0ZXAuIFRoaXMgd2lsbCBnaXZlIG1lIGEgY2xlYXIgZW50cnkgcG9pbnQgaW50byB1bmRlcnN0YW5kaW5nIHRoZSBkZXZpY2UgaW5pdGlhbGl6YXRpb24gYW5kIGF0dGFjaG1lbnQgc2VxdWVuY2Ugd2l0aGluIHRoaXMgY29tcGxleCBkcml2ZXIuIEZyb20gdGhlcmUsIEkgY2FuIHRyYWNlIHRoZSBjb250cm9sIGZsb3cgdG8gdW5kZXJzdGFuZCB0aGUgZGV2aWNlJiMzOTtzIGxpZmVjeWNsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTg6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX3JlZ2lzdGVyX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM9MjEwOT1zdGF0aWMgaW50IF9faW5pdCBpd2xfZHJ2X2luaXQodm9pZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0yMTIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtZHJ2LmM6MjEyMTpcdGVyciA9IGl3bF9wY2lfcmVnaXN0ZXJfZHJpdmVyKCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0yMTIyLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oPTExNDE9c3RhdGljIGlubGluZSB2b2lkIGl3bF90cmFuc19ub3RpZnlfZndfZXJyb3Ioc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaC0xMTQ4LSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmg6MTE0OTppbnQgX19tdXN0X2NoZWNrIGl3bF9wY2lfcmVnaXN0ZXJfZHJpdmVyKHZvaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaC0xMTUwLXZvaWQgaXdsX3BjaV91bnJlZ2lzdGVyX2RyaXZlcih2b2lkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM9MTMzOT1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgaXdsX3BjaV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTEzNDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM6MTM0ODppbnQgX19tdXN0X2NoZWNrIGl3bF9wY2lfcmVnaXN0ZXJfZHJpdmVyKHZvaWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmMtMTM0OS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmMtMTM1MC1cdGludCByZXQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM6MTM1MTpcdHJldCA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2aXdsX3BjaV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTEzNTItXHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxODo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4ODQxCgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBJbnRlbCBXaUZpIERyaXZlciBSZWdpc3RyYXRpb24qKgoKT2theSwgc28gYGl3bF9wY2lfZHJpdmVyYCBpcyByZWdpc3RlcmluZyBpdHNlbGYgYXMgYSBQQ0kgZHJpdmVyIGZvciBJbnRlbCBXaUZpIGhhcmR3YXJlLiBUaGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgYnJvYWRlciBwaWN0dXJlIHRob3VnaC4gSSYjMzk7bSBjdXJpb3VzIGlmIHRoZSBgaXdsd2lmaWAgc3RhY2sgaXMgcmVnaXN0ZXJpbmcgb24gYW55ICpvdGhlciogYnVzZXMgYXMgd2VsbC4gSXQmIzM5O3MgZ29vZCBwcmFjdGljZSB0byB1bmRlcnN0YW5kIGFsbCB0aGUgcG9pbnRzIG9mIGF0dGFjaG1lbnQuIExldCYjMzk7cyBzZWUuLi4gdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIGlzIHByb2JhYmx5IHRoZSBpbml0aWFsaXphdGlvbiByb3V0aW5lLCB3aGljaCwgZnJvbSB3aGF0IEkgcmVtZW1iZXIgb2YgdGhlIGl3bHdpZmkgY29kZWJhc2UsIHNob3VsZCBiZSBgaXdsX2Rydl9pbml0YC4gVGltZSB0byBnbyBjaGVjayB0aGF0IG91dCBhbmQgc2VlIHdoYXQgb3RoZXIgYnVzIHR5cGVzIGFyZSBiZWluZyBoYW5kbGVkLiBJIHdhbnQgdG8gYnVpbGQgYSBjb21wbGV0ZSBtZW50YWwgbWFwIG9mIHRoZSBkcml2ZXImIzM5O3MgaW50ZXJmYWNlIHBvaW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTg6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIxMDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjEwMDpcdFx0XHRcdF9pd2xfb3BfbW9kZV9zdG9wKGRydik7XG4yMTAxOlx0XG4yMTAyOlx0XHRcdG11dGV4X3VubG9jayhcdTAwMjZpd2x3aWZpX29wbW9kZV90YWJsZV9tdHgpO1xuMjEwMzpcdFx0XHRyZXR1cm47XG4yMTA0Olx0XHR9XG4yMTA1Olx0XHRtdXRleF91bmxvY2soXHUwMDI2aXdsd2lmaV9vcG1vZGVfdGFibGVfbXR4KTtcbjIxMDY6XHR9XG4yMTA3Olx0SVdMX0VYUE9SVF9TWU1CT0woaXdsX29wbW9kZV9kZXJlZ2lzdGVyKTtcbjIxMDg6XHRcbjIxMDk6XHRzdGF0aWMgaW50IF9faW5pdCBpd2xfZHJ2X2luaXQodm9pZClcbjIxMTA6XHR7XG4yMTExOlx0XHRpbnQgaSwgZXJyO1xuMjExMjpcdFxuMjExMzpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShpd2x3aWZpX29wbW9kZV90YWJsZSk7IGkmIzQzOyYjNDM7KVxuMjExNDpcdFx0XHRJTklUX0xJU1RfSEVBRChcdTAwMjZpd2x3aWZpX29wbW9kZV90YWJsZVtpXS5kcnYpO1xuMjExNTpcdFxuMjExNjpcdCNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTXG4yMTE3Olx0XHQvKiBDcmVhdGUgdGhlIHJvb3Qgb2YgaXdsd2lmaSBkZWJ1Z2ZzIHN1YnN5c3RlbS4gKi9cbjIxMTg6XHRcdGl3bF9kYmdmc19yb290ID0gZGVidWdmc19jcmVhdGVfZGlyKERSVl9OQU1FLCBOVUxMKTtcbjIxMTk6XHQjZW5kaWZcbjIxMjA6XHRcbjIxMjE6XHRcdGVyciA9IGl3bF9wY2lfcmVnaXN0ZXJfZHJpdmVyKCk7XG4yMTIyOlx0XHRpZiAoZXJyKVxuMjEyMzpcdFx0XHRnb3RvIGNsZWFudXBfZGVidWdmcztcbjIxMjQ6XHRcbjIxMjU6XHRcdHJldHVybiAwO1xuMjEyNjpcdFxuMjEyNzpcdGNsZWFudXBfZGVidWdmczpcbjIxMjg6XHQjaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdGU1xuMjEyOTpcdFx0ZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlKGl3bF9kYmdmc19yb290KTtcbjIxMzA6XHQjZW5kaWZcbjIxMzE6XHRcdHJldHVybiBlcnI7XG4yMTMyOlx0fVxuMjEzMzpcdG1vZHVsZV9pbml0KGl3bF9kcnZfaW5pdCk7XG4yMTM0Olx0XG4yMTM1Olx0c3RhdGljIHZvaWQgX19leGl0IGl3bF9kcnZfZXhpdCh2b2lkKVxuMjEzNjpcdHtcbjIxMzc6XHRcdGl3bF9wY2lfdW5yZWdpc3Rlcl9kcml2ZXIoKTtcbjIxMzg6XHRcdGl3bF90cmFuc19mcmVlX3Jlc3RhcnRfbGlzdCgpO1xuMjEzOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxODo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5Njg2CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGFuZCB0aGUgc3lzdGVtIGlzICpvbmx5KiByZWdpc3RlcmluZyB0aGUgUENJIGRyaXZlciwgYGl3bF9wY2lfZHJpdmVyYC4gVGhhdCYjMzk7cyBhIGJpdCBvZGQuIEkmIzM5O2QgZXhwZWN0IHRvIHNlZSBtb3JlLCBwZXJoYXBzIHNvbWUgaW5kaWNhdGlvbiBvZiBhIGJyb2FkZXIgYXJjaGl0ZWN0dXJlIG9yIGV2ZW4gdmlydHVhbCBjb21wb25lbnRzIGRlcGVuZGluZyBvbiB0aGUgdGVzdGluZyBvciBpbXBsZW1lbnRhdGlvbi4KCldhaXQgYSBzZWNvbmTigKYgaXMgdGhlcmUgYW55IHNvcnQgb2YgdmlydHVhbCBoYXJkd2FyZSBvciBtb2NrIGRyaXZlciBpbiB0aGUgaXdsd2lmaSBjb2RlYmFzZSwgbWF5YmUgdXNlZCBmb3IgdGVzdGluZyBvciBzcGVjaWZpYyB1c2UgY2FzZXM/IEkmIzM5O3ZlIHNlZW4gdGhhdCBhcHByb2FjaCBiZWZvcmUsIGVzcGVjaWFsbHkgaW4gY29tcGxleCBkcml2ZXIgZmFtaWxpZXMuIExldCBtZSBxdWlja2x5IHNjYW4gdGhyb3VnaCB0aGUgYHRlc3RzL2AgZGlyZWN0b3J5IHdpdGhpbiB0aGUgaXdsd2lmaSBjb2RlLiBUaGF0JiMzOTtzIHVzdWFsbHkgd2hlcmUgdGhlc2Ugc29ydHMgb2YgdGhpbmdzIGFyZSBzdGFzaGVkLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgc2lnbnMgb2Ygc2ltdWxhdGVkIGhhcmR3YXJlIGVudmlyb25tZW50cyB0byBkZXRlcm1pbmUgaWYgdGhlIFBDSSBkcml2ZXIgaXMgdGhlIG9ubHkgcGllY2Ugb2YgdGhlIHB1enpsZSwgb3IgcGFydCBvZiBhIGJpZ2dlciBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDE4OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvdGVzdHMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDtkZXZpbmZvLmMmIzM0OywKICAgICYjMzQ7bW9kdWxlLmMmIzM0OywKICAgICYjMzQ7bnZtX3BhcnNlLmMmIzM0OywKICAgICYjMzQ7dXRpbHMuYyYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDE4OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk5ODgKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCYjMzk7cyBJbXBhY3Qgb24gdGhlIEludGVsIFdpcmVsZXNzIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIEkgc2VlIGl0JiMzOTtzIHRvdWNoaW5nIGEgZmV3IGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoZSBJbnRlbCB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBpd2x3aWZpYCBtb2R1bGUuIFRoZSBwcmVzZW5jZSBvZiBgdGVzdHMvYCBhbmQgdGhlIG1lbnRpb24gb2YgYElXTFdJRklfS1VOSVRfVEVTVFNgIGluZGljYXRlcyB0aGlzIGlzIHJlbGF0ZWQgdG8gS1VuaXQgdGVzdHMsIHdoaWNoIGlzIHVzZWZ1bCBjb250ZXh0LiBIb3dldmVyLCBteSBpbW1lZGlhdGUgY29uY2VybiBpcyB1bmRlcnN0YW5kaW5nIHRoZSBmdWxsIHNjb3BlIG9mIHRoaXMgY2hhbmdlLCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGV4YWN0bHkgdGhlIHBhdGNoIG1vZGlmaWVzLgoKTGV0IG1lIHRha2UgYSBsb29rIGF0IHRoZSBrZXkgZnVuY3Rpb25zIGFmZmVjdGVkOiBJIHNlZSBgaXdsX21sZF9hZGRfbGlua2AgaW4gYGxpbmsuY2AsIGBpd2xfbWxkX3NldF9rZXlfYWRkYCBpbiBgbWFjODAyMTEuY2AsIGFuZCBgX19pd2xfbXZtX21hY19zZXRfa2V5YCBpbiB0aGUgYG12bS9tYWM4MDIxMS5jYCBmaWxlLiBSaWdodCwgdGhlIE1MRCAoTWVzaCBMaW5rIERpc2NvdmVyeSkgc2VlbXMgdG8gYmUgaW52b2x2ZWQgYW5kIGEgY2hhbmdlIGluIGhvdyBrZXlzIGFyZSBoYW5kbGVkLgoKTm93LCB3aGVyZSBpcyBgaXdsX21sZF9hZGRfbGlua2AgYWN0dWFsbHkgY2FsbGVkIGZyb20/IFRoYXQmIzM5O3MgdGhlIG5leHQgY3JpdGljYWwgcXVlc3Rpb24uIEtub3dpbmcgdGhlIGNhbGwgZ3JhcGggd2lsbCBoZWxwIHRvIHVuZGVyc3RhbmQgdGhlIGJyb2FkZXIgaW1wbGljYXRpb25zIG9mIHRoZXNlIGNoYW5nZXMuIEkgbmVlZCB0byB0cmFjZSB0aGlzIGZ1bmN0aW9uIHRvIGdldCBhIGdvb2QgaGFuZGxlIG9uIHdoZXJlIGl0IGlzIGJlaW5nIHVzZWQgYW5kIHdoYXQgdGhlIHBvdGVudGlhbCBpbXBhY3QgaXMuIExldCYjMzk7cyBkaWcgZGVlcGVyIHRvIHNlZSB3aGVyZSB0aGF0IGZ1bmN0aW9uIGlzIHVzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDE4OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bF9tbGRfYWRkX2xpbmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2RlYnVnZnMuYz0xMDEzPUxJTktfREVCVUdGU19SRUFEX0ZJTEVfT1BTKGZ3X2lkLCA2NCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9kZWJ1Z2ZzLmMtMTAxNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2RlYnVnZnMuYzoxMDE1OnZvaWQgaXdsX21sZF9hZGRfbGlua19kZWJ1Z2ZzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvZGVidWdmcy5jLTEwMTYtXHRcdFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9kZWJ1Z2ZzLmM9MTE1NT1MSU5LX1NUQV9ERUJVR0ZTX1JFQURfT1BTKGZ3X2lkLCA2NCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9kZWJ1Z2ZzLmMtMTE1Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2RlYnVnZnMuYzoxMTU3OnZvaWQgaXdsX21sZF9hZGRfbGlua19zdGFfZGVidWdmcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2RlYnVnZnMuYy0xMTU4LVx0XHRcdFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2xpbmsuYz0zOD1pbnQgaXdsX21sZF9zZW5kX2xpbmtfY21kKHN0cnVjdCBpd2xfbWxkICptbGQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbGluay5jLTU4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbGluay5jOjU5OnN0YXRpYyBpbnQgaXdsX21sZF9hZGRfbGlua190b19mdyhzdHJ1Y3QgaXdsX21sZCAqbWxkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbGluay5jLTYwLVx0XHRcdFx0ICBzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpsaW5rX2NvbmYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbGluay5jPTUwMD1pd2xfbWxkX2luaXRfbGluayhzdHJ1Y3QgaXdsX21sZCAqbWxkLCBzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpsaW5rLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2xpbmsuYy01MTQtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9saW5rLmM6NTE1OmludCBpd2xfbWxkX2FkZF9saW5rKHN0cnVjdCBpd2xfbWxkICptbGQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9saW5rLmMtNTE2LVx0XHQgICAgIHN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKmJzc19jb25mKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2xpbmsuYy01NDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9saW5rLmM6NTQxOlx0cmV0ID0gaXdsX21sZF9hZGRfbGlua190b19mdyhtbGQsIGJzc19jb25mKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2xpbmsuYy01NDItXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbGluay5oPTEyMD1pbnQgaXdsX21sZF9zZW5kX2xpbmtfY21kKHN0cnVjdCBpd2xfbWxkICptbGQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbGluay5oLTEyMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2xpbmsuaDoxMjQ6aW50IGl3bF9tbGRfYWRkX2xpbmsoc3RydWN0IGl3bF9tbGQgKm1sZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2xpbmsuaC0xMjUtXHRcdCAgICAgc3RydWN0IGllZWU4MDIxMV9ic3NfY29uZiAqYnNzX2NvbmYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmM9NjU5PWludCBpd2xfbWxkX21hYzgwMjExX2FkZF9pbnRlcmZhY2Uoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYy02OTgtXHRpZiAodmlmLVx1MDAzZXR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfTkFOIFx1MDAyNlx1MDAyNiAhaWVlZTgwMjExX3ZpZl9pc19tbGQodmlmKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYzo2OTk6XHRcdHJldCA9IGl3bF9tbGRfYWRkX2xpbmsobWxkLCBcdTAwMjZ2aWYtXHUwMDNlYnNzX2NvbmYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYy03MDAtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYz0xMjQ3PXZvaWQgaXdsX21sZF91bmFzc2lnbl92aWZfY2hhbmN0eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tYWM4MDIxMS5jLTEyOTAtXHRcdGl3bF9tbGRfcmVtb3ZlX2xpbmsobWxkLCBsaW5rKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmM6MTI5MTpcdFx0aXdsX21sZF9hZGRfbGluayhtbGQsIGxpbmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYy0xMjkyLVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmM9MjcwNj1pd2xfbWxkX2NoYW5nZV92aWZfbGlua3Moc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYy0yNzQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYzoyNzQ2Olx0XHRcdGVyciA9IGl3bF9tbGRfYWRkX2xpbmsobWxkLCBsaW5rX2NvbmYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYy0yNzQ3LVx0XHRcdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYz0yOTE0PWNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIGl3bF9tbGRfaHdfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmMtMjk3Ni1cdC52aWZfYWRkX2RlYnVnZnMgPSBpd2xfbWxkX2FkZF92aWZfZGVidWdmcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmM6Mjk3NzpcdC5saW5rX2FkZF9kZWJ1Z2ZzID0gaXdsX21sZF9hZGRfbGlua19kZWJ1Z2ZzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYzoyOTc4Olx0Lmxpbmtfc3RhX2FkZF9kZWJ1Z2ZzID0gaXdsX21sZF9hZGRfbGlua19zdGFfZGVidWdmcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmMtMjk3OS0jZW5kaWZcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tbGQuaD01NzU9dm9pZCBpd2xfbWxkX2FkZF92aWZfZGVidWdmcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21sZC5oLTU3Ni1cdFx0XHQgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWxkLmg6NTc3OnZvaWQgaXdsX21sZF9hZGRfbGlua19kZWJ1Z2ZzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWxkLmgtNTc4LVx0XHRcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWxkLmgtNTgwLVx0XHRcdCAgICAgIHN0cnVjdCBkZW50cnkgKmRpcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tbGQuaDo1ODE6dm9pZCBpd2xfbWxkX2FkZF9saW5rX3N0YV9kZWJ1Z2ZzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWxkLmgtNTgyLVx0XHRcdFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5jPTU5Nj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zdGEuYzo1OTc6aXdsX21sZF9hZGRfbGlua19zdGEoc3RydWN0IGl3bF9tbGQgKm1sZCwgc3RydWN0IGllZWU4MDIxMV9saW5rX3N0YSAqbGlua19zdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zdGEuYy01OTgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5jPTgyMD1pbnQgaXdsX21sZF9hZGRfc3RhKHN0cnVjdCBpd2xfbWxkICptbGQsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc3RhLmMtODQ5LVx0Zm9yX2VhY2hfc3RhX2FjdGl2ZV9saW5rKG1sZF9zdGEtXHUwMDNldmlmLCBzdGEsIGxpbmtfc3RhLCBsaW5rX2lkKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zdGEuYzo4NTA6XHRcdHJldCA9IGl3bF9tbGRfYWRkX2xpbmtfc3RhKG1sZCwgbGlua19zdGEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc3RhLmMtODUxLVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5jPTEzMzA9aW50IGl3bF9tbGRfdXBkYXRlX2xpbmtfc3RhcyhzdHJ1Y3QgaXdsX21sZCAqbWxkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5jLTEzODgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zdGEuYzoxMzg5Olx0XHRyZXQgPSBpd2xfbWxkX2FkZF9saW5rX3N0YShtbGQsIGxpbmtfc3RhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5jLTEzOTAtXHRcdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDE4OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMDgxCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMzExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgVGhvdWdodHMgb24gaXdsd2lmaSBhbmQgbWFjODAyLjExIFRlc3RpbmcqKgoKT2theSwgc28gYGl3bF9tbGRfaHdfb3BzYCwgcmlnaHQsIHRoYXQmIzM5O3MgZGVmaW5lZCBhcyBhbiBgaWVlZTgwMjExX29wc2Agc3RydWN0dXJlLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGhvdyBleGFjdGx5IGRvZXMgdGhlIDgwMi4xMSBzdGFjayBnZXQgdGVzdGVkIHdpdGhpbiBzeXprYWxsZXIgYW5kIHRoZSBMaW51eCBrZXJuZWwgdGVzdGluZyBpbmZyYXN0cnVjdHVyZT8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGVzZSBjb21wb25lbnRzLgoKUmlnaHQsIHN5emthbGxlciBkb2VzIGZ1enogbWFjODAyMTEuIEFuZCB0aGUgbWV0aG9kIHVzZWQgaXMgYG1hYzgwMjExX2h3c2ltYC4gVGhhdCYjMzk7cyBhIHZpcnR1YWwsIHNvZnR3YXJlLWJhc2VkIG1hYzgwMjExIGRldmljZS4gSSByZWNhbGwgc2VlaW5nIHRoYXQgY29kZSBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5jYCBvciBhIHNpbWlsYXIgcGF0aC4gVGhlIGB2aXJ0X3dpZmlgIHNldHVwIGlzIGFub3RoZXIgb3B0aW9uLCB0aG91Z2ggYG1hYzgwMjExX2h3c2ltYCBpcyBtb3JlIGxpa2VseS4KCkJ1dCB3YWl0IGEgbWludXRlLi4uY2FuIEkgYWN0dWFsbHkgdXNlIGBpd2x3aWZpYCAqd2l0aCogYG1hYzgwMjExX2h3c2ltYD8gTm8sIHRoYXQmIzM5O3Mgbm90IGhvdyBpdCB3b3JrcyEgYG1hYzgwMjExX2h3c2ltYCAqaXMqIGl0cyBvd24gZHJpdmVyISBJdCYjMzk7cyBhIGtlcm5lbCBtb2R1bGUgKGBtYWM4MDIxMV9od3NpbS5rb2ApIHRoYXQgaW1wbGVtZW50cyB0aGUgYGllZWU4MDIxMV9vcHNgIGludGVyZmFjZSBpdHNlbGYuIEl0ICpyZXBsYWNlcyogYSByZWFsIGhhcmR3YXJlIGRyaXZlciwgYmFzaWNhbGx5LgoKU28sIHRoaW5raW5nIGFib3V0IGl0IG1vcmUgYnJvYWRseSwgZWFjaCB3aXJlbGVzcyBkcml2ZXIgKGl3bHdpZmksIGF0aDlrLCBydDI4MDAsIG10NzYsIGFuZCBldmVuIG1hYzgwMjExX2h3c2ltKSByZWdpc3RlcnMgaXRzIG93biBoYXJkd2FyZSB3aXRoIG1hYzgwMjExLiBUaGlzIGlzIGRvbmUgdGhyb3VnaCBgaWVlZTgwMjExX2FsbG9jX2h3KClgIGFuZCBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3KClgLiBUaGF0JiMzOTtzIHRoZSBrZXkgcmVnaXN0cmF0aW9uIG1lY2hhbmlzbS4KCk9rYXksIGxldCYjMzk7cyBjaGFuZ2UgZ2VhcnMgYSBiaXQuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgYGl3bF9tbGRgIG9yIGBpd2xfbXZtYCBpcyBpbml0aWFsaXplZC4gSSYjMzk7bGwgbmVlZCB0byBnbyBkaWdnaW5nIGZvciB0aGF0LiBMZXQgbWUgc3RhcnQgYnkgc2VhcmNoaW5nIGZvciB0aGUgY29kZSByZXNwb25zaWJsZSBmb3IgcmVnaXN0ZXJpbmcgdGhlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTg6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWVlZTgwMjExX2FsbG9jX2h3JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWM4MDIxMS5jPTE2MDk9c3RydWN0IGllZWU4MDIxMV9odyAqaXdsX2FsbG9jX2FsbCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21hYzgwMjExLmMtMTYxNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21hYzgwMjExLmM6MTYxNzpcdGh3ID0gaWVlZTgwMjExX2FsbG9jX2h3KHNpemVvZihzdHJ1Y3QgaXdsX3ByaXYpICYjNDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWM4MDIxMS5jLTE2MTgtXHRcdFx0XHRzaXplb2Yoc3RydWN0IGl3bF9vcF9tb2RlKSwgXHUwMDI2aXdsYWduX2h3X29wcyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWxkLmM9Mzk2PWl3bF9vcF9tb2RlX21sZF9zdGFydChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgY29uc3Qgc3RydWN0IGl3bF9yZl9jZmcgKmNmZyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tbGQuYy00MDQtXHQvKiBBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSBhIG5ldyBoYXJkd2FyZSBkZXZpY2UgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21sZC5jOjQwNTpcdGh3ID0gaWVlZTgwMjExX2FsbG9jX2h3KHNpemVvZihzdHJ1Y3QgaXdsX29wX21vZGUpICYjNDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tbGQuYy00MDYtXHRcdFx0XHRzaXplb2Yoc3RydWN0IGl3bF9tbGQpLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL29wcy5jPTExOTg9aXdsX29wX21vZGVfbXZtX3N0YXJ0KHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBjb25zdCBzdHJ1Y3QgaXdsX3JmX2NmZyAqY2ZnLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL29wcy5jLTEyMjQtXHQgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9vcHMuYzoxMjI1Olx0aHcgPSBpZWVlODAyMTFfYWxsb2NfaHcoc2l6ZW9mKHN0cnVjdCBpd2xfb3BfbW9kZSkgJiM0MztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL29wcy5jLTEyMjYtXHRcdFx0XHRzaXplb2Yoc3RydWN0IGl3bF9tdm0pLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxODo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDQ1MwoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlRyYWNpbmcgdGhlIGl3bF90cmFucyBTdHJ1Y3R1cmUqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBJJiMzOTttIGxvb2tpbmcgYXQgYGl3bF9vcF9tb2RlX21sZF9zdGFydGAgYW5kIGBpd2xfb3BfbW9kZV9tdm1fc3RhcnRgLCBhbmQgaW1tZWRpYXRlbHkgdGhlIGBzdHJ1Y3QgaXdsX3RyYW5zICp0cmFuc2AgY2F1Z2h0IG15IGV5ZS4gIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoaXMgYGl3bF90cmFuc2AgY29tZXMgZnJvbS4gVGhpcyBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBhYnN0cmFjdGlvbiBsYXllciBpbiB0aGlzIEludGVsIHdpcmVsZXNzIGRyaXZlciwgaXNuJiMzOTt0IGl0PwoKUmlnaHQsIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byB0cmFjayBkb3duIHRoZSBhbGxvY2F0aW9uLiBTbywgSSBuZWVkIHRvIGZpbmQgdGhlIGNhbGxzIHRvIGBpd2xfdHJhbnNfYWxsb2NgIG9yIGBpd2xfdHJhbnNfcGNpZV9hbGxvY2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzICp0cmFucyogc3RydWN0dXJlIGlzIGluc3RhbnRpYXRlZCBhbmQgaW5pdGlhbGl6ZWQuIE9uY2UgSSBrbm93IHRoYXQsIEkmIzM5O2xsIGJlIG9uZSBzdGVwIGNsb3NlciB0byBncmFzcGluZyB0aGUgY29tcGxldGUgb3BlcmF0aW9uYWwgZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTg6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXdsX3RyYW5zX2FsbG9jfGl3bF90cmFuc19wY2llX2FsbG9jJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jPTI2MD1pbnQgaXdsYWduX3R4X3NrYihzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYy0zNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jOjM0NDpcdGRldl9jbWQgPSBpd2xfdHJhbnNfYWxsb2NfdHhfY21kKHByaXYtXHUwMDNldHJhbnMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYy0zNDUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYz0yMDI9c3RhdGljIHZvaWQgaXdsX3RyYW5zX3Jlc3RhcnRfd2soc3RydWN0IHdvcmtfc3RydWN0ICp3aylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTI2Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM6MjY3OnN0cnVjdCBpd2xfdHJhbnMgKml3bF90cmFuc19hbGxvYyh1bnNpZ25lZCBpbnQgcHJpdl9zaXplLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0yNjgtXHRcdFx0XHQgIHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jPTMzMj1JV0xfRVhQT1JUX1NZTUJPTChpd2xfdHJhbnNfc2VuZF9jbWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0zMzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jOjMzNDpzdHJ1Y3QgaXdsX2RldmljZV90eF9jbWQgKml3bF90cmFuc19hbGxvY190eF9jbWQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTMzNS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0zMzctfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYzozMzg6SVdMX0VYUE9SVF9TWU1CT0woaXdsX3RyYW5zX2FsbG9jX3R4X2NtZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTMzOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oPTgzOD1pd2xfdHJhbnNfZHVtcF9kYXRhKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCB1MzIgZHVtcF9tYXNrLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmgtODQxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaDo4NDI6c3RydWN0IGl3bF9kZXZpY2VfdHhfY21kICppd2xfdHJhbnNfYWxsb2NfdHhfY21kKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmgtODQzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmg9MTA4OT1zdGF0aWMgaW5saW5lIHZvaWQgaXdsX3RyYW5zX2ZpbmlzaF9zd19yZXNldChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oLTEwOTYtICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaDoxMDk3OnN0cnVjdCBpd2xfdHJhbnMgKml3bF90cmFuc19hbGxvYyh1bnNpZ25lZCBpbnQgcHJpdl9zaXplLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaC0xMDk4LVx0XHRcdFx0ICBzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdHguYz03NTA9c3RhdGljIGludCBpd2xfbWxkX3R4X21wZHUoc3RydWN0IGl3bF9tbGQgKm1sZCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90eC5jLTc2Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3R4LmM6NzY3Olx0ZGV2X3R4X2NtZCA9IGl3bF90cmFuc19hbGxvY190eF9jbWQobWxkLVx1MDAzZXRyYW5zKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3R4LmMtNzY4LVx0aWYgKHVubGlrZWx5KCFkZXZfdHhfY21kKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90eC5jPTU1Mz1pd2xfbXZtX3NldF90eF9wYXJhbXMoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90eC5jLTU2MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3R4LmM6NTYyOlx0ZGV2X2NtZCA9IGl3bF90cmFuc19hbGxvY190eF9jbWQobXZtLVx1MDAzZXRyYW5zKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3R4LmMtNTYzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYz0zNzQzPXZvaWQgaXdsX3RyYW5zX3BjaWVfc3luY19ubWkoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTM3NjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmM6Mzc2MjpzdGF0aWMgaW50IGl3bF90cmFuc19wY2llX2FsbG9jX3R4Y21kX3Bvb2woc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmMtMzc2My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jPTM3OTk9c3RhdGljIHN0cnVjdCBpd2xfdHJhbnMgKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jOjM4MDA6aXdsX3RyYW5zX3BjaWVfYWxsb2Moc3RydWN0IHBjaV9kZXYgKnBkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmMtMzgwMS1cdFx0ICAgICBjb25zdCBzdHJ1Y3QgaXdsX21hY19jZmcgKm1hY19jZmcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTM4MDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmM6MzgwOTpcdHRyYW5zID0gaXdsX3RyYW5zX2FsbG9jKHNpemVvZihzdHJ1Y3QgaXdsX3RyYW5zX3BjaWUpLCBcdTAwMjZwZGV2LVx1MDAzZWRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy0zODEwLVx0XHRcdFx0bWFjX2NmZyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTM4MjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmM6MzgyMTpcdHJldCA9IGl3bF90cmFuc19wY2llX2FsbG9jX3R4Y21kX3Bvb2wodHJhbnMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTM4MjItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYz00MjMyPWludCBpd2xfcGNpX2dlbjFfMl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmMtNDI0NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYzo0MjQ2Olx0aXdsX3RyYW5zID0gaXdsX3RyYW5zX3BjaWVfYWxsb2MocGRldiwgbWFjX2NmZywgXHUwMDI2aW5mbywgaHdfYmFzZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmMtNDI0Ny1cdGlmIChJU19FUlIoaXdsX3RyYW5zKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTg6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY2NTMKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBzaXR1YXRpb246CgoqKkludmVzdGlnYXRpbmcgdGhlIEFsbG9jYXRpb24gUGF0aCBvZiBgaXdsX3RyYW5zX3BjaWVfYWxsb2NgKioKCk9rYXksIHNvIGBpd2xfdHJhbnNfcGNpZV9hbGxvY2AgaXMgY2FsbGVkIHNvbGVseSBmcm9tIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb25zLCBzcGVjaWZpY2FsbHkgYGl3bF9wY2lfZ2VuMV8yX3Byb2JlYCBvciBgaXdsX3BjaV9wcm9iZWAuIFRoYXQmIzM5O3MgYSBwcmV0dHkgdGlnaHQgY29uc3RyYWludCwgYW5kIGl0IG1ha2VzIG1lIHdvbmRlciBpZiB0aGVyZSYjMzk7cyBhbnkgb3RoZXIgaW5zdGFudGlhdGlvbiBvZiB0aGUgbW9yZSBnZW5lcmFsIGBpd2xfdHJhbnNfYWxsb2NgIGZ1bmN0aW9uLiBJdCBzZWVtcyBsaWtlIGl0IHdvdWxkIG9ubHkgYmUgaW4gdGhlIGluaXRpYWxpemF0aW9uIHBhdGguIEkgbmVlZCB0byBiZSBzdXJlIHRoaXMgaXMgY29ycmVjdC4gSSBzaG91bGQgZG91YmxlIGNoZWNrIHRoYXQgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgY2FsbCBzaXRlcywgZXZlbiBpZiB0aGV5IGFyZSBpbiBvdGhlciBkcml2ZXJzLCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBmdWxsIGFsbG9jYXRpb24gcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTg6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXdsX3RyYW5zX2FsbG9jXFwoJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM9MjAyPXN0YXRpYyB2b2lkIGl3bF90cmFuc19yZXN0YXJ0X3drKHN0cnVjdCB3b3JrX3N0cnVjdCAqd2spXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0yNjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jOjI2NzpzdHJ1Y3QgaXdsX3RyYW5zICppd2xfdHJhbnNfYWxsb2ModW5zaWduZWQgaW50IHByaXZfc2l6ZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtMjY4LVx0XHRcdFx0ICBzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaD0xMDg5PXN0YXRpYyBpbmxpbmUgdm9pZCBpd2xfdHJhbnNfZmluaXNoX3N3X3Jlc2V0KHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmgtMTA5Ni0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oOjEwOTc6c3RydWN0IGl3bF90cmFucyAqaXdsX3RyYW5zX2FsbG9jKHVuc2lnbmVkIGludCBwcml2X3NpemUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oLTEwOTgtXHRcdFx0XHQgIHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmM9MzgwMD1pd2xfdHJhbnNfcGNpZV9hbGxvYyhzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmMtMzgwOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYzozODA5Olx0dHJhbnMgPSBpd2xfdHJhbnNfYWxsb2Moc2l6ZW9mKHN0cnVjdCBpd2xfdHJhbnNfcGNpZSksIFx1MDAyNnBkZXYtXHUwMDNlZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTM4MTAtXHRcdFx0XHRtYWNfY2ZnKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTg6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTczOTMKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAxMDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVHJhY2luZyB0aGUgRHJpdmVyIEluaXRpYWxpemF0aW9uIEZsb3cqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBgaXdsd2lmaWAgZHJpdmVyIGNvZGUsIHNwZWNpZmljYWxseSB0aGUgUENJZS1yZWxhdGVkIHN0dWZmLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMgYWJvdXQgd2hlcmUgYGl3bF90cmFuc19hbGxvY2AgZ2V0cyBjYWxsZWQsIGFuZCBpdCBsb29rcyBsaWtlIHRoZSBjb2RlIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIGBpd2xfdHJhbnNfYWxsb2NgIGlzICpvbmx5KiBjYWxsZWQgYnkgYGl3bF90cmFuc19wY2llX2FsbG9jYC4gVGhhdCYjMzk7cyBnb29kOyBpdCBuYXJyb3dzIHRoaW5ncyBkb3duIGNvbnNpZGVyYWJseS4gQW5kIGBpd2xfdHJhbnNfcGNpZV9hbGxvY2AgaXRzZWxmIGlzICpvbmx5KiBldmVyIGNhbGxlZCBmcm9tIGBpd2xfcGNpX2dlbjFfMl9wcm9iZWAuIFNvLCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbml0aWFsaXphdGlvbiBmbG93LCBteSBuZXh0IHN0ZXAgaXMgY2xlYXI6IEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gYGl3bF9wY2lfZ2VuMV8yX3Byb2JlYCBhbmQgc2VlIHdoZXJlICppdCogZ2V0cyBjYWxsZWQgZnJvbS4gVGhhdCB3aWxsIGdpdmUgbWUgdGhlIGVudHJ5IHBvaW50IGZvciB0aGlzIHBhcnRpY3VsYXIgc3Vic3lzdGVtLiBUaGF0JiMzOTtzIHdoZXJlIEkgd2lsbCBzdGFydCBteSBpbnZlc3RpZ2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxODo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpd2xfcGNpX2dlbjFfMl9wcm9iZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM9MTE1MD1zdGF0aWMgaW50IGl3bF9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTExODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM6MTE5MDpcdHJldHVybiBpd2xfcGNpX2dlbjFfMl9wcm9iZShwZGV2LCBlbnQsIG1hY19jZmcsIGh3X2Jhc2UsIGh3X3Jldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmMtMTE5MS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi9pbnRlcm5hbC5oPTEyMDk9dm9pZCBpd2xfcGNpZV9hbGxvY19md19tb25pdG9yKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCB1OCBtYXhfcG93ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi9pbnRlcm5hbC5oOjEyMTA6aW50IGl3bF9wY2lfZ2VuMV8yX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi9pbnRlcm5hbC5oLTEyMTEtXHRcdFx0IGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jPTQyMDA9c3RhdGljIHZvaWQgaXdsX3BjaWVfY2hlY2tfbWVfc3RhdHVzKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy00MjMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jOjQyMzI6aW50IGl3bF9wY2lfZ2VuMV8yX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTQyMzMtXHRcdFx0IGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDE4OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MjI4CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBpd2xfcGNpIERyaXZlcioqCgpPa2F5LCBzbyBgaXdsX3BjaV9wcm9iZWAuLi4gdGhhdCYjMzk7cyB0aGUgcHJvYmUgZnVuY3Rpb24gZm9yIHRoZSBgaXdsX3BjaV9kcml2ZXJgLCB3aGljaCBpcyBrZXkgdG8gZ2V0dGluZyB0aGVzZSBJbnRlbCB3aXJlbGVzcyBjYXJkcyB3b3JraW5nIG9uIFBDSS4gVGltZSB0byBsb29rIGludG8gdGhlIHNwZWNpZmljcy4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoYXQgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgZHJpdmVyIHN0cnVjdHVyZSBpcyBjb3JyZWN0LCBhbmQgc2VlIHdoYXQgdGhlIHByb2JlIGZ1bmN0aW9uIGFjdHVhbGx5IGRvZXMuIExldCYjMzk7cyBoZWFkIG92ZXIgdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuY2AgYW5kIGRpZyBpbnRvIGBpd2xfcGNpX2RyaXZlcmAgaXRzZWxmIHRvIHNlZSBob3cgdGhpcyB0aGluZyBpcyBwdXQgdG9nZXRoZXIuIEdvdHRhIHVuZGVyc3RhbmQgdGhlIGVudHJ5IHBvaW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTg6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMzMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEzMzA6XHRcbjEzMzE6XHRzdGF0aWMgdm9pZCBpd2xfcGNpX2R1bXAoc3RydWN0IGRldmljZSAqZGV2aWNlKVxuMTMzMjpcdHtcbjEzMzM6XHRcdHN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gdG9fcGNpX2RldihkZXZpY2UpO1xuMTMzNDpcdFx0c3RydWN0IGl3bF90cmFucyAqdHJhbnMgPSBwY2lfZ2V0X2RydmRhdGEocGRldik7XG4xMzM1Olx0XG4xMzM2Olx0XHRpd2xfb3BfbW9kZV9kdW1wKHRyYW5zLVx1MDAzZW9wX21vZGUpO1xuMTMzNzpcdH1cbjEzMzg6XHRcbjEzMzk6XHRzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgaXdsX3BjaV9kcml2ZXIgPSB7XG4xMzQwOlx0XHQubmFtZSA9IERSVl9OQU1FLFxuMTM0MTpcdFx0LmlkX3RhYmxlID0gaXdsX2h3X2NhcmRfaWRzLFxuMTM0MjpcdFx0LnByb2JlID0gaXdsX3BjaV9wcm9iZSxcbjEzNDM6XHRcdC5yZW1vdmUgPSBpd2xfcGNpX3JlbW92ZSxcbjEzNDQ6XHRcdC5kcml2ZXIucG0gPSBJV0xfUE1fT1BTLFxuMTM0NTpcdFx0LmRyaXZlci5jb3JlZHVtcCA9IGl3bF9wY2lfZHVtcCxcbjEzNDY6XHR9O1xuMTM0NzpcdFxuMTM0ODpcdGludCBfX211c3RfY2hlY2sgaXdsX3BjaV9yZWdpc3Rlcl9kcml2ZXIodm9pZClcbjEzNDk6XHR7XG4xMzUwOlx0XHRpbnQgcmV0O1xuMTM1MTpcdFx0cmV0ID0gcGNpX3JlZ2lzdGVyX2RyaXZlcihcdTAwMjZpd2xfcGNpX2RyaXZlcik7XG4xMzUyOlx0XHRpZiAocmV0KVxuMTM1MzpcdFx0XHRwcl9lcnIoXCYjMzQ7VW5hYmxlIHRvIGluaXRpYWxpemUgUENJIG1vZHVsZVxcblwmIzM0Oyk7XG4xMzU0Olx0XG4xMzU1Olx0XHRyZXR1cm4gcmV0O1xuMTM1NjpcdH1cbjEzNTc6XHRcbjEzNTg6XHR2b2lkIGl3bF9wY2lfdW5yZWdpc3Rlcl9kcml2ZXIodm9pZClcbjEzNTk6XHR7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDE4OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4OTQzCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNTI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBEZWNpc2lvbiBmb3IgaXdsd2lmaSoqCgpPa2F5LCBzbyBgaXdsd2lmaWAgaXMgZGVmaW5pdGVseSBhbiBJbnRlbC1zcGVjaWZpYyBQQ0kgd2lyZWxlc3MgZHJpdmVyLiBUaGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gTm93LCBsZXQmIzM5O3MgY2FyZWZ1bGx5IGNvbnNpZGVyIHRob3NlIG5lZ2F0aXZlIGNyaXRlcmlhIG91dGxpbmVkIGluIFNlY3Rpb24gMiBvZiB0aGUgaW5zdHJ1Y3Rpb25zLiBUaGUga2V5IGhlcmUgaXMgZGV0ZXJtaW5pbmcgaWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgKnVucmVhY2hhYmxlKiBpbiBvdXIgc3RhbmRhcmQgZnV6emluZyBzZXR1cC4KCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBjYW4gd2UgZXZlbiBlbXVsYXRlIG9yIGZ1enogYGl3bHdpZmlgIGluIGEgc3RhbmRhcmQgZW52aXJvbm1lbnQgbGlrZSBHQ0Ugb3IgUUVNVT8gQW5kIHRoZSBhbnN3ZXIsIGFmdGVyIGEgbW9tZW50JiMzOTtzIHJlZmxlY3Rpb24sIGlzIG5vLiBJbnRlbCBXaS1GaSBQQ0kgY2FyZHMsIGxpa2UgdGhlIEFYMjAwIG9yIEFYMjEwLCBhcmUgcGh5c2ljYWwgaGFyZHdhcmUgZGV2aWNlcy4gU3RhbmRhcmQgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoZW0uIEl0IHByb3ZpZGVzIHZpcnR1YWwgbmV0d29yayBpbnRlcmZhY2VzLCBzdXJlLCBidXQgbm90IHBoeXNpY2FsIFdpLUZpIGNhcmRzLiBXZSBoYXZlIGBtYWM4MDIxMV9od3NpbWAgZm9yIHNvZnR3YXJlLWJhc2VkIHZpcnR1YWwgV2ktRmksIGJ1dCBgaXdsd2lmaWAgaXMgdGhlIHByb3ByaWV0YXJ5IGRyaXZlciBmb3IgcmVhbCBoYXJkd2FyZS4KClRoaXMgbWVhbnMsIHdpdGhvdXQgYW4gYWN0dWFsIEludGVsIFdpLUZpIFBDSWUgY2FyZCBwcmVzZW50IGFuZCB0aGUgcHJvcHJpZXRhcnkgZmlybXdhcmUgbG9hZGVkLCBjZXJ0YWluIGtleSBmdW5jdGlvbnMgbmV2ZXIgZ2V0IGV4ZWN1dGVkLiBTcGVjaWZpY2FsbHksIGBpd2xfcGNpX3Byb2JlYCBuZXZlciBydW5zLCBhbmQgY29uc2VxdWVudGx5LCBgaXdsX29wX21vZGVfbWxkX3N0YXJ0YCwgYGl3bF9vcF9tb2RlX212bV9zdGFydGAsIGFuZCB0aGUgbWFjODAyMTEgZGV2aWNlIHJlZ2lzdHJhdGlvbiB3aXRoIGBpd2xfbWxkX2h3X29wc2Agb3IgYGl3bF9tdm1faHdfb3BzYCBuZXZlciBoYXBwZW4uIFRoZXJlZm9yZSwgYGl3bF9tbGRfYWRkX2xpbmtgLCBgaXdsX21sZF9zZXRfa2V5X2FkZGAsIGFuZCBgX19pd2xfbXZtX21hY19zZXRfa2V5YCBhcmUgYWxsIGRlYWQgY29kZS4KCkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIGNoZWNrIHdoZXRoZXIgdGhlcmUgbWlnaHQgYmUgc29tZSBraW5kIG9mIG1vY2ssIGVtdWxhdGlvbiwgb3IgZ2FkZ2V0IGZyYW1ld29yayB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbCBpdHNlbGYgdGhhdCBjb3VsZCBhbGxvdyBzb21lIGxldmVsIG9mIGZ1enppbmcuIExldCBtZSBkbyBhIHF1aWNrIHNlYXJjaCB3aXRoaW4gdGhlIGB0b29scy90ZXN0aW5nYCBhbmQgYGRyaXZlcnMvYCBkaXJlY3RvcmllcyBmb3IgJiMzNDtpd2x3aWZpJiMzNDsgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBCdXQsIEkgYW0gcmVhc29uYWJseSBjZXJ0YWluIHRoaXMgZmFsbHMgaW50byB0aGUgJiMzNDtTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUmIzM0OyBjYXRlZ29yeSBhbmQgaXMgbGlrZWx5ICpXb3J0aEZ1enppbmc9ZmFsc2UqLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxODo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bHdpZmkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTg6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk5NjkKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipFeHBsb3JpbmcgVmlydHVhbCBXaXJlbGVzcyBEcml2ZXJzKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSSYjMzk7bSB0aGlua2luZywgJiMzNDtXaGVyZSB3b3VsZCBJIHR5cGljYWxseSBmaW5kIHRoZSB2aXJ0dWFsIHdpcmVsZXNzIGRyaXZlciBpbXBsZW1lbnRhdGlvbnMgaW4gdGhlIGtlcm5lbCBzb3VyY2U/JiMzNDsgTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBnbyBkaWdnaW5nIHRocm91Z2ggdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9gIGRpcmVjdG9yeS4gVGhhdCYjMzk7cyB1c3VhbGx5IHRoZSBnby10byBzcG90IGZvciBhbnl0aGluZyBuZXR3b3JrLXJlbGF0ZWQsIGFuZCB3aXJlbGVzcyBmYWxscyBzcXVhcmVseSB3aXRoaW4gdGhhdCBkb21haW4uIFRoZSBnb2FsIGhlcmUgaXMgdG8gZ2V0IGEgbGF5IG9mIHRoZSBsYW5kOyBpZGVudGlmeSB3aGF0JiMzOTtzIGFscmVhZHkgYnVpbHQsIGdldCBhIGhpZ2gtbGV2ZWwgc2Vuc2Ugb2YgdGhlIGV4aXN0aW5nIHZpcnR1YWwgZHJpdmVyIGFyY2hpdGVjdHVyZXMsIGFuZCBzZWUgd2hhdCYjMzk7cyBiZWluZyBsZXZlcmFnZWQgaW4gdGhpcyBzcGFjZS4gSSYjMzk7bSBlc3NlbnRpYWxseSBtZW50YWxseSBjYXRhbG9naW5nIHdoYXQmIzM5O3MgYXZhaWxhYmxlIGZvciB2aXJ0dWFsIHdpcmVsZXNzIGZ1bmN0aW9uYWxpdHkgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIHRoZXJlIGJlZm9yZSBJIGV2ZW4gc3RhcnQgdG8gZm9ybXVsYXRlIGFueSBraW5kIG9mIHBsYW4uIExldCYjMzk7cyBzZWUgd2hhdCBpbnRlcmVzdGluZyB2aXJ0dWFsIGRyaXZlcnMgaGF2ZSBiZWVuIGltcGxlbWVudGVkIHdpdGhpbiB0aGF0IGRpcmVjdG9yeSEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTg6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O21hYzgwMjExX2h3c2ltLmgmIzM0OywKICAgICYjMzQ7bWFjODAyMTFfaHdzaW1faS5oJiMzNDssCiAgICAmIzM0O21hYzgwMjExX2h3c2ltX21haW4uYyYjMzQ7LAogICAgJiMzNDttYWM4MDIxMV9od3NpbV9uYW4uYyYjMzQ7LAogICAgJiMzNDttYWM4MDIxMV9od3NpbV9uYW4uaCYjMzQ7LAogICAgJiMzNDt2aXJ0X3dpZmkuYyYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDE4OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMjkyCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNvbnNpZGVyaW5nIFdpcmVsZXNzIERldmljZSBFbXVsYXRpb24qKgoKT2theSwgc28gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsYCBkaXJlY3RvcnkgaXMgcHJldHR5IGxpbWl0ZWQsIGp1c3QgYG1hYzgwMjExX2h3c2ltYCBhbmQgYHZpcnRfd2lmaWAuIEJ1dCB0aGF0JiMzOTtzIG5vdCB0aGUgd2hvbGUgc3Rvcnkgd2hlbiB3ZSYjMzk7cmUgdGhpbmtpbmcgYWJvdXQgc3l6a2FsbGVyJiMzOTtzIHBvdGVudGlhbCBmb3IgZW11bGF0aW9uLCByaWdodD8gV2hhdCBhYm91dCBVU0IgV2ktRmkgZGV2aWNlcz8gTm93LCAqc29tZSogVVNCIFdpLUZpIGRldmljZXMg4oCTIGFuZCBJJiMzOTttIHRoaW5raW5nIHNwZWNpZmljYWxseSBvZiB0aGluZ3MgbGlrZSB0aGUgcnRsODE4NyBvciBldmVuIGF0aDlrX2h0YyDigJMgKmNvdWxkKiB0aGVvcmV0aWNhbGx5IGJlIGVtdWxhdGVkIHRocm91Z2ggVVNCIFJhdyBHYWRnZXQsIGlmIHRoZSB1bmRlcmx5aW5nIHN5emthbGxlciBzdXBwb3J0IGlzIHRoZXJlLiBJdCYjMzk7cyBzb21ldGhpbmcgd29ydGggZXhwbG9yaW5nLgoKSG1tLCBpcyBpd2x3aWZpIGEgVVNCIGRldmljZT8gTm8sIEkmIzM5O20gcHJldHR5IHN1cmUgaXdsd2lmaSBpcyBQQ0llIG9ubHksIGZvdW5kIHVuZGVyIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvYC4gSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgdGhvdWdoLCBsZXQgbWUgZG91YmxlIGNoZWNrIGlmIHRoZXJlJiMzOTtzICphbnkqIGV2aWRlbmNlIG9mIGEgbm9uLVBDSWUgdHJhbnNwb3J0IGx1cmtpbmcgd2l0aGluIGl3bHdpZmkuIFRpbWUgdG8gZGlnIGEgYml0IGRlZXBlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTg6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXdsX3RyYW5zX2FsbG9jJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jPTI2MD1pbnQgaXdsYWduX3R4X3NrYihzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYy0zNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jOjM0NDpcdGRldl9jbWQgPSBpd2xfdHJhbnNfYWxsb2NfdHhfY21kKHByaXYtXHUwMDNldHJhbnMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYy0zNDUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYz0yMDI9c3RhdGljIHZvaWQgaXdsX3RyYW5zX3Jlc3RhcnRfd2soc3RydWN0IHdvcmtfc3RydWN0ICp3aylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTI2Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM6MjY3OnN0cnVjdCBpd2xfdHJhbnMgKml3bF90cmFuc19hbGxvYyh1bnNpZ25lZCBpbnQgcHJpdl9zaXplLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0yNjgtXHRcdFx0XHQgIHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jPTMzMj1JV0xfRVhQT1JUX1NZTUJPTChpd2xfdHJhbnNfc2VuZF9jbWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0zMzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jOjMzNDpzdHJ1Y3QgaXdsX2RldmljZV90eF9jbWQgKml3bF90cmFuc19hbGxvY190eF9jbWQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTMzNS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0zMzctfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYzozMzg6SVdMX0VYUE9SVF9TWU1CT0woaXdsX3RyYW5zX2FsbG9jX3R4X2NtZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTMzOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oPTgzOD1pd2xfdHJhbnNfZHVtcF9kYXRhKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCB1MzIgZHVtcF9tYXNrLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmgtODQxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaDo4NDI6c3RydWN0IGl3bF9kZXZpY2VfdHhfY21kICppd2xfdHJhbnNfYWxsb2NfdHhfY21kKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmgtODQzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmg9MTA4OT1zdGF0aWMgaW5saW5lIHZvaWQgaXdsX3RyYW5zX2ZpbmlzaF9zd19yZXNldChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oLTEwOTYtICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaDoxMDk3OnN0cnVjdCBpd2xfdHJhbnMgKml3bF90cmFuc19hbGxvYyh1bnNpZ25lZCBpbnQgcHJpdl9zaXplLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaC0xMDk4LVx0XHRcdFx0ICBzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdHguYz03NTA9c3RhdGljIGludCBpd2xfbWxkX3R4X21wZHUoc3RydWN0IGl3bF9tbGQgKm1sZCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90eC5jLTc2Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3R4LmM6NzY3Olx0ZGV2X3R4X2NtZCA9IGl3bF90cmFuc19hbGxvY190eF9jbWQobWxkLVx1MDAzZXRyYW5zKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3R4LmMtNzY4LVx0aWYgKHVubGlrZWx5KCFkZXZfdHhfY21kKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90eC5jPTU1Mz1pd2xfbXZtX3NldF90eF9wYXJhbXMoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90eC5jLTU2MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3R4LmM6NTYyOlx0ZGV2X2NtZCA9IGl3bF90cmFuc19hbGxvY190eF9jbWQobXZtLVx1MDAzZXRyYW5zKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3R4LmMtNTYzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYz0zODAwPWl3bF90cmFuc19wY2llX2FsbG9jKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy0zODA4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jOjM4MDk6XHR0cmFucyA9IGl3bF90cmFuc19hbGxvYyhzaXplb2Yoc3RydWN0IGl3bF90cmFuc19wY2llKSwgXHUwMDI2cGRldi1cdTAwM2VkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmMtMzgxMC1cdFx0XHRcdG1hY19jZmcpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxODo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjAwOQoJCQkJCQkJb3V0cHV0OiAxMjAKCQkJCQkJCXRob3VnaHRzOiA2MTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudDogVGhpcyBDb2RlIElzbiYjMzk7dCBGdXp6YWJsZSAoUENJZS1Cb3VuZCkqKgoKT2theSwgaGVyZSYjMzk7cyB0aGUgYnJlYWtkb3duLiBUaGUgdGV4dCBjb25maXJtcyB3aGF0IEkgc3VzcGVjdGVkOiBpdCYjMzk7cyBQQ0llLW9ubHkuIEkmIzM5O3ZlIHJlLXJlYWQgU2VjdGlvbiAxIGFuZCBTZWN0aW9uIDIgb2YgdGhlIHJlbGV2YW50IGRvY3VtZW50YXRpb24sIHdoaWNoIGVtcGhhc2l6ZXMgdGhhdCBmdXp6aW5nIGlzIG9ubHkgZWZmZWN0aXZlIG9uIGNvZGUgdGhhdCYjMzk7cyAqcmVhY2hhYmxlKiBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIENvZGUgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gUUVNVSBvciBHQ0UgaXMgYSBub24tc3RhcnRlci4KClNwZWNpZmljYWxseSwgdGhpcyBwYXRjaCBzZXJpZXMgdGFyZ2V0cyB0aGUgYGl3bHdpZmlgIGRyaXZlciwgcmVzaWRpbmcgZW50aXJlbHkgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2AuIFRoaXMgZHJpdmVyJiMzOTtzIGFsbCBhYm91dCBJbnRlbCBQQ0llIFdpLUZpIE5JQ3MsIHdoaWNoIG1lYW5zIHBoeXNpY2FsIEludGVsIGhhcmR3YXJlIOKAkyBzb21ldGhpbmcgc3RhbmRhcmQgdmlydHVhbCBtYWNoaW5lcyBjYW4mIzM5O3QgcmVwbGljYXRlLiBUaGUgbW9kaWZpY2F0aW9ucyBhZmZlY3QgYG1sZC9saW5rLmNgLCBgbWxkL21hYzgwMjExLmNgLCBhbmQgYG12bS9tYWM4MDIxMS5jYCwgc3BlY2lmaWNhbGx5OiBgaXdsX21sZF9hZGRfbGluaygpYCwgYGl3bF9tbGRfc2V0X2tleV9hZGQoKWAsIGFuZCBgX19pd2xfbXZtX21hY19zZXRfa2V5KClgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGFsbCB3aXRoaW4gdGhlIGBpd2xtdm1gIGFuZCBgaXdsbWxkYCBtb2R1bGVzLCBzbyBpdCYjMzk7cyBhbGwgUENJZS1ib3VuZC4KClRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nIHB1cnBvc2VzLiBJdCBmYWxscyBzcXVhcmVseSBpbnRvIHRoZSAmIzM0O3N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7IGNhdGVnb3J5IGRldGFpbGVkIGluIHRoZSBkb2N1bWVudGF0aW9uLgoKTm93LCBsZXQgbWUgZG91YmxlLWNoZWNrIHRoZSByZXF1aXJlZCBmaWVsZHMgZm9yIGBzZXQtcmVzdWx0c2A6CgoqICAgYFdvcnRoRnV6emluZ2A6IERlZmluaXRlbHkgYGZhbHNlYC4KKiAgIGBSZWFzb25pbmdgOiBUaGUgZXhwbGFuYXRpb24gaXMgcm9jayBzb2xpZDogdGhlIGNoYW5nZXMgYXJlIGNvbmZpbmVkIHRvIHRoZSBgaXdsd2lmaWAgZHJpdmVyLCB3aGljaCBpcyBhIGRyaXZlciBmb3IgSW50ZWwgUENJZSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJzIHRoYXQgcmVsaWVzIG9uIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSB2aXJ0dWFsaXphdGlvbiBlbnZpcm9ubWVudHMuCiogICBgRm9jdXNTeW1ib2xzYDogTm8gc3ltYm9scyB0byBmb2N1cyBvbiwgc28gYW4gZW1wdHkgYXJyYXkgYFtdYC4KKiAgIGBFbmFibGVDb25maWdzYDogTm90aGluZyBzcGVjaWZpYyB0byBlbmFibGUsIHRodXMgYW4gZW1wdHkgYXJyYXkgYFtdYC4KCkV2ZXJ5dGhpbmcmIzM5O3MgY2xlYXIuIE5vIG5lZWQgdG8gbG9vayBhbnkgZnVydGhlci4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDE5OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3ItcGF0aCBmcmVlaW5nIGxvZ2ljIChzd2l0Y2hpbmcga2ZyZWUgdG8ga2ZyZWVfcmN1KSBpbiBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpIChzcGVjaWZpY2FsbHkgaW4gbWxkIGFuZCBtdm0gbW9kdWxlcykuIGl3bHdpZmkgaXMgYSBoYXJkd2FyZSBkcml2ZXIgZm9yIEludGVsIFBDSWUgd2lyZWxlc3MgYWRhcHRlcnMgcmVxdWlyaW5nIHBoeXNpY2FsIFBDSWUgZGV2aWNlcyB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBlcnJvci1wYXRoIGZyZWVpbmcgbG9naWMgKHN3aXRjaGluZyBrZnJlZSB0byBrZnJlZV9yY3UpIGluIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkgKHNwZWNpZmljYWxseSBpbiBtbGQgYW5kIG12bSBtb2R1bGVzKS4gaXdsd2lmaSBpcyBhIGhhcmR3YXJlIGRyaXZlciBmb3IgSW50ZWwgUENJZSB3aXJlbGVzcyBhZGFwdGVycyByZXF1aXJpbmcgcGh5c2ljYWwgUENJZSBkZXZpY2VzIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDE5OjAwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxODo1ODoyMy45ODYxNjY2MTVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDM5NzQ0Njk5ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBlcnJvci1wYXRoIGZyZWVpbmcgbG9naWMgKHN3aXRjaGluZyBrZnJlZSB0byBrZnJlZV9yY3UpIGluIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkgKHNwZWNpZmljYWxseSBpbiBtbGQgYW5kIG12bSBtb2R1bGVzKS4gaXdsd2lmaSBpcyBhIGhhcmR3YXJlIGRyaXZlciBmb3IgSW50ZWwgUENJZSB3aXJlbGVzcyBhZGFwdGVycyByZXF1aXJpbmcgcGh5c2ljYWwgUENJZSBkZXZpY2VzIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDE4OjU4OjIzLjk4NjE3MzQwNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY0NzYwMDcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYzcxMGNlMTU2ZWEwOGIzYzcxNzVmNDUxNWViOGI5NTU0YjhlYjA4NFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIFNlcCAxNCAxODo1ODoyMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9saW5rLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9saW5rLmNcXG5pbmRleCA5NmUwNjk0MGIzNGM0Li41NWI4NDgwMTkyM2Q2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2xpbmsuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2xpbmsuY1xcbkBAIC01NDEsMTUgKzU0MSwxNSBAQCBpbnQgaXdsX21sZF9hZGRfbGluayhzdHJ1Y3QgaXdsX21sZCAqbWxkLFxcbiBcXHRyZXQgPSBpd2xfbWxkX2FkZF9saW5rX3RvX2Z3KG1sZCwgYnNzX2NvbmYpO1xcbiBcXHRpZiAocmV0KSB7XFxuIFxcdFxcdFJDVV9JTklUX1BPSU5URVIobWxkLVxcdTAwM2Vmd19pZF90b19ic3NfY29uZltsaW5rLVxcdTAwM2Vmd19pZF0sIE5VTEwpO1xcbi1cXHRcXHRSQ1VfSU5JVF9QT0lOVEVSKG1sZF92aWYtXFx1MDAzZWxpbmtbYnNzX2NvbmYtXFx1MDAzZWxpbmtfaWRdLCBOVUxMKTtcXG4gXFx0XFx0Z290byBmcmVlO1xcbiBcXHR9XFxuIFxcbiBcXHRyZXR1cm4gcmV0O1xcbiBcXG4gZnJlZTpcXG4rXFx0UkNVX0lOSVRfUE9JTlRFUihtbGRfdmlmLVxcdTAwM2VsaW5rW2Jzc19jb25mLVxcdTAwM2VsaW5rX2lkXSwgTlVMTCk7XFxuIFxcdGlmICghaXNfZGVmbGluaylcXG4tXFx0XFx0a2ZyZWUobGluayk7XFxuK1xcdFxcdGtmcmVlX3JjdShsaW5rLCByY3VfaGVhZCk7XFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tYWM4MDIxMS5jXFxuaW5kZXggM2E0YzhmZGE2OGQwYS4uNjkzZjIwOTJhNzgxNSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tYWM4MDIxMS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuY1xcbkBAIC0yMjY1LDcgKzIyNjUsNyBAQCBzdGF0aWMgaW50IGl3bF9tbGRfc2V0X2tleV9hZGQoc3RydWN0IGl3bF9tbGQgKm1sZCxcXG4gXFx0aWYgKHJldCkge1xcbiBcXHRcXHRpZiAocHRrX3BuKSB7XFxuIFxcdFxcdFxcdFJDVV9JTklUX1BPSU5URVIobWxkX3N0YS1cXHUwMDNlcHRrX3BuW2tleWlkeF0sIE5VTEwpO1xcbi1cXHRcXHRcXHRrZnJlZShwdGtfcG4pO1xcbitcXHRcXHRcXHRrZnJlZV9yY3UocHRrX3BuLCByY3VfaGVhZCk7XFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmNcXG5pbmRleCA1YmQyNDZlMzc5NDMyLi5iMGM0ZjI0NWM4OGZmIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWM4MDIxMS5jXFxuQEAgLTQzODUsNyArNDM4NSw3IEBAIHN0YXRpYyBpbnQgX19pd2xfbXZtX21hY19zZXRfa2V5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbiBcXHRcXHRcXHRrZXktXFx1MDAzZWh3X2tleV9pZHggPSBTVEFfS0VZX0lEWF9JTlZBTElEO1xcbiBcXHRcXHRcXHRpZiAocHRrX3BuKSB7XFxuIFxcdFxcdFxcdFxcdFJDVV9JTklUX1BPSU5URVIobXZtc3RhLVxcdTAwM2VwdGtfcG5ba2V5aWR4XSwgTlVMTCk7XFxuLVxcdFxcdFxcdFxcdGtmcmVlKHB0a19wbik7XFxuK1xcdFxcdFxcdFxcdGtmcmVlX3JjdShwdGtfcG4sIHJjdV9oZWFkKTtcXG4gXFx0XFx0XFx0fVxcbiBcXHRcXHRcXHQvKlxcbiBcXHRcXHRcXHQgKiBjYW4ndCBhZGQga2V5IGZvciBSWCwgYnV0IHdlIGRvbid0IG5lZWQgaXRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTg6NTg6MjQuNTUxNjA4MDQ2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoxMDM0MDkwMTM2NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGVycm9yLXBhdGggZnJlZWluZyBsb2dpYyAoc3dpdGNoaW5nIGtmcmVlIHRvIGtmcmVlX3JjdSkgaW4gZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaSAoc3BlY2lmaWNhbGx5IGluIG1sZCBhbmQgbXZtIG1vZHVsZXMpLiBpd2x3aWZpIGlzIGEgaGFyZHdhcmUgZHJpdmVyIGZvciBJbnRlbCBQQ0llIHdpcmVsZXNzIGFkYXB0ZXJzIHJlcXVpcmluZyBwaHlzaWNhbCBQQ0llIGRldmljZXMgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIENvbnNlcXVlbnRseSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjNzEwY2UxNTZlYTA4YjNjNzE3NWY0NTE1ZWI4Yjk1NTRiOGViMDg0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBTZXAgMTQgMTg6NTg6MjMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9saW5rLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9saW5rLmNcbmluZGV4IDk2ZTA2OTQwYjM0YzQuLjU1Yjg0ODAxOTIzZDYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9saW5rLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2xpbmsuY1xuQEAgLTU0MSwxNSArNTQxLDE1IEBAIGludCBpd2xfbWxkX2FkZF9saW5rKHN0cnVjdCBpd2xfbWxkICptbGQsXG4gXHRyZXQgPSBpd2xfbWxkX2FkZF9saW5rX3RvX2Z3KG1sZCwgYnNzX2NvbmYpO1xuIFx0aWYgKHJldCkge1xuIFx0XHRSQ1VfSU5JVF9QT0lOVEVSKG1sZC1cdTAwM2Vmd19pZF90b19ic3NfY29uZltsaW5rLVx1MDAzZWZ3X2lkXSwgTlVMTCk7XG4tXHRcdFJDVV9JTklUX1BPSU5URVIobWxkX3ZpZi1cdTAwM2VsaW5rW2Jzc19jb25mLVx1MDAzZWxpbmtfaWRdLCBOVUxMKTtcbiBcdFx0Z290byBmcmVlO1xuIFx0fVxuIFxuIFx0cmV0dXJuIHJldDtcbiBcbiBmcmVlOlxuK1x0UkNVX0lOSVRfUE9JTlRFUihtbGRfdmlmLVx1MDAzZWxpbmtbYnNzX2NvbmYtXHUwMDNlbGlua19pZF0sIE5VTEwpO1xuIFx0aWYgKCFpc19kZWZsaW5rKVxuLVx0XHRrZnJlZShsaW5rKTtcbitcdFx0a2ZyZWVfcmN1KGxpbmssIHJjdV9oZWFkKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tYWM4MDIxMS5jXG5pbmRleCAzYTRjOGZkYTY4ZDBhLi42OTNmMjA5MmE3ODE1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuY1xuQEAgLTIyNjUsNyArMjI2NSw3IEBAIHN0YXRpYyBpbnQgaXdsX21sZF9zZXRfa2V5X2FkZChzdHJ1Y3QgaXdsX21sZCAqbWxkLFxuIFx0aWYgKHJldCkge1xuIFx0XHRpZiAocHRrX3BuKSB7XG4gXHRcdFx0UkNVX0lOSVRfUE9JTlRFUihtbGRfc3RhLVx1MDAzZXB0a19wbltrZXlpZHhdLCBOVUxMKTtcbi1cdFx0XHRrZnJlZShwdGtfcG4pO1xuK1x0XHRcdGtmcmVlX3JjdShwdGtfcG4sIHJjdV9oZWFkKTtcbiBcdFx0fVxuIFxuIFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmNcbmluZGV4IDViZDI0NmUzNzk0MzIuLmIwYzRmMjQ1Yzg4ZmYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWM4MDIxMS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWM4MDIxMS5jXG5AQCAtNDM4NSw3ICs0Mzg1LDcgQEAgc3RhdGljIGludCBfX2l3bF9tdm1fbWFjX3NldF9rZXkoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRcdFx0a2V5LVx1MDAzZWh3X2tleV9pZHggPSBTVEFfS0VZX0lEWF9JTlZBTElEO1xuIFx0XHRcdGlmIChwdGtfcG4pIHtcbiBcdFx0XHRcdFJDVV9JTklUX1BPSU5URVIobXZtc3RhLVx1MDAzZXB0a19wbltrZXlpZHhdLCBOVUxMKTtcbi1cdFx0XHRcdGtmcmVlKHB0a19wbik7XG4rXHRcdFx0XHRrZnJlZV9yY3UocHRrX3BuLCByY3VfaGVhZCk7XG4gXHRcdFx0fVxuIFx0XHRcdC8qXG4gXHRcdFx0ICogY2FuJ3QgYWRkIGtleSBmb3IgUlgsIGJ1dCB3ZSBkb24ndCBuZWVkIGl0XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxODo1ODoyNC41NTE2MDk5NTdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo4OTk0MTIyNDczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2ggU2VyaWVzKipcblxuT2theSwgc28gSSd2ZSBnb3QgYSBwYXRjaCBzZXJpZXMgdG8gcmV2aWV3LiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIGRpZmYsIG9idmlvdXNseS4gSSBzZWUgY2hhbmdlcyB0byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbGluay5jYCwgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmNgLCBhbmQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmNgLiBSaWdodCwgc28gdGhpcyBpcyBmb3IgdGhlIGBpd2x3aWZpYCBkcml2ZXIuIEJ1dCB3YWl0LCBiZWZvcmUgSSBnZXQgdG9vIGRlZXAsIGEgY3J1Y2lhbCBxdWVzdGlvbiBwb3BzIGludG8gbXkgaGVhZDogY2FuIEkgYWN0dWFsbHkgKnRlc3QqIHRoaXMgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lP1xuXG5IYW5nIG9uIGEgc2Vjb25k4oCmIEkgbmVlZCB0byBjaGVjayB0aGUgcHJvamVjdCdzIGluc3RydWN0aW9ucyAoU2VjdGlvbiAyLCB0byBiZSBwcmVjaXNlKS4gVGhlIGluc3RydWN0aW9ucyBzcGVjaWZpY2FsbHkgY2FsbCBvdXQgaGFyZHdhcmUgZGVwZW5kZW5jaWVzLiBMZXQncyBzZWUuLi4gaXQgbWVudGlvbnMgdGhpbmdzIHRoYXQgYXJlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZTogdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgR1BVIGRyaXZlcnPigKYgT2theSwgbXkgcmFkYXIgaXMgdXAuIFRoaXMgaXMgdmVyeSBpbXBvcnRhbnQgd2hlbiBJIHRoaW5rIGFib3V0IGRyaXZlcnMuXG5cblNvLCB0aGUgbmV4dCBxdWVzdGlvbiBpcywgZG9lcyBgaXdsd2lmaWAgbmVlZCBwaHlzaWNhbCBJbnRlbCBXaUZpIGhhcmR3YXJlPyBJcyBpdCBlbXVsYXRlZCwgb3IgaXMgdGhlcmUgYSBzaW11bGF0aW9uIG1vZGU/IFdhaXQsIGRvZXMgYGl3bHdpZmlgIGhhdmUgYSBgbWFjODAyMTFfaHdzaW1gIGVxdWl2YWxlbnQ/IEkgbmVlZCB0byByZW1lbWJlciB0aGUgZGlmZmVyZW5jZTogYG1hYzgwMjExX2h3c2ltYCBpcyBhIHNvZnR3YXJlLWJhc2VkIGRyaXZlciBmb3IgbWFjODAyMTEsIHJpZ2h0PyBCdXQgYGl3bHdpZmlgIGlzIEludGVsJ3MgKnByb3ByaWV0YXJ5KiwgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGRlc2lnbmVkIGZvciBJbnRlbCBXaUZpIFBDSSBkZXZpY2VzLi4uIFNvLCBpdCBpcyBtZWFudCB0byBydW4gb24gKnJlYWwqIEludGVsIGhhcmR3YXJlLCBsaWtlIHRoZSBJbnRlbCBXaXJlbGVzcy1BQyBvciBXaS1GaSA2IEFYMjAwIGNhcmRzLlxuXG5IbW0uIFRoYXQncyBhIHByb2JsZW0uIFFFTVUgZGVmaW5pdGVseSAqZG9lc24ndCogZW11bGF0ZSBJbnRlbCBXaS1GaSBQQ0kgY2FyZHMuIE9rYXksIHNvIEknbSBub3QgZ29pbmcgdG8gYmUgYWJsZSB0byBqdXN0IHNwaW4gdXAgYSBWTSBhbmQgcmVwcm9kdWNlIHRoaXMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJ3MgYW55IGtpbmQgb2YgdmlydHVhbCBvciBzaW11bGF0ZWQgbW9kZSB3aXRoaW4gdGhlIGBpd2x3aWZpYCBkcml2ZXIgaXRzZWxmLiBUaW1lIHRvIGdvIGRpZ2dpbmcgdGhyb3VnaCB0aGUgY29kZSBhbmQgdGhlIEtjb25maWcgZmlsZXMuIFRoaXMgaXMgZ29pbmcgdG8gYmUgbXkgZmlyc3QgcHJpb3JpdHkgYmVmb3JlIEkgY29tbWl0IHRvIHRoZSByZXZpZXcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1OTIsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOTEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxODo1ODozMy41NDU3MzQ0NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjA1NjI5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVdMXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjI6Y29uZmlnIElXTFdJRklcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwgV2lyZWxlc3MgV2lGaSBOZXh0IEdlbiBBR04gLSBXaXJlbGVzcy1OL0FkdmFuY2VkLU4vVWx0aW1hdGUtTiAoaXdsd2lmaSkgXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTQ3PWlmIElXTFdJRklcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjQ5OmNvbmZpZyBJV0xXSUZJX0tVTklUX1RFU1RTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTUwLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjU4OmNvbmZpZyBJV0xXSUZJX0xFRFNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTktXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTY1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo2Njpjb25maWcgSVdMRFZNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTY3LVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBXaXJlbGVzcyBXaUZpIERWTSBGaXJtd2FyZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTczLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo3NDpjb25maWcgSVdMTVZNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTc1LVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBXaXJlbGVzcyBXaUZpIE1WTSBGaXJtd2FyZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo4NDpjb25maWcgSVdMTUxEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTg1LVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBXaXJlbGVzcyBXaUZpIE1MRCBGaXJtd2FyZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTk0LSMgZG9uJ3QgY2FsbCBpdCBfTU9EVUxFIC0tIHdpbGwgY29uZnVzZSBLY29uZmlnL2ZpeGRlcC8uLi5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6OTU6Y29uZmlnIElXTFdJRklfT1BNT0RFX01PRFVMQVJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctOTYtXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTEwNT1tZW51IFxcXCJEZWJ1Z2dpbmcgT3B0aW9uc1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMDc6Y29uZmlnIElXTFdJRklfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA4LVxcdGJvb2wgXFxcIkVuYWJsZSBmdWxsIGRlYnVnZ2luZyBvdXRwdXQgaW4gdGhlIGl3bHdpZmkgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTMxOmNvbmZpZyBJV0xXSUZJX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTMyLVxcdGJvb2wgXFxcIml3bHdpZmkgZGVidWdmcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTM5OmNvbmZpZyBJV0xXSUZJX0RFVklDRV9UUkFDSU5HXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTE0MC1cXHRib29sIFxcXCJpd2x3aWZpIGRldmljZSBhY2Nlc3MgdHJhY2luZ1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz0xNTg9ZW5kaWZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxNjA6Y29uZmlnIElXTE1FSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xNjEtXFx0dHJpc3RhdGUgXFxcIkludGVsIE1hbmFnZW1lbnQgRW5naW5lIGNvbW11bmljYXRpb24gb3ZlciBXTEFOXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxODo1ODozMy41OTc3OTc2ODlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoxMDE4MzUyMDIyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkludmVzdGlnYXRpbmcgSVdMV0lGSSBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgY29yZSBvZiB0aGlzLiBXaGVuIEknbSB3b3JraW5nIHdpdGggdGhlIEludGVsIHdpcmVsZXNzIGRyaXZlcnMsIHRoZSBmaXJzdCBwbGFjZSBJIGFsd2F5cyBnbyB0byB1bnJhdmVsIHRoZXNlIGRlcGVuZGVuY2llcyBpcyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnYC4gSXQncyBlc3NlbnRpYWxseSB0aGUgcm9hZG1hcCBmb3IgY29uZmlndXJpbmcgSVdMV0lGSSwgSVdMTVZNLCBhbmQgSVdMTUxELiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIGNvbXBvbmVudHMsIGZlYXR1cmVzLCBvciBrZXJuZWwgb3B0aW9ucyB0aGV5IHJlbHkgb24uIFRoaXMgYEtjb25maWdgIGZpbGUgaG9sZHMgdGhlIGFuc3dlcnM7IHRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gdGhlc2UgbW9kdWxlcywgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGJhc2VkIG9uIGhhcmR3YXJlIHN1cHBvcnQsIGFuZCBhbnkgc3BlY2lmaWMgZmVhdHVyZSBmbGFncyBJIG5lZWQgdG8gY29uc2lkZXIgZm9yIGVuYWJsaW5nIG9yIGRpc2FibGluZyBjb21wb25lbnRzLiBJJ20gbG9va2luZyBmb3IgdGhlIFwiaWZcIiBzdGF0ZW1lbnRzLCB0aGUgXCJkZXBlbmRzIG9uXCIgY2xhdXNlcywgYW5kIGFueSBcInNlbGVjdFwiIHN0YXRlbWVudHMgdGhhdCBtaWdodCBwdWxsIGluIG90aGVyIGJpdHMgb2YgdGhlIGtlcm5lbC4gVGhpcyBpbml0aWFsIHNjYW4gd2lsbCB0ZWxsIG1lIHRoZSBzdG9yeSBvZiBob3cgdGhlc2UgcGllY2VzIGZpdCB0b2dldGhlciBhbmQgaW5mb3JtIGFueSBzdWJzZXF1ZW50IGRlYnVnZ2luZyBvciBjb25maWd1cmF0aW9uIEkgbWlnaHQgbmVlZCB0byBkby5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQ3MCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDE4OjU4OjQzLjc4MTMyMTI3NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1NTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA5MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIElXTFdJRklcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJJbnRlbCBXaXJlbGVzcyBXaUZpIE5leHQgR2VuIEFHTiAtIFdpcmVsZXNzLU4vQWR2YW5jZWQtTi9VbHRpbWF0ZS1OIChpd2x3aWZpKSBcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIFBDSSBcXHUwMDI2XFx1MDAyNiBIQVNfSU9NRU0gXFx1MDAyNlxcdTAwMjYgQ0ZHODAyMTFcXG4gICA1OlxcdFxcdGRlcGVuZHMgb24gSVdMTUVJIHx8ICFJV0xNRUlcXG4gICA2OlxcdFxcdHNlbGVjdCBGV19MT0FERVJcXG4gICA3OlxcdFxcdGhlbHBcXG4gICA4OlxcdFxcdCAgU2VsZWN0IHRvIGJ1aWxkIHRoZSBkcml2ZXIgc3VwcG9ydGluZyB0aGU6XFxuICAgOTpcXHRcXG4gIDEwOlxcdFxcdCAgSW50ZWwgV2lyZWxlc3MgV2lGaSBMaW5rIE5leHQtR2VuIEFHTlxcbiAgMTE6XFx0XFxuICAxMjpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgdXNlIHdpdGggdGhlIGZvbGxvd2luZyBoYXJkd2FyZTpcXG4gIDEzOlxcdFxcdFxcdEludGVsIFdpcmVsZXNzIFdpRmkgTGluayA2MjUwQUdOIEFkYXB0ZXJcXG4gIDE0OlxcdFxcdFxcdEludGVsIDYwMDAgU2VyaWVzIFdpLUZpIEFkYXB0ZXJzICg2MjAwQUdOIGFuZCA2MzAwQUdOKVxcbiAgMTU6XFx0XFx0XFx0SW50ZWwgV2lGaSBMaW5rIDEwMDBCR05cXG4gIDE2OlxcdFxcdFxcdEludGVsIFdpcmVsZXNzIFdpRmkgNTE1MEFHTlxcbiAgMTc6XFx0XFx0XFx0SW50ZWwgV2lyZWxlc3MgV2lGaSA1MTAwQUdOLCA1MzAwQUdOLCBhbmQgNTM1MEFHTlxcbiAgMTg6XFx0XFx0XFx0SW50ZWwgNjAwNSBTZXJpZXMgV2ktRmkgQWRhcHRlcnNcXG4gIDE5OlxcdFxcdFxcdEludGVsIDYwMzAgU2VyaWVzIFdpLUZpIEFkYXB0ZXJzXFxuICAyMDpcXHRcXHRcXHRJbnRlbCBXaXJlbGVzcyBXaUZpIExpbmsgNjE1MEJHTiAyIEFkYXB0ZXJcXG4gIDIxOlxcdFxcdFxcdEludGVsIDEwMCBTZXJpZXMgV2ktRmkgQWRhcHRlcnMgKDEwMEJHTiBhbmQgMTMwQkdOKVxcbiAgMjI6XFx0XFx0XFx0SW50ZWwgMjAwMCBTZXJpZXMgV2ktRmkgQWRhcHRlcnNcXG4gIDIzOlxcdFxcdFxcdEludGVsIDcyNjAgV2ktRmkgQWRhcHRlclxcbiAgMjQ6XFx0XFx0XFx0SW50ZWwgMzE2MCBXaS1GaSBBZGFwdGVyXFxuICAyNTpcXHRcXHRcXHRJbnRlbCA3MjY1IFdpLUZpIEFkYXB0ZXJcXG4gIDI2OlxcdFxcdFxcdEludGVsIDgyNjAgV2ktRmkgQWRhcHRlclxcbiAgMjc6XFx0XFx0XFx0SW50ZWwgMzE2NSBXaS1GaSBBZGFwdGVyXFxuICAyODpcXHRcXG4gIDI5OlxcdFxcbiAgMzA6XFx0XFx0ICBUaGlzIGRyaXZlciB1c2VzIHRoZSBrZXJuZWwncyBtYWM4MDIxMSBzdWJzeXN0ZW0uXFxuICAzMTpcXHRcXG4gIDMyOlxcdFxcdCAgSW4gb3JkZXIgdG8gdXNlIHRoaXMgZHJpdmVyLCB5b3Ugd2lsbCBuZWVkIGEgZmlybXdhcmVcXG4gIDMzOlxcdFxcdCAgaW1hZ2UgZm9yIGl0LiBZb3UgY2FuIG9idGFpbiB0aGUgbWljcm9jb2RlIGZyb206XFxuICAzNDpcXHRcXG4gIDM1OlxcdFxcdCAgICAgICAgICBcXHUwMDNjaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvRHJpdmVycy9pd2x3aWZpXFx1MDAzZS5cXG4gIDM2OlxcdFxcbiAgMzc6XFx0XFx0ICBUaGUgZmlybXdhcmUgaXMgdHlwaWNhbGx5IGluc3RhbGxlZCBpbiAvbGliL2Zpcm13YXJlLiBZb3UgY2FuXFxuICAzODpcXHRcXHQgIGxvb2sgaW4gdGhlIGhvdHBsdWcgc2NyaXB0IC9ldGMvaG90cGx1Zy9maXJtd2FyZS5hZ2VudCB0b1xcbiAgMzk6XFx0XFx0ICBkZXRlcm1pbmUgd2hpY2ggZGlyZWN0b3J5IEZJUk1XQVJFX0RJUiBpcyBzZXQgdG8gd2hlbiB0aGUgc2NyaXB0XFxuICA0MDpcXHRcXHQgIHJ1bnMuXFxuICA0MTpcXHRcXG4gIDQyOlxcdFxcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSB0aGUgZHJpdmVyIGFzIGEgbW9kdWxlICggPSBjb2RlIHdoaWNoIGNhbiBiZVxcbiAgNDM6XFx0XFx0ICBpbnNlcnRlZCBpbiBhbmQgcmVtb3ZlZCBmcm9tIHRoZSBydW5uaW5nIGtlcm5lbCB3aGVuZXZlciB5b3Ugd2FudCksXFxuICA0NDpcXHRcXHQgIHNheSBNIGhlcmUgYW5kIHJlYWQgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9rYnVpbGQvbW9kdWxlcy5yc3RcXHUwMDNlLiAgVGhlXFxuICA0NTpcXHRcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBpd2x3aWZpLlxcbiAgNDY6XFx0XFxuICA0NzpcXHRpZiBJV0xXSUZJXFxuICA0ODpcXHRcXG4gIDQ5OlxcdGNvbmZpZyBJV0xXSUZJX0tVTklUX1RFU1RTXFxuICA1MDpcXHRcXHR0cmlzdGF0ZVxcbiAgNTE6XFx0XFx0ZGVwZW5kcyBvbiBLVU5JVFxcbiAgNTI6XFx0XFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG4gIDUzOlxcdFxcdGhlbHBcXG4gIDU0OlxcdFxcdCAgRW5hYmxlIHRoaXMgb3B0aW9uIGZvciBpd2x3aWZpIGt1bml0IHRlc3RzLlxcbiAgNTU6XFx0XFxuICA1NjpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICA1NzpcXHRcXG4gIDU4OlxcdGNvbmZpZyBJV0xXSUZJX0xFRFNcXG4gIDU5OlxcdFxcdGJvb2xcXG4gIDYwOlxcdFxcdGRlcGVuZHMgb24gTEVEU19DTEFTUz15IHx8IExFRFNfQ0xBU1M9TUFDODAyMTFcXG4gIDYxOlxcdFxcdGRlcGVuZHMgb24gSVdMTVZNIHx8IElXTERWTVxcbiAgNjI6XFx0XFx0c2VsZWN0IExFRFNfVFJJR0dFUlNcXG4gIDYzOlxcdFxcdHNlbGVjdCBNQUM4MDIxMV9MRURTXFxuICA2NDpcXHRcXHRkZWZhdWx0IHlcXG4gIDY1OlxcdFxcbiAgNjY6XFx0Y29uZmlnIElXTERWTVxcbiAgNjc6XFx0XFx0dHJpc3RhdGUgXFxcIkludGVsIFdpcmVsZXNzIFdpRmkgRFZNIEZpcm13YXJlIHN1cHBvcnRcXFwiXFxuICA2ODpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICA2OTpcXHRcXHRoZWxwXFxuICA3MDpcXHRcXHQgIFRoaXMgaXMgdGhlIGRyaXZlciB0aGF0IHN1cHBvcnRzIHRoZSBEVk0gZmlybXdhcmUuIFRoZSBsaXN0XFxuICA3MTpcXHRcXHQgIG9mIHRoZSBkZXZpY2VzIHRoYXQgdXNlIHRoaXMgZmlybXdhcmUgaXMgYXZhaWxhYmxlIGhlcmU6XFxuICA3MjpcXHRcXHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL2RyaXZlcnMvaXdsd2lmaSNmaXJtd2FyZVxcbiAgNzM6XFx0XFxuICA3NDpcXHRjb25maWcgSVdMTVZNXFxuICA3NTpcXHRcXHR0cmlzdGF0ZSBcXFwiSW50ZWwgV2lyZWxlc3MgV2lGaSBNVk0gRmlybXdhcmUgc3VwcG9ydFxcXCJcXG4gIDc2OlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgNzc6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgNzg6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAgNzk6XFx0XFx0aGVscFxcbiAgODA6XFx0XFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgdGhhdCBzdXBwb3J0cyB0aGUgTVZNIGZpcm13YXJlLiBUaGUgbGlzdFxcbiAgODE6XFx0XFx0ICBvZiB0aGUgZGV2aWNlcyB0aGF0IHVzZSB0aGlzIGZpcm13YXJlIGlzIGF2YWlsYWJsZSBoZXJlOlxcbiAgODI6XFx0XFx0ICBodHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi91c2Vycy9kcml2ZXJzL2l3bHdpZmkjZmlybXdhcmVcXG4gIDgzOlxcdFxcbiAgODQ6XFx0Y29uZmlnIElXTE1MRFxcbiAgODU6XFx0XFx0dHJpc3RhdGUgXFxcIkludGVsIFdpcmVsZXNzIFdpRmkgTUxEIEZpcm13YXJlIHN1cHBvcnRcXFwiXFxuICA4NjpcXHRcXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcXG4gIDg3OlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gIDg4OlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG4gIDg5OlxcdFxcdGhlbHBcXG4gIDkwOlxcdFxcdCAgVGhpcyBpcyB0aGUgZHJpdmVyIHRoYXQgc3VwcG9ydHMgZmlybXdhcmVzIG9mIE1MRCBjYXBhYmxlIGRldmljZXMuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDE4OjU4OjQzLjc4MTM5OTg5NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjI5ODM4OTc2OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBpd2x3aWZpIERyaXZlciBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJIHNlZSBgSVdMV0lGSWAgbmVlZHMgYFBDSWAsIGBIQVNfSU9NRU1gLCBhbmQgYENGRzgwMjExYC4gVGhhdCBpbW1lZGlhdGVseSBmbGFncyBhIHBvdGVudGlhbCBwaHlzaWNhbCBQQ0kgZHJpdmVyIHJlbGF0aW9uc2hpcC4gTWFrZXMgc2Vuc2UsIGdpdmVuIGl0J3MgZGVhbGluZyB3aXRoIGEgd2lyZWxlc3MgaW50ZXJmYWNlLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBjb25maXJtIHRoaXMsIHNvIEkgbmVlZCB0byBjaGVjayB0aGUgc291cmNlIGNvZGUuIExldCdzIHN0YXJ0IGJ5IGxvb2tpbmcgaW50byB0aGUgbGlrZWx5IHN1c3BlY3QgZGlyZWN0b3J5LCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2AsIG9yIHNvbWV0aGluZyBzaW1pbGFyIHdpdGhpbiB0aGUgaXdsd2lmaSBkaXJlY3Rvcnkgc3RydWN0dXJlLiBUaGF0IHNob3VsZCBiZSB0aGUgYmVzdCBwbGFjZSB0byBmaW5kIHRoZSBQQ0ktc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gZGV0YWlscyBpZiBteSBpbml0aWFsIGh1bmNoIGlzIGNvcnJlY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxNTEsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDE4OjU4OjQ2Ljc2NTI5OTc2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTI2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogW1xuICAgIFwiaXdsLWFnbi1ody5oXCIsXG4gICAgXCJpd2wtY29uZmlnLmhcIixcbiAgICBcIml3bC1jc3IuaFwiLFxuICAgIFwiaXdsLWRiZy10bHYuY1wiLFxuICAgIFwiaXdsLWRiZy10bHYuaFwiLFxuICAgIFwiaXdsLWRlYnVnLmNcIixcbiAgICBcIml3bC1kZWJ1Zy5oXCIsXG4gICAgXCJpd2wtZGV2dHJhY2UtZGF0YS5oXCIsXG4gICAgXCJpd2wtZGV2dHJhY2UtaW8uaFwiLFxuICAgIFwiaXdsLWRldnRyYWNlLWl3bHdpZmkuaFwiLFxuICAgIFwiaXdsLWRldnRyYWNlLW1zZy5oXCIsXG4gICAgXCJpd2wtZGV2dHJhY2UtdWNvZGUuaFwiLFxuICAgIFwiaXdsLWRldnRyYWNlLmNcIixcbiAgICBcIml3bC1kZXZ0cmFjZS5oXCIsXG4gICAgXCJpd2wtZHJ2LmNcIixcbiAgICBcIml3bC1kcnYuaFwiLFxuICAgIFwiaXdsLWZoLmhcIixcbiAgICBcIml3bC1pby5jXCIsXG4gICAgXCJpd2wtaW8uaFwiLFxuICAgIFwiaXdsLW1vZHBhcmFtcy5oXCIsXG4gICAgXCJpd2wtbnZtLXBhcnNlLmNcIixcbiAgICBcIml3bC1udm0tcGFyc2UuaFwiLFxuICAgIFwiaXdsLW52bS11dGlscy5jXCIsXG4gICAgXCJpd2wtbnZtLXV0aWxzLmhcIixcbiAgICBcIml3bC1vcC1tb2RlLmhcIixcbiAgICBcIml3bC1waHktZGIuY1wiLFxuICAgIFwiaXdsLXBoeS1kYi5oXCIsXG4gICAgXCJpd2wtcHJwaC5oXCIsXG4gICAgXCJpd2wtc2NkLmhcIixcbiAgICBcIml3bC10cmFucy5jXCIsXG4gICAgXCJpd2wtdHJhbnMuaFwiLFxuICAgIFwiaXdsLXV0aWxzLmNcIixcbiAgICBcIml3bC11dGlscy5oXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IFtcbiAgICBcImNmZ1wiLFxuICAgIFwiZHZtXCIsXG4gICAgXCJmd1wiLFxuICAgIFwibWVpXCIsXG4gICAgXCJtbGRcIixcbiAgICBcIm12bVwiLFxuICAgIFwicGNpZVwiLFxuICAgIFwidGVzdHNcIlxuICBdXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxODo1ODo0Ni43NjUzOTA4OFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjI1MjkwOTIzNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgaXdsd2lmaSBEcml2ZXIncyBBcmNoaXRlY3R1cmUqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMgd2hldGhlciB0aGUgYGl3bHdpZmlgIGRyaXZlciBpcyBzb2xlbHkgUENJLWJhc2VkLCBvciBpZiBpdCBpbmNvcnBvcmF0ZXMgYW55IHNpbXVsYXRlZCBidXMgaW50ZXJmYWNlcyBsaWtlIFVTQiBnYWRnZXQgb3IgdmlydGlvLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYXJjaGl0ZWN0dXJhbCB1bmRlcnBpbm5pbmdzLiBUaGUgZmFzdGVzdCB3YXkgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoaXMgaXMgdG8gY2hlY2sgdGhlIGBNYWtlZmlsZWAgYW5kIHRoZSBgcGNpZWAgZGlyZWN0b3J5IHdpdGhpbiB0aGUgZHJpdmVyJ3Mgc291cmNlLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgc29saWQgY2x1ZSBhYm91dCBob3cgdGhlIGRyaXZlciBpcyBzdHJ1Y3R1cmVkIGFuZCB3aGF0IGJ1cyBpbnRlcmZhY2VzIGl0J3MgZGVzaWduZWQgdG8gaW50ZXJhY3Qgd2l0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzc4NiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxLCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxODo1ODo0OS4yOTQ0ODUyMzJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTg4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJjdHh0LWluZm8tdjIuY1wiLFxuICAgIFwiY3R4dC1pbmZvLmNcIixcbiAgICBcImRydi5jXCIsXG4gICAgXCJpd2wtY29udGV4dC1pbmZvLXYyLmhcIixcbiAgICBcIml3bC1jb250ZXh0LWluZm8uaFwiLFxuICAgIFwidXRpbHMuY1wiLFxuICAgIFwidXRpbHMuaFwiXG4gIF0sXG4gIFwiU3ViZGlyc1wiOiBbXG4gICAgXCJnZW4xXzJcIlxuICBdXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxODo1ODo0OS4yOTQ1NTM0NzJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NTU4MzcwMDA4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIGBwY2lfcmVnaXN0ZXJfZHJpdmVyYCBpbiB0aGUgaXdsd2lmaSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGl3bHdpZmkgZHJpdmVyIGlzIGludGVyYWN0aW5nIHdpdGggdGhlIFBDSSBzdWJzeXN0ZW0uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBwaW5wb2ludCB3aGVyZSB0aGUgZHJpdmVyIGlzIHJlZ2lzdGVyZWQuIGBwY2lfcmVnaXN0ZXJfZHJpdmVyYCBpcyB0aGUgb2J2aW91cyBwbGFjZSB0byBzdGFydC4gVGhpcyBmdW5jdGlvbiBpcyB0aGUgY29ybmVyc3RvbmUgb2YgdGhlIFBDSSBkZXZpY2UgcHJvYmUgYW5kIGF0dGFjaCBwcm9jZXNzLCBzbyBmaW5kaW5nIGl0cyB1c2Ugd2l0aGluIHRoZSBpd2x3aWZpIGRyaXZlciBkaXJlY3RvcnkgKGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2ApIGlzIHRoZSBmaXJzdCBsb2dpY2FsIHN0ZXAuIFRoaXMgd2lsbCBnaXZlIG1lIGEgY2xlYXIgZW50cnkgcG9pbnQgaW50byB1bmRlcnN0YW5kaW5nIHRoZSBkZXZpY2UgaW5pdGlhbGl6YXRpb24gYW5kIGF0dGFjaG1lbnQgc2VxdWVuY2Ugd2l0aGluIHRoaXMgY29tcGxleCBkcml2ZXIuIEZyb20gdGhlcmUsIEkgY2FuIHRyYWNlIHRoZSBjb250cm9sIGZsb3cgdG8gdW5kZXJzdGFuZCB0aGUgZGV2aWNlJ3MgbGlmZWN5Y2xlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MDY0LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDE4OjU4OjU0Ljg3ODI1NTQ4N1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk5MDc4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpX3JlZ2lzdGVyX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jPTIxMDk9c3RhdGljIGludCBfX2luaXQgaXdsX2Rydl9pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0yMTIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jOjIxMjE6XFx0ZXJyID0gaXdsX3BjaV9yZWdpc3Rlcl9kcml2ZXIoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1kcnYuYy0yMTIyLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oPTExNDE9c3RhdGljIGlubGluZSB2b2lkIGl3bF90cmFuc19ub3RpZnlfZndfZXJyb3Ioc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oLTExNDgtICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmg6MTE0OTppbnQgX19tdXN0X2NoZWNrIGl3bF9wY2lfcmVnaXN0ZXJfZHJpdmVyKHZvaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmgtMTE1MC12b2lkIGl3bF9wY2lfdW5yZWdpc3Rlcl9kcml2ZXIodm9pZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM9MTMzOT1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgaXdsX3BjaV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmMtMTM0Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZHJ2LmM6MTM0ODppbnQgX19tdXN0X2NoZWNrIGl3bF9wY2lfcmVnaXN0ZXJfZHJpdmVyKHZvaWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTEzNDkte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy0xMzUwLVxcdGludCByZXQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jOjEzNTE6XFx0cmV0ID0gcGNpX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2aXdsX3BjaV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy0xMzUyLVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDE4OjU4OjU0LjkyODE2ODY3N1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjozNjY1Njg0MTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgSW50ZWwgV2lGaSBEcml2ZXIgUmVnaXN0cmF0aW9uKipcblxuT2theSwgc28gYGl3bF9wY2lfZHJpdmVyYCBpcyByZWdpc3RlcmluZyBpdHNlbGYgYXMgYSBQQ0kgZHJpdmVyIGZvciBJbnRlbCBXaUZpIGhhcmR3YXJlLiBUaGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBicm9hZGVyIHBpY3R1cmUgdGhvdWdoLiBJJ20gY3VyaW91cyBpZiB0aGUgYGl3bHdpZmlgIHN0YWNrIGlzIHJlZ2lzdGVyaW5nIG9uIGFueSAqb3RoZXIqIGJ1c2VzIGFzIHdlbGwuIEl0J3MgZ29vZCBwcmFjdGljZSB0byB1bmRlcnN0YW5kIGFsbCB0aGUgcG9pbnRzIG9mIGF0dGFjaG1lbnQuIExldCdzIHNlZS4uLiB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgaXMgcHJvYmFibHkgdGhlIGluaXRpYWxpemF0aW9uIHJvdXRpbmUsIHdoaWNoLCBmcm9tIHdoYXQgSSByZW1lbWJlciBvZiB0aGUgaXdsd2lmaSBjb2RlYmFzZSwgc2hvdWxkIGJlIGBpd2xfZHJ2X2luaXRgLiBUaW1lIHRvIGdvIGNoZWNrIHRoYXQgb3V0IGFuZCBzZWUgd2hhdCBvdGhlciBidXMgdHlwZXMgYXJlIGJlaW5nIGhhbmRsZWQuIEkgd2FudCB0byBidWlsZCBhIGNvbXBsZXRlIG1lbnRhbCBtYXAgb2YgdGhlIGRyaXZlcidzIGludGVyZmFjZSBwb2ludHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4NDEsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxODo1ODo1OC41OTM4NjAwMTFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgxOTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWRydi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIxMDAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjIxMDA6XFx0XFx0XFx0XFx0X2l3bF9vcF9tb2RlX3N0b3AoZHJ2KTtcXG4yMTAxOlxcdFxcbjIxMDI6XFx0XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZpd2x3aWZpX29wbW9kZV90YWJsZV9tdHgpO1xcbjIxMDM6XFx0XFx0XFx0cmV0dXJuO1xcbjIxMDQ6XFx0XFx0fVxcbjIxMDU6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZpd2x3aWZpX29wbW9kZV90YWJsZV9tdHgpO1xcbjIxMDY6XFx0fVxcbjIxMDc6XFx0SVdMX0VYUE9SVF9TWU1CT0woaXdsX29wbW9kZV9kZXJlZ2lzdGVyKTtcXG4yMTA4OlxcdFxcbjIxMDk6XFx0c3RhdGljIGludCBfX2luaXQgaXdsX2Rydl9pbml0KHZvaWQpXFxuMjExMDpcXHR7XFxuMjExMTpcXHRcXHRpbnQgaSwgZXJyO1xcbjIxMTI6XFx0XFxuMjExMzpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShpd2x3aWZpX29wbW9kZV90YWJsZSk7IGkrKylcXG4yMTE0OlxcdFxcdFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZpd2x3aWZpX29wbW9kZV90YWJsZVtpXS5kcnYpO1xcbjIxMTU6XFx0XFxuMjExNjpcXHQjaWZkZWYgQ09ORklHX0lXTFdJRklfREVCVUdGU1xcbjIxMTc6XFx0XFx0LyogQ3JlYXRlIHRoZSByb290IG9mIGl3bHdpZmkgZGVidWdmcyBzdWJzeXN0ZW0uICovXFxuMjExODpcXHRcXHRpd2xfZGJnZnNfcm9vdCA9IGRlYnVnZnNfY3JlYXRlX2RpcihEUlZfTkFNRSwgTlVMTCk7XFxuMjExOTpcXHQjZW5kaWZcXG4yMTIwOlxcdFxcbjIxMjE6XFx0XFx0ZXJyID0gaXdsX3BjaV9yZWdpc3Rlcl9kcml2ZXIoKTtcXG4yMTIyOlxcdFxcdGlmIChlcnIpXFxuMjEyMzpcXHRcXHRcXHRnb3RvIGNsZWFudXBfZGVidWdmcztcXG4yMTI0OlxcdFxcbjIxMjU6XFx0XFx0cmV0dXJuIDA7XFxuMjEyNjpcXHRcXG4yMTI3OlxcdGNsZWFudXBfZGVidWdmczpcXG4yMTI4OlxcdCNpZmRlZiBDT05GSUdfSVdMV0lGSV9ERUJVR0ZTXFxuMjEyOTpcXHRcXHRkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoaXdsX2RiZ2ZzX3Jvb3QpO1xcbjIxMzA6XFx0I2VuZGlmXFxuMjEzMTpcXHRcXHRyZXR1cm4gZXJyO1xcbjIxMzI6XFx0fVxcbjIxMzM6XFx0bW9kdWxlX2luaXQoaXdsX2Rydl9pbml0KTtcXG4yMTM0OlxcdFxcbjIxMzU6XFx0c3RhdGljIHZvaWQgX19leGl0IGl3bF9kcnZfZXhpdCh2b2lkKVxcbjIxMzY6XFx0e1xcbjIxMzc6XFx0XFx0aXdsX3BjaV91bnJlZ2lzdGVyX2RyaXZlcigpO1xcbjIxMzg6XFx0XFx0aXdsX3RyYW5zX2ZyZWVfcmVzdGFydF9saXN0KCk7XFxuMjEzOTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTg6NTg6NTguNTk0MDUxNDQxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjIxNjAwNzAwNTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBhbmQgdGhlIHN5c3RlbSBpcyAqb25seSogcmVnaXN0ZXJpbmcgdGhlIFBDSSBkcml2ZXIsIGBpd2xfcGNpX2RyaXZlcmAuIFRoYXQncyBhIGJpdCBvZGQuIEknZCBleHBlY3QgdG8gc2VlIG1vcmUsIHBlcmhhcHMgc29tZSBpbmRpY2F0aW9uIG9mIGEgYnJvYWRlciBhcmNoaXRlY3R1cmUgb3IgZXZlbiB2aXJ0dWFsIGNvbXBvbmVudHMgZGVwZW5kaW5nIG9uIHRoZSB0ZXN0aW5nIG9yIGltcGxlbWVudGF0aW9uLlxuXG5XYWl0IGEgc2Vjb25k4oCmIGlzIHRoZXJlIGFueSBzb3J0IG9mIHZpcnR1YWwgaGFyZHdhcmUgb3IgbW9jayBkcml2ZXIgaW4gdGhlIGl3bHdpZmkgY29kZWJhc2UsIG1heWJlIHVzZWQgZm9yIHRlc3Rpbmcgb3Igc3BlY2lmaWMgdXNlIGNhc2VzPyBJJ3ZlIHNlZW4gdGhhdCBhcHByb2FjaCBiZWZvcmUsIGVzcGVjaWFsbHkgaW4gY29tcGxleCBkcml2ZXIgZmFtaWxpZXMuIExldCBtZSBxdWlja2x5IHNjYW4gdGhyb3VnaCB0aGUgYHRlc3RzL2AgZGlyZWN0b3J5IHdpdGhpbiB0aGUgaXdsd2lmaSBjb2RlLiBUaGF0J3MgdXN1YWxseSB3aGVyZSB0aGVzZSBzb3J0cyBvZiB0aGluZ3MgYXJlIHN0YXNoZWQuIEknbGwgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBhcmUgYW55IHNpZ25zIG9mIHNpbXVsYXRlZCBoYXJkd2FyZSBlbnZpcm9ubWVudHMgdG8gZGV0ZXJtaW5lIGlmIHRoZSBQQ0kgZHJpdmVyIGlzIHRoZSBvbmx5IHBpZWNlIG9mIHRoZSBwdXp6bGUsIG9yIHBhcnQgb2YgYSBiaWdnZXIgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5Njg2LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxODo1OTowMC43NTQxMjQwOThaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjIwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvdGVzdHNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogW1xuICAgIFwiZGV2aW5mby5jXCIsXG4gICAgXCJtb2R1bGUuY1wiLFxuICAgIFwibnZtX3BhcnNlLmNcIixcbiAgICBcInV0aWxzLmNcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogbnVsbFxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTg6NTk6MDAuNzU0MTgyMjg5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjk5MDM5NTAzNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCdzIEltcGFjdCBvbiB0aGUgSW50ZWwgV2lyZWxlc3MgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIEkgc2VlIGl0J3MgdG91Y2hpbmcgYSBmZXcgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhlIEludGVsIHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGl3bHdpZmlgIG1vZHVsZS4gVGhlIHByZXNlbmNlIG9mIGB0ZXN0cy9gIGFuZCB0aGUgbWVudGlvbiBvZiBgSVdMV0lGSV9LVU5JVF9URVNUU2AgaW5kaWNhdGVzIHRoaXMgaXMgcmVsYXRlZCB0byBLVW5pdCB0ZXN0cywgd2hpY2ggaXMgdXNlZnVsIGNvbnRleHQuIEhvd2V2ZXIsIG15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHVuZGVyc3RhbmRpbmcgdGhlIGZ1bGwgc2NvcGUgb2YgdGhpcyBjaGFuZ2UsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgZXhhY3RseSB0aGUgcGF0Y2ggbW9kaWZpZXMuXG5cbkxldCBtZSB0YWtlIGEgbG9vayBhdCB0aGUga2V5IGZ1bmN0aW9ucyBhZmZlY3RlZDogSSBzZWUgYGl3bF9tbGRfYWRkX2xpbmtgIGluIGBsaW5rLmNgLCBgaXdsX21sZF9zZXRfa2V5X2FkZGAgaW4gYG1hYzgwMjExLmNgLCBhbmQgYF9faXdsX212bV9tYWNfc2V0X2tleWAgaW4gdGhlIGBtdm0vbWFjODAyMTEuY2AgZmlsZS4gUmlnaHQsIHRoZSBNTEQgKE1lc2ggTGluayBEaXNjb3ZlcnkpIHNlZW1zIHRvIGJlIGludm9sdmVkIGFuZCBhIGNoYW5nZSBpbiBob3cga2V5cyBhcmUgaGFuZGxlZC5cblxuTm93LCB3aGVyZSBpcyBgaXdsX21sZF9hZGRfbGlua2AgYWN0dWFsbHkgY2FsbGVkIGZyb20/IFRoYXQncyB0aGUgbmV4dCBjcml0aWNhbCBxdWVzdGlvbi4gS25vd2luZyB0aGUgY2FsbCBncmFwaCB3aWxsIGhlbHAgdG8gdW5kZXJzdGFuZCB0aGUgYnJvYWRlciBpbXBsaWNhdGlvbnMgb2YgdGhlc2UgY2hhbmdlcy4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgZnVuY3Rpb24gdG8gZ2V0IGEgZ29vZCBoYW5kbGUgb24gd2hlcmUgaXQgaXMgYmVpbmcgdXNlZCBhbmQgd2hhdCB0aGUgcG90ZW50aWFsIGltcGFjdCBpcy4gTGV0J3MgZGlnIGRlZXBlciB0byBzZWUgd2hlcmUgdGhhdCBmdW5jdGlvbiBpcyB1c2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5OTg4LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc3LCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxODo1OToxMC42NTgxMzQ4ODhaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5ODUxODMzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpd2xfbWxkX2FkZF9saW5rXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvZGVidWdmcy5jPTEwMTM9TElOS19ERUJVR0ZTX1JFQURfRklMRV9PUFMoZndfaWQsIDY0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9kZWJ1Z2ZzLmMtMTAxNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9kZWJ1Z2ZzLmM6MTAxNTp2b2lkIGl3bF9tbGRfYWRkX2xpbmtfZGVidWdmcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9kZWJ1Z2ZzLmMtMTAxNi1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvZGVidWdmcy5jPTExNTU9TElOS19TVEFfREVCVUdGU19SRUFEX09QUyhmd19pZCwgNjQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2RlYnVnZnMuYy0xMTU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2RlYnVnZnMuYzoxMTU3OnZvaWQgaXdsX21sZF9hZGRfbGlua19zdGFfZGVidWdmcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9kZWJ1Z2ZzLmMtMTE1OC1cXHRcXHRcXHRcXHQgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9saW5rLmM9Mzg9aW50IGl3bF9tbGRfc2VuZF9saW5rX2NtZChzdHJ1Y3QgaXdsX21sZCAqbWxkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbGluay5jLTU4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2xpbmsuYzo1OTpzdGF0aWMgaW50IGl3bF9tbGRfYWRkX2xpbmtfdG9fZncoc3RydWN0IGl3bF9tbGQgKm1sZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9saW5rLmMtNjAtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpsaW5rX2NvbmYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9saW5rLmM9NTAwPWl3bF9tbGRfaW5pdF9saW5rKHN0cnVjdCBpd2xfbWxkICptbGQsIHN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKmxpbmssXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9saW5rLmMtNTE0LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2xpbmsuYzo1MTU6aW50IGl3bF9tbGRfYWRkX2xpbmsoc3RydWN0IGl3bF9tbGQgKm1sZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9saW5rLmMtNTE2LVxcdFxcdCAgICAgc3RydWN0IGllZWU4MDIxMV9ic3NfY29uZiAqYnNzX2NvbmYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9saW5rLmMtNTQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2xpbmsuYzo1NDE6XFx0cmV0ID0gaXdsX21sZF9hZGRfbGlua190b19mdyhtbGQsIGJzc19jb25mKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9saW5rLmMtNTQyLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2xpbmsuaD0xMjA9aW50IGl3bF9tbGRfc2VuZF9saW5rX2NtZChzdHJ1Y3QgaXdsX21sZCAqbWxkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbGluay5oLTEyMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9saW5rLmg6MTI0OmludCBpd2xfbWxkX2FkZF9saW5rKHN0cnVjdCBpd2xfbWxkICptbGQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbGluay5oLTEyNS1cXHRcXHQgICAgIHN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKmJzc19jb25mKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmM9NjU5PWludCBpd2xfbWxkX21hYzgwMjExX2FkZF9pbnRlcmZhY2Uoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tYWM4MDIxMS5jLTY5OC1cXHRpZiAodmlmLVxcdTAwM2V0eXBlICE9IE5MODAyMTFfSUZUWVBFX05BTiBcXHUwMDI2XFx1MDAyNiAhaWVlZTgwMjExX3ZpZl9pc19tbGQodmlmKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmM6Njk5OlxcdFxcdHJldCA9IGl3bF9tbGRfYWRkX2xpbmsobWxkLCBcXHUwMDI2dmlmLVxcdTAwM2Vic3NfY29uZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYy03MDAtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmM9MTI0Nz12b2lkIGl3bF9tbGRfdW5hc3NpZ25fdmlmX2NoYW5jdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tYWM4MDIxMS5jLTEyOTAtXFx0XFx0aXdsX21sZF9yZW1vdmVfbGluayhtbGQsIGxpbmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmM6MTI5MTpcXHRcXHRpd2xfbWxkX2FkZF9saW5rKG1sZCwgbGluayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYy0xMjkyLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmM9MjcwNj1pd2xfbWxkX2NoYW5nZV92aWZfbGlua3Moc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tYWM4MDIxMS5jLTI3NDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYzoyNzQ2OlxcdFxcdFxcdGVyciA9IGl3bF9tbGRfYWRkX2xpbmsobWxkLCBsaW5rX2NvbmYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmMtMjc0Ny1cXHRcXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYz0yOTE0PWNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIGl3bF9tbGRfaHdfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYy0yOTc2LVxcdC52aWZfYWRkX2RlYnVnZnMgPSBpd2xfbWxkX2FkZF92aWZfZGVidWdmcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tYWM4MDIxMS5jOjI5Nzc6XFx0LmxpbmtfYWRkX2RlYnVnZnMgPSBpd2xfbWxkX2FkZF9saW5rX2RlYnVnZnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYzoyOTc4OlxcdC5saW5rX3N0YV9hZGRfZGVidWdmcyA9IGl3bF9tbGRfYWRkX2xpbmtfc3RhX2RlYnVnZnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYy0yOTc5LSNlbmRpZlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWxkLmg9NTc1PXZvaWQgaXdsX21sZF9hZGRfdmlmX2RlYnVnZnMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWxkLmgtNTc2LVxcdFxcdFxcdCAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWxkLmg6NTc3OnZvaWQgaXdsX21sZF9hZGRfbGlua19kZWJ1Z2ZzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21sZC5oLTU3OC1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWxkLmgtNTgwLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBkZW50cnkgKmRpcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWxkLmg6NTgxOnZvaWQgaXdsX21sZF9hZGRfbGlua19zdGFfZGVidWdmcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tbGQuaC01ODItXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc3RhLmM9NTk2PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zdGEuYzo1OTc6aXdsX21sZF9hZGRfbGlua19zdGEoc3RydWN0IGl3bF9tbGQgKm1sZCwgc3RydWN0IGllZWU4MDIxMV9saW5rX3N0YSAqbGlua19zdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc3RhLmMtNTk4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5jPTgyMD1pbnQgaXdsX21sZF9hZGRfc3RhKHN0cnVjdCBpd2xfbWxkICptbGQsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zdGEuYy04NDktXFx0Zm9yX2VhY2hfc3RhX2FjdGl2ZV9saW5rKG1sZF9zdGEtXFx1MDAzZXZpZiwgc3RhLCBsaW5rX3N0YSwgbGlua19pZCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5jOjg1MDpcXHRcXHRyZXQgPSBpd2xfbWxkX2FkZF9saW5rX3N0YShtbGQsIGxpbmtfc3RhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zdGEuYy04NTEtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5jPTEzMzA9aW50IGl3bF9tbGRfdXBkYXRlX2xpbmtfc3RhcyhzdHJ1Y3QgaXdsX21sZCAqbWxkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc3RhLmMtMTM4OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zdGEuYzoxMzg5OlxcdFxcdHJldCA9IGl3bF9tbGRfYWRkX2xpbmtfc3RhKG1sZCwgbGlua19zdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3N0YS5jLTEzOTAtXFx0XFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTg6NTk6MTAuOTU2NjY0Mzg0WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjU2NTUxMjkzMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiBpd2x3aWZpIGFuZCBtYWM4MDIuMTEgVGVzdGluZyoqXG5cbk9rYXksIHNvIGBpd2xfbWxkX2h3X29wc2AsIHJpZ2h0LCB0aGF0J3MgZGVmaW5lZCBhcyBhbiBgaWVlZTgwMjExX29wc2Agc3RydWN0dXJlLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGhvdyBleGFjdGx5IGRvZXMgdGhlIDgwMi4xMSBzdGFjayBnZXQgdGVzdGVkIHdpdGhpbiBzeXprYWxsZXIgYW5kIHRoZSBMaW51eCBrZXJuZWwgdGVzdGluZyBpbmZyYXN0cnVjdHVyZT8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGVzZSBjb21wb25lbnRzLlxuXG5SaWdodCwgc3l6a2FsbGVyIGRvZXMgZnV6eiBtYWM4MDIxMS4gQW5kIHRoZSBtZXRob2QgdXNlZCBpcyBgbWFjODAyMTFfaHdzaW1gLiBUaGF0J3MgYSB2aXJ0dWFsLCBzb2Z0d2FyZS1iYXNlZCBtYWM4MDIxMSBkZXZpY2UuIEkgcmVjYWxsIHNlZWluZyB0aGF0IGNvZGUgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uY2Agb3IgYSBzaW1pbGFyIHBhdGguIFRoZSBgdmlydF93aWZpYCBzZXR1cCBpcyBhbm90aGVyIG9wdGlvbiwgdGhvdWdoIGBtYWM4MDIxMV9od3NpbWAgaXMgbW9yZSBsaWtlbHkuXG5cbkJ1dCB3YWl0IGEgbWludXRlLi4uY2FuIEkgYWN0dWFsbHkgdXNlIGBpd2x3aWZpYCAqd2l0aCogYG1hYzgwMjExX2h3c2ltYD8gTm8sIHRoYXQncyBub3QgaG93IGl0IHdvcmtzISBgbWFjODAyMTFfaHdzaW1gICppcyogaXRzIG93biBkcml2ZXIhIEl0J3MgYSBrZXJuZWwgbW9kdWxlIChgbWFjODAyMTFfaHdzaW0ua29gKSB0aGF0IGltcGxlbWVudHMgdGhlIGBpZWVlODAyMTFfb3BzYCBpbnRlcmZhY2UgaXRzZWxmLiBJdCAqcmVwbGFjZXMqIGEgcmVhbCBoYXJkd2FyZSBkcml2ZXIsIGJhc2ljYWxseS5cblxuU28sIHRoaW5raW5nIGFib3V0IGl0IG1vcmUgYnJvYWRseSwgZWFjaCB3aXJlbGVzcyBkcml2ZXIgKGl3bHdpZmksIGF0aDlrLCBydDI4MDAsIG10NzYsIGFuZCBldmVuIG1hYzgwMjExX2h3c2ltKSByZWdpc3RlcnMgaXRzIG93biBoYXJkd2FyZSB3aXRoIG1hYzgwMjExLiBUaGlzIGlzIGRvbmUgdGhyb3VnaCBgaWVlZTgwMjExX2FsbG9jX2h3KClgIGFuZCBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3KClgLiBUaGF0J3MgdGhlIGtleSByZWdpc3RyYXRpb24gbWVjaGFuaXNtLlxuXG5Pa2F5LCBsZXQncyBjaGFuZ2UgZ2VhcnMgYSBiaXQuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgYGl3bF9tbGRgIG9yIGBpd2xfbXZtYCBpcyBpbml0aWFsaXplZC4gSSdsbCBuZWVkIHRvIGdvIGRpZ2dpbmcgZm9yIHRoYXQuIExldCBtZSBzdGFydCBieSBzZWFyY2hpbmcgZm9yIHRoZSBjb2RlIHJlc3BvbnNpYmxlIGZvciByZWdpc3RlcmluZyB0aGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzA4MSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxODo1OToxNi42MTE3OTY3MThaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNjk3NDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV9hbGxvY19od1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21hYzgwMjExLmM9MTYwOT1zdHJ1Y3QgaWVlZTgwMjExX2h3ICppd2xfYWxsb2NfYWxsKHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWM4MDIxMS5jLTE2MTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFjODAyMTEuYzoxNjE3OlxcdGh3ID0gaWVlZTgwMjExX2FsbG9jX2h3KHNpemVvZihzdHJ1Y3QgaXdsX3ByaXYpICtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWM4MDIxMS5jLTE2MTgtXFx0XFx0XFx0XFx0c2l6ZW9mKHN0cnVjdCBpd2xfb3BfbW9kZSksIFxcdTAwMjZpd2xhZ25faHdfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21sZC5jPTM5Nj1pd2xfb3BfbW9kZV9tbGRfc3RhcnQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHN0cnVjdCBpd2xfcmZfY2ZnICpjZmcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tbGQuYy00MDQtXFx0LyogQWxsb2NhdGUgYW5kIGluaXRpYWxpemUgYSBuZXcgaGFyZHdhcmUgZGV2aWNlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWxkLmM6NDA1OlxcdGh3ID0gaWVlZTgwMjExX2FsbG9jX2h3KHNpemVvZihzdHJ1Y3QgaXdsX29wX21vZGUpICtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tbGQuYy00MDYtXFx0XFx0XFx0XFx0c2l6ZW9mKHN0cnVjdCBpd2xfbWxkKSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL29wcy5jPTExOTg9aXdsX29wX21vZGVfbXZtX3N0YXJ0KHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBjb25zdCBzdHJ1Y3QgaXdsX3JmX2NmZyAqY2ZnLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vb3BzLmMtMTIyNC1cXHQgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vb3BzLmM6MTIyNTpcXHRodyA9IGllZWU4MDIxMV9hbGxvY19odyhzaXplb2Yoc3RydWN0IGl3bF9vcF9tb2RlKSArXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vb3BzLmMtMTIyNi1cXHRcXHRcXHRcXHRzaXplb2Yoc3RydWN0IGl3bF9tdm0pLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxODo1OToxNi42NjI0OTk5MzdaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MzExMzcyNjAyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipUcmFjaW5nIHRoZSBpd2xfdHJhbnMgU3RydWN0dXJlKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEknbSBsb29raW5nIGF0IGBpd2xfb3BfbW9kZV9tbGRfc3RhcnRgIGFuZCBgaXdsX29wX21vZGVfbXZtX3N0YXJ0YCwgYW5kIGltbWVkaWF0ZWx5IHRoZSBgc3RydWN0IGl3bF90cmFucyAqdHJhbnNgIGNhdWdodCBteSBleWUuICBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGlzIGBpd2xfdHJhbnNgIGNvbWVzIGZyb20uIFRoaXMgaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgYWJzdHJhY3Rpb24gbGF5ZXIgaW4gdGhpcyBJbnRlbCB3aXJlbGVzcyBkcml2ZXIsIGlzbid0IGl0P1xuXG5SaWdodCwgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHRyYWNrIGRvd24gdGhlIGFsbG9jYXRpb24uIFNvLCBJIG5lZWQgdG8gZmluZCB0aGUgY2FsbHMgdG8gYGl3bF90cmFuc19hbGxvY2Agb3IgYGl3bF90cmFuc19wY2llX2FsbG9jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgKnRyYW5zKiBzdHJ1Y3R1cmUgaXMgaW5zdGFudGlhdGVkIGFuZCBpbml0aWFsaXplZC4gT25jZSBJIGtub3cgdGhhdCwgSSdsbCBiZSBvbmUgc3RlcCBjbG9zZXIgdG8gZ3Jhc3BpbmcgdGhlIGNvbXBsZXRlIG9wZXJhdGlvbmFsIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NDUzLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTg6NTk6MTkuNzc2MjI5MDFaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzMTg4MjU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF90cmFuc19hbGxvY3xpd2xfdHJhbnNfcGNpZV9hbGxvY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmM9MjYwPWludCBpd2xhZ25fdHhfc2tiKHN0cnVjdCBpd2xfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmMtMzQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmM6MzQ0OlxcdGRldl9jbWQgPSBpd2xfdHJhbnNfYWxsb2NfdHhfY21kKHByaXYtXFx1MDAzZXRyYW5zKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS90eC5jLTM0NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM9MjAyPXN0YXRpYyB2b2lkIGl3bF90cmFuc19yZXN0YXJ0X3drKHN0cnVjdCB3b3JrX3N0cnVjdCAqd2spXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTI2Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jOjI2NzpzdHJ1Y3QgaXdsX3RyYW5zICppd2xfdHJhbnNfYWxsb2ModW5zaWduZWQgaW50IHByaXZfc2l6ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTI2OC1cXHRcXHRcXHRcXHQgIHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM9MzMyPUlXTF9FWFBPUlRfU1lNQk9MKGl3bF90cmFuc19zZW5kX2NtZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0zMzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYzozMzQ6c3RydWN0IGl3bF9kZXZpY2VfdHhfY21kICppd2xfdHJhbnNfYWxsb2NfdHhfY21kKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtMzM1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtMzM3LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jOjMzODpJV0xfRVhQT1JUX1NZTUJPTChpd2xfdHJhbnNfYWxsb2NfdHhfY21kKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTMzOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmg9ODM4PWl3bF90cmFuc19kdW1wX2RhdGEoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIHUzMiBkdW1wX21hc2ssXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oLTg0MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oOjg0MjpzdHJ1Y3QgaXdsX2RldmljZV90eF9jbWQgKml3bF90cmFuc19hbGxvY190eF9jbWQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmgtODQzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaD0xMDg5PXN0YXRpYyBpbmxpbmUgdm9pZCBpd2xfdHJhbnNfZmluaXNoX3N3X3Jlc2V0KHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaC0xMDk2LSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oOjEwOTc6c3RydWN0IGl3bF90cmFucyAqaXdsX3RyYW5zX2FsbG9jKHVuc2lnbmVkIGludCBwcml2X3NpemUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaC0xMDk4LVxcdFxcdFxcdFxcdCAgc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdHguYz03NTA9c3RhdGljIGludCBpd2xfbWxkX3R4X21wZHUoc3RydWN0IGl3bF9tbGQgKm1sZCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3R4LmMtNzY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3R4LmM6NzY3OlxcdGRldl90eF9jbWQgPSBpd2xfdHJhbnNfYWxsb2NfdHhfY21kKG1sZC1cXHUwMDNldHJhbnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3R4LmMtNzY4LVxcdGlmICh1bmxpa2VseSghZGV2X3R4X2NtZCkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90eC5jPTU1Mz1pd2xfbXZtX3NldF90eF9wYXJhbXMoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3R4LmMtNTYxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3R4LmM6NTYyOlxcdGRldl9jbWQgPSBpd2xfdHJhbnNfYWxsb2NfdHhfY21kKG12bS1cXHUwMDNldHJhbnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3R4LmMtNTYzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jPTM3NDM9dm9pZCBpd2xfdHJhbnNfcGNpZV9zeW5jX25taShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy0zNzYxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYzozNzYyOnN0YXRpYyBpbnQgaXdsX3RyYW5zX3BjaWVfYWxsb2NfdHhjbWRfcG9vbChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmMtMzc2My17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmM9Mzc5OT1zdGF0aWMgc3RydWN0IGl3bF90cmFucyAqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jOjM4MDA6aXdsX3RyYW5zX3BjaWVfYWxsb2Moc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTM4MDEtXFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgaXdsX21hY19jZmcgKm1hY19jZmcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmMtMzgwOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmM6MzgwOTpcXHR0cmFucyA9IGl3bF90cmFuc19hbGxvYyhzaXplb2Yoc3RydWN0IGl3bF90cmFuc19wY2llKSwgXFx1MDAyNnBkZXYtXFx1MDAzZWRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmMtMzgxMC1cXHRcXHRcXHRcXHRtYWNfY2ZnKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy0zODIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYzozODIxOlxcdHJldCA9IGl3bF90cmFuc19wY2llX2FsbG9jX3R4Y21kX3Bvb2wodHJhbnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy0zODIyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmM9NDIzMj1pbnQgaXdsX3BjaV9nZW4xXzJfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmMtNDI0NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmM6NDI0NjpcXHRpd2xfdHJhbnMgPSBpd2xfdHJhbnNfcGNpZV9hbGxvYyhwZGV2LCBtYWNfY2ZnLCBcXHUwMDI2aW5mbywgaHdfYmFzZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi90cmFucy5jLTQyNDctXFx0aWYgKElTX0VSUihpd2xfdHJhbnMpKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxODo1OToxOS44Mjk0MjE1NloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo0MjI3OTA0NDM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgc2l0dWF0aW9uOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIEFsbG9jYXRpb24gUGF0aCBvZiBgaXdsX3RyYW5zX3BjaWVfYWxsb2NgKipcblxuT2theSwgc28gYGl3bF90cmFuc19wY2llX2FsbG9jYCBpcyBjYWxsZWQgc29sZWx5IGZyb20gdGhlIFBDSSBwcm9iZSBmdW5jdGlvbnMsIHNwZWNpZmljYWxseSBgaXdsX3BjaV9nZW4xXzJfcHJvYmVgIG9yIGBpd2xfcGNpX3Byb2JlYC4gVGhhdCdzIGEgcHJldHR5IHRpZ2h0IGNvbnN0cmFpbnQsIGFuZCBpdCBtYWtlcyBtZSB3b25kZXIgaWYgdGhlcmUncyBhbnkgb3RoZXIgaW5zdGFudGlhdGlvbiBvZiB0aGUgbW9yZSBnZW5lcmFsIGBpd2xfdHJhbnNfYWxsb2NgIGZ1bmN0aW9uLiBJdCBzZWVtcyBsaWtlIGl0IHdvdWxkIG9ubHkgYmUgaW4gdGhlIGluaXRpYWxpemF0aW9uIHBhdGguIEkgbmVlZCB0byBiZSBzdXJlIHRoaXMgaXMgY29ycmVjdC4gSSBzaG91bGQgZG91YmxlIGNoZWNrIHRoYXQgdGhlcmUgYXJlbid0IGFueSBvdGhlciBjYWxsIHNpdGVzLCBldmVuIGlmIHRoZXkgYXJlIGluIG90aGVyIGRyaXZlcnMsIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgYWxsb2NhdGlvbiBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjY1MywiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDE4OjU5OjI0LjA1NzMyNzk5NloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjcyNzg5OTEwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpd2xfdHJhbnNfYWxsb2NcXFxcKFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jPTIwMj1zdGF0aWMgdm9pZCBpd2xfdHJhbnNfcmVzdGFydF93ayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndrKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0yNjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYzoyNjc6c3RydWN0IGl3bF90cmFucyAqaXdsX3RyYW5zX2FsbG9jKHVuc2lnbmVkIGludCBwcml2X3NpemUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0yNjgtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oPTEwODk9c3RhdGljIGlubGluZSB2b2lkIGl3bF90cmFuc19maW5pc2hfc3dfcmVzZXQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oLTEwOTYtICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmg6MTA5NzpzdHJ1Y3QgaXdsX3RyYW5zICppd2xfdHJhbnNfYWxsb2ModW5zaWduZWQgaW50IHByaXZfc2l6ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oLTEwOTgtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmM9MzgwMD1pd2xfdHJhbnNfcGNpZV9hbGxvYyhzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy0zODA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYzozODA5OlxcdHRyYW5zID0gaXdsX3RyYW5zX2FsbG9jKHNpemVvZihzdHJ1Y3QgaXdsX3RyYW5zX3BjaWUpLCBcXHUwMDI2cGRldi1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy0zODEwLVxcdFxcdFxcdFxcdG1hY19jZmcpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxODo1OToyNi43ODUyMzQ0NTRaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MzEzOTQ5Nzc4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipUcmFjaW5nIHRoZSBEcml2ZXIgSW5pdGlhbGl6YXRpb24gRmxvdyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBgaXdsd2lmaWAgZHJpdmVyIGNvZGUsIHNwZWNpZmljYWxseSB0aGUgUENJZS1yZWxhdGVkIHN0dWZmLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMgYWJvdXQgd2hlcmUgYGl3bF90cmFuc19hbGxvY2AgZ2V0cyBjYWxsZWQsIGFuZCBpdCBsb29rcyBsaWtlIHRoZSBjb2RlIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIGBpd2xfdHJhbnNfYWxsb2NgIGlzICpvbmx5KiBjYWxsZWQgYnkgYGl3bF90cmFuc19wY2llX2FsbG9jYC4gVGhhdCdzIGdvb2Q7IGl0IG5hcnJvd3MgdGhpbmdzIGRvd24gY29uc2lkZXJhYmx5LiBBbmQgYGl3bF90cmFuc19wY2llX2FsbG9jYCBpdHNlbGYgaXMgKm9ubHkqIGV2ZXIgY2FsbGVkIGZyb20gYGl3bF9wY2lfZ2VuMV8yX3Byb2JlYC4gU28sIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGluaXRpYWxpemF0aW9uIGZsb3csIG15IG5leHQgc3RlcCBpcyBjbGVhcjogSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSBgaXdsX3BjaV9nZW4xXzJfcHJvYmVgIGFuZCBzZWUgd2hlcmUgKml0KiBnZXRzIGNhbGxlZCBmcm9tLiBUaGF0IHdpbGwgZ2l2ZSBtZSB0aGUgZW50cnkgcG9pbnQgZm9yIHRoaXMgcGFydGljdWxhciBzdWJzeXN0ZW0uIFRoYXQncyB3aGVyZSBJIHdpbGwgc3RhcnQgbXkgaW52ZXN0aWdhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTczOTMsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTg6NTk6MjkuOTI0NzM0NjE3WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjYwMDgwNDM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF9wY2lfZ2VuMV8yX3Byb2JlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYz0xMTUwPXN0YXRpYyBpbnQgaXdsX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYy0xMTg5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9kcnYuYzoxMTkwOlxcdHJldHVybiBpd2xfcGNpX2dlbjFfMl9wcm9iZShwZGV2LCBlbnQsIG1hY19jZmcsIGh3X2Jhc2UsIGh3X3Jldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jLTExOTEtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2dlbjFfMi9pbnRlcm5hbC5oPTEyMDk9dm9pZCBpd2xfcGNpZV9hbGxvY19md19tb25pdG9yKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCB1OCBtYXhfcG93ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvaW50ZXJuYWwuaDoxMjEwOmludCBpd2xfcGNpX2dlbjFfMl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL2ludGVybmFsLmgtMTIxMS1cXHRcXHRcXHQgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYz00MjAwPXN0YXRpYyB2b2lkIGl3bF9wY2llX2NoZWNrX21lX3N0YXR1cyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy00MjMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYzo0MjMyOmludCBpd2xfcGNpX2dlbjFfMl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmMtNDIzMy1cXHRcXHRcXHQgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTg6NTk6MzEuNTg0ODIwNjgyWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjE5NjEwNDAyODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBpd2xfcGNpIERyaXZlcioqXG5cbk9rYXksIHNvIGBpd2xfcGNpX3Byb2JlYC4uLiB0aGF0J3MgdGhlIHByb2JlIGZ1bmN0aW9uIGZvciB0aGUgYGl3bF9wY2lfZHJpdmVyYCwgd2hpY2ggaXMga2V5IHRvIGdldHRpbmcgdGhlc2UgSW50ZWwgd2lyZWxlc3MgY2FyZHMgd29ya2luZyBvbiBQQ0kuIFRpbWUgdG8gbG9vayBpbnRvIHRoZSBzcGVjaWZpY3MuIEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgZHJpdmVyIHN0cnVjdHVyZSBpcyBjb3JyZWN0LCBhbmQgc2VlIHdoYXQgdGhlIHByb2JlIGZ1bmN0aW9uIGFjdHVhbGx5IGRvZXMuIExldCdzIGhlYWQgb3ZlciB0byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jYCBhbmQgZGlnIGludG8gYGl3bF9wY2lfZHJpdmVyYCBpdHNlbGYgdG8gc2VlIGhvdyB0aGlzIHRoaW5nIGlzIHB1dCB0b2dldGhlci4gR290dGEgdW5kZXJzdGFuZCB0aGUgZW50cnkgcG9pbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODIyOCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDE4OjU5OjMzLjU0NTg2Mzc0MloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDM2NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2Rydi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEzMzAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjEzMzA6XFx0XFxuMTMzMTpcXHRzdGF0aWMgdm9pZCBpd2xfcGNpX2R1bXAoc3RydWN0IGRldmljZSAqZGV2aWNlKVxcbjEzMzI6XFx0e1xcbjEzMzM6XFx0XFx0c3RydWN0IHBjaV9kZXYgKnBkZXYgPSB0b19wY2lfZGV2KGRldmljZSk7XFxuMTMzNDpcXHRcXHRzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTtcXG4xMzM1OlxcdFxcbjEzMzY6XFx0XFx0aXdsX29wX21vZGVfZHVtcCh0cmFucy1cXHUwMDNlb3BfbW9kZSk7XFxuMTMzNzpcXHR9XFxuMTMzODpcXHRcXG4xMzM5OlxcdHN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBpd2xfcGNpX2RyaXZlciA9IHtcXG4xMzQwOlxcdFxcdC5uYW1lID0gRFJWX05BTUUsXFxuMTM0MTpcXHRcXHQuaWRfdGFibGUgPSBpd2xfaHdfY2FyZF9pZHMsXFxuMTM0MjpcXHRcXHQucHJvYmUgPSBpd2xfcGNpX3Byb2JlLFxcbjEzNDM6XFx0XFx0LnJlbW92ZSA9IGl3bF9wY2lfcmVtb3ZlLFxcbjEzNDQ6XFx0XFx0LmRyaXZlci5wbSA9IElXTF9QTV9PUFMsXFxuMTM0NTpcXHRcXHQuZHJpdmVyLmNvcmVkdW1wID0gaXdsX3BjaV9kdW1wLFxcbjEzNDY6XFx0fTtcXG4xMzQ3OlxcdFxcbjEzNDg6XFx0aW50IF9fbXVzdF9jaGVjayBpd2xfcGNpX3JlZ2lzdGVyX2RyaXZlcih2b2lkKVxcbjEzNDk6XFx0e1xcbjEzNTA6XFx0XFx0aW50IHJldDtcXG4xMzUxOlxcdFxcdHJldCA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNml3bF9wY2lfZHJpdmVyKTtcXG4xMzUyOlxcdFxcdGlmIChyZXQpXFxuMTM1MzpcXHRcXHRcXHRwcl9lcnIoXFxcIlVuYWJsZSB0byBpbml0aWFsaXplIFBDSSBtb2R1bGVcXFxcblxcXCIpO1xcbjEzNTQ6XFx0XFxuMTM1NTpcXHRcXHRyZXR1cm4gcmV0O1xcbjEzNTY6XFx0fVxcbjEzNTc6XFx0XFxuMTM1ODpcXHR2b2lkIGl3bF9wY2lfdW5yZWdpc3Rlcl9kcml2ZXIodm9pZClcXG4xMzU5OlxcdHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTg6NTk6MzMuNTQ1OTY5NjEyWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjkyMzY4MzIxMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIERlY2lzaW9uIGZvciBpd2x3aWZpKipcblxuT2theSwgc28gYGl3bHdpZmlgIGlzIGRlZmluaXRlbHkgYW4gSW50ZWwtc3BlY2lmaWMgUENJIHdpcmVsZXNzIGRyaXZlci4gVGhhdCdzIHRoZSBzdGFydGluZyBwb2ludC4gTm93LCBsZXQncyBjYXJlZnVsbHkgY29uc2lkZXIgdGhvc2UgbmVnYXRpdmUgY3JpdGVyaWEgb3V0bGluZWQgaW4gU2VjdGlvbiAyIG9mIHRoZSBpbnN0cnVjdGlvbnMuIFRoZSBrZXkgaGVyZSBpcyBkZXRlcm1pbmluZyBpZiB0aGUgbW9kaWZpZWQgY29kZSBpcyAqdW5yZWFjaGFibGUqIGluIG91ciBzdGFuZGFyZCBmdXp6aW5nIHNldHVwLlxuXG5NeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIHdlIGV2ZW4gZW11bGF0ZSBvciBmdXp6IGBpd2x3aWZpYCBpbiBhIHN0YW5kYXJkIGVudmlyb25tZW50IGxpa2UgR0NFIG9yIFFFTVU/IEFuZCB0aGUgYW5zd2VyLCBhZnRlciBhIG1vbWVudCdzIHJlZmxlY3Rpb24sIGlzIG5vLiBJbnRlbCBXaS1GaSBQQ0kgY2FyZHMsIGxpa2UgdGhlIEFYMjAwIG9yIEFYMjEwLCBhcmUgcGh5c2ljYWwgaGFyZHdhcmUgZGV2aWNlcy4gU3RhbmRhcmQgUUVNVSBkb2Vzbid0IGVtdWxhdGUgdGhlbS4gSXQgcHJvdmlkZXMgdmlydHVhbCBuZXR3b3JrIGludGVyZmFjZXMsIHN1cmUsIGJ1dCBub3QgcGh5c2ljYWwgV2ktRmkgY2FyZHMuIFdlIGhhdmUgYG1hYzgwMjExX2h3c2ltYCBmb3Igc29mdHdhcmUtYmFzZWQgdmlydHVhbCBXaS1GaSwgYnV0IGBpd2x3aWZpYCBpcyB0aGUgcHJvcHJpZXRhcnkgZHJpdmVyIGZvciByZWFsIGhhcmR3YXJlLlxuXG5UaGlzIG1lYW5zLCB3aXRob3V0IGFuIGFjdHVhbCBJbnRlbCBXaS1GaSBQQ0llIGNhcmQgcHJlc2VudCBhbmQgdGhlIHByb3ByaWV0YXJ5IGZpcm13YXJlIGxvYWRlZCwgY2VydGFpbiBrZXkgZnVuY3Rpb25zIG5ldmVyIGdldCBleGVjdXRlZC4gU3BlY2lmaWNhbGx5LCBgaXdsX3BjaV9wcm9iZWAgbmV2ZXIgcnVucywgYW5kIGNvbnNlcXVlbnRseSwgYGl3bF9vcF9tb2RlX21sZF9zdGFydGAsIGBpd2xfb3BfbW9kZV9tdm1fc3RhcnRgLCBhbmQgdGhlIG1hYzgwMjExIGRldmljZSByZWdpc3RyYXRpb24gd2l0aCBgaXdsX21sZF9od19vcHNgIG9yIGBpd2xfbXZtX2h3X29wc2AgbmV2ZXIgaGFwcGVuLiBUaGVyZWZvcmUsIGBpd2xfbWxkX2FkZF9saW5rYCwgYGl3bF9tbGRfc2V0X2tleV9hZGRgLCBhbmQgYF9faXdsX212bV9tYWNfc2V0X2tleWAgYXJlIGFsbCBkZWFkIGNvZGUuXG5cbkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIGNoZWNrIHdoZXRoZXIgdGhlcmUgbWlnaHQgYmUgc29tZSBraW5kIG9mIG1vY2ssIGVtdWxhdGlvbiwgb3IgZ2FkZ2V0IGZyYW1ld29yayB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbCBpdHNlbGYgdGhhdCBjb3VsZCBhbGxvdyBzb21lIGxldmVsIG9mIGZ1enppbmcuIExldCBtZSBkbyBhIHF1aWNrIHNlYXJjaCB3aXRoaW4gdGhlIGB0b29scy90ZXN0aW5nYCBhbmQgYGRyaXZlcnMvYCBkaXJlY3RvcmllcyBmb3IgXCJpd2x3aWZpXCIgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBCdXQsIEkgYW0gcmVhc29uYWJseSBjZXJ0YWluIHRoaXMgZmFsbHMgaW50byB0aGUgXCJTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmVcIiBjYXRlZ29yeSBhbmQgaXMgbGlrZWx5ICpXb3J0aEZ1enppbmc9ZmFsc2UqLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODk0MywiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDE4OjU5OjQyLjc4MjgwNDEwMloiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUxOTIyMjQ2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpd2x3aWZpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWxcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDE4OjU5OjQzLjAzNDczNjk5OFoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjozODQ2NjA2NzcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipFeHBsb3JpbmcgVmlydHVhbCBXaXJlbGVzcyBEcml2ZXJzKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEknbSB0aGlua2luZywgXCJXaGVyZSB3b3VsZCBJIHR5cGljYWxseSBmaW5kIHRoZSB2aXJ0dWFsIHdpcmVsZXNzIGRyaXZlciBpbXBsZW1lbnRhdGlvbnMgaW4gdGhlIGtlcm5lbCBzb3VyY2U/XCIgTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBnbyBkaWdnaW5nIHRocm91Z2ggdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9gIGRpcmVjdG9yeS4gVGhhdCdzIHVzdWFsbHkgdGhlIGdvLXRvIHNwb3QgZm9yIGFueXRoaW5nIG5ldHdvcmstcmVsYXRlZCwgYW5kIHdpcmVsZXNzIGZhbGxzIHNxdWFyZWx5IHdpdGhpbiB0aGF0IGRvbWFpbi4gVGhlIGdvYWwgaGVyZSBpcyB0byBnZXQgYSBsYXkgb2YgdGhlIGxhbmQ7IGlkZW50aWZ5IHdoYXQncyBhbHJlYWR5IGJ1aWx0LCBnZXQgYSBoaWdoLWxldmVsIHNlbnNlIG9mIHRoZSBleGlzdGluZyB2aXJ0dWFsIGRyaXZlciBhcmNoaXRlY3R1cmVzLCBhbmQgc2VlIHdoYXQncyBiZWluZyBsZXZlcmFnZWQgaW4gdGhpcyBzcGFjZS4gSSdtIGVzc2VudGlhbGx5IG1lbnRhbGx5IGNhdGFsb2dpbmcgd2hhdCdzIGF2YWlsYWJsZSBmb3IgdmlydHVhbCB3aXJlbGVzcyBmdW5jdGlvbmFsaXR5IHRvIHVuZGVyc3RhbmQgd2hhdCdzIHRoZXJlIGJlZm9yZSBJIGV2ZW4gc3RhcnQgdG8gZm9ybXVsYXRlIGFueSBraW5kIG9mIHBsYW4uIExldCdzIHNlZSB3aGF0IGludGVyZXN0aW5nIHZpcnR1YWwgZHJpdmVycyBoYXZlIGJlZW4gaW1wbGVtZW50ZWQgd2l0aGluIHRoYXQgZGlyZWN0b3J5IVxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTk2OSwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDE4OjU5OjQ2Ljg4MTM0NjZaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzQyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWxcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogW1xuICAgIFwibWFjODAyMTFfaHdzaW0uaFwiLFxuICAgIFwibWFjODAyMTFfaHdzaW1faS5oXCIsXG4gICAgXCJtYWM4MDIxMV9od3NpbV9tYWluLmNcIixcbiAgICBcIm1hYzgwMjExX2h3c2ltX25hbi5jXCIsXG4gICAgXCJtYWM4MDIxMV9od3NpbV9uYW4uaFwiLFxuICAgIFwidmlydF93aWZpLmNcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogbnVsbFxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTg6NTk6NDYuODgxNDA2OVoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo0MjM0MzgyMTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkNvbnNpZGVyaW5nIFdpcmVsZXNzIERldmljZSBFbXVsYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWxgIGRpcmVjdG9yeSBpcyBwcmV0dHkgbGltaXRlZCwganVzdCBgbWFjODAyMTFfaHdzaW1gIGFuZCBgdmlydF93aWZpYC4gQnV0IHRoYXQncyBub3QgdGhlIHdob2xlIHN0b3J5IHdoZW4gd2UncmUgdGhpbmtpbmcgYWJvdXQgc3l6a2FsbGVyJ3MgcG90ZW50aWFsIGZvciBlbXVsYXRpb24sIHJpZ2h0PyBXaGF0IGFib3V0IFVTQiBXaS1GaSBkZXZpY2VzPyBOb3csICpzb21lKiBVU0IgV2ktRmkgZGV2aWNlcyDigJMgYW5kIEknbSB0aGlua2luZyBzcGVjaWZpY2FsbHkgb2YgdGhpbmdzIGxpa2UgdGhlIHJ0bDgxODcgb3IgZXZlbiBhdGg5a19odGMg4oCTICpjb3VsZCogdGhlb3JldGljYWxseSBiZSBlbXVsYXRlZCB0aHJvdWdoIFVTQiBSYXcgR2FkZ2V0LCBpZiB0aGUgdW5kZXJseWluZyBzeXprYWxsZXIgc3VwcG9ydCBpcyB0aGVyZS4gSXQncyBzb21ldGhpbmcgd29ydGggZXhwbG9yaW5nLlxuXG5IbW0sIGlzIGl3bHdpZmkgYSBVU0IgZGV2aWNlPyBObywgSSdtIHByZXR0eSBzdXJlIGl3bHdpZmkgaXMgUENJZSBvbmx5LCBmb3VuZCB1bmRlciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2AuIEp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlIHRob3VnaCwgbGV0IG1lIGRvdWJsZSBjaGVjayBpZiB0aGVyZSdzICphbnkqIGV2aWRlbmNlIG9mIGEgbm9uLVBDSWUgdHJhbnNwb3J0IGx1cmtpbmcgd2l0aGluIGl3bHdpZmkuIFRpbWUgdG8gZGlnIGEgYml0IGRlZXBlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAyOTIsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjUsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDE4OjU5OjUxLjExNTc5MjkwNloiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU4OTU5MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXdsX3RyYW5zX2FsbG9jXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYz0yNjA9aW50IGl3bGFnbl90eF9za2Ioc3RydWN0IGl3bF9wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYy0zNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vdHguYzozNDQ6XFx0ZGV2X2NtZCA9IGl3bF90cmFuc19hbGxvY190eF9jbWQocHJpdi1cXHUwMDNldHJhbnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3R4LmMtMzQ1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYz0yMDI9c3RhdGljIHZvaWQgaXdsX3RyYW5zX3Jlc3RhcnRfd2soc3RydWN0IHdvcmtfc3RydWN0ICp3aylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtMjY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM6MjY3OnN0cnVjdCBpd2xfdHJhbnMgKml3bF90cmFuc19hbGxvYyh1bnNpZ25lZCBpbnQgcHJpdl9zaXplLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtMjY4LVxcdFxcdFxcdFxcdCAgc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYz0zMzI9SVdMX0VYUE9SVF9TWU1CT0woaXdsX3RyYW5zX3NlbmRfY21kKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jLTMzMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5jOjMzNDpzdHJ1Y3QgaXdsX2RldmljZV90eF9jbWQgKml3bF90cmFuc19hbGxvY190eF9jbWQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0zMzUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuYy0zMzctfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmM6MzM4OklXTF9FWFBPUlRfU1lNQk9MKGl3bF90cmFuc19hbGxvY190eF9jbWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmMtMzM5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaD04Mzg9aXdsX3RyYW5zX2R1bXBfZGF0YShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgdTMyIGR1bXBfbWFzayxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmgtODQxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmg6ODQyOnN0cnVjdCBpd2xfZGV2aWNlX3R4X2NtZCAqaXdsX3RyYW5zX2FsbG9jX3R4X2NtZChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdHJhbnMuaC04NDMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oPTEwODk9c3RhdGljIGlubGluZSB2b2lkIGl3bF90cmFuc19maW5pc2hfc3dfcmVzZXQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oLTEwOTYtICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXRyYW5zLmg6MTA5NzpzdHJ1Y3QgaXdsX3RyYW5zICppd2xfdHJhbnNfYWxsb2ModW5zaWduZWQgaW50IHByaXZfc2l6ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC10cmFucy5oLTEwOTgtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90eC5jPTc1MD1zdGF0aWMgaW50IGl3bF9tbGRfdHhfbXBkdShzdHJ1Y3QgaXdsX21sZCAqbWxkLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdHguYy03NjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdHguYzo3Njc6XFx0ZGV2X3R4X2NtZCA9IGl3bF90cmFuc19hbGxvY190eF9jbWQobWxkLVxcdTAwM2V0cmFucyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdHguYy03NjgtXFx0aWYgKHVubGlrZWx5KCFkZXZfdHhfY21kKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3R4LmM9NTUzPWl3bF9tdm1fc2V0X3R4X3BhcmFtcyhzdHJ1Y3QgaXdsX212bSAqbXZtLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdHguYy01NjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdHguYzo1NjI6XFx0ZGV2X2NtZCA9IGl3bF90cmFuc19hbGxvY190eF9jbWQobXZtLVxcdTAwM2V0cmFucyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdHguYy01NjMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvZ2VuMV8yL3RyYW5zLmM9MzgwMD1pd2xfdHJhbnNfcGNpZV9hbGxvYyhzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy0zODA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYzozODA5OlxcdHRyYW5zID0gaXdsX3RyYW5zX2FsbG9jKHNpemVvZihzdHJ1Y3QgaXdsX3RyYW5zX3BjaWUpLCBcXHUwMDI2cGRldi1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9nZW4xXzIvdHJhbnMuYy0zODEwLVxcdFxcdFxcdFxcdG1hY19jZmcpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxODo1OTo1MS4xNzE2OTUwNjVaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTY3ODg4OTcwODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudDogVGhpcyBDb2RlIElzbid0IEZ1enphYmxlIChQQ0llLUJvdW5kKSoqXG5cbk9rYXksIGhlcmUncyB0aGUgYnJlYWtkb3duLiBUaGUgdGV4dCBjb25maXJtcyB3aGF0IEkgc3VzcGVjdGVkOiBpdCdzIFBDSWUtb25seS4gSSd2ZSByZS1yZWFkIFNlY3Rpb24gMSBhbmQgU2VjdGlvbiAyIG9mIHRoZSByZWxldmFudCBkb2N1bWVudGF0aW9uLCB3aGljaCBlbXBoYXNpemVzIHRoYXQgZnV6emluZyBpcyBvbmx5IGVmZmVjdGl2ZSBvbiBjb2RlIHRoYXQncyAqcmVhY2hhYmxlKiBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIENvZGUgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gUUVNVSBvciBHQ0UgaXMgYSBub24tc3RhcnRlci5cblxuU3BlY2lmaWNhbGx5LCB0aGlzIHBhdGNoIHNlcmllcyB0YXJnZXRzIHRoZSBgaXdsd2lmaWAgZHJpdmVyLCByZXNpZGluZyBlbnRpcmVseSB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvYC4gVGhpcyBkcml2ZXIncyBhbGwgYWJvdXQgSW50ZWwgUENJZSBXaS1GaSBOSUNzLCB3aGljaCBtZWFucyBwaHlzaWNhbCBJbnRlbCBoYXJkd2FyZSDigJMgc29tZXRoaW5nIHN0YW5kYXJkIHZpcnR1YWwgbWFjaGluZXMgY2FuJ3QgcmVwbGljYXRlLiBUaGUgbW9kaWZpY2F0aW9ucyBhZmZlY3QgYG1sZC9saW5rLmNgLCBgbWxkL21hYzgwMjExLmNgLCBhbmQgYG12bS9tYWM4MDIxMS5jYCwgc3BlY2lmaWNhbGx5OiBgaXdsX21sZF9hZGRfbGluaygpYCwgYGl3bF9tbGRfc2V0X2tleV9hZGQoKWAsIGFuZCBgX19pd2xfbXZtX21hY19zZXRfa2V5KClgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGFsbCB3aXRoaW4gdGhlIGBpd2xtdm1gIGFuZCBgaXdsbWxkYCBtb2R1bGVzLCBzbyBpdCdzIGFsbCBQQ0llLWJvdW5kLlxuXG5UaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZyBwdXJwb3Nlcy4gSXQgZmFsbHMgc3F1YXJlbHkgaW50byB0aGUgXCJzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmVcIiBjYXRlZ29yeSBkZXRhaWxlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbi5cblxuTm93LCBsZXQgbWUgZG91YmxlLWNoZWNrIHRoZSByZXF1aXJlZCBmaWVsZHMgZm9yIGBzZXQtcmVzdWx0c2A6XG5cbiogICBgV29ydGhGdXp6aW5nYDogRGVmaW5pdGVseSBgZmFsc2VgLlxuKiAgIGBSZWFzb25pbmdgOiBUaGUgZXhwbGFuYXRpb24gaXMgcm9jayBzb2xpZDogdGhlIGNoYW5nZXMgYXJlIGNvbmZpbmVkIHRvIHRoZSBgaXdsd2lmaWAgZHJpdmVyLCB3aGljaCBpcyBhIGRyaXZlciBmb3IgSW50ZWwgUENJZSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJzIHRoYXQgcmVsaWVzIG9uIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSB2aXJ0dWFsaXphdGlvbiBlbnZpcm9ubWVudHMuXG4qICAgYEZvY3VzU3ltYm9sc2A6IE5vIHN5bWJvbHMgdG8gZm9jdXMgb24sIHNvIGFuIGVtcHR5IGFycmF5IGBbXWAuXG4qICAgYEVuYWJsZUNvbmZpZ3NgOiBOb3RoaW5nIHNwZWNpZmljIHRvIGVuYWJsZSwgdGh1cyBhbiBlbXB0eSBhcnJheSBgW11gLlxuXG5FdmVyeXRoaW5nJ3MgY2xlYXIuIE5vIG5lZWQgdG8gbG9vayBhbnkgZnVydGhlci4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMDA5LCJPdXRwdXRUb2tlbnMiOjEyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxOTowMDowNy45NjA1OTVaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDkyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBlcnJvci1wYXRoIGZyZWVpbmcgbG9naWMgKHN3aXRjaGluZyBrZnJlZSB0byBrZnJlZV9yY3UpIGluIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkgKHNwZWNpZmljYWxseSBpbiBtbGQgYW5kIG12bSBtb2R1bGVzKS4gaXdsd2lmaSBpcyBhIGhhcmR3YXJlIGRyaXZlciBmb3IgSW50ZWwgUENJZSB3aXJlbGVzcyBhZGFwdGVycyByZXF1aXJpbmcgcGh5c2ljYWwgUENJZSBkZXZpY2VzIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGVycm9yLXBhdGggZnJlZWluZyBsb2dpYyAoc3dpdGNoaW5nIGtmcmVlIHRvIGtmcmVlX3JjdSkgaW4gZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaSAoc3BlY2lmaWNhbGx5IGluIG1sZCBhbmQgbXZtIG1vZHVsZXMpLiBpd2x3aWZpIGlzIGEgaGFyZHdhcmUgZHJpdmVyIGZvciBJbnRlbCBQQ0llIHdpcmVsZXNzIGFkYXB0ZXJzIHJlcXVpcmluZyBwaHlzaWNhbCBQQ0llIGRldmljZXMgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIENvbnNlcXVlbnRseSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTk6MDA6MDcuOTYwNjI0MDJaIiwiU2VxIjozNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowgd8dn[1] Phase: Running StartedAt: 2026-09-14 19:00:19 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgd8dn[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-14 19:00:19 +0000 UTC FinishedAt: 2026-09-14 19:00:24 +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,}